.cm-language {
  --cm-charcoal: #2b2b2b;
  --cm-cream: #d8c7a6;
  --cm-gold: #b89b5e;
  position: fixed;
  z-index: 2147483647 !important;
  right: max(1rem, env(safe-area-inset-right));
  bottom: max(1rem, env(safe-area-inset-bottom));
  color: var(--cm-cream);
  font-family: Montserrat, sans-serif;
  font-size: 13px;
  isolation: isolate;
}

/* Le bouton de retour en haut d'Astra se superpose au sélecteur au défilement. */
#ast-scroll-top { display: none !important; }

/* WooCommerce affiche aux administrateurs un bandeau blanc fixe lorsque la
   boutique est en mode « bientôt disponible ». Il ne fait pas partie du site
   et ne doit pas modifier sa hauteur ni masquer le bas des pages. */
body.logged-in p.demo_store,
body.logged-in .woocommerce-store-notice,
body.logged-in [class*="site-visibility-badge"],
body.logged-in [id*="site-visibility-badge"],
body.logged-in .cm-hidden-coming-soon-banner {
  display: none !important;
}

.cm-language details { position: relative; }
.cm-language summary {
  display: grid;
  min-width: 46px;
  min-height: 42px;
  place-items: center;
  border: 1px solid var(--cm-gold) !important;
  border-color: var(--cm-gold) !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: var(--cm-charcoal) !important;
  background-image: none !important;
  color: var(--cm-cream);
  cursor: pointer;
  list-style: none;
}
.cm-language summary::-webkit-details-marker { display: none; }
.cm-language summary::before,
.cm-language summary::after { display: none !important; content: none !important; }
.cm-language summary:focus { outline: 0; }
.cm-language summary:focus-visible {
  outline: 0 !important;
  box-shadow: none !important;
}
.cm-language ul {
  position: absolute;
  right: 0;
  bottom: calc(100% + .5rem);
  width: max-content;
  min-width: 185px;
  max-height: min(70vh, 440px);
  margin: 0;
  padding: .45rem;
  overflow-y: auto;
  border: 1px solid var(--cm-gold);
  background: var(--cm-charcoal);
  list-style: none;
  box-shadow: 0 14px 35px rgba(0,0,0,.35);
}
.cm-language li { margin: 0; padding: 0; }
.cm-language a {
  display: block;
  padding: .55rem .7rem;
  color: var(--cm-cream) !important;
  text-decoration: none;
}
.cm-language a:hover,
.cm-language a:focus-visible,
.cm-language a.is-active {
  background: var(--cm-gold);
  color: var(--cm-charcoal) !important;
}

/* Les six cartes de la page Nos Champagnes gardent les mêmes repères,
   même lorsque le titre occupe deux lignes ou que les images diffèrent. */
.cm-cuvee-card {
  display: grid !important;
  grid-template-rows: minmax(390px, 1fr) minmax(5.25rem, auto) 2.75rem 4.75rem;
  align-items: stretch !important;
  align-content: stretch !important;
  gap: 0 !important;
}
.cm-cuvee-card__image {
  min-height: 0;
}
.cm-cuvee-card__image:not(img) {
  display: flex !important;
  align-items: flex-end !important;
  justify-content: center !important;
  overflow: hidden;
}
.cm-cuvee-card__image:not(img) img,
img.cm-cuvee-card__image {
  display: block;
  width: auto !important;
  height: min(390px, 42vw) !important;
  max-width: 92% !important;
  object-fit: contain !important;
  object-position: center bottom !important;
}
img.cm-cuvee-card__image {
  align-self: end !important;
  justify-self: center !important;
}
.cm-cuvee-card__title {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 !important;
  text-align: center;
}
.cm-cuvee-card__price {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 !important;
  text-align: center;
}
.cm-cuvee-card__action {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: center !important;
  margin: 0 !important;
}

