/* EYWA CONSCIENCE — palette terre & olive, inspirée de la couverture du cabinet */
:root {
  --linen: #f5efe6;           /* fond principal */
  --linen-deep: #ece4d6;      /* sections teintées */
  --paper: #fbf8f3;           /* cartes */
  --line: rgba(92, 90, 63, 0.16);
  --line-strong: rgba(92, 90, 63, 0.3);
  --olive: #8f8669;           /* teinte du bandeau de la couverture */
  --olive-deep: #5c5a3f;      /* boutons — 6.6:1 avec --paper */
  --olive-ink: #4b4a35;       /* titres — 7.9:1 sur --linen */
  --forest: #363b2c;          /* bande sombre */
  --forest-deep: #2a2e22;     /* pied de page */
  --clay: #9a5535;            /* accent & liens — AA sur --linen */
  --clay-light: #d9b08c;      /* accent sur fond sombre */
  --book: #b4532a;            /* boutons de réservation — texte blanc 5:1 */
  --book-hover: #963f1c;
  --book-light: #e8a875;      /* réservation sur fond sombre — texte foncé 6.8:1 */
  --book-light-hover: #f2bb8e;
  --ink: #3a3428;             /* texte courant — 10.8:1 */
  --muted: #6b6253;           /* texte secondaire — 5.2:1 */
  --on-dark: #f5efe6;
  --on-dark-muted: #cfc6ad;
  --gold: #fbbc04;           /* jaune des étoiles Google */
  --shadow: 0 18px 40px -18px rgba(54, 59, 44, 0.28);
  --shadow-soft: 0 8px 24px -12px rgba(54, 59, 44, 0.2);
  --radius: 20px;
  --radius-sm: 12px;
  --max: 1280px;
  --gutter: clamp(1.25rem, 4vw, 3rem);
  --font-serif: "Cormorant Garamond", "Palatino Linotype", Palatino, Georgia, serif;
  --font-sans: "Source Sans 3", "Segoe UI", system-ui, sans-serif;
  --section-y: clamp(4.5rem, 9vw, 7.5rem);
}

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

html { scroll-behavior: smooth; scroll-padding-top: 80px; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

body {
  font-family: var(--font-sans);
  color: var(--ink);
  background: var(--linen);
  line-height: 1.7;
  font-size: 1.0625rem;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img { max-width: 100%; display: block; height: auto; }
ul, ol { list-style: none; }
a { color: var(--clay); text-decoration: none; transition: color .2s ease; }
a:hover { color: var(--olive-ink); }
:focus-visible { outline: 2px solid var(--clay); outline-offset: 3px; border-radius: 4px; }

.container { width: min(100% - 2 * var(--gutter), var(--max)); margin-inline: auto; }

/* Typographie */
h1, h2, h3 { font-family: var(--font-serif); font-weight: 500; color: var(--olive-ink); line-height: 1.12; }
h1 { font-size: clamp(2.7rem, 4.8vw, 5rem); letter-spacing: -0.01em; text-wrap: balance; }
h2 { text-wrap: balance; }
h2 { font-size: clamp(2.1rem, 3.8vw, 3.2rem); margin-bottom: 1rem; }
h3 { font-size: 1.55rem; line-height: 1.2; }
h1 em, h2 em { font-style: italic; color: var(--clay); font-weight: 400; }
.eyebrow {
  display: flex; align-items: center; gap: 0.75rem;
  font-size: 0.78rem; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--olive-deep); margin-bottom: 1.1rem;
}
.eyebrow::before { content: ""; width: 28px; height: 1px; background: currentColor; opacity: .6; }
.centered .eyebrow { justify-content: center; }
.centered .eyebrow::after { content: ""; width: 28px; height: 1px; background: currentColor; opacity: .6; }
.lead { color: var(--muted); font-size: 1.125rem; }

/* Lien de skip */
.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 10000;
  padding: 0.75rem 1.25rem; background: var(--olive-deep); color: var(--paper);
  font-weight: 600; border-radius: 0 0 8px 0;
}
.skip-link:focus { left: 0; }

/* Boutons */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  padding: 0.95rem 1.75rem; border-radius: 999px; border: 1.5px solid transparent;
  font: 600 0.95rem/1.2 var(--font-sans); letter-spacing: 0.02em;
  cursor: pointer; transition: transform .15s ease, background-color .2s, border-color .2s, color .2s;
}
.btn:hover { transform: translateY(-1px); }
.btn-sm { padding: 0.6rem 1.25rem; font-size: 0.88rem; }
.btn-primary { background: var(--olive-deep); color: var(--paper); }
.btn-primary:hover { background: var(--forest); color: var(--paper); }
.btn-ghost { background: transparent; color: var(--olive-ink); border-color: var(--line-strong); }
.btn-ghost:hover { background: var(--paper); border-color: var(--olive); color: var(--olive-ink); }
.btn-light { background: var(--paper); color: var(--forest); }
.btn-light:hover { background: #fff; color: var(--forest); }
.btn-ghost-light { background: transparent; color: var(--on-dark); border-color: rgba(245, 239, 230, 0.4); }
.btn-ghost-light:hover { border-color: var(--on-dark); color: var(--on-dark); }
.btn-lg { padding: 1.1rem 2.1rem; font-size: 1.02rem; }
.btn .icon { flex-shrink: 0; margin-left: -0.15rem; }

/* Réservation : la couleur terracotta est réservée aux boutons « Réserver » */
.btn-book {
  background: var(--book); color: #fff;
  box-shadow: 0 10px 22px -10px rgba(180, 83, 42, 0.65);
}
.btn-book:hover { background: var(--book-hover); color: #fff; box-shadow: 0 14px 26px -10px rgba(150, 63, 28, 0.7); }
.btn-book-light {
  background: var(--book-light); color: var(--forest-deep);
  box-shadow: 0 10px 24px -12px rgba(0, 0, 0, 0.5);
}
.btn-book-light:hover { background: var(--book-light-hover); color: var(--forest-deep); }

.text-link {
  display: inline-flex; align-items: center; gap: 0.4rem;
  font-weight: 600; font-size: 0.95rem; color: var(--clay);
  border-bottom: 1px solid currentColor; padding-bottom: 1px;
}
.text-link::after { content: "→"; transition: transform .2s ease; }
.text-link:hover::after { transform: translateX(3px); }

/* Photos */
.photo {
  position: relative; overflow: hidden;
  border-radius: var(--radius);
  background: var(--linen-deep);
}
.photo picture { display: contents; }
.photo img { width: 100%; height: 100%; object-fit: cover; }

/* En-tête */
.site-header {
  position: sticky; top: 0; z-index: 100;
  background: rgba(245, 239, 230, 0.88);
  backdrop-filter: saturate(1.2) blur(14px);
  -webkit-backdrop-filter: saturate(1.2) blur(14px);
  border-bottom: 1px solid var(--line);
}
.header-inner { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; padding: 0.85rem 0; }
/* Logo officiel vectorisé (images/logo-eywa-noir.svg, variante claire sur fonds sombres) */
.logo { display: flex; align-items: center; flex-shrink: 0; }
.logo-mark { display: block; height: 54px; width: auto; }
.nav { display: flex; align-items: center; gap: 1.75rem; }
.nav a { color: var(--ink); font-size: 0.95rem; font-weight: 500; position: relative; }
.nav a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -4px; height: 1px;
  background: var(--clay); transform: scaleX(0); transition: transform .25s ease;
}
.nav a:hover { color: var(--clay); }
.nav a:hover::after { transform: scaleX(1); }
.header-actions { display: flex; align-items: center; gap: 0.5rem; }
.nav-toggle {
  display: none; width: 44px; height: 44px; border: 0; background: none; cursor: pointer;
  border-radius: 50%;
}
.nav-toggle span {
  display: block; width: 22px; height: 1.5px; margin: 6px auto; background: var(--olive-ink);
  transition: transform .25s ease;
}
.nav-toggle[aria-expanded="true"] span:first-child { transform: translateY(3.75px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:last-child { transform: translateY(-3.75px) rotate(-45deg); }

/* Hero */
.hero { overflow: hidden; }
/* Hero plein écran : texte aligné sur la grille, photo jusqu'au bord droit */
.hero .hero-grid {
  width: 100%; max-width: none; margin: 0;
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: stretch;
  min-height: clamp(600px, calc(100svh - 84px), 940px);
}
.hero-copy {
  align-self: center;
  padding: clamp(3rem, 8vh, 6rem) clamp(2rem, 4vw, 4rem) clamp(3rem, 8vh, 6rem) max(var(--gutter), calc((100vw - var(--max)) / 2));
}
/* Le h1 porte le mot-clé (petit surtitre), le grand titre visuel est un h2 au même style qu'avant */
.hero h1.eyebrow { font-family: var(--font-sans); line-height: 1.7; text-wrap: wrap; }
.hero .hero-title { margin-bottom: 1.5rem; font-size: clamp(2.7rem, 4.3vw, 4.4rem); letter-spacing: -0.01em; }
.hero-lead { font-size: 1.2rem; color: var(--muted); max-width: 33rem; margin-bottom: 2.25rem; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 0.85rem; margin-bottom: 1.1rem; }
.book-reassure {
  display: flex; flex-wrap: wrap; gap: 0.35rem 1.25rem; margin-bottom: 2rem;
  font-size: 0.9rem; color: var(--muted);
}
.book-reassure li { display: flex; align-items: center; gap: 0.4rem; }
.book-reassure li::before { content: "✓"; color: var(--olive); font-weight: 700; }
.rating-badge {
  display: inline-flex; align-items: center; gap: 0.5rem;
  color: var(--ink); font-size: 0.9rem;
}
.rating-badge:hover { color: var(--ink); }
.rating-badge:hover .rating-count { text-decoration: underline; }
.rating-score { font-family: var(--font-sans); font-size: 1.05rem; font-weight: 700; line-height: 1; color: var(--olive-ink); font-variant-numeric: lining-nums tabular-nums; }
.stars { color: var(--gold); letter-spacing: 0.06em; font-size: 1rem; }
.rating-count { color: var(--muted); }
.g-logo { flex-shrink: 0; }

.hero-visual { position: relative; }
.hero-photo { position: absolute; inset: 0; border-radius: 0; }
/* Photo de Pauline et Adrien : cadrage centré sur le couple */
.hero-photo img { object-position: 51% 30%; }
.hero-hosts {
  position: absolute; left: clamp(1.25rem, 3vw, 2.5rem); bottom: clamp(1.25rem, 3vw, 2.5rem);
  display: flex; align-items: center; gap: 0.8rem;
  background: var(--paper); padding: 0.7rem 1.35rem;
  border-radius: 999px; box-shadow: var(--shadow-soft);
  font-size: 0.85rem; color: var(--muted); line-height: 1.3;
}
.hero-hosts strong { display: block; font-family: var(--font-serif); font-size: 1.1rem; font-weight: 600; color: var(--olive-ink); }

/* Sections */
.section { padding: var(--section-y) 0; }
.section-tint { background: var(--linen-deep); }
.section-head { max-width: 640px; margin-bottom: clamp(2.5rem, 5vw, 4rem); }
.section-head.centered { margin-inline: auto; text-align: center; }

/* À propos */
.about-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2.5rem, 6vw, 6rem); align-items: center;
}
.about-visual .photo { aspect-ratio: 4 / 3; max-width: 600px; box-shadow: var(--shadow); }
/* Deux photos du cabinet qui se chevauchent à gauche, texte et citation à droite */
.about-split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2.5rem, 6vw, 5rem); align-items: center; }
.about-photos { position: relative; height: clamp(420px, 42vw, 540px); }
.about-photos img { position: absolute; border-radius: var(--radius); object-fit: cover; box-shadow: var(--shadow); }
.about-photo-a { width: 62%; height: 78%; left: 0; top: 0; }
.about-photo-b { width: 52%; height: 62%; right: 0; bottom: 0; border: 6px solid var(--linen-deep); }
.about-split .pull-quote { margin: 1.5rem 0; font-size: clamp(1.3rem, 2vw, 1.55rem); }
@media (max-width: 960px) { .about-photos { height: 380px; max-width: 560px; width: 100%; margin-inline: auto; } }
@media (max-width: 640px) { .about-photos { height: 300px; } }
.about-section { padding: clamp(3.5rem, 7vw, 5.5rem) 0; }
/* Fiches praticiens dans leur propre bloc : la marge laisse dépasser les médaillons sous le titre */
.practitioners-section .section-head { margin-bottom: 0; }
.practitioners-section .practitioners { margin-top: calc(80px + 2.5rem); }
@media (max-width: 640px) { .practitioners-section .practitioners { margin-top: calc(65px + 2rem); } }
.about-copy > p { color: var(--muted); margin-bottom: 1.2rem; max-width: 36rem; }
.pull-quote {
  margin: 2rem 0; padding-left: 1.5rem; border-left: 2px solid var(--clay);
  font-family: var(--font-serif); font-style: italic; font-size: clamp(1.45rem, 2.4vw, 1.75rem);
  line-height: 1.35; color: var(--olive-ink); max-width: 34rem;
}

