/* ============================================================
   Blog article — typography & reading layout
   ============================================================ */

/* Bilingual visibility toggle — article uses <span class="lang-en"> / <span class="lang-fr">
   and <a class="lang-en"> / <a class="lang-fr"> pairs, shown/hidden by <html data-lang="xx"> */
[data-lang="en"] .lang-fr { display: none !important; }
[data-lang="fr"] .lang-en { display: none !important; }

/* Article shell */
.article {
  max-width: 760px;
  margin: 0 auto;
  padding: clamp(32px, 5vw, 64px) clamp(20px, 4vw, 32px) clamp(48px, 7vw, 96px);
  /* Fixed header is 88px desktop / 72px mobile — offset so breadcrumb is never hidden */
  padding-top: calc(88px + clamp(20px, 3vw, 36px));
}
@media (max-width: 1023px) {
  .article { padding-top: calc(72px + 20px); }
}

/* Breadcrumb */
.article__crumb {
  font-family: var(--font-body);
  font-size: .875rem;
  color: var(--gray-brand);
  margin-bottom: 20px;
}
.article__crumb a { color: var(--gray-brand); text-decoration: none; }
.article__crumb a:hover { color: var(--coral); }
.article__crumb .sep { margin: 0 8px; color: #d9dcdf; }
.article__crumb .current { color: var(--gray-dark); }

/* Category pill */
.article__cat {
  display: inline-block;
  background: var(--coral-10);
  color: var(--coral);
  font-family: var(--font-heading);
  font-size: .72rem; font-weight: 500;
  letter-spacing: .12em; text-transform: uppercase;
  padding: 6px 14px;
  border-radius: 999px;
  text-decoration: none;
  transition: all .2s var(--ease-out);
  margin-bottom: 18px;
}
.article__cat:hover { background: var(--coral); color: var(--white); }

/* Title */
.article__title {
  font-family: var(--font-heading);
  font-weight: 500;
  font-size: clamp(2rem, 4vw, 2.85rem);
  line-height: 1.15;
  letter-spacing: -0.02em;
  color: var(--gray-dark);
  margin: 0 0 22px;
  text-wrap: balance;
}

/* Meta line */
.article__meta {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: 10px 14px;
  font-size: .92rem;
  color: var(--gray-brand);
  margin-bottom: 36px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--border-subtle);
}
.article__meta strong { color: var(--gray-dark); font-weight: 500; }
.article__meta .dot { color: #d9dcdf; }
.article__meta .author-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--coral-10);
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--coral);
  font-family: var(--font-heading); font-weight: 500; font-size: .78rem;
  letter-spacing: .04em;
}

/* Hero image */
.article__hero {
  margin: 0 0 clamp(36px, 4vw, 56px);
  border-radius: 20px;
  overflow: hidden;
  aspect-ratio: 16 / 9;
  background: var(--gray-light);
}
.article__hero img {
  width: 100%; height: 100%;
  object-fit: cover;
}

/* Lead paragraph */
.article__lead {
  font-family: var(--font-body);
  font-size: clamp(1.08rem, 1.4vw, 1.18rem);
  line-height: 1.7;
  color: var(--gray-dark);
  margin-bottom: 32px;
}

/* Key takeaways card */
.takeaways {
  background: var(--gray-light);
  border-left: 3px solid var(--coral);
  border-radius: 6px 16px 16px 6px;
  padding: 26px 28px;
  margin: 40px 0;
}
.takeaways__label {
  font-family: var(--font-heading);
  font-size: .72rem; font-weight: 500;
  text-transform: uppercase; letter-spacing: .14em;
  color: var(--coral);
  margin-bottom: 14px;
}
.takeaways ul {
  margin: 0; padding: 0 0 0 20px;
  list-style: disc;
}
.takeaways li {
  font-size: 1rem;
  line-height: 1.65;
  color: var(--gray-dark);
  margin-bottom: 10px;
}
.takeaways li:last-child { margin-bottom: 0; }
.takeaways a {
  color: var(--gray-dark);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  text-decoration-color: var(--coral);
  transition: all .2s var(--ease-out);
}
.takeaways a:hover { color: var(--coral); }

