/*
 Theme Name: GeneratePress Child
 Theme URI: https://example.com
 Description: Thème enfant de GeneratePress
 Author: Ton Nom
 Author URI: https://example.com
 Template: generatepress
 Version: 1.0.0
*/

/* ===== Thème Enfant GeneratePress - style.css ===== */

/* Barre adminb */
#wpadminbar:hover
{
	opacity:1;
	top:0px;
}

#wpadminbar
{
	top:-24px;
	opacity:0;
	transition: all 0.3s ease-in-out;

	
}

html .sticky-enabled .main-navigation.is_stuck {
    background: var(--accent);
    padding: 24px;
    margin-top: 0px!important;
}

body .navigation-branding img, body .site-logo.mobile-header-logo img{
    transition:none;
    width:250px;
    height:auto;
}

body:not(.home) .header-wrap .site-header{
    background: var(--base-3);
}

/* Correction : bande blanche qui dépasse sous la nav sticky (bleue).
   Le .site-header ci-dessus est légèrement plus haut que la nav ; quand celle-ci
   passe en sticky (.is_stuck → fond bleu, fixed pleine largeur en haut), le fond
   blanc du header reste visible en bandeau juste sous la barre bleue. Sur la home
   le header est transparent (pas de fond forcé) donc le défaut n'y se voit pas.
   On neutralise donc ce fond blanc UNIQUEMENT tant que la nav est collée : en haut
   le header reste blanc, et dès que la nav bleue apparaît le dépassement disparaît.
   (:has() est supporté par tous les navigateurs récents, OK pour 2026.) */
body:not(.home):has(.main-navigation.is_stuck) .header-wrap .site-header{
    background: transparent;
}

/* Correction : logo "fantôme" sous la nav sticky.
   Quand la nav passe en sticky (#sticky-navigation, logo blc2 en SVG transparent),
   le logo d'origine (.site-logo → logo-sbe2026-v2.svg) reste dans le header devenu
   transparent et apparaît à travers les zones transparentes du logo sticky.
   On masque donc ce logo d'origine tant que la nav est collée. */
.sticky-enabled:has(.main-navigation.is_stuck) .header-wrap .site-header .site-logo{
    visibility: hidden;
}

.main-navigation .main-nav ul li[class*="current-menu-"] > a,
.sticky-enabled .main-navigation.is_stuck .main-nav ul li[class*="current-menu-"] > a{
    color: var(--accent-3);
}

.header-wrap{
    z-index: 9999;
}

.sticky-enabled .main-navigation.is_stuck .main-nav ul li a{
    color: var(--base-3);
}



.sticky-enabled .main-navigation.is_stuck .gbp-button--secondary{
    border-color:var(--base-3);
    color:var(--base-3);
}

.sticky-enabled .main-navigation.is_stuck .gbp-button--secondary:hover{
    background:var(--base-3);
    color:var(--accent);
}

/* ===== Navigation : effet "cube qui bascule" (style delcano.jp) ===== */
/* Le script assets/js/nav-cube.js construit, pour chaque lien de premier niveau,
   un conteneur .gp-cube-wrap portant deux faces superposées (.gp-cube--front et
   .gp-cube--back) contenant le même mot. Chaque face tourne indépendamment autour
   d'un axe commun décalé en Z (transform-origin: ... -1em) : c'est ce décalage
   qui crée la profondeur et fait monter le mot sur un arc, sans découpe ni
   perspective. Effet desktop uniquement (>= point de bascule mobile GeneratePress). */
.main-navigation .main-nav .menu > li > a {
	background: transparent !important;
	border: none;
	box-shadow: none;
	overflow: visible !important; /* libère les faces qui basculent sur l'arc */
}

@media (min-width: 769px) {
	/* Conteneur du cube : positionne la face arrière par-dessus l'avant.
	   line-height:1 ici (et non sur les faces) pour que le conteneur lui-même
	   prenne la hauteur du texte — sinon il hérite de la grande ligne du <a> et la
	   face arrière (top:0) ne se superpose plus à la face avant (calée sur la ligne de base). */
	.main-navigation .main-nav .menu > li > a .gp-cube-wrap {
		display: inline-block;
		position: relative;
		white-space: nowrap;
		line-height: 1;
		transform-style: preserve-3d;
	}

	/* Faces communes : même origine décalée en Z pour un axe de rotation commun.
	   backface-visibility:hidden => chaque face est invisible tant qu'elle présente
	   son dos au spectateur (donc le doublon est invisible au repos). */
	.main-navigation .main-nav .menu > li > a .gp-cube {
		display: inline-block;
		white-space: nowrap;
		transform-style: preserve-3d;
		backface-visibility: hidden;
		transform-origin: center 50% -1em; /* profondeur = hauteur du texte => cube régulier */
		transition: transform 0.4s ease;
		will-change: transform;
	}

	/* Face avant = le mot, dans le flux (donne sa taille au conteneur). */
	.main-navigation .main-nav .menu > li > a .gp-cube--front {
		position: relative;
		transform: rotateX(0deg);
	}

	/* Face arrière (doublon) : superposée à l'avant, repliée à -90deg au repos. */
	.main-navigation .main-nav .menu > li > a .gp-cube--back {
		position: absolute;
		left: 0;
		top: 0;
		transform: rotateX(-90deg);
	}

	/* Au survol : le mot monte par le haut (90deg), le doublon se relève (0deg). */
	.main-navigation .main-nav .menu > li:hover > a .gp-cube--front {
		transform: rotateX(90deg);
	}
	.main-navigation .main-nav .menu > li:hover > a .gp-cube--back {
		transform: rotateX(0deg);
	}
}



/**
* Titres H1 à H6
**/


.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
    margin-bottom: 0.5rem;
}

h1, .h1,
.h1 a{
       font-size: 42px;
        line-height: 1.2em;
    font-weight: 700;
    text-transform: none;
}
				
		

h2, .h2,
.h2 a{
       font-size: 35px;
        line-height: 1.2em;
    font-weight: 700;
    text-transform: none;
}
																			
																			

h3, .h3,
.h3 a{
       font-size: 29px;
        line-height: 1.2em;
    font-weight: 700;
    text-transform: none;
}
												
												

h4, .h4,
.h4 a{
    font-size: 24px;
    line-height: 1.4em;
    font-weight: 700;
    text-transform: none;
}
														
														

h5, .h5,
.h5 a{
    font-size: 20px;
    line-height: 1.4em;
    font-weight: 700;
    text-transform: none;
}
																			
																			

h6, .h6,
.h6 a {
	font-size: 18px;
    
    line-height: 1.2em;
    font-weight: 700;
    text-transform: none;
}


.inscription-newsletter .mailpoet_form {
    align-items: center;
    column-gap: 1rem;
    display: flex;
    margin-bottom: 0rem;
    padding: 0!important;
}



.inscription-newsletter .mailpoet_form .champ-email{
    margin:0!important;
    
}

.inscription-newsletter .mailpoet_form .champ-email>input {
    background-color: var(--base-3);
    color: var(--base);
    font-weight: 500;
    width: 269px;
    min-width: 269px;
    text-align: left;
    text-decoration: none;
    transition: all 0.5s ease 0s;
    border: 1px solid var(--base-3);
    border-radius: 8px;
    padding: 13px 24px!important;
}

.inscription-newsletter .mailpoet_form .champ-email>input:focus{
    outline: 2px solid #b7ff2d;
}

.btn-sinscrire>input[type="submit"] {
        align-items: center;
    color: var(--base-2);
    cursor: pointer;
    display: inline-flex;
    font-size: 15px;
    font-weight: 600;
    justify-content: center;
    letter-spacing: 2px;
    line-height: 1em!important;
    text-transform: uppercase!important;
    transition: all 0.5s ease 0s;
    border: 2px solid var(--base-2)!important;
    border-radius: 8px;
    padding: 17px 20px!important;

}

.btn-sinscrire>input[type="submit"]:hover,
.btn-sinscrire>input[type="submit"]:focus {
    background-color: var(--base-3)!important;
    color: var(--accent)!important;
    border: 2px solid var(--base-3)!important;
}

.mailpoet_form.mailpoet_form_successfully_send .mailpoet_validate_success {
    left: 50%;
    position: absolute;
    text-align: center;
    top: 50%;
    padding:15px;
    transform: translate(-50%, -50%);
    width: 100%;
    margin-left: -40px;
    background: var(--accent);
    color: var(--accent-2);
}

.inscription-newsletter .mailpoet_form .champ-email span[class^="mailpoet_error"]{
    position:absolute;
    color:#eb7a7a;
}
.inscription-newsletter .mailpoet_form .champ-email span[class^="mailpoet_error"] .parsley-errors-list{
    color:#eb7a7a;
}

.mask-coin-gauche{
    mask-image: url(assets/img/coin-ht-gauche900.svg);
    mask-repeat: no-repeat;
    mask-size: cover;
    mask-position: 0px 0px;
}

