/**
 * 3D Communication – Pont Elementor
 * -----------------------------------------------------------------------------
 * Permet aux widgets NATIFS d'Elementor d'adopter le design system du thème
 * lorsqu'on leur ajoute une classe « .tc-* » (champ Avancé > Classes CSS).
 *
 * Principe : ces règles ne s'appliquent QU'aux widgets explicitement taggés
 * « .tc-* ». Elles ne ciblent jamais les widgets non taggés : aucun widget
 * Elementor standard n'est donc modifié ni cassé.
 *
 * Grâce à ce pont, tout nouveau contenu construit avec les widgets natifs
 * (Titre, Éditeur de texte, Bouton…) hérite des couleurs, typographies,
 * espacements et du mode sombre du thème — édition 100 % visuelle.
 * -----------------------------------------------------------------------------
 */

/* ---- Titres (widget « Heading ») : style porté sur le titre interne ---- */
.elementor-widget-heading.tc-h1 .elementor-heading-title {
	font-size: var(--tc-text-4xl);
	font-weight: var(--tc-weight-bold);
	line-height: var(--tc-leading-tight);
	color: var(--tc-heading);
}
.elementor-widget-heading.tc-h2 .elementor-heading-title {
	font-size: var(--tc-text-3xl);
	font-weight: var(--tc-weight-bold);
	line-height: var(--tc-leading-tight);
	color: var(--tc-heading);
}
.elementor-widget-heading.tc-h3 .elementor-heading-title {
	font-size: var(--tc-text-xl);
	font-weight: var(--tc-weight-bold);
	line-height: var(--tc-leading-normal);
	color: var(--tc-heading);
}
.elementor-widget-heading.tc-h4 .elementor-heading-title {
	font-size: var(--tc-text-lg);
	font-weight: var(--tc-weight-bold);
	line-height: var(--tc-leading-normal);
	color: var(--tc-heading);
}
@media (min-width: 1024px) {
	.elementor-widget-heading.tc-h1 .elementor-heading-title { font-size: var(--tc-text-6xl); }
	.elementor-widget-heading.tc-h2 .elementor-heading-title { font-size: var(--tc-text-5xl); }
}

/* Titres sur fond sombre (sections dégradées). */
.elementor-widget-heading.tc-on-dark .elementor-heading-title { color: var(--tc-white); }

/* ---- Badges/eyebrows rendus via un widget « Heading » ---- */
.elementor-widget-heading.tc-badge .elementor-heading-title {
	display: inline-block;
	padding: var(--tc-space-2) var(--tc-space-4);
	border-radius: var(--tc-radius-full);
	font-size: var(--tc-text-base);
	font-weight: var(--tc-weight-medium);
	line-height: var(--tc-leading-normal);
}
.elementor-widget-heading.tc-badge.tc-badge--section .elementor-heading-title {
	background-color: rgba(187, 159, 72, 0.1);
	color: var(--tc-accent-text);
}
.dark .elementor-widget-heading.tc-badge.tc-badge--section .elementor-heading-title {
	background-color: rgba(187, 159, 72, 0.2);
}
.elementor-widget-heading.tc-badge.tc-badge--hero .elementor-heading-title,
.elementor-widget-heading.tc-badge.tc-badge--cta .elementor-heading-title {
	background-color: rgba(187, 159, 72, 0.2);
	border: 1px solid rgba(187, 159, 72, 0.5);
	color: var(--tc-accent-light);
}

/* ---- Paragraphes (widget « Text Editor ») ---- */
.elementor-widget-text-editor.tc-lead {
	font-size: var(--tc-text-xl);
	line-height: var(--tc-leading-relaxed);
	color: var(--tc-muted-strong);
}
.elementor-widget-text-editor.tc-about__text {
	font-size: var(--tc-text-lg);
	line-height: var(--tc-leading-relaxed);
	color: var(--tc-muted-strong);
}
.elementor-widget-text-editor.tc-body-muted {
	color: var(--tc-muted);
	line-height: var(--tc-leading-relaxed);
}
.elementor-widget-text-editor.tc-on-dark { color: rgba(255, 255, 255, 0.9); }