/* Clinical anecdote callout */
.callout-note {
  background: #fbfaf8;
  border: 1px solid var(--border-soft);
  border-left: 3px solid var(--gray-brand);
  border-radius: 6px 14px 14px 6px;
  padding: 22px 26px;
  margin: 36px 0;
}
.callout-note__label {
  font-family: var(--font-heading);
  font-size: .7rem; font-weight: 500;
  text-transform: uppercase; letter-spacing: .14em;
  color: var(--gray-brand);
  margin-bottom: 10px;
  font-style: normal;
}
.callout-note p {
  font-size: 1rem;
  line-height: 1.65;
  color: var(--gray-dark);
  font-style: italic;
}

/* Article typography */
.article-body h2 {
  font-family: var(--font-heading);
  font-weight: 500;
  font-size: clamp(1.5rem, 2.4vw, 1.95rem);
  letter-spacing: -0.015em;
  color: var(--gray-dark);
  margin: 56px 0 20px;
  line-height: 1.2;
}
.article-body h2::before {
  content: "";
  display: block;
  width: 36px; height: 2px;
  background: var(--coral);
  margin-bottom: 18px;
}
.article-body h3 {
  font-family: var(--font-heading);
  font-weight: 500;
  font-size: clamp(1.2rem, 1.8vw, 1.38rem);
  letter-spacing: -0.01em;
  color: var(--gray-dark);
  margin: 36px 0 14px;
  line-height: 1.3;
}
.article-body p {
  font-size: 1.05rem;
  line-height: 1.75;
  color: #3a3a3a;
  margin: 0 0 20px;
}
.article-body p strong { color: var(--gray-dark); font-weight: 500; }
.article-body a {
  color: var(--gray-dark);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  text-decoration-color: var(--coral);
  transition: all .2s var(--ease-out);
}
.article-body a:hover { color: var(--coral); }

.article-body ul, .article-body ol {
  padding-left: 24px;
  margin: 0 0 22px;
}
.article-body ul { list-style: disc outside; }
.article-body ol { list-style: decimal outside; }
.article-body li {
  font-size: 1.05rem;
  line-height: 1.7;
  color: #3a3a3a;
  margin-bottom: 8px;
  padding-left: 4px;
}
.article-body li::marker { color: var(--coral); }

.article-body hr {
  border: 0;
  border-top: 1px solid var(--border-subtle);
  margin: 48px 0;
}

/* Data figures — dark panels with SVGs */
.article-figure {
  margin: 36px 0;
  padding: clamp(20px, 3vw, 28px);
  background: #0f172a;
  border-radius: 18px;
  overflow-x: auto;
}
.article-figure svg { width: 100%; height: auto; max-width: 100%; display: block; }
.article-figure figcaption {
  margin-top: 14px;
  font-size: .82rem;
  color: var(--gray-brand);
  text-align: center;
  font-style: italic;
}

/* FAQ block */
.article-faq {
  margin: 56px 0 0;
}
.article-faq h2 { margin-bottom: 24px; }
.faq-item {
  border-bottom: 1px solid var(--border-subtle);
  padding: 20px 0;
}
.faq-item summary {
  list-style: none;
  cursor: pointer;
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 16px;
  font-family: var(--font-heading);
  font-weight: 500;
  font-size: 1.05rem;
  color: var(--gray-dark);
  line-height: 1.4;
  padding-right: 4px;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: "+";
  flex-shrink: 0;
  font-size: 1.4rem;
  color: var(--coral);
  line-height: 1;
  transition: transform .3s var(--ease-out);
}
.faq-item[open] summary::after { content: "−"; }
.faq-item p {
  margin-top: 14px;
  font-size: 1rem;
  line-height: 1.7;
  color: #3a3a3a;
}

/* Author card */
.article-author {
  margin: 48px 0 0;
  padding: 28px;
  background: var(--gray-light);
  border-radius: 20px;
  display: flex;
  gap: 20px;
  align-items: flex-start;
}
.article-author__avatar {
  flex-shrink: 0;
  width: 64px; height: 64px;
  border-radius: 50%;
  background: var(--coral-15);
  color: var(--coral);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-heading); font-weight: 500; font-size: 1.1rem;
}
.article-author__body h4 {
  font-family: var(--font-heading);
  font-weight: 500;
  font-size: 1.05rem;
  margin: 0 0 4px;
}
.article-author__body .role {
  font-size: .85rem;
  color: var(--coral);
  margin-bottom: 10px;
  letter-spacing: .04em;
}
.article-author__body p {
  font-size: .95rem;
  line-height: 1.6;
  color: var(--gray-brand);
  margin: 0;
}

