/* ==========================================================================
   BLOG — styles spécifiques au /blog/
   Direction visuelle alignée sur « Notre Histoire » (about.html) :
   dark stone + or #C9A84C, Cormorant Garamond en display, DM Sans en corps,
   overlines lettrées à filet, grain, filets or, fond bone chaud.
   ========================================================================== */

:root {
  --b-black: #0a0a0a;
  --b-ink: #111;
  --b-gold: #C9A84C;
  --b-gold-soft: #b89840;
  --b-bone: #f5f2eb;
  --b-line: rgba(201, 168, 76, 0.28);
  --b-serif: 'Cormorant Garamond', Georgia, serif;
  --b-sans: 'DM Sans', 'Helvetica Neue', Arial, sans-serif;
}

/* --- Hero commun (index + article) --- */
.blog-hero {
  position: relative;
  overflow: hidden;
  background: var(--b-black);
  color: #fff;
  padding-top: calc(var(--header-height, 80px) + 6.5rem);
  padding-bottom: 5.5rem;
}

/* Lueur or discrète + grain, exactement l'atmosphère de about.html */
.blog-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(60% 55% at 82% 10%, rgba(201, 168, 76, 0.10), transparent 60%),
    radial-gradient(70% 60% at 10% 92%, rgba(201, 168, 76, 0.06), transparent 60%);
}
.blog-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.06;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.85 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}

.blog-hero .container {
  position: relative;
  z-index: 1;
  max-width: 52rem;
}

/* Overline lettrée à filet or — la signature de about.html (.d-overline) */
.blog-overline {
  display: inline-flex;
  align-items: center;
  gap: 0.9rem;
  font-family: var(--b-sans);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: var(--b-gold);
  margin-bottom: 1.75rem;
}
.blog-overline::before {
  content: "";
  width: 34px;
  height: 1px;
  background: var(--b-gold);
  display: inline-block;
}

.blog-hero h1 {
  font-family: var(--b-serif);
  font-weight: 500;
  font-size: clamp(2.9rem, 6vw, 4.75rem);
  line-height: 1.02;
  letter-spacing: -0.015em;
  margin-bottom: 1.75rem;
}

.blog-hero .blog-lede {
  font-family: var(--b-sans);
  font-size: 1.125rem;
  line-height: 1.9;
  font-weight: 300;
  color: #9a978f;
  max-width: 42rem;
}
.blog-hero .blog-lede em { color: #cfc9bd; font-style: italic; }

/* --- Fil d'ariane --- */
.blog-breadcrumb {
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-gray);
  margin-bottom: 2rem;
}

.blog-breadcrumb a {
  color: var(--color-gray-light);
  text-decoration: none;
  transition: color var(--transition-fast, 0.2s ease);
}

.blog-breadcrumb a:hover {
  color: var(--b-gold);
}

.blog-breadcrumb span {
  margin: 0 0.5rem;
  color: var(--color-gray-dark);
}

/* --- Méta (date, temps de lecture) --- */
.blog-meta {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-gray);
  margin-top: 2rem;
}

.blog-meta .dot {
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: var(--color-gray-dark);
}

/* --- Index : grille de cards --- */
.blog-list {
  padding: 5.5rem 0 6.5rem;
  background: var(--b-bone);
}

.blog-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2.5rem 1.75rem;
}

/* --- Carrousel (index du Journal) --------------------------------------
   scroll-snap natif : le swipe tactile et le scroll trackpad fonctionnent
   sans JS. Le JS n'ajoute que les flèches, le drag souris et les points. */
.carousel {
  position: relative;
}

.carousel-track {
  display: flex;
  gap: 1.75rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;              /* Firefox */
  -ms-overflow-style: none;           /* IE/Edge */
  padding-bottom: 0.5rem;
}

.carousel-track::-webkit-scrollbar {
  display: none;                      /* WebKit */
}

.carousel-track .blog-card {
  flex: 0 0 21rem;                    /* taille fixe : le snap a besoin d'une largeur stable */
  scroll-snap-align: start;
}

/* Pendant un drag souris : couper le smooth et le snap, sinon le scroll
   se bat avec le pointeur. */