/* ---- Boutons (widget « Button ») : style porté sur .elementor-button ---- */
.elementor-widget-button.tc-btn .elementor-button {
	border-radius: var(--tc-radius-lg);
	font-weight: var(--tc-weight-normal);
	transition: var(--tc-transition-all);
}
.elementor-widget-button.tc-btn--medium .elementor-button { font-weight: var(--tc-weight-medium); }
.elementor-widget-button.tc-btn--lg .elementor-button { padding: var(--tc-space-4) var(--tc-space-8); }
.elementor-widget-button.tc-btn--primary .elementor-button {
	background-color: var(--tc-accent);
	color: var(--tc-white);
}
.elementor-widget-button.tc-btn--primary .elementor-button:hover { background-color: var(--tc-accent-hover); }
.elementor-widget-button.tc-btn--secondary .elementor-button {
	background-color: var(--tc-white);
	color: var(--tc-primary);
}
.elementor-widget-button.tc-btn--secondary .elementor-button:hover { background-color: var(--tc-gray-100); }
.elementor-widget-button.tc-btn--dark .elementor-button {
	background-color: var(--tc-primary);
	color: var(--tc-white);
}
.elementor-widget-button.tc-btn--dark .elementor-button:hover { background-color: var(--tc-primary-light); }
.elementor-widget-button.tc-btn--shadow-lg .elementor-button { box-shadow: var(--tc-shadow-lg); }
.elementor-widget-button.tc-btn--pop .elementor-button { box-shadow: var(--tc-shadow-xl); }
.elementor-widget-button.tc-btn--pop .elementor-button:hover { transform: scale(1.05); }

/* ---- Sections/colonnes : reprise des surfaces et paddings du thème ---- */
.elementor-section.tc-section,
.elementor-element.tc-section { padding-block: var(--tc-space-24); }
.elementor-section.tc-section--surface { background-color: var(--tc-surface); transition: var(--tc-transition-colors); }
.elementor-section.tc-section--surface-2 { background-color: var(--tc-surface-2); transition: var(--tc-transition-colors); }

/* ---- Hero natif : masque de fondu bas via pseudo-élément (aucun DOM sup.) ---- */
.tc-hero-native { position: relative; overflow: hidden; }
.tc-hero-native::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: 8rem; /* h-32 */
	z-index: 1;
	pointer-events: none;
	background: linear-gradient(to top, var(--tc-white), transparent);
}
.dark .tc-hero-native::after {
	background: linear-gradient(to top, var(--tc-gray-900), transparent);
}

/* ---- Gouttière inter-colonnes fidèle au design (gap-16), sans padding externe ---- */
.tc-el-gap-16 > .elementor-container {
	gap: var(--tc-space-16);
	align-items: center;
}

/* =========================================================================
 * RECONSTRUCTIONS NATIVES – conteneurs Elementor (.e-con) pilotés par le thème
 * Ces règles ne s'appliquent qu'aux conteneurs taggés « .tc-* » : les mises en
 * page, paddings et espacements du design sont reproduits fidèlement, sans
 * bloc HTML. Elles neutralisent d'abord le gap/padding par défaut d'Elementor.
 * ========================================================================= */

/* Neutralisation du gap par défaut sur tout conteneur thématique. */
.e-con[class*="tc-"] { gap: 0; }
.e-con.tc-col { padding: 0; }

/* Conteneur borné (largeurs par palier identiques au design). */
.e-con.tc-container {
	width: 100%;
	max-width: 100%;
	margin-inline: auto;
	padding: 0 var(--tc-container-pad);
}
@media (min-width: 640px)  { .e-con.tc-container { max-width: 640px; } }
@media (min-width: 768px)  { .e-con.tc-container { max-width: 768px; } }
@media (min-width: 1024px) { .e-con.tc-container { max-width: 1024px; } }
@media (min-width: 1280px) { .e-con.tc-container { max-width: 1280px; } }
@media (min-width: 1536px) { .e-con.tc-container { max-width: 1536px; } }

/* Paddings de section. */
.e-con.tc-section { padding: var(--tc-space-24) 0; }
.e-con.tc-section--surface { background-color: var(--tc-surface); transition: var(--tc-transition-colors); }
.e-con.tc-section--surface-2 { background-color: var(--tc-surface-2); transition: var(--tc-transition-colors); }

/* En-tête de section centré. */
.e-con.tc-section-header { text-align: center; padding: 0; }

/* Rangée de boutons. */
.e-con.tc-btn-row { flex-direction: column; gap: var(--tc-space-4); justify-content: center; align-items: center; padding: 0; }
@media (min-width: 640px) { .e-con.tc-btn-row { flex-direction: row; } }

/* Grille à deux volets. */
.e-con.tc-split { display: grid; gap: var(--tc-space-16); align-items: center; padding: 0; }
@media (min-width: 1024px) { .e-con.tc-split { grid-template-columns: repeat(2, 1fr); } }

/* Grille de 3 cartes. */
.e-con.tc-cards-3 { display: grid; gap: var(--tc-space-8); padding: 0; }
@media (min-width: 768px) { .e-con.tc-cards-3 { grid-template-columns: repeat(3, 1fr); } }

/* ---- HERO natif : image de fond Elementor + overlay/fondu via pseudo ---- */
.elementor-element.tc-hero { position: relative; overflow: hidden; padding: var(--tc-space-32) 0; }
@media (min-width: 1024px) { .elementor-element.tc-hero { padding: var(--tc-space-40) 0; } }
.elementor-element.tc-hero::before {
	content: ""; position: absolute; inset: 0; z-index: 1;
	background: linear-gradient(to right, rgba(1,45,56,.95), rgba(1,45,56,.85), rgba(1,45,56,.7));
}
.elementor-element.tc-hero::after {
	content: ""; position: absolute; bottom: 0; left: 0; right: 0; height: 8rem; z-index: 3; pointer-events: none;
	background: linear-gradient(to top, var(--tc-white), transparent);
}
.dark .elementor-element.tc-hero::after { background: linear-gradient(to top, var(--tc-gray-900), transparent); }
.e-con.tc-hero__inner { position: relative; z-index: 2; }
.e-con.tc-hero__content { max-width: 56rem; margin-inline: auto; text-align: center; padding: 0; }
.elementor-widget-heading.tc-hero__title .elementor-heading-title {
	font-size: var(--tc-text-4xl); font-weight: var(--tc-weight-bold);
	line-height: var(--tc-leading-tight); color: var(--tc-white);
}
@media (min-width: 1024px) { .elementor-widget-heading.tc-hero__title .elementor-heading-title { font-size: var(--tc-text-6xl); } }
.elementor-widget-text-editor.tc-hero__subtitle { font-size: var(--tc-text-xl); line-height: var(--tc-leading-relaxed); color: rgba(255,255,255,.9); }
@media (min-width: 1024px) { .elementor-widget-text-editor.tc-hero__subtitle { font-size: var(--tc-text-2xl); } }

/* ---- À PROPOS natif ---- */
.e-con.tc-about__stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--tc-space-6); padding: 0; }
.e-con.tc-stat { padding: var(--tc-space-6); }
.elementor-widget-heading.tc-stat__number .elementor-heading-title { font-size: var(--tc-text-4xl); font-weight: var(--tc-weight-bold); color: var(--tc-white); }
.elementor-widget-heading.tc-stat__number--accent .elementor-heading-title { color: var(--tc-accent-light); }
.elementor-widget-text-editor.tc-stat__label { color: rgba(255,255,255,.9); }
.e-con.tc-about__media { position: relative; padding: 0; }
.e-con.tc-about__frame { position: relative; border-radius: var(--tc-radius-2xl); overflow: hidden; box-shadow: var(--tc-shadow-2xl); padding: 0; }
.e-con.tc-about__frame::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(1,45,56,.5), transparent); pointer-events: none; }
.e-con.tc-about__frame img { width: 100%; height: auto; display: block; }
.e-con.tc-about__card {
	position: absolute; bottom: -1.5rem; left: -1.5rem; max-width: 20rem; padding: var(--tc-space-6);
	border-radius: var(--tc-radius-xl); background-color: var(--tc-accent-light); color: var(--tc-primary); box-shadow: var(--tc-shadow-xl); z-index: 2;
}
.dark .e-con.tc-about__card { background-color: var(--tc-accent); color: var(--tc-white); }
.elementor-widget-heading.tc-about__card-title .elementor-heading-title { font-weight: var(--tc-weight-semibold); color: inherit; }
.elementor-widget-text-editor.tc-about__card-text { font-size: var(--tc-text-sm); color: rgba(1,45,56,.8); }
.dark .elementor-widget-text-editor.tc-about__card-text { color: rgba(255,255,255,.8); }