.gradient-mesh {
  background-size: 100% 100%;
  background-color: #2c4b9a;
  background-image:
    radial-gradient(at 25% 8%, #ffffff, transparent 45%),
    radial-gradient(at 78% 14%, #b0c1d0, transparent 50%),
    radial-gradient(at 82% 20%, #E1FCAD, transparent 35%),
    radial-gradient(at 50% 45%, #78b9e6, transparent 55%),
    linear-gradient(180deg, #ffffff 0%, #b0c1d0 30%, #78b9e6 50%, #5282c0 100%);
}

/* ===== Arrière-plan "esprit réseau" (hero .gradient-mesh) =====
   SVG décoratif : nœuds (anneau blanc + point #E1FCAD) reliés par liaisons
   pointillées qui "circulent". Posé derrière le contenu, très discret.
   Le SVG est injecté via un bloc HTML personnalisé (class="reseau-bg"). */
.gradient-mesh {
  position: relative;
  isolation: isolate; /* contient le z-index:-1 du SVG sous le contenu, sur le dégradé */
}

.reseau-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: -1;            /* au-dessus du dégradé, sous tout le contenu */
  pointer-events: none;
  --reseau-pale: .5;      /* discrétion des éléments BLANCS (liens/anneaux) uniquement */
  /* Dégage le haut pour la lisibilité de la nav : transparent sur ~14 %,
     puis fondu jusqu'à 26 %. Augmente 14% pour libérer plus de hauteur. */
  -webkit-mask-image: linear-gradient(180deg, transparent 14%, #000 26%);
  mask-image: linear-gradient(180deg, transparent 14%, #000 26%);
}

/* Éléments blancs = discrets (pilotés par --reseau-pale). Point #E1FCAD = net, fixe. */
.reseau-bg .reseau-liens { fill: none; stroke: #ffffff; stroke-width: 1.4; stroke-linecap: round; opacity: var(--reseau-pale); }
.reseau-bg .anneau       { fill: none; stroke: #ffffff; stroke-width: 1.6; opacity: var(--reseau-pale); }
.reseau-bg .point        { fill: #E1FCAD; }

/* Flux des pointillés le long des liaisons */
@keyframes reseau-flow { to { stroke-dashoffset: -240; } }
.reseau-bg .lien {
  stroke-dasharray: 3 8;
  animation: reseau-flow 5s linear infinite;
}
.reseau-bg .lien:nth-child(2n) { animation-duration: 7s; animation-direction: reverse; }
.reseau-bg .lien:nth-child(3n) { animation-duration: 9s; }

/* Disque blanc "pulse" : sous chaque point vert, rond blanc en opacité réduite
   qui s'agrandit puis rétrécit en boucle (effet respiration). Le point vert reste
   fixe et net, peint au-dessus (l'onde le précède dans le balisage du nœud).
   Un seul disque par nœud → .onde--2 masqué. Les anneaux verts ont été retirés
   (stroke: none) pour ne plus dessiner de contour autour du point. */
.reseau-bg .onde {
  fill: #ffffff;
  stroke: none;
  opacity: .4;
  transform-box: fill-box;
  transform-origin: center;
  animation: reseau-pulse-disc 3s ease-in-out infinite;
}
.reseau-bg .onde--2 { display: none; }
.reseau-bg .noeud:nth-child(2n) .onde { animation-duration: 3.6s; animation-delay: -.7s; }
.reseau-bg .noeud:nth-child(3n) .onde { animation-duration: 4.2s; animation-delay: -1.5s; }
.reseau-bg .noeud:nth-child(4n) .onde { animation-duration: 4.8s; animation-delay: -2.2s; }
@keyframes reseau-pulse-disc {
  0%, 100% { transform: scale(1);   opacity: .4; }
  50%      { transform: scale(2.2); opacity: .16; }
}

/* Accessibilité : animation coupée si l'utilisateur la refuse */
@media (prefers-reduced-motion: reduce) {
  .reseau-bg * { animation: none !important; }
}

/* ===== Variante "bandeau titre" (pages intérieures) =====
   Même réseau, format large/bas, plus discret, sans zone dégagée en haut.
   1) Poser la classe `bandeau-reseau` sur la SECTION du bandeau (crée le
      contexte de positionnement pour que le SVG s'y cale en plein cadre).
   2) Coller le SVG (class="reseau-bg reseau-bandeau") dans un bloc HTML/Shape
      placé au premier niveau du bandeau (pas dans une colonne). */
.bandeau-reseau { position: relative; isolation: isolate; }

.reseau-bg.reseau-bandeau {
  --reseau-pale: .35;      /* éléments blancs plus discrets sur bandeau court ; les points verts restent vifs */
  -webkit-mask-image: none; /* pas de dégagement haut (pas de nav par-dessus) */
  mask-image: none;
}

.wpcf7-form{
        display: flex;
    flex-direction: column;
    gap:15px;
}

.wpcf7-form p span{
    display:flex;
}

.wpcf7-form-control-wrap>input{
    width:100%;
}

input[type=email], input[type=number], input[type=password], input[type=search], input[type=tel], input[type=text], input[type=url], select, textarea{
    border-width: 2px;
    border-radius: 8px; 
}

.wpcf7-form input[type=submit]{
    width:fit-content;
    align-self: flex-end;
}

.tribe-events-header {
    display: none !important;
}


#scl-badge svg path:first-child{
fill:burlywood;
}

.single-tribe_events .tribe-events-schedule{display:none;}

.tribe-events-meta-group.tribe-events-meta-group-details {
    margin-bottom: 30px;
}

.single-tribe_events .tribe-events-single-event-title {
      margin-bottom: 20px;
}

 .tribe-events .tribe-events-calendar-list__event-title-link:focus{
    outline:none;
 }

 .tribe-common .tribe-common-anchor-thin:hover{
    border-color:var(--accent);
 }

.tribe-events-nav-previous,
.tribe-events-nav-next{
    max-width:50%;
}

.tribe-events-nav-previous a, .tribe-events-nav-next a{
     display: flex;
    align-items: center;
    column-gap: 10px;
 }

 