*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--gl-bg);
  color: var(--gl-text);
  font-family: var(--gl-font-body);
  font-size: var(--gl-fs-body);
  font-weight: 400;
  line-height: var(--gl-lh-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}

body.is-locked { overflow: hidden; }

h1, h2, h3, h4, h5, h6 {
  margin: 0 0 0.6em;
  font-family: var(--gl-font-head);
  font-weight: 300;
  line-height: var(--gl-lh-head);
  color: var(--gl-text-dark);
  letter-spacing: 0;
}

h1 { font-size: var(--gl-fs-h1); }
h2 { font-size: var(--gl-fs-h2); }
h3 { font-size: var(--gl-fs-h3); line-height: 1.09; }
h4 { font-size: var(--gl-fs-h4); line-height: 1.2; }
h5 { font-size: var(--gl-fs-h5); line-height: 1; }
h6 { font-size: var(--gl-fs-h6); line-height: 1.47; }

p { margin: 0 0 1.5em; }
p:last-child { margin-bottom: 0; }

a { color: var(--gl-link); text-decoration: none; transition: color var(--gl-dur) var(--gl-ease); }
a:hover, a:focus-visible { color: var(--gl-link-hover); }

img, svg, video { max-width: 100%; height: auto; display: block; }

ul, ol { margin: 0 0 1.5em; padding-left: 1.2em; }
li { margin-bottom: 0.4em; }

blockquote { margin: 0; }

button { font: inherit; color: inherit; }

hr { border: 0; border-top: 1px solid var(--gl-bd); margin: var(--gl-gap) 0; }

:focus-visible { outline: 2px solid var(--gl-link-hover); outline-offset: 3px; }

.screen-reader-text {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip-path: inset(50%);
  white-space: nowrap; border: 0;
}

.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 999;
  padding: 0.75rem 1.25rem; background: var(--gl-text-dark); color: #fff;
}
.skip-link:focus { left: 0; color: #fff; }

/* --- Mise en page --- */

.container {
  width: 100%;
  max-width: var(--gl-container);
  margin-inline: auto;
  padding-inline: var(--gl-gutter);
}

.container--narrow { max-width: 56rem; }

.section { padding-block: var(--gl-section-y); }
.section--tight { padding-block: calc(var(--gl-section-y) * 0.6); }
.section--flush-top { padding-top: 0; }
.section--flush-bottom { padding-bottom: 0; }
.section--soft { background: var(--gl-bg-soft); }
.section--white { background: var(--gl-bg-alt); }

.has-bg-white { background: var(--gl-bg-alt); }
.has-bg-grey  { background: #f5f5f5; }
.has-bg-tint  { background: var(--gl-bg-tint); }

.section-spacer { height: clamp(2.5rem, 1.4rem + 4.4vw, 6.25rem); background: var(--gl-bg-alt); }

/* --- Éléments de texte --- */

.eyebrow {
  display: block;
  margin-bottom: 1.1em;
  font-family: var(--gl-font-body);
  font-size: var(--gl-fs-eyebrow);
  font-weight: 400;
  line-height: 1.8;
  letter-spacing: var(--gl-ls-eyebrow);
  color: var(--gl-text);
}

.lead {
  font-family: var(--gl-font-head);
  font-size: var(--gl-fs-h6);
  font-weight: 300;
  line-height: 1.55;
  color: var(--gl-text-dark);
}

.script {
  font-family: var(--gl-font-script);
  font-size: var(--gl-fs-script);
  font-weight: 400;
  line-height: 0.86;
  letter-spacing: 0.0197em;
  color: var(--gl-sage);
}

.rte > *:last-child { margin-bottom: 0; }
.rte h2, .rte h3, .rte h4 { margin-top: 1.2em; }
.rte a { text-decoration: underline; text-underline-offset: 0.2em; }

/* --- Boutons --- */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5em;
  padding: 0.75rem 1.5rem;
  font-family: var(--gl-font-body);
  font-size: 0.9375rem;
  font-weight: 400;
  line-height: 1.6;
  text-align: center;
  color: #fff;
  background: var(--gl-accent);
  border: 0;
  border-radius: 3px;
  cursor: pointer;
  transition: background var(--gl-dur) var(--gl-ease), color var(--gl-dur) var(--gl-ease);
}
.btn:hover, .btn:focus-visible { background: var(--gl-accent-dark); color: #fff; }

.btn--sage { background: var(--gl-sage); }
.btn--sage:hover, .btn--sage:focus-visible { background: var(--gl-sage-dark); }

/* Bouton serif du bloc vignoble */
.btn--serif {
  padding: 1.0625rem 3.5625rem 1.125rem;
  font-family: var(--gl-font-head);
  font-size: 1.0625rem;
  line-height: 1.24;
  background: var(--gl-link);
  border-radius: 0;
}
.btn--serif:hover, .btn--serif:focus-visible { background: var(--gl-link-hover); }

.btn--ghost { background: transparent; border-color: currentColor; color: var(--gl-text-dark); }
.btn--ghost:hover, .btn--ghost:focus-visible { background: var(--gl-text-dark); border-color: var(--gl-text-dark); color: #fff; }

.btn--light { background: rgba(255, 255, 255, 0.16); border-color: rgba(255, 255, 255, 0.4); color: #fff; }
.btn--light:hover, .btn--light:focus-visible { background: #fff; border-color: #fff; color: var(--gl-text-dark); }

/* --- Titres de section --- */

.section-head { margin-bottom: calc(var(--gl-gap) * 1.4); }
.section-head--center { text-align: center; }
.section-head--center .section-head__title { margin-inline: auto; }
.section-head__title { margin-bottom: 0.45em; }

.section-head__eyebrow {
  margin: 0;
  font-family: var(--gl-font-body);
  font-size: 0.875rem;
  letter-spacing: 0.1429em;
  text-transform: uppercase;
  color: var(--gl-link);
}
.section-head__title:last-child { margin-bottom: 0; }

/* --- Media --- */

.media { position: relative; overflow: hidden; }
.media img { width: 100%; height: 100%; object-fit: cover; }
.media--portrait { aspect-ratio: 3 / 4; }
.media--landscape { aspect-ratio: 4 / 3; }
.media--wide { aspect-ratio: 16 / 9; }
.media--square { aspect-ratio: 1 / 1; }

/* --- Animations d'apparition --- */

.reveal { opacity: 0; transform: translateY(1.75rem); }
.is-revealed { opacity: 1; transform: none; transition: opacity 0.9s var(--gl-ease), transform 0.9s var(--gl-ease); }
.no-js .reveal { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; }
}
