/*
Theme Name: Harvest
Theme URI: https://wordpress.org/themes/twentytwentyfour/
Author: HARVEST
Author URI: https://wordpress.org
Description:
Requires at least: 6.4
Tested up to: 6.4
Requires PHP: 7.0
Version: 1.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
Text Domain: twentytwentyfour
Template: twentytwentyfour
Tags: one-column, custom-colors, custom-menu, custom-logo, editor-style, featured-images, full-site-editing, block-patterns, rtl-language-support, sticky-post, threaded-comments, translation-ready, wide-blocks, block-styles, accessibility-ready, blog, portfolio, news
*/



/* -------------------------------------------------------------------------- */
/* 0) Imports & resets                                                        */
/* -------------------------------------------------------------------------- */

@import url("https://use.typekit.net/coa5avj.css");

/* Le navigateur garde le scroll vertical natif, on gère l'horizontal */
.slider-viewport{
  touch-action: pan-y;
  overscroll-behavior: contain;           /* évite le rebond iOS/Android dans la section pin */
  -webkit-overflow-scrolling: touch;
}

html,
body {
  background-color: rgb(26, 26, 26);
  min-height: 100vh;
  width: 100% !important;
  overflow-x: hidden !important;
  overscroll-behavior: none;
  cursor: none;
}

a,
a:focus,
a:active {
  outline: 0 !important;
  cursor: none;
}

.wp-block-navigation a:where(:not(.wp-element-button)):focus,
.wp-block-post-title a:where(:not(.wp-element-button)):focus,
.wp-block-site-title a:where(:not(.wp-element-button)):focus,
a:where(:not(.wp-element-button)):focus {
  text-decoration: none;
}

/* -------------------------------------------------------------------------- */
/* 1) États init / préchargement                                              */
/* -------------------------------------------------------------------------- */

/* la loading ne doit JAMAIS intercepter les clics une fois cachée */
.loading[hidden] { display: none !important; }      /* kill total */
.loading.is-gone  { display: none !important; }     /* classe de secours */

/* quand l’overlay est à 0 d’opacité, on n’intercepte plus les clics */
.loading:not([data-active="1"]) { pointer-events: none !important; }

html.is-prep .flair,
html.is-prep section.intro .title,
html.is-prep .circle.one,
html.is-prep .circle.two,
html.is-prep .line-inner,
html.is-prep .pages_title,
html.is-prep .cultive {
  visibility: hidden;
}

.smooth-content { visibility: hidden; }

.loading {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  background-color: rgb(26, 26, 26);
  overflow: hidden;
  z-index: 999999;
  opacity: 0;
  backdrop-filter: blur(2px);
  transition: opacity .3s ease; /* sécurité si JS en panne */
}

/* -------------------------------------------------------------------------- */
/* 2) Thème clair                                                             */
/* -------------------------------------------------------------------------- */

body.light {
  background: #F2EBD7;
}

.light .circles { opacity: 0.1; }

/* Couleurs globales en mode clair */
.light .title,
.light h1,
.light h2,
.light h3,
.light h4,
.light h5,
.light h6,
.light .has-contrast-color,
.light p,
.light strong,
.light .wp-block-navigation-item__label {
  color: var(--wp--preset--color--base) !important;
}

/* Logo en mode clair */
.light .wp-block-site-logo, 
.light .wp-block-spacer
{
  background-color: var(--wp--preset--color--base) !important;
}
.light .has-black-background-color{
	background: rgba(0, 0, 0, 0.14) !important;
}

/* -------------------------------------------------------------------------- */
/* 3) Header / navigation                                                     */
/* -------------------------------------------------------------------------- */


/* Anti-flicker logo pendant l'init */
html.is-prep header .heading .wp-block-site-logo,
html.is-prep header .heading .wp-block-site-logo img {
  transition: none !important;
}

/* Un petit coup de pouce au moteur de rendu (WebKit) */
header .heading .wp-block-site-logo {
  will-change: transform, opacity;
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
}

header {
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 9999999;
  background-color: transparent;
  transition: 0.3s all ease-in-out;
}

/* avant : transition: 0.4s all ...  ->  provoque flicker sur mask/height */
header .heading .wp-block-site-logo {
  height: 237px;
  width: 101px;
  transform-origin: top left;
  background-color: var(--wp--preset--color--contrast);
  mask: url(/wp-content/uploads/logo_harvest.svg) no-repeat top left;
  -webkit-mask: url(/wp-content/uploads/logo_harvest.svg) no-repeat top left;
  mask-size: contain;

 transition: 0.4s all cubic-bezier(0.5, 0, 0.58, 1);
}