/* Share bar */
.article-share {
  display: flex; gap: 10px; align-items: center;
  margin: 40px 0 0;
  padding-top: 24px;
  border-top: 1px solid var(--border-subtle);
  font-size: .88rem;
  color: var(--gray-brand);
}
.article-share a {
  width: 36px; height: 36px;
  border-radius: 50%;
  border: 1px solid var(--border-subtle);
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--gray-brand);
  transition: all .2s var(--ease-out);
}
.article-share a:hover {
  border-color: var(--coral);
  color: var(--coral);
  background: var(--coral-10);
}
.article-share svg { width: 16px; height: 16px; }

/* Disclaimer card */
.article-disclaimer {
  margin: 32px 0 0;
  padding: 18px 22px;
  background: var(--gray-light);
  border: 1px solid var(--border-soft);
  border-radius: 12px;
}
.article-disclaimer p {
  font-size: .86rem;
  color: var(--gray-brand);
  line-height: 1.6;
  margin: 0;
}
.article-disclaimer strong { color: var(--gray-dark); font-weight: 500; }
.article-disclaimer a {
  color: var(--gray-dark);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  text-decoration-color: var(--coral);
  transition: all .2s var(--ease-out);
}
.article-disclaimer a:hover { color: var(--coral); }

/* Back-to-blog link */
.article-back {
  margin: 24px 0 0;
  text-align: center;
}
.article-back a {
  font-family: var(--font-heading);
  font-size: .9rem;
  color: var(--coral);
  text-decoration: none;
  padding: 10px 22px;
  border-radius: 9999px;
  border: 1px solid var(--coral-20);
  transition: all .2s var(--ease-out);
  display: inline-block;
}
.article-back a:hover {
  background: var(--coral);
  color: var(--white);
  border-color: var(--coral);
}

/* Related articles — full-width alt section */
.related {
  background: var(--gray-light);
  padding: clamp(48px, 6vw, 72px) 0;
  margin-top: clamp(32px, 4vw, 48px);
}
.related h2 {
  font-family: var(--font-heading);
  font-weight: 500;
  font-size: clamp(1.6rem, 2.6vw, 2.1rem);
  margin-bottom: 36px;
}
.related__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
}
.related-card {
  background: var(--white);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: var(--shadow-card);
  transition: all .25s var(--ease-out);
}
.related-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-card-hover);
}
.related-card a { display: block; color: inherit; text-decoration: none; }
.related-card__img {
  aspect-ratio: 16 / 10;
  background: var(--gray-light);
  overflow: hidden;
}
.related-card__img img { width: 100%; height: 100%; object-fit: cover; }
.related-card__body { padding: 20px 22px 24px; }
.related-card__tag {
  display: inline-block;
  font-family: var(--font-heading);
  font-size: .68rem; font-weight: 500;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--coral);
  margin-bottom: 10px;
}
.related-card__body h3 {
  font-family: var(--font-heading);
  font-weight: 500;
  font-size: 1.05rem;
  line-height: 1.35;
  color: var(--gray-dark);
  margin: 0;
}

/* Article CTA strip */
.article-cta {
  margin: 48px 0 0;
  padding: 36px 32px;
  background: var(--gray-dark);
  color: var(--white);
  border-radius: 22px;
  text-align: center;
}
.article-cta h3 {
  font-family: var(--font-heading); font-weight: 500;
  font-size: 1.4rem; color: var(--white);
  margin: 0 0 10px;
}
.article-cta p {
  font-size: 1rem;
  color: rgba(255,255,255,.75);
  margin: 0 0 22px;
  max-width: 440px; margin-left: auto; margin-right: auto;
}
.article-cta .btn--primary { background: var(--coral); }
.article-cta .btn--primary:hover { background: var(--coral-dark); }
/* Strip last-child bottom margin so the CTA block padding stays symmetric */
.article-cta > *:last-child { margin-bottom: 0; }

