/* ============================================================
   FENITOURCI — Custom styles
   ============================================================ */

body {
  font-family: var(--fnt-font-body);
  color: var(--fnt-dark);
  background: var(--fnt-white);
  font-size: 17px;
  line-height: 1.65;
}

/* Override Hello Elementor's 1140px width clamp on the main wrapper.
   We want full-bleed sections (hero, footer-style CTA), and we control
   the inner alignment via our own .fnt-container helper. */
body .site-main,
body:not([class*="elementor-page-"]) .site-main {
  max-width: none !important;
  width: 100% !important;
  margin-inline: 0 !important;
  padding-inline: 0 !important;
}
.page-content { max-width: none; width: 100%; }

/* Constrain Elementor widget content to readable width.
   Elementor splits our HTML into separate widgets, losing the .fnt-container
   wrapper. This re-applies the constraint globally. Full-bleed sections
   (hero, CTA split, edito) opt out via their own container rules. */
.elementor-widget-container {
  max-width: 1200px;
  margin-inline: auto;
  padding-inline: 24px;
}
/* Full-bleed opt-outs — these sections handle their own layout */
.elementor-widget-container:has(> .fnt-hero),
.elementor-widget-container:has(> .fnt-cta-split),
.elementor-widget-container:has(> .fnt-section > .fnt-container) {
  max-width: none;
  padding-inline: 0;
}

h1, h2, h3, h4, h5, h6,
.elementor-heading-title {
  font-family: var(--fnt-font-display);
  font-weight: 500;
  letter-spacing: -0.02em;
  line-height: 1.1;
  color: var(--fnt-dark);
}
h1 { font-size: clamp(2.2rem, 5vw, 3.8rem); font-weight: 600; }
h2 { font-size: clamp(1.7rem, 3vw, 2.4rem); }
h3 { font-size: clamp(1.2rem, 2vw, 1.4rem); font-family: var(--fnt-font-heading); font-weight: 600; letter-spacing: -0.01em; }
p  { color: var(--fnt-dark); }
p, li { font-size: 1rem; }
a  { color: var(--fnt-orange); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
a:hover { color: var(--fnt-orange-dark); }

/* Subtle paper texture across pages */
.fnt-section,
.fnt-container { position: relative; }

/* ----- Buttons : hiérarchie nette ----- */
.fnt-btn,
.elementor-button.fnt-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 13px 24px;
  border-radius: 4px;
  font-weight: 600;
  font-family: var(--fnt-font-heading);
  font-size: .95rem;
  text-decoration: none;
  transition: transform .15s ease, box-shadow .2s ease, background .2s ease, color .2s ease, border-color .2s ease;
  border: none;
  cursor: pointer;
  letter-spacing: .01em;
}

/* Primary : pleine couleur, terre cuite */
.fnt-btn-primary {
  background: var(--fnt-orange);
  color: var(--fnt-white);
  box-shadow: 0 1px 0 rgba(168, 74, 18, .4), var(--fnt-shadow-sm);
}
.fnt-btn-primary:hover {
  background: var(--fnt-orange-dark);
  color: var(--fnt-white);
  transform: translateY(-1px);
  box-shadow: var(--fnt-shadow-md);
}

/* Secondary : surface neutre + texte sombre (pas une 2e couleur primaire qui crie) */
.fnt-btn-secondary {
  background: var(--fnt-dark);
  color: var(--fnt-white);
}
.fnt-btn-secondary:hover {
  background: #000;
  color: var(--fnt-white);
  transform: translateY(-1px);
}

/* Ghost : underline subtil, pas de border */
.fnt-btn-ghost {
  background: transparent;
  color: var(--fnt-orange);
  padding: 13px 4px;
  border-bottom: 2px solid var(--fnt-orange);
  border-radius: 0;
}
.fnt-btn-ghost:hover {
  color: var(--fnt-orange-dark);
  border-bottom-color: var(--fnt-orange-dark);
  background: transparent;
}

/* ----- Hero éditorial (image full + asymétrie + chiffres) ----- */
.fnt-hero {
  position: relative;
  min-height: 60vh;
  display: flex;
  align-items: flex-end;
  background: var(--fnt-dark);
  color: var(--fnt-white);
  overflow: hidden;
  padding-bottom: 64px;
}
/* Image background loaded via inline style on .fnt-hero (in home-content.html) */
.fnt-hero[style*="background-image"] {
  background-size: cover;
  background-position: center 60%;
}
.fnt-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(31,26,20,.15) 0%, rgba(31,26,20,.55) 60%, rgba(31,26,20,.85) 100%),
    linear-gradient(90deg, rgba(31,26,20,.7) 0%, rgba(31,26,20,.15) 50%, transparent 100%);
  z-index: 1;
}
.fnt-hero-inner {
  position: relative;
  z-index: 2;
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
  padding: 0 48px;
  text-align: left;
}
.fnt-hero-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-family: var(--fnt-font-heading);
  font-size: .8rem;
  font-weight: 600;
  letter-spacing: .15em;
  text-transform: uppercase;
  color: var(--fnt-orange-soft);
  margin-bottom: 20px;
}
.fnt-hero-eyebrow::before {
  content: "";
  display: inline-block;
  width: 32px;
  height: 1px;
  background: var(--fnt-orange);
}
.fnt-hero h1 {
  color: var(--fnt-white);
  font-family: var(--fnt-font-display);
  font-weight: 400;
  font-size: clamp(2.4rem, 6vw, 4.8rem);
  line-height: 1.02;
  margin: 0 0 24px;
  max-width: 900px;
}
.fnt-hero h1 em {
  font-style: italic;
  color: var(--fnt-orange-soft);
}
.fnt-hero-lead {
  font-size: clamp(1.05rem, 1.5vw, 1.25rem);
  line-height: 1.55;
  max-width: 620px;
  margin: 0 0 36px;
  color: rgba(255,255,255,.85);
}
.fnt-hero-actions {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 56px;
}
.fnt-hero-actions .fnt-btn-secondary {
  background: rgba(255,255,255,.1);
  color: var(--fnt-white);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,.2);
}
.fnt-hero-actions .fnt-btn-secondary:hover {
  background: rgba(255,255,255,.18);
}

@media (max-width: 768px) {
  .fnt-hero { min-height: 50vh; padding-bottom: 32px; }
  .fnt-hero-inner { padding: 0 24px; }
  .fnt-hero-actions .fnt-btn { width: 100%; justify-content: center; }
}

/* ----- Cards éditoriales (sans border, ratio variable au hover) ----- */
.fnt-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 32px 24px;
}
.fnt-card {
  background: transparent;
  border: none;
  border-radius: 0;
  overflow: visible;
  display: flex;
  flex-direction: column;
  transition: transform .25s ease;
}
.fnt-card:hover {
  transform: translateY(-4px);
}
.fnt-card-media {
  aspect-ratio: 4 / 3;
  background: var(--fnt-cream);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border-radius: var(--fnt-radius-md);
  margin-bottom: 16px;
  position: relative;
}
.fnt-card-media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(31,26,20,.18) 100%);
  pointer-events: none;
}
.fnt-card-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .5s ease;
}
.fnt-card:hover .fnt-card-media img { transform: scale(1.04); }
.fnt-card-body {
  padding: 0;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.fnt-card-cat {
  display: inline-block;
  font-size: .72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .12em;
  color: var(--fnt-orange);
  font-family: var(--fnt-font-heading);
  margin-bottom: 4px;
}
.fnt-card-title {
  font-family: var(--fnt-font-display);
  font-size: 1.35rem;
  font-weight: 500;
  letter-spacing: -0.01em;
  margin: 0;
  color: var(--fnt-dark);
  line-height: 1.15;
}
.fnt-card-title a { color: inherit; text-decoration: none; }
.fnt-card-title a:hover { color: var(--fnt-orange); }
.fnt-card-meta {
  font-size: .85rem;
  color: var(--fnt-muted);
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 2px;
}
.fnt-card-actions { margin-top: 12px; padding-top: 0; }
.fnt-card-actions .fnt-btn { font-size: .85rem; padding: 8px 0; }

/* Feature card variant: spans 2 cols on desktop, larger */
.fnt-card-feature {
  grid-column: span 2;
}
.fnt-card-feature .fnt-card-media { aspect-ratio: 16 / 9; }
.fnt-card-feature .fnt-card-title { font-size: 1.8rem; }
@media (max-width: 768px) {
  .fnt-card-feature { grid-column: span 1; }
}

/* ============================================================
   FICHE ASSOCIATION (refonte éditoriale)
   ============================================================ */
.fnt-assoc-page { display: block; }

/* Hero split : image (60%) + body (40%), pleine largeur */
.fnt-assoc-hero {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  min-height: 420px;
  background: var(--fnt-cream);
  margin-bottom: 64px;
}
.fnt-assoc-hero-media {
  background: var(--fnt-sand);
  overflow: hidden;
  position: relative;
}
.fnt-assoc-hero-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.fnt-assoc-hero-body {
  padding: 64px clamp(32px, 5vw, 80px);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.fnt-assoc-hero-breadcrumb {
  font-family: var(--fnt-font-heading);
  font-size: .78rem;
  font-weight: 500;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--fnt-muted);
  margin: 0 0 20px;
  display: flex;
  gap: 8px;
  align-items: center;
}
.fnt-assoc-hero-breadcrumb a {
  color: inherit;
  text-decoration: none;
}
.fnt-assoc-hero-breadcrumb a:hover { color: var(--fnt-orange); }
.fnt-assoc-hero-breadcrumb span { opacity: .5; }
.fnt-assoc-hero-title {
  font-family: var(--fnt-font-display);
  font-size: clamp(2rem, 4vw, 3.2rem);
  font-weight: 500;
  line-height: 1.05;
  letter-spacing: -0.02em;
  margin: 0 0 16px;
  color: var(--fnt-dark);
}
.fnt-assoc-hero-place {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--fnt-muted);
  font-size: .95rem;
  margin: 0 0 20px;
}
.fnt-assoc-hero-place .fnt-muted { color: var(--fnt-muted); opacity: .7; }
.fnt-assoc-hero-excerpt {
  font-family: var(--fnt-font-display);
  font-size: 1.15rem;
  font-style: italic;
  font-weight: 400;
  color: var(--fnt-dark);
  margin: 0 0 28px;
  line-height: 1.5;
  max-width: 480px;
}
.fnt-assoc-hero-actions {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
}
@media (max-width: 900px) {
  .fnt-assoc-hero { grid-template-columns: 1fr; min-height: 0; }
  .fnt-assoc-hero-media { aspect-ratio: 16 / 10; }
  .fnt-assoc-hero-body { padding: 40px 24px; }
}