.carousel-track.is-dragging {
  scroll-behavior: auto;
  scroll-snap-type: none;
  cursor: grabbing;
  user-select: none;
}

.carousel-track.is-dragging .blog-card {
  pointer-events: none;               /* évite d'ouvrir l'article en fin de drag */
}

/* Flèches — desktop uniquement */
.carousel-arrow {
  position: absolute;
  top: 6.5rem;                        /* aligné sur le centre visuel de l'image */
  z-index: 2;
  width: 2.75rem;
  height: 2.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-black);
  color: var(--color-white);
  border: none;
  cursor: pointer;
  opacity: 0;
  transition: opacity var(--transition-base, 0.3s ease), background var(--transition-fast, 0.2s ease);
}

.carousel:hover .carousel-arrow {
  opacity: 1;
}

.carousel-arrow:focus-visible {
  opacity: 1;
  outline: 2px solid var(--b-gold);
  outline-offset: 2px;
}

.carousel-arrow:hover {
  background: var(--b-gold);
  color: var(--color-black);
}

.carousel-arrow[disabled] {
  opacity: 0 !important;
  pointer-events: none;
}

.carousel-prev { left: -1.375rem; }
.carousel-next { right: -1.375rem; }

/* Indicateurs de position */
.carousel-dots {
  display: flex;
  justify-content: center;
  gap: 0.5rem;
  margin-top: 2.5rem;
}

.carousel-dots button {
  width: 1.5rem;
  height: 2px;
  padding: 0;
  border: none;
  background: #d8d8d2;
  cursor: pointer;
  transition: background var(--transition-fast, 0.2s ease);
}

.carousel-dots button[aria-current="true"] {
  background: var(--b-gold);
}

.carousel-dots button:focus-visible {
  outline: 2px solid var(--b-gold);
  outline-offset: 3px;
}

/* Carrousel inutile s'il n'y a rien à faire défiler : le JS pose cet
   attribut, on retombe alors sur une grille classique. */
.carousel[data-static="true"] .carousel-track {
  overflow-x: visible;
  scroll-snap-type: none;
}

.carousel[data-static="true"] .carousel-dots,
.carousel[data-static="true"] .carousel-arrow {
  display: none;
}

@media (max-width: 768px) {
  .carousel-arrow {
    display: none;                    /* le swipe suffit */
  }

  .carousel-track {
    gap: 1rem;
    /* déborde jusqu'aux bords de l'écran, façon éditorial */
    margin-inline: calc(var(--container-padding, 1.25rem) * -1);
    padding-inline: var(--container-padding, 1.25rem);
    scroll-padding-left: var(--container-padding, 1.25rem);
  }

  .carousel-track .blog-card {
    flex: 0 0 min(78vw, 20rem);
  }
}

.blog-card {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
}

.blog-card-image {
  position: relative;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  background: #111;
  margin-bottom: 1.4rem;
  border: 1px solid var(--b-line);   /* cadre hairline or, façon about.html */
}

.blog-card-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.7s cubic-bezier(.2, .7, .2, 1);
}

.blog-card:hover .blog-card-image img {
  transform: scale(1.045);
}

.blog-card-date {
  font-family: var(--b-sans);
  font-size: 0.68rem;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--b-gold-soft);
  margin-bottom: 0.7rem;
}

.blog-card h2 {
  font-family: var(--b-serif);
  font-weight: 600;
  font-size: 1.7rem;
  line-height: 1.12;
  letter-spacing: -0.005em;
  margin-bottom: 0.8rem;
  transition: color var(--transition-fast, 0.2s ease);
}

.blog-card:hover h2 {
  color: var(--b-gold-soft);
}

.blog-card p {
  font-family: var(--b-sans);
  font-size: 0.9rem;
  line-height: 1.75;
  font-weight: 300;
  color: #55554f;
  margin-bottom: 1.1rem;
}

.blog-card-more {
  margin-top: auto;
  font-family: var(--b-sans);
  font-size: 0.68rem;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--b-ink);
  border-bottom: 1px solid var(--b-gold);
  padding-bottom: 0.35rem;
  align-self: flex-start;
}

.blog-empty {
  text-align: center;
  padding: 4rem 0;
  color: var(--color-gray);
}