/* Fiches en médaillon : portrait rond qui déborde en haut à gauche, nom et spécialité à sa droite,
   texte en dessous sur toute la largeur */
.practitioners {
  display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem;
  margin-top: clamp(7rem, 11vw, 9rem);
}
.person {
  position: relative; display: flex; flex-direction: column;
  background: var(--paper); border: 1px solid var(--line); border-radius: calc(var(--radius) * 1.2);
  padding: 1.75rem 2.25rem 2.25rem;
}
.person-photo {
  position: absolute; top: -80px; left: 2.25rem; width: 160px; height: 160px;
  border-radius: 50%; border: 6px solid var(--linen);
  box-shadow: 0 12px 30px -14px rgba(54, 59, 44, 0.45);
}
.person-photo img { object-position: center 30%; }
/* Le bouton descend en bas de carte : les deux cartes ont leur bouton à la même hauteur */
.person-body { display: flex; flex-direction: column; flex: 1; }
.person-body h3, .person-body .role { margin-left: calc(160px + 1.5rem); }
.person-body .role { min-height: 2.6rem; }
.person-cta { margin-top: auto; align-self: flex-end; }
.person h3 { font-size: 1.9rem; }
.role {
  margin: 0.3rem 0 1rem; font-size: 0.8rem; font-weight: 600;
  letter-spacing: 0.1em; text-transform: uppercase; color: var(--clay);
}
.person-body > p:not(.role) { color: var(--muted); font-size: 1rem; margin-bottom: 1.25rem; }
.chips { display: flex; flex-wrap: wrap; gap: 0.45rem; margin-bottom: 1.4rem; }
.chips li {
  font-size: 0.8rem; font-weight: 600; color: var(--olive-ink);
  padding: 0.3rem 0.75rem; border-radius: 999px; border: 1px solid var(--line-strong);
}

/* Carte des soins */
.soin-name { font-size: 1.6rem; }
.soin-desc { color: var(--muted); font-size: 1rem; }
.soin-more { align-self: flex-start; font-size: 0.88rem; }
.soin-meta {
  display: flex; align-items: baseline; gap: 0.9rem; white-space: nowrap;
  font-size: 0.9rem; color: var(--muted);
}
.price { font-family: var(--font-serif); font-size: 1.6rem; font-weight: 600; color: var(--olive-ink); line-height: 1; }

/* Bandeau : texte à gauche, durée, prix et bouton à droite derrière un trait fin */
.soin-signature {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: clamp(1.75rem, 4vw, 3rem); align-items: center;
  background: var(--forest); color: var(--on-dark);
  border-radius: var(--radius); padding: clamp(2.25rem, 4.5vw, 3rem) clamp(1.75rem, 4vw, 2.75rem);
  margin-bottom: 1.5rem; position: relative; overflow: hidden; isolation: isolate;
  /* halo chaud très doux en haut à droite */
  background-image: radial-gradient(circle at 88% 18%, rgba(232, 168, 117, 0.13), transparent 52%);
}
/* Habillage : la « graine de vie » en très grand et très léger, coupée en haut et en bas par la carte */
.soin-signature::before {
  content: ""; position: absolute; z-index: -1; pointer-events: none;
  width: 760px; aspect-ratio: 1; top: 50%; left: 50%; transform: translate(-50%, -50%);
  background: url("../images/motif-graine-de-vie.svg") no-repeat center / contain; opacity: 0.03;
}
.sig-text { display: flex; flex-direction: column; gap: 0.75rem; }
.sig-side { display: flex; flex-direction: column; align-items: flex-end; gap: 1rem; padding-left: clamp(1.75rem, 4vw, 3rem); border-left: 1px solid rgba(245, 239, 230, 0.14); }
.soin-signature .badge { align-self: flex-start; }
.soin-signature .soin-name { color: var(--on-dark); font-size: clamp(1.8rem, 3vw, 2.3rem); }
.soin-signature .soin-desc { color: var(--on-dark-muted); max-width: 32rem; font-size: 1.05rem; }
.soin-signature .soin-meta { color: var(--on-dark-muted); }
.soin-signature .price { color: var(--on-dark); font-size: 2rem; }
.soin-signature .soin-more { color: var(--clay-light); }
.soin-signature .soin-more:hover { color: var(--on-dark); }
@media (max-width: 760px) {
  .soin-signature { grid-template-columns: 1fr; }
  .sig-side { flex-direction: row; align-items: center; justify-content: space-between; flex-wrap: wrap; padding: 1.25rem 0 0; border-left: 0; border-top: 1px solid rgba(245, 239, 230, 0.14); }
}
@media (max-width: 640px) {
  .soin-signature::before { width: 640px; }
  .sig-side .soin-cta { flex: 1 1 100%; }
}
.badge {
  display: inline-block; font-size: 0.72rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--forest); background: var(--clay-light); padding: 0.3rem 0.75rem; border-radius: 999px;
}