/* Layout 2 colonnes : contenu + sidebar sticky */
.fnt-assoc-grid {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: 80px;
  padding-bottom: 64px;
  align-items: start;
}
@media (max-width: 900px) {
  .fnt-assoc-grid { grid-template-columns: 1fr; gap: 48px; }
}

.fnt-assoc-section + .fnt-assoc-section { margin-top: 64px; }
.fnt-assoc-section-title {
  font-family: var(--fnt-font-display);
  font-size: clamp(1.4rem, 2vw, 1.8rem);
  font-weight: 500;
  letter-spacing: -0.01em;
  margin: 0 0 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--fnt-border);
}

/* Prose (texte de l'à-propos) avec drop-cap */
.fnt-assoc-prose p { font-size: 1.05rem; line-height: 1.75; margin: 0 0 1.2em; color: var(--fnt-dark); }
.fnt-assoc-prose p:first-of-type::first-letter {
  font-family: var(--fnt-font-display);
  font-size: 4.2rem;
  font-weight: 500;
  float: left;
  line-height: 0.95;
  padding: 4px 12px 0 0;
  color: var(--fnt-orange);
}
.fnt-assoc-prose p strong { color: var(--fnt-dark); font-weight: 600; }
.fnt-assoc-prose a { color: var(--fnt-orange); }

.fnt-assoc-addr {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--fnt-muted);
  margin: -8px 0 16px;
  font-size: .95rem;
}

/* Mini-carte Leaflet */
.fnt-assoc-map {
  width: 100%;
  height: 360px;
  border-radius: var(--fnt-radius-md);
  overflow: hidden;
  background: var(--fnt-cream);
  border: 1px solid var(--fnt-border);
  z-index: 1;
}

/* Sidebar contact (sticky) */
.fnt-assoc-aside { position: sticky; top: 100px; }
.fnt-assoc-card {
  background: var(--fnt-white);
  border: 1px solid var(--fnt-border);
  border-radius: var(--fnt-radius-md);
  padding: 28px;
  box-shadow: var(--fnt-shadow-sm);
}
.fnt-assoc-card-head {
  margin: 0 0 20px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--fnt-border);
}
.fnt-assoc-card-head .fnt-section-eyebrow { margin: 0 0 4px; }
.fnt-assoc-card-name {
  margin: 0;
  font-family: var(--fnt-font-display);
  font-size: 1.15rem;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--fnt-dark);
  line-height: 1.2;
}
.fnt-assoc-contact-list {
  list-style: none;
  margin: 0 0 20px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.fnt-assoc-contact-list li { display: flex; flex-direction: column; gap: 2px; }
.fnt-assoc-contact-label {
  font-family: var(--fnt-font-heading);
  font-size: .72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .12em;
  color: var(--fnt-muted);
}
.fnt-assoc-contact-value {
  font-size: .95rem;
  color: var(--fnt-dark);
  text-decoration: none;
  word-break: break-word;
}
.fnt-assoc-contact-value:not(span):hover { color: var(--fnt-orange); }
.fnt-assoc-wa {
  width: 100%;
  justify-content: center;
  margin-top: 4px;
}
.fnt-assoc-socials { margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--fnt-border); }
.fnt-assoc-socials .fnt-assoc-contact-label { display: block; margin-bottom: 10px; }
.fnt-assoc-socials-icons { display: flex; gap: 8px; flex-wrap: wrap; }
.fnt-assoc-socials-icons a {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--fnt-cream);
  color: var(--fnt-dark);
  font-family: var(--fnt-font-heading);
  font-size: .7rem;
  font-weight: 700;
  text-decoration: none;
  letter-spacing: .04em;
  transition: background .15s ease, color .15s ease;
}
.fnt-assoc-socials-icons a:hover { background: var(--fnt-orange); color: var(--fnt-white); }

/* Galerie masonry : 1 lead + thumbs */
.fnt-gallery {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}
.fnt-gallery-item {
  display: block;
  border-radius: var(--fnt-radius-sm);
  overflow: hidden;
  background: var(--fnt-cream);
  aspect-ratio: 1 / 1;
  position: relative;
  cursor: zoom-in;
}
.fnt-gallery-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .4s ease;
}
.fnt-gallery-item:hover img { transform: scale(1.05); }
.fnt-gallery-item--lead {
  grid-column: span 2;
  grid-row: span 2;
  aspect-ratio: auto;
}
@media (max-width: 700px) {
  .fnt-gallery { grid-template-columns: repeat(2, 1fr); }
  .fnt-gallery-item--lead { grid-column: span 2; grid-row: span 1; aspect-ratio: 16/10; }
}

/* Lightbox */
.fnt-lightbox {
  position: fixed;
  inset: 0;
  background: rgba(15, 12, 8, .92);
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 80px 32px;
  cursor: zoom-out;
}
.fnt-lightbox[hidden] { display: none; }
.fnt-lightbox-img {
  max-width: 100%;
  max-height: calc(100vh - 160px);
  width: auto;
  height: auto;
  border-radius: var(--fnt-radius-sm);
  box-shadow: 0 24px 80px rgba(0,0,0,.6);
  cursor: default;
}
.fnt-lightbox-caption {
  position: absolute;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%);
  color: rgba(255,255,255,.7);
  font-family: var(--fnt-font-heading);
  font-size: .82rem;
  letter-spacing: .08em;
  margin: 0;
}
.fnt-lightbox-close,
.fnt-lightbox-nav {
  position: absolute;
  background: rgba(255,255,255,.08);
  color: var(--fnt-white);
  border: none;
  border-radius: 50%;
  width: 48px;
  height: 48px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.6rem;
  font-family: var(--fnt-font-display);
  transition: background .15s ease;
}
.fnt-lightbox-close { top: 24px; right: 24px; }
.fnt-lightbox-nav  { top: 50%; transform: translateY(-50%); }
.fnt-lightbox-prev { left: 24px; }
.fnt-lightbox-next { right: 24px; }
.fnt-lightbox-close:hover,
.fnt-lightbox-nav:hover { background: rgba(255,255,255,.18); }

/* Hide leftover banner from old template if it sneaks in */
.fnt-assoc-banner { display: none; }

/* ============================================================
   PAGES SECONDAIRES (Mot Pdt, La FENITOURCI, Adhésion, Contact)
   ============================================================ */

/* Hero générique pour pages */
.fnt-page-hero {
  position: relative;
  padding: 120px 24px 80px;
  background: var(--fnt-cream);
  overflow: hidden;
}
.fnt-page-hero[style*="background-image"] {
  background-size: cover;
  background-position: center;
}
.fnt-page-hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(31,26,20,.45), rgba(31,26,20,.7));
}
.fnt-page-hero-inner {
  position: relative;
  z-index: 1;
  max-width: 880px;
}
.fnt-page-hero--centered .fnt-page-hero-inner {
  margin: 0 auto;
  text-align: center;
}
.fnt-page-hero-inner h1 {
  font-family: var(--fnt-font-display);
  font-weight: 500;
  font-size: clamp(2.4rem, 5vw, 4rem);
  line-height: 1.05;
  letter-spacing: -0.02em;
  margin: 8px 0 16px;
}
.fnt-page-hero-inner h1 em { font-style: italic; color: var(--fnt-orange); }
.fnt-page-hero-lead {
  font-size: 1.15rem;
  line-height: 1.55;
  color: var(--fnt-muted);
  max-width: 640px;
  margin: 0;
}
.fnt-page-hero--centered .fnt-page-hero-lead { margin: 0 auto; }
.fnt-page-hero-inner--dark { color: var(--fnt-white); }
.fnt-page-hero-inner--dark h1 { color: var(--fnt-white); }
.fnt-page-hero-inner--dark h1 em { color: var(--fnt-orange-soft); }
.fnt-page-hero-inner--dark .fnt-page-hero-lead { color: rgba(255,255,255,.85); }
.fnt-page-hero-inner--dark .fnt-page-hero-lead em { font-style: italic; color: var(--fnt-orange-soft); }

/* Article édito : portrait + texte (Mot du Président) */
.fnt-edito-article {
  display: grid;
  grid-template-columns: 340px 1fr;
  gap: 80px;
  align-items: start;
}
.fnt-edito-article-aside { position: sticky; top: 100px; }
.fnt-edito-article-portrait {
  margin: 0;
  border-radius: var(--fnt-radius-md);
  overflow: hidden;
  background: var(--fnt-cream);
}
.fnt-edito-article-portrait-img {
  aspect-ratio: 3 / 4;
  background-size: cover;
  background-position: center;
}
.fnt-edito-article-portrait figcaption {
  padding: 16px 20px;
  background: var(--fnt-dark);
  color: var(--fnt-white);
  font-family: var(--fnt-font-heading);
  font-size: .82rem;
  line-height: 1.4;
}
.fnt-edito-article-portrait figcaption strong {
  display: block;
  font-family: var(--fnt-font-display);
  font-size: 1rem;
  font-weight: 500;
  margin-bottom: 2px;
  letter-spacing: -0.01em;
}
.fnt-edito-article-body { max-width: 680px; }
.fnt-edito-article-body p { font-size: 1.1rem; line-height: 1.7; margin: 0 0 1.2em; }
.fnt-edito-article-body blockquote {
  margin: 32px 0;
  padding: 0 0 0 24px;
  border-left: 3px solid var(--fnt-orange);
  font-family: var(--fnt-font-display);
  font-size: 1.45rem;
  line-height: 1.4;
  font-style: italic;
  color: var(--fnt-dark);
}
.fnt-edito-article-body blockquote em { color: var(--fnt-orange); font-style: italic; }
.fnt-edito-signature {
  margin-top: 48px;
  font-family: var(--fnt-font-display);
  font-style: italic;
  font-size: 1.1rem;
  color: var(--fnt-dark);
}
.fnt-edito-signature span {
  display: block;
  font-family: var(--fnt-font-heading);
  font-style: normal;
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .12em;
  color: var(--fnt-muted);
  margin-bottom: 4px;
}
@media (max-width: 900px) {
  .fnt-edito-article { grid-template-columns: 1fr; gap: 40px; }
  .fnt-edito-article-aside { position: static; }
}

/* Chiffres-clés bar */
.fnt-stats-bar {
  background: var(--fnt-dark);
  color: var(--fnt-white);
  padding: 48px 24px;
}
.fnt-stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
}
.fnt-stats-grid > div {
  padding: 0 24px;
  border-right: 1px solid rgba(255,255,255,.15);
}
.fnt-stats-grid > div:last-child { border-right: none; }
.fnt-stats-num {
  display: block;
  font-family: var(--fnt-font-display);
  font-size: clamp(2rem, 3vw, 2.8rem);
  font-weight: 500;
  letter-spacing: -0.02em;
  color: var(--fnt-orange-soft);
  line-height: 1;
}
.fnt-stats-label {
  display: block;
  margin-top: 8px;
  font-size: .82rem;
  text-transform: uppercase;
  letter-spacing: .1em;
  color: rgba(255,255,255,.7);
  font-family: var(--fnt-font-heading);
}
@media (max-width: 700px) {
  .fnt-stats-grid { grid-template-columns: repeat(2, 1fr); gap: 24px; }
  .fnt-stats-grid > div { border-right: none; border-bottom: 1px solid rgba(255,255,255,.1); padding: 16px; }
}