header .heading .wp-block-site-logo img {
  opacity: 0;
  height: 237px;
  width: 101px;
  /* idem : pas de transition sur width/height */
   transition: 0.4s all cubic-bezier(0.5, 0, 0.58, 1);
}

/* État scrolled : on change la hauteur et le mask, MAIS sans transition de mask/height */
header.main-tool-bar--scrolled .heading .wp-block-site-logo {
  height: 80px; /* se fait instantanément, sans anim -> pas de flash */
  transform-origin: top left;
  mask: url(/wp-content/themes/ha/img/logo_harvest_mini.svg) no-repeat top left;
  -webkit-mask: url(/wp-content/themes/ha/img/logo_harvest_mini.svg) no-repeat top left;
  mask-size: contain;
}

header.main-tool-bar--scrolled {
  background: rgba(0, 0, 0, 0.14);
  backdrop-filter: blur(10px);
}


header.main-tool-bar--scrolled .heading nav li {
  font-size: 1rem !important;
  padding: 11px 0;
}

header.main-tool-bar--scrolled .wp-block-site-logo img {
  width: 45px;
  height: 118px;
}

header.open { height: 100%; }

/* État actif menu / archive projets */
.wp-block-navigation .wp-block-navigation-item__content.wp-block-navigation-item__content:hover
{
  color: var(--wp--preset--color--primary);
}
.current-menu-item,
.post-type-archive-projets .projets, .single-projets .projets{
	font-style: italic;
}


/* -------------------------------------------------------------------------- */
/* 4) Hero / Intro                                                            */
/* -------------------------------------------------------------------------- */

section.intro { position: relative; }
section.intro .title { position: relative; z-index: 2; }
section.intro .two { position: relative; z-index: 3; }
section.intro .lines { position: relative; z-index: 1; }
section.two { margin-top: -50vh; }

/* h1 { opacity: 0; } /* (corrigé: suppression espace invisible) */ */

/* -------------------------------------------------------------------------- */
/* 5) Éléments graphiques (cercles, flair, gradients)                         */
/* -------------------------------------------------------------------------- */

.circles {
  position: fixed;
  min-height: 100vh;
  width: 100vw;
}

.circle { position: absolute; }
.circle svg { width: 100% !important; height: 30vw; }
.circle.one { right: 5vw; top: 0; visibility: hidden; }
.circle.two { left: 5vw; top: 50vh; visibility: hidden; }

.logo svg { fill: red; }

mark a {
  position: relative;
  text-decoration: none;
  background:
    linear-gradient(to right, var(--wp--preset--color--contrast), var(--wp--preset--color--contrast)),
    linear-gradient(to right, var(--wp--preset--color--primary), var(--wp--preset--color--primary));
  background-size: 100% 2px, 0 2px;
  background-position: 100% 100%, 0 100%;
  background-repeat: no-repeat;
  transition: all 400ms;
}

mark a:hover {
  color: var(--wp--preset--color--primary);
  background-size: 0 2px, 100% 2px;
}