.soins-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }
.soins-list .soin {
  display: flex; flex-direction: column; gap: 0.75rem;
  background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 1.75rem 2rem;
  transition: border-color .2s, box-shadow .2s;
}
.soins-list .soin:hover { border-color: var(--line-strong); box-shadow: var(--shadow-soft); }
.soin-head { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }
/* Tous les boutons Réserver en bas à droite des cartes */
.soins-list .soin-cta { margin-top: auto; align-self: flex-end; }
.soins-list .soin-cta { padding: 0.72rem 1.5rem; font-size: 0.92rem; }
/* Massage intuitif : choix de durée à gauche, bouton Réserver à droite comme sur les autres cartes */
.soin-foot { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.soins-list .soin-foot .soin-cta { margin-top: 0; }

.duration-toggle { display: inline-flex; padding: 3px; border-radius: 999px; background: var(--linen-deep); }
.dur-opt {
  border: 0; background: transparent; cursor: pointer;
  font: 600 0.82rem/1 var(--font-sans); color: var(--muted);
  padding: 0.5rem 0.9rem; border-radius: 999px; transition: background .2s, color .2s;
}
.dur-opt.is-active { background: var(--olive-deep); color: var(--paper); }

.soins-list .soin-info { background: transparent; border-style: dashed; border-color: var(--line-strong); justify-content: center; }
.soins-list .soin-info:hover { box-shadow: none; }
.soins-list .soin-info { grid-column: 1 / -1; flex-direction: row; align-items: center; flex-wrap: wrap; gap: 0.75rem 2.5rem; padding-block: 1.4rem; }
.soins-list .soin-info .soin-name { font-size: 1.4rem; }
.soin-info .check-list { display: flex; flex-wrap: wrap; gap: 0.5rem 2rem; }
.soin-note { font-size: 0.88rem; color: var(--muted); font-style: italic; }
.check-list { display: grid; gap: 0.5rem; color: var(--muted); font-size: 0.98rem; }
.check-list li { display: flex; gap: 0.6rem; }
.check-list li::before { content: "✓"; color: var(--olive); font-weight: 700; }

/* Kinésiologie — bande sombre */
.section-dark { background: var(--forest); color: var(--on-dark); }
.section-dark h2, .section-dark h3 { color: var(--on-dark); }
.section-dark h2 em { color: var(--clay-light); }
.section-dark .eyebrow { color: var(--clay-light); }
.section-dark .lead { color: var(--on-dark-muted); }
.section-dark a:not(.btn) { color: var(--clay-light); }
.section-dark a:not(.btn):hover { color: var(--on-dark); }
/* Même ligne éditoriale que les soins de Pauline : en-tête centré, puis la carte de séance
   et « Pour qui ? » côte à côte à hauteur égale, note pratique dessous */
.kinesio-grid {
  display: grid; grid-template-columns: 1fr 1fr; align-items: stretch;
  grid-template-areas: "head head" "book pourqui" "note note";
  gap: 1.5rem;
}
.kinesio-head { grid-area: head; margin-bottom: clamp(1rem, 3vw, 2.5rem); }
.kinesio-head .lead { margin-bottom: 0; }
.kinesio-book { grid-area: book; display: flex; }
.kinesio-book .kinesio-offer { flex: 1; }
.kinesio-pourqui { grid-area: pourqui; }
.kinesio-grid > .kinesio-note {
  grid-area: note; margin-top: 0.75rem; padding: 0; border: 0;
  text-align: center; font-size: 0.95rem; color: var(--on-dark-muted);
}
.kinesio-offer .kinesio-contact { margin: 0; font-size: 0.9rem; color: var(--muted); }
.section-dark .kinesio-offer a:not(.btn) { color: var(--clay); }
.section-dark .kinesio-offer a:not(.btn):hover { color: var(--olive-ink); }
/* Carte de la séance : même aspect que les soins de Pauline, pour qu'on la lise comme un soin réservable */
.kinesio-offer {
  display: flex; flex-direction: column; gap: 0.75rem;
  background: var(--paper); border-radius: var(--radius); padding: 1.75rem 2rem;
  box-shadow: 0 18px 40px -20px rgba(0, 0, 0, 0.55);
}
.section-dark .kinesio-offer .soin-name { color: var(--olive-ink); }
.kinesio-offer .soin-cta { align-self: flex-end; margin-top: 0.5rem; }
.kinesio-block {
  padding: 1.75rem 2rem; border-radius: var(--radius);
  background: rgba(245, 239, 230, 0.06); border: 1px solid rgba(245, 239, 230, 0.12);
}
.kinesio-block h3 { margin-bottom: 0.75rem; }
.kinesio-block > p { color: var(--on-dark-muted); margin-bottom: 1.1rem; }
.chips-dark { margin-bottom: 0; }
.chips-dark li { color: var(--on-dark); border-color: rgba(245, 239, 230, 0.28); }
.kinesio-note {
  font-size: 0.92rem; color: var(--on-dark-muted);
  padding-top: 1.1rem; border-top: 1px solid rgba(245, 239, 230, 0.14);
}
/* Soin Symbiose : sa propre section après la kinésiologie. Une carte en deux parties :
   le soin à gauche, et à droite une colonne vert forêt avec Pauline & Adrien, le prix et le bouton */
.symbiose-section .section-head { margin-bottom: clamp(2rem, 4vw, 3rem); }
.duo-offer {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 380px); align-items: stretch;
  max-width: 980px; margin-inline: auto; overflow: hidden;
  background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius);
  box-shadow: var(--shadow-soft);
}
.duo-text { display: flex; flex-direction: column; justify-content: center; gap: 0.75rem; padding: clamp(1.75rem, 4vw, 2.5rem) clamp(1.75rem, 4vw, 2.75rem); }
.duo-text .badge { align-self: flex-start; }
.duo-offer .soin-name { color: var(--olive-ink); font-size: clamp(1.7rem, 2.6vw, 2.1rem); }
.duo-offer .soin-desc { max-width: 40rem; }
.duo-steps { display: flex; flex-wrap: wrap; gap: 0.6rem 1.5rem; margin-top: 0.25rem; }
.duo-steps li { display: flex; align-items: center; gap: 0.55rem; font-size: 0.95rem; color: var(--ink); }
.duo-steps b { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--clay); color: var(--clay); font-family: var(--font-serif); font-size: 1rem; font-weight: 500; flex-shrink: 0; }
.duo-side {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1.4rem; text-align: center;
  padding: 2rem 2.25rem; background: var(--forest); color: var(--on-dark);
  background-image: radial-gradient(circle at 85% 12%, rgba(232, 168, 117, 0.13), transparent 55%);
}
.duo-faces { display: flex; align-items: center; }
.duo-faces img { width: 104px; height: 104px; border-radius: 50%; object-fit: cover; border: 2px solid rgba(245, 239, 230, 0.85); }
.duo-amp {
  margin: 0 -0.9rem; position: relative; z-index: 1; display: grid; place-items: center;
  width: 40px; height: 40px; border-radius: 50%; background: var(--forest);
  font-family: var(--font-serif); font-style: italic; font-size: 1.6rem; color: var(--clay-light);
}
.duo-names { margin: 0; font-family: var(--font-serif); font-size: 1.6rem; line-height: 1.1; color: var(--on-dark); }
.duo-names em { color: var(--clay-light); }
.duo-roles { margin: -0.9rem 0 0; font-size: 0.82rem; color: var(--on-dark-muted); }
.duo-book { display: grid; justify-items: center; gap: 0.9rem; width: 100%; padding-top: 1.3rem; border-top: 1px solid rgba(245, 239, 230, 0.16); }
.duo-book .soin-meta { margin: 0; color: var(--on-dark-muted); }
.duo-book .price { color: var(--on-dark); font-size: 2rem; }
@media (max-width: 760px) {
  .duo-offer { grid-template-columns: 1fr; }
  .duo-side { padding: 1.75rem 1.5rem; }
  .duo-faces img { width: 88px; height: 88px; }
  .duo-book .soin-cta { width: 100%; justify-content: center; }
}

