/* ============================================================
   Therapie Transgenerationnelle — CSS principal
   Tokens visuels du design system Thérapie Transgé + composants WP
   ============================================================ */

/* ── Variables CSS (design tokens — palette Forêt) ───────── */
:root {
  /* Couleurs — émeraude/forêt (primaire), orange chaud (accent), beurre (highlight) */
  --tt-brand:            #1f8d52;
  --tt-brand-hover:      #16774a;
  --tt-brand-active:     #115f3c;
  --tt-brand-deep:       #0c462d;
  --tt-brand-soft:       #a3d8b6;
  --tt-brand-xsoft:      #e9f6ee;
  --tt-accent:           #c2935f;
  --tt-accent-strong:    #a8794a;
  --tt-accent-soft:      #fdf5ec;
  --tt-highlight:        #ffd45e;
  /* Surlignage <mark> : dérivé du jaune beurre, adouci vers le citron.
     L'abricot reste réservé aux CTA (usage parcimonieux), le vert aux tags. */
  --tt-mark:             #ffdd80;
  --tt-mark:             color-mix(in oklab, var(--tt-highlight) 76%, var(--tt-surface-lemon));
  --tt-mark-invert:      rgba(255, 212, 94, 0.42);
  --tt-mark-invert:      color-mix(in oklab, var(--tt-highlight) 42%, transparent);
  --tt-success:          #3f9c69;
  --tt-success-soft:     #e3f4ea;
  --tt-text-strong:      #07301f;
  --tt-text-body:        #2f3831;
  --tt-text-muted:       #57645a;
  --tt-text-subtle:      #6f7d72;
  --tt-text-link:        #16774a;
  --tt-surface-page:     #e9f6ee;
  --tt-surface-card:     #ffffff;
  --tt-surface-raised:   #f4faf6;
  --tt-surface-lemon:    #fff3d4;
  --tt-border-subtle:    #dde4dd;
  --tt-border-default:   #c7d0c7;
  --tt-border-brand:     #6fc08d;
  --tt-ring:             color-mix(in oklab, #1f8d52 45%, transparent);

  /* Typographie */
  --tt-font-sans:  'DM Sans', ui-sans-serif, system-ui, sans-serif;
  --tt-font-serif: 'DM Serif Display', Georgia, serif;
  --tt-text-body-sm: 0.875rem;

  /* Rayons */
  --tt-radius-sm:   6px;
  --tt-radius-md:   10px;
  --tt-radius-lg:   16px;
  --tt-radius-xl:   24px;
  --tt-radius-2xl:  2rem;
  --tt-radius-pill: 999px;

  /* Ombres (teinte verte) */
  --tt-shadow-xs: 0 1px 2px hsl(150 45% 16% / 0.07);
  --tt-shadow-sm: 0 1px 3px hsl(150 45% 16% / 0.10), 0 1px 2px hsl(150 45% 16% / 0.05);
  --tt-shadow-md: 0 6px 16px hsl(150 45% 16% / 0.10), 0 2px 5px hsl(150 45% 16% / 0.06);
  --tt-shadow-lg: 0 16px 34px hsl(150 45% 16% / 0.14), 0 5px 12px hsl(150 45% 16% / 0.07);
  --tt-shadow-focus: 0 0 0 3px var(--tt-ring);

  /* Transitions */
  --tt-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --tt-duration-fast: 140ms;
  --tt-duration-base: 220ms;
}

/* ── Reset minimal ───────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
html { overflow-x: clip; }
body {
  font-family: var(--tt-font-sans);
  color: var(--tt-text-body);
  background: var(--tt-surface-page);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}
h1, h2, h3, h4 { color: var(--tt-text-strong); margin: 0; letter-spacing: -0.02em; }
p { margin: 0; text-wrap: pretty; }
/* Titre de section visuel, sans être un titre sémantique (hors hiérarchie Hn) */
.sec-title {
  font-size: 1.75rem;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -0.02em;
  color: var(--tt-text-strong);
  margin: 0 0 1.5rem;
}
a { color: var(--tt-text-link); text-decoration: none; transition: color var(--tt-duration-fast) var(--tt-ease-out); }
a:hover { color: var(--tt-brand); text-decoration: underline; text-underline-offset: 2px; }
img { max-width: 100%; height: auto; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ── Layout ──────────────────────────────────────────────── */
/* Horizontal-only longhand : .container partage son élément avec .hero__in (et
   d'autres) qui posent leur propre padding-top/bottom. Un shorthand "padding: 0 Xrem"
   ici écraserait ce padding vertical dès que cette règle arrive plus tard dans le
   fichier (ex. le breakpoint 480px), même sans rapport avec .container lui-même. */
.container { width: 100%; max-width: 1240px; margin: 0 auto; padding-left: 2rem; padding-right: 2rem; }
.container--narrow { max-width: 820px; }
.section { padding: 6rem 0; }
.section--tight { padding: 4rem 0; }

/* ── Header ──────────────────────────────────────────────── */
/* position: fixed plutôt que sticky — sticky échoue quand un ancêtre WP
   a overflow:hidden/auto (cas fréquent avec .wp-site-blocks). */
.site-header {
  position: fixed; top: 0; left: 0; right: 0; width: 100%;
  z-index: 40;
  background: #ffffff;
  transition: background-color 260ms var(--tt-ease-out),
              box-shadow 260ms var(--tt-ease-out);
}
/* Fond vert foncé dès que l'utilisateur commence à défiler */
.site-header.site-header--scrolled {
  background: var(--tt-brand-deep) !important;
  box-shadow: 0 2px 24px rgba(7, 48, 31, 0.28);
}

/* Compensation hauteur : évite que le contenu passe derrière le header fixé.
   Cible le 2e enfant de .wp-site-blocks (le 1er bloc en flux normal après le
   header, lui-même hors flux en position:fixed) plutôt que « main » ou
   « .site-header + * » : sur les pages avec claim-banner (single-therapiste),
   c'est le claim-banner — pas main — qui suit immédiatement le header, et qui
   recevait donc seulement le margin-top générique de 2rem (spacing global WP),
   insuffisant pour compenser le header fixe (60-72px) → fiche masquée sous le
   header. Si on compense « main » à la place, il reçoit en plus un padding-top
   inutile puisque le claim-banner l'a déjà décalé, créant un grand vide blanc. */
.wp-site-blocks > :nth-child(2) {
  margin-top: 0 !important;
  margin-block-start: 0 !important;
  padding-top: 72px;
}
@media (max-width: 768px) {
  .wp-site-blocks > :nth-child(2) { padding-top: 60px; }
}

.hdr__in { display: flex; align-items: center; gap: 2rem; height: 72px; }
/* Navigation prend l'espace restant ; brand et actions ne se compriment pas */
.hdr__in > .wp-block-navigation { flex: 1; min-width: 0; }
.hdr__actions { flex-shrink: 0; }
.hdr__actions .wp-block-buttons { display: flex; align-items: center; gap: 0.5rem; flex-wrap: nowrap; }
.brand { display: flex; align-items: center; gap: 10px; text-decoration: none; flex-shrink: 0; color: var(--tt-brand-deep); }
.brand:hover { text-decoration: none; }
/* Couleurs logo — état initial (fond blanc) */
.brand .l-dot   { fill: var(--tt-accent); }
.brand .l-brand { fill: var(--tt-accent); }
.brand .l-name  { fill: var(--tt-accent); }
/* Couleurs logo — état scrollé (fond vert) */
.site-header--scrolled .brand { color: #ffffff; }
.site-header--scrolled .brand .l-dot   { fill: var(--tt-highlight); }
.site-header--scrolled .brand .l-brand { fill: var(--tt-highlight); }
.site-header--scrolled .brand .l-name  { fill: var(--tt-highlight); }

/* Navigation — état scrollé */
.site-header--scrolled .wp-block-navigation a,
.site-header--scrolled .wp-block-navigation-item__content { color: rgba(255,255,255,0.9) !important; }
.site-header--scrolled .wp-block-navigation a:hover { color: #ffffff !important; }
/* Boutons header — état scrollé */
.site-header--scrolled .is-style-ghost .wp-block-button__link {
  color: rgba(255,255,255,0.9) !important;
  box-shadow: inset 0 0 0 1.5px rgba(255,255,255,0.4) !important;
}
.site-header--scrolled .is-style-secondary .wp-block-button__link {
  background: rgba(255,255,255,0.12) !important;
  color: #ffffff !important;
  border-color: rgba(255,255,255,0.25) !important;
}

.brand__logo { display: block; }
.brand__logo--compact { display: none; }
@media (max-width: 640px) {
  .brand__logo--full { display: none; }
  .brand__logo--compact { display: block; }
}

/* ── Burger ──────────────────────────────────────────────── */
.tt-burger {
  display: none;
  flex-direction: column; align-items: center; justify-content: center;
  gap: 5px; width: 40px; height: 40px;
  background: transparent; border: none; cursor: pointer;
  border-radius: var(--tt-radius-sm); padding: 8px;
  flex-shrink: 0;
}
.tt-burger:hover { background: var(--tt-brand-xsoft); }
.site-header--scrolled .tt-burger:hover { background: rgba(255,255,255,0.12); }
.tt-burger__line {
  display: block; width: 22px; height: 2px;
  background: var(--tt-brand); border-radius: 2px;
  transition: transform 0.22s var(--tt-ease-out), opacity 0.22s var(--tt-ease-out);
}
.site-header--scrolled .tt-burger__line { background: #ffffff; }
.tt-burger.is-open .tt-burger__line:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.tt-burger.is-open .tt-burger__line:nth-child(2) { opacity: 0; transform: scaleX(0); }
.tt-burger.is-open .tt-burger__line:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ── Overlay navigation mobile ───────────────────────────── */
.tt-mobile-nav {
  display: none;
  position: fixed; top: 60px; left: 0; right: 0; bottom: 0;
  background: var(--tt-surface-card);
  z-index: 39;
  flex-direction: column; justify-content: space-between;
  padding: 2rem 1.5rem 3rem;
  overflow-y: auto;
  border-top: 1px solid var(--tt-border-subtle);
}
@keyframes tt-slide-down {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.tt-mobile-nav__links { display: flex; flex-direction: column; }
.tt-mobile-nav__links a {
  display: block; padding: 1rem 0;
  font-size: 1.25rem; font-weight: 600; letter-spacing: -0.01em;
  color: var(--tt-text-strong); text-decoration: none;
  border-bottom: 1px solid var(--tt-border-subtle);
}
.tt-mobile-nav__links a:hover { color: var(--tt-brand); }
.tt-mobile-nav__cta { display: flex; flex-direction: column; gap: 0.75rem; }

/* ── Boutons ─────────────────────────────────────────────── */
.tt-btn {
  display: inline-flex; align-items: center; gap: 0.4rem;
  padding: 0.65rem 1.5rem; border-radius: var(--tt-radius-pill);
  font-family: var(--tt-font-sans); font-size: 0.9375rem; font-weight: 600;
  cursor: pointer; border: none; text-decoration: none;
  transition: background-color var(--tt-duration-fast) var(--tt-ease-out),
              transform var(--tt-duration-fast) var(--tt-ease-out),
              box-shadow var(--tt-duration-fast) var(--tt-ease-out);
}
.tt-btn:hover { text-decoration: none; }
.tt-btn:active { transform: scale(0.99); }
.tt-btn:focus-visible { outline: none; box-shadow: var(--tt-shadow-focus); }

/* NB : color explicite au :hover pour battre la règle globale a:hover
   { color: var(--tt-brand) } (plus spécifique que .tt-btn--x) — sinon le texte
   des boutons-liens vire au vert au survol (invisible sur fond vert). */
.tt-btn--primary   { background: var(--tt-brand);  color: #fff; }
.tt-btn--primary:hover { background: var(--tt-brand-hover); color: #fff; }

.tt-btn--accent    { background: var(--tt-accent); color: #fff; }
.tt-btn--accent:hover { background: #a8794a; color: #fff; }

.tt-btn--secondary {
  background: var(--tt-brand-xsoft); color: var(--tt-brand);
  border: 1px solid var(--tt-brand-soft);
}
.tt-btn--secondary:hover { background: var(--tt-brand-soft); color: var(--tt-brand); }

.tt-btn--ghost { background: transparent; color: var(--tt-brand); }
.tt-btn--ghost:hover { background: var(--tt-brand-xsoft); color: var(--tt-brand); }

.tt-btn--sm { padding: 0.45rem 1rem; font-size: 0.875rem; }
.tt-btn--lg { padding: 0.85rem 2rem; font-size: 1rem; }
.tt-btn--block { width: 100%; justify-content: center; }

/* Lien sortant obfusqué (site du praticien) — <span role="link"> piloté en JS,
   donc pas de style de lien natif : on rétablit curseur et focus visible. */
.tt-olink { cursor: pointer; user-select: none; }
.tt-olink:focus-visible { outline: none; box-shadow: var(--tt-shadow-focus); }

/* Styles boutons WP compat */
.wp-block-button__link.wp-element-button { border-radius: var(--tt-radius-pill); font-weight: 600; }
/* Annule l'héritage link:hover { color: vert } sur les boutons primaires */
.wp-block-button__link:hover,
.wp-block-button__link:focus { color: #fff !important; background: var(--tt-brand-hover) !important; text-decoration: none !important; }
.is-style-secondary .wp-block-button__link {
  background: var(--tt-brand-xsoft) !important; color: var(--tt-brand) !important;
  border: 1px solid var(--tt-brand-soft) !important;
}
.is-style-secondary .wp-block-button__link:hover,
.is-style-secondary .wp-block-button__link:focus {
  background: var(--tt-brand-soft) !important; color: var(--tt-brand) !important;
}
.is-style-ghost .wp-block-button__link {
  background: transparent !important; color: var(--tt-brand) !important; border: none !important;
  box-shadow: inset 0 0 0 1.5px var(--tt-brand-soft) !important;
}
.is-style-ghost .wp-block-button__link:hover,
.is-style-ghost .wp-block-button__link:focus {
  background: var(--tt-brand-xsoft) !important; color: var(--tt-brand) !important;
}

/* ── Badges ──────────────────────────────────────────────── */
.tt-badge {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 3px 10px; border-radius: var(--tt-radius-pill);
  font-size: 0.75rem; font-weight: 600; letter-spacing: 0.01em;
}
.tt-badge--success { background: var(--tt-success-soft); color: var(--tt-success); }
.tt-badge--outline { background: transparent; color: var(--tt-text-muted); border: 1px solid var(--tt-border-default); }
.tt-badge--dot::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex-shrink: 0; }
.tt-badge--sm { font-size: 0.6875rem; padding: 2px 8px; }

/* ── Tags / Chips ────────────────────────────────────────── */
.tt-tag {
  display: inline-flex; align-items: center;
  padding: 4px 12px; border-radius: var(--tt-radius-pill);
  font-size: 0.8125rem; font-weight: 500;
  background: var(--tt-brand-xsoft); color: var(--tt-brand);
  border: 1px solid var(--tt-brand-soft);
  transition: background-color var(--tt-duration-fast) var(--tt-ease-out),
              border-color var(--tt-duration-fast) var(--tt-ease-out);
}
.tt-tag:hover { background: var(--tt-brand-soft); border-color: var(--tt-border-brand); text-decoration: none; }
.tt-tag--filter input { position: absolute; opacity: 0; pointer-events: none; }
.tt-tag--filter:has(input:checked) { background: var(--tt-brand); color: #fff; border-color: var(--tt-brand); }

/* ── Avatar ──────────────────────────────────────────────── */
.tt-avatar { border-radius: 50%; object-fit: cover; flex-shrink: 0; display: block; }
.tt-avatar--sm { width: 32px; height: 32px; }
.tt-avatar--md { width: 48px; height: 48px; }
.tt-avatar--lg { width: 72px; height: 72px; }
.tt-avatar--xl { width: 96px; height: 96px; }
.tt-avatar--initials { display: inline-flex; align-items: center; justify-content: center; color: #fff; font-weight: 700; font-family: var(--tt-font-sans); }
.tt-avatar--initials span { font-size: calc(0.4 * 1em + 2px); line-height: 1; }

/* ── Carte thérapeute ────────────────────────────────────── */
.tt-therapist-card {
  display: flex; gap: 1rem; align-items: flex-start;
  background: var(--tt-surface-card); border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-lg); padding: 1.25rem 1.5rem;
  box-shadow: var(--tt-shadow-sm);
  transition: transform var(--tt-duration-base) var(--tt-ease-out),
              box-shadow var(--tt-duration-base) var(--tt-ease-out);
}
.tt-therapist-card:hover { transform: translateY(-2px); box-shadow: var(--tt-shadow-lg); }

.tt-tc__avatar-link { flex-shrink: 0; }
.tt-tc__body { flex: 1; min-width: 0; }
.tt-tc__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 0.5rem; }
.tt-tc__ident { flex: 1; }
.tt-tc__badges { display: flex; gap: 0.375rem; flex-wrap: wrap; margin-bottom: 0.375rem; }
.tt-tc__name { font-size: 1.125rem; font-weight: 700; margin: 0 0 0.125rem; }
.tt-tc__name a { color: var(--tt-text-strong); }
.tt-tc__name a:hover { color: var(--tt-brand); text-decoration: none; }
.tt-tc__titre { font-size: 0.875rem; color: var(--tt-text-muted); margin: 0; }

.tt-tc__fav {
  background: none; border: none; cursor: pointer; padding: 4px;
  color: var(--tt-text-subtle); border-radius: var(--tt-radius-sm);
  transition: color var(--tt-duration-fast) var(--tt-ease-out);
}
.tt-tc__fav:hover, .tt-tc__fav.active { color: var(--tt-accent); }
.tt-tc__fav.active svg { fill: var(--tt-accent); }

.tt-tc__meta { display: flex; align-items: center; gap: 0.75rem; margin: 0.5rem 0; flex-wrap: wrap; color: var(--tt-text-muted); font-size: 0.875rem; }
.tt-tc__loc, .tt-tc__visio { display: inline-flex; align-items: center; gap: 4px; }

.tt-tc__tags { display: flex; gap: 0.375rem; flex-wrap: wrap; margin-top: 0.5rem; }
.tt-tc__more-tags { font-size: 0.8125rem; color: var(--tt-text-subtle); align-self: center; }

.tt-tc__cta { display: flex; flex-direction: column; align-items: flex-end; gap: 0.5rem; margin-left: 1rem; flex-shrink: 0; }
.tt-tc__price { text-align: right; }
.tt-tc__price strong { font-size: 1.25rem; color: var(--tt-text-strong); }
.tt-tc__price span { font-size: 0.75rem; color: var(--tt-text-muted); }

/* Variante compacte */
.tt-therapist-card--compact { padding: 0.75rem; }
.tt-therapist-card--compact .tt-tc__cta { display: none; }

/* ── Barre de recherche ──────────────────────────────────── */
.tt-search-bar { width: 100%; }
.tt-search-bar__inner {
  display: flex; align-items: center;
  background: var(--tt-surface-card); border: 1px solid var(--tt-border-default);
  border-radius: var(--tt-radius-pill); box-shadow: var(--tt-shadow-sm);
  overflow: hidden;
  transition: box-shadow var(--tt-duration-fast) var(--tt-ease-out);
}
.tt-search-bar__inner:focus-within { box-shadow: var(--tt-shadow-md), 0 0 0 2px var(--tt-brand-soft); }
.tt-search-bar__field { flex: 1; display: flex; align-items: center; padding: 0.5rem 1.25rem; }
.tt-search-bar__field input {
  width: 100%; border: none; outline: none; background: transparent;
  font-family: var(--tt-font-sans); font-size: 1rem; color: var(--tt-text-strong);
}
.tt-search-bar__field input::placeholder { color: var(--tt-text-subtle); }
.tt-search-bar__divider { width: 1px; background: var(--tt-border-subtle); height: 28px; flex-shrink: 0; }
.tt-search-bar__btn {
  display: flex; align-items: center; gap: 0.5rem;
  padding: 0.65rem 1.5rem; margin: 4px; border-radius: var(--tt-radius-pill);
  background: var(--tt-brand); color: #fff; font-weight: 600; font-size: 0.9375rem;
  border: none; cursor: pointer; flex-shrink: 0;
  transition: background-color var(--tt-duration-fast) var(--tt-ease-out);
}
.tt-search-bar__btn:hover { background: var(--tt-brand-hover); }

/* ── Hero homepage (centré plein-largeur, Forêt) ─────────── */
.hero {
  background: var(--tt-brand-deep);
  position: relative; overflow: hidden;
  border-radius: 0 0 var(--tt-radius-2xl) var(--tt-radius-2xl);
  color: #fff;
}
/* Blobs décoratifs */
.hero__blob {
  position: absolute; border-radius: 50%;
  filter: blur(80px); pointer-events: none;
}
.hero__blob--1 {
  width: 340px; height: 340px;
  background: radial-gradient(circle at 30% 30%, #ff9c54, transparent 70%);
  top: -60px; left: 44%; opacity: 0.75;
}
.hero__blob--2 {
  width: 400px; height: 400px;
  background: radial-gradient(circle at 30% 30%, #3fb39a, transparent 70%);
  bottom: -140px; right: 5%; opacity: 0.45;
}
.hero__in {
  position: relative; z-index: 1;
  padding-top: 5rem; padding-bottom: 4.5rem;
}
.hero__grid {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
}
.hero__content { min-width: 0; max-width: 640px; }
/* Colonne image */
.hero__media { min-width: 0; position: relative; }
.hero__photo-wrap {
  position: relative; z-index: 1;
  border-radius: var(--tt-radius-2xl);
  overflow: hidden;
  box-shadow: 0 30px 60px -24px rgba(0,0,0,0.5);
  border: 1px solid rgba(255,255,255,0.12);
}
.hero__photo {
  display: block; width: 100%; height: auto;
  aspect-ratio: 5 / 6; object-fit: cover;
}
/* Note Google + réassurance */
.hero__proof {
  display: flex; align-items: center; gap: 0.9rem 1.5rem;
  flex-wrap: wrap; margin-top: 1.75rem;
}
.hero__reassure {
  display: inline-flex; align-items: center; gap: 0.45rem;
  color: rgba(255,255,255,0.7); font-size: 0.8125rem;
}
.hero__reassure svg { color: var(--tt-sage, #7fb08a); flex-shrink: 0; }

@media (max-width: 900px) {
  .hero__grid { grid-template-columns: 1fr; gap: 2.5rem; }
  .hero__content { max-width: 100%; }
  .hero__media { max-width: 460px; }
}
@media (max-width: 600px) {
  .hero__media { display: none; }
}
/* L'eyebrow porte le H1 (SEO) : conserve son style de surtitre discret. */
.hero__eyebrow {
  font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--tt-accent); margin: 0 0 1.5rem;
}
.hero .hero__headline {
  font-family: var(--tt-font-serif); font-weight: 400;
  font-size: clamp(2.8rem, 5.5vw, 4.4rem);
  line-height: 1.04; letter-spacing: -0.02em;
  color: #ffffff; margin: 0 0 1.5rem;
}
.hero .hero__headline em {
  font-style: italic;
  color: var(--tt-accent);
  background: none;
}
.hero__sub {
  font-size: 1.0625rem; color: rgba(255,255,255,0.72);
  line-height: 1.65; margin-bottom: 2.25rem; max-width: 560px;
}
.hero__search { max-width: 640px; }
.hero__trust {
  display: flex; align-items: center; gap: 1.5rem;
  margin-top: 1.25rem; color: rgba(255,255,255,0.6);
  font-size: 0.8125rem; flex-wrap: wrap;
}
.hero__trust-item { display: flex; align-items: center; gap: 0.375rem; }
.hero__trust-item svg { flex-shrink: 0; }
.trust-icon { display: inline-flex; align-items: center; gap: 6px; }
.trust-icon--success { color: var(--tt-success); }

/* ── Sections communes ────────────────────────────────────── */
.eyebrow { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--tt-brand); margin: 0; }
.sec-head { max-width: 640px; margin-bottom: 3rem; }
.sec-head h2 {
  font-family: var(--tt-font-serif); font-weight: 400;
  font-size: clamp(2rem, 3.5vw, 2.75rem);
  letter-spacing: -0.02em; line-height: 1.05; margin: 0.75rem 0;
}
.sec-head p { font-size: 1.125rem; color: var(--tt-text-muted); line-height: 1.65; }
.sec-head--center { margin-inline: auto; text-align: center; }

/* ── Landing « Thérapeute en ligne / visio » ──────────────── */
.lp-hero__title {
  font-family: var(--tt-font-serif); font-weight: 400;
  font-size: clamp(2.2rem, 4.2vw, 3.2rem);
  letter-spacing: -0.02em; line-height: 1.05; margin: 0.75rem 0 0;
}
.lp-lead {
  font-size: 1.2rem; color: var(--tt-text-muted); line-height: 1.7;
  max-width: 620px; margin: 1.25rem auto 2rem;
}
.lp-hero__cta { justify-content: center; }

/* ── Cartes Feature (symptômes) ───────────────────────────── */
.grid--4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem; }
.grid--3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.grid--2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }
.feature { background: var(--tt-surface-card); border: 1px solid var(--tt-border-subtle); border-radius: var(--tt-radius-lg); padding: 1.5rem; box-shadow: var(--tt-shadow-xs); }
.feature__ico,
.feature__ico.wp-block-paragraph {
  display: flex; align-items: center; justify-content: center;
  width: 52px; height: 52px;
  background: var(--tt-brand-xsoft); border-radius: var(--tt-radius-lg);
  color: var(--tt-brand);
  margin: 0 0 1.25rem; padding: 0; font-size: 0;
  line-height: 1;
}
.feature__ico svg { width: 22px; height: 22px; flex-shrink: 0; }
.feature:nth-child(4n+2) .feature__ico { background: var(--tt-accent-soft); color: var(--tt-accent-strong); }
.feature:nth-child(4n+3) .feature__ico { background: #d7f0e4; color: #1f7565; }
.feature:nth-child(4n+4) .feature__ico { background: var(--tt-surface-lemon); color: #a87c05; }
.feature h3 { font-size: 1.125rem; margin-bottom: 0.5rem; }
.feature p { font-size: 0.875rem; color: var(--tt-text-muted); line-height: 1.65; }

/* ── Étapes ──────────────────────────────────────────────── */
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.step__n,
.step .step__n.wp-block-paragraph {
  font-family: var(--tt-font-serif) !important;
  font-size: 3rem !important;
  color: var(--tt-accent) !important;
  font-weight: 600;
  line-height: 1; margin: 0 0 0.75rem;
}
.step h3 { font-size: 1.125rem; margin-bottom: 0.5rem; }
.step p { color: var(--tt-text-muted); font-size: 0.875rem; line-height: 1.65; }

/* ============================================================
   Accents graphiques enjoués — home (charte verte / abricot)
   Décor : pointer-events none, anim transform/opacity seulement,
   masqué < 920px, désactivé sous prefers-reduced-motion.
   ============================================================ */

/* Surligneur dessiné-main derrière un mot-clé */
.hl { position: relative; white-space: nowrap; }
.hl > span { position: relative; z-index: 1; }
.hl::before {
  content: ""; position: absolute;
  left: -0.1em; right: -0.12em; bottom: 0.06em; height: 0.5em; z-index: 0;
  background: var(--hl, #e6c79c);
  border-radius: 45% 55% 60% 40% / 60% 55% 45% 40%;
  transform: rotate(-1.4deg); opacity: 0.6;
}
.hl--green   { --hl: #a3d8b6; }
.hl--apricot { --hl: #e6c79c; }

/* Mot-clé coloré (serif) */
.kw { font-family: var(--tt-font-serif); font-style: normal; font-weight: 500; }
.kw--green   { color: var(--tt-brand); }
.kw--apricot { color: var(--tt-accent); }

/* Squiggles décoratifs (SVG inline) */
.deco { position: absolute; pointer-events: none; z-index: 0; color: var(--tt-brand-soft); }
.deco svg { display: block; width: 100%; height: 100%; overflow: visible; }
.deco--green   { color: var(--tt-brand-soft); }
.deco--apricot { color: var(--tt-accent); }
.deco--brand   { color: var(--tt-brand); }
/* Le contenu passe au-dessus du décor */
.hero__in, .sec-head, .steps { position: relative; z-index: 1; }
.cta > *:not(.deco) { position: relative; z-index: 1; }
@media (prefers-reduced-motion: no-preference) {
  .deco--float-a { animation: ttFloatY 7s ease-in-out infinite; }
  .deco--float-b { animation: ttFloatY 9s ease-in-out infinite reverse; }
  .deco--float-c { animation: ttFloatY 8s ease-in-out 0.5s infinite; }
}
@keyframes ttFloatY {
  0%, 100% { transform: translate3d(0,0,0) rotate(var(--deco-rot, 0deg)); }
  50%      { transform: translate3d(0,-12px,0) rotate(var(--deco-rot, 0deg)); }
}

/* Cartes symptômes plus vivantes */
.feature { transition: transform 0.2s ease, box-shadow 0.2s ease; }
.feature:hover { transform: translateY(-4px); box-shadow: 0 14px 30px -14px rgba(7,48,31,0.28); }
.feature__ico { transform: rotate(-4deg); transition: transform 0.2s ease; }
.feature:hover .feature__ico { transform: rotate(0deg) scale(1.06); }

/* Pastilles d'étapes : cercles organiques colorés */
.step { position: relative; }
.steps .step .step__n,
.steps .step .step__n.wp-block-paragraph {
  font-family: var(--tt-font-serif) !important;
  font-size: 1.5rem !important;
  color: var(--step-ink, var(--tt-accent)) !important;
  font-weight: 600 !important;
  width: 58px; height: 58px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--tt-surface-card);
  border: 2px solid var(--step-ring, var(--tt-accent));
  border-radius: 50% 48% 52% 50% / 50% 52% 48% 50%;
  box-shadow: 0 6px 16px -8px rgba(7,48,31,0.3);
  transform: rotate(-3deg);
  margin: 0 0 1rem !important;
}
.step--s0 .step__n { --step-ring: #a3d8b6;         --step-ink: var(--tt-brand); }
.step--s1 .step__n { --step-ring: #e6c79c;         --step-ink: var(--tt-accent-strong); }
.step--s2 .step__n { --step-ring: var(--tt-brand); --step-ink: var(--tt-brand); }

@media (max-width: 920px) { .deco--hide-sm { display: none; } }

/* (orbe héro supprimé — remplacé par blobs CSS) */

/* ── Bande charte ─────────────────────────────────────────── */
.band { background: var(--tt-brand-deep); color: #fff; position: relative; overflow: hidden; border-radius: var(--tt-radius-2xl); margin: 0 2rem; }
.band__motif { position: absolute; left: -60px; bottom: -120px; width: 460px; opacity: 0.15; }
.band .container { position: relative; }
.band__quote { font-family: var(--tt-font-serif); font-weight: 400; font-size: clamp(1.5rem, 2.8vw, 2.3rem); line-height: 1.35; max-width: 800px; margin: 0; }
.band__quote cite { font-size: 0.875rem; color: rgba(255,255,255,0.6); letter-spacing: 0.02em; }
.band__sign { display: flex; align-items: center; gap: 0.875rem; margin-top: 1.75rem; }
.band__sign-avatar { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; flex: none; border: 2px solid rgba(255,255,255,0.25); }
.band__sign-id { display: flex; flex-direction: column; line-height: 1.3; font-style: normal; }
.band__sign-name { font-family: var(--tt-font-sans); font-weight: 600; font-size: 1rem; color: #fff; }
.band__sign-role { font-size: 0.8125rem; color: rgba(255,255,255,0.6); }

/* ── CTA band ──────────────────────────────────────────────── */
.cta { background: var(--tt-surface-lemon); border-radius: var(--tt-radius-2xl); padding: 4rem; text-align: center; }
.cta h2 {
  font-family: var(--tt-font-serif); font-weight: 400;
  font-size: clamp(2rem, 4vw, 3rem); letter-spacing: -0.02em; margin-bottom: 0.75rem;
}
.cta p { color: var(--tt-text-muted); font-size: 1.125rem; margin-bottom: 2rem; }

/* CTA final « bande vert profond » — raccord avec l'identité du site.
   Le bouton chaud (abricot) reste le seul CTA chaud de la vue. */
.cta--deep { background: var(--tt-brand-deep); color: #fff; }
.cta--deep h2 { color: #fff; }
.cta--deep .eyebrow { color: #ffd45e; margin-bottom: 0.85rem; }
.cta--deep p { color: rgba(255, 255, 255, 0.82); }
.cta--deep .wp-block-button:not(.is-style-ghost) .wp-block-button__link {
  background: var(--tt-accent) !important; color: #fff !important;
}
.cta--deep .wp-block-button:not(.is-style-ghost) .wp-block-button__link:hover,
.cta--deep .wp-block-button:not(.is-style-ghost) .wp-block-button__link:focus {
  background: var(--tt-accent-strong) !important; color: #fff !important;
}
.cta--deep .is-style-ghost .wp-block-button__link {
  color: #fff !important; box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, 0.55) !important;
}
.cta--deep .is-style-ghost .wp-block-button__link:hover,
.cta--deep .is-style-ghost .wp-block-button__link:focus {
  background: rgba(255, 255, 255, 0.12) !important; color: #fff !important;
}

/* ── Blog ─────────────────────────────────────────────────── */
.blog-hero { padding: 4rem 0 3rem; background: var(--tt-brand-xsoft); }
/* ── Blog card ────────────────────────────────────────────── */
.blog-card {
  display: grid !important;
  grid-template-columns: 1fr;
  grid-template-rows: auto auto 1fr; /* image, date, titre : le titre occupe le reste → hauteurs égales */
  height: 100%;
  background: var(--tt-surface-card);
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-lg);
  overflow: hidden;
  box-shadow: var(--tt-shadow-xs);
  transition: transform var(--tt-duration-base) var(--tt-ease-out),
              box-shadow var(--tt-duration-base) var(--tt-ease-out);
}
.blog-card:hover { transform: translateY(-2px); box-shadow: var(--tt-shadow-lg); }

/* Image et badge catégorie partagent la même cellule de grille */
.blog-card__img,
.blog-card .wp-block-post-featured-image {
  grid-row: 1; grid-column: 1;
  margin: 0; z-index: 0;
}
.blog-card__img img,
.blog-card .wp-block-post-featured-image img {
  display: block; width: 100%; aspect-ratio: 16/9;
  object-fit: cover; height: auto;
}
.blog-card__cat,
.blog-card .wp-block-post-terms {
  grid-row: 1; grid-column: 1;
  align-self: end; justify-self: start;
  z-index: 1; margin: 0 0 0.75rem 0.75rem;
  padding: 0 !important; /* annule les règles génériques */
}
.blog-card__cat a,
.blog-card .wp-block-post-terms a {
  display: inline-block;
  background: rgba(255,255,255,0.88);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  color: var(--tt-brand);
  font-size: 0.6875rem; font-weight: 700;
  padding: 4px 10px; border-radius: 100px;
  text-decoration: none; text-transform: uppercase; letter-spacing: 0.05em;
}
.blog-card .wp-block-post-terms__separator { display: none; }

/* Date et titre : auto-flow → lignes 2 et 3 */
.blog-card__date,
.blog-card .wp-block-post-date {
  padding: 1rem 1.25rem 0 !important;
  font-size: 0.8125rem; color: var(--tt-text-muted); margin: 0;
}
.blog-card__title,
.blog-card .wp-block-post-title {
  padding: 0.375rem 1.25rem 1.25rem !important;
  font-size: 1rem; font-weight: 700;
  line-height: 1.4; margin: 0;
}
.blog-card__title a,
.blog-card .wp-block-post-title a { color: var(--tt-text-strong); text-decoration: none; }
.blog-card__title a:hover,
.blog-card .wp-block-post-title a:hover { color: var(--tt-brand); }

/* Éléments supprimés : masqués proprement */
.blog-card__excerpt,
.blog-card .wp-block-post-excerpt,
.blog-card__meta,
.blog-card__author,
.blog-card .wp-block-post-author { display: none !important; }

/* Grille blog */
.wp-block-post-template.grid--3 {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  align-items: stretch; list-style: none; padding: 0; margin: 0;
}
.wp-block-post-template.grid--3 > * {
  align-self: stretch; margin-top: 0 !important; margin-block-start: 0 !important;
}

/* ── Blog — grille « À la une » (1 grand + colonne + grille) ─ */
.wp-block-post-template.blog-feature-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 1.5rem;
  align-items: stretch;
  list-style: none;
  padding: 0;
  margin: 0;
}
.blog-feature-grid > li {
  margin: 0 !important;
  margin-top: 0 !important;
}

/* Placement : 1 = grand, 2-4 = colonne latérale, 5+ = grille 3-up */
.blog-feature-grid > li:first-child { grid-column: span 4; grid-row: span 3; }
.blog-feature-grid > li:nth-child(2),
.blog-feature-grid > li:nth-child(3),
.blog-feature-grid > li:nth-child(4) { grid-column: span 2; }
.blog-feature-grid > li:nth-child(n+5) { grid-column: span 2; }

/* Carte */
.feat-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: var(--tt-surface-card);
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-lg);
  overflow: hidden;
  box-shadow: var(--tt-shadow-xs);
  transition: transform var(--tt-duration-base) var(--tt-ease-out),
              box-shadow var(--tt-duration-base) var(--tt-ease-out);
}
.feat-card:hover { transform: translateY(-2px); box-shadow: var(--tt-shadow-lg); }

.feat-card__img { margin: 0; }
.feat-card__img a { display: block; }
.feat-card__img img {
  display: block; width: 100%; height: auto;
  aspect-ratio: 16/9; object-fit: cover;
}

.feat-card__body {
  display: flex; flex-direction: column; align-items: flex-start;
  gap: .75rem; padding: 1.25rem;
}

/* Badge catégorie — pilule contour abricot */
.feat-card__cat { margin: 0; }
.feat-card__cat a {
  display: inline-block;
  border: 1px solid var(--tt-accent);
  color: var(--tt-brand);
  font-size: .6875rem; font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase;
  padding: 5px 12px; border-radius: 100px; text-decoration: none;
}
.feat-card__cat a:hover { background: var(--tt-accent-soft); }
.feat-card__cat .wp-block-post-terms__separator { display: none; }

/* Titre */
.feat-card__title { margin: 0; font-weight: 700; line-height: 1.3; font-size: 1.0625rem; }
.feat-card__title a { color: var(--tt-text-strong); text-decoration: none; }
.feat-card__title a:hover { color: var(--tt-brand); }

/* Extrait */
.feat-card__excerpt { margin: 0; color: var(--tt-text-muted); font-size: .9375rem; line-height: 1.6; }
.feat-card__excerpt p { margin: 0; }

/* Méta (auteur + date) */
.feat-card__meta {
  display: flex; align-items: center; gap: .5rem;
  width: 100%; font-size: .8125rem; color: var(--tt-text-muted);
}
.feat-card__author { display: flex; align-items: center; }
.feat-card__author .wp-block-post-author__avatar { display: flex; }
.feat-card__author .wp-block-post-author__avatar img {
  border-radius: 50%; margin-right: .5rem; display: block;
}
.feat-card__author .wp-block-post-author__name { font-weight: 600; color: var(--tt-text-strong); margin: 0; }
.feat-card__date { margin: 0; }

/* Lire la suite */
.feat-card__more {
  margin-top: auto;
  color: var(--tt-accent-strong); font-weight: 700;
  font-size: .9375rem; text-decoration: none;
}
.feat-card__more:hover { text-decoration: underline; }

/* Masquer extrait + auteur sur les cartes secondaires */
.blog-feature-grid > li:not(:first-child) .feat-card__excerpt,
.blog-feature-grid > li:not(:first-child) .feat-card__author { display: none; }

/* Carte à la une (1re) */
.blog-feature-grid > li:first-child .feat-card__body { padding: 1.5rem 1.75rem 1.75rem; gap: 1rem; }
.blog-feature-grid > li:first-child .feat-card__title { font-size: 1.6rem; line-height: 1.2; }
.blog-feature-grid > li:first-child .feat-card__meta {
  border-top: 1px solid var(--tt-border-subtle); padding-top: 1rem;
}
.blog-feature-grid > li:first-child .feat-card__date::before { content: "·"; margin-right: .5rem; }

/* Colonne latérale (2-4) — cartes horizontales compactes */
.blog-feature-grid > li:nth-child(2) .feat-card,
.blog-feature-grid > li:nth-child(3) .feat-card,
.blog-feature-grid > li:nth-child(4) .feat-card {
  display: grid; grid-template-columns: 38% 1fr;
}
/* Colonne image des cartes latérales (desktop, grille horizontale 38% + corps).
   Le bloc post-featured-image pose un style INLINE aspect-ratio:16/9 sur la
   <figure> : étirée à la hauteur de la carte, elle en dérivait une largeur (~471px)
   qui débordait de sa colonne (142px) et recouvrait le titre (cartes « sans titre »).
   On neutralise l'aspect-ratio et on sort l'image du flux (position absolue) : la
   figure se cale sur sa cellule (colonne × hauteur du corps), l'image la remplit
   en object-fit cover, et le titre reste visible. Réservé au desktop : en ≤980px
   la carte repasse en pile flex (image 16/9 au-dessus, cf. media query plus bas). */
@media (min-width: 981px) {
  .blog-feature-grid > li:nth-child(2) .feat-card__img,
  .blog-feature-grid > li:nth-child(3) .feat-card__img,
  .blog-feature-grid > li:nth-child(4) .feat-card__img {
    aspect-ratio: auto !important;
    position: relative;
    min-width: 0;
    overflow: hidden;
  }
  .blog-feature-grid > li:nth-child(2) .feat-card__img a,
  .blog-feature-grid > li:nth-child(3) .feat-card__img a,
  .blog-feature-grid > li:nth-child(4) .feat-card__img a {
    position: absolute; inset: 0; width: 100%; height: 100%;
  }
  .blog-feature-grid > li:nth-child(2) .feat-card__img img,
  .blog-feature-grid > li:nth-child(3) .feat-card__img img,
  .blog-feature-grid > li:nth-child(4) .feat-card__img img {
    width: 100%; height: 100%; object-fit: cover; min-height: 0;
  }
}
.blog-feature-grid > li:nth-child(2) .feat-card__body,
.blog-feature-grid > li:nth-child(3) .feat-card__body,
.blog-feature-grid > li:nth-child(4) .feat-card__body {
  justify-content: center; gap: .6rem; padding: 1.1rem 1.25rem;
}

/* Grille (5+) */
.blog-feature-grid > li:nth-child(n+5) .feat-card__title { font-size: 1.05rem; }

/* Responsive */
@media (max-width: 980px) {
  .wp-block-post-template.blog-feature-grid { grid-template-columns: 1fr 1fr; }
  .blog-feature-grid > li:first-child { grid-column: span 2; grid-row: auto; }
  .blog-feature-grid > li:nth-child(2),
  .blog-feature-grid > li:nth-child(3),
  .blog-feature-grid > li:nth-child(4),
  .blog-feature-grid > li:nth-child(n+5) { grid-column: span 1; }
  .blog-feature-grid > li:nth-child(2) .feat-card,
  .blog-feature-grid > li:nth-child(3) .feat-card,
  .blog-feature-grid > li:nth-child(4) .feat-card { display: flex; }
  .blog-feature-grid > li:nth-child(2) .feat-card__img img,
  .blog-feature-grid > li:nth-child(3) .feat-card__img img,
  .blog-feature-grid > li:nth-child(4) .feat-card__img img {
    height: auto; aspect-ratio: 16/9; min-height: 0;
  }
}
@media (max-width: 620px) {
  .wp-block-post-template.blog-feature-grid { grid-template-columns: 1fr; }
  .blog-feature-grid > li:first-child { grid-column: span 1; }
  .blog-feature-grid > li:first-child .feat-card__title { font-size: 1.3rem; }
}

/* ── Annuaire listing ─────────────────────────────────────── */
.ann-hero { }
.ann-hero h1 { color: #ffffff; }
.ann-hero .eyebrow { color: var(--tt-highlight); }

.ann__wrap { }
.ann__form { display: contents; }
.ann__layout { display: grid; grid-template-columns: 264px 1fr; gap: 2rem; align-items: start; }
.ann__layout--no-sidebar { grid-template-columns: 1fr; }

/* Sidebar */
.ann__sidebar { min-width: 0; }
.ann__main { min-width: 0; }

/* Filtres */
.filters { background: var(--tt-surface-card); border: 1px solid var(--tt-border-subtle); border-radius: var(--tt-radius-lg); padding: 1.5rem; position: sticky; top: 88px; }
.filters__group { padding: 1.25rem 0; border-bottom: 1px solid var(--tt-border-subtle); }
.filters__group:first-child { padding-top: 0; }
.filters__group:last-child { border-bottom: 0; padding-bottom: 0; }
.filters h4 { font-size: 0.875rem; font-weight: 600; margin: 0 0 1rem; color: var(--tt-text-strong); }
.filters__opts { display: flex; flex-direction: column; gap: 0.75rem; }
.filters__tags { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.25rem; }
.tt-checkbox { display: flex; align-items: center; gap: 0.5rem; font-size: 0.875rem; color: var(--tt-text-body); cursor: pointer; user-select: none; }
.tt-checkbox input { accent-color: var(--tt-brand); width: 16px; height: 16px; flex-shrink: 0; }

/* Localisation sidebar */
.filters__loc { display: flex; flex-direction: column; gap: 0.625rem; }
.filters__select {
  width: 100%; padding: 0.5rem 2rem 0.5rem 0.75rem; font-size: 0.875rem;
  border: 1px solid var(--tt-border-default); border-radius: var(--tt-radius-md);
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%237a8a7e' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 0.625rem center;
  appearance: none; color: var(--tt-text-body); cursor: pointer;
  transition: border-color var(--tt-duration-fast);
}
.filters__select:focus { outline: none; border-color: var(--tt-brand); }
.filters__select:hover { border-color: var(--tt-brand); }
.filters__input {
  width: 100%; padding: 0.5rem 0.75rem; font-size: 0.875rem;
  border: 1px solid var(--tt-border-default); border-radius: var(--tt-radius-md);
  background: #fff; color: var(--tt-text-body);
  transition: border-color var(--tt-duration-fast);
  box-sizing: border-box;
}
.filters__input::placeholder { color: var(--tt-text-subtle); }
.filters__input:focus { outline: none; border-color: var(--tt-brand); }

/* Specialty tag pills dans le filtre */
.filters__tag-label { display: contents; }
.filters__tag {
  display: inline-flex; align-items: center;
  padding: 0.3125rem 0.875rem; border-radius: 999px;
  font-size: 0.8125rem; cursor: pointer; user-select: none;
  border: 1px solid var(--tt-border-default);
  background: transparent; color: var(--tt-text-body);
  transition: background var(--tt-duration-fast), border-color var(--tt-duration-fast), color var(--tt-duration-fast);
}
.filters__tag:hover { border-color: var(--tt-brand); color: var(--tt-brand); }
.filters__tag.is-active,
.filters__tag-label input:checked ~ .filters__tag { background: var(--tt-brand); border-color: var(--tt-brand); color: #ffffff; }

/* En-tête résultats */
.ann__head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 1rem; flex-wrap: wrap; margin-bottom: 1.25rem;
  padding-bottom: 1rem; border-bottom: 1px solid var(--tt-border-subtle);
}
.ann__head-left { min-width: 0; flex: 1; }
.ann__head-right { flex-shrink: 0; }
.ann__title { font-size: 1.5rem; font-weight: 700; margin: 0 0 0.25rem; color: var(--tt-text-strong); }
.ann__count { margin: 0 0 0.75rem; font-size: 0.9375rem; color: var(--tt-text-muted); }
.ann__count em { font-style: normal; color: var(--tt-text-body); }
.ann__fallback { font-size: 0.8125rem; color: var(--tt-text-subtle); font-style: italic; }

/* Chips filtres actifs */
.ann__chips { display: flex; flex-wrap: wrap; align-items: center; gap: 0.375rem; }
.ann__chip {
  display: inline-flex; align-items: center; gap: 0.375rem;
  padding: 0.25rem 0.375rem 0.25rem 0.75rem;
  background: var(--tt-brand-xsoft); border: 1px solid var(--tt-border-brand);
  border-radius: 999px; font-size: 0.8125rem; color: var(--tt-brand-deep);
  white-space: nowrap;
}
.ann__chip-remove {
  display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px; border-radius: 50%;
  background: rgba(15, 60, 40, 0.12); border: none; cursor: pointer;
  color: inherit; padding: 0; text-decoration: none; flex-shrink: 0;
  transition: background var(--tt-duration-fast);
}
.ann__chip-remove:hover { background: rgba(15, 60, 40, 0.22); }
.ann__reset-all { font-size: 0.8125rem; color: var(--tt-text-muted); text-decoration: underline; white-space: nowrap; }
.ann__reset-all:hover { color: var(--tt-brand); }

/* Sort select */
.ann__sort-select {
  border: 1px solid var(--tt-border-subtle); border-radius: var(--tt-radius-md);
  padding: 0.5rem 2.25rem 0.5rem 0.875rem; font-size: 0.875rem;
  background: var(--tt-surface-card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236b6573' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 0.625rem center;
  appearance: none; cursor: pointer; color: var(--tt-text-body);
  transition: border-color var(--tt-duration-fast);
}
.ann__sort-select:hover, .ann__sort-select:focus { border-color: var(--tt-brand); outline: none; }

/* Utilitaire screen-reader */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

/* Résultats */
.ann__reset { font-size: 0.875rem; color: var(--tt-text-link); text-decoration: underline; }
.ann__list { display: flex; flex-direction: column; gap: 1rem; }
.ann__suggested { padding-bottom: 2rem; border-bottom: 1px solid var(--tt-border-subtle); margin-bottom: 2rem; }
.ann__suggested-intro { margin: 0.25rem 0 1.25rem; font-size: 0.9375rem; color: var(--tt-text-muted); }
.ann__empty { padding: 3rem 0; text-align: center; color: var(--tt-text-muted); }
.ann__empty a { color: var(--tt-text-link); }
.ann__pagination { margin-top: 2.5rem; display: flex; justify-content: center; }
.ann__pagination .page-numbers { display: flex; list-style: none; margin: 0; padding: 0; gap: 0.25rem; }
.ann__pagination .page-numbers li a,
.ann__pagination .page-numbers li span {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 40px; height: 40px; padding: 0 0.75rem;
  border: 1px solid var(--tt-border-subtle); border-radius: var(--tt-radius-md);
  font-size: 0.875rem; color: var(--tt-text-body); text-decoration: none;
  transition: background var(--tt-duration-fast), border-color var(--tt-duration-fast);
}
.ann__pagination .page-numbers li a:hover { background: var(--tt-brand-xsoft); border-color: var(--tt-border-brand); }
.ann__pagination .page-numbers li .current { background: var(--tt-brand); color: #fff; border-color: var(--tt-brand); }

/* Géo navigation sous-termes */
.geo-hero { padding: 4rem 0 3rem; background: var(--tt-brand-xsoft); }
.geo-sub-terms { margin-top: 1.5rem; }
.geo-sub-terms ul { display: flex; gap: 0.5rem; flex-wrap: wrap; list-style: none; padding: 0; margin: 0; }

/* ── Fil d'Ariane ─────────────────────────────────────────── */
.tt-breadcrumbs ol { display: flex; align-items: center; gap: 0.375rem; list-style: none; padding: 0; margin: 0; flex-wrap: wrap; }
.tt-breadcrumbs li { display: flex; align-items: center; gap: 0.375rem; font-size: 0.875rem; color: var(--tt-text-subtle); }
.tt-breadcrumbs a { color: var(--tt-text-muted); }
.tt-breadcrumbs a:hover { color: var(--tt-brand); }
.tt-breadcrumbs [aria-current="page"] { color: var(--tt-text-body); }
.tt-bc__sep { color: var(--tt-text-subtle); }

/* ── Profil thérapeute ────────────────────────────────────── */
.profil__hero { background: var(--tt-brand-xsoft); border-bottom: 1px solid var(--tt-border-subtle); padding: 3rem 0; }
.profil__head { display: flex; gap: 2rem; align-items: flex-start; }
.profil__id { flex: 1; }
.profil__badges { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 6px; }
.profil__name { font-family: var(--tt-font-serif); font-weight: 400; font-size: clamp(2.2rem, 4vw, 3.2rem); letter-spacing: -0.02em; line-height: 1.04; margin: 0.5rem 0; }
.profil__role { font-size: 1.125rem; color: var(--tt-text-muted); }
.profil__metarow { display: flex; gap: 1.25rem; flex-wrap: wrap; margin-top: 1.25rem; color: var(--tt-text-muted); font-size: 0.875rem; }
.profil__metarow span { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.profil__actions { display: flex; gap: 0.75rem; margin-top: 1.5rem; align-items: center; flex-wrap: wrap; }
.profil__layout { display: grid; grid-template-columns: 1fr 360px; gap: 3rem; padding: 4rem 0; align-items: start; }

/* Prose texte */
.prose-block { margin-bottom: 2.5rem; }
.prose-block h2 { font-size: 1.375rem; margin-bottom: 1rem; }
.prose-block p, .prose p { color: var(--tt-text-body); line-height: 1.65; margin-bottom: 1rem; }
.prose-block p:last-child { margin-bottom: 0; }
.tag-row { display: flex; flex-wrap: wrap; gap: 0.5rem; }

/* Formation */
.cred { display: flex; flex-direction: column; gap: 1rem; }
.cred__item { display: flex; gap: 1rem; }
.cred__yr { font-variant-numeric: tabular-nums; color: var(--tt-accent); font-weight: 600; font-size: 0.875rem; flex: none; width: 64px; }
.cred__txt { font-size: 0.875rem; }
.cred__txt b { color: var(--tt-text-strong); font-weight: 600; }

/* Avis */
.reviews__sum { display: flex; gap: 2rem; align-items: center; padding: 1.5rem; background: var(--tt-surface-lemon); border-radius: var(--tt-radius-lg); margin-bottom: 1.5rem; }
.reviews__big { font-family: var(--tt-font-serif); font-weight: 400; font-size: 3.5rem; color: var(--tt-text-strong); line-height: 1; }
.review { padding: 1.25rem 0; border-bottom: 1px solid var(--tt-border-subtle); }
.review:last-child { border-bottom: 0; }
.review__head { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.5rem; }
.review__who { font-weight: 600; font-size: 0.875rem; }
.review__date { color: var(--tt-text-subtle); font-size: 0.75rem; }
.review p { color: var(--tt-text-body); font-size: 0.875rem; line-height: 1.65; }

/* Notation étoiles */
.tt-rating { display: inline-flex; align-items: center; gap: 2px; }
.tt-rating__count { font-size: 0.75rem; color: var(--tt-text-subtle); margin-left: 4px; }

/* Widget réservation */
.booking { position: sticky; top: 88px; background: var(--tt-surface-card); border: 1px solid var(--tt-border-default); border-radius: var(--tt-radius-xl); padding: 1.5rem; box-shadow: var(--tt-shadow-md); }
.booking__price { display: flex; align-items: baseline; gap: 6px; margin-bottom: 1.25rem; flex-wrap: wrap; }
.booking__price b { font-size: 1.75rem; color: var(--tt-text-strong); }
.booking__contact { display: flex; flex-direction: column; gap: 0.5rem; }
.booking__addr { margin-top: 1.25rem; padding-top: 1.25rem; border-top: 1px solid var(--tt-border-subtle); font-size: 0.875rem; color: var(--tt-text-muted); display: flex; gap: 0.75rem; }
.booking__offer { display: flex; align-items: center; gap: 0.5rem; font-size: 0.875rem; color: var(--tt-success); margin-top: 0.75rem; font-weight: 500; }

/* Praticiens similaires */
.tt-similar { display: flex; flex-direction: column; gap: 0.75rem; }
.tt-similar__item { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem; border-radius: var(--tt-radius-lg); border: 1px solid var(--tt-border-subtle); transition: background-color var(--tt-duration-fast) var(--tt-ease-out); }
.tt-similar__item:hover { background: var(--tt-surface-raised); text-decoration: none; }
.tt-similar__info { font-size: 0.875rem; }
.tt-similar__info strong { display: block; color: var(--tt-text-strong); }
.tt-similar__info span { color: var(--tt-text-muted); }

/* ── Article de blog ──────────────────────────────────────── */

/* Assurer que les wrappers article restent en flux block normal */
.art .wp-block-group { display: block; }
/* Exception : art__meta doit rester flex malgré la règle ci-dessus */
.art .art__meta.wp-block-group { display: flex; }
.art__hero.container--narrow,
.art__body-wrap.container--narrow {
  max-width: 820px;
  margin-left: auto;
  margin-right: auto;
}

/* ── Héro d'article pleine largeur ───────────────────────────────────────── */
.art-hero {
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: center;
  min-height: clamp(460px, 68vh, 720px);
  background-color: var(--tt-brand-deep);
  background-size: cover;
  background-position: center;
  color: #fff;
}
.art-hero__scrim {
  position: absolute; inset: 0; z-index: -1;
  background:
    linear-gradient(180deg, rgba(9,54,35,0.55) 0%, rgba(9,54,35,0.72) 100%),
    linear-gradient(90deg, rgba(9,54,35,0.45) 0%, rgba(9,54,35,0.25) 60%);
}
.art-hero:not(.art-hero--image) .art-hero__scrim { display: none; }
.art-hero__inner {
  width: 100%;
  padding-top: clamp(3.5rem, 8vw, 6.5rem);
  padding-bottom: clamp(3rem, 7vw, 5.5rem);
}
.art-hero__content {
  max-width: 680px;
  margin-inline: auto;
  text-align: left;
}
.art-hero__cat {
  display: inline-block;
  padding: 0.4rem 1rem;
  border: 1px solid rgba(255,255,255,0.45);
  border-radius: var(--tt-radius-pill);
  background: rgba(255,255,255,0.10);
  font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase;
  color: #fff;
}
.art-hero__cat:hover { background: rgba(255,255,255,0.22); color: #fff; text-decoration: none; }
.art-hero__title {
  color: #fff;
  font-size: clamp(1.95rem, 4.2vw, 2.9rem);
  line-height: 1.1; letter-spacing: -0.02em;
  margin: 1.35rem 0 0;
  text-wrap: balance;
}
.art-hero__sub {
  color: rgba(255,255,255,0.9);
  font-size: clamp(1.05rem, 1.6vw, 1.2rem);
  line-height: 1.55;
  margin: 1.1rem 0 0;
  max-width: 40ch;
  text-wrap: pretty;
}
.art-hero__meta {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: 0.6rem 1.1rem;
  margin-top: 1.9rem;
  font-size: 0.9375rem; color: rgba(255,255,255,0.85);
}
.art-hero__author { display: inline-flex; align-items: center; gap: 0.6rem; font-weight: 600; color: #fff; }
.art-hero__avatar {
  width: 40px; height: 40px; border-radius: 50%; object-fit: cover;
  border: 2px solid rgba(255,255,255,0.35);
}
.art-hero__updated {
  display: inline-flex; align-items: center; gap: 0.4rem;
  font-style: italic;
  color: rgba(255,255,255,0.82);
}
.art-hero__updated-icon { flex-shrink: 0; opacity: 0.85; }
.art-hero__reading {
  display: inline-flex; align-items: center;
  padding: 0.35rem 0.85rem;
  background: rgba(255,255,255,0.15);
  border-radius: var(--tt-radius-pill);
  font-weight: 600; color: #fff;
}

/* Fil d'Ariane sous le héro */
.art__crumb.wp-block-group { padding-top: 1.25rem; padding-bottom: 0.25rem; }

/* ── Grille article : sommaire (gauche) + colonne article (droite) ──────── */
.art .art__grid.wp-block-group {
  display: grid;
  grid-template-columns: 250px minmax(0, 760px);
  gap: 3rem;
  justify-content: center;
  /* align-items par défaut (stretch) : la colonne .art__aside prend toute la
     hauteur de la rangée, ce qui donne à .art__toc (sticky) sa marge de
     défilement — même principe que .filters / .booking. */
  padding-top: 1.5rem;
  padding-bottom: 3rem;
}
/* Article sans sommaire (moins de 2 titres) → colonne unique centrée */
.art .art__grid.wp-block-group:not(:has(.art__toc)) {
  display: block;
}
.art__grid:not(:has(.art__toc)) .art__col { max-width: 820px; margin-inline: auto; }
.art__col { min-width: 0; }

/* Ancres : dégager le header collant lors des sauts du sommaire */
.art__body h2, .art__body h3 { scroll-margin-top: 96px; }

/* ── Sommaire ────────────────────────────────────────────────────────────── */
.art__aside { min-width: 0; }
.art__toc {
  position: sticky;
  top: 96px;
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-lg);
  background: var(--tt-surface-card);
  box-shadow: var(--tt-shadow-xs);
  overflow: hidden;
}
.art__toc__head {
  width: 100%;
  display: flex; align-items: center; gap: 0.625rem;
  padding: 0.9rem 1rem;
  background: none; border: 0; cursor: pointer;
  font: inherit; text-align: left;
}
.art__toc__lead { display: inline-flex; color: var(--tt-brand); }
.art__toc__title {
  flex: 1;
  font-size: 0.75rem; font-weight: 700;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--tt-text-strong);
}
.art__toc__chevron { display: inline-flex; color: var(--tt-text-subtle); transition: transform 260ms var(--tt-ease-out); }
[data-tt-toc].is-collapsed .art__toc__chevron { transform: rotate(-180deg); }

/* Enfant direct du grid animé : ne doit porter ni padding ni max-height,
   sinon le track ne se replie pas à 0fr (un liseré du sommaire dépasse). */
.art__toc__inner { min-height: 0; overflow: hidden; }
.art__toc__list, .art__toc__sub { list-style: none; margin: 0; padding: 0; }
/* Le padding et la zone de défilement vivent sur la liste, pas sur l'enfant du grid. */
.art__toc__list { overflow-y: auto; max-height: calc(100vh - 170px); padding: 0.25rem 1rem 1rem; }
.art__toc__item { margin-top: 0.6rem; }
.art__toc__item > .art__toc__link { font-weight: 600; color: var(--tt-text-strong); }
.art__toc__sub { margin: 0.35rem 0 0.2rem; padding-left: 0.9rem; }
.art__toc__subitem {
  counter-increment: tt-toc;
  position: relative;
  margin: 0.3rem 0;
  padding-left: 1.5rem;
}
.art__toc__subitem::before {
  content: counter(tt-toc, lower-roman) ".";
  position: absolute; left: 0; top: 0;
  color: var(--tt-brand);
  font-size: 0.8125rem; font-weight: 600;
}
.art__toc__item { counter-reset: tt-toc; }
.art__toc__link {
  display: block;
  font-size: 0.875rem; line-height: 1.4;
  color: var(--tt-text-muted);
  text-decoration: none;
  transition: color var(--tt-duration-fast);
}
.art__toc__subitem .art__toc__link { color: var(--tt-text-muted); }
.art__toc__link:hover { color: var(--tt-brand); }
.art__toc__link.is-active { color: var(--tt-brand); font-weight: 600; }

/* Repliage animé (progressive enhancement, comme la FAQ) */
.tt-js .art__toc__panel { display: grid; grid-template-rows: 1fr; transition: grid-template-rows 280ms var(--tt-ease-out); }
.tt-js [data-tt-toc].is-collapsed .art__toc__panel { grid-template-rows: 0fr; }
@media (prefers-reduced-motion: reduce) { .tt-js .art__toc__panel { transition: none; } }

@media (max-width: 1080px) {
  .art .art__grid.wp-block-group { display: block; padding-top: 1.5rem; }
  .art__col, .art__aside { max-width: 820px; margin-inline: auto; }
  .art__aside { margin-bottom: 1.5rem; }
  .art__toc { position: static; }
}
/* ── Barre d'actions article (partage / résumé IA / source préférée) ─────── */
.art-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.625rem;
  margin: 0 0 2rem;
}
.art-actions__btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.6rem 1.05rem;
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-full, 999px);
  background: var(--tt-surface-card);
  color: var(--tt-text-strong);
  font: inherit; font-size: 0.9375rem; font-weight: 600;
  line-height: 1; text-decoration: none;
  cursor: pointer;
  transition: background var(--tt-duration-fast), border-color var(--tt-duration-fast), box-shadow var(--tt-duration-fast), color var(--tt-duration-fast);
}
.art-actions__btn > svg { width: 18px; height: 18px; color: var(--tt-brand); flex-shrink: 0; }
.art-actions__btn:hover { border-color: var(--tt-brand-soft); background: var(--tt-brand-xsoft); color: var(--tt-text-strong); text-decoration: none; }
.art-actions__btn:focus-visible { outline: none; box-shadow: var(--tt-shadow-focus); }
/* CTA « source préférée » : bouton plein, un seul accent chaud par vue */
.art-actions__btn--pref {
  margin-left: auto;
  background: var(--tt-brand-deep);
  border-color: var(--tt-brand-deep);
  color: #fff;
}
.art-actions__btn--pref:hover { background: var(--tt-brand-active); border-color: var(--tt-brand-active); color: #fff; }
.art-actions__btn--pref .art-share__ico { width: 20px; height: 20px; border-radius: 5px; }

/* Pastilles d'icônes de marque */
.art-share__ico {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; flex-shrink: 0;
  border-radius: 10px;
  background: var(--tt-brand-xsoft); color: var(--tt-brand);
}
.art-share__ico > svg { width: 22px; height: 22px; }
.art-actions__btn--pref .art-share__ico > svg { width: 14px; height: 14px; }
.art-share__ico--facebook { background: #1877f2; color: #fff; }
.art-share__ico--x         { background: #000; color: #fff; }
.art-share__ico--linkedin  { background: #0a66c2; color: #fff; }
.art-share__ico--reddit    { background: #ff4500; color: #fff; }
.art-share__ico--whatsapp  { background: #25d366; color: #fff; }
.art-share__ico--chatgpt   { background: #10a37f; color: #fff; }
.art-share__ico--google    { background: #fff; border: 1px solid var(--tt-border-subtle); }
.art-share__ico--mistral   { background: #fa520f; color: #fff; }
.art-share__ico--claude    { background: #d97757; color: #fff; }
.art-share__ico--perplexity{ background: #20808d; color: #fff; }
.art-share__ico--grok      { background: #000; color: #fff; }

/* Modale (partage + résumé IA) */
dialog.art-share {
  width: min(30rem, calc(100vw - 2rem));
  max-height: calc(100dvh - 2rem);
  padding: 0;
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-xl, 22px);
  background: var(--tt-surface-card);
  box-shadow: var(--tt-shadow-lg);
  color: var(--tt-text-strong);
  overflow: hidden;
}
dialog.art-share::backdrop { background: hsl(150 30% 12% / 0.5); backdrop-filter: blur(2px); }
.art-share__head {
  display: flex; align-items: center; gap: 1rem;
  padding: 1.25rem 1.5rem 0.75rem;
}
.art-share__title {
  flex: 1; margin: 0;
  font-family: var(--tt-font-serif, "Spectral", Georgia, serif);
  font-size: 1.5rem; font-weight: 600; line-height: 1.15;
}
.art-share__close {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; flex-shrink: 0;
  border: 1px solid var(--tt-border-subtle); border-radius: 50%;
  background: none; color: var(--tt-text-muted); cursor: pointer;
  transition: background var(--tt-duration-fast), color var(--tt-duration-fast);
}
.art-share__close > svg { width: 18px; height: 18px; }
.art-share__close:hover { background: var(--tt-brand-xsoft); color: var(--tt-brand); }
.art-share__close:focus-visible { outline: none; box-shadow: var(--tt-shadow-focus); }
.art-share__list {
  display: flex; flex-direction: column; gap: 0.625rem;
  padding: 0.5rem 1.5rem 1.5rem;
  overflow-y: auto;
}
.art-share__item {
  display: flex; align-items: center; gap: 1rem;
  width: 100%; padding: 0.75rem 1rem;
  border: 1px solid var(--tt-border-subtle); border-radius: var(--tt-radius-lg);
  background: var(--tt-surface-card); color: var(--tt-text-strong);
  font: inherit; font-size: 1.0625rem; font-weight: 600;
  text-align: left; text-decoration: none; cursor: pointer;
  transition: border-color var(--tt-duration-fast), background var(--tt-duration-fast), box-shadow var(--tt-duration-fast);
}
.art-share__item:hover { border-color: var(--tt-brand-soft); background: var(--tt-brand-xsoft); text-decoration: none; box-shadow: var(--tt-shadow-xs); }
.art-share__item:focus-visible { outline: none; box-shadow: var(--tt-shadow-focus); }
.art-share__item.is-copied { border-color: var(--tt-brand-soft); background: var(--tt-brand-xsoft); }
.art-share__note {
  margin: 0; padding: 0 1.5rem 1.5rem;
  font-size: 0.8125rem; line-height: 1.5; color: var(--tt-text-muted);
}
/* Sur mobile : les deux boutons se partagent la 1re ligne (50/50), le CTA
   occupe toute la largeur en dessous — bords alignés, pas d'effet décalé. */
@media (max-width: 560px) {
  .art-actions__btn { flex: 1 1 0; justify-content: center; }
  .art-actions__btn--pref { flex-basis: 100%; margin-left: 0; }
}

/* Masquer l'image à la une si absente */
.art__cover:empty,
.art__cover .wp-block-post-featured-image:not(:has(img)) { display: none; }

.art__hero { padding-top: 4rem; padding-bottom: 2rem; }
.art__meta { display: flex; align-items: center; gap: 1rem; margin: 1.5rem 0; color: var(--tt-text-muted); font-size: 0.875rem; flex-wrap: wrap; }
.art__title { font-size: clamp(1.75rem, 4vw, 2.9rem); line-height: 1.1; letter-spacing: -0.02em; margin: 0.75rem 0 0; }
.art__cover {
  width: 100%; max-width: 100%;
  height: 420px; margin: 2rem 0 3rem;
  overflow: hidden; border-radius: var(--tt-radius-xl);
  /* Neutralise les marges négatives que WP peut ajouter au bloc featured-image */
  margin-inline: 0 !important;
}
.art__cover img,
.art__cover figure,
.wp-block-post-featured-image.art__cover {
  width: 100%; max-width: 100%;
  height: 100%; object-fit: cover; margin: 0;
}
.art__body-wrap { padding-bottom: 2rem; }
/* Boîte auteur (dans le héro de l'article, sous le titre et la méta) */
.art__author-wrap {
  border-top: 1px solid var(--tt-border-subtle);
  margin-top: 1.5rem;
}
.art__author-card {
  display: flex;
  align-items: flex-start;
  gap: 1.25rem;
  padding: 1.25rem 0 0;
}
.art__author-img { flex-shrink: 0; }
.art__author-avatar {
  width: 56px; height: 56px;
  border-radius: 50%;
  object-fit: cover;
  display: block;
}
.art__author-content { flex: 1; }
.art__author-aside {
  margin-left: auto;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.2rem;
  font-size: 0.8125rem;
  color: var(--tt-text-subtle);
  padding-top: 0.25rem;
}
.art__author-date--updated { color: var(--tt-brand); font-weight: 600; }
.art__author-byline {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--tt-text-subtle);
  margin: 0 0 0.1rem;
}
.art__author-name {
  font-size: 1rem;
  font-weight: 700;
  color: var(--tt-text-strong);
  margin: 0 0 0.25rem;
}
.art__author-bio {
  font-size: 0.875rem;
  color: var(--tt-text-muted);
  line-height: 1.55;
  margin: 0;
}
.art__body { font-size: 1.125rem; line-height: 1.65; color: var(--tt-text-body); }
.art__body p { margin-bottom: 1.5rem; }
.art__body h2 { font-size: 1.75rem; margin: 3rem 0 1rem; line-height: 1.2; }
.art__body h3 { font-size: 1.25rem; margin: 2rem 0 0.75rem; }
.art__body ul, .art__body ol { padding-left: 1.5rem; margin-bottom: 1.5rem; }
.art__body li { margin-bottom: 0.4rem; line-height: 1.7; }
/* Puces et numéros aux couleurs de la marque */
.art__body ul li::marker { color: var(--tt-accent); }
.art__body ol li::marker { color: var(--tt-brand); font-weight: 700; }
.art__body strong { font-weight: 600; color: var(--tt-text-strong); }

/* ------------------------------------------------------------------
   Surlignage <mark>
   Trait de surligneur abricot posé derrière le bas du texte (pas de
   pavé plein : la lisibilité reste intacte sur les gros titres).
   - hauteur et débord exprimés en em -> s'adapte à toute taille de police
   - padding compensé par une marge négative -> aucun décalage de mise en page
   - box-decoration-break: clone -> le trait se répète proprement sur
     chaque ligne quand le passage surligné passe à la ligne
   Les tags <mark> arrivent tels quels dans le contenu (générateur), on
   neutralise donc aussi le jaune par défaut du navigateur et un éventuel
   background-color inline posé par l'éditeur WordPress.
   ------------------------------------------------------------------ */
mark,
.art__body mark {
  color: inherit;
  background-color: transparent;
  background-image: linear-gradient(
    to top,
    transparent 0 0.04em,
    var(--tt-mark) 0.04em 0.50em,
    transparent 0.50em
  );
  background-repeat: no-repeat;
  padding-inline: 0.14em;
  margin-inline: -0.14em;
  border-radius: 2px;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

/* Titres : trait un peu plus haut pour rester visible sous les grandes casses */
.art__body h2 mark,
.art__body h3 mark,
h1 mark, h2 mark, h3 mark {
  background-image: linear-gradient(
    to top,
    transparent 0 0.04em,
    var(--tt-mark) 0.04em 0.42em,
    transparent 0.42em
  );
}

/* Surfaces sombres (héros, bandeaux) : trait translucide, texte blanc conservé */
.hero mark,
.ann-hero mark,
.art-hero mark,
.band mark,
.cta--deep mark {
  background-image: linear-gradient(
    to top,
    transparent 0 0.04em,
    var(--tt-mark-invert) 0.04em 0.50em,
    transparent 0.50em
  );
}

/* Un lien surligné garde son soulignement lisible au-dessus du trait */
.art__body a mark { text-decoration: inherit; }

@media print {
  mark { background-image: none; text-decoration: underline; }
}
/* Images du corps de l'article : mêmes bords arrondis que l'image à la une */
.art__body img { border-radius: var(--tt-radius-xl); display: block; }
.art__pull { font-family: var(--tt-font-serif); font-size: 1.6rem; line-height: 1.4; color: var(--tt-brand); border-left: 3px solid var(--tt-accent); padding: 0.5rem 0 0.5rem 1.5rem; margin: 2.5rem 0; font-weight: 500; }
.reading-time { display: inline-flex; align-items: center; gap: 4px; font-size: 0.875rem; color: var(--tt-text-subtle); }
/* wp:post-featured-image vide (pas de miniature) → masquer le placeholder */
.art__cover figure:empty, .art__cover .wp-block-post-featured-image:empty { display: none; }

/* Pull-quote (wp:quote avec className="pullquote") */
.wp-block-quote.pullquote {
  font-family: var(--tt-font-serif);
  font-size: clamp(1.2rem, 2.5vw, 1.55rem);
  line-height: 1.45;
  font-style: italic;
  color: var(--tt-brand);
  border-left: 3px solid var(--tt-accent);
  padding: 0.5rem 0 0.5rem 1.75rem;
  margin: 2.5rem 0;
  background: none;
}
.wp-block-quote.pullquote p { margin: 0 0 0.5rem; }
.wp-block-quote.pullquote cite { font-size: 0.875rem; font-style: normal; color: var(--tt-text-subtle); font-family: var(--tt-font-base); }

/* ── Citation éditoriale (blockquote simple du corps d'article) ──────────── */
.art__body blockquote:not(.pullquote) {
  position: relative;
  margin: 2.5rem 0;
  padding: 1.75rem 2rem 1.75rem 3.5rem;
  background: var(--tt-brand-xsoft);
  border-left: 4px solid var(--tt-brand);
  border-radius: var(--tt-radius-lg);
  font-family: var(--tt-font-serif);
  font-size: 1.1875rem;
  line-height: 1.55;
  font-style: italic;
  color: var(--tt-brand-deep);
}
.art__body blockquote:not(.pullquote)::before {
  content: "\201C";
  position: absolute;
  left: 1rem;
  top: 1.1rem;
  font-family: var(--tt-font-serif);
  font-size: 2.75rem;
  line-height: 1;
  color: var(--tt-brand-soft);
}
.art__body blockquote:not(.pullquote) p { margin: 0 0 0.75rem; font-size: inherit; }
.art__body blockquote:not(.pullquote) p:last-child { margin-bottom: 0; }
.art__body blockquote:not(.pullquote) cite {
  display: block;
  margin-top: 0.75rem;
  font-family: var(--tt-font-base);
  font-style: normal;
  font-weight: 600;
  font-size: 0.875rem;
  color: var(--tt-text-subtle);
}

/* ── Tableau du corps d'article ──────────────────────────────────────────── */
.art__body .tt-table {
  margin: 2.5rem 0;
  overflow-x: auto;
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-lg);
  box-shadow: var(--tt-shadow-xs);
  -webkit-overflow-scrolling: touch;
}
.art__body table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--tt-font-base);
  font-size: 0.9375rem;
  line-height: 1.5;
  color: var(--tt-text-body);
}
.art__body thead th {
  background: var(--tt-brand);
  color: #fff;
  font-weight: 600;
  text-align: left;
  letter-spacing: 0.01em;
}
.art__body th,
.art__body td {
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--tt-border-subtle);
  vertical-align: top;
}
.art__body td + td,
.art__body th + th { border-left: 1px solid var(--tt-border-subtle); }
.art__body tbody tr:nth-child(even) { background: var(--tt-brand-xsoft); }
.art__body tbody tr:last-child td { border-bottom: 0; }
.art__body td strong { color: var(--tt-text-strong); }

/* Encadré (wp:group avec className="encadre") */
.wp-block-group.encadre {
  border-radius: var(--tt-radius-lg);
  border: 1px solid var(--tt-brand-soft, #d8d1e8);
  margin: 2rem 0;
}
.wp-block-group.encadre h3 { color: var(--tt-brand); margin: 0 0 0.5rem; }
.wp-block-group.encadre p { margin: 0; font-size: 0.9375rem; line-height: 1.65; }

/* ── Formulaire ──────────────────────────────────────────── */
.tt-form { display: flex; flex-direction: column; gap: 1rem; }
.tt-field { display: flex; flex-direction: column; gap: 0.375rem; }
.tt-field label { font-size: 0.875rem; font-weight: 500; color: var(--tt-text-body); }
.tt-field input, .tt-field textarea, .tt-field select {
  width: 100%; padding: 0.65rem 1rem; border: 1px solid var(--tt-border-default);
  border-radius: var(--tt-radius-md); font-family: var(--tt-font-sans); font-size: 1rem;
  color: var(--tt-text-strong); background: var(--tt-surface-card);
  transition: border-color var(--tt-duration-fast) var(--tt-ease-out), box-shadow var(--tt-duration-fast) var(--tt-ease-out);
}
.tt-field input:focus, .tt-field textarea:focus, .tt-field select:focus {
  outline: none; border-color: var(--tt-border-brand); box-shadow: var(--tt-shadow-focus);
}
.tt-form__legal { font-size: 0.75rem; color: var(--tt-text-subtle); line-height: 1.5; margin-top: 0.5rem; }
.tt-field__hint { font-size: 0.75rem; color: var(--tt-text-subtle); }
.tt-field__error { font-size: 0.75rem; color: #c0392b; }

/* Champ fichier stylé */
.tt-field input[type="file"] {
  padding: 0; border: none; background: none;
}
.tt-field input[type="file"]::file-selector-button {
  background: var(--tt-surface-page);
  border: 1px solid var(--tt-border-default);
  border-radius: var(--tt-radius-md);
  padding: 0.55rem 1.25rem;
  font-family: var(--tt-font-sans);
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--tt-text-body);
  cursor: pointer;
  margin-right: 0.75rem;
  transition: background 0.18s, border-color 0.18s;
}
.tt-field input[type="file"]::file-selector-button:hover {
  background: var(--tt-brand-xsoft);
  border-color: var(--tt-border-brand);
}

/* Champs registration */
.reg-page, .contact-page { padding: 3rem 1rem 5rem; }
.reg-hero { text-align: center; margin-bottom: 3rem; padding-top: clamp(1.75rem, 4vw, 3rem); }
.reg-hero h1 { font-size: clamp(1.75rem, 4vw, 2.5rem); }
.lead { font-size: 1.1rem; color: var(--tt-text-muted); max-width: 52ch; margin: 0 auto 1.5rem; }
.reg-nav { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; margin-top: 1.5rem; }
.reg-nav__item { font-size: 0.8rem; padding: 0.3rem 0.9rem; border-radius: 99px; background: var(--tt-surface-page); color: var(--tt-text-muted); border: 1px solid var(--tt-border-subtle); }
.reg-nav__item.active { background: var(--tt-brand); color: #fff; border-color: var(--tt-brand); }
.reg-nav__item.complete { background: var(--tt-success-soft); color: var(--tt-success); border-color: var(--tt-success); }
.reg-wrap { max-width: 720px; margin: 0 auto; }
.reg-step__title { font-size: 1.35rem; margin-bottom: 1.5rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--tt-border-subtle); }
.reg-step__actions { display: flex; gap: 0.75rem; justify-content: flex-end; margin-top: 1.5rem; padding-top: 1.5rem; border-top: 1px solid var(--tt-border-subtle); }
.tt-field-group { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.tt-fieldset { border: 1px solid var(--tt-border-subtle); border-radius: var(--tt-radius-md); padding: 1rem 1.25rem; margin: 0; }
.tt-fieldset legend { font-size: 0.875rem; font-weight: 500; padding: 0 0.4rem; color: var(--tt-text-body); }
.tt-check { display: flex; align-items: center; gap: 0.5rem; font-size: 0.9375rem; cursor: pointer; }
.tt-check input[type="checkbox"] { width: 1rem; height: 1rem; accent-color: var(--tt-brand); flex-shrink: 0; }
/* Honeypot anti-spam : retiré du flux visuel et du parcours clavier, mais reste
   présent dans le DOM (les bots le remplissent, pas les humains). */
.tt-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.tt-check-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 0.6rem 1.25rem; }
@media (max-width: 480px) { .tt-check-grid { grid-template-columns: 1fr; } }
.reg-recap { background: var(--tt-brand-xsoft); border: 1px solid var(--tt-brand-soft); border-radius: var(--tt-radius-md); padding: 1rem 1.25rem; font-size: 0.9375rem; color: var(--tt-text-body); }
.reg-trust { text-align: center; margin-top: 2rem; }
.tt-form__error { color: #c0392b; font-size: 0.875rem; }
.tt-field input.has-error, .tt-field textarea.has-error, .tt-field select.has-error {
  border-color: #c0392b;
  outline: 0;
  box-shadow: 0 0 0 3px rgba(192,57,43,.12);
}
.tt-field input[type="checkbox"].has-error + span,
.tt-check input.has-error ~ * { outline: 2px solid #c0392b; outline-offset: 2px; border-radius: 2px; }
.formation-item { padding-bottom: 1rem; }
.formation-item + .formation-item { border-top: 1px solid var(--tt-border-subtle); padding-top: 1rem; margin-top: 1rem; }
.reg-success { text-align: center; padding: 3rem 1rem; }
.reg-success h2 { font-size: 1.5rem; color: var(--tt-brand); margin-bottom: 1rem; }
.reg-success p { color: var(--tt-text-body); line-height: 1.7; }

/* Carte « lien de retour » de l'étape Vérification (formulaire d'inscription) */
.reg-backlink {
  margin-top: 1.5rem;
  padding: 1.5rem;
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-lg, 14px);
  background: var(--tt-surface-card, #fff);
}
.reg-backlink h3 { font-size: 1.15rem; color: var(--tt-brand); margin: 0 0 0.75rem; }
.reg-backlink .tt-field + .tt-field { margin-top: 1.25rem; }
@media (max-width: 768px) { .reg-backlink { padding: 1.25rem; } }
.reg-success__note {
  margin: 1rem auto 0;
  max-width: 46rem;
  padding: 0.75rem 1rem;
  border-radius: var(--tt-radius-md);
  background: #faf3e3;
  color: #8a6d3b;
  font-size: 0.9375rem;
}

/* Carte « lien de retour » affichée sur l'écran de confirmation d'inscription */
.reg-success-backlink {
  margin-top: 1rem;
  padding: 1.75rem;
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-lg, 14px);
  background: var(--tt-surface-card, #fff);
  text-align: left;
}
.reg-success-backlink h3 {
  font-size: 1.15rem; color: var(--tt-brand); margin: 0 0 0.75rem;
}
@media (max-width: 768px) { .reg-success-backlink { padding: 1.25rem; } }

/* ── Pied de page ─────────────────────────────────────────── */
.site-footer { background: #07301f; color: #a3d8b6; padding-top: 4rem; padding-bottom: 2rem; }
.ftr__top.wp-block-group,
.ftr__top {
  display: grid !important;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap: 2.5rem;
  padding-bottom: 3rem;
  border-bottom: 1px solid rgba(255,255,255,.08);
  align-items: start;
}
.ftr__top > * { margin-block-start: 0 !important; }
.ftr__brand { min-width: 0; }
.ftr__brand-logo { display: block; margin-bottom: 1.25rem; }
.ftr__brand-logo svg { display: block; max-width: 100%; height: auto; }
.site-footer .container { padding-left: 3rem; padding-right: 3rem; }
.ftr__col { min-width: 0; }
.ftr__col-title {
  color: #fff !important;
  font-size: 0.875rem !important;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin: 0 0 1rem !important;
}
.ftr__links {
  list-style: none;
  margin: 0; padding: 0;
  display: flex; flex-direction: column; gap: 0.65rem;
}
.ftr a, .ftr__links a {
  color: #93d2af;
  font-size: 0.875rem;
  text-decoration: none;
  transition: color 0.18s;
}
.ftr a:hover, .ftr__links a:hover { color: #fff; }
.ftr__social { margin-top: 3.75rem; }
.ftr__social-title {
  margin: 0 0 1.35rem; font-size: 0.6875rem; font-weight: 600;
  letter-spacing: 0.11em; text-transform: uppercase; color: #7fae90;
}
.ftr__social-links { display: flex; gap: 1rem; }
.ftr__social-link {
  display: inline-flex; align-items: center; justify-content: center;
  width: 42px; height: 42px; border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.18); color: #a3d8b6;
  transition: color 0.18s, border-color 0.18s, background 0.18s;
}
.ftr__social-link:hover { color: #ffd45e; border-color: #ffd45e; background: rgba(255,212,94,0.08); }
.ftr__bottom {
  display: flex; justify-content: space-between; align-items: center;
  padding-top: 2rem; font-size: 0.75rem; color: #629677;
  flex-wrap: wrap; gap: 0.75rem;
}

/* ── Mise en avant (highlight, gold) ──────────────────────── */
/* Sélecteurs qualifiés par .lg-tcard pour battre la spécificité de la
   règle de base .lg-tcard (même nombre de classes sinon = l'ordre dans
   le fichier déciderait, et l'or ne resterait visible qu'au survol).
   Traitement réservé aux cartes de liste — la fiche elle-même garde le
   même design que les profils non mis en avant. */
.lg-tcard.lg-tcard--highlight {
  position: relative;
  overflow: hidden;
  border-color: var(--tt-highlight);
  background: linear-gradient(180deg, #fff8e3 0%, var(--tt-surface-card) 110px);
  box-shadow: 0 0 0 1.5px var(--tt-highlight), 0 8px 24px -8px rgba(224, 163, 23, 0.45), var(--tt-shadow-sm);
}
.lg-tcard.lg-tcard--highlight::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--tt-highlight), var(--tt-accent));
}
.lg-tcard.lg-tcard--highlight.lg-tcard--interactive:hover {
  box-shadow: 0 0 0 1.5px var(--tt-highlight), 0 12px 28px -8px rgba(224, 163, 23, 0.55), var(--tt-shadow-lg);
}
.tt-badge--highlight {
  background: linear-gradient(135deg, #ffcf4d, #e0a317);
  color: #fff;
  width: 24px; height: 24px;
  padding: 0;
  border-radius: 50%;
  justify-content: center;
  box-shadow: 0 1px 3px rgba(120, 80, 0, 0.35);
}
@media (max-width: 960px) {
  .hero__in { padding-top: 3.5rem; padding-bottom: 3rem; }
  .hero__sub { max-width: 100%; }
  .hero__search { max-width: 100%; }
  .hero__blob--1 { opacity: 0.45; }
}

/* ── Fiche profil — héro ─────────────────────────────────── */
.profil-hero { display: flex; gap: 2rem; align-items: flex-start; padding: 2rem 0; }
.profil-hero__avatar { position: relative; flex-shrink: 0; }
.profil-hero__check {
  position: absolute; bottom: 0; right: 0;
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--tt-success);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 0 0 3px #f5f2f8;
}
.profil-hero__body { flex: 1; min-width: 0; }
.profil-hero__meta { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.75rem; }
.profil-hero__name { font-family: var(--tt-font-serif); font-weight: 400; font-size: 2rem; letter-spacing: -0.02em; color: var(--tt-text-strong); margin: 0 0 0.25rem; }
.profil-hero__titre { font-size: 1rem; color: var(--tt-text-muted); margin: 0 0 0.5rem; }
.profil-hero__rating { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; }
.profil-hero__rating-score { font-size: 1rem; font-weight: 700; color: var(--tt-text-strong); }
.profil-hero__quick { list-style: none; margin: 0 0 1rem; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; font-size: 0.9375rem; color: var(--tt-text-muted); }
.profil-hero__quick li { display: flex; align-items: center; gap: 0.35rem; }
.profil-hero__quick svg { color: var(--tt-brand); flex-shrink: 0; }
.profil-hero__badges { display: flex; flex-wrap: wrap; gap: 0.5rem; }

/* ── Fiche profil — sections ─────────────────────────────── */
.profil-section { margin-bottom: 2.5rem; padding-bottom: 2.5rem; border-bottom: 1px solid var(--tt-border-subtle); }
.profil-section:last-child { border-bottom: none; }
.profil-section__title { font-size: 1.25rem; font-weight: 700; color: var(--tt-text-strong); margin: 0 0 1.25rem; }

.profil-approach__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.6rem; }
.profil-approach__list li { display: flex; align-items: center; gap: 0.5rem; font-size: 0.9375rem; }
.profil-approach__list svg { color: var(--tt-success); flex-shrink: 0; }

.profil-specs__tags { display: flex; flex-wrap: wrap; gap: 0.5rem; }

.profil-training__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1.25rem; }
.profil-training__item { display: flex; gap: 1.25rem; align-items: flex-start; }
.profil-training__year {
  font-family: var(--tt-font-serif); font-size: 0.8125rem; color: var(--tt-accent);
  font-weight: 600; min-width: 44px; padding-top: 2px;
}
.profil-training__details { display: flex; flex-direction: column; gap: 0.2rem; }
.profil-training__details strong { font-size: 0.9375rem; color: var(--tt-text-strong); font-weight: 600; }
.profil-training__details span { font-size: 0.875rem; color: var(--tt-text-muted); }

/* ── Avis ────────────────────────────────────────────────── */
.profil-reviews__header { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 0.75rem; margin-bottom: 1.5rem; }
.profil-reviews__summary { display: flex; align-items: center; gap: 0.5rem; }
.profil-reviews__score { font-size: 1.25rem; font-weight: 700; color: var(--tt-text-strong); }
.profil-reviews__count { font-size: 0.875rem; color: var(--tt-text-muted); }
.profil-reviews__list { display: flex; flex-direction: column; gap: 1.5rem; }
.profil-review { background: var(--tt-surface-raised); border: 1px solid var(--tt-border-subtle); border-radius: var(--tt-radius-md); padding: 1.25rem; }
.profil-review__header { display: flex; align-items: center; gap: 1rem; margin-bottom: 0.75rem; flex-wrap: wrap; }
.profil-review__author { font-weight: 600; font-size: 0.9375rem; color: var(--tt-text-strong); }
.profil-review__date { font-size: 0.8125rem; color: var(--tt-text-subtle); margin-left: auto; }
.profil-review__text { margin: 0; font-size: 0.9375rem; line-height: 1.65; color: var(--tt-text-body); quotes: '\00AB\202F' '\202F\00BB'; }
.profil-review__text p { margin: 0; }

/* ── Booking widget (sidebar) ────────────────────────────── */
.booking-widget {
  background: var(--tt-surface-card); border: 1.5px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-xl); padding: 1.75rem;
  box-shadow: var(--tt-shadow-md);
}
.booking-widget__price { margin-bottom: 1rem; }
.booking-widget__amount { font-size: 1.75rem; font-weight: 800; color: var(--tt-text-strong); }
.booking-widget__unit { font-size: 0.9rem; color: var(--tt-text-muted); margin-left: 0.4rem; }
.booking-widget__offer {
  display: flex; align-items: center; gap: 0.4rem;
  font-size: 0.875rem; color: var(--tt-success);
  background: var(--tt-success-soft); border-radius: var(--tt-radius-sm);
  padding: 0.5rem 0.75rem; margin-bottom: 1rem;
}
.booking-widget__cta { width: 100%; justify-content: center; margin-bottom: 0.75rem; display: flex; gap: 0.5rem; }
.booking-widget__phone { width: 100%; justify-content: center; margin-bottom: 1rem; display: flex; gap: 0.5rem; }
.booking-widget__link { display: block; text-align: center; font-size: 0.875rem; color: var(--tt-text-link); text-decoration: underline; margin-bottom: 1.25rem; }
.booking-widget__info { list-style: none; margin: 0 0 1rem; padding: 0; display: flex; flex-direction: column; gap: 0.6rem; border-top: 1px solid var(--tt-border-subtle); padding-top: 1rem; }
.booking-widget__info li { display: flex; align-items: flex-start; gap: 0.5rem; font-size: 0.875rem; color: var(--tt-text-muted); }
.booking-widget__info svg { flex-shrink: 0; color: var(--tt-brand); margin-top: 2px; }
.booking-widget__verified { display: flex; align-items: center; gap: 0.4rem; font-size: 0.8125rem; color: var(--tt-success); margin: 0; }

/* ── Fil d'Ariane ────────────────────────────────────────── */
.tt-breadcrumbs { margin-bottom: 1.5rem; }
.tt-breadcrumbs__list { list-style: none; margin: 0; padding: 0; display: flex; align-items: center; flex-wrap: wrap; gap: 0.25rem 0.5rem; font-size: 0.8125rem; color: var(--tt-text-subtle); }
.tt-breadcrumbs__item a { color: var(--tt-text-link); text-decoration: none; }
.tt-breadcrumbs__item a:hover { text-decoration: underline; }
.tt-breadcrumbs__item + .tt-breadcrumbs__item::before { content: '/'; color: var(--tt-border-default); }

/* ── Avatar ───────────────────────────────────────────────── */
.tt-avatar {
  position: relative; flex: none; display: inline-flex;
  align-items: center; justify-content: center;
  border-radius: 50%; overflow: hidden;
  background: var(--tt-brand-soft); color: var(--tt-brand);
  font-family: var(--tt-font-sans); font-weight: 600;
}
.tt-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tt-avatar--initials { color: #fff; user-select: none; }
.tt-avatar--ring { box-shadow: 0 0 0 2px var(--tt-surface-card), 0 0 0 4px var(--tt-accent); }
.tt-avatar--xs { width: 28px; height: 28px; }
.tt-avatar--sm { width: 40px; height: 40px; }
.tt-avatar--md { width: 56px; height: 56px; }
.tt-avatar--lg { width: 80px; height: 80px; }
.tt-avatar--xl { width: 112px; height: 112px; }

/* ── Barre de recherche ──────────────────────────────────── */
.lg-search {
  display: flex; align-items: center;
  background: var(--tt-surface-card);
  border: 1px solid var(--tt-border-default);
  border-radius: var(--tt-radius-pill);
  padding: 6px 6px 6px 18px;
  box-shadow: var(--tt-shadow-md);
  gap: 0.5rem;
  font-family: var(--tt-font-sans);
  max-width: 640px;
}
.lg-search:focus-within {
  border-color: var(--tt-border-brand);
  box-shadow: var(--tt-shadow-lg);
}
.lg-search__seg {
  display: flex; align-items: center;
  gap: 0.5rem; flex: 1 1 auto; min-width: 0;
}
.lg-search__seg + .lg-search__seg {
  border-left: 1px solid var(--tt-border-subtle);
  padding-left: 16px;
}
.lg-search__icon {
  display: inline-flex; flex: none;
  color: var(--tt-text-subtle);
}
.lg-search input {
  border: 0; outline: none; background: transparent;
  font-family: var(--tt-font-sans); font-size: 1rem;
  color: var(--tt-text-strong); width: 100%; min-width: 0;
  padding: 12px 0;
}
.lg-search input::placeholder { color: var(--tt-text-subtle); }
.lg-search__btn {
  flex: none; display: inline-flex; align-items: center;
  background: var(--tt-brand); color: #fff; border: 0; cursor: pointer;
  font-family: var(--tt-font-sans); font-weight: 600; font-size: 1rem;
  border-radius: var(--tt-radius-pill); height: 48px; padding: 0 1.5rem;
  white-space: nowrap;
  transition: background-color var(--tt-duration-fast) var(--tt-ease-out);
}
.lg-search__btn:hover { background: var(--tt-brand-hover); }
.lg-search__btn:focus-visible { outline: none; box-shadow: var(--tt-shadow-focus); }

/* ── Tag (spécialité) ────────────────────────────────────── */
.lg-tag {
  display: inline-flex; align-items: center; gap: 0.25rem;
  font-family: var(--tt-font-sans); font-size: 0.875rem; font-weight: 500;
  padding: 6px 12px; border-radius: var(--tt-radius-pill);
  background: var(--tt-surface-card); color: var(--tt-text-body);
  border: 1px solid var(--tt-border-default);
  cursor: default; white-space: nowrap;
}

/* ── Carte thérapeute ────────────────────────────────────── */
.lg-tcard {
  display: flex; gap: 1.25rem;
  background: var(--tt-surface-card);
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-lg);
  padding: 1.5rem;
  box-shadow: var(--tt-shadow-sm);
  font-family: var(--tt-font-sans);
  transition: box-shadow var(--tt-duration-base) var(--tt-ease-out),
              border-color var(--tt-duration-base) var(--tt-ease-out),
              transform var(--tt-duration-base) var(--tt-ease-out);
  cursor: default;
}
.lg-tcard--interactive { cursor: pointer; }
.lg-tcard--interactive:hover { box-shadow: var(--tt-shadow-lg); border-color: var(--tt-border-default); transform: translateY(-2px); }

.lg-tcard__media { position: relative; flex: none; }
.lg-tcard__fav {
  position: absolute; top: -6px; right: -6px;
  background: var(--tt-surface-card); border: 1px solid var(--tt-border-subtle);
  border-radius: 50%; width: 32px; height: 32px;
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer; box-shadow: var(--tt-shadow-sm);
  color: var(--tt-text-subtle);
  transition: color var(--tt-duration-fast), border-color var(--tt-duration-fast);
}
.lg-tcard__fav:hover { color: #e07080; border-color: #e07080; }
.lg-tcard__fav.is-fav { color: #e07080; }
.lg-tcard__fav--visio { cursor: default; color: var(--tt-brand); border-color: var(--tt-brand-soft); }
.lg-tcard__fav--visio:hover { color: var(--tt-brand); border-color: var(--tt-brand-soft); }

.lg-tcard__body {
  flex: 1 1 auto; min-width: 0;
  display: flex; flex-direction: column; gap: 0.75rem;
}
.lg-tcard__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.lg-tcard__name { font-size: 1.125rem; font-weight: 700; color: var(--tt-text-strong); letter-spacing: -0.01em; }
.lg-tcard__title { font-size: 0.875rem; color: var(--tt-text-muted); margin-top: 2px; }
.lg-tcard__badges { display: flex; gap: 0.5rem; flex-wrap: wrap; flex-shrink: 0; }

.lg-tcard__meta {
  display: flex; flex-wrap: wrap;
  gap: 0.5rem 1.25rem;
  color: var(--tt-text-muted); font-size: 0.875rem;
}
.lg-tcard__meta span { display: inline-flex; align-items: center; gap: 0.35rem; white-space: nowrap; }

.lg-tcard__tags { display: flex; flex-wrap: wrap; gap: 0.5rem; }

.lg-tcard__row {
  display: flex; align-items: center;
  justify-content: space-between; gap: 1rem;
  margin-top: 0.25rem; flex-wrap: wrap;
}
.lg-tcard__row--no-price { justify-content: flex-end; }
.lg-tcard__price { font-size: 0.875rem; color: var(--tt-text-body); }
.lg-tcard__price b { color: var(--tt-text-strong); font-weight: 600; }

/* ── Mur de praticiens compact (homepage « à la une ») ───── */
.tcard-mini-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  grid-auto-flow: dense;
  grid-auto-rows: 224px;
  gap: 1rem;
}
.tcard-mini {
  position: relative;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; overflow: hidden;
  gap: 0.4rem;
  padding: 1.5rem 1rem;
  background: var(--tt-surface-card);
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-lg);
  box-shadow: var(--tt-shadow-sm);
  text-decoration: none;
  font-family: var(--tt-font-sans);
  transition: box-shadow var(--tt-duration-base) var(--tt-ease-out),
              border-color var(--tt-duration-base) var(--tt-ease-out),
              transform var(--tt-duration-base) var(--tt-ease-out);
}
.tcard-mini:hover {
  box-shadow: var(--tt-shadow-lg);
  border-color: var(--tt-border-default);
  transform: translateY(-2px);
}
.tcard-mini__media { position: relative; margin-bottom: 0.25rem; }
.tcard-mini__star {
  position: absolute; bottom: -2px; right: -2px;
  width: 22px; height: 22px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #ffcf4d, #e0a317); color: #fff;
  border: 2px solid var(--tt-surface-card);
  box-shadow: 0 1px 3px rgba(120, 80, 0, 0.35);
}
.tcard-mini__name {
  font-size: 1rem; font-weight: 700; color: var(--tt-text-strong);
  letter-spacing: -0.01em; line-height: 1.25;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.tcard-mini__title {
  font-size: 0.8125rem; color: var(--tt-text-muted); line-height: 1.3;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.tcard-mini__loc {
  display: inline-flex; align-items: center; gap: 0.3rem;
  font-size: 0.8125rem; color: var(--tt-text-muted); max-width: 100%;
}
.tcard-mini__loc svg { flex: none; }
.tcard-mini .tt-badge { margin-top: 0.15rem; }

/* Praticien mis en avant (premium) : carte agrandie sur 2×2 cellules,
   avatar XL, spécialités visibles. */
.tcard-mini.tcard-mini--highlight {
  grid-column: span 2;
  grid-row: span 2;
  justify-content: center;
  gap: 0.55rem;
  padding: 2.25rem 1.75rem;
  border-color: var(--tt-highlight);
  background: linear-gradient(180deg, #fff8e3 0%, var(--tt-surface-card) 55%);
  box-shadow: 0 0 0 1.5px var(--tt-highlight), 0 12px 32px -10px rgba(224, 163, 23, 0.5), var(--tt-shadow-sm);
}
.tcard-mini.tcard-mini--highlight:hover {
  box-shadow: 0 0 0 1.5px var(--tt-highlight), 0 16px 36px -10px rgba(224, 163, 23, 0.6), var(--tt-shadow-lg);
}
.tcard-mini--highlight .tcard-mini__star { width: 28px; height: 28px; bottom: 2px; right: 2px; }
.tcard-mini--highlight .tcard-mini__name { font-size: 1.375rem; -webkit-line-clamp: 2; }
.tcard-mini--highlight .tcard-mini__title { font-size: 0.9375rem; -webkit-line-clamp: 2; }
.tcard-mini--highlight .tcard-mini__loc { font-size: 0.9375rem; }
.tcard-mini__tags { display: flex; flex-wrap: wrap; gap: 0.4rem; justify-content: center; margin-top: 0.2rem; }

@media (max-width: 640px) {
  .tcard-mini-grid { grid-template-columns: repeat(2, 1fr); gap: 0.75rem; }
  .tcard-mini { padding: 1.25rem 0.75rem 1rem; }
  .tcard-mini.tcard-mini--highlight { padding: 1.75rem 1rem; gap: 0.45rem; }
  .tcard-mini--highlight .tcard-mini__name { font-size: 1.2rem; }
}

/* ── Praticiens similaires (sidebar) ─────────────────────── */
.similar-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.75rem; }
.similar-item__link { display: flex; align-items: center; gap: 0.75rem; padding: 0.6rem; border-radius: var(--tt-radius-md); border: 1px solid var(--tt-border-subtle); text-decoration: none; color: inherit; transition: background var(--tt-duration-fast); }
.similar-item__link:hover { background: var(--tt-brand-xsoft); }
.similar-item__info { display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; }
.similar-item__info strong { font-size: 0.875rem; font-weight: 600; color: var(--tt-text-strong); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.similar-item__info small { font-size: 0.75rem; color: var(--tt-text-muted); }

/* ── Articles liés ───────────────────────────────────────── */
.related-posts__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.5rem; }
.related-post__link { display: flex; flex-direction: column; gap: 0.15rem; padding: 0.65rem; border-radius: var(--tt-radius-md); border: 1px solid var(--tt-border-subtle); text-decoration: none; transition: background var(--tt-duration-fast); }
.related-post__link:hover { background: var(--tt-brand-xsoft); }
.related-post__title { font-size: 0.875rem; font-weight: 600; color: var(--tt-text-strong); }
.related-post__date { font-size: 0.75rem; color: var(--tt-text-subtle); }

/* ── Navigation géographique (régions / depts / villes) ─────── */
.geo-nav {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 1rem;
}
.geo-card {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  padding: 1.25rem 1.375rem;
  background: var(--tt-surface-card);
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-lg);
  text-decoration: none;
  color: inherit;
  transition: box-shadow var(--tt-duration-fast), border-color var(--tt-duration-fast), transform var(--tt-duration-fast);
}
.geo-card:hover {
  border-color: var(--tt-border-brand);
  box-shadow: var(--tt-shadow-md);
  transform: translateY(-1px);
}
.geo-card__name {
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--tt-text-strong);
}
.geo-card__count {
  font-size: 0.8125rem;
  color: var(--tt-text-muted);
}
.geo-card__count--empty {
  color: var(--tt-text-subtle);
  font-style: italic;
}

/* Villes groupées par département (page /villes) */
.villes-list { display: flex; flex-direction: column; gap: 2.5rem; }
.villes-group__title {
  display: flex; align-items: center; gap: 0.6rem;
  font-size: 1.25rem; font-weight: 700; color: var(--tt-text-strong);
  letter-spacing: -0.01em;
  margin: 0 0 1.25rem; padding-bottom: 0.6rem;
  border-bottom: 1px solid var(--tt-border-subtle);
}
.villes-group__num {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 2.25rem; padding: 0.15rem 0.5rem;
  background: var(--tt-brand-xsoft); color: var(--tt-brand);
  border-radius: var(--tt-radius-pill);
  font-size: 0.8125rem; font-weight: 700;
}

/* ── Maillage interne géo (termes frères) ────────────────── */
.geo-siblings { margin: 0; }
.geo-siblings__title {
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--tt-text-muted);
  margin: 0 0 1rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.geo-siblings__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.geo-siblings__link {
  display: inline-block;
  padding: 0.35rem 0.875rem;
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-full, 999px);
  font-size: 0.875rem;
  color: var(--tt-text-body);
  text-decoration: none;
  background: var(--tt-surface-card);
  transition: border-color var(--tt-duration-fast), color var(--tt-duration-fast), background var(--tt-duration-fast);
}
.geo-siblings__link:hover {
  border-color: var(--tt-border-brand);
  color: var(--tt-brand-700);
  background: var(--tt-brand-xsoft);
}

/* Héro des pages géo */
.geo-hero { background: var(--tt-brand-xsoft); }
.geo-title { font-size: 2rem; margin: 0.5rem 0 0.75rem; }
.geo-hero__intro { font-size: 1.125rem; color: var(--tt-text-muted); margin: 0; }

/* ── FAQ accordéon ───────────────────────────────────────── */
.faq { margin-top: 2.5rem; }
.faq__item {
  border-bottom: 1px solid var(--tt-border-subtle);
}
.faq__item:first-child { border-top: 1px solid var(--tt-border-subtle); }

.faq__q {
  display: flex; align-items: center; justify-content: space-between; gap: 1.5rem;
  padding: 1.25rem 0; font-weight: 600; font-size: 1rem;
  cursor: pointer; color: var(--tt-text-strong); list-style: none;
  transition: color var(--tt-duration-fast);
}
.faq__q::-webkit-details-marker { display: none; }
.faq__q::after {
  content: '';
  display: block; flex-shrink: 0;
  width: 20px; height: 20px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='none'%3E%3Ccircle cx='10' cy='10' r='9' stroke='%231f8d52' stroke-width='1.5'/%3E%3Cpath d='M10 6v8M6 10h8' stroke='%231f8d52' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center;
  transition: transform 260ms var(--tt-ease-out), opacity 200ms;
}
.faq__item[open] > .faq__q { color: var(--tt-brand); }
.faq__item[open] > .faq__q::after {
  transform: rotate(45deg);
}
.faq__a {
  padding: 0 2rem 1.375rem 0;
}
.faq__a p {
  margin: 0;
  font-size: 0.9375rem; line-height: 1.75;
  color: var(--tt-text-body);
}

/* ── FAQ article (accordéon JS) ──────────────────────────── */
.tt-faq { margin: 2.5rem 0; }
.tt-faq__item { border-bottom: 1px solid var(--tt-border-subtle); }
.tt-faq__item:first-child { border-top: 1px solid var(--tt-border-subtle); }
.tt-faq__q { margin: 0; font-size: 1.0625rem; line-height: 1.4; }
.tt-faq__trigger {
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 1.5rem;
  padding: 1.25rem 0; margin: 0;
  background: none; border: 0; cursor: pointer; text-align: left;
  font: inherit; font-weight: 600; line-height: 1.4;
  color: var(--tt-text-strong);
  transition: color var(--tt-duration-fast);
}
.tt-faq__trigger:hover { color: var(--tt-brand); }
.tt-faq__icon {
  flex-shrink: 0; width: 20px; height: 20px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='none'%3E%3Ccircle cx='10' cy='10' r='9' stroke='%231f8d52' stroke-width='1.5'/%3E%3Cpath d='M10 6v8M6 10h8' stroke='%231f8d52' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center;
  transition: transform 260ms var(--tt-ease-out);
}
.tt-faq__item.is-open > .tt-faq__q .tt-faq__trigger { color: var(--tt-brand); }
.tt-faq__item.is-open .tt-faq__icon { transform: rotate(45deg); }

.tt-faq__answer { min-height: 0; overflow: hidden; }
.tt-faq__answer > :first-child { margin-top: 0; }
.tt-faq__answer > :last-child { margin-bottom: 1.5rem; }

/* Repliage animé — activé seulement si JS est présent (progressive enhancement). */
.tt-js .tt-faq__panel {
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows 280ms var(--tt-ease-out);
}
.tt-js .tt-faq__item.is-open .tt-faq__panel { grid-template-rows: 1fr; }
@media (prefers-reduced-motion: reduce) {
  .tt-js .tt-faq__panel { transition: none; }
}

/* ── Responsive ───────────────────────────────────────────── */
@media (max-width: 1024px) {
  .ann__layout { grid-template-columns: 1fr; }
  .ann__sidebar { order: -1; }
  .filters { position: static; }
  .filters__group { padding: 1rem 0; }
  .ann__head { flex-direction: column-reverse; align-items: stretch; }
  .ann__head-right { display: flex; justify-content: flex-end; }
  .profil__layout { grid-template-columns: 1fr; }
  .profil__sidebar { order: -1; }
  .ftr__top.wp-block-group, .ftr__top { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 768px) {
  .grid--4, .grid--3, .steps { grid-template-columns: 1fr 1fr; }
  .hero__headline { font-size: clamp(2rem, 8vw, 2.8rem) !important; }
  .hero__in { padding: 5rem 0 2.5rem; }
  .hdr__in { height: 60px; gap: 1rem; }
  .hdr__nav, .hdr__actions { display: none !important; }
  .tt-burger { display: flex; }
  body.nav-open .tt-mobile-nav { display: flex; animation: tt-slide-down 0.22s var(--tt-ease-out); }
  body.nav-open { overflow: hidden; }
  .section { padding: 3.5rem 0; }
  .section--tight { padding: 2.5rem 0; }
  .ftr__top.wp-block-group, .ftr__top { grid-template-columns: 1fr; }
  .profil__head { flex-direction: column; }
  .profil-hero { flex-direction: column; gap: 1rem; }
  .lg-search { flex-direction: column; align-items: stretch; border-radius: var(--tt-radius-xl); padding: 12px 16px; gap: 0; }
  .lg-search__seg + .lg-search__seg { border-left: 0; border-top: 1px solid var(--tt-border-subtle); padding-left: 0; padding-top: 12px; }
  .lg-search__btn { width: 100%; justify-content: center; margin-top: 8px; }
  .cta { padding: 2.5rem 1.5rem; }
  .art__cover { height: 240px; }
  .art__author-card { flex-wrap: wrap; }
  .art__author-aside {
    width: 100%;
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    gap: 1rem;
    margin-left: 0;
    padding-left: calc(56px + 1.25rem);
    padding-top: 0;
    padding-bottom: 0.5rem;
  }
}
@media (max-width: 480px) {
  .grid--4, .grid--3, .grid--2 { grid-template-columns: 1fr; }
  .steps { grid-template-columns: 1fr; }
  .container { padding-left: 1rem; padding-right: 1rem; }
  .tt-therapist-card { flex-direction: column; }
  .tt-tc__cta { flex-direction: row; align-items: center; margin-left: 0; margin-top: 0.75rem; }
  .lg-tcard { flex-direction: column; }
  .hero__motif { width: 280px; right: -40px; }
  .band__motif { width: 260px; }
  .art__cover { height: 180px; }
  .art__hero { padding-top: 2rem; padding-bottom: 1.5rem; }
}

/* ── Fiches non revendiquées ─────────────────────────────── */
.claim-banner {
  background: var(--tt-apricot-50, #fdf5ec);
  border-bottom: 1px solid var(--tt-apricot-200, #f0cbaa);
}
.claim-banner__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-top: 0.875rem;
  padding-bottom: 0.875rem;
  flex-wrap: wrap;
}
.claim-banner__text {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  font-size: 0.9375rem;
  color: var(--tt-text-primary);
}
.claim-banner__text svg { color: var(--tt-apricot-600, #a96c3a); flex-shrink: 0; }
.claim-banner__delete-link,
.claim-banner__link {
  color: var(--tt-apricot-600, #a96c3a);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}
.claim-banner__delete-link:hover,
.claim-banner__link:hover { color: var(--tt-apricot-700, #8a5a2f); }

.unclaimed-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--tt-text-muted);
  background: var(--tt-neutral-100, #f3f0f7);
  border: 1px solid var(--tt-border-subtle);
  border-radius: 99px;
  padding: 0.25rem 0.75rem;
}

.unclaimed-blur-notice {
  display: flex;
  align-items: flex-start;
  gap: 0.625rem;
  background: var(--tt-neutral-50, #f8f6fc);
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-md);
  padding: 0.875rem 1rem;
  font-size: 0.875rem;
  color: var(--tt-text-secondary);
  margin-top: 1rem;
}
.unclaimed-blur-notice svg { flex-shrink: 0; margin-top: 0.1rem; color: var(--tt-text-muted); }

/* Bannière de pré-remplissage sur la page d'inscription */
.claim-prefill-notice {
  display: flex;
  align-items: flex-start;
  gap: 0.625rem;
  background: var(--tt-apricot-50, #fdf5ec);
  border: 1px solid var(--tt-apricot-200, #f0cbaa);
  border-radius: var(--tt-radius-md);
  padding: 0.875rem 1rem;
  font-size: 0.9375rem;
  color: var(--tt-text-primary);
  margin-bottom: 1.5rem;
}
.claim-prefill-notice svg { flex-shrink: 0; margin-top: 0.1rem; color: var(--tt-apricot-600, #a96c3a); }

/* Identité verrouillée pendant une revendication de fiche */
.tt-field input.is-locked {
  background: var(--tt-surface-raised);
  color: var(--tt-text-muted);
  cursor: not-allowed;
}
.reg-identite-lock {
  display: block;
  margin: -0.5rem 0 1.25rem;
}


/* ── Accessibilité ───────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; }
}
:focus-visible { outline: 2px solid var(--tt-brand); outline-offset: 2px; }

/* [hidden] bat toujours les classes display (même spécificité, ordre cascade) */
[hidden] { display: none !important; }

/* Fiche profil : fond blanc sauf le héro (qui garde son background inline) */
body.single-therapiste { background: #fff; }

/* Mobile nav — état initial des boutons auth */
.mob-btn-deconnexion { display: none; }
.mob-btn-gerer { display: none; }

/* ── Page connexion ──────────────────────────────────────── */
.connexion-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  /* padding-top = hauteur header fixe + respiration */
  padding: calc(72px + 2.5rem) 1rem 5rem;
}
.connexion-box {
  background: var(--tt-surface-card);
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-xl);
  padding: 2.5rem 2.5rem 2rem;
  max-width: 460px;
  width: 100%;
  box-shadow: var(--tt-shadow-md);
}
.connexion-box__eyebrow {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--tt-brand);
  margin-bottom: 0.5rem;
}
.connexion-box h1.connexion-box__title { font-size: 1.5rem; margin-bottom: 0.375rem; }
.connexion-box__sub { font-size: 0.9375rem; color: var(--tt-text-muted); margin-bottom: 1.75rem; }
.connexion-box__form { display: flex; flex-direction: column; gap: 1rem; }
.connexion-box__footer {
  margin-top: 1.25rem;
  text-align: center;
  font-size: 0.875rem;
  color: var(--tt-text-muted);
}
.connexion-forgot {
  display: block;
  text-align: right;
  font-size: 0.8125rem;
  margin-top: 0.25rem;
}
.connexion-forgot a, .connexion-box__footer a { color: var(--tt-brand); }
.connexion-forgot a:hover, .connexion-box__footer a:hover { text-decoration: underline; }
.connexion-error {
  background: #fff0f0;
  border: 1px solid #f5c6c6;
  border-radius: var(--tt-radius-sm);
  padding: 0.6rem 0.875rem;
  font-size: 0.875rem;
  color: #c0392b;
  margin-bottom: 0.75rem;
  display: none;
}
.connexion-error.is-visible { display: block; }
.connexion-success {
  background: var(--tt-success-soft);
  border: 1px solid var(--tt-border-brand);
  border-radius: var(--tt-radius-sm);
  padding: 0.6rem 0.875rem;
  font-size: 0.875rem;
  color: var(--tt-success);
  margin-bottom: 0.75rem;
  display: none;
}
.connexion-success.is-visible { display: block; }

/* ── Page Mon espace ─────────────────────────────────────── */
.mon-espace-page { padding: 3rem 1rem 5rem; }
.mon-espace-wrap { display: flex; flex-direction: column; gap: 0; }
.mon-espace__header {
  background: var(--tt-surface-card);
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-lg);
  padding: 1.25rem 1.5rem;
  display: flex;
  align-items: center;
  gap: 1.25rem;
  margin-bottom: 2rem;
  flex-wrap: wrap;
}
.mon-espace__avatar-wrap { display: flex; flex-direction: column; align-items: center; gap: 0.375rem; flex-shrink: 0; }
.mon-espace__avatar-btn { font-size: 0.75rem; color: var(--tt-brand); cursor: pointer; text-decoration: underline; text-underline-offset: 2px; white-space: nowrap; }
.mon-espace__avatar-btn:hover { color: var(--tt-brand-hover); }
.mon-espace__name { flex: 1; min-width: 0; }
.mon-espace__name h1 { font-size: 1.25rem; margin-bottom: 0.25rem; }
.mon-espace__name p { font-size: 0.9375rem; color: var(--tt-text-muted); margin: 0; }
.mon-espace__actions { display: flex; gap: 0.5rem; align-items: center; flex-shrink: 0; }
.mon-espace__card {
  background: var(--tt-surface-card);
  border: 1px solid var(--tt-border-subtle);
  border-radius: var(--tt-radius-lg);
  padding: 1.75rem 2rem;
  margin-bottom: 1.25rem;
}
.mon-espace__card h2 {
  font-size: 1rem;
  margin-bottom: 1.5rem;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid var(--tt-border-subtle);
  color: var(--tt-text-strong);
}
.mon-espace__save {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 1rem;
  padding: 1.5rem 0 0;
  border-top: 1px solid var(--tt-border-subtle);
  margin-top: 0.5rem;
  flex-wrap: wrap;
}
.mon-espace__save-msg { font-size: 0.875rem; color: var(--tt-success); display: none; }
.mon-espace__save-msg.is-visible { display: block; }
.mon-espace__save-err { font-size: 0.875rem; color: #c0392b; display: none; }
.mon-espace__save-err.is-visible { display: block; }
.formation-item--sep { border-top: 1px solid var(--tt-border-subtle); padding-top: 1rem; margin-top: 1rem; }

/* Home — liens vers les grandes villes (maillage interne) */
.tt-cities__grid {
  list-style: none; padding: 0; margin: 1.75rem 0 0;
  display: flex; flex-wrap: wrap; justify-content: center;
  gap: 0.6rem 0.7rem;
}
.tt-cities__grid li { display: flex; }
.tt-cities__grid a {
  display: inline-flex; align-items: center; gap: 0.5rem;
  padding: 0.6rem 1.05rem;
  border: 1px solid var(--tt-border-subtle);
  border-radius: 999px;
  background: var(--tt-surface-card, #fff);
  color: var(--tt-text-body); text-decoration: none;
  font-size: 0.9375rem; line-height: 1.3;
  transition: border-color 0.15s, color 0.15s, background 0.15s, box-shadow 0.15s;
}
.tt-cities__grid a:hover {
  border-color: var(--tt-brand);
  color: var(--tt-brand);
  background: var(--tt-brand-xsoft);
  box-shadow: var(--tt-shadow-xs, 0 1px 2px rgba(0,0,0,.05));
}
.tt-cities__grid svg { color: var(--tt-accent); flex-shrink: 0; }

/* Carte « Lien de retour » (backlink) */
.backlink-card h2 { display: flex; align-items: center; gap: 0.625rem; flex-wrap: wrap; }
.backlink-card__free {
  font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.03em; text-transform: uppercase;
  color: var(--tt-success, #4a7c59); background: var(--sage-100, #eaf1ea);
  padding: 0.2rem 0.55rem; border-radius: 999px;
}
.backlink-card__intro { font-size: 0.9375rem; color: var(--tt-text-muted); margin: 0 0 1.25rem; line-height: 1.55; }
.backlink-status {
  display: flex; align-items: center; gap: 0.5rem;
  font-size: 0.875rem; font-weight: 500;
  padding: 0.625rem 0.875rem; border-radius: var(--tt-radius-md, 8px);
  margin-bottom: 1.25rem;
}
.backlink-status svg { flex-shrink: 0; }

/* Bandeau d'alerte dans l'espace praticien (photo manquante, par exemple) */
.mon-espace__notice {
  display: flex; align-items: flex-start; gap: 0.5rem;
  font-size: 0.875rem; line-height: 1.5;
  color: #8a6d3b; background: #faf3e3;
  padding: 0.75rem 0.875rem; border-radius: var(--tt-radius-md, 8px);
  margin-bottom: 1.25rem;
}
.mon-espace__notice svg { flex-shrink: 0; margin-top: 0.15rem; }
.backlink-status--ok { color: var(--tt-success, #4a7c59); background: var(--sage-100, #eaf1ea); }
.backlink-status--pending { color: #8a6d3b; background: #faf3e3; }
.backlink-status--error { color: #a02c2c; background: #fbeaea; align-items: flex-start; }
.backlink-variants { display: flex; gap: 0.375rem; flex-wrap: wrap; margin-bottom: 0.875rem; }
.backlink-variant {
  font: inherit; font-size: 0.8125rem; font-weight: 600;
  padding: 0.4rem 0.85rem; border-radius: var(--tt-radius-pill, 999px);
  border: 1px solid var(--tt-border-subtle); background: var(--tt-surface-card, #fff);
  color: var(--tt-text-muted); cursor: pointer;
  transition: background-color 0.15s var(--tt-ease-out), color 0.15s var(--tt-ease-out), border-color 0.15s var(--tt-ease-out);
}
.backlink-variant:hover { border-color: var(--tt-brand); color: var(--tt-brand); }
.backlink-variant.is-active {
  background: var(--tt-brand, #1f8d52); border-color: var(--tt-brand, #1f8d52); color: #fff;
}
.backlink-variant:focus-visible { outline: none; box-shadow: var(--tt-shadow-focus); }
.backlink-snippet {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.8125rem; line-height: 1.5; white-space: pre; overflow-x: auto;
}
.backlink-preview {
  display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap;
  margin-top: 0.75rem; padding: 0.875rem; border: 1px dashed var(--tt-border-subtle);
  border-radius: var(--tt-radius-md, 8px); background: var(--tt-surface-subtle, #faf9fc);
}
.backlink-preview__label { font-size: 0.75rem; color: var(--tt-text-subtle); }
.backlink-copied { font-size: 0.8125rem; color: var(--tt-success, #4a7c59); margin-left: 0.625rem; }
.backlink-verify { margin-top: 1.5rem; }
.backlink-actions { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; margin-top: 1rem; }
.backlink-result { font-size: 0.875rem; }
.backlink-result.is-ok { color: var(--tt-success, #4a7c59); }
.backlink-result.is-error { color: #c0392b; }

@media (max-width: 768px) {
  /* Header mobile = 60px */
  .connexion-page { padding-top: calc(60px + 2rem); }
}
@media (max-width: 640px) {
  .connexion-box { padding: 1.75rem 1.25rem 1.5rem; }
  .mon-espace__header { gap: 0.875rem; }
  .mon-espace__card { padding: 1.25rem; }
  .mon-espace__actions { flex-wrap: wrap; width: 100%; }
  .mon-espace__actions .tt-btn { flex: 1; justify-content: center; }
}

/* ============================================================
   Bannière de consentement (CMP)
   Surface vert forêt, CTA accent abricot. Cohérente avec la charte.
   ============================================================ */
.tt-cmp {
  position: fixed;
  z-index: 90;
  left: 1rem;
  right: 1rem;
  bottom: 1rem;
  display: flex;
  justify-content: center;
  pointer-events: none;
}
.tt-cmp[hidden] { display: none; }
.tt-cmp__inner {
  pointer-events: auto;
  width: 100%;
  max-width: 640px;
  background: var(--tt-brand-deep);
  color: #eaf5ee;
  border-radius: var(--tt-radius-lg);
  border-top: 3px solid var(--tt-accent);
  box-shadow: 0 18px 50px rgba(7, 48, 31, 0.45);
  padding: 1.5rem 1.5rem 1.25rem;
  animation: tt-cmp-in var(--tt-duration-base) var(--tt-ease-out);
}
@keyframes tt-cmp-in {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .tt-cmp__inner { animation: none; }
}
.tt-cmp__text {
  font-size: 0.9375rem;
  line-height: 1.6;
  color: #d6ecdd;
}
.tt-cmp__link {
  color: var(--tt-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
  white-space: nowrap;
}
.tt-cmp__link:hover { color: #d9b487; }

.tt-cmp__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.625rem;
  justify-content: flex-end;
  margin-top: 1.125rem;
}
.tt-cmp__btn {
  font-family: var(--tt-font-sans);
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1;
  padding: 0.75rem 1.25rem;
  border-radius: var(--tt-radius-pill);
  border: 1px solid transparent;
  cursor: pointer;
  transition: background-color var(--tt-duration-fast) var(--tt-ease-out),
              border-color var(--tt-duration-fast) var(--tt-ease-out),
              color var(--tt-duration-fast) var(--tt-ease-out);
}
.tt-cmp__btn:focus-visible {
  outline: 2px solid var(--tt-accent);
  outline-offset: 2px;
}
.tt-cmp__btn--ghost {
  background: rgba(255, 255, 255, 0.08);
  color: #eaf5ee;
}
.tt-cmp__btn--ghost:hover { background: rgba(255, 255, 255, 0.16); }
.tt-cmp__btn--outline {
  background: transparent;
  color: #eaf5ee;
  border-color: rgba(234, 245, 238, 0.35);
}
.tt-cmp__btn--outline:hover { border-color: var(--tt-accent); color: #fff; }
.tt-cmp__btn--accent {
  background: var(--tt-accent);
  color: #2a1a08;
}
.tt-cmp__btn--accent:hover { background: #d9b487; }

/* Préférences détaillées */
.tt-cmp__prefs {
  margin-top: 1.125rem;
  padding-top: 1.125rem;
  border-top: 1px solid rgba(234, 245, 238, 0.14);
}
.tt-cmp__prefs[hidden] { display: none; }
.tt-cmp__pref {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.75rem 0;
}
.tt-cmp__pref + .tt-cmp__pref { border-top: 1px solid rgba(234, 245, 238, 0.08); }
.tt-cmp__pref-label strong { display: block; color: #fff; font-size: 0.9375rem; }
.tt-cmp__pref-label span { display: block; color: #a3d8b6; font-size: 0.8125rem; margin-top: 2px; }
.tt-cmp__prefs-foot { display: flex; justify-content: flex-end; margin-top: 0.75rem; }

/* Interrupteur */
.tt-cmp__switch {
  position: relative;
  display: inline-block;
  flex: 0 0 auto;
  width: 46px;
  height: 26px;
  cursor: pointer;
}
.tt-cmp__switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.tt-cmp__track {
  position: absolute; inset: 0;
  background: rgba(255, 255, 255, 0.22);
  border-radius: var(--tt-radius-pill);
  transition: background var(--tt-duration-fast) var(--tt-ease-out);
}
.tt-cmp__track::before {
  content: "";
  position: absolute; top: 3px; left: 3px;
  width: 20px; height: 20px;
  background: #fff; border-radius: 50%;
  transition: transform var(--tt-duration-fast) var(--tt-ease-out);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
}
.tt-cmp__switch input:checked + .tt-cmp__track { background: var(--tt-accent); }
.tt-cmp__switch input:checked + .tt-cmp__track::before { transform: translateX(20px); }
.tt-cmp__switch input:focus-visible + .tt-cmp__track { outline: 2px solid var(--tt-accent); outline-offset: 2px; }

@media (max-width: 480px) {
  .tt-cmp { left: 0.5rem; right: 0.5rem; bottom: 0.5rem; }
  .tt-cmp__inner { padding: 1.25rem 1.125rem; }
  .tt-cmp__actions { justify-content: stretch; }
  .tt-cmp__actions .tt-cmp__btn { flex: 1 1 auto; text-align: center; }
}