/* ---- CTA natif ---- */
.e-con.tc-cta {
	position: relative; overflow: hidden; border-radius: var(--tc-radius-3xl); padding: var(--tc-space-12);
	color: var(--tc-white); text-align: center; box-shadow: var(--tc-shadow-2xl);
	background: linear-gradient(to bottom right, var(--tc-primary), var(--tc-primary-light), var(--tc-primary));
}
@media (min-width: 1024px) { .e-con.tc-cta { padding: var(--tc-space-16); } }
.dark .e-con.tc-cta { background: linear-gradient(to bottom right, var(--tc-gray-800), var(--tc-gray-900), var(--tc-gray-800)); }
.e-con.tc-cta__inner { position: relative; z-index: 10; padding: 0; }
.elementor-widget-heading.tc-cta__title .elementor-heading-title { font-size: var(--tc-text-3xl); font-weight: var(--tc-weight-bold); line-height: var(--tc-leading-tight); color: var(--tc-white); }
@media (min-width: 1024px) { .elementor-widget-heading.tc-cta__title .elementor-heading-title { font-size: var(--tc-text-5xl); } }
.elementor-widget-text-editor.tc-cta__lead { font-size: var(--tc-text-xl); line-height: var(--tc-leading-relaxed); color: rgba(255,255,255,.9); max-width: 48rem; margin-inline: auto; }
.e-con.tc-cta__stats { display: grid; gap: var(--tc-space-6); max-width: 48rem; margin-inline: auto; margin-top: var(--tc-space-12); padding: 0; }
@media (min-width: 768px) { .e-con.tc-cta__stats { grid-template-columns: repeat(3, 1fr); } }
.e-con.tc-cta__stat { padding: var(--tc-space-4); border-radius: var(--tc-radius-lg); background-color: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.2); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); }
.elementor-widget-heading.tc-cta__stat-number .elementor-heading-title { font-size: var(--tc-text-3xl); font-weight: var(--tc-weight-bold); color: var(--tc-accent-light); }
.elementor-widget-text-editor.tc-cta__stat-label { font-size: var(--tc-text-sm); color: rgba(255,255,255,.8); }

/* ---- TÉMOIGNAGES natif ---- */
.elementor-element.tc-testimonials { position: relative; overflow: hidden; padding: var(--tc-space-24) 0; background: linear-gradient(to bottom right, var(--tc-primary), var(--tc-primary-light)); }
.e-con.tc-testimonials__inner { position: relative; z-index: 10; }
.elementor-widget-heading.tc-testimonials__title .elementor-heading-title { font-size: var(--tc-text-3xl); font-weight: var(--tc-weight-bold); color: var(--tc-white); }
@media (min-width: 1024px) { .elementor-widget-heading.tc-testimonials__title .elementor-heading-title { font-size: var(--tc-text-5xl); } }
.elementor-widget-text-editor.tc-testimonials__lead { font-size: var(--tc-text-xl); line-height: var(--tc-leading-relaxed); color: rgba(255,255,255,.8); max-width: 48rem; margin-inline: auto; }
.e-con.tc-testimonial { padding: var(--tc-space-8); border-radius: var(--tc-radius-2xl); border: 1px solid rgba(255,255,255,.2); background-color: rgba(255,255,255,.1); box-shadow: var(--tc-shadow-xl); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); transition: var(--tc-transition-all); text-align: left; }
.e-con.tc-testimonial:hover { background-color: rgba(255,255,255,.15); transform: translateY(-0.5rem); }
.elementor-widget-text-editor.tc-stars { font-size: 1.25rem; letter-spacing: 2px; }
.elementor-widget-text-editor.tc-testimonial__text { font-size: var(--tc-text-lg); font-style: italic; line-height: var(--tc-leading-relaxed); color: rgba(255,255,255,.9); }
.e-con.tc-testimonial__author { border-top: 1px solid rgba(255,255,255,.2); padding: var(--tc-space-6) 0 0; }
.elementor-widget-heading.tc-testimonial__name .elementor-heading-title { font-size: var(--tc-text-lg); font-weight: var(--tc-weight-bold); color: var(--tc-white); }
.elementor-widget-text-editor.tc-testimonial__role { color: var(--tc-accent-light); font-weight: var(--tc-weight-medium); }
.elementor-widget-text-editor.tc-testimonial__company { font-size: var(--tc-text-sm); color: rgba(255,255,255,.6); }