/* Avis */
.reviews-head {
  display: flex; justify-content: space-between; align-items: flex-end; gap: 2rem; flex-wrap: wrap;
  margin-bottom: 2.5rem;
}
.reviews-head h2 { margin-bottom: 0; }
.reviews-score {
  display: flex; align-items: center; gap: 0.9rem;
  background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius-sm);
  padding: 0.9rem 1.25rem;
}
.reviews-num {
  display: flex; align-items: center; gap: 0.5rem;
  font-family: var(--font-sans); font-size: 1.6rem; font-weight: 700; line-height: 1; color: var(--olive-ink);
  font-variant-numeric: lining-nums tabular-nums;
}
.reviews-num .stars { font-size: 1.15rem; }
.reviews-count { font-size: 0.85rem; color: var(--muted); margin-top: 0.3rem; }
.reviews-track {
  display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - 3rem) / 3); gap: 1.5rem;
  overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none;
  padding-bottom: 0.25rem;
}
.reviews-track::-webkit-scrollbar { display: none; }
.review {
  scroll-snap-align: start;
  display: flex; flex-direction: column; justify-content: space-between; gap: 1.5rem;
  background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 2rem 1.9rem 1.75rem;
}
.review blockquote {
  font-family: var(--font-serif); font-size: 1.3rem; line-height: 1.45; color: var(--ink);
}
.review blockquote::before {
  content: "“"; display: block; font-size: 3.5rem; line-height: 0.6; height: 1.4rem;
  color: var(--clay); opacity: 0.7;
}
.review-meta { display: grid; gap: 0.1rem; font-size: 0.9rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.review-meta strong { color: var(--olive-ink); font-weight: 600; }
.review-meta span { color: var(--muted); font-size: 0.85rem; }
.reviews-nav { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-top: 1.75rem; }
.arrows { display: flex; gap: 0.5rem; }
.arrow {
  width: 48px; height: 48px; display: grid; place-items: center; cursor: pointer;
  border-radius: 50%; border: 1px solid var(--line-strong); background: transparent; color: var(--olive-ink);
  transition: background .2s, border-color .2s, opacity .2s;
}
.arrow:hover:not(:disabled) { background: var(--paper); border-color: var(--olive); }
.arrow:disabled { opacity: 0.35; cursor: default; }

.reviews-cta {
  display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 1rem 1.5rem;
  margin-top: 3rem; padding-top: 2.5rem; border-top: 1px solid var(--line);
}
.reviews-cta p { font-family: var(--font-serif); font-size: 1.5rem; color: var(--olive-ink); }

/* Barre de réservation mobile */
.mobile-book { display: none; }

/* Déroulement */
.steps { counter-reset: step; display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem; }
.step { counter-increment: step; padding-top: 1.5rem; border-top: 1px solid var(--line-strong); }
.step::before {
  content: "0" counter(step); display: block; margin-bottom: 0.9rem;
  font-family: var(--font-serif); font-size: 2.6rem; line-height: 1; color: var(--clay);
}
.step h3 { margin-bottom: 0.5rem; font-size: 1.45rem; }
.step p { color: var(--muted); font-size: 0.98rem; }

.faq-grid {
  display: grid; grid-template-columns: 0.8fr 1.2fr; gap: clamp(2rem, 6vw, 5rem);
  margin-top: clamp(4rem, 8vw, 6.5rem); padding-top: clamp(3rem, 6vw, 4.5rem);
  border-top: 1px solid var(--line);
}
.faq-intro .lead { margin-bottom: 1rem; }
.faq-intro .btn { margin-top: 1.75rem; }
.faq details { border-bottom: 1px solid var(--line-strong); }
.faq details:first-child { border-top: 1px solid var(--line-strong); }
.faq summary {
  list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  padding: 1.25rem 0; font-family: var(--font-serif); font-size: 1.4rem; font-weight: 500; color: var(--olive-ink);
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: "+"; flex-shrink: 0; width: 32px; height: 32px; display: grid; place-items: center;
  border-radius: 50%; border: 1px solid var(--line-strong);
  font-family: var(--font-sans); font-size: 1.1rem; color: var(--olive-deep); transition: transform .25s ease;
}
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details p { color: var(--muted); padding: 0 3rem 1.4rem 0; }
.faq details .todo-note { margin: 0 0 1.4rem; }

/* Accès */
.access-grid { display: grid; grid-template-columns: 0.85fr 1.15fr; gap: clamp(2rem, 6vw, 5rem); align-items: center; }
.address { font-style: normal; font-size: 1.15rem; color: var(--ink); margin-bottom: 1.75rem; }
.hours { margin-bottom: 2rem; max-width: 26rem; }
.hours li {
  display: flex; justify-content: space-between; gap: 1rem;
  padding: 0.75rem 0; border-bottom: 1px solid var(--line);
  font-size: 0.98rem;
}
.hours li span:first-child { font-weight: 600; color: var(--olive-ink); }
.hours .closed { color: var(--muted); font-style: italic; }
.access-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; }
.map-wrap {
  position: relative; border-radius: var(--radius); overflow: hidden;
  aspect-ratio: 4 / 3; background: var(--linen-deep); border: 1px solid var(--line);
  box-shadow: var(--shadow-soft);
}
.map-wrap iframe { width: 100%; height: 100%; border: 0; display: block; filter: sepia(0.25) saturate(0.85); }
.map-link {
  position: absolute; right: 1rem; bottom: 1rem;
  background: var(--paper); color: var(--olive-ink); font-size: 0.85rem; font-weight: 600;
  padding: 0.5rem 0.95rem; border-radius: 999px; box-shadow: var(--shadow-soft);
}

/* Contact */
#contact { padding-top: 0; }
.contact-band {
  position: relative; overflow: hidden; text-align: center;
  background: var(--forest-deep); color: var(--on-dark);
  border-radius: calc(var(--radius) * 1.5);
  padding: clamp(3rem, 7vw, 5.5rem) clamp(1.5rem, 5vw, 4rem);
}
.contact-mark { height: 104px; width: auto; margin: 0 auto 1.75rem; }
.contact-band h2 { color: var(--on-dark); }
.contact-band h2 em { color: var(--clay-light); }
.contact-band > p { color: var(--on-dark-muted); max-width: 30rem; margin: 0 auto 2rem; }
.contact-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.85rem; }
.contact-band .contact-extra { margin: 2rem auto 0; font-size: 0.92rem; }
.contact-extra a { color: var(--on-dark); border-bottom: 1px solid rgba(245, 239, 230, 0.4); }
.contact-extra a:hover { color: var(--clay-light); }
.contact-band .todo-note { max-width: 28rem; margin: 1.5rem auto 0; }

/* Pied de page */
.site-footer { background: var(--forest-deep); color: var(--on-dark-muted); padding: 4.5rem 0 2rem; font-size: 0.95rem; }
.site-footer .logo { margin-bottom: 1.25rem; }
.site-footer .logo-mark { height: 72px; }
.footer-grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr; gap: 2.5rem; }
.footer-brand p { max-width: 22rem; }
.site-footer h3 {
  font-family: var(--font-sans); font-size: 0.78rem; font-weight: 600; letter-spacing: 0.16em;
  text-transform: uppercase; color: var(--on-dark); margin-bottom: 1rem;
}
.site-footer ul { display: grid; gap: 0.5rem; }
.site-footer a { color: var(--on-dark-muted); }
.site-footer a:hover { color: var(--on-dark); }
.footer-bottom {
  display: flex; justify-content: space-between; flex-wrap: wrap; gap: 0.75rem 2rem;
  margin-top: 3.5rem; padding-top: 1.5rem; border-top: 1px solid rgba(245, 239, 230, 0.12);
  font-size: 0.82rem;
}

/* Pages de soin, format page de vente : promesse + réservation + note Google dès l'arrivée,
   avis, bénéfices, pour qui / déroulé, offres à comparer, praticien, FAQ, dernier appel */
.breadcrumb { font-size: 0.85rem; color: var(--muted); margin-bottom: 1.5rem; }
.breadcrumb a { color: var(--muted); text-decoration: underline; text-underline-offset: 3px; }
.breadcrumb a:hover { color: var(--clay); }
.lp-hero { padding: clamp(2rem, 5vw, 4rem) 0 clamp(2.5rem, 5vw, 4rem); }
.lp-hero-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr); gap: clamp(2rem, 5vw, 4.5rem); align-items: center; }
.lp-hero-copy h1 { margin-bottom: 1rem; }
.lp-facts { display: flex; flex-wrap: wrap; gap: 0.6rem; margin: 0 0 1.75rem; }
.lp-facts li { padding: 0.45rem 0.95rem; border-radius: 999px; background: var(--paper); border: 1px solid var(--line); font-size: 0.92rem; color: var(--muted); }
.lp-facts strong { color: var(--olive-ink); }
.lp-hero .hero-actions { margin-bottom: 1.25rem; }
.lp-hero .rating-badge { margin-bottom: 0.9rem; }
.lp-hero .book-reassure { margin-bottom: 0; }
.lp-hero-photo { aspect-ratio: 4 / 5; width: 100%; max-width: 480px; justify-self: end; box-shadow: var(--shadow); }
.lp-proof { background: var(--linen-deep); padding: clamp(2rem, 4vw, 3rem) 0; }
.lp-reviews { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
.lp-review { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.5rem 1.75rem; }
.lp-review blockquote { font-family: var(--font-serif); font-size: 1.22rem; line-height: 1.45; color: var(--ink); margin: 0.5rem 0 0.75rem; }
.lp-review figcaption { font-size: 0.85rem; font-weight: 600; color: var(--muted); }
.lp-benefits { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.lp-benefit { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 2rem 1.75rem; text-align: center; }
.lp-icon { display: inline-grid; place-items: center; width: 64px; height: 64px; margin-bottom: 1rem; border-radius: 50%; background: var(--linen-deep); color: var(--clay); }
.lp-benefit h3 { font-size: 1.45rem; margin-bottom: 0.5rem; }
.lp-benefit p { color: var(--muted); font-size: 0.98rem; }
.lp-two { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
.lp-panel { background: var(--paper); border: 1px solid var(--line); border-radius: calc(var(--radius) * 1.2); padding: 2.25rem; }
.lp-panel h2 { font-size: clamp(1.8rem, 3vw, 2.3rem); margin-bottom: 1.25rem; }
.lp-checks { gap: 0.8rem; font-size: 1rem; }
.lp-checks li::before { color: var(--clay); }
.lp-steps { counter-reset: s; display: grid; gap: 1.1rem; }
.lp-steps li { counter-increment: s; position: relative; padding-left: 3.25rem; min-height: 2.4rem; }
.lp-steps li::before {
  content: counter(s); position: absolute; left: 0; top: 0; width: 2.3rem; height: 2.3rem; border-radius: 50%;
  display: grid; place-items: center; background: var(--olive-deep); color: var(--paper);
  font-family: var(--font-serif); font-size: 1.2rem; line-height: 1;
}
.lp-steps strong { display: block; color: var(--olive-ink); font-size: 1.05rem; }
.lp-steps span { color: var(--muted); font-size: 0.95rem; }
.lp-rating-center { justify-content: center; }
.lp-offers { display: grid; gap: 1.5rem; margin: 0 auto; }
.lp-offers-1 { max-width: 460px; }
.lp-offers-2 { max-width: 820px; grid-template-columns: 1fr 1fr; }
.lp-offer {
  position: relative; display: flex; flex-direction: column; gap: 1rem;
  background: var(--paper); border: 1px solid var(--line); border-radius: calc(var(--radius) * 1.2); padding: 2.25rem 2rem 2rem;
}
.lp-offer.is-featured { border: 2px solid var(--book); box-shadow: var(--shadow); }
.lp-offer .badge { position: absolute; top: -0.8rem; left: 50%; transform: translateX(-50%); background: var(--book); color: #fff; white-space: nowrap; }
.lp-offer h3 { font-size: 1.6rem; }
.lp-offer-price { display: flex; align-items: baseline; gap: 0.75rem; color: var(--muted); }
.lp-offer-price .price { font-size: 2.4rem; }
.lp-offer .check-list { flex: 1; }
.lp-offer-cta { width: 100%; }
.lp-offers-note { text-align: center; color: var(--muted); font-size: 0.9rem; margin-top: 1.75rem; }
.lp-caution-section { padding-bottom: 0; }
.lp-caution {
  max-width: 860px; margin: 0 auto; background: var(--paper); border: 1px solid var(--line);
  border-left: 5px solid var(--clay); border-radius: var(--radius); padding: clamp(1.5rem, 4vw, 2.25rem) clamp(1.5rem, 4vw, 2.5rem);
}
.lp-caution h2 { font-size: clamp(1.5rem, 3vw, 1.9rem); margin-bottom: 0.5rem; }
.lp-caution p { color: var(--muted); margin-bottom: 1rem; }
.lp-caution-list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 0.45rem 1.5rem; }
.lp-caution-list li { position: relative; padding-left: 1.2rem; }
.lp-caution-list li::before { content: ""; position: absolute; left: 0; top: 0.62em; width: 7px; height: 7px; border-radius: 50%; background: var(--clay); }
@media (max-width: 640px) { .lp-caution-list { grid-template-columns: 1fr; } }
.lp-pro { display: grid; grid-template-columns: 220px 1fr; gap: clamp(2rem, 5vw, 4rem); align-items: center; max-width: 960px; margin: 0 auto; }
.lp-pro-photo { width: 220px; height: 220px; border-radius: 50%; object-fit: cover; border: 6px solid var(--paper); box-shadow: var(--shadow); }
.lp-pro h2 { margin-bottom: 0.25rem; }
.lp-pro-bio { color: var(--muted); margin-bottom: 1.25rem; max-width: 40rem; }
.lp-section .faq-grid { margin-top: 0; padding-top: 0; border-top: 0; }
.lp-rating-dark { margin-top: 1.75rem; color: var(--on-dark); }
.lp-rating-dark:hover { color: var(--on-dark); }
.lp-rating-dark .rating-score { color: var(--on-dark); }
.lp-rating-dark .rating-count { color: var(--on-dark-muted); }

/* Page mentions légales */
.site-footer-slim { padding: 0.5rem 0 2rem; }
.site-footer-slim .footer-bottom { border-top: 0; margin-top: 1.5rem; }
.page-hero { padding: clamp(3rem, 7vw, 5rem) 0 var(--section-y); }
.legal-content { max-width: 720px; }
.legal-content h1 { font-size: clamp(2.4rem, 5vw, 3.4rem); margin-bottom: 1.5rem; }
.legal-content h2 { font-size: 1.75rem; margin: 2.5rem 0 0.75rem; }
.legal-content p { color: var(--muted); }
.legal-back { margin-top: 3rem; display: flex; flex-wrap: wrap; gap: 0.75rem; }

/* Notes de travail : visibles uniquement avec ?todo dans l'URL */
.todo-note, .replace-tag { display: none; }
.show-todo .todo-note {
  display: block; background: #fff8e8; border: 1px dashed #c9a86a; color: #6a5410;
  padding: 0.9rem 1.1rem; border-radius: var(--radius-sm); font-size: 0.9rem; margin: 1.5rem 0; text-align: left;
}
.show-todo .replace-tag {
  display: block; position: absolute; left: 50%; top: 1.5rem; transform: translateX(-50%);
  white-space: nowrap; background: #fff8e8; color: #6a5410; font-size: 0.75rem; font-weight: 600;
  padding: 0.3rem 0.7rem; border-radius: 999px;
}

/* Responsive */
@media (max-width: 1080px) {
  .reviews-track { grid-auto-columns: calc((100% - 1.5rem) / 2); }
  .steps { grid-template-columns: repeat(2, 1fr); gap: 2.25rem 1.5rem; }
}

@media (max-width: 960px) {
  .nav-toggle { display: block; }
  .nav {
    display: none; position: absolute; top: 100%; left: 0; right: 0;
    flex-direction: column; align-items: stretch; gap: 0;
    background: var(--linen); border-bottom: 1px solid var(--line); box-shadow: var(--shadow-soft);
    padding: 0.5rem 1.25rem 1.25rem;
  }
  .nav.open { display: flex; }
  .nav a { padding: 0.9rem 0; border-bottom: 1px solid var(--line); font-size: 1.05rem; }
  .nav a::after { display: none; }

  .hero .hero-grid, .about-grid, .about-split, .kinesio-grid, .faq-grid, .access-grid { grid-template-columns: 1fr; }
  .lp-hero-grid, .lp-reviews, .lp-benefits, .lp-two, .lp-offers-2 { grid-template-columns: 1fr; }
  .lp-hero-photo { justify-self: center; max-width: 360px; }
  .lp-pro { grid-template-columns: 1fr; text-align: center; justify-items: center; }
  .lp-pro .eyebrow { justify-content: center; }
  .lp-pro-photo { width: 160px; height: 160px; }
  .kinesio-grid { grid-template-areas: "head" "book" "pourqui" "note"; }
  .kinesio-grid > .kinesio-note { margin-top: 0; text-align: left; }
  .kinesio-head { margin-bottom: 0.5rem; }
  .hero .hero-grid { min-height: 0; }
  .hero-copy { padding: 2.75rem var(--gutter) 2.5rem; }
  .hero-photo { position: relative; aspect-ratio: 4 / 3; }
  .hero-hosts { white-space: nowrap; }
  .about-visual .photo { max-width: 600px; margin-inline: auto; }
  .practitioners { grid-template-columns: 1fr; gap: 7rem; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .footer-brand { grid-column: 1 / -1; }
}

@media (max-width: 960px) {
  .mobile-book {
    display: flex; gap: 0.6rem; position: fixed; z-index: 90; left: 0; right: 0; bottom: 0;
    padding: 0.75rem 1rem calc(0.75rem + env(safe-area-inset-bottom));
    background: rgba(245, 239, 230, 0.94); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
    border-top: 1px solid var(--line); box-shadow: 0 -8px 24px -16px rgba(54, 59, 44, 0.35);
    transform: translateY(110%); transition: transform .3s ease;
  }
  .mobile-book.is-visible { transform: none; }
  .mobile-book .btn-book { flex: 1; }
  .btn-call {
    width: 52px; padding: 0; flex-shrink: 0;
    border-color: var(--line-strong); color: var(--olive-ink); background: var(--paper);
  }
  .site-footer { padding-bottom: 6.5rem; }
}

@media (max-width: 640px) {
  .lp-panel, .lp-offer { padding: 1.75rem 1.5rem; }
  .lp-offers-2 { gap: 2rem; }
  .hero-hosts { display: none; }
  .soins-list .soin-cta, .kinesio-offer .soin-cta, .soin-signature .soin-cta, .person-cta { align-self: stretch; }
  .kinesio-offer { padding: 1.5rem; }
  .soin-foot { flex-direction: column; align-items: stretch; }
  .reviews-cta { flex-direction: column; text-align: center; }
  .contact-actions .btn { width: 100%; }
  body { font-size: 1rem; }
  .header-inner { gap: 0.75rem; }
  .header-inner .logo-mark { height: 44px; }
  .hero-actions .btn { flex: 1 1 auto; }
  .person { padding: 5.25rem 1.5rem 1.5rem; }
  .person-photo { width: 130px; height: 130px; top: -65px; left: 1.5rem; }
  .person-body h3, .person-body .role { margin-left: 0; }
  .person-body .role { min-height: 0; }
  .practitioners { gap: 6rem; margin-top: 6.5rem; }
  .soins-list { grid-template-columns: 1fr; }
  .soins-list .soin { padding: 1.5rem; }
  .soin-head { flex-direction: column; gap: 0.35rem; }
  .reviews-track { grid-auto-columns: 86%; gap: 1rem; }
  .review { padding: 1.6rem 1.5rem 1.5rem; }
  .review blockquote { font-size: 1.2rem; }
  .steps { grid-template-columns: 1fr; gap: 1.75rem; }
  .faq summary { font-size: 1.25rem; }
  .faq details p { padding-right: 0; }
  .footer-grid { grid-template-columns: 1fr; }
}

@media (max-width: 400px) {
  .header-actions .btn .icon { display: none; }
  .header-actions .btn { padding-inline: 1rem; }
}

/* Bandeau de consentement Google Analytics (js/audience.js) */
.cookie-banner {
  position: fixed; z-index: 200; left: 1rem; right: 1rem; bottom: 1rem; margin: 0 auto; max-width: 720px;
  display: flex; align-items: center; gap: 1rem 1.5rem; padding: 1.1rem 1.4rem;
  background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 18px 40px -18px rgba(54, 59, 44, .35);
}
.cookie-banner[hidden] { display: none; }
.cookie-banner p { margin: 0; font-size: 0.92rem; color: var(--muted); }
.cookie-banner a { color: var(--clay); }
.cookie-actions { display: flex; gap: 0.6rem; flex-shrink: 0; }
.btn-cookie { background: transparent; color: var(--olive-ink); border-color: var(--olive-ink); min-width: 6.5rem; }
.btn-cookie:hover { background: var(--olive-ink); color: var(--paper); }
@media (max-width: 640px) {
  .cookie-banner { flex-direction: column; align-items: stretch; left: 0.75rem; right: 0.75rem; bottom: 0.75rem; }
  .cookie-actions .btn { flex: 1; }
}

/* ---------- Articles ---------- */
.art-head { max-width: 920px; padding-top: clamp(2rem, 5vw, 3.5rem); text-align: left; }
.art-head h1 { font-size: clamp(2.4rem, 4.6vw, 4rem); margin-bottom: 1.1rem; }
.art-lead { font-size: clamp(1.15rem, 1.6vw, 1.3rem); color: var(--muted); max-width: 46rem; margin-bottom: 1.75rem; }
.art-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 0.5rem 0.9rem; font-size: 0.95rem; }
.art-meta img { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
.art-meta p { display: flex; flex-direction: column; line-height: 1.35; }
.art-meta a { color: var(--olive-ink); }
.art-meta span { color: var(--muted); font-size: 0.88rem; }
.art-meta .art-meta-info { flex-direction: row; gap: 0.5rem; color: var(--muted); padding-left: 0.9rem; border-left: 1px solid var(--line-strong); }
.art-cover { max-width: 1104px; margin-top: clamp(1.75rem, 4vw, 2.75rem); }
.art-cover img { width: 100%; aspect-ratio: 3 / 1; object-fit: cover; border-radius: calc(var(--radius) * 1.2); box-shadow: var(--shadow); }

.art-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: clamp(2.5rem, 5vw, 4.5rem); max-width: 1104px; padding: clamp(2.5rem, 5vw, 4rem) 0 var(--section-y); align-items: start; }
.art-body { max-width: 44rem; font-size: 1.125rem; line-height: 1.8; }
.art-body > p, .art-body > ul { margin-bottom: 1.25rem; }
.art-body h2 { font-size: clamp(1.9rem, 3vw, 2.5rem); margin: 3rem 0 1rem; scroll-margin-top: 90px; }
.art-body h3 { font-size: 1.5rem; margin: 2rem 0 0.6rem; }
.art-body strong { color: var(--olive-ink); font-weight: 600; }
.art-list { display: grid; gap: 0.7rem; padding-left: 0; }
.art-list li { position: relative; padding-left: 1.5rem; }
.art-list li::before { content: ""; position: absolute; left: 0.2rem; top: 0.72em; width: 7px; height: 7px; border-radius: 50%; background: var(--clay); }

.art-key { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.5rem 1.75rem; margin-bottom: 1.5rem; }
.art-key-title, .art-note-title, .art-toc-title, .art-cta-title { font-family: var(--font-serif); font-size: 1.45rem; color: var(--olive-ink); line-height: 1.2; margin-bottom: 0.75rem; }
.art-key .check-list { font-size: 1rem; color: var(--ink); }
.art-note { background: var(--linen-deep); border-left: 4px solid var(--olive); border-radius: var(--radius-sm); padding: 1.25rem 1.5rem; margin: 1.75rem 0; }
.art-note p:last-child { color: var(--muted); font-size: 1rem; margin: 0; }

.art-toc ol { list-style: none; counter-reset: toc; display: grid; gap: 0.45rem; }
.art-toc li { counter-increment: toc; display: flex; gap: 0.6rem; font-size: 0.95rem; line-height: 1.4; }
.art-toc li::before { content: counter(toc, decimal-leading-zero); color: var(--clay); font-weight: 600; font-size: 0.8rem; padding-top: 0.15rem; }
.art-toc a { color: var(--ink); }
.art-toc a:hover, .art-toc a.is-current { color: var(--clay); }
.art-toc-inline { display: none; }

.art-aside { position: sticky; top: 96px; display: grid; gap: 1.25rem; }
.art-toc-side { padding: 0.25rem 0 0.25rem 1.25rem; border-left: 1px solid var(--line-strong); }
.art-book { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.5rem; box-shadow: var(--shadow-soft); }
.art-book .eyebrow { margin-bottom: 0.4rem; }
.art-book-price { display: flex; align-items: baseline; gap: 0.6rem; color: var(--muted); margin-bottom: 0.75rem; }
.art-book-price .price { font-size: 2.2rem; }
.art-book .check-list { font-size: 0.9rem; margin-bottom: 1.1rem; }
.art-book .btn { width: 100%; margin-bottom: 0.9rem; }

.art-cta { display: flex; gap: 1.5rem; align-items: center; background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.5rem 1.75rem; margin: 2.5rem 0; box-shadow: var(--shadow-soft); }
.art-cta img { width: 96px; height: 96px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.art-cta .art-cta-title { margin-bottom: 0.3rem; font-size: 1.45rem; color: var(--olive-ink); }
.art-cta p { font-size: 1rem; color: var(--muted); }
.art-cta-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem 1.25rem; margin-top: 1rem; }

.art-faq { margin-top: 0.5rem; }
.art-faq summary { font-size: 1.05rem; }
.art-faq details p { font-size: 1rem; }

.art-author { display: flex; gap: 1.5rem; align-items: flex-start; border-top: 1px solid var(--line-strong); margin-top: 3rem; padding-top: 2rem; }
.art-author img { width: 88px; height: 88px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.art-author p { font-size: 1rem; color: var(--muted); margin-bottom: 0.6rem; }
.art-author .art-author-kicker { font-size: 0.78rem; letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 0.2rem; }
.art-author .art-author-name { font-family: var(--font-serif); font-size: 1.6rem; color: var(--olive-ink); line-height: 1.2; margin-bottom: 0.1rem; }
.art-author .role { margin-bottom: 0.6rem; }

.art-list-head { padding: clamp(2rem, 5vw, 3.5rem) 0 0; }
.art-list-head h1 { margin-bottom: 1rem; }
.art-list-section { padding-top: clamp(2rem, 4vw, 3rem); }
.art-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 2rem; }
.art-card { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; display: flex; flex-direction: column; transition: box-shadow .2s ease, transform .2s ease; }
.art-card:hover { box-shadow: var(--shadow); transform: translateY(-2px); }
.art-card-img img { width: 100%; aspect-ratio: 2 / 1; object-fit: cover; }
.art-card-body { padding: 1.5rem 1.6rem 1.75rem; display: flex; flex-direction: column; gap: 0.6rem; flex: 1; }
.art-card h2 { font-size: 1.7rem; margin: 0; }
.art-card h2 a { color: var(--olive-ink); }
.art-card h2 a:hover { color: var(--clay); }
.art-card h2 a::after { content: ""; position: absolute; inset: 0; }
.art-card { position: relative; }
.art-card-body > p:not(.eyebrow) { color: var(--muted); font-size: 0.98rem; }
.art-card .art-card-meta { margin-top: auto; font-size: 0.85rem; }

@media (max-width: 960px) {
  .art-layout { grid-template-columns: 1fr; }
  .art-body { max-width: none; }
  .art-aside { position: static; }
  .art-toc-side { display: none; }
  .art-toc-inline { display: block; background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 0.9rem 1.25rem; margin-bottom: 1rem; }
  .art-toc-inline summary { cursor: pointer; font-weight: 600; color: var(--olive-ink); }
  .art-toc-inline ol { margin-top: 0.75rem; }
}
@media (max-width: 640px) {
  .art-body { font-size: 1.0625rem; }
  .art-meta .art-meta-info { padding-left: 0; border-left: 0; width: 100%; }
  .art-cta { flex-direction: column; align-items: flex-start; text-align: left; }
  .art-cta img { width: 72px; height: 72px; }
  .art-cover img { aspect-ratio: 2 / 1; border-radius: var(--radius); }
  .art-cta-actions .btn { width: 100%; }
  .art-author { flex-direction: column; }
  .art-grid { grid-template-columns: 1fr; }
}

/* Liens dans le texte des articles */
.art-body p a, .art-body li a { color: var(--clay); text-decoration: underline; text-decoration-color: var(--clay-light); text-decoration-thickness: 1.5px; text-underline-offset: 3px; }
.art-body p a:hover, .art-body li a:hover { color: var(--olive-ink); text-decoration-color: currentColor; }
.art-body .art-author a, .art-body .art-cta a { text-decoration: none; }

/* Maillage interne : « Vous aimerez aussi » */
.rel-section .section-head { margin-bottom: 2rem; }
.rel-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; max-width: 1104px; margin: 0 auto; }
.rel-card { position: relative; display: flex; flex-direction: column; gap: 0.5rem; background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.6rem 1.6rem 1.5rem; transition: box-shadow .2s ease, transform .2s ease; }
.rel-card:hover { box-shadow: var(--shadow); transform: translateY(-2px); }
.rel-kicker { font-size: 0.8rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); }
.rel-card h3 { font-size: 1.5rem; }
.rel-card h3 a { color: var(--olive-ink); }
.rel-card h3 a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.rel-card:hover h3 a { color: var(--clay); }
.rel-card > p:not(.rel-kicker) { color: var(--muted); font-size: 0.98rem; flex: 1; }
.rel-card .text-link { margin-top: 0.25rem; align-self: flex-start; }
@media (max-width: 960px) { .rel-grid { grid-template-columns: 1fr; max-width: 560px; } }

/* Retraite : trois photos de la dernière édition, sous le programme */
.retreat-photos-section { padding-block: clamp(2.5rem, 6vw, 4.5rem); }
.retreat-photos { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(0.6rem, 2vw, 1.5rem); }
.retreat-photo { margin: 0; display: grid; gap: 0.6rem; }
.retreat-photo picture { display: block; aspect-ratio: 1; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-soft); }
.retreat-photo img { width: 100%; height: 100%; object-fit: cover; }
.retreat-photo figcaption { text-align: center; font-family: var(--font-serif); font-size: clamp(1rem, 2.4vw, 1.3rem); color: var(--olive-ink); line-height: 1.2; }
@media (max-width: 560px) { .retreat-photo picture { border-radius: 12px; } }
.retreat-photos-note { margin: 1rem 0 0; text-align: center; font-size: 0.85rem; color: var(--muted); }

/* Retraites : une carte par date, date en tête, lieu, prix et demande de place en bas */
.retreat-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; }
.retreat-card {
  display: flex; flex-direction: column; gap: 0.8rem;
  background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 1.75rem 2rem; transition: border-color .2s, box-shadow .2s;
}
.retreat-card:hover { border-color: var(--line-strong); box-shadow: var(--shadow-soft); }
.retreat-date { margin: 0; }
.retreat-date span {
  display: inline-block; font-size: 0.78rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--clay); border: 1px solid currentColor; border-radius: 999px; padding: 0.3rem 0.8rem;
}
.retreat-card h3 { font-size: 1.7rem; color: var(--olive-ink); margin: 0; }
.retreat-text { color: var(--muted); margin: 0; }
.retreat-place { display: flex; gap: 0.45rem; align-items: flex-start; margin: 0; font-size: 0.92rem; font-weight: 600; color: var(--olive-ink); }
.retreat-place svg { flex-shrink: 0; margin-top: 0.2rem; color: var(--clay); }
.retreat-foot { margin-top: auto; padding-top: 1rem; border-top: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.retreat-foot .soin-meta { margin: 0; }
@media (max-width: 760px) { .retreat-list { grid-template-columns: 1fr; } .retreat-card { padding: 1.5rem; } }

/* Menu : sous-menu « Soins » (ouvert au survol ou au clavier sur grand écran, masqué sur mobile où « Soins » mène à la carte) */
.nav-item { position: relative; display: flex; align-items: center; }
.has-sub > .nav-parent { padding-right: 1rem; }
.has-sub > .nav-parent::before {
  content: ""; position: absolute; right: 0; top: 50%; width: 6px; height: 6px; margin-top: -5px;
  border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg); opacity: .6;
}
.nav-sub {
  position: absolute; top: 100%; left: -1.1rem; z-index: 60; min-width: 290px; margin-top: 0.85rem;
  display: grid; gap: 0.1rem; padding: 0.6rem;
  background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius-sm); box-shadow: var(--shadow-soft);
  opacity: 0; visibility: hidden; transform: translateY(6px); transition: opacity .18s ease, transform .18s ease, visibility .18s;
}
.nav-sub::before { content: ""; position: absolute; left: 0; right: 0; top: -0.9rem; height: 0.9rem; }
.has-sub:hover .nav-sub, .has-sub:focus-within .nav-sub { opacity: 1; visibility: visible; transform: none; }
.nav .nav-sub a { padding: 0.5rem 0.7rem; border-radius: 8px; font-size: 0.92rem; }
.nav .nav-sub a::after { display: none; }
.nav .nav-sub a:hover { background: var(--linen); }
.nav .nav-sub .nav-sub-all { margin-top: 0.3rem; padding-top: 0.65rem; border-top: 1px solid var(--line); border-radius: 0 0 8px 8px; font-weight: 600; color: var(--clay); }
@media (max-width: 960px) {
  .nav-item { display: block; }
  .nav-sub { display: none; }
  .has-sub > .nav-parent { display: block; padding-right: 0; }
  .has-sub > .nav-parent::before { display: none; }
}