.gradient {
  background: -webkit-linear-gradient(var(--wp--preset--color--base), #313131);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* Curseur flair (desktop) */
@media screen and (min-width: 600px) {
  :not(.wp-admin) .flair {
    position: fixed;
    top: 0; left: 0;
    width: 70px; height: 70px;
    pointer-events: none;
    transition: opacity 0.3s ease;
    z-index: 10000;
  }
  .flair { cursor: none; }
  .flair svg { width: 100%; height: 100%; }
  .flair #currentShape { fill: #FFD07B; }
  
	  /* 1) Désactiver le pointeur partout sauf zones de saisie */
	:where(html, body) { cursor: none !important; }
	
	/* UA defaults sur tous les liens (y compris Safari) */
	:where(:any-link),
	:where(a), 
	a:-webkit-any-link { cursor: none !important; }
	
	/* Boutons & rôles cliquables */
	:where(button, [role="button"], [role="link"], .wp-element-button,
	       input[type="button"], input[type="submit"], input[type="reset"],
	       label, summary) { cursor: none !important; }
	
	/* Ne PAS masquer le curseur dans les zones de saisie */
	:where(input[type="text"], input[type="search"], input[type="email"],
	       input[type="number"], input[type="password"], textarea,
	       [contenteditable="true"]) { cursor: text !important; }
	
	/* 2) Éléments spécifiques de ton thème */
	.projects-as-slider .slider-nav button { cursor: none !important; }
	
	/* Navigation WP (parfois réimpose pointer via styles core) */
	.wp-block-navigation a,
	.wp-block-navigation__responsive-container-open,
	.wp-block-navigation__submenu-icon { cursor: none !important; }
	
	/* 3) Sécurité générale : tout élément interactif restant */
	:where([onclick], [data-action], [role="menuitem"], [role="tab"], [role="switch"]) {
	  cursor: none !important;
	}
	
	/* 4) Le flair ne doit jamais capter les events ni réactiver un curseur */
	.flair { pointer-events: none; cursor: none !important; }
  
  
}

@media screen and (max-width: 600px) {
  .flair { display: none; }
}

/* Vignette qui suit la souris */
.cursor-sidecar{
  position: fixed;
  top: 0; left: 8%;
  width: clamp(150px, 15vw, 300px);
  aspect-ratio: 1 / 1;
  background: center / cover no-repeat;
  border-radius: 50%;
  pointer-events: none;
  z-index: 100;
  opacity: 0;
  transform: translate(-50%, -50%);
  box-shadow: 0 12px 48px rgba(0,0,0,.35);
}

@media (pointer: coarse) {
  .cursor-sidecar { display: none !important; }
}

/* -------------------------------------------------------------------------- */
/* 6) Texte scindé / animations de lignes                                     */
/* -------------------------------------------------------------------------- */

.lines { position: relative; will-change: transform; }
.split-line,
.line-wrap,
.line { display: block; overflow: hidden; }

.line-inner {
  display: inline-block;
  will-change: transform;
  transform: translate3d(0,0,0);
  backface-visibility: hidden;
  -webkit-font-smoothing: antialiased;
}

/* Hover d’expérience */
.exp .line {
  transition: all .5s ease-in-out;
  cursor: pointer;
  transform-origin: left;
}
.exp .line:hover { transform: scale(1.1); }

/* -------------------------------------------------------------------------- */
/* 7) Blocs divers                                                            */
/* -------------------------------------------------------------------------- */

/* Citation en dégradé animé (texte en “mask”) */
.citation > div {
  background: linear-gradient(to right, var(--wp--preset--color--contrast) 50%, rgb(37,37,37) 50%);
  background-size: 200% 100%;
  background-position-x: 100%;
  color: transparent;
  background-clip: text;
  -webkit-background-clip: text;
}
.light .citation > div {
  background: linear-gradient(to right, var(--wp--preset--color--base) 50%, rgb(37,37,37) 50%);
}


.wp-block-spacer { background-color: var(--wp--preset--color--contrast); }

.siteWeb figure::before {
  content: '';
  display: block;
  width: 100%;
  height: 43px;
  background-color: #262626;
  border-radius: 25px 25px 0 0;
}

.grid img { border-radius: 20px; }

.wp-block-group.is-layout-grid {
  display: grid;
  /* si ce n’est pas déjà le cas */
/*   grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); */
  align-items: center; /* centrage vertical */
  justify-items: center; /* centrage horizontal */
  gap: 6rem; /* espace entre les logos */
}

.wp-block-group.is-layout-grid figure {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0; /* supprime les marges inline */
}

.wp-block-group.is-layout-grid img {
  max-width: 100%;
  height: auto;
  object-fit: contain; /* meilleure gestion des ratios */
}

p { margin: 10px; }

.selected { color: var(--wp--preset--color--custom-rose-cp) !important; }

.pages_title{ position: relative; z-index: 100;}

.SiteVids video{
  border-radius: 0 !important;
}

/* liste pages contenu */
.ListeInfos p{
  margin: 0;
}
.ListeInfos a {
  inline-size: 25.3rem;
  display: flex !important;
  text-decoration: none !important;
  display: flex !important;
  margin: 0;
  padding-bottom: 10px;
  justify-content: space-between; /* texte à gauche, flèche à droite */
  align-items: center;
  border-bottom: 1px solid #ccc;
  cursor: pointer;
  transition: transform 0.3s ease-in-out ;
}

/* la flèche */
.ListeInfos a::after {
  content: "→"; /* flèche simple */
  font-weight: 400;
  font-size: 40px;
  color: inherit;
}

/* effet au survol */
.ListeInfos a:hover {
  color: var(--wp--preset--color--primary) !important;
  transform: translateX(5px);
}

.ListeInfos a:hover::after {
  transform: translateX(5px); /* la flèche glisse légèrement à droite */
}

/* -------------------------------------------------------------------------- */
/* 8) Projets                                                                 */
/* -------------------------------------------------------------------------- */

.projets a {
  transition: all 0.3s ease;
  background-size: 0;
}

.projets a h2 {
  padding: 0;
  transition: all 0.3s ease;
}

.projets a:hover h2 {
  padding-left: 10px;
  color: var(--wp--preset--color--primary);
}

/* Page projets : masquer la featured image en liste */
.page-projets-scope .wp-block-post-featured-image { display: none !important; }

/* Slider projets en Query Loop */
.projects-as-slider { position: relative; overflow: hidden; }
.projects-as-slider .slider-viewport {
  overflow: hidden;
  width: 100%;
  max-width: 100%;
  margin-inline: 0;
/*   min-height: 100vh; */
}
.projects-as-slider .slider-track {
  display: flex;
  will-change: transform;
  touch-action: pan-y;
  align-items: center;
}
.projects-as-slider .slider-track > li.wp-block-post {
  flex: 0 0 100vw;
  max-width: 100vw;
}
.projects-as-slider .wp-block-post { transform-origin: center center; }
.projects-as-slider .wp-block-cover { min-height: min(60vh, 600px); max-width: 1200px; }
.projects-as-slider .wp-block-cover__image-background { object-fit: cover; }
.projects-as-slider .slider-nav {
  position: absolute;
  inset: auto 0 1rem 0;
  display: flex;
  justify-content: center;
  gap: .75rem;
  pointer-events: none;
}
.projects-as-slider .slider-nav button {
  pointer-events: auto;
  border: 0;
  border-radius: 999px;
  padding: .65rem 1rem;
  background: rgba(0,0,0,.5);
  color: #fff;
  backdrop-filter: blur(6px);
  cursor: pointer;
}
/* Supprime marges par défaut de la Query Loop */
.projects-as-slider .wp-block-post-template { margin: 0; padding: 0; list-style: none; }
/* vidéos projets */
figure.wp-block-video video{
  border-radius: 20px;
}


/* -------------------------------------------------------------------------- */
/* 9) Images “qui”                                                            */
/* -------------------------------------------------------------------------- */

.imgQui img {
  max-height: 90vh;
  vertical-align: top;
}

/* -------------------------------------------------------------------------- */
/* 10) Accordéon                                                              */
/* -------------------------------------------------------------------------- */

.accordion { width: 250px; margin: 15px; box-shadow: 0 8px 17px rgba(0,0,0,.2); }
.accordion-menu { color: #fff; padding: 10px; cursor: pointer !important; user-select: none; position: relative; }
.accordion-content { height: 0; overflow: hidden; font-size: 14px; width: 60%; }
.accordion-content.expanded { height: 0; overflow: hidden; } /* (semble volontaire) */
.accordion-plus,
.accordion-minus { position: absolute; top: 7px; right: 8px; }

/* -------------------------------------------------------------------------- */
/* 11) Formulaires (Gravity Forms)                                            */
/* -------------------------------------------------------------------------- */

.gform_wrapper .ginput_container input {
  background: none;
  border: none;
  border-bottom: 1px solid var(--wp--preset--color--contrast);
  color: var(--wp--preset--color--contrast);
}

.gform_wrapper .ginput_container textarea {
  background: none;
  border-color: var(--wp--preset--color--contrast);
  color: var(--wp--preset--color--contrast);
}

.contact .message .gform-field-label,
.email .gform-field-label,
.nom .gform-field-label {
  font-size: 2rem !important;
  font-weight: 400 !important;
}

.ginput_container_consent { padding-top: 3rem; }

.gform_button {
  background-color: var(--wp--preset--color--contrast);
  color: var(--wp--preset--color--base);
  border: none;
  border-radius: 20px;
  padding: 20px 40px;
  font-size: medium;
  text-transform: uppercase;
  letter-spacing: 0.1rem;
  font-weight: 600;
  transition: transform 0.3s ease;
}

.gform_wrapper .gform_footer input[type="submit"]:hover,
.gform_wrapper .gform_page_footer input[type="submit"]:hover {
  transform: scale(1.05);
}

.gfield_consent_label::after {
  content: "*";
  position: relative;
  top: -0.5rem;
  color: #FFD07B;
  font-weight: bold;
  font-size: 1rem;
}

.gfield_required::before {
  content: "*";
  position: relative;
  top: -1rem;
  color: #FFD07B;
  font-weight: bold;
  font-size: 1rem;
}

.gfield_required_text { display: none !important; }

/* -------------------------------------------------------------------------- */
/* 12) Mise en page Contact                                                   */
/* -------------------------------------------------------------------------- */

.contact-page .circle.one,
.contact-page .circle.two {
  display: flex;
  position: relative !important;
  flex-wrap: wrap;
  align-items: center;
  align-content: center;
  transform: rotate(90deg) !important;
}

.contact-page .circle.one { right: -13.7vw !important; }
.contact-page .circle.two { left: -13.7vw; top: -7vh; }

/* -------------------------------------------------------------------------- */
/* 13) Sections “for” (marquee + SVG latéraux)                                */
/* -------------------------------------------------------------------------- */

.panel .marquee-track {
  display: flex;
  gap: clamp(2rem, 6vw, 8rem);
  will-change: transform;
  transform: translate3d(0,0,0);
}

.panel .wp-block-heading {
  white-space: nowrap;
  display: inline-block;
}

section.for { position: relative; overflow: visible; }
section.for .panel { position: relative; z-index: 2; }

section.for .svg1,
section.for .svg2 {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  pointer-events: none;
  z-index: 0;
  display: grid;
  place-items: center;
}

section.for .svg1 { left: 0; }
section.for .svg2 { right: 0; }

section.for .svg1 svg,
section.for .svg2 svg {
  width: min(35vw, 50vw);
  height: auto;
  transform-box: fill-box;
  transform-origin: 50% 50%;
}

/* -------------------------------------------------------------------------- */
/* 14) Éléments décoratifs positionnés                                       */
/* -------------------------------------------------------------------------- */

.get-on-front { position: relative; z-index: 999 !important; }

.ligne-verte,
.beige-ligne,
.bleu-ligne {
  position: relative;
  left: 50%;
  transform: translateX(-50%);
}

.ligne-verte2{
  position: absolute;
  right: 10rem;
}

.ligne-verte { bottom: 10rem; width: 1rem; }
.beige-ligne { bottom: 18rem; width: 2rem; }
.bleu-ligne  { bottom: -7rem; width: 2rem; z-index: 2; }

.savoir-faire { position: relative; left: 2rem; }
.creativite   { position: relative; left: -2rem; }

.lignes { position: relative; left: 18rem; top: 15rem; }
.arcs-cercles { position: relative; left: -5rem; top: 9rem; }

.arcs-cercles .wp-image-706 { width: 8rem !important; }
.lignes .wp-image-699       { width: 10rem !important; }

.heart img{
  left:0;
  right:0;
  margin:0 auto;
 }

 @keyframes heartFadeInOut {
  0% {transform: scale(1);}
  25% {transform: scale(.97);}
  35% {transform: scale(.9);}
  45% {transform: scale(1.1);}
  55% {transform: scale(.9);}
  65% {transform: scale(1.1);}
  75% {transform: scale(1.03);}
  100% {transform: scale(1);}
}

.heart img { 
	top: 30%;	
  animation-name: heartFadeInOut; 
  animation-iteration-count: infinite;
  animation-duration: 2s;
	width: 40vh;	
}

/* -------------------------------------------------------------------------- */
/* 15) Utilitaires perf                                                       */
/* -------------------------------------------------------------------------- */

/* Aides GPU / reveal */
[data-reveal],
[data-parallax],
[data-item] {
  will-change: transform, opacity;
  transform: translateZ(0);
}

/* -------------------------------------------------------------------------- */
/* 16) Media queries                                                          */
/* -------------------------------------------------------------------------- */

@media (max-width: 1213px) {
  .basline { min-width: 445px !important; }
}

@media (max-width: 650px) {
  .circle.one { top: 15vh; right: -47vw; }
  .circle.two { left: -15vw; }
  .circle svg { height: 60vw; }

  .creativite,
  .savoir-faire { left: 0 !important; }

  .bleu-ligne,
  .beige-ligne { display: none; }

  .ginput_container_consent { padding-top: 0 !important; }
}

@media (max-width: 400px) {
  .title { padding-left: 0 !important; padding-right: 0 !important; }
}