/*
Theme Name: La Ferme des Tournesols
Theme URI: https://lafermedestournesols.com/
Description: Thème enfant de GeneratePress pour La Ferme des Tournesols (refonte). Identité : orange #ff7300, verts #3f7652/#1b5b3f, crème #fffdfb. Polices : Calistoga, Comodo Free, Crafty Girls, Oswald.
Author: Organiweb
Author URI: https://organiweb.fr/
Template: generatepress
Version: 2.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: lafermedestournesols
*/

/* Ancrages : la nav flottante (94px) recouvre le haut de la cible lors
   d'un saut vers une ancre. On reserve la hauteur de la nav a la SOURCE
   (scroll-margin-top), plutot que de masquer quoi que ce soit. */
html{scroll-behavior:smooth;scroll-padding-top:120px}
[id]{scroll-margin-top:120px}
.woocommerce div.product .woocommerce-tabs .panel h2,
.woocommerce div.product .woocommerce-tabs .panel h3{scroll-margin-top:120px}

/* ============================================================
   NEUTRALISATION GENERATEPRESS (parent)
   GeneratePress injecte ses propres wrappers (.site, .site-header,
   .site-content, .inside-article...), ses tailles de police et
   ses marges. On les remet à zéro pour que notre design soit
   STRICTEMENT identique à celui rendu sous Twenty Twenty-Five.
   ============================================================ */
body{background:var(--creme);font-family:var(--corps);color:var(--encre);
  line-height:1.65;margin:0;padding:0;-webkit-font-smoothing:antialiased}
/* Wrappers GP : neutralisés (nos templates gèrent le layout) */
.gp-container, .site, .site-content, .site-main, .entry-content,
.inside-article, .grid-container, .separate-containers .inside-article{
  max-width:none;margin:0;padding:0;width:auto;background:transparent}
/* Typographie GP : on reprend la main */
.entry-content > *{max-width:none}
h1,h2,h3,h4,h5,h6{font-family:var(--titre);font-weight:400;color:var(--vert-fonce);line-height:1.15;margin:0}
p{margin:0 0 1em}
a{color:var(--vert-fonce)}
img{max-width:100%;height:auto}
/* Boutons GP : alignés sur notre charte */
button, input[type="submit"], .button, .wp-block-button__link{
  font-family:var(--label)}
/* Masquer tout élément résiduel du header/footer GP s'il en reste */
.site-header, .site-footer, .site-info{display:none !important}
/* Le contenu prend toute la hauteur utile */
.site-content{padding:0}

@font-face{font-family:'Comodo Free';src:url('fonts/comodo-free.woff2') format('woff2');font-weight:400;}
@font-face{font-family:'Crafty Girls';src:url('fonts/crafty-girls.woff2') format('woff2');font-weight:400;}

:root{
  --orange:#ff7300;
  --orange-fonce:#d95e00;
  --vert:#3f7652;
  --vert-fonce:#1b5b3f;
  --creme:#fffdfb;
  --papier:#f7f2e9;
  --blanc:#ffffff;
  --encre:#23201b;
  --encre-doux:#5b554b;
  --gris:#6b6b66;
  --titre:'Calistoga',serif;
  --display:'Comodo Free',cursive;
  --manuscrit:'Crafty Girls',cursive;
  --label:'Oswald',sans-serif;
  --corps:'Avenir','Helvetica Neue',Arial,sans-serif;
  --ease:cubic-bezier(.16,1,.3,1);
  --radius:18px;
  --shadow:0 6px 24px rgba(27,91,63,.10);
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--corps);color:var(--encre);background:var(--creme);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}

/* grain papier global (fixe, pointer-events none) */
body::after{
  content:"";position:fixed;inset:0;z-index:999;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.wrap{max-width:1280px;margin:0 auto;padding:0 clamp(20px,4vw,56px)}

/* ============ NAV FLUID ISLAND ============ */
.nav-flottante{position:fixed;top:22px;left:50%;transform:translateX(-50%);z-index:100;width:calc(100% - 40px);max-width:1120px}
.nav-ile{display:flex;align-items:center;justify-content:space-between;padding:10px 18px;border-radius:22px;
  background:rgba(255,253,251,.82);backdrop-filter:blur(16px) saturate(1.3);
  border:1px solid rgba(27,91,63,.10);
  box-shadow:0 8px 30px rgba(27,91,63,.08), inset 0 1px 0 rgba(255,255,255,.6)}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none}
.brand img{height:72px;width:auto}
.brand .nom{font-family:var(--display);font-size:1.15rem;color:var(--vert-fonce);line-height:1}
.brand .sous{display:block;font-family:var(--label);font-size:.58rem;letter-spacing:.22em;text-transform:uppercase;color:var(--orange);margin-top:2px}
.nav-liens{display:flex;gap:30px;align-items:center;list-style:none;margin:0;padding:0}
.nav-liens li{margin:0;padding:0}
.nav-liens a{font-family:var(--label);font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--vert-fonce);text-decoration:none;font-weight:500;position:relative;transition:color .2s}
.nav-liens a:hover{color:var(--orange)}
.nav-liens .current-menu-item > a,
.nav-liens .current_page_item > a{color:var(--orange)}
.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--label);font-size:.82rem;letter-spacing:.1em;text-transform:uppercase;font-weight:600;padding:13px 24px;border-radius:14px;text-decoration:none;cursor:pointer;border:none;transition:transform .2s var(--ease), background .2s}
.btn:active{transform:scale(.97)}
.btn-orange{background:var(--orange);color:#fff}
.btn-orange:hover{background:var(--orange-fonce)}
.btn-vert{background:var(--vert-fonce);color:#fff}
.btn-vert:hover{background:var(--vert)}
.btn .fleche{width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.22);display:inline-flex;align-items:center;justify-content:center;font-size:.85rem;transition:transform .25s var(--ease)}
.btn:hover .fleche{transform:translate(2px,-2px)}

/* ============ HERO EDITORIAL ============ */
.hero{position:relative;min-height:100dvh;display:flex;align-items:center;overflow:hidden;background:linear-gradient(180deg,#f8ead6 0%, #fbeedc 45%, var(--creme) 100%)}
.hero .soleil{position:absolute;top:-100px;right:-100px;width:460px;height:460px;border-radius:50%;
  background:radial-gradient(circle at 40% 40%, #ffb45e 0%, #ff7300 55%, transparent 72%);
  opacity:.42;pointer-events:none;filter:blur(2px)}
.hero .tournesol-rotatif{position:absolute;bottom:-110px;left:-110px;width:360px;height:360px;opacity:.13;pointer-events:none;
  animation:rot 60s linear infinite}
@keyframes rot{to{transform:rotate(360deg)}}
.hero-contenu{position:relative;z-index:2;padding:150px 0 70px;width:100%}
.hero .date{display:inline-block;font-family:var(--manuscrit);font-size:1.5rem;color:var(--vert);margin-bottom:18px;transform:rotate(-2deg)}
.hero h1{font-family:var(--titre);font-size:clamp(2.6rem,7.2vw,6.4rem);line-height:.98;color:var(--vert-fonce);letter-spacing:-.01em;max-width:13ch}
.hero h1 .orange{color:var(--orange)}
.hero .ligne{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;margin-top:34px;flex-wrap:wrap}
.hero .intro{font-size:1.1rem;color:var(--encre-doux);max-width:42ch;line-height:1.7}
.hero .intro strong{color:var(--vert-fonce)}
.hero .note-manuscrite{font-family:var(--manuscrit);font-size:1.7rem;color:var(--orange);transform:rotate(-3deg);line-height:1.25;text-align:right;max-width:14ch;align-self:center;padding-right:20px}
/* photo tournesol hero */
.hero .visuel-tournesol{position:relative;align-self:center;justify-self:end}
.hero .visuel-tournesol img{width:min(360px,30vw);height:min(360px,30vw);object-fit:cover;border-radius:50%;border:8px solid #fff;box-shadow:0 24px 60px rgba(27,91,63,.22);display:block}
.hero .visuel-tournesol::after{content:"";position:absolute;inset:-26px;border-radius:50%;border:2px dashed rgba(255,115,0,.35);pointer-events:none;animation:rot 40s linear infinite}
.hero .visuel-tournesol .etiquette{position:absolute;bottom:-14px;left:50%;transform:translateX(-50%) rotate(-5deg);background:var(--vert);color:#fff;font-family:var(--manuscrit);font-size:1.15rem;padding:10px 18px;border-radius:14px;box-shadow:0 10px 24px rgba(27,91,63,.25);white-space:nowrap}
.hero-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:50px;align-items:center}
.hero .hero-cta{display:flex;gap:14px;margin-top:34px;flex-wrap:wrap}
.hero .bandeau-bas{display:flex;gap:34px;margin-top:56px;padding-top:24px;border-top:1px solid rgba(27,91,63,.14);flex-wrap:wrap}
.hero .bandeau-bas div{flex:1;min-width:140px}
.hero .bandeau-bas .k{font-family:var(--label);font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--orange)}
.hero .bandeau-bas .v{font-family:var(--titre);font-size:1.15rem;color:var(--vert-fonce);margin-top:4px}

/* ============ PANIER = RECU DE MARCHE ============ */
.panier{padding:110px 0}
.panier-tete{display:grid;grid-template-columns:1.1fr .9fr;gap:60px;align-items:end;margin-bottom:54px}
.panier-tete h2{font-family:var(--titre);font-size:clamp(2rem,4.6vw,3.6rem);color:var(--vert-fonce);line-height:1.02}
.panier-tete .sous{font-size:1.05rem;color:var(--encre-doux);max-width:40ch;margin-top:14px}
.receau-zone{display:grid;grid-template-columns:1.05fr .95fr;gap:44px;align-items:start}
/* le reçu */
.recu{background:var(--papier);border-radius:18px;padding:40px 44px;position:relative;
  max-width:520px;margin:0 auto 56px;
  box-shadow:0 20px 50px rgba(27,91,63,.10), inset 0 1px 0 rgba(255,255,255,.7);
  transform:rotate(-1.2deg)}
.recu::before{content:"";position:absolute;inset:10px;border:1px dashed rgba(27,91,63,.18);border-radius:12px;pointer-events:none}
.recu .entete{text-align:center;margin-bottom:26px;padding-bottom:20px;border-bottom:2px dashed rgba(27,91,63,.2)}
.recu .entete .nom{font-family:var(--display);font-size:1.5rem;color:var(--vert-fonce)}
.recu .entete .sous{font-family:var(--label);font-size:.62rem;letter-spacing:.22em;text-transform:uppercase;color:var(--orange)}
.recu table{width:100%;border-collapse:collapse}
.recu td{font-family:var(--label);padding:9px 0;font-size:1rem;color:var(--encre);letter-spacing:.02em}
.recu td:nth-child(2){text-align:right;font-weight:500;color:var(--vert-fonce)}
.recu td.qte{color:var(--orange);font-weight:600}
.recu .separateur{border-bottom:1px dotted rgba(27,91,63,.25);margin:14px 0}
.recu .total{display:flex;justify-content:space-between;align-items:center;margin-top:14px}
.recu .total .lbl{font-family:var(--manuscrit);font-size:1.5rem;color:var(--orange);transform:rotate(-2deg)}
.recu .total .mt{font-family:var(--titre);font-size:2rem;color:var(--vert-fonce)}
.recu .tampon{position:absolute;bottom:22px;right:28px;font-family:var(--label);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--vert);border:2px solid var(--vert);border-radius:10px;padding:6px 14px;transform:rotate(8deg);opacity:.75}
/* le texte + CTA */
.panier-droite .manuscrit{font-family:var(--manuscrit);font-size:1.7rem;color:var(--vert);line-height:1.3;margin-bottom:18px}
.panier-droite p{color:var(--encre-doux);font-size:1.02rem;margin-bottom:14px}
.panier-droite .liste{margin:20px 0 28px;display:grid;gap:12px}
.panier-droite .liste .item{display:flex;align-items:center;gap:14px;padding:14px 18px;background:#fff;border:1px solid rgba(27,91,63,.12);border-radius:14px;transition:transform .25s var(--ease), box-shadow .25s var(--ease)}
.panier-droite .liste .item:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(27,91,63,.10)}
.panier-droite .liste .item .coche{width:22px;height:22px;border-radius:7px;border:2px solid var(--orange);display:inline-flex;align-items:center;justify-content:center;color:#fff;background:var(--orange);font-size:.8rem;flex-shrink:0}
.panier-droite .liste .item b{color:var(--vert-fonce)}

/* ============ SAISONS (timeline narrative) ============ */
.saisons{background:var(--vert-fonce);color:#fff;padding:110px 0;position:relative;overflow:hidden}
.saisons::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;
  background:radial-gradient(circle at 85% 15%, rgba(255,115,0,.18) 0%, transparent 45%)}
.saisons .tete{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:56px;flex-wrap:wrap}
.saisons h2{font-family:var(--titre);font-size:clamp(2rem,4.4vw,3.4rem);line-height:1.02;color:#fff;max-width:14ch}
.saisons .tete p{color:rgba(255,255,255,.72);max-width:36ch}
.saisons-liste{display:grid;grid-template-columns:repeat(4,1fr);gap:0;position:relative}
.saison{padding:30px 26px 30px 0;border-top:2px solid rgba(255,255,255,.2);position:relative;transition:background .3s}
.saison:hover{background:rgba(255,255,255,.04)}
.saison .mois{font-family:var(--label);font-size:.64rem;letter-spacing:.22em;text-transform:uppercase;color:#ffb45e}
.saison h3{font-family:var(--display);font-size:1.5rem;color:#fff;margin:8px 0 10px}
.saison .produits{font-family:var(--manuscrit);font-size:1.15rem;color:rgba(255,255,255,.85);line-height:1.5}

/* ============ OFFRES (asymétrique) ============ */
.offres{padding:110px 0}
.offres .grille{display:grid;grid-template-columns:1fr 1fr;gap:0}
.offre-carte{padding:54px 56px;position:relative;overflow:hidden;min-height:360px;display:flex;flex-direction:column;justify-content:flex-end;text-decoration:none}
.offre-carte.particuliers{background:var(--papier)}
.offre-carte.entreprises{background:var(--vert)}
.offre-carte .num{font-family:var(--manuscrit);font-size:1.4rem;color:var(--orange);margin-bottom:10px}
.offre-carte.entreprises .num{color:#ffb45e}
.offre-carte h3{font-family:var(--titre);font-size:2rem;line-height:1.05;margin-bottom:12px}
.offre-carte.particuliers h3{color:var(--vert-fonce)}
.offre-carte.entreprises h3{color:#fff}
.offre-carte p{color:var(--encre-doux);max-width:34ch;margin-bottom:20px}
.offre-carte.entreprises p{color:rgba(255,255,255,.78)}
.offre-carte .lien{font-family:var(--label);font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;font-weight:600;display:inline-flex;align-items:center;gap:8px;color:var(--orange);transition:gap .25s var(--ease)}
.offre-carte:hover .lien{gap:14px}
.offre-carte .ico-fond{position:absolute;top:-30px;right:-30px;font-size:11rem;opacity:.08;pointer-events:none;font-family:var(--display)}

/* ============ LA FERME (polaroids) ============ */
.ferme{padding:110px 0;background:var(--papier)}
.ferme-tete{max-width:640px;margin-bottom:54px}
.ferme-tete h2{font-family:var(--titre);font-size:clamp(2rem,4.4vw,3.4rem);color:var(--vert-fonce);line-height:1.02;margin-bottom:16px}
.ferme-tete p{color:var(--encre-doux);font-size:1.05rem}
.polaroids{display:flex;gap:26px;flex-wrap:wrap;justify-content:center}
.pol{background:#fff;padding:14px 14px 20px;box-shadow:0 16px 40px rgba(27,91,63,.12);border-radius:6px;transition:transform .3s var(--ease), box-shadow .3s var(--ease)}
.pol:hover{transform:rotate(-1deg) translateY(-6px);box-shadow:0 24px 50px rgba(27,91,63,.18)}
.pol img{width:230px;height:230px;object-fit:cover;border-radius:3px;display:block}
.pol figcaption{font-family:var(--manuscrit);font-size:1.1rem;color:var(--vert-fonce);text-align:center;margin-top:12px;transform:rotate(-1deg)}
.pol:nth-child(1){transform:rotate(-3deg)}
.pol:nth-child(2){transform:rotate(2deg)}
.pol:nth-child(3){transform:rotate(-1.5deg)}
.pol:nth-child(4){transform:rotate(2.5deg)}
.pol:nth-child(1):hover,.pol:nth-child(2):hover,.pol:nth-child(3):hover,.pol:nth-child(4):hover{transform:rotate(0) translateY(-6px)}

/* ============ AVIS (grande citation) ============ */
.avis{padding:130px 0;text-align:center}
.avis .guillemet{font-family:var(--titre);font-size:6rem;line-height:0;color:var(--orange);display:block;margin-bottom:34px}
.avis blockquote{font-family:var(--display);font-size:clamp(1.5rem,3.2vw,2.4rem);color:var(--vert-fonce);line-height:1.35;max-width:26ch;margin:0 auto}
.avis .auteur{margin-top:26px;font-family:var(--label);font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:var(--orange)}
.avis .etoiles{margin-top:12px;color:var(--orange);letter-spacing:6px;font-size:1.1rem}
.avis-titre{font-family:var(--titre);font-size:clamp(1.7rem,3.6vw,2.6rem);color:var(--vert-fonce);
  font-weight:400;margin:0 0 40px;line-height:1.15}

/* ============ AVIS GOOGLE (vrais avis, cache local) ============ */
.avis-google{margin-top:14px}
.avis-google__entete{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;margin-bottom:38px}
.avis-google__note{font-family:var(--titre);font-size:2.6rem;line-height:1;color:var(--vert-fonce)}
.avis-google__etoiles{color:var(--orange);letter-spacing:3px;font-size:1.35rem;line-height:1}
.avis-google__total{font-family:var(--label);font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--vert-fonce);opacity:.6}
.avis-google__liste{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;align-items:stretch}
.avis-google__item{background:#fff;border-radius:18px;padding:28px 26px;margin:0;text-align:left;
  box-shadow:var(--shadow);display:flex;flex-direction:column;gap:14px;
  transition:transform .28s cubic-bezier(.22,1,.36,1), box-shadow .28s, border-color .28s;
  border:1px solid transparent;position:relative;overflow:hidden}
/* Effet au survol : la carte se soulève, ombre plus profonde, liseré orange,
   et une barre de couleur apparaît en haut. */
.avis-google__item::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--orange),var(--vert));transform:scaleX(0);
  transform-origin:left;transition:transform .35s cubic-bezier(.22,1,.36,1)}
.avis-google__item:hover{transform:translateY(-8px);box-shadow:0 20px 44px rgba(27,91,63,.18);border-color:rgba(255,115,0,.22)}
.avis-google__item:hover::before{transform:scaleX(1)}
.avis-google__item:hover .avis-google__stars{transform:scale(1.08);transition:transform .28s}
.avis-google__stars{color:var(--orange);letter-spacing:2px;font-size:1rem;line-height:1;
  transition:transform .28s}
.avis-google__item blockquote{margin:0;max-width:none;font-family:var(--corps);font-size:1rem;
  line-height:1.65;color:var(--encre);flex:1;display:flex;align-items:center;text-align:left}
.avis-google__item blockquote::before{content:none}
.avis-google__item figcaption{display:flex;flex-direction:column;gap:3px;padding-top:14px;
  border-top:1px solid rgba(27,91,63,.10)}
.avis-google__item figcaption strong{font-family:var(--label);font-size:.8rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--vert-fonce);font-weight:600}
.avis-google__item figcaption span{font-family:var(--corps);font-size:.82rem;color:var(--vert-fonce);opacity:.6}
.avis-google__lien{display:inline-flex;align-items:center;gap:8px;margin-top:34px;
  font-family:var(--label);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--orange);text-decoration:none;border-bottom:1px solid rgba(255,115,0,.35);padding-bottom:3px;
  transition:border-color .2s,opacity .2s}
.avis-google__lien:hover{border-color:var(--orange);opacity:.8}

/* ============ CTA FINAL ============ */
.cta-final{padding:120px 0;text-align:center;position:relative;overflow:hidden;background:linear-gradient(180deg,var(--creme) 0%, #fbeedc 100%)}
.cta-final .manuscrit{font-family:var(--manuscrit);font-size:2rem;color:var(--vert);margin-bottom:16px}
.cta-final h2{font-family:var(--titre);font-size:clamp(2rem,5vw,3.6rem);color:var(--vert-fonce);line-height:1.04;margin-bottom:18px;max-width:18ch;margin-left:auto;margin-right:auto}
.cta-final p{color:var(--encre-doux);max-width:46ch;margin:0 auto 34px}

/* ============ FOOTER ============ */
footer{background:var(--vert-fonce);color:rgba(255,255,255,.7);padding:70px 0 0}
footer .haut{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:44px;padding-bottom:50px}
footer .brand .nom{color:#fff}
footer .brand .sous{color:#ffb45e}
footer .desc{margin-top:16px;font-size:.9rem;line-height:1.7;color:rgba(255,255,255,.6);max-width:34ch}
footer h4{font-family:var(--label);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:#fff;margin-bottom:18px}
footer a{display:block;color:rgba(255,255,255,.65);text-decoration:none;font-size:.9rem;padding:5px 0;transition:color .2s}
footer a:hover{color:#fff}
footer .adresse{font-family:var(--manuscrit);font-size:1.15rem;color:#ffb45e;line-height:1.5}
footer .bas{border-top:1px solid rgba(255,255,255,.14);padding:24px 0;text-align:center;font-size:.78rem;color:rgba(255,255,255,.45)}
footer .bas span{color:var(--orange)}

/* ============ CARTES PANIERS (3 cartes visuelles) ============ */
.paniers{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:44px}
.carte{background:var(--blanc);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;transition:transform .25s, box-shadow .25s}
.carte:hover{transform:translateY(-6px);box-shadow:0 14px 34px rgba(27,91,63,.16)}
.carte img{width:100%;height:190px;object-fit:cover}
.carte .corps{padding:24px;display:flex;flex-direction:column;flex:1}
.carte h3{font-family:var(--titre);font-size:1.3rem;color:var(--vert-fonce);margin-bottom:8px}
.carte p{color:var(--gris);font-size:.95rem;margin-bottom:16px;flex:1}
.carte .prix{font-family:var(--display);font-size:1.6rem;color:var(--orange);margin-bottom:16px}
.carte .btn{margin-top:auto;justify-content:center}
.ribbon{position:relative}
.ribbon .tag{position:absolute;top:14px;left:14px;background:var(--vert);color:#fff;font-family:var(--label);font-size:.68rem;letter-spacing:1.4px;text-transform:uppercase;padding:6px 12px;border-radius:8px;font-weight:600}

/* ============ REVEAL ============ */
.reveal{opacity:1;transform:none}
html.js .reveal{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease), transform .9s var(--ease)}
html.js .reveal.visible{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  html.js .reveal{opacity:1;transform:none;transition:none}
  .tournesol-rotatif{animation:none}
  html{scroll-behavior:auto}
}

/* ============ PAGES INTERNES (boutique, produit, panier) ============ */
.nav-spacer{height:120px}
.page-interne{padding:40px 0 90px;min-height:60vh}
.page-interne .wrap{max-width:1280px}

/* ====== FILTRE PAR CATÉGORIE ====== */
.filtre-categories{display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  margin:10px 0 32px;padding:16px 20px;background:var(--creme);
  border:1px solid rgba(27,91,63,.10);border-radius:16px}
.filtre-label{font-family:var(--label);font-size:.72rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--vert-fonce);opacity:.6;white-space:nowrap}
.filtre-liste{display:flex;gap:8px;flex-wrap:wrap}
.filtre-item{font-family:var(--label);font-size:.8rem;letter-spacing:.04em;
  padding:8px 16px;border-radius:999px;text-decoration:none;
  color:var(--vert-fonce);background:#fff;border:1px solid rgba(27,91,63,.16);
  transition:all .18s ease}
.filtre-item:hover{border-color:var(--orange);color:var(--orange)}
.filtre-item.actif{background:var(--orange);color:#fff;border-color:var(--orange)}
.filtre-item.actif:hover{color:#fff}

/* ============ WOOCOMMERCE - harmonisation palette ============ */
.woocommerce #contenu, .page-interne .woocommerce{font-family:var(--corps);color:var(--encre)}

/* Boutons */
.woocommerce #respond input#submit,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit.alt,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt{
  background:var(--orange);color:#fff;border-radius:14px;
  font-family:var(--label);letter-spacing:.08em;text-transform:uppercase;font-weight:600;
  padding:12px 22px;border:none;transition:background .2s, transform .2s;
}
.woocommerce #respond input#submit:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover{
  background:var(--orange-fonce);color:#fff;transform:translateY(-2px);
}

/* Prix */
.woocommerce .price, .woocommerce div.product p.price, .woocommerce div.product span.price{
  font-family:var(--titre);color:var(--orange) !important;font-size:1.5rem;
}

/* Titres produits */
.woocommerce ul.products li.product h2,
.woocommerce div.product .product_title{
  font-family:var(--titre);color:var(--vert-fonce);font-weight:400;
}
/* En-tête fiche produit : eyebrow catégorie + titre + prix mis en valeur */
.produit-eyebrow{display:inline-block;font-family:var(--label);font-size:.72rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--orange);background:rgba(255,115,0,.10);
  padding:5px 14px;border-radius:999px;margin-bottom:14px}
.woocommerce div.product .product_title{font-size:2.5rem;line-height:1.08;margin:0 0 18px;letter-spacing:-.01em}
.woocommerce div.product .summary > p.price,
.woocommerce div.product .summary .price{font-size:2rem;line-height:1;display:block;margin:0 0 22px;
  padding-bottom:22px;border-bottom:1px solid rgba(27,91,63,.12)}
.woocommerce div.product .woocommerce-product-details__short-description{
  font-family:var(--corps);font-size:1.05rem;line-height:1.7;color:var(--encre);
  opacity:.88;margin:0 0 24px;max-width:52ch}
/* Le H2 de la description courte (contenu SEO) : volontairement discret
   pour ne pas concurrencer visuellement le titre produit (H1) et ne pas
   repousser le bouton Ajouter au panier sous la ligne de flottaison. */
.woocommerce div.product .woocommerce-product-details__short-description h2{
  font-family:var(--label);font-size:.78rem;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;color:var(--orange);margin:18px 0 8px;line-height:1.4}
.woocommerce div.product .woocommerce-product-details__short-description p{
  margin:0 0 10px;font-size:.98rem;line-height:1.65}
.woocommerce div.product .woocommerce-product-details__short-description p:last-child{margin-bottom:0}
.woocommerce div.product form.cart{margin:0 0 22px;display:flex;gap:12px;align-items:stretch;flex-wrap:wrap}
/* Zone quantité : l'input doit remplir la même hauteur que le bouton
   (le conteneur .quantity est étiré par align-items:stretch, mais
   l'input interne garde sinon sa hauteur naturelle de 36px). */
/* Zone quantité : bordure unique sur le conteneur (garantit une bordure
   continue sur tout le pourtour, chevrons compris). L'input perd la sienne. */
.woocommerce div.product form.cart .quantity{
  height:auto;display:flex;float:none;margin:0;position:relative;
  border:1px solid rgba(27,91,63,.22);border-radius:14px;overflow:hidden;background:#fff;
}
.woocommerce div.product form.cart .quantity input.qty{
  height:100% !important;width:104px;text-align:center;box-sizing:border-box;
  margin:0 !important;padding:9px 38px 9px 14px;line-height:1;
  border:0 !important;border-radius:0 !important;background:transparent;box-shadow:none !important;
}
/* Masquer le spinner natif (remplacé par de vrais boutons) */
.woocommerce div.product form.cart .quantity input.qty::-webkit-outer-spin-button,
.woocommerce div.product form.cart .quantity input.qty::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}
.woocommerce div.product form.cart .quantity input.qty{-moz-appearance:textfield;appearance:textfield}
/* Boutons +/- : colonne pleine hauteur collée au bord droit */
.woocommerce div.product form.cart .qty-nav{
  position:absolute;top:0;right:0;height:100%;width:34px;
  display:flex;flex-direction:column;
  border-left:1px solid rgba(27,91,63,.18);background:#fff;
}
.woocommerce div.product form.cart .qty-nav .qty-btn{
  flex:1 1 50%;display:flex;align-items:center;justify-content:center;
  background:#fff;border:0;padding:0;margin:0;cursor:pointer;color:var(--vert-fonce);
  transition:background .15s,color .15s;line-height:0;
}
.woocommerce div.product form.cart .qty-nav .qty-btn svg{width:10px;height:6px;display:block}
.woocommerce div.product form.cart .qty-nav .qty-btn:hover{background:var(--orange);color:#fff}
.woocommerce div.product form.cart .qty-nav .qty-plus{border-bottom:1px solid rgba(27,91,63,.18)}
/* Produits VARIABLES : WooCommerce enveloppe quantité + bouton dans
   .woocommerce-variation-add-to-cart -> c'est ce wrapper qu'il faut
   passer en flex étiré, sinon l'input reste à sa hauteur naturelle. */
.woocommerce div.product form.cart .woocommerce-variation-add-to-cart{
  display:flex;gap:12px;align-items:stretch;flex-wrap:wrap;width:100%
}
.woocommerce div.product form.cart .woocommerce-variation-add-to-cart .quantity{height:auto;display:flex;float:none;margin:0}
.woocommerce div.product form.cart .button.single_add_to_cart_button{padding:14px 30px;border-radius:14px;flex:1;min-width:200px}
.woocommerce div.product .product_meta{font-family:var(--label);font-size:.74rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--vert-fonce);opacity:.65;padding-top:18px;
  border-top:1px solid rgba(27,91,63,.10)}
.woocommerce div.product .product_meta a{color:var(--vert-fonce);text-decoration:none;border-bottom:1px solid rgba(27,91,63,.3)}
.woocommerce div.product .product_meta a:hover{color:var(--orange);border-color:var(--orange)}

/* Cartes produits (grille boutique) */
.woocommerce ul.products li.product{
  background:#fff;border-radius:18px;overflow:hidden;
  box-shadow:var(--shadow);transition:transform .25s, box-shadow .25s;
  padding:0 0 18px;text-align:left;
}
.woocommerce ul.products li.product:hover{transform:translateY(-5px);box-shadow:0 14px 34px rgba(27,91,63,.16)}
.woocommerce ul.products li.product a img{margin:0}
.woocommerce ul.products li.product .woocommerce-loop-product__title{
  font-family:var(--titre);color:var(--vert-fonce);font-size:1.05rem;padding:14px 16px 0;font-weight:400;
}
.woocommerce ul.products li.product .price{color:var(--orange);font-family:var(--titre);padding:4px 16px;font-size:1.1rem}
.woocommerce ul.products li.product .button{padding:9px 16px;margin:10px 16px 0}

/* Fiche produit : image + résumé en 2 colonnes */
.woocommerce div.product{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;align-items:start}
/* Neutraliser le float + width:48% du CSS WooCommerce par défaut
   (spécificité div.images / div.summary supérieure à .summary). */
.woocommerce div.product div.images,
.woocommerce div.product div.summary{width:100% !important;float:none !important;margin:0}
.woocommerce div.product .woocommerce-product-gallery{opacity:1 !important;width:100%;float:none}
.woocommerce div.product .woocommerce-product-gallery .woocommerce-product-gallery__wrapper{margin:0}
.woocommerce div.product .woocommerce-product-gallery__image img{width:100%;height:auto;border-radius:18px;display:block}

/* Cadre image CARRÉ (contrainte d'affichage, non destructive).
   Les photos du catalogue ont des ratios varies : certaines sont en
   portrait (ex. ail sec 281x500 -> 1005px de haut sur 565px de large),
   d'autres en paysage. On contraint donc l'affichage dans un carre, en
   conservant l'INTEGRALITE de la photo (contain, pas de recadrage).
   Le fond reprend la creme de la charte pour rester discret. */
.woocommerce div.product .woocommerce-product-gallery__wrapper,
.woocommerce div.product .woocommerce-product-gallery__image,
.woocommerce div.product .woocommerce-product-gallery__image a{
  display:block;width:100%}
.woocommerce div.product .woocommerce-product-gallery__image{
  border-radius:18px;overflow:hidden;background:var(--creme)}
.woocommerce div.product .woocommerce-product-gallery__image img{
  aspect-ratio:1/1;object-fit:contain;width:100%;height:auto;display:block}
/* Vignettes de la galerie : meme traitement */
.woocommerce div.product .flex-control-thumbs li img{
  aspect-ratio:1/1;object-fit:contain;background:var(--creme);border-radius:8px}
.woocommerce div.product .summary{font-family:var(--corps)}
.woocommerce div.product form.cart .variations label{font-family:var(--label);letter-spacing:.06em;text-transform:uppercase;font-size:.8rem;color:var(--vert-fonce)}
.woocommerce div.product form.cart .variations select,
.woocommerce div.product form.cart .quantity input{
  border:1px solid rgba(27,91,63,.25);border-radius:10px;padding:9px 12px;font-family:var(--corps);
}
.woocommerce div.product form.cart .button.single_add_to_cart_button{background:var(--orange)}
.woocommerce div.product form.cart .button.single_add_to_cart_button:hover{background:var(--orange-fonce)}

/* Onglets fiche produit.
   IMPORTANT : .woocommerce div.product est en display:grid 2 colonnes
   (galerie | résumé). Sans grid-column:1/-1, les onglets restent
   enfermés dans UNE seule colonne (565px au lieu des 1178px utiles).
   Même logique pour les produits similaires / upsells, qui sont eux
   aussi des enfants directs de la grille. */
.woocommerce div.product .woocommerce-tabs,
.woocommerce div.product .related,
.woocommerce div.product .upsells,
.woocommerce div.product .wc-tabs-wrapper{grid-column:1/-1;width:100%;clear:both}
.woocommerce div.product .woocommerce-tabs ul.tabs{padding:0;margin:0 0 26px;border-bottom:1px solid rgba(27,91,63,.12)}
.woocommerce div.product .woocommerce-tabs ul.tabs::before{border-bottom:0}
.woocommerce div.product .woocommerce-tabs ul.tabs li{background:transparent;border:0;border-radius:0;margin:0 26px 0 0;padding:0}
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after{display:none}
.woocommerce div.product .woocommerce-tabs ul.tabs li a{
  font-family:var(--label);letter-spacing:.1em;text-transform:uppercase;font-size:.82rem;
  color:var(--vert-fonce);opacity:.55;padding:0 0 14px;border-bottom:2px solid transparent;
  transition:opacity .2s,border-color .2s,color .2s;font-weight:600}
.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover{opacity:.85}
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{
  color:var(--orange);opacity:1;border-bottom-color:var(--orange)}
.woocommerce div.product .woocommerce-tabs .panel{
  background:#fff;border-radius:18px;padding:34px 38px;box-shadow:var(--shadow);
  font-family:var(--corps);color:var(--encre);margin:0}

/* Hierarchie du contenu SEO de l'onglet Description.
   H2 = sections principales (3 par fiche), H3 = sous-sections (6 par fiche).
   NOTE : le titre par defaut ajoute par WooCommerce est retire a la SOURCE
   (filtre PHP woocommerce_product_description_heading), pas masque en CSS. */
.woocommerce div.product .woocommerce-tabs .panel h2{
  font-family:var(--titre);font-size:1.55rem;font-weight:400;color:var(--vert-fonce);
  margin:34px 0 14px;padding-bottom:10px;line-height:1.25;
  border-bottom:1px solid rgba(27,91,63,.12)}
.woocommerce div.product .woocommerce-tabs .panel h2:first-child{margin-top:0}
.woocommerce div.product .woocommerce-tabs .panel h3{
  font-family:var(--label);font-size:1rem;font-weight:600;letter-spacing:.02em;
  color:var(--orange);margin:22px 0 8px;line-height:1.35}
.woocommerce div.product .woocommerce-tabs .panel h3::before{
  content:"";display:inline-block;width:8px;height:8px;border-radius:50%;
  background:var(--orange);margin:0 10px 2px 0;vertical-align:middle}
.woocommerce div.product .woocommerce-tabs .panel a{color:var(--vert-fonce);font-weight:600;
  text-decoration:underline;text-decoration-color:var(--orange);text-underline-offset:3px}
.woocommerce div.product .woocommerce-tabs .panel a:hover{color:var(--orange)}
.woocommerce div.product .woocommerce-tabs .panel strong{color:var(--vert-fonce)}

/* Liste de composition (paniers) : rendu propre */
.woocommerce div.product .woocommerce-tabs .panel ul.lfd-liste,
.woocommerce div.product .woocommerce-tabs .panel ul{
  list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px 26px}
.woocommerce div.product .woocommerce-tabs .panel ul.lfd-liste li,
.woocommerce div.product .woocommerce-tabs .panel ul li{
  position:relative;padding:11px 0 11px 24px;margin:0;
  border-bottom:1px solid rgba(27,91,63,.09);
  font-family:var(--corps);font-size:1rem;line-height:1.5;color:var(--encre)}
.woocommerce div.product .woocommerce-tabs .panel ul.lfd-liste li::before,
.woocommerce div.product .woocommerce-tabs .panel ul li::before{
  content:"";position:absolute;left:2px;top:16px;width:7px;height:7px;
  border-radius:50%;background:var(--orange)}
.woocommerce div.product .woocommerce-tabs .panel p{margin:0 0 14px;line-height:1.75}
.woocommerce div.product .woocommerce-tabs .panel p:last-child{margin-bottom:0}

/* Tableaux (panier, checkout) */
.woocommerce table.shop_table{border-collapse:collapse;background:#fff;border-radius:14px;overflow:hidden}
.woocommerce table.shop_table th{background:var(--vert-fonce);color:#fff;font-family:var(--label);letter-spacing:.06em;text-transform:uppercase;font-size:.8rem;padding:14px 16px}
.woocommerce table.shop_table td{padding:14px 16px;border-bottom:1px solid rgba(27,91,63,.08)}
.woocommerce table.shop_table .product-name a{color:var(--vert-fonce);text-decoration:none}

/* Formulaires (checkout, mon compte) */
.woocommerce form .form-row label{font-family:var(--label);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--vert-fonce);margin-bottom:6px;display:block}
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce .select2-container .select2-selection--single{
  border:1px solid rgba(27,91,63,.22);border-radius:12px;padding:11px 14px;
  font-family:var(--corps);font-size:.95rem;background:#fff;height:auto;line-height:1.4;
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus{border-color:var(--orange);outline:none;box-shadow:0 0 0 3px rgba(255,115,0,.12)}
.woocommerce form .form-row .required{color:var(--orange)}
.woocommerce .select2-container .select2-selection--single .select2-selection__rendered{padding:0;line-height:1.4}
.woocommerce .select2-container .select2-selection--single .select2-selection__arrow{top:8px;right:8px}

/* Récapitulatif commande (checkout) */
.woocommerce-checkout #order_review{background:var(--creme);border-radius:18px;padding:26px 28px}
.woocommerce-checkout #order_review_heading{font-family:var(--titre);color:var(--vert-fonce)}
.woocommerce-checkout #order_review table.shop_table{border-radius:12px}
.woocommerce-checkout #payment{background:transparent;border-radius:14px}
.woocommerce-checkout #payment ul.payment_methods{border-bottom:1px solid rgba(27,91,63,.12);padding:0 0 14px}
.woocommerce-checkout #payment div.form-row{padding:14px 0 0}

/* Notices / messages */
.woocommerce-message, .woocommerce-info, .woocommerce-error{
  border-radius:14px;border:none;background:#f7f2e9;
  border-left:4px solid var(--orange) !important;color:var(--encre);
  font-family:var(--corps);
}

/* Badge promo / vente */
.woocommerce span.onsale{background:var(--vert);border-radius:8px;font-family:var(--label);text-transform:uppercase;letter-spacing:.05em;padding:6px 12px;min-width:auto;line-height:1.4}

/* ============ RESPONSIVE ============ */
@media(max-width:900px){
  .nav-liens{display:none}
  .panier-tete,.receau-zone,.offres .grille{grid-template-columns:1fr}
  .paniers{grid-template-columns:1fr 1fr}
  .hero-grid{grid-template-columns:1fr}
  .hero .visuel-tournesol{justify-self:center;margin-top:10px}
  .hero .visuel-tournesol img{width:200px;height:200px}
  .saisons-liste{grid-template-columns:1fr 1fr}
  footer .haut{grid-template-columns:1fr 1fr}
  .hero .ligne{flex-direction:column;align-items:flex-start}
  .hero .note-manuscrite{text-align:left}
  .recu{transform:none}
  .woocommerce div.product{grid-template-columns:1fr;gap:28px}
}
@media(max-width:560px){
  .paniers,.saisons-liste,footer .haut{grid-template-columns:1fr}
  .offre-carte{padding:40px 34px}
  .recu{padding:30px 26px}
  .pol img{width:180px;height:180px}
}