/* Page Avis : tous les avis en grille */
.reviews-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 1.5rem; list-style: none; }
/* Page Accès : communes desservies par département */
.area-group { margin-top: 1.75rem; }
.area-group h3 { font-size: 1.35rem; margin-bottom: 0.75rem; }
.area-group .chips { margin-bottom: 0; }
/* Page FAQ : un groupe de questions par soin */
.faq-page { max-width: 860px; display: grid; gap: clamp(2.5rem, 5vw, 3.5rem); }
.faq-group h2 { font-size: clamp(1.6rem, 2.6vw, 2.1rem); display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.faq-group h2 .text-link { font-family: var(--font-sans); font-size: 0.9rem; }

/* Cocon d'articles : liste par thème, cartes sans image, encart « pour aller plus loin » */
.art-cats { justify-content: center; margin-bottom: 1rem; }
.chips-links li { padding: 0; }
.chips-links a { display: block; padding: 0.3rem 0.75rem; color: var(--olive-ink); }
.chips-links a:hover { color: var(--clay); }
.art-cat-title { font-size: clamp(1.7rem, 2.8vw, 2.3rem); margin: clamp(2.5rem, 5vw, 3.5rem) 0 1.25rem; scroll-margin-top: 90px; }
.art-cat-title span { font-family: var(--font-sans); font-size: 0.9rem; color: var(--muted); font-weight: 600; margin-left: 0.4rem; }
.art-card-text .art-card-body { padding-top: 1.75rem; }
.art-book-soft .art-book-title { font-family: var(--font-serif); font-size: 1.5rem; color: var(--olive-ink); line-height: 1.2; margin: 0.2rem 0 0.5rem; }
.art-book-soft .art-book-text { font-size: 0.92rem; color: var(--muted); margin-bottom: 1rem; }
.art-table { width: 100%; border-collapse: collapse; margin: 1.5rem 0; font-size: 1rem; }
.art-table th, .art-table td { text-align: left; padding: 0.6rem 0.75rem; border-bottom: 1px solid var(--line); vertical-align: top; }
.art-table th { font-family: var(--font-sans); font-size: 0.85rem; letter-spacing: 0.04em; color: var(--olive-ink); background: var(--linen-deep); }
.art-body .art-table-wrap, .art-body table { display: block; overflow-x: auto; }
/* Pages locales */
.local-head .hero-actions { margin: 1.75rem 0 1.25rem; }
.local-body { margin-inline: auto; }
.local-body > h2:first-child { margin-top: 0; }
.rel-grid-4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }
.area-label { margin: 1rem 0 0.5rem; font-weight: 600; color: var(--olive-ink); }