/* Alignement des quatre générations malgré des formats photo différents. */
.cm-history-grid {
  align-items: stretch !important;
}
.cm-history-card {
  display: grid !important;
  grid-template-rows: 240px minmax(5rem, auto) !important;
  align-items: stretch !important;
  align-content: start !important;
  gap: 0 !important;
}
.cm-history-card__image {
  align-self: end !important;
  justify-self: center !important;
  width: auto !important;
  max-width: 100% !important;
  height: auto !important;
  max-height: 230px !important;
  object-fit: contain !important;
  object-position: center bottom !important;
}
.cm-history-card__caption {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: center !important;
  width: 100% !important;
  margin: 0 !important;
  padding-top: 1rem !important;
  text-align: center !important;
}

.cm-contact-map {
  --cm-charcoal: #2b2b2b;
  --cm-charcoal-soft: #333;
  --cm-cream: #d8c7a6;
  --cm-gold: #b89b5e;
  padding: clamp(3rem, 7vw, 6rem) max(1.25rem, calc((100vw - 1140px) / 2));
  background: var(--cm-charcoal);
  color: var(--cm-cream);
  text-align: center;
}
.cm-contact-map__inner { max-width: 1140px; margin: 0 auto; }
.cm-contact-map__eyebrow {
  margin: 0 0 .6rem;
  color: var(--cm-gold);
  font: 600 .78rem/1.4 Montserrat, sans-serif;
  letter-spacing: .16em;
  text-transform: uppercase;
}
.cm-contact-map h2 {
  margin: 0;
  color: var(--cm-cream);
  font-family: "Cormorant Garamond", serif;
  font-size: clamp(2.4rem, 6vw, 4.2rem);
}
.cm-contact-map__address { margin: .7rem 0 1.5rem; font-size: 1.12rem; }
.cm-contact-map__frame {
  position: relative;
  display: grid;
  min-height: clamp(330px, 48vw, 540px);
  place-items: center;
  overflow: hidden;
  border: 1px solid rgba(216,199,166,.4);
  background:
    linear-gradient(rgba(43,43,43,.87), rgba(43,43,43,.87)),
    radial-gradient(circle at 50% 45%, rgba(184,155,94,.3), transparent 42%);
}
.cm-contact-map__frame iframe { width: 100%; height: 100%; min-height: inherit; border: 0; }
.cm-contact-map__consent { max-width: 560px; padding: 2rem; }
.cm-contact-map__consent p { margin: 0 0 1.25rem; line-height: 1.6; }
.cm-contact-map__load,
.cm-contact-map__directions {
  display: inline-flex;
  min-height: 48px;
  align-items: center;
  justify-content: center;
  padding: .75rem 1.2rem;
  border: 1px solid var(--cm-gold);
  border-radius: 0;
  background: transparent;
  color: var(--cm-cream) !important;
  font: 600 .78rem/1.2 Montserrat, sans-serif;
  letter-spacing: .08em;
  text-decoration: none;
  text-transform: uppercase;
  cursor: pointer;
}
.cm-contact-map__directions { margin-top: 1rem; }
.cm-contact-map__load:hover,
.cm-contact-map__load:focus-visible,
.cm-contact-map__directions:hover,
.cm-contact-map__directions:focus-visible {
  background: var(--cm-gold);
  color: var(--cm-charcoal) !important;
  outline: 2px solid var(--cm-cream);
  outline-offset: 3px;
}

@media (max-width: 600px) {
  .cm-language { right: .65rem; bottom: .65rem; }
  .cm-contact-map { padding-inline: 1rem; }
  .cm-contact-map__consent { padding: 1.25rem; }
  .cm-cuvee-card {
    grid-template-rows: 330px minmax(4.5rem, auto) 2.5rem 4.5rem;
  }
  .cm-cuvee-card__image:not(img) img,
  img.cm-cuvee-card__image { height: 320px !important; }
  .cm-history-card {
    grid-template-rows: 300px minmax(4.5rem, auto) !important;
  }
  .cm-history-card__image { max-height: 290px !important; }
}
