/* Testimonials – Custom Extension. All front-end selectors are scoped. */
.tce-testimonials{box-sizing:border-box;width:100%;max-width:var(--tce-max-width);color:var(--tce-quote-color);font-family:var(--tce-font-family);text-align:var(--tce-text-align);position:relative;isolation:isolate;outline:0}
.tce-testimonials *, .tce-testimonials *::before, .tce-testimonials *::after{box-sizing:border-box}
.tce-align-center{margin-inline:auto}.tce-align-left{margin-right:auto;margin-left:0}.tce-align-right{margin-left:auto;margin-right:0}
.tce-shell{position:relative;min-height:var(--tce-min-height);border-radius:var(--tce-radius);overflow:hidden;display:flex;flex-direction:column;padding:var(--tce-pt) var(--tce-pr) var(--tce-pb) var(--tce-pl)}
.tce-bg-color .tce-shell{background:var(--tce-background)}
.tce-bg-image .tce-shell{background-image:var(--tce-bg-image);background-size:cover;background-repeat:no-repeat;background-position:var(--tce-bg-position);background-color:#222}
.tce-bg-image .tce-shell:before{content:"";position:absolute;inset:0;z-index:0;background:var(--tce-image-overlay-color);opacity:var(--tce-image-overlay);pointer-events:none}
.tce-content-layer{position:relative;z-index:1;display:flex;flex-direction:column;flex:1 1 auto;min-width:0}
.tce-viewport{position:relative;min-width:0;overflow:hidden;flex:1 1 auto;display:flex}
.tce-track{width:100%;min-width:0;display:flex;will-change:transform;transition:transform var(--tce-duration) ease;align-items:stretch}
.tce-slide{flex:0 0 100%;min-width:0;max-width:100%;align-self:stretch;display:flex;flex-direction:column;justify-content:flex-start;overflow-wrap:anywhere;visibility:visible}
.tce-quote-mark{font-family:Georgia,serif;font-size:var(--tce-mark-font);color:var(--tce-mark-color);font-weight:700;line-height:.85;height:auto;margin:0 0 var(--tce-mark-gap);letter-spacing:-.04em}
.tce-quote{font-size:var(--tce-quote-font);font-weight:var(--tce-quote-weight);line-height:var(--tce-quote-line);color:var(--tce-quote-color);margin:0;border:0;padding:0;quotes:none;font-family:inherit;font-style:normal;max-width:100%}
.tce-quote::before,.tce-quote::after{content:none}
.tce-author-line{display:flex;align-items:center;gap:15px;margin-top:var(--tce-author-margin);min-width:0}
.tce-author-meta{min-width:0}.tce-author{font-size:var(--tce-author-font);font-weight:var(--tce-author-weight);line-height:var(--tce-author-line);color:var(--tce-author-color);margin:0;padding:0;font-family:inherit}
.tce-author.is-italic{font-style:italic}.tce-avatar{height:54px!important;width:54px!important;border-radius:50%!important;object-fit:cover!important;display:block;flex:none}.tce-rating{display:block;color:var(--tce-rating-color);font-size:20px;letter-spacing:.08em;margin-top:7px}
.tce-controls{display:flex;align-items:center;gap:var(--tce-nav-gap);margin-top:var(--tce-nav-top);flex-wrap:wrap;position:relative;z-index:2}
.tce-nav-pos-center .tce-controls{justify-content:center}.tce-nav-pos-right .tce-controls{justify-content:flex-end}.tce-nav-pos-left .tce-controls{justify-content:flex-start}
.tce-arrows,.tce-dots{display:flex;align-items:center;gap:var(--tce-nav-gap)}
.tce-arrow{appearance:none;-webkit-appearance:none;flex:none;width:var(--tce-nav-size);height:var(--tce-nav-size);margin:0;padding:0;border:1px solid var(--tce-nav-border);display:inline-flex;align-items:center;justify-content:center;background:var(--tce-nav-bg);color:var(--tce-nav-color);box-shadow:none;cursor:pointer;line-height:1;transition:background-color .2s,color .2s,border-color .2s,transform .2s;min-width:0;min-height:0;text-decoration:none}
.tce-nav-shape-circle .tce-arrow{border-radius:50%}.tce-nav-shape-square .tce-arrow{border-radius:0}.tce-nav-shape-rounded .tce-arrow{border-radius:12px}.tce-nav-shape-minimal .tce-arrow{background:transparent;border-color:transparent;border-radius:0}
.tce-arrow svg{width:26px;height:26px;flex:none;display:block}.tce-arrow-img{max-width:50%;max-height:50%;object-fit:contain;display:block}.tce-arrow-character{font-size:25px;font-family:inherit}
.tce-arrow:hover,.tce-arrow:focus-visible{background:var(--tce-nav-hover-bg);color:var(--tce-nav-hover-color);border-color:var(--tce-nav-hover-border);transform:translateY(-2px)}
.tce-nav-shape-minimal .tce-arrow:hover,.tce-nav-shape-minimal .tce-arrow:focus-visible{background:transparent}
.tce-arrow:disabled{opacity:.35;cursor:not-allowed;transform:none}
.tce-arrow:focus-visible,.tce-dot:focus-visible,.tce-testimonials:focus-visible{outline:2px solid currentColor;outline-offset:3px}
.tce-dot{appearance:none;border:0;padding:0;background:var(--tce-dots-inactive);opacity:.65;border-radius:50%;height:var(--tce-dots-size);width:var(--tce-dots-size);cursor:pointer;min-width:var(--tce-dots-size);min-height:var(--tce-dots-size);transition:opacity .2s,transform .2s,background-color .2s}
.tce-dot.is-active,.tce-dot[aria-current=true]{background:var(--tce-dots-color);opacity:1;transform:scale(1.3)}
.tce-effect-none .tce-track{transition:none}
.tce-effect-fade .tce-track{display:grid;transform:none!important;will-change:auto}
.tce-effect-fade .tce-slide{grid-area:1/1;opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--tce-duration) ease,visibility var(--tce-duration) ease}
.tce-effect-fade .tce-slide.is-active{opacity:1;visibility:visible;pointer-events:auto}
.tce-sr-only{position:absolute!important;clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;height:1px!important;width:1px!important;overflow:hidden!important;white-space:nowrap!important}
@media(max-width:991px){.tce-testimonials .tce-shell{min-height:var(--tce-tab-min-height);padding:var(--tce-tab-y) var(--tce-tab-x)}.tce-testimonials .tce-quote{font-size:var(--tce-tab-q)}.tce-testimonials .tce-author{font-size:var(--tce-tab-a)}}
@media(max-width:600px){.tce-testimonials .tce-shell{min-height:var(--tce-mob-min-height);padding:var(--tce-mob-y) var(--tce-mob-x)}.tce-testimonials .tce-quote{font-size:var(--tce-mob-q)}.tce-testimonials .tce-author{font-size:var(--tce-mob-a)}.tce-testimonials .tce-quote-mark{font-size:var(--tce-mob-mark-font)}.tce-testimonials .tce-arrow{width:var(--tce-mob-nav-size);height:var(--tce-mob-nav-size)}.tce-testimonials .tce-arrow svg{width:22px;height:22px}.tce-testimonials .tce-arrow-character{font-size:20px}}
@media(prefers-reduced-motion:reduce){.tce-testimonials .tce-track,.tce-testimonials .tce-slide,.tce-testimonials .tce-arrow,.tce-testimonials .tce-dot{transition:none!important;scroll-behavior:auto!important}}

/* v1.1.0 — typography and spacing controls with theme-resistant, local scope.
   Theme typography can override blockquote / paragraph selectors; these narrowly
   scoped declarations are intentionally important so WPBakery settings win. */
.tce-testimonials .tce-shell .tce-slide{
  row-gap:var(--tce-content-gap, 0px);
}
.tce-testimonials .tce-shell .tce-quote-mark{
  margin:0 0 var(--tce-mark-gap, 34px) !important;
  font-size:var(--tce-mark-font) !important;
  line-height:.85 !important;
  color:var(--tce-mark-color) !important;
}
.tce-testimonials .tce-shell .tce-quote{
  font-family:var(--tce-quote-family, var(--tce-font-family)) !important;
  font-size:var(--tce-quote-font) !important;
  font-weight:var(--tce-quote-weight) !important;
  line-height:var(--tce-quote-line) !important;
  letter-spacing:var(--tce-quote-spacing,0px) !important;
  color:var(--tce-quote-color) !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  text-align:inherit !important;
  max-width:100%;
}
.tce-testimonials .tce-shell .tce-author-line{
  margin-top:var(--tce-author-margin) !important;
  column-gap:var(--tce-avatar-gap,15px);
}
.tce-testimonials .tce-shell .tce-author{
  font-family:var(--tce-author-family, var(--tce-font-family)) !important;
  font-size:var(--tce-author-font) !important;
  font-weight:var(--tce-author-weight) !important;
  line-height:var(--tce-author-line) !important;
  letter-spacing:var(--tce-author-spacing,0px) !important;
  color:var(--tce-author-color) !important;
  padding:0 !important;
  margin:0 !important;
  text-align:inherit !important;
}
.tce-testimonials .tce-shell .tce-author.is-italic{font-style:italic !important}
.tce-testimonials .tce-shell .tce-author:not(.is-italic){font-style:normal !important}
.tce-testimonials .tce-shell .tce-rating{margin-top:var(--tce-rating-gap,7px)}
.tce-testimonials .tce-shell .tce-controls{margin-top:var(--tce-nav-top) !important;gap:var(--tce-nav-gap)}
.tce-testimonials .tce-shell .tce-arrows,
.tce-testimonials .tce-shell .tce-dots{gap:var(--tce-nav-gap)}

@media (max-width:991px){
  .tce-testimonials .tce-shell .tce-slide{row-gap:var(--tce-tab-gap)}
  .tce-testimonials .tce-shell .tce-quote{
    font-size:var(--tce-tab-q) !important;
    line-height:var(--tce-tab-quote-line) !important;
  }
  .tce-testimonials .tce-shell .tce-author{
    font-size:var(--tce-tab-a) !important;
    line-height:var(--tce-tab-author-line) !important;
  }
}
@media (max-width:600px){
  .tce-testimonials .tce-shell .tce-slide{row-gap:var(--tce-mob-gap)}
  .tce-testimonials .tce-shell .tce-quote{
    font-size:var(--tce-mob-q) !important;
    line-height:var(--tce-mob-quote-line) !important;
  }
  .tce-testimonials .tce-shell .tce-author{
    font-size:var(--tce-mob-a) !important;
    line-height:var(--tce-mob-author-line) !important;
  }
}

/* 1.2.1: hauteur réellement fixe, non dictée par le témoignage le plus long.
   La clé de shortcode historique card_min_height reste compatible, mais définit
   désormais la hauteur exacte du bloc. Aucun calcul n'utilise la hauteur des autres slides. */
.tce-testimonials .tce-shell {
  height:var(--tce-min-height) !important;
  min-height:0 !important;
}
.tce-testimonials .tce-content-layer,
.tce-testimonials .tce-viewport,
.tce-testimonials .tce-track,
.tce-testimonials .tce-slide {
  min-height:0;
}
.tce-testimonials .tce-track { height:100%; }
.tce-testimonials .tce-slide {
  height:100%;
  overflow:hidden;
  display:grid;
  grid-template-rows:auto minmax(0,1fr) auto;
  align-content:start;
}
.tce-testimonials .tce-viewport { min-height:0; }
/* La citation reçoit toujours une vraie zone dédiée dans la carte.
   Elle ne disparaît plus quand la hauteur est fixe et que le texte est long. */
.tce-testimonials .tce-quote-frame {
  display:flex;
  flex-direction:column;
  justify-content:flex-start;
  flex:1 1 auto;
  min-height:calc(var(--tce-quote-font, 36px) * var(--tce-quote-line, 1.12) * 2.5);
  min-width:0;
  max-width:100%;
  overflow:hidden;
}
.tce-testimonials .tce-quote-frame .tce-quote {
  display:block;
  flex:1 1 auto;
  min-height:0;
  max-height:var(--tce-quote-max-height, none);
  overflow:auto; /* Lecture possible si JavaScript désactivé. */
  overflow-wrap:anywhere;
}
.tce-testimonials[data-tce-initialized] .tce-quote-frame .tce-quote {overflow:hidden}
.tce-testimonials .tce-quote-frame .tce-quote.tce-is-clamped {
  display:block;
  max-height:var(--tce-quote-max-height, none);
  overflow:hidden;
}
.tce-testimonials .tce-quote-frame .tce-quote.tce-is-expanded {
  display:block;
  max-height:var(--tce-quote-max-height, none);
  overflow-y:auto !important;
  overflow-x:hidden !important;
  overscroll-behavior:contain;
  scrollbar-width:thin;
  scrollbar-color:currentColor transparent;
}
.tce-testimonials .tce-shell .tce-author-line {flex:0 0 auto;}
.tce-testimonials .tce-quote-frame .tce-readmore {
  appearance:none;
  -webkit-appearance:none;
  display:inline-block;
  align-self:flex-start;
  justify-self:start;
  flex:0 0 auto;
  width:auto;
  min-width:0;
  min-height:0;
  margin:8px 0 0;
  padding:0;
  border:0 !important;
  border-radius:0;
  background:transparent !important;
  box-shadow:none !important;
  text-transform:none !important;
  color:var(--tce-readmore-color) !important;
  font-family:var(--tce-quote-family,var(--tce-font-family)) !important;
  font-size:var(--tce-readmore-font) !important;
  line-height:1.4 !important;
  font-weight:600 !important;
  text-decoration:underline !important;
  text-underline-offset:3px;
  cursor:pointer;
  white-space:nowrap;
}
.tce-testimonials .tce-readmore[hidden] {display:none !important;}
.tce-testimonials .tce-readmore:hover {text-decoration-thickness:2px;opacity:.85}
.tce-testimonials .tce-readmore:focus-visible{outline:2px solid currentColor;outline-offset:4px}
.tce-testimonials.tce-testimonials:not(.tce-nav-pos-right) .tce-readmore {text-align:inherit}
.tce-effect-fade.tce-testimonials .tce-track{grid-template-rows:minmax(0,1fr)}
@media (max-width:991px) {
  .tce-testimonials .tce-shell {height:var(--tce-tab-min-height) !important;min-height:0 !important}
}
@media (max-width:600px) {
  .tce-testimonials .tce-shell {height:var(--tce-mob-min-height) !important;min-height:0 !important}
}