/* Bons cadeaux : formulaire d'achat, bon imprimable, espace de suivi */
.gift-form { max-width: 820px; margin: 0 auto; display: grid; gap: 1.5rem; }
.gift-banner { background: var(--paper); border: 1px dashed var(--clay); color: var(--clay); border-radius: var(--radius-sm); padding: 0.9rem 1.1rem; font-weight: 600; font-size: 0.95rem; }
.gift-banner-closed { color: var(--olive-ink); border-color: var(--line-strong); }
.gift-step { border: 1px solid var(--line); background: var(--paper); border-radius: var(--radius); padding: clamp(1.25rem, 3vw, 1.75rem) clamp(1.25rem, 3vw, 2rem); display: grid; gap: 1rem; min-width: 0; }
.gift-step legend { float: left; width: 100%; display: flex; align-items: center; gap: 0.7rem; font-family: var(--font-serif); font-size: 1.6rem; color: var(--olive-ink); margin-bottom: 0.25rem; padding: 0; }
.gift-step legend span { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--clay); color: var(--clay); font-size: 1.05rem; }
.gift-options { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); gap: 0.6rem; }
.gift-option { position: relative; display: flex; align-items: center; gap: 0.75rem; padding: 0.85rem 1rem; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); cursor: pointer; background: var(--linen); transition: border-color .2s, background .2s; }
.gift-option input { accent-color: var(--book); flex-shrink: 0; }
.gift-option:has(input:checked) { border-color: var(--book); background: var(--paper); box-shadow: 0 0 0 1px var(--book) inset; }
.gift-option:has(input:focus-visible) { outline: 2px solid var(--clay); outline-offset: 2px; }
.gift-option-body { display: grid; flex: 1; min-width: 0; }
.gift-option-name { font-weight: 600; color: var(--olive-ink); line-height: 1.3; }
.gift-option-meta { font-size: 0.82rem; color: var(--muted); }
.gift-option-price { font-family: var(--font-serif); font-size: 1.35rem; font-weight: 600; color: var(--olive-ink); white-space: nowrap; }
.gift-field { display: block; font-weight: 600; font-size: 0.92rem; color: var(--olive-ink); }
.gift-field input, .gift-field textarea { display: block; margin-top: 0.4rem; }
.gift-optional { font-weight: 400; color: var(--muted); }
.gift-field input, .gift-field textarea { font: inherit; font-weight: 400; color: var(--ink); background: var(--linen); border: 1px solid var(--line-strong); border-radius: 10px; padding: 0.7rem 0.85rem; width: 100%; }
.gift-field input:focus-visible, .gift-field textarea:focus-visible { outline: 2px solid var(--clay); outline-offset: 1px; background: #fff; }
.gift-two { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.gift-check { display: flex; gap: 0.6rem; align-items: flex-start; font-size: 0.92rem; color: var(--muted); cursor: pointer; }
.gift-check input { margin-top: 0.3rem; accent-color: var(--book); }
.gift-pay { display: grid; justify-items: center; gap: 0.7rem; text-align: center; }
.gift-total { font-size: 1.1rem; margin: 0; }
.gift-total strong { font-family: var(--font-serif); font-size: 2rem; color: var(--olive-ink); }
.gift-secure { font-size: 0.85rem; color: var(--muted); margin: 0; }
.gift-error { color: var(--book-hover); font-weight: 600; margin: 0; }
.btn.is-loading { opacity: .7; pointer-events: none; }
.btn:disabled { opacity: .5; cursor: not-allowed; transform: none; }
.gift-how { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; counter-reset: g; max-width: 980px; margin: 0 auto; }
.gift-how li { counter-increment: g; background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 1.5rem; display: grid; gap: 0.4rem; }
.gift-how li::before { content: counter(g); font-family: var(--font-serif); font-size: 2rem; color: var(--clay); line-height: 1; }
.gift-how strong { color: var(--olive-ink); font-size: 1.1rem; }
.gift-how span { color: var(--muted); font-size: 0.95rem; }
@media (max-width: 760px) { .gift-two, .gift-how { grid-template-columns: 1fr; } }

.gift-result .container { max-width: 760px; display: grid; gap: 1.5rem; justify-items: center; text-align: center; }
.voucher { position: relative; overflow: hidden; width: 100%; background: var(--paper); border: 1px solid var(--line-strong); border-radius: calc(var(--radius) * 1.2); padding: clamp(2rem, 5vw, 3.25rem) clamp(1.5rem, 5vw, 3rem); box-shadow: var(--shadow); display: grid; gap: 0.6rem; justify-items: center; isolation: isolate; }
.voucher::before { content: ""; position: absolute; z-index: -1; inset: 50% auto auto 50%; width: 520px; height: 520px; transform: translate(-50%, -50%); background: url("../images/motif-graine-de-vie.svg") no-repeat center / contain; opacity: .06; filter: invert(1) sepia(1) saturate(2) hue-rotate(345deg) brightness(.55); }
.voucher-logo { width: 170px; height: auto; margin-bottom: 0.75rem; }
.voucher-kicker { font-size: 0.78rem; font-weight: 600; letter-spacing: 0.2em; text-transform: uppercase; color: var(--clay); margin: 0; }
.voucher-soin { font-size: clamp(2rem, 5vw, 3rem); margin: 0; }
.voucher-soin em { display: block; font-size: 0.55em; color: var(--clay); }
.voucher-for { font-size: 1.15rem; margin: 0.5rem 0 0; }
.voucher-for strong { font-family: var(--font-serif); font-size: 1.6rem; font-weight: 600; color: var(--olive-ink); }
.voucher-from { color: var(--muted); margin: 0; }
.voucher-message { font-family: var(--font-serif); font-style: italic; font-size: 1.25rem; color: var(--ink); max-width: 32rem; margin: 0.5rem 0; }
.voucher-code { display: grid; gap: 0.2rem; margin-top: 0.75rem; padding: 0.8rem 1.6rem; border: 1px dashed var(--clay); border-radius: var(--radius-sm); background: var(--linen); }
.voucher-code span { font-size: 0.72rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--muted); }
.voucher-code strong { font-size: 1.5rem; letter-spacing: 0.12em; color: var(--olive-ink); }
.voucher-valid { margin: 0.4rem 0 0; }
.voucher-how { font-size: 0.85rem; color: var(--muted); margin: 0.6rem 0 0; }
.voucher-used { color: var(--book-hover); font-weight: 700; }
.gift-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; justify-content: center; }
.gift-keep { flex-basis: 100%; font-size: 0.85rem; color: var(--muted); margin: 0; }
@media print {
  .site-header, .site-footer, .gift-actions, .mobile-book, .cookie-banner, .skip-link { display: none !important; }
  body { background: #fff; }
  .gift-result { padding: 0; }
  .voucher { box-shadow: none; border-color: #999; break-inside: avoid; }
}

.gift-admin h1 { margin-bottom: 0.5rem; }
.gift-search { max-width: 420px; margin: 1.5rem 0 0.75rem; }
.gift-summary { color: var(--muted); font-size: 0.92rem; }
.gift-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--paper); }
.gift-table { width: 100%; border-collapse: collapse; font-size: 0.92rem; min-width: 820px; }
.gift-table th, .gift-table td { text-align: left; padding: 0.7rem 0.85rem; border-bottom: 1px solid var(--line); vertical-align: top; }
.gift-table th { font-size: 0.78rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); background: var(--linen); }
.gift-table small { color: var(--muted); }
.gift-table tr.is-used td { color: var(--muted); }