/* --- Article --- */
.blog-article {
  padding: 4.5rem 0 6rem;
  background: var(--b-black);
}

.blog-article .container {
  max-width: 44rem;
}

/* Sommaire ancré */
.blog-toc {
  border-left: 1px solid var(--b-line);
  padding: 0.25rem 0 0.25rem 1.75rem;
  margin-bottom: 3.75rem;
}

.blog-toc h2 {
  font-family: var(--b-sans);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--b-gold-soft);
  margin-bottom: 1.1rem;
}

.blog-toc ol {
  list-style: none;
  counter-reset: toc;
}

.blog-toc li {
  counter-increment: toc;
  margin-bottom: 0.6rem;
}

.blog-toc li::before {
  content: counter(toc, decimal-leading-zero);
  font-family: var(--b-serif);
  font-size: 0.95rem;
  color: var(--b-gold);
  margin-right: 0.85rem;
  font-variant-numeric: tabular-nums;
}

.blog-toc a {
  font-family: var(--b-sans);
  font-size: 0.9375rem;
  color: #cfcbc2;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color var(--transition-fast, 0.2s ease);
}

.blog-toc a:hover {
  border-bottom-color: var(--b-gold);
}

/* Corps de l'article */
.article-body h2 {
  font-family: var(--b-serif);
  font-weight: 500;
  font-size: clamp(2rem, 3.6vw, 2.6rem);
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: #f0ebe0;
  margin: 3.75rem 0 1.35rem;
  scroll-margin-top: calc(var(--header-height, 80px) + 1.5rem);
}

/* Filet or court en amont du titre — rythme éditorial de about.html */
.article-body h2::before {
  content: "";
  display: block;
  width: 42px;
  height: 1px;
  background: var(--b-gold);
  margin-bottom: 1.4rem;
}

.article-body h3 {
  font-size: 1.3rem;
  font-family: var(--b-serif);
  font-weight: 600;
  letter-spacing: 0;
  color: #f0ebe0;
  margin: 2.5rem 0 0.8rem;
  scroll-margin-top: calc(var(--header-height, 80px) + 1.5rem);
}

.article-body p {
  font-family: var(--b-sans);
  font-size: 1.075rem;
  line-height: 1.9;
  font-weight: 300;
  color: #bdb9b0;
  margin-bottom: 1.5rem;
}

.article-body strong {
  font-weight: 600;
  color: #fff;
}

.article-body em {
  font-style: italic;
}

.article-body a:not(.btn) {
  color: #f0ebe0;
  text-decoration: none;
  border-bottom: 1px solid var(--b-gold);
  transition: color var(--transition-fast, 0.2s ease);
}

.article-body a:not(.btn):hover {
  color: var(--b-gold-soft);
}

.article-body ul {
  margin: 0 0 1.5rem 0;
  padding-left: 1.25rem;
}

.article-body li {
  font-size: 1.0625rem;
  line-height: 1.8;
  color: #bdb9b0;
  margin-bottom: 0.5rem;
}

.article-body li::marker {
  color: var(--b-gold);
}

/* Cover d'article (pleine largeur de la colonne de lecture) */
.article-cover {
  margin: 0 0 3.5rem;
}

.article-cover img {
  width: 100%;
  height: auto;
  display: block;
  background: #111;
}

/* Carte SVG inline — inline et non <img> pour hériter des fonts du site.
   aspect-ratio fige la hauteur avant le rendu : pas de CLS. */
.article-map {
  margin: 3.5rem auto;
  max-width: 560px;
}

.article-map svg {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 640 / 840;
}

/* Sous ~600px, la carte descendrait à une échelle où ses libellés (8,5 à
   10,5 unités sur un viewBox de 640) tomberaient sous 6px — illisibles.
   On la laisse donc défiler horizontalement plutôt que de la rétrécir. */
@media (max-width: 620px) {
  .article-map {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    margin-inline: calc(var(--container-padding, 1.25rem) * -1);
    padding-inline: var(--container-padding, 1.25rem);
  }

  .article-map svg {
    min-width: 34rem;   /* 544px : les plus petits labels restent ~7,5px */
  }

  .article-map figcaption {
    position: sticky;
    left: 0;
  }
}

/* Figure + légende */
.article-figure {
  margin: 2.5rem 0;
}

.article-figure img {
  width: 100%;
  height: auto;
  display: block;
  background: #111;
}

.article-figure figcaption {
  font-family: var(--b-sans);
  font-size: 0.8125rem;
  line-height: 1.6;
  font-weight: 300;
  color: #8a8579;
  margin-top: 0.85rem;
  padding-left: 0.85rem;
  border-left: 1px solid var(--b-gold);
}

/* Citation */
.article-quote {
  font-family: var(--b-serif);
  font-size: clamp(1.6rem, 2.8vw, 2rem);
  line-height: 1.32;
  font-style: italic;
  color: #f0ebe0;
  margin: 3.25rem 0;
  padding-left: 1.85rem;
  border-left: 1px solid var(--b-gold);
}

.article-quote cite {
  display: block;
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-style: normal;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-gray);
  margin-top: 1rem;
}

/* --- Bloc CTA vers une collection --- */
.article-cta {
  position: relative;
  background: #171614;
  color: #fff;
  padding: 2.75rem;
  margin: 4rem 0;
  display: flex;
  align-items: center;
  gap: 2rem;
  border: 1px solid var(--b-line);   /* cadre hairline or */
}

.article-cta-media {
  width: 8.5rem;
  flex-shrink: 0;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: var(--color-dark-secondary);
}

.article-cta-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.article-cta-body {
  flex: 1;
}

.article-cta .blog-overline {
  margin-bottom: 0.75rem;
}

.article-cta h3 {
  font-family: var(--b-serif);
  font-size: 1.85rem;
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: #fff;
  margin: 0 0 0.85rem;
}

.article-cta p {
  font-size: 0.875rem;
  line-height: 1.7;
  color: var(--color-gray-light);
  margin-bottom: 1.5rem;
}

/* --- FAQ --- */
.article-faq {
  margin-top: 4rem;
  padding-top: 3rem;
  border-top: 1px solid rgba(201,168,76,0.28);
}

.article-faq h2 {
  margin-top: 0;
}

.faq-item {
  border-bottom: 1px solid rgba(255,255,255,0.08);
  padding: 1.5rem 0;
}

.faq-item h3 {
  font-family: var(--font-body);
  font-size: 1rem;
  font-weight: 600;
  margin: 0 0 0.75rem;
  color: #f0ebe0;
}

.faq-item p {
  font-size: 0.9375rem;
  line-height: 1.75;
  color: #b3afa6;
  margin: 0;
}

/* --- Articles liés --- */
.blog-related {
  background: var(--b-black);
  padding: 5.5rem 0;
}

.blog-related .container {
  max-width: 68rem;
}

.blog-related-head {
  display: inline-flex;
  align-items: center;
  gap: 0.9rem;
  font-family: var(--b-sans);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--b-gold);
  margin-bottom: 2.75rem;
}
.blog-related-head::before {
  content: "";
  width: 34px;
  height: 1px;
  background: var(--b-gold);
}

.blog-related .blog-grid {
  grid-template-columns: repeat(3, 1fr);
}

/* Cartes sur fond sombre : titres et extraits en clair */
.blog-related .blog-card-image { background: #111; }
.blog-related .blog-card h2 { color: #efe9dd; }
.blog-related .blog-card:hover h2 { color: var(--b-gold); }
.blog-related .blog-card p { color: #9a978f; }
.blog-related .blog-card-more { color: #efe9dd; }

/* --- Responsive --- */
@media (max-width: 980px) {
  .blog-grid,
  .blog-related .blog-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 768px) {
  .blog-hero {
    padding-top: calc(var(--header-height, 70px) + 3rem);
    padding-bottom: 2.5rem;
  }

  .blog-grid,
  .blog-related .blog-grid {
    grid-template-columns: 1fr;
    gap: 2.5rem;
  }

  .article-cta {
    flex-direction: column;
    align-items: flex-start;
    padding: 1.75rem;
    gap: 1.5rem;
  }

  .article-cta-media {
    width: 100%;
    aspect-ratio: 16 / 9;
  }

  .article-body p,
  .article-body li {
    font-size: 1rem;
  }
}