/* Callout-note: first <p> acts as the label (uppercase, coral-grey eyebrow) */
.callout-note > p:first-of-type {
  font-family: var(--font-heading);
  font-size: .72rem; font-weight: 500;
  text-transform: uppercase; letter-spacing: .14em;
  color: var(--gray-brand);
  margin-bottom: 10px;
  font-style: normal;
  line-height: 1.4;
}

/* Body blockquote — replace browser default 40px indent with a clean coral-bar pull-quote */
.article-body blockquote {
  margin: 28px 0;
  padding: 4px 0 4px 18px;
  border-left: 3px solid var(--coral);
  color: var(--gray-dark);
  font-style: italic;
  font-size: 1.02em;
  line-height: 1.65;
}
.article-body blockquote p { margin: 0 0 10px; }
.article-body blockquote p:last-child { margin-bottom: 0; }

/* Mobile tuning */
@media (max-width: 640px) {
  .article { padding-left: 18px; padding-right: 18px; }
  .article-body h2 { margin-top: 44px; }
  .article-author { flex-direction: column; gap: 14px; }
  .article__meta {
    gap: 4px 12px;
    font-size: .85rem;
  }
  .article__meta .dot { display: none; }
  .article-body blockquote { margin: 22px 0; padding-left: 14px; font-size: 1em; }
}

/* Mobile sticky booking bar (articles only) — matches the global
   .mobile-cta-bar floating dark pill design. */
.blog-sticky-cta {
  position: fixed;
  left: 12px; right: 12px;
  bottom: calc(12px + env(safe-area-inset-bottom));
  z-index: 40;
  background: rgba(28, 28, 30, .96);
  -webkit-backdrop-filter: blur(10px);
          backdrop-filter: blur(10px);
  border-radius: 16px;
  padding: 8px 14px;
  transition: opacity .25s var(--ease-out), transform .25s var(--ease-out);
}
/* --defer modifier: bar starts hidden until JS adds .is-visible after
   the user scrolls ~30% into the article body. */
.blog-sticky-cta--defer {
  opacity: 0;
  pointer-events: none;
  transform: translateY(8px);
}
.blog-sticky-cta--defer.is-visible {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}
.blog-sticky-cta__row {
  display: flex; gap: 10px; align-items: stretch;
  max-width: 520px; margin: 0 auto;
}
/* Force identical height on both — <a> and <button> render differently by default */
.blog-sticky-cta a,
.blog-sticky-cta button {
  flex: 1;
  height: 42px;
  font-family: var(--font-heading);
  font-weight: 500;
  font-size: .82rem;
  letter-spacing: .02em;
  padding: 0 14px;
  border-radius: 9999px;
  text-align: center;
  display: inline-flex; align-items: center; justify-content: center;
  gap: 6px;
  cursor: pointer;
  transition: all .2s var(--ease-out);
  white-space: nowrap;
  box-sizing: border-box;
}
.blog-sticky-cta__call {
  background: rgba(255,255,255,.08);
  color: var(--white);
  border: 1.5px solid rgba(255,255,255,.4);
  text-decoration: none;
}
.blog-sticky-cta__call:hover { background: rgba(255,255,255,.14); border-color: var(--coral); color: var(--coral); }
.blog-sticky-cta__book {
  background: var(--coral);
  color: var(--white);
  border: none;
}
.blog-sticky-cta__book:hover { background: var(--coral-dark); }
.blog-sticky-cta svg { width: 14px; height: 14px; flex-shrink: 0; }
@media (min-width: 1024px) { .blog-sticky-cta { display: none; } }

/* On article pages, suppress the global .mobile-cta-bar so we never
   stack two stickies. Applies regardless of the article sticky's
   visibility — we never want both bars on the same page. */
body:has(.blog-sticky-cta) .mobile-cta-bar { display: none !important; }

/* ============================================================
   Article hero & inline images — responsive height cap.
   The Tailwind `max-h-[420px]` arbitrary class wasn't compiled into
   tailwind.min.css, so images were rendered at intrinsic height
   (often 800–1000px on mobile, far too tall). These rules act as a
   robust fallback regardless of Tailwind generation.
   ============================================================ */
/* Generic article figure margin — exclude the hero (.article__hero has its own margin rule) */
.article figure:not(.article__hero) { margin: clamp(28px, 4vw, 44px) 0; }
.article figure:not(.article__hero) img,
.article-body img.w-full {
  width: 100%;
  height: auto;
  border-radius: 14px;
  object-fit: cover;
  max-height: 420px;
  display: block;
}
@media (max-width: 768px) {
  .article figure:not(.article__hero) img,
  .article-body img.w-full {
    max-height: 280px;
    border-radius: 12px;
  }
}

/* ============================================================
   SVG data charts — make dark figure panels span the full
   readable width on mobile (the article container has 18-20px
   side padding; we counter-margin the figure so the chart is
   never trapped in a narrow column).
   ============================================================ */
/* bg-[#0f172a] is a Tailwind arbitrary class not present in pre-built tailwind.min.css.
   Selectors use .article (not .article-body) because some posts place the figure as a
   direct child of <article class="article"> outside .article-body. */
.article figure.bg-\[\#0f172a\] {
  background: #0f172a;
  border-radius: 8px;
  padding: 16px;
  overflow-x: auto;
}
.article figure.bg-\[\#0f172a\],
.article .article-figure {
  width: 100%;
  margin-left: 0;
  margin-right: 0;
}
@media (max-width: 768px) {
  .article figure.bg-\[\#0f172a\],
  .article .article-figure {
    margin-left: 0;
    margin-right: 0;
    width: 100%;
    padding-left: 14px !important;
    padding-right: 14px !important;
  }
  .article figure.bg-\[\#0f172a\] svg,
  .article .article-figure svg {
    width: 100%;
    height: auto;
    display: block;
  }
}

/* ============================================================
   Data tables — Tailwind arbitrary classes (bg-coral/10,
   bg-gray-light/50, bg-coral/5, divide-y, etc.) are not
   present in the pre-built tailwind.min.css.
   These rules provide the full visual styling.
   ============================================================ */
.article-body .overflow-x-auto {
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  margin-bottom: 16px;
}
@media (max-width: 640px) {
  .article-body .overflow-x-auto { margin-left: -18px; margin-right: -18px; border-radius: 0; }
  .article-body .overflow-x-auto > table { min-width: 540px; }
}
.article-body table {
  width: 100%;
  border-collapse: collapse;
  font-size: .9rem;
}
.article-body table thead tr {
  background: rgba(232, 150, 122, 0.10);
}
.article-body table th {
  text-align: left;
  padding: 12px 16px;
  font-family: var(--font-heading);
  font-weight: 500;
  color: var(--gray-dark);
}
/* Row headers (1st column) keep nowrap — short labels like "Reduces reflections".
   Column headers (top row) wrap freely so long labels like
   "Premium AR (Crizal, Zeiss DuraVision, HOYA Recharge)" don't get clipped. */
.article-body table th[scope="row"] {
  white-space: nowrap;
}
.article-body table td {
  padding: 12px 16px;
  border-top: 1px solid #f3f4f6;
  color: #3a3a3a;
  vertical-align: top;
}
/* Zebra rows — bg-gray-light/50 */
.article-body table tbody tr.bg-gray-light\/50 {
  background: rgba(249, 247, 245, 0.8);
}
/* Highlighted row — bg-coral/5 (e.g. Category 3 for Mauritius) */
.article-body table tbody tr.bg-coral\/5 {
  background: rgba(232, 150, 122, 0.06);
}
.article-body table tbody tr.bg-coral\/5 td,
.article-body table tbody tr.font-semibold td {
  font-weight: 600;
}
@media (max-width: 640px) {
  .article-body table th,
  .article-body table td { padding: 10px 12px; font-size: .82rem; }
}

/* ============================================================
   Figure caption — generic style for all article figcaptions.
   Tailwind classes (`text-sm text-gray-brand text-center mt-2`)
   used in markup are not in the local tailwind.min.css.
   Smaller + semi-bold + centered serves chart caption / data
   takeaway. Dark-figure override below switches to italic
   citation style.
   ============================================================ */
.article figure figcaption {
  margin-top: 14px;
  font-size: .85rem;
  font-weight: 600;
  color: var(--gray-dark);
  text-align: center;
  line-height: 1.5;
  font-style: normal;
}

/* ============================================================
   Dark SVG figure (bg-[#0f172a]) — extra rules using the literal
   class string selector, complementing the .bg-\[\#0f172a\] block
   above. Use margin-block (not shorthand) so the mobile @media
   rule's negative left/right margins keep applying for full-bleed.
   ============================================================ */
.article figure[class~="bg-[#0f172a]"] {
  border-radius: 12px;
  padding: clamp(16px, 3vw, 28px);
  margin-top: clamp(28px, 4vw, 44px);
  margin-bottom: clamp(28px, 4vw, 44px);
}
.article figure[class~="bg-[#0f172a]"] svg {
  max-width: 100%;
}
.article figure[class~="bg-[#0f172a]"] figcaption {
  /* dark panels: italic citation style overrides the generic bold */
  font-weight: 400;
  color: var(--gray-brand);
  font-style: italic;
}

/* ============================================================
   Author bio card — Tailwind utility wrapper used in every
   article (`<div class="flex items-start gap-4 p-6
   bg-gray-light rounded-xl">`). tailwind.min.css is NOT loaded
   on blog articles, so these rules provide the visual styling.
   ============================================================ */
.article-body div[class~="bg-gray-light"][class~="rounded-xl"] {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 24px;
  background: var(--gray-light);
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  margin: 36px 0;
}
.article-body div[class~="bg-gray-light"][class~="rounded-xl"] > div:first-child {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: rgba(232, 150, 122, 0.18);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.article-body div[class~="bg-gray-light"][class~="rounded-xl"] > div:first-child span {
  font-family: var(--font-heading);
  font-weight: 500;
  color: var(--coral);
  font-size: 1rem;
  letter-spacing: 0.02em;
}
.article-body div[class~="bg-gray-light"][class~="rounded-xl"] > div:last-child {
  flex: 1;
}
.article-body div[class~="bg-gray-light"][class~="rounded-xl"] > div:last-child p {
  margin: 0 0 6px;
  font-size: .92rem;
  line-height: 1.55;
}
.article-body div[class~="bg-gray-light"][class~="rounded-xl"] > div:last-child p:first-child {
  font-family: var(--font-heading);
  font-weight: 500;
  font-size: 1rem;
  color: var(--gray-dark);
  margin-bottom: 4px;
}
.article-body div[class~="bg-gray-light"][class~="rounded-xl"] > div:last-child p:first-child a {
  color: var(--gray-dark);
  text-decoration: none;
}
.article-body div[class~="bg-gray-light"][class~="rounded-xl"] > div:last-child p:first-child a:hover {
  color: var(--coral);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.article-body div[class~="bg-gray-light"][class~="rounded-xl"] > div:last-child p.lang-en,
.article-body div[class~="bg-gray-light"][class~="rounded-xl"] > div:last-child p.lang-fr {
  color: var(--gray-brand);
  font-size: .88rem;
  font-style: normal;
}

/* Citation capsule — quote-form summary for AI/LLM citation extractability */
.citation-capsule {
  background: var(--white);
  border: 1px solid var(--border-soft);
  border-left: 4px solid var(--coral);
  border-radius: 0 8px 8px 0;
  padding: 24px 28px;
  margin: 24px 0 40px;
  position: relative;
}
.citation-capsule__label {
  font-family: var(--font-heading);
  font-size: .68rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: .14em;
  color: var(--coral);
  margin-bottom: 12px;
}
.citation-capsule blockquote {
  margin: 0;
  padding: 0;
  border: 0;
}
.citation-capsule blockquote p {
  font-size: 1.05rem;
  line-height: 1.65;
  color: var(--gray-dark);
  font-style: italic;
  margin: 0 0 14px;
}
.citation-capsule blockquote cite {
  display: block;
  font-size: .85rem;
  /* etait var(--gray-medium), qui n'existe nulle part et n'avait pas de repli :
     la declaration etait invalide, la signature heritait du noir du texte. */
  color: var(--gray-brand-aa);
  font-style: normal;
}