/* Split 2 colonnes (Mission) */
.fnt-split-2col {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: 80px;
  align-items: start;
}
.fnt-split-2col h2 em { font-style: italic; color: var(--fnt-orange); }
.fnt-split-2col-text p { font-size: 1.1rem; line-height: 1.7; margin: 0 0 1.2em; }
@media (max-width: 800px) {
  .fnt-split-2col { grid-template-columns: 1fr; gap: 32px; }
}

/* Cards de valeurs */
.fnt-values-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
}
.fnt-value-card {
  padding: 32px 24px;
  background: var(--fnt-white);
  border: 1px solid var(--fnt-border);
  border-radius: var(--fnt-radius-md);
  position: relative;
  transition: transform .2s ease, box-shadow .2s ease;
}
.fnt-value-card:hover { transform: translateY(-2px); box-shadow: var(--fnt-shadow-md); }
.fnt-value-card-num {
  display: block;
  font-family: var(--fnt-font-display);
  font-size: 1.4rem;
  color: var(--fnt-orange);
  margin-bottom: 16px;
}
.fnt-value-card h3 {
  font-family: var(--fnt-font-display);
  font-size: 1.4rem;
  font-weight: 500;
  margin: 0 0 8px;
  letter-spacing: -0.01em;
}
.fnt-value-card p { margin: 0; color: var(--fnt-muted); font-size: .95rem; line-height: 1.55; }
@media (max-width: 900px) {
  .fnt-values-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 500px) {
  .fnt-values-grid { grid-template-columns: 1fr; }
}

/* Métiers grid */
.fnt-trades-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  border: 1px solid var(--fnt-border);
  border-radius: var(--fnt-radius-md);
  overflow: hidden;
}
.fnt-trade {
  display: flex;
  align-items: baseline;
  gap: 16px;
  padding: 28px 32px;
  text-decoration: none;
  color: var(--fnt-dark);
  border-right: 1px solid var(--fnt-border);
  border-bottom: 1px solid var(--fnt-border);
  transition: background .15s ease, color .15s ease;
  background: var(--fnt-white);
}
.fnt-trade:hover { background: var(--fnt-cream); color: var(--fnt-orange); }
.fnt-trade span {
  font-family: var(--fnt-font-display);
  font-size: 1.05rem;
  color: var(--fnt-orange);
  font-style: italic;
  flex-shrink: 0;
}
.fnt-trade strong {
  font-family: var(--fnt-font-display);
  font-weight: 500;
  font-size: 1.25rem;
  letter-spacing: -0.01em;
}
.fnt-trade:nth-child(3n) { border-right: none; }
.fnt-trade:nth-child(n+4) { border-bottom: none; }
@media (max-width: 900px) {
  .fnt-trades-grid { grid-template-columns: repeat(2, 1fr); }
  .fnt-trade { border-right: 1px solid var(--fnt-border) !important; border-bottom: 1px solid var(--fnt-border) !important; }
  .fnt-trade:nth-child(2n) { border-right: none !important; }
  .fnt-trade:nth-last-child(-n+2) { border-bottom: none !important; }
}
@media (max-width: 500px) {
  .fnt-trades-grid { grid-template-columns: 1fr; }
  .fnt-trade { border-right: none !important; }
  .fnt-trade:not(:last-child) { border-bottom: 1px solid var(--fnt-border) !important; }
}

/* Perks (Adhésion) */
.fnt-perks-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
}
.fnt-perk-card {
  padding: 32px 24px;
  background: var(--fnt-white);
  border-radius: var(--fnt-radius-md);
  text-align: left;
}
.fnt-perk-icon {
  display: inline-flex;
  width: 52px;
  height: 52px;
  align-items: center;
  justify-content: center;
  color: var(--fnt-orange);
  border: 1.5px solid var(--fnt-border);
  border-radius: 50%;
  margin-bottom: 20px;
  transition: border-color .25s ease, color .25s ease;
}
.fnt-perk-card:hover .fnt-perk-icon {
  border-color: var(--fnt-orange);
  color: var(--fnt-orange-dark);
}
.fnt-perk-card h3 {
  font-family: var(--fnt-font-display);
  font-size: 1.25rem;
  font-weight: 500;
  margin: 0 0 8px;
  letter-spacing: -0.01em;
}
.fnt-perk-card p { margin: 0; color: var(--fnt-muted); font-size: .95rem; line-height: 1.55; }
@media (max-width: 900px) {
  .fnt-perks-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 500px) {
  .fnt-perks-grid { grid-template-columns: 1fr; }
}

/* Formulaire d'adhésion : split */
.fnt-split-form {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: 80px;
  align-items: start;
}
.fnt-split-form-side h2 em { font-style: italic; color: var(--fnt-orange); }
.fnt-split-form-side p { color: var(--fnt-muted); font-size: 1.05rem; margin: 16px 0 32px; }
.fnt-split-form-checklist {
  list-style: none;
  margin: 0;
  padding: 0;
}
.fnt-split-form-checklist li {
  position: relative;
  padding: 12px 0 12px 32px;
  border-bottom: 1px solid var(--fnt-border);
  color: var(--fnt-dark);
}
.fnt-split-form-checklist li:last-child { border-bottom: none; }
.fnt-split-form-checklist li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 19px;
  width: 16px;
  height: 16px;
  background:
    linear-gradient(to bottom right, transparent 50%, var(--fnt-orange) 50%) no-repeat 0 6px / 8px 4px,
    linear-gradient(to top right, transparent 50%, var(--fnt-orange) 50%) no-repeat 4px 4px / 12px 6px;
  border-radius: 50%;
  border: 1.5px solid var(--fnt-orange);
}
.fnt-split-form-checklist li::before {
  background: var(--fnt-orange);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>") center/contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>") center/contain no-repeat;
  border: none;
}
.fnt-split-form-content { padding-top: 8px; }
@media (max-width: 900px) {
  .fnt-split-form { grid-template-columns: 1fr; gap: 48px; }
}

/* Channels (Contact) */
.fnt-channels-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
.fnt-channel {
  display: block;
  padding: 36px 28px;
  background: var(--fnt-white);
  border: 1px solid var(--fnt-border);
  border-radius: var(--fnt-radius-md);
  text-decoration: none;
  color: var(--fnt-dark);
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.fnt-channel:hover {
  transform: translateY(-4px);
  box-shadow: var(--fnt-shadow-md);
  border-color: var(--fnt-orange);
  color: var(--fnt-dark);
}
.fnt-channel-icon {
  display: inline-flex;
  width: 52px;
  height: 52px;
  align-items: center;
  justify-content: center;
  color: var(--fnt-orange);
  border: 1.5px solid var(--fnt-border);
  border-radius: 50%;
  margin-bottom: 20px;
  transition: border-color .25s ease, color .25s ease;
}
.fnt-channel:hover .fnt-channel-icon {
  border-color: var(--fnt-orange);
  color: var(--fnt-orange-dark);
}
.fnt-channel h3 {
  font-family: var(--fnt-font-display);
  font-size: 1.4rem;
  font-weight: 500;
  margin: 0 0 8px;
  letter-spacing: -0.01em;
}
.fnt-channel p { margin: 0 0 12px; color: var(--fnt-muted); font-size: .95rem; line-height: 1.5; }
.fnt-channel strong {
  color: var(--fnt-orange);
  font-family: var(--fnt-font-heading);
  font-weight: 600;
  font-size: .95rem;
}
@media (max-width: 800px) {
  .fnt-channels-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   DASHBOARD : listes Événements / Documents / Messages
   ============================================================ */

/* Événements */
.fnt-events-list {
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.fnt-event-item {
  display: grid;
  grid-template-columns: 64px 1fr auto;
  gap: 20px;
  align-items: center;
  padding: 16px;
  background: var(--fnt-white);
  border: 1px solid var(--fnt-border);
  border-radius: var(--fnt-radius-md);
  transition: border-color .15s ease, transform .15s ease;
}
.fnt-event-item:hover {
  border-color: var(--fnt-orange);
  transform: translateY(-1px);
}
.fnt-event-date {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  background: var(--fnt-orange-soft);
  color: var(--fnt-orange-dark);
  border-radius: var(--fnt-radius-sm);
}
.fnt-event-day {
  font-family: var(--fnt-font-display);
  font-size: 1.6rem;
  font-weight: 600;
  line-height: 1;
}
.fnt-event-month {
  font-family: var(--fnt-font-heading);
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .1em;
  margin-top: 2px;
}
.fnt-event-body { min-width: 0; }
.fnt-event-body h3 {
  font-family: var(--fnt-font-display);
  font-size: 1.1rem;
  font-weight: 500;
  margin: 4px 0 4px;
  letter-spacing: -0.01em;
}
.fnt-event-body p {
  margin: 0;
  font-size: .9rem;
  color: var(--fnt-muted);
}
.fnt-event-type {
  display: inline-block;
  font-family: var(--fnt-font-heading);
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--fnt-orange);
  background: var(--fnt-orange-soft);
  padding: 3px 10px;
  border-radius: 999px;
}

/* Documents */
.fnt-docs-list {
  list-style: none;
  margin: 12px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.fnt-doc-item {
  display: grid;
  grid-template-columns: 40px 1fr auto;
  gap: 16px;
  align-items: center;
  padding: 16px;
  background: var(--fnt-white);
  border: 1px solid var(--fnt-border);
  border-radius: var(--fnt-radius-md);
  transition: border-color .15s ease;
}
.fnt-doc-item:hover { border-color: var(--fnt-orange); }
.fnt-doc-icon {
  width: 40px;
  height: 40px;
  background: var(--fnt-cream);
  border-radius: var(--fnt-radius-sm);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
}
.fnt-doc-body strong {
  display: block;
  font-family: var(--fnt-font-display);
  font-size: 1.05rem;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--fnt-dark);
}
.fnt-doc-body p {
  margin: 4px 0;
  font-size: .9rem;
  color: var(--fnt-muted);
}
.fnt-doc-meta {
  font-size: .78rem;
  color: var(--fnt-muted);
  letter-spacing: .02em;
}

/* Messages */
.fnt-messages-list {
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.fnt-message-item {
  padding: 16px 20px;
  background: var(--fnt-white);
  border: 1px solid var(--fnt-border);
  border-left: 3px solid var(--fnt-orange);
  border-radius: var(--fnt-radius-sm);
}
.fnt-message-item header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}
.fnt-message-item strong {
  font-family: var(--fnt-font-display);
  font-size: 1.05rem;
  font-weight: 500;
  letter-spacing: -0.01em;
}
.fnt-message-meta {
  font-size: .78rem;
  color: var(--fnt-muted);
  letter-spacing: .02em;
}
.fnt-message-item p {
  margin: 0;
  color: var(--fnt-muted);
  font-size: .95rem;
}

@media (max-width: 600px) {
  .fnt-event-item, .fnt-doc-item {
    grid-template-columns: 56px 1fr;
  }
  .fnt-event-item > a, .fnt-doc-item > a {
    grid-column: 1 / -1;
  }
}

/* ============================================================
   ACTUALITÉS — archive + single
   ============================================================ */
.fnt-actu-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 48px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--fnt-border);
}
.fnt-actu-filter {
  display: inline-block;
  padding: 8px 18px;
  border-radius: 999px;
  background: transparent;
  border: 1px solid var(--fnt-border);
  color: var(--fnt-dark);
  text-decoration: none;
  font-size: .88rem;
  font-weight: 500;
  font-family: var(--fnt-font-heading);
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.fnt-actu-filter:hover {
  border-color: var(--fnt-orange);
  color: var(--fnt-orange);
}
.fnt-actu-filter.is-active {
  background: var(--fnt-dark);
  color: var(--fnt-white);
  border-color: var(--fnt-dark);
}

.fnt-actu-card-excerpt {
  color: var(--fnt-muted);
  font-size: .9rem;
  margin: 8px 0 0;
  line-height: 1.5;
}

/* Single actualité */
.fnt-actu-feature-img {
  margin: 0;
  padding: 0 24px;
  max-width: 1000px;
  margin: -32px auto 0;
  position: relative;
  z-index: 1;
}
.fnt-actu-feature-img img {
  width: 100%;
  height: auto;
  display: block;
  border-radius: var(--fnt-radius-md);
  box-shadow: var(--fnt-shadow-lg);
  aspect-ratio: 16 / 9;
  object-fit: cover;
}
.fnt-actu-meta {
  margin-top: 24px !important;
  font-family: var(--fnt-font-heading);
  font-size: .85rem;
  letter-spacing: .04em;
  color: var(--fnt-muted) !important;
}
.fnt-actu-content { max-width: 760px; }
.fnt-actu-source { margin-top: 48px; }

/* Pagination (annuaire + actualités) */
.fnt-pagination .page-numbers {
  display: inline-block;
  padding: 8px 14px;
  margin: 0 2px;
  border-radius: var(--fnt-radius-sm);
  background: var(--fnt-cream);
  color: var(--fnt-dark);
  text-decoration: none;
  font-family: var(--fnt-font-heading);
  font-weight: 500;
  font-size: .9rem;
  transition: background .15s ease;
}
.fnt-pagination .page-numbers:hover { background: var(--fnt-sand); }
.fnt-pagination .page-numbers.current {
  background: var(--fnt-orange);
  color: var(--fnt-white);
}

/* ============================================================
   NOTATION ⭐
   ============================================================ */
.fnt-stars {
  --star-size: 16px;
  position: relative;
  display: inline-block;
  font-size: var(--star-size);
  font-family: Georgia, "Times New Roman", serif; /* widely-rendered ★ */
  line-height: 1;
  letter-spacing: 2px;
  user-select: none;
  vertical-align: middle;
}
.fnt-stars-bg,
.fnt-stars-fill {
  display: block;
  white-space: nowrap;
}
.fnt-stars-bg { color: var(--fnt-border); }
.fnt-stars-fill {
  position: absolute;
  top: 0;
  left: 0;
  overflow: hidden;
  color: #F5A623;
  /* always render 5 stars beneath the mask, mask is width */
}
.fnt-stars-meta {
  display: inline-flex;
  gap: 6px;
  align-items: center;
  margin-left: 8px;
  font-size: .85rem;
  color: var(--fnt-muted);
  vertical-align: middle;
}
.fnt-stars-meta strong {
  color: var(--fnt-dark);
  font-weight: 600;
  font-size: .92rem;
}
.fnt-stars-count { color: var(--fnt-muted); }

/* Interactif : boutons par dessus pour cliquer */
.fnt-stars-interactive {
  --star-size: 32px;
  display: inline-block;
  cursor: pointer;
}
.fnt-star-btn {
  position: absolute !important;
  top: 0 !important;
  height: 100% !important;
  width: calc(var(--star-size) + 2px) !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: none !important;
  outline: none !important;
  box-shadow: none !important;
  cursor: pointer;
  font-size: 0 !important;
  color: transparent !important;
  padding: 0 !important;
  margin: 0 !important;
  text-indent: -9999px;
  appearance: none;
  -webkit-appearance: none;
}
.fnt-star-btn:hover,
.fnt-star-btn:focus,
.fnt-star-btn.is-mine {
  background: transparent !important;
  background-color: transparent !important;
  outline: none !important;
  box-shadow: none !important;
}
.fnt-star-btn[data-value="1"] { left: 0; }
.fnt-star-btn[data-value="2"] { left: calc((var(--star-size) + 2px) * 1); }
.fnt-star-btn[data-value="3"] { left: calc((var(--star-size) + 2px) * 2); }
.fnt-star-btn[data-value="4"] { left: calc((var(--star-size) + 2px) * 3); }
.fnt-star-btn[data-value="5"] { left: calc((var(--star-size) + 2px) * 4); }

/* Hover preview : la fill se met à jour via JS, mais en pure CSS-only hover on tente */
.fnt-stars-interactive:hover .fnt-stars-fill { color: #FFB820; }

/* Petit fade quand la note est mise à jour */
.fnt-stars-fill { transition: width .25s ease, color .15s ease; }

/* Bloc rating sur la fiche */
.fnt-rating-block .fnt-rating-cta {
  background: var(--fnt-cream);
  padding: 28px 32px;
  border-radius: var(--fnt-radius-md);
}
.fnt-rating-prompt {
  margin: 0 0 16px;
  font-size: .95rem;
  color: var(--fnt-muted);
}
.fnt-rating-aggregate {
  margin: 16px 0 0;
  font-size: .9rem;
  color: var(--fnt-muted);
}
.fnt-rating-aggregate strong { color: var(--fnt-dark); }

/* Hero rating */
.fnt-assoc-hero-rating {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 16px;
}
.fnt-assoc-hero-rating .fnt-stars { --star-size: 18px; }

/* Card rating (compact) */
.fnt-card-rating {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 4px;
}
.fnt-card-rating .fnt-stars { --star-size: 13px; }
.fnt-card-rating .fnt-stars-meta { font-size: .78rem; margin-left: 4px; }

/* Inscription */
.fnt-register-wrap {
  max-width: 640px;
}
.fnt-register .fnt-form input[type="checkbox"] {
  width: auto;
  margin: 0;
  accent-color: var(--fnt-orange);
}

/* Espace membre — écran de login non connecté */
.fnt-login-prompt {
  max-width: 560px;
  margin: 64px auto;
  padding: 56px 40px;
  background: var(--fnt-cream);
  border-radius: var(--fnt-radius-lg);
  text-align: center;
}
.fnt-login-prompt h2 {
  font-family: var(--fnt-font-display);
  font-size: clamp(1.6rem, 3vw, 2.2rem);
  margin: 0 0 12px;
}
.fnt-login-prompt > p { color: var(--fnt-muted); margin: 0 0 28px; }
.fnt-login-prompt-actions {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  margin-bottom: 24px;
}
.fnt-login-prompt-help {
  font-size: .9rem;
  color: var(--fnt-muted);
  margin: 0 !important;
  padding-top: 24px;
  border-top: 1px solid var(--fnt-border);
}

/* Contact : info + map */
.fnt-contact-grid {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: 64px;
  align-items: center;
}
.fnt-contact-info h2 em { font-style: italic; color: var(--fnt-orange); }
.fnt-contact-dl {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  margin-top: 32px;
}
.fnt-contact-dl > div { padding-top: 16px; border-top: 1px solid var(--fnt-border); }
.fnt-contact-dl dt {
  font-family: var(--fnt-font-heading);
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--fnt-muted);
  margin-bottom: 6px;
}
.fnt-contact-dl dd {
  margin: 0;
  font-size: .95rem;
  line-height: 1.5;
  color: var(--fnt-dark);
}
.fnt-contact-dl dd a { color: var(--fnt-orange); text-decoration: none; }
.fnt-contact-dl dd a:hover { text-decoration: underline; }
.fnt-contact-map { border-radius: var(--fnt-radius-md); overflow: hidden; box-shadow: var(--fnt-shadow-md); }
@media (max-width: 900px) {
  .fnt-contact-grid { grid-template-columns: 1fr; gap: 40px; }
  .fnt-contact-dl { grid-template-columns: 1fr; }
}

/* ----- Annuaire / Filters ----- */
.fnt-search-layout {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 32px;
}
@media (max-width: 900px) {
  .fnt-search-layout { grid-template-columns: 1fr; }
}
.fnt-filters {
  background: var(--fnt-cream);
  padding: 24px;
  border-radius: var(--fnt-radius-md);
  position: sticky;
  top: 100px;
  height: fit-content;
}
.fnt-filters h3 { font-size: 1rem; margin: 0 0 12px; color: var(--fnt-orange); }
.fnt-filters label { display: block; margin-bottom: 8px; cursor: pointer; }

/* ----- Member dashboard — « Concierge Premium » ----- */
/* ============================================================
 * DASHBOARD MEMBRE — Sidebar layout, luxury hospitality feel
 * Dark sidebar + light content area with subtle wax-pattern texture
 * ============================================================ */

.fnt-dash {
  --dash-sidebar-bg: #1F1A14;
  --dash-sidebar-w: 280px;
  --dash-content-bg: #FAF7F3;
  --dash-card-bg: #FFFFFF;
  --dash-ink-mute: rgba(31, 26, 20, .55);
  --dash-line: #E8DFD0;
  --dash-shadow-1: 0 1px 3px rgba(56, 38, 18, .04), 0 6px 20px -6px rgba(56, 38, 18, .07);
  --dash-shadow-2: 0 4px 12px rgba(56, 38, 18, .06), 0 20px 44px -12px rgba(56, 38, 18, .13);
  --dash-shadow-glow: 0 0 0 1px rgba(210, 100, 31, .12), 0 8px 24px -4px rgba(210, 100, 31, .12);
  --dash-radius: 16px;
  --dash-radius-sm: 10px;

  display: grid;
  grid-template-columns: var(--dash-sidebar-w) 1fr;
  min-height: 100vh;
  max-width: 1400px;
  margin: 0 auto;
  background: var(--dash-content-bg);
  box-shadow: 0 0 80px rgba(31, 26, 20, .15);
}
body.fnt-dash-immersive {
  background: var(--dash-sidebar-bg, #1F1A14);
}

/* ---------- SIDEBAR ---------- */
.fnt-dash-sidebar {
  background: var(--dash-sidebar-bg);
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,.1) transparent;
}
.fnt-dash-sidebar::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    repeating-linear-gradient(
      135deg,
      transparent,
      transparent 20px,
      rgba(210, 100, 31, .03) 20px,
      rgba(210, 100, 31, .03) 21px
    );
  pointer-events: none;
}
.fnt-dash-sidebar-inner {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  padding: 32px 20px 24px;
}

/* --- Identity block --- */
.fnt-dash-identity {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  margin-bottom: 36px;
  padding-bottom: 28px;
  border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.fnt-dash-avatar {
  width: 72px; height: 72px;
  flex-shrink: 0;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--fnt-orange), #E8884A);
  color: var(--fnt-cream);
  font-family: var(--fnt-font-display);
  font-weight: 600;
  font-size: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow:
    0 4px 16px -2px rgba(210, 100, 31, .5),
    inset 0 -4px 8px rgba(0,0,0,.15);
  margin-bottom: 16px;
  position: relative;
}
.fnt-dash-avatar::after {
  content: "";
  position: absolute;
  width: 14px; height: 14px;
  background: var(--fnt-green);
  border: 3px solid var(--dash-sidebar-bg);
  border-radius: 50%;
  bottom: 0; right: 0;
  box-shadow: 0 0 0 2px rgba(44, 122, 62, .3);
}
.fnt-dash-username {
  font-family: var(--fnt-font-heading) !important;
  font-weight: 600 !important;
  font-size: 1.1rem !important;
  color: #FFFFFF !important;
  margin: 0 0 4px !important;
  letter-spacing: -.01em;
  line-height: 1.3 !important;
}
.fnt-dash-org {
  margin: 0 0 6px;
  color: rgba(255, 255, 255, .55);
  font-size: .82rem;
  line-height: 1.4;
}
.fnt-dash-org em { font-style: italic; opacity: .7; }
.fnt-dash-since {
  display: inline-block;
  font-size: .72rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .35);
  font-family: var(--fnt-font-heading);
  font-weight: 500;
}

/* --- Navigation --- */
.fnt-dash-nav {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.fnt-dash-nav-item {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 16px;
  border-radius: var(--dash-radius-sm);
  text-decoration: none;
  color: rgba(255, 255, 255, .6);
  font-family: var(--fnt-font-heading);
  font-weight: 500;
  font-size: .88rem;
  transition: all .2s ease;
  position: relative;
}
.fnt-dash-nav-item:hover {
  color: rgba(255, 255, 255, .9);
  background: rgba(255, 255, 255, .05);
}
.fnt-dash-nav-item.is-active {
  color: #FFFFFF;
  background: rgba(210, 100, 31, .15);
  font-weight: 600;
}
.fnt-dash-nav-item.is-active::before {
  content: "";
  position: absolute;
  left: 0; top: 8px; bottom: 8px;
  width: 3px;
  border-radius: 0 3px 3px 0;
  background: var(--fnt-orange);
}
.fnt-dash-nav-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px; height: 20px;
  opacity: .8;
}
.fnt-dash-nav-item.is-active .fnt-dash-nav-icon { opacity: 1; }
.fnt-dash-nav-icon svg { stroke: currentColor; }

/* --- Sidebar footer (logout) --- */
.fnt-dash-sidebar-footer {
  margin-top: auto;
  padding-top: 20px;
  border-top: 1px solid rgba(255, 255, 255, .06);
}
.fnt-dash-back,
.fnt-dash-logout {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 16px;
  border-radius: var(--dash-radius-sm);
  text-decoration: none;
  color: rgba(255, 255, 255, .4);
  font-family: var(--fnt-font-heading);
  font-weight: 500;
  font-size: .84rem;
  transition: all .2s ease;
}
.fnt-dash-back:hover {
  color: rgba(255, 255, 255, .85);
  background: rgba(255, 255, 255, .06);
}
.fnt-dash-logout:hover {
  color: #E85A4F;
  background: rgba(232, 90, 79, .08);
}

/* ---------- MAIN CONTENT ---------- */
.fnt-dash-main {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

/* --- Top bar --- */
.fnt-dash-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 24px 40px;
  border-bottom: 1px solid var(--dash-line);
  background: var(--dash-card-bg);
  position: sticky;
  top: 0;
  z-index: 10;
}
.fnt-dash-page-title {
  font-family: var(--fnt-font-display) !important;
  font-weight: 500 !important;
  font-size: 1.6rem !important;
  color: var(--fnt-dark) !important;
  margin: 0 !important;
  letter-spacing: -.02em;
  line-height: 1.2 !important;
}
.fnt-dash-topbar-right {
  display: flex;
  align-items: center;
  gap: 16px;
}
.fnt-dash-greeting {
  font-family: var(--fnt-font-body);
  font-size: .88rem;
  color: var(--dash-ink-mute);
}
.fnt-dash-topbar-back {
  display: none;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  border-radius: 50%;
  background: var(--fnt-sand);
  color: var(--fnt-dark);
  text-decoration: none;
  transition: all .2s ease;
}
.fnt-dash-topbar-back:hover {
  background: var(--fnt-orange);
  color: #FFF;
}

/* --- Content panel --- */
.fnt-dash-content {
  flex: 1;
  padding: 40px 48px;
  max-width: 960px;
  position: relative;
}
/* Subtle geometric pattern overlay */
.fnt-dash-content::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 85% 10%, rgba(210, 100, 31, .04) 0, transparent 30%),
    radial-gradient(circle at 10% 90%, rgba(44, 122, 62, .03) 0, transparent 25%);
  pointer-events: none;
}
.fnt-dash-content > * { position: relative; }
.fnt-dash-content > h2,
.fnt-dash-content > h3 {
  font-family: var(--fnt-font-heading);
  font-weight: 600;
  color: var(--fnt-dark);
  letter-spacing: -.005em;
  margin: 0 0 18px;
}
.fnt-dash-content > h2 { font-size: 1.5rem; }
.fnt-dash-content > h3 { font-size: 1.1rem; margin-top: 40px; }
.fnt-dash-content > p { color: var(--dash-ink-mute); }

/* ---------- Stats grid ---------- */
.fnt-dash-stats {
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr 1fr;
  gap: 20px;
  margin-bottom: 48px;
}
@media (max-width: 1200px) {
  .fnt-dash-stats { grid-template-columns: 1fr 1fr; }
  .fnt-dash-stat--big { grid-column: span 2; }
}
@media (max-width: 700px) {
  .fnt-dash-stats { grid-template-columns: 1fr; }
  .fnt-dash-stat--big { grid-column: auto; }
}
.fnt-dash-stat {
  position: relative;
  background: var(--dash-card-bg);
  border-radius: var(--dash-radius);
  padding: 28px 24px 24px;
  overflow: hidden;
  border: 1px solid var(--dash-line);
  transition: box-shadow .3s ease, transform .3s ease, border-color .3s ease;
  opacity: 0;
  transform: translateY(16px);
  animation: fntDashFadeUp .6s cubic-bezier(.2,.7,.2,1) forwards;
}
.fnt-dash-stat:hover {
  box-shadow: var(--dash-shadow-2);
  transform: translateY(-3px);
  border-color: transparent;
}
.fnt-dash-stat::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--fnt-orange), var(--fnt-orange-soft));
}
.fnt-dash-stat--green::before {
  background: linear-gradient(90deg, var(--fnt-green), var(--fnt-green-soft));
}
.fnt-dash-stat--big { min-height: 180px; }
.fnt-dash-stat-value {
  font-family: var(--fnt-font-display);
  font-weight: 500;
  font-size: 56px;
  line-height: 1;
  letter-spacing: -.03em;
  color: var(--fnt-dark);
  margin: 0 0 12px;
}
.fnt-dash-stat-value--text { font-size: 32px; line-height: 1.1; padding-top: 12px; }
.fnt-dash-stat-label {
  font-family: var(--fnt-font-heading);
  font-weight: 600;
  font-size: 11px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--dash-ink-mute);
  margin: 0;
}
.fnt-dash-stat-meta {
  margin: 12px 0 0;
  font-size: 12px;
  color: var(--fnt-muted);
}
.fnt-dash-stat:nth-child(1) { animation-delay: .05s; }
.fnt-dash-stat:nth-child(2) { animation-delay: .12s; }
.fnt-dash-stat:nth-child(3) { animation-delay: .19s; }
.fnt-dash-stat:nth-child(4) { animation-delay: .26s; }

/* ---------- Deco shapes ---------- */
.fnt-dash-deco {
  position: absolute;
  top: 18px;
  right: 18px;
  pointer-events: none;
  opacity: .7;
}
.fnt-dash-deco-circle {
  width: 36px; height: 36px;
  border-radius: 50%;
  border: 2px solid var(--fnt-orange-soft);
}
.fnt-dash-deco-half {
  width: 40px; height: 20px;
  border-radius: 40px 40px 0 0;
  background: var(--fnt-green-soft);
  border-bottom: 2px solid var(--fnt-green-soft);
}
.fnt-dash-deco-tri {
  width: 0; height: 0;
  border-left: 18px solid transparent;
  border-right: 18px solid transparent;
  border-bottom: 30px solid var(--fnt-orange-soft);
  background: transparent;
  opacity: .5;
}
.fnt-dash-deco-dots {
  display: grid;
  grid-template-columns: repeat(3, 5px);
  gap: 4px;
}
.fnt-dash-deco-dots span {
  width: 5px; height: 5px;
  border-radius: 50%;
  background: var(--fnt-green-soft);
}
.fnt-dash-deco-dots span:nth-child(odd) { background: var(--fnt-orange-soft); }

/* ---------- Sections ---------- */
.fnt-dash-section { margin-bottom: 48px; }
.fnt-dash-section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 20px;
  gap: 12px;
  border: none;
  padding: 0;
}
.fnt-dash-section-title {
  font-family: var(--fnt-font-heading);
  font-weight: 600;
  font-size: 1.2rem;
  margin: 0;
  color: var(--fnt-dark);
  letter-spacing: -.005em;
}

/* ---------- Quick actions ---------- */
.fnt-dash-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
@media (max-width: 900px) { .fnt-dash-actions { grid-template-columns: 1fr; } }
.fnt-dash-action {
  position: relative;
  background: var(--dash-card-bg);
  border-radius: var(--dash-radius);
  padding: 24px 24px 24px 72px;
  border: 1px solid var(--dash-line);
  display: flex;
  align-items: center;
  justify-content: space-between;
  text-decoration: none;
  color: inherit;
  transition: all .3s ease;
  opacity: 0;
  transform: translateY(14px);
  animation: fntDashFadeUp .55s .25s cubic-bezier(.2,.7,.2,1) forwards;
}
.fnt-dash-action:nth-child(2) { animation-delay: .32s; }
.fnt-dash-action::before {
  content: "";
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 4px;
  border-radius: var(--dash-radius) 0 0 var(--dash-radius);
  background: var(--fnt-orange);
}
.fnt-dash-action--green::before { background: var(--fnt-green); }
.fnt-dash-action:hover {
  box-shadow: var(--dash-shadow-glow);
  border-color: transparent;
  transform: translateY(-2px);
}
.fnt-dash-action-icon {
  position: absolute;
  left: 20px;
  top: 50%;
  transform: translateY(-50%);
  width: 40px; height: 40px;
  display: grid;
  place-items: center;
}
.fnt-dash-icon-edit {
  width: 26px; height: 26px;
  border-radius: 6px 6px 6px 12px;
  background: var(--fnt-orange);
  position: relative;
  transform: rotate(-45deg);
}
.fnt-dash-icon-edit::after {
  content: "";
  position: absolute;
  width: 7px; height: 7px;
  background: var(--fnt-cream);
  border-radius: 1px;
  top: 4px; left: 4px;
}
.fnt-dash-icon-mega {
  width: 30px; height: 20px;
  background: var(--fnt-green);
  clip-path: polygon(0 30%, 70% 0, 70% 100%, 0 70%);
  position: relative;
}
.fnt-dash-icon-mega::after {
  content: "";
  position: absolute;
  right: -7px; top: 3px;
  width: 11px; height: 13px;
  border-radius: 0 7px 7px 0;
  background: var(--fnt-green);
}
.fnt-dash-action-text { flex: 1; padding-right: 32px; }
.fnt-dash-action-title {
  display: block;
  font-family: var(--fnt-font-heading);
  font-weight: 600;
  font-size: .95rem;
  margin: 0 0 4px;
  color: var(--fnt-dark);
}
.fnt-dash-action-desc {
  display: block;
  color: var(--fnt-muted);
  font-size: .82rem;
  line-height: 1.45;
}
.fnt-dash-action-arrow {
  width: 30px; height: 30px;
  border-radius: 50%;
  background: var(--fnt-sand);
  display: grid;
  place-items: center;
  flex-shrink: 0;
  transition: all .25s ease;
}
.fnt-dash-action:hover .fnt-dash-action-arrow {
  background: var(--fnt-orange);
  transform: translateX(3px);
}
.fnt-dash-action-arrow::after {
  content: "";
  width: 7px; height: 7px;
  border-top: 2px solid var(--fnt-dark);
  border-right: 2px solid var(--fnt-dark);
  transform: rotate(45deg) translate(-1px, 1px);
  transition: border-color .2s ease;
}
.fnt-dash-action:hover .fnt-dash-action-arrow::after { border-color: #FFF; }

/* ---------- Activity timeline ---------- */
.fnt-dash-activity {
  display: flex;
  flex-direction: column;
  gap: 0;
  position: relative;
  padding-left: 48px;
}
/* Vertical connecting line */
.fnt-dash-activity::before {
  content: "";
  position: absolute;
  left: 23px; top: 20px; bottom: 20px;
  width: 2px;
  background: linear-gradient(to bottom, var(--fnt-orange-soft), var(--fnt-green-soft));
  border-radius: 2px;
}
.fnt-dash-activity-row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 16px;
  background: var(--dash-card-bg);
  border-radius: var(--dash-radius);
  padding: 18px 22px;
  border: 1px solid var(--dash-line);
  position: relative;
  transition: all .25s ease;
  opacity: 0;
  transform: translateX(-10px);
  animation: fntDashSlideIn .5s cubic-bezier(.2,.7,.2,1) forwards;
  margin-bottom: 12px;
}
.fnt-dash-activity-row:nth-child(1) { animation-delay: .3s; }
.fnt-dash-activity-row:nth-child(2) { animation-delay: .4s; }
.fnt-dash-activity-row:nth-child(3) { animation-delay: .5s; }
.fnt-dash-activity-row:hover {
  box-shadow: var(--dash-shadow-1);
  border-color: transparent;
}
/* Timeline dot */
.fnt-dash-activity-row::before {
  content: "";
  position: absolute;
  left: -36px;
  top: 50%;
  transform: translateY(-50%);
  width: 12px; height: 12px;
  border-radius: 50%;
  background: var(--dash-card-bg);
  border: 3px solid var(--fnt-orange);
  box-shadow: 0 0 0 3px var(--dash-content-bg);
}
.fnt-dash-activity-row:nth-child(even)::before { border-color: var(--fnt-green); }
.fnt-dash-date-badge {
  display: none; /* Hidden in new timeline layout — date in text */
}
.fnt-dash-activity-text h4 {
  margin: 0 0 4px;
  font-family: var(--fnt-font-heading);
  font-weight: 600;
  font-size: .9rem;
  color: var(--fnt-dark);
}
.fnt-dash-activity-text p {
  margin: 0;
  color: var(--dash-ink-mute);
  font-size: .8rem;
}
.fnt-dash-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--fnt-font-heading);
  font-weight: 600;
  font-size: 11px;
  padding: 5px 12px;
  border-radius: 999px;
  letter-spacing: .03em;
}
.fnt-dash-pill::before {
  content: "";
  width: 6px; height: 6px;
  border-radius: 50%;
  background: currentColor;
}
.fnt-dash-pill--ok   { background: var(--fnt-green-soft);  color: var(--fnt-green-dark); }
.fnt-dash-pill--wait { background: #F7E5C1;                color: #8A5C0E; }
.fnt-dash-pill--info { background: var(--fnt-orange-soft); color: var(--fnt-orange-dark); }

/* ---------- Animations ---------- */
@keyframes fntDashFadeUp {
  to { opacity: 1; transform: translateY(0); }
}
@keyframes fntDashSlideIn {
  to { opacity: 1; transform: translateX(0); }
}
@media (prefers-reduced-motion: reduce) {
  .fnt-dash *,
  .fnt-dash *::before,
  .fnt-dash *::after {
    animation-duration: .001ms !important;
    animation-delay: 0ms !important;
    transition-duration: .001ms !important;
  }
  .fnt-dash-stat,
  .fnt-dash-action,
  .fnt-dash-activity-row { opacity: 1; transform: none; }
}

/* ---------- MOBILE RESPONSIVE ---------- */
@media (max-width: 900px) {
  .fnt-dash {
    grid-template-columns: 1fr;
    grid-template-rows: auto 1fr;
  }
  .fnt-dash-sidebar {
    position: relative;
    height: auto;
    overflow: visible;
  }
  .fnt-dash-sidebar-inner {
    padding: 20px 16px 16px;
  }
  .fnt-dash-identity {
    flex-direction: row;
    text-align: left;
    align-items: center;
    gap: 14px;
    margin-bottom: 16px;
    padding-bottom: 16px;
  }
  .fnt-dash-avatar {
    width: 48px; height: 48px;
    font-size: 22px;
    margin-bottom: 0;
  }
  .fnt-dash-username { font-size: .95rem !important; }
  .fnt-dash-org { font-size: .78rem; }
  .fnt-dash-since { display: none; }
  .fnt-dash-nav {
    flex-direction: row;
    overflow-x: auto;
    gap: 2px;
    padding-bottom: 4px;
    scrollbar-width: none;
  }
  .fnt-dash-nav::-webkit-scrollbar { display: none; }
  .fnt-dash-nav-item {
    padding: 10px 14px;
    white-space: nowrap;
    font-size: .8rem;
    gap: 8px;
    border-radius: 999px;
  }
  .fnt-dash-nav-item.is-active {
    background: rgba(210, 100, 31, .2);
    border-radius: 999px;
  }
  .fnt-dash-nav-item.is-active::before { display: none; }
  .fnt-dash-nav-label { display: none; }
  .fnt-dash-sidebar-footer { display: none; }
  .fnt-dash-topbar { padding: 16px 20px; }
  .fnt-dash-page-title { font-size: 1.3rem !important; }
  .fnt-dash-greeting { display: none; }
  .fnt-dash-topbar-back { display: flex; }
  .fnt-dash-content { padding: 24px 20px; }
  .fnt-dash-activity { padding-left: 36px; }
  .fnt-dash-activity::before { left: 15px; }
  .fnt-dash-activity-row::before { left: -28px; width: 10px; height: 10px; }
}
@media (max-width: 600px) {
  .fnt-dash-nav-item { padding: 8px 12px; }
  .fnt-dash-content { padding: 20px 16px; }
  .fnt-dash-stats { grid-template-columns: 1fr; }
  .fnt-dash-stat--big { grid-column: auto; }
}

/* ---------- IMMERSIVE MODE — hide site chrome ---------- */
body.fnt-dash-immersive .site-header,
body.fnt-dash-immersive .site-footer,
body.fnt-dash-immersive .fnt-footer { display: none !important; }
body.fnt-dash-immersive .site-main { padding: 0 !important; margin: 0 !important; }
body.fnt-dash-immersive { overflow: hidden; }
body.fnt-dash-immersive .fnt-dash { height: 100vh; }
body.fnt-dash-immersive .fnt-dash-main { overflow-y: auto; }

/* ----- Forms ----- */
.fnt-form { display: flex; flex-direction: column; gap: 16px; max-width: 640px; }
.fnt-form label { font-weight: 500; font-size: .9rem; }
.fnt-form input,
.fnt-form select,
.fnt-form textarea {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--fnt-border);
  border-radius: var(--fnt-radius-sm);
  font-family: inherit;
  font-size: 1rem;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.fnt-form input:focus,
.fnt-form select:focus,
.fnt-form textarea:focus {
  outline: none;
  border-color: var(--fnt-orange);
  box-shadow: 0 0 0 3px rgba(247,127,0,.15);
}
.fnt-form .fnt-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
@media (max-width: 600px) {
  .fnt-form .fnt-row { grid-template-columns: 1fr; }
}

/* ----- Feedback ----- */
.fnt-alert { padding: 14px 18px; border-radius: var(--fnt-radius-sm); margin-bottom: 16px; }
.fnt-alert-success { background: #E8F7E4; color: #1F5F12; border-left: 4px solid var(--fnt-green); }
.fnt-alert-error { background: #FDECEA; color: #8B1A0E; border-left: 4px solid #C0392B; }

/* ----- Utility & layout ----- */
.fnt-container { max-width: 1200px; margin: 0 auto; padding: 0 24px; }
.fnt-section { padding: 48px 0; }
.fnt-section-pad { padding: 96px 0; }
.fnt-section-title { text-align: center; margin-bottom: 48px; }
.fnt-section-title h2 { font-size: clamp(1.8rem, 3vw, 2.5rem); margin-bottom: 8px; }
.fnt-section-title p { color: var(--fnt-muted); font-size: 1.05rem; }
.fnt-section-eyebrow {
  font-family: var(--fnt-font-heading);
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .15em;
  text-transform: uppercase;
  color: var(--fnt-orange);
  margin: 0 0 12px;
  display: inline-block;
}
.fnt-section-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 32px;
  margin-bottom: 48px;
  border-bottom: 1px solid var(--fnt-border);
  padding-bottom: 32px;
}
.fnt-section-head h2 { margin: 0; }
.fnt-section-head h2 em { font-style: italic; color: var(--fnt-orange); }
@media (max-width: 700px) {
  .fnt-section-head { flex-direction: column; align-items: flex-start; }
}

/* ----- Edito (Mot du Président asymétrique) ----- */
.fnt-edito {
  padding: 120px 0;
  background: var(--fnt-cream);
  position: relative;
}
.fnt-edito::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle at 1px 1px, rgba(31,26,20,.05) 1px, transparent 0);
  background-size: 24px 24px;
  pointer-events: none;
}
.fnt-edito-grid {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 80px;
  align-items: center;
  position: relative;
}
.fnt-edito-quote-col { padding-right: 16px; }
.fnt-edito-quote {
  font-family: var(--fnt-font-display);
  font-size: clamp(1.4rem, 2.4vw, 2rem);
  line-height: 1.3;
  font-weight: 400;
  color: var(--fnt-dark);
  margin: 0 0 24px;
  padding: 0;
  border: none;
  position: relative;
}
.fnt-edito-quote em { font-style: italic; color: var(--fnt-orange); }
.fnt-edito-quote::before {
  content: """;
  display: block;
  font-family: var(--fnt-font-display);
  font-size: 6rem;
  line-height: .8;
  color: var(--fnt-orange);
  opacity: .35;
  margin-bottom: -16px;
}
.fnt-edito-sig {
  font-family: var(--fnt-font-heading);
  font-size: .85rem;
  color: var(--fnt-muted);
  text-transform: uppercase;
  letter-spacing: .1em;
  margin: 0 0 24px;
}
.fnt-edito-media-col {
  position: relative;
}
.fnt-edito-media-col img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  border-radius: var(--fnt-radius-lg);
  box-shadow: var(--fnt-shadow-lg);
  display: block;
}
.fnt-edito-caption {
  position: absolute;
  bottom: 20px;
  left: 20px;
  background: rgba(31,26,20,.85);
  color: var(--fnt-white);
  font-size: .78rem;
  letter-spacing: .03em;
  padding: 8px 14px;
  border-radius: 999px;
  backdrop-filter: blur(8px);
}
@media (max-width: 900px) {
  .fnt-edito-grid { grid-template-columns: 1fr; gap: 48px; }
  .fnt-edito-media-col img { aspect-ratio: 4 / 3; }
}

/* ----- CTA split (image + texte asymétrique) ----- */
.fnt-cta-split {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  padding: 0 !important;
  min-height: 480px;
  background: var(--fnt-dark);
}
.fnt-cta-split-media {
  background-size: cover;
  background-position: center;
  position: relative;
}
.fnt-cta-split-media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(31,26,20,.2), transparent 40%, rgba(31,26,20,.3));
}
.fnt-cta-split-body {
  padding: 80px 72px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  color: var(--fnt-white);
  max-width: 600px;
}
.fnt-cta-split-body h2 {
  color: var(--fnt-white);
  margin: 0 0 20px;
  font-family: var(--fnt-font-display);
  font-weight: 400;
  font-size: clamp(1.6rem, 2.5vw, 2.4rem);
}
.fnt-cta-split-body p {
  color: rgba(255,255,255,.8);
  margin: 0 0 32px;
  font-size: 1.05rem;
  line-height: 1.6;
}
.fnt-cta-split-body .fnt-btn { align-self: flex-start; }
@media (max-width: 900px) {
  .fnt-cta-split { grid-template-columns: 1fr; }
  .fnt-cta-split-media { min-height: 280px; }
  .fnt-cta-split-body { padding: 48px 28px; }
}

/* WhatsApp floating chat */
.fnt-whatsapp {
  position: fixed;
  bottom: 24px;
  right: 24px;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: #1FA855;
  color: var(--fnt-white);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 8px 20px rgba(31,168,85,.35), 0 2px 6px rgba(0,0,0,.1);
  z-index: 9999;
  text-decoration: none;
  transition: transform .2s ease, box-shadow .2s ease;
}
.fnt-whatsapp:hover {
  transform: scale(1.08);
  color: var(--fnt-white);
  box-shadow: 0 12px 28px rgba(31,168,85,.45), 0 4px 8px rgba(0,0,0,.12);
}
@media (max-width: 600px) {
  .fnt-whatsapp {
    width: 48px;
    height: 48px;
    bottom: 16px;
    right: 16px;
  }
}

/* ============================================================
   HEADER FENITOURCI
   ============================================================ */
.fnt-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  background: var(--fnt-white);
  border-bottom: 1px solid var(--fnt-border);
  box-shadow: 0 1px 0 rgba(0,0,0,.02);
  backdrop-filter: saturate(180%) blur(8px);
}
.fnt-header-inner {
  max-width: 1320px;
  margin: 0 auto;
  padding: 14px 32px;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 32px;
}

/* --- Logo --- */
.fnt-logo {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
  color: var(--fnt-dark);
}
.fnt-logo:hover { text-decoration: none; color: var(--fnt-dark); }
.fnt-logo img,
.fnt-logo--custom img.custom-logo,
.site-header img.custom-logo {
  height: 52px !important;
  width: auto !important;
  max-height: 52px !important;
  max-width: none !important;
  display: block;
}
.fnt-logo--custom { line-height: 0; }
.fnt-logo--custom .custom-logo-link { display: inline-block; line-height: 0; }
.fnt-logo--custom .custom-logo-link:hover { opacity: .85; }
@media (max-width: 600px) {
  .fnt-logo img,
  .fnt-logo--custom img.custom-logo,
  .site-header img.custom-logo {
    height: 40px !important;
    max-height: 40px !important;
  }
}
.fnt-logo-mark {
  display: inline-flex;
  width: 36px;
  height: 36px;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 2px 6px rgba(0,0,0,.12);
  border: 1px solid rgba(0,0,0,.06);
}
.fnt-logo-stripe { flex: 1; }
.fnt-logo-orange { background: var(--fnt-orange); }
.fnt-logo-white  { background: var(--fnt-white); }
.fnt-logo-green  { background: var(--fnt-green); }
.fnt-logo-text {
  display: flex;
  flex-direction: column;
  line-height: 1.1;
  font-family: var(--fnt-font-heading);
}
.fnt-logo-text strong { font-size: 1.05rem; letter-spacing: .02em; }
.fnt-logo-text small { font-size: .7rem; color: var(--fnt-muted); font-weight: 500; }

/* --- Nav --- */
.fnt-nav { justify-self: center; }
.fnt-nav-list {
  display: flex;
  gap: 4px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.fnt-nav-list li { position: relative; }
.fnt-nav-list a {
  display: block;
  padding: 10px 12px;
  color: var(--fnt-dark);
  text-decoration: none;
  font-weight: 500;
  font-size: .9rem;
  white-space: nowrap;
  position: relative;
  transition: color .15s ease;
}
.fnt-nav-list a::after {
  content: "";
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 4px;
  height: 2px;
  background: var(--fnt-orange);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .25s ease;
}
.fnt-nav-list a:hover { color: var(--fnt-orange); }
.fnt-nav-list a:hover::after { transform: scaleX(1); }
.fnt-nav-list .current-menu-item > a,
.fnt-nav-list .current_page_item > a {
  color: var(--fnt-orange);
}
.fnt-nav-list .current-menu-item > a::after,
.fnt-nav-list .current_page_item > a::after {
  transform: scaleX(1);
}

/* Sub-menu (depth=2) */
.fnt-nav-list .sub-menu {
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 200px;
  background: var(--fnt-white);
  border: 1px solid var(--fnt-border);
  border-radius: var(--fnt-radius-md);
  box-shadow: var(--fnt-shadow-md);
  list-style: none;
  margin: 8px 0 0;
  padding: 8px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-4px);
  transition: opacity .15s ease, transform .15s ease, visibility .15s;
}
.fnt-nav-list li:hover > .sub-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.fnt-nav-list .sub-menu a {
  padding: 8px 12px;
  border-radius: var(--fnt-radius-sm);
  font-size: .9rem;
}

/* --- Header actions (search + CTA + mobile burger) --- */
.fnt-header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}
.fnt-icon-btn {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--fnt-border);
  border-radius: 50%;
  cursor: pointer;
  color: var(--fnt-dark);
  transition: background .15s ease, border-color .15s ease, color .15s ease, transform .15s ease;
}
.fnt-icon-btn svg { width: 20px; height: 20px; }
#fnt-search-toggle svg { width: 22px; height: 22px; stroke-width: 2.4; }
.fnt-icon-btn:hover {
  background: var(--fnt-dark);
  color: var(--fnt-white);
  border-color: var(--fnt-dark);
}
/* mobile burger doesn't need border when no border on others */
.fnt-mobile-toggle { border-color: var(--fnt-border); }
/* Override : le bouton "Espace membre" du header est en variante outline,
   pour ne pas concurrencer les CTA primaires du contenu. */
.fnt-header-cta {
  padding: 10px 16px !important;
  font-size: .88rem !important;
  background: transparent !important;
  color: var(--fnt-dark) !important;
  border: 1px solid var(--fnt-border) !important;
  border-radius: 999px !important;
  box-shadow: none !important;
  font-weight: 500 !important;
}
.fnt-header-cta:hover {
  background: var(--fnt-dark) !important;
  color: var(--fnt-white) !important;
  border-color: var(--fnt-dark) !important;
  transform: none !important;
}
.fnt-header-cta svg { flex-shrink: 0; }
.fnt-mobile-toggle { display: none; }

/* --- Search overlay --- */
.fnt-search-overlay {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background: var(--fnt-white);
  border-bottom: 1px solid var(--fnt-border);
  padding: 20px 24px;
  box-shadow: 0 8px 24px rgba(31,26,20,.08);
  animation: fnt-fade-down .2s ease;
}
.fnt-search-overlay[hidden] { display: none; }
.fnt-search-form {
  max-width: 720px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 8px;
  align-items: center;
}
.fnt-search-form input[type="search"] {
  padding: 14px 20px;
  border: 1px solid var(--fnt-border);
  border-radius: 999px;
  font-size: 1rem;
  background: var(--fnt-cream);
  transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
.fnt-search-form input[type="search"]:focus {
  outline: none;
  border-color: var(--fnt-orange);
  background: var(--fnt-white);
  box-shadow: 0 0 0 3px rgba(210,100,31,.12);
}
#fnt-search-close {
  width: 40px;
  height: 40px;
  flex-shrink: 0;
}
@keyframes fnt-fade-down {
  from { opacity: 0; transform: translateY(-8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* --- Mobile menu --- */
.fnt-mobile-menu {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(320px, 85vw);
  background: var(--fnt-white);
  padding: 80px 24px 24px;
  z-index: 999;
  overflow-y: auto;
  box-shadow: -8px 0 32px rgba(0,0,0,.15);
  animation: fnt-slide-in .25s ease;
}
.fnt-mobile-menu[hidden] { display: none; }
@keyframes fnt-slide-in {
  from { transform: translateX(100%); }
  to   { transform: translateX(0); }
}
.fnt-mobile-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.fnt-mobile-list a {
  display: block;
  padding: 14px 16px;
  border-radius: var(--fnt-radius-sm);
  text-decoration: none;
  color: var(--fnt-dark);
  font-weight: 500;
  font-size: 1rem;
  border-left: 3px solid transparent;
}
.fnt-mobile-list a:hover,
.fnt-mobile-list .current-menu-item > a {
  background: var(--fnt-cream);
  color: var(--fnt-orange);
  border-left-color: var(--fnt-orange);
}
.fnt-mobile-list .sub-menu {
  list-style: none;
  margin: 0;
  padding-left: 16px;
}

/* Mobile backdrop */
body.fnt-mobile-open::after {
  content: "";
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.45);
  z-index: 998;
  animation: fnt-fade-in .2s ease;
}
@keyframes fnt-fade-in {
  from { opacity: 0; } to { opacity: 1; }
}
body.fnt-mobile-open { overflow: hidden; }

/* --- Responsive breakpoint --- */
@media (max-width: 1100px) {
  .fnt-header-inner { gap: 16px; padding: 12px 24px; }
  .fnt-nav-list { gap: 0; }
  .fnt-nav-list a { padding: 10px 8px; font-size: .85rem; }
  .fnt-nav-list a::after { left: 8px; right: 8px; }
}
@media (max-width: 920px) {
  .fnt-header-inner { grid-template-columns: auto 1fr auto; }
  .fnt-nav { display: none; }
  .fnt-header-cta span { display: none; }
  .fnt-header-cta { padding: 10px !important; width: 40px; height: 40px; border-radius: 50% !important; justify-content: center; }
  .fnt-mobile-toggle { display: inline-flex; }
}
@media (max-width: 600px) {
  .fnt-logo-text small { display: none; }
  .fnt-logo-text strong { font-size: .95rem; }
  .fnt-header-inner { padding: 10px 16px; gap: 8px; }
  .fnt-header-actions { gap: 4px; }
}

/* Hide Hello Elementor default footer site-title duplicate to avoid clash */
.site-header:not(.fnt-header) { display: none; }

/* ============================================================
   FOOTER FENITOURCI
   ============================================================ */
.fnt-footer {
  margin-top: 80px;
  background: linear-gradient(180deg, #1A1A1A 0%, #0E0E0E 100%);
  color: rgba(255,255,255,.85);
}
.fnt-footer-main {
  padding: 64px 24px 48px;
  border-bottom: 1px solid rgba(255,255,255,.08);
}
.fnt-footer-grid {
  max-width: 1280px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1.4fr;
  gap: 48px;
}
.fnt-footer-col h4 {
  font-family: var(--fnt-font-heading);
  font-size: 1rem;
  letter-spacing: .03em;
  text-transform: uppercase;
  margin: 0 0 16px;
  color: var(--fnt-white);
  position: relative;
  padding-bottom: 8px;
}
.fnt-footer-col h4::after {
  content: "";
  position: absolute;
  left: 0; bottom: 0;
  width: 32px; height: 3px;
  background: var(--fnt-orange);
  border-radius: 3px;
}

/* Footer wordmark — typo en serif display, plus éditorial qu'un logo blanc pill */
.fnt-footer-wordmark {
  display: block;
  text-decoration: none;
  margin-bottom: 16px;
}
.fnt-footer-wordmark-text {
  display: block;
  font-family: var(--fnt-font-display);
  font-size: 2rem;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--fnt-white);
  line-height: 1;
}
.fnt-footer-wordmark-text::after {
  content: "";
  display: block;
  width: 32px;
  height: 3px;
  background: var(--fnt-orange);
  margin: 12px 0 12px;
}
.fnt-footer-wordmark-sub {
  display: block;
  font-family: var(--fnt-font-heading);
  font-size: .78rem;
  letter-spacing: .03em;
  color: rgba(255,255,255,.55);
  line-height: 1.4;
  max-width: 280px;
}
.fnt-footer-tagline {
  font-size: .9rem;
  line-height: 1.6;
  color: rgba(255,255,255,.65);
  margin: 16px 0 0;
}

/* Listes (coordonnées + liens rapides) */
.fnt-footer-list,
.fnt-footer .fnt-footer-list,
.fnt-footer ul.fnt-footer-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.fnt-footer-list li,
.fnt-footer-list .menu-item {
  font-size: .92rem;
  line-height: 1.5;
  color: rgba(255,255,255,.7);
}
.fnt-footer-list a,
.fnt-footer-list .menu-item a {
  color: rgba(255,255,255,.7);
  text-decoration: none;
  transition: color .15s ease, padding-left .15s ease;
}
.fnt-footer-list a:hover,
.fnt-footer-list .menu-item a:hover {
  color: var(--fnt-orange);
  padding-left: 4px;
}
.fnt-footer-icon {
  vertical-align: -2px;
  margin-right: 4px;
  opacity: .6;
}

/* Newsletter */
.fnt-newsletter {
  display: flex;
  gap: 8px;
  margin-top: 12px;
}
.fnt-newsletter input[type="email"] {
  flex: 1;
  padding: 10px 14px;
  border: 1px solid rgba(255,255,255,.15);
  border-radius: 999px;
  background: rgba(255,255,255,.06);
  color: var(--fnt-white);
  font-size: .9rem;
}
.fnt-newsletter input[type="email"]::placeholder { color: rgba(255,255,255,.45); }
.fnt-newsletter input[type="email"]:focus {
  outline: none;
  border-color: var(--fnt-orange);
  background: rgba(255,255,255,.1);
}
.fnt-newsletter .fnt-btn {
  padding: 10px 18px;
  font-size: .85rem;
  white-space: nowrap;
}
.fnt-footer-feedback {
  margin-top: 12px;
  font-size: .85rem;
}
.fnt-footer-feedback-ok  { color: #6BE26B; }
.fnt-footer-feedback-err { color: #FF8A80; }

/* Socials */
.fnt-socials {
  display: flex;
  gap: 8px;
  margin-top: 20px;
}
.fnt-socials a {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,.08);
  color: rgba(255,255,255,.85);
  transition: background .15s ease, color .15s ease, transform .15s ease;
}
.fnt-socials a:hover {
  background: var(--fnt-orange);
  color: var(--fnt-white);
  transform: translateY(-2px);
}

/* Footer bottom strip */
.fnt-footer-bottom {
  padding: 16px 24px;
  background: #050505;
}
.fnt-footer-bottom-inner {
  max-width: 1280px;
  margin: 0 auto;
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  font-size: .82rem;
  color: rgba(255,255,255,.5);
}
.fnt-footer-bottom-inner p { margin: 0; }
.fnt-footer-credits { display: flex; gap: 10px; align-items: center; }
.fnt-footer-credits a {
  color: rgba(255,255,255,.5);
  text-decoration: none;
  transition: color .15s ease;
}
.fnt-footer-credits a:hover { color: var(--fnt-orange); }
.fnt-footer-credits span { opacity: .4; }

/* Responsive */
@media (max-width: 980px) {
  .fnt-footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; }
}
@media (max-width: 600px) {
  .fnt-footer-grid { grid-template-columns: 1fr; gap: 32px; }
  .fnt-footer-main { padding: 48px 20px 32px; }
  .fnt-footer-bottom-inner { justify-content: center; text-align: center; }
}

/* Override Hello Elementor's default footer to avoid duplication */
.site-footer:not(.fnt-footer) { display: none; }

/* ============================================================
   CARTE INTERACTIVE (Leaflet)
   ============================================================ */
.fnt-map-wrap {
  margin-bottom: 32px;
  border-radius: var(--fnt-radius-md);
  overflow: hidden;
  box-shadow: var(--fnt-shadow-sm);
  border: 1px solid var(--fnt-border);
}
#fnt-map {
  width: 100%;
  height: 420px;
  background: var(--fnt-cream);
  z-index: 1;
}
@media (max-width: 600px) {
  #fnt-map { height: 320px; }
}

/* Custom orange pin (DivIcon) */
.fnt-marker {
  background: transparent !important;
  border: none !important;
}
.fnt-marker-pin {
  position: absolute;
  left: 0; top: 0;
  width: 28px; height: 36px;
  background:
    radial-gradient(circle at 50% 30%, var(--fnt-white) 0 4px, transparent 4px),
    linear-gradient(180deg, var(--fnt-orange) 0%, var(--fnt-orange-dark) 100%);
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 28 36'><path d='M14 36s12-13 12-22A12 12 0 1 0 2 14c0 9 12 22 12 22z'/></svg>") center/contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 28 36'><path d='M14 36s12-13 12-22A12 12 0 1 0 2 14c0 9 12 22 12 22z'/></svg>") center/contain no-repeat;
  filter: drop-shadow(0 3px 4px rgba(0,0,0,.25));
  transition: transform .15s ease;
}
.fnt-marker:hover .fnt-marker-pin {
  transform: translateY(-2px) scale(1.05);
}

/* Popup */
.fnt-popup-wrapper .leaflet-popup-content-wrapper {
  border-radius: var(--fnt-radius-md);
  padding: 0;
  overflow: hidden;
}
.fnt-popup-wrapper .leaflet-popup-content {
  margin: 0;
  width: 260px !important;
}
.fnt-popup-wrapper .leaflet-popup-tip { background: var(--fnt-white); }
.fnt-popup-media {
  aspect-ratio: 16 / 9;
  background: var(--fnt-cream);
  overflow: hidden;
}
.fnt-popup-media img { width: 100%; height: 100%; object-fit: cover; }
.fnt-popup-body { padding: 14px 16px 16px; }
.fnt-popup-cat {
  display: inline-block;
  font-size: .7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--fnt-orange);
  margin-bottom: 4px;
}
.fnt-popup-title {
  font-family: var(--fnt-font-heading);
  font-size: 1.05rem;
  margin: 0 0 6px;
  line-height: 1.2;
}
.fnt-popup-title a { color: var(--fnt-dark); text-decoration: none; }
.fnt-popup-title a:hover { color: var(--fnt-orange); }
.fnt-popup-city {
  font-size: .85rem;
  color: var(--fnt-muted);
  margin: 0 0 12px;
}
.fnt-popup-btn { padding: 8px 14px; font-size: .85rem; width: 100%; justify-content: center; }


