:root{
  --paper: #FAF7F1;
  --card: #F1EAD9;
  --ink: #2A2622;
  --ink-soft: #4A453F;
  --olive: #607244;
  --olive-dark: #3E4A29;
  --ochre: #A9823D;
  --line: #D9CBB8;

  --bs-body-font-family: "Montserrat", Arial, sans-serif;
  --bs-body-bg: var(--paper);
  --bs-body-color: var(--ink);
  --bs-link-color: var(--olive);
  --bs-link-hover-color: var(--olive-dark);
  --bs-border-radius: 10px;
  --bs-border-radius-lg: 14px;
  --bs-border-radius-xl: 16px;
}

html{ font-size: 112.5%; scroll-behavior: smooth; }
body{ line-height: 1.65; }

h1,h2,h3,.navbar-brand{
  font-family: "Playfair Display", Georgia, serif;
  font-weight: 600;
  color: var(--ink);
}

a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible{
  outline: 3px solid #1E63C8;
  outline-offset: 3px;
}

.skip-link{
  position:absolute; left:-999px; top:0;
  background: var(--olive); color:#fff; padding: 12px 20px; z-index:1000;
  border-radius: 0 0 8px 0;
}
.skip-link:focus{ left: 0; top: 0; }

.eyebrow{
  font-size: .85rem;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--ochre);
  margin-bottom: .5rem;
}
.eyebrow-light{ color: #D9E2C6; }

/* ---------- Boutons ---------- */
.btn{ font-weight: 700; }
.btn-olive{ background: var(--olive); border-color: var(--olive); color:#FFF9F2; }
.btn-olive:hover, .btn-olive:focus{ background: var(--olive-dark); border-color: var(--olive-dark); color:#FFF9F2; }
.btn-outline-ink{ border-color: var(--ink); color: var(--ink); border-width:2px; }
.btn-outline-ink:hover{ background: var(--ink); color: var(--paper); }
.btn-cream{ background:#FBF9F4; color: var(--ink); }
.btn-cream:hover{ background:#fff; color: var(--ink); }

/* ---------- Ligne généalogique (élément signature) ---------- */
.lineage-divider{
  position: relative;
  width: 100%;
  height: 34px;
}
.lineage-divider::before{
  content: "";
  position: absolute;
  left: 0; right: 0; top: 50%;
  height: 1px;
  background: var(--line);
}
.lineage-divider .dot{
  position: absolute;
  top: 50%;
  width: 10px; height: 10px;
  border-radius: 50%;
  transform: translate(-50%, -50%);
}

/* ---------- Navbar ---------- */
.navbar-cgdp{ background: var(--olive); }
.navbar-cgdp .navbar-brand{
  color: #FBF9F4;
  display:flex; align-items:center; gap:.75rem;
}
.logo-icon{ height: 100px; width: auto; }
.custom-logo{ height: 100px; width: auto; }
.navbar-cgdp .custom-logo-link{ display:flex; align-items:center; }
.brand-text-block{ line-height:1.2; }
.brand-text-block .brand-name{ font-size:1.3rem; font-weight:600; }
.brand-text-block small{
  display:block; font-family:"Montserrat",sans-serif; font-size:.72rem;
  font-weight:400; color:#D9E2C6; letter-spacing:.06em; text-transform:uppercase;
}
.navbar-cgdp .nav-link{ color:#FBF9F4 !important; font-weight:700; }
.navbar-cgdp .nav-link:hover{ background: var(--olive-dark); border-radius: 8px; }

/* Empêche le menu de casser sur 2 lignes en desktop : au lieu de ça,
   le texte et les espacements rétrécissent progressivement pour tenir
   sur une seule ligne, quelle que soit la largeur d'écran disponible. */
@media (min-width: 992px){
  .navbar-cgdp .navbar-nav{
    flex-wrap: nowrap;
  }
  .navbar-cgdp .nav-link{
    font-size: clamp(0.78rem, 1vw, 1rem);
    white-space: nowrap;
    padding-left: clamp(0.4rem, 0.8vw, 1rem) !important;
    padding-right: clamp(0.4rem, 0.8vw, 1rem) !important;
  }
  .navbar-cgdp .brand-text-block .brand-name{
    font-size: clamp(0.95rem, 1vw, 1.3rem);
  }
  .logo-icon, .custom-logo{
    height: clamp(60px, 6vw, 100px);
  }
}

/* ---------- Sous-menus (items enfants dans Apparence > Menus) ---------- */
.navbar-cgdp .menu-item-has-children{ position: relative; }

.navbar-cgdp .menu-item-has-children > a.nav-link::after{
  content: "";
  display: inline-block;
  margin-left: .4em;
  vertical-align: .15em;
  border-top: .32em solid;
  border-right: .32em solid transparent;
  border-left: .32em solid transparent;
}

.navbar-cgdp .sub-menu{
  list-style: none;
  margin: 0;
  padding: .5rem 0;
}

@media (min-width: 992px){
  .navbar-cgdp .sub-menu{
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 240px;
    background: var(--olive-dark);
    border-radius: 0 0 10px 10px;
    box-shadow: 0 10px 20px rgba(0,0,0,.18);
    z-index: 1000;
  }
  .navbar-cgdp .menu-item-has-children:hover > .sub-menu,
  .navbar-cgdp .menu-item-has-children:focus-within > .sub-menu{
    display: block;
  }
  .navbar-cgdp .sub-menu .nav-link{
    white-space: nowrap;
    padding: .55rem 1.25rem;
  }
  .navbar-cgdp .sub-menu .sub-menu{
    top: 0;
    left: 100%;
  }
}

@media (max-width: 991.98px){
  .navbar-cgdp .sub-menu{
    display: none;
    padding-left: 1.25rem;
    border-left: 2px solid rgba(255,255,255,.25);
    margin-left: .75rem;
  }
  .navbar-cgdp .sub-menu.is-open{
    display: block;
  }
  .navbar-cgdp .menu-item-has-children > a.nav-link{
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
  .navbar-cgdp .menu-item-has-children > a.nav-link::after{
    margin-left: .5rem;
    transition: transform .15s ease-in-out;
  }
  .navbar-cgdp .menu-item-has-children > a.nav-link[aria-expanded="true"]::after{
    transform: rotate(180deg);
  }
}

/* ---------- Hero ---------- */
.hero-lede{ font-size: 1.15rem; color: var(--ink-soft); max-width: 46ch; }
.hero-tree-card{
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--bs-border-radius-lg);
}
.hero-tree-card svg{ width: 100%; max-width: 320px; height:auto; }

/* ---------- Accès direct aux relevés ---------- */
.records-band{
  background: var(--olive);
  border-radius: var(--bs-border-radius-xl);
}
.records-band p, .records-band h2{ color:#FBF9F4; }
.records-band .lead-text{ color:#EDF1E2; max-width: 44ch; }
.records-illustration svg{ width: 150px; height:auto; }
.records-illustration p{ color:#EDF1E2; font-size:.9rem; max-width:22ch; }

.records-info-card{
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--bs-border-radius-lg);
}
.records-info-card ul{ padding-left: 1.1rem; }
.records-info-card li{ color: var(--ink-soft); margin-bottom: .4rem; }
.records-info-card p{ color: var(--ink-soft); }
.records-info-note{
  font-size: .85rem !important;
  font-weight: 700;
  color: var(--olive) !important;
}

/* ---------- Section head générique ---------- */
.section-head{ max-width: 62ch; }
.section-head p{ color: var(--ink-soft); font-size: 1.05rem; }

/* ---------- Chiffres clés ---------- */
.stat-card{
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--bs-border-radius-lg);
}
.stat-card .num{
  font-family:"Playfair Display", serif;
  font-size: 2.1rem;
  font-weight:600;
  color: var(--olive);
}
.stat-card .label{ color: var(--ink-soft); }

/* ---------- Activités ---------- */
.services-section{ background: var(--card); }
.service-card{
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--bs-border-radius-lg);
}
.service-card--link{
  color: inherit;
  text-decoration: none !important;
  transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out, transform .15s ease-in-out;
}
.service-card--link:hover, .service-card--link:focus{
  color: inherit;
  border-color: var(--olive);
  box-shadow: 0 8px 20px rgba(62,74,41,.12);
  transform: translateY(-2px);
}
.service-icon{
  width: 52px; height:52px; flex-shrink:0;
  border-radius: 50%;
  background: var(--olive);
  display:flex; align-items:center; justify-content:center;
}
.service-icon svg{ width:26px; height:26px; stroke:#FFF9F2; }
.service-icon i{ font-size: 26px; color: #FFF9F2; line-height: 1; }
.service-card p{ color: var(--ink-soft); }

/* ---------- Actualités ---------- */
.news-card{
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--bs-border-radius-lg);
}
.news-thumb{
  width: 48px; height:48px; border-radius:50%;
  background: var(--olive);
  display:flex; align-items:center; justify-content:center;
  overflow:hidden;
}
.news-thumb svg{ width:24px; height:24px; stroke:#FBF9F4; }
.news-thumb img{ width:100%; height:100%; object-fit:cover; }
.news-date{
  font-size:.8rem; font-weight:700; letter-spacing:.04em;
  text-transform:uppercase; color: var(--ochre);
}
.news-card p{ color: var(--ink-soft); }
.news-card a{ font-weight:700; text-decoration:none; }
.news-card a:hover{ text-decoration:underline; }

/* ---------- Événements ---------- */
.event-row{ border-bottom:1px solid var(--line); }
.event-row:first-child{ border-top:1px solid var(--line); }
.event-date{
  background: var(--ochre);
  color:#FBF8F1;
  border-radius: 10px;
  min-width: 84px;
  text-align:center;
}
.event-date .day{ font-family:"Playfair Display",serif; font-size:1.5rem; font-weight:600; line-height:1; display:block; }
.event-date .month{ font-size:.78rem; text-transform:uppercase; letter-spacing:.05em; }
.event-row p{ color: var(--ink-soft); margin-bottom:0; }

/* ---------- Témoignages ---------- */
.testimonial-quote{
  background: var(--card);
  border-left: 5px solid var(--olive);
  border-radius: 4px 14px 14px 4px;
}
.testimonial-quote p{
  font-family:"Playfair Display", serif;
  font-size: 1.25rem;
  font-weight:500;
  font-style: italic;
}
.testimonial-quote cite{ font-style:normal; color: var(--ink-soft); font-size:.9rem; }

/* ---------- Contact / adhésion ---------- */
.contact-section{ background: var(--ink); color: var(--paper); }
.contact-section .section-head p{ color:#D8D2C7; }
.contact-section h3{ color: var(--paper); }
.contact-item svg{ width:26px; height:26px; stroke:#D8D2C7; flex-shrink:0; }
.contact-item a{ color: var(--paper); font-weight:700; text-decoration: underline; }
.contact-item .sub{ color:#C9C2B5; font-size:.85rem; display:block; }

.join-card{ background:#3A342C; border-radius: var(--bs-border-radius-lg); }
.join-card p{ color:#FFFFFF; }

footer.site-footer{ color: var(--ink-soft); font-size:.85rem; }
footer.site-footer a{ color: var(--ink-soft); }

/* ---------- Bouton du bloc natif WordPress "Fichier" (téléchargement) ---------- */
.wp-block-file__button.wp-element-button{
  background: var(--olive);
  color: #FFF9F2;
  border: none;
  border-radius: var(--bs-border-radius, 10px);
  padding: .6rem 1.5rem;
  font-family: "Montserrat", Arial, sans-serif;
  font-weight: 700;
  text-decoration: none;
  display: inline-block;
  transition: background-color .15s ease-in-out;
}
.wp-block-file__button.wp-element-button:hover,
.wp-block-file__button.wp-element-button:focus{
  background: var(--olive-dark);
  color: #FFF9F2;
}
.page-content a,
.entry-content a{
  color: var(--olive-dark);
  font-weight: 700;
  text-decoration: underline;
}
.page-content a:hover, .page-content a:focus,
.entry-content a:hover, .entry-content a:focus{
  color: var(--olive);
}

/* ---------- Frise chronologique (ex: historique des expositions) ---------- */
.expo-timeline{
  position: relative;
  max-width: 720px;
  margin: 2rem 0;
  padding-left: 2rem;
  list-style: none;
}
.expo-timeline::before{
  content: "";
  position: absolute;
  left: 9px;
  top: 6px;
  bottom: 6px;
  width: 2px;
  background: var(--line);
}
.expo-timeline__item{
  position: relative;
  padding-bottom: 1.75rem;
}
.expo-timeline__item:last-child{ padding-bottom: 0; }
.expo-timeline__item::before{
  content: "";
  position: absolute;
  left: -2rem;
  top: 2px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--olive);
  border: 3px solid var(--paper);
  box-shadow: 0 0 0 1px var(--olive);
}
.expo-timeline__item--vide::before{
  background: var(--line);
  box-shadow: 0 0 0 1px var(--line);
}
.expo-timeline__year{
  font-family: "Playfair Display", Georgia, serif;
  font-weight: 700;
  font-size: 1.2rem;
  color: var(--ochre);
}
.expo-timeline__theme{
  font-weight: 700;
  color: var(--ink);
  margin: .15rem 0 0;
}
.expo-timeline__meta{
  font-size: .88rem;
  color: var(--ink-soft);
  margin: .3rem 0 0;
}

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
}

/* ---------- Bloc natif WordPress "Tableau", style "Rayures" ---------- */
.wp-block-table.is-style-stripes{
  border-bottom: 1px solid var(--card);
}
.wp-block-table.is-style-stripes tbody tr:nth-child(odd){
  background-color: var(--card);
}

/* ---------- Formulaire Contact Form 7 (section "Nous rejoindre") ---------- */
.contact-form-wrap{
  width: 100%;
  max-width: 100%;
}
.contact-form-wrap .wpcf7-form p{ margin-bottom: 1.1rem; }
.contact-form-wrap .wpcf7-form label{
  display: block;
  color: var(--ink);
  font-weight: 700;
  font-size: .95rem;
}
.contact-form-wrap .wpcf7-form-control-wrap{
  display: block !important;
  width: 100% !important;
  margin-top: .4rem;
}
.contact-form-wrap input.wpcf7-form-control,
.contact-form-wrap textarea.wpcf7-form-control,
.contact-form-wrap select.wpcf7-form-control{
  box-sizing: border-box;
  width: 100% !important;
  min-width: 0 !important;
  background: #FFFFFF;
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: var(--bs-border-radius, 10px);
  padding: .65rem .9rem;
  font-family: "Montserrat", Arial, sans-serif;
  font-size: 1rem;
}
.contact-form-wrap select.wpcf7-form-control{
  cursor: pointer;
}
.contact-form-wrap textarea.wpcf7-form-control{
  min-height: 140px;
  resize: vertical;
}
.contact-form-wrap input.wpcf7-form-control:focus,
.contact-form-wrap textarea.wpcf7-form-control:focus,
.contact-form-wrap select.wpcf7-form-control:focus{
  outline: none;
  border-color: var(--olive);
  box-shadow: 0 0 0 3px rgba(96,114,68,.3);
}
.contact-form-wrap input.wpcf7-form-control.wpcf7-not-valid{
  border-color: #C0392B;
}
.contact-form-wrap .wpcf7-not-valid-tip{
  display: block;
  color: #E8A798;
  font-size: .85rem;
  margin-top: .3rem;
}
.contact-form-wrap input.wpcf7-submit{
  background: var(--olive);
  color: #FFF9F2;
  border: none;
  font-weight: 700;
  padding: .7rem 2.2rem;
  border-radius: var(--bs-border-radius, 10px);
  cursor: pointer;
  transition: background-color .15s ease-in-out;
}
.contact-form-wrap input.wpcf7-submit:hover,
.contact-form-wrap input.wpcf7-submit:focus{
  background: var(--olive-dark);
}
.contact-form-wrap .wpcf7-spinner{ margin-left: .75rem; }
.contact-form-wrap .wpcf7-response-output{
  margin-top: 1.5rem;
  padding: .75rem 1rem;
  border-radius: var(--bs-border-radius, 10px);
  font-weight: 700;
  border: none !important;
}
.contact-form-wrap .wpcf7-form.sent .wpcf7-response-output{
  background: var(--olive);
  color: #FFF9F2;
}
.contact-form-wrap .wpcf7-form.invalid .wpcf7-response-output,
.contact-form-wrap .wpcf7-form.failed .wpcf7-response-output,
.contact-form-wrap .wpcf7-form.aborted .wpcf7-response-output,
.contact-form-wrap .wpcf7-form.spam .wpcf7-response-output{
  background: #C0392B;
  color: #FFF9F2;
}

/* ---------- Badge de catégorie (liste d'actualités + article complet) ---------- */
.badge-cat{
  display: inline-block;
  background: var(--ochre);
  color: #FFF9F2;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  padding: .3rem .75rem;
  border-radius: 999px;
  text-decoration: none;
  transition: opacity .15s ease-in-out;
}
a.badge-cat:hover, a.badge-cat:focus{
  color: #FFF9F2;
  opacity: .85;
}
.badge-cat--olive{ background: var(--olive); }
.badge-cat--ochre{ background: var(--ochre); }

/* ---------- Métadonnées d'un article complet (single.php) ---------- */
.article-meta{
  color: var(--ink-soft);
  font-size: .9rem;
}
.article-meta__sep{
  margin: 0 .5rem;
  color: var(--line);
}

/* ---------- Formulaire de filtre (page "Toutes les actualités") ---------- */
.filter-form select.form-select{
  background-color: var(--paper);
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: var(--bs-border-radius, 10px);
  padding: .5rem 2rem .5rem .9rem;
}
.filter-form select.form-select:focus{
  border-color: var(--olive);
  box-shadow: 0 0 0 3px rgba(96,114,68,.3);
}
.btn-reset-filtre{
  display: inline-flex;
  align-items: center;
  background: transparent;
  color: var(--olive-dark);
  border: 1px solid var(--olive);
  border-radius: var(--bs-border-radius, 10px);
  padding: .5rem 1rem;
  font-weight: 700;
  font-size: .9rem;
  text-decoration: none;
  transition: background-color .15s ease-in-out, color .15s ease-in-out;
}
.btn-reset-filtre:hover, .btn-reset-filtre:focus{
  background: var(--olive);
  color: #FFF9F2;
}

/* ---------- Pagination (page "Toutes les actualités") ---------- */
.page-numbers{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 .6rem;
  margin-right: .4rem;
  border-radius: var(--bs-border-radius, 10px);
  border: 1px solid var(--line);
  color: var(--ink);
  text-decoration: none;
  font-weight: 700;
}
.page-numbers.current{
  background: var(--olive);
  border-color: var(--olive);
  color: #FFF9F2;
}
.page-numbers:not(.current):not(.dots):hover{
  background: var(--card);
}
.page-numbers.dots{ border: none; }

/* ---------- Bloc natif WordPress "Boutons" ---------- */
.wp-block-button__link{
  background: var(--olive);
  color: #FFF9F2 !important;
  border: 2px solid var(--olive);
  border-radius: var(--bs-border-radius, 10px);
  padding: .65rem 1.75rem;
  font-family: "Montserrat", Arial, sans-serif;
  font-weight: 700;
  text-decoration: none !important;
  transition: background-color .15s ease-in-out, color .15s ease-in-out;
}
.wp-block-button__link:hover,
.wp-block-button__link:focus{
  background: var(--olive-dark);
  border-color: var(--olive-dark);
  color: #FFF9F2 !important;
}
/* Style "Contour" du bloc (choix disponible dans les réglages du bloc) */
.wp-block-button.is-style-outline .wp-block-button__link{
  background: transparent;
  color: var(--ink) !important;
  border-color: var(--ink);
}
.wp-block-button.is-style-outline .wp-block-button__link:hover,
.wp-block-button.is-style-outline .wp-block-button__link:focus{
  background: var(--ink);
  color: var(--paper) !important;
}