/* ═══════════════════════════════════════════════════════════════════════════
   FRBTP Guyane — Main CSS
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Reset & Base ────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { font-size: 16px; scroll-behavior: smooth; }

body {
  font-family: var(--font-sans);
  font-size: var(--font-size-md);
  color: var(--frbtp-text);
  background: var(--frbtp-white);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

img, video { max-width: 100%; height: auto; display: block; }
a { color: var(--frbtp-primary); text-decoration: none; }
a:hover { text-decoration: underline; }
ul, ol { list-style: none; }

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  font-weight: 700;
  line-height: 1.2;
  color: var(--frbtp-secondary);
}

/* ── Layout ──────────────────────────────────────────────────────────────── */
.frbtp-container {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-6);
}
.frbtp-container--narrow { max-width: var(--container-narrow); }
.frbtp-container--centered { display: flex; justify-content: center; }

/* ── Grid ────────────────────────────────────────────────────────────────── */
.frbtp-grid { display: grid; gap: var(--space-6); }
.frbtp-grid--3 { grid-template-columns: repeat(3, 1fr); }
.frbtp-grid--4 { grid-template-columns: repeat(4, 1fr); }

@media (max-width: 1199px) {
  .frbtp-grid--3 { grid-template-columns: repeat(2, 1fr); }
  .frbtp-grid--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767px) {
  .frbtp-grid--3,
  .frbtp-grid--4 { grid-template-columns: 1fr; }
  .frbtp-container { padding: 0 var(--space-4); }
}

/* ── Sections ────────────────────────────────────────────────────────────── */
.frbtp-section {
  padding: var(--space-16) 0;
}
.frbtp-section--alt { background: var(--frbtp-gray-50); }
.frbtp-section--dark {
  background: var(--frbtp-dark);
  color: var(--frbtp-white);
}
.frbtp-section--dark h1,
.frbtp-section--dark h2,
.frbtp-section--dark h3 { color: var(--frbtp-white); }
.frbtp-section--accent { background: linear-gradient(135deg, var(--accent-orange) 0%, var(--accent-orange-dark) 100%); color: var(--frbtp-white); }

.frbtp-section__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--space-8);
  flex-wrap: wrap;
  gap: var(--space-3);
}
.frbtp-section__title { font-size: var(--font-size-3xl); }
.frbtp-section__title--light { color: var(--frbtp-white); }
.frbtp-section__eyebrow {
  display: block;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: var(--font-size-xs);
  font-weight: 600;
  color: var(--frbtp-accent);
  margin-bottom: var(--space-2);
}
.frbtp-section__cta {
  text-align: center;
  margin-top: var(--space-10);
  display: flex;
  align-items: center;
  gap: var(--space-4);
  justify-content: center;
  flex-wrap: wrap;
}
.frbtp-link-more {
  font-size: var(--font-size-sm);
  font-weight: 600;
  color: var(--frbtp-primary);
  white-space: nowrap;
}
.frbtp-link-more:hover { text-decoration: none; color: var(--frbtp-primary-dark); }

/* ── Buttons ─────────────────────────────────────────────────────────────── */
.frbtp-btn {
  position: relative;
  isolation: isolate;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-6);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-cta)) 0, 100% var(--chamfer-cta), 100% 100%, 0 100%);
  border-radius: 0;
  font-family: var(--font-sans);
  font-size: var(--font-size-md);
  font-weight: 600;
  cursor: pointer;
  border: 2px solid transparent;
  transition: all var(--transition);
  text-decoration: none;
  white-space: nowrap;
}
.frbtp-btn:hover { text-decoration: none; transform: translateY(-1px); box-shadow: var(--shadow-md); }
.frbtp-btn:active { transform: translateY(0); }
.frbtp-btn:disabled, .frbtp-btn[disabled] { opacity: 0.5; cursor: not-allowed; transform: none; }

.frbtp-btn--primary   { background: var(--accent-orange);   color: #fff; border-color: var(--accent-orange); }
.frbtp-btn--primary:hover { background: var(--accent-orange-dark); border-color: var(--accent-orange-dark); color: #fff; }
.frbtp-btn--secondary { background: var(--orange-fill); color: #fff; border-color: var(--orange-fill); }
.frbtp-btn--secondary:hover { background: var(--orange-text); border-color: var(--orange-text); color: #fff; }
.frbtp-btn--outline   { background: transparent; color: var(--orange-text); border-color: var(--orange-fill); }
.frbtp-btn--outline:hover { background: var(--orange-fill); color: #fff; }
.frbtp-btn--outline.frbtp-btn--light { color: #fff; border-color: #fff; }
.frbtp-btn--outline.frbtp-btn--light:hover { background: #fff; color: var(--frbtp-primary); }
.frbtp-btn--ghost     { background: transparent; color: var(--frbtp-text); border-color: var(--frbtp-gray-200); }
.frbtp-btn--ghost:hover { background: var(--frbtp-gray-50); }
.frbtp-btn--danger    { background: var(--frbtp-danger); color: #fff; border-color: var(--frbtp-danger); }
.frbtp-btn--sm  { padding: var(--space-2) var(--space-4); font-size: var(--font-size-sm); }
.frbtp-btn--lg  { padding: var(--space-4) var(--space-8); font-size: var(--font-size-lg); }
.frbtp-btn--full { width: 100%; }
.frbtp-btn--cta {
  background: var(--cta-bg); color: #fff; border-color: var(--accent-orange);
  padding: var(--space-4) var(--space-8); font-size: var(--font-size-lg);
}
.frbtp-btn--cta:hover { background: var(--cta-hover); border-color: var(--accent-orange-dark); color: #fff; }

/* Nav CTA styles moved to header section below */

/* ═══════════════════════════════════════════════════════════════════════════
   Bordure vivante - chamfer généralisé + trace "serpent" au survol (VAGUE 4)
   Règle transverse (voir TOKENS.md "Bordure vivante") : tout élément
   cliquable (bouton, CTA, carte) porte le chamfer coin haut-droit et une
   fine trace animée lente au survol pour signaler l'affordance. Défini une
   seule fois ici et branché sur les classes hôtes existantes : aucune
   modification de markup requise dans les templates.
   ═══════════════════════════════════════════════════════════════════════════ */
@property --frbtp-angle {
  syntax: '<angle>';
  initial-value: 0deg;
  inherits: false;
}

.frbtp-chamfer     { clip-path: polygon(0 0, calc(100% - var(--chamfer-cta)) 0, 100% var(--chamfer-cta), 100% 100%, 0 100%); }
.frbtp-chamfer-sm  { clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%); }

.frbtp-btn,
.frbtp-btn-cta-nav,
.frbtp-card,
.card,
.post-card,
.membre-card,
.entreprise-card,
.offre-card,
.annonce-card,
.frbtp-v2f-card,
.frbtp-pricing-card,
.frbtp-formule-card__inner,
.frbtp-type-card__inner,
.frbtp-type-card,
.frbtp-emploi-card,
.frbtp-marche-card,
.frbtp-immo-card,
.frbtp-actu-card,
.frbtp-document-card,
.frbtp-membre-card,
.frbtp-entreprise-card,
.frbtp-annonceur-type-card,
.frbtp-post-nav__link {
  position: relative;
  isolation: isolate;
}

.frbtp-btn::after,
.frbtp-btn-cta-nav::after,
.frbtp-card::after,
.card::after,
.post-card::after,
.membre-card::after,
.entreprise-card::after,
.offre-card::after,
.annonce-card::after,
.frbtp-v2f-card::after,
.frbtp-pricing-card::after,
.frbtp-formule-card__inner::after,
.frbtp-type-card__inner::after,
.frbtp-type-card::after,
.frbtp-emploi-card::after,
.frbtp-marche-card::after,
.frbtp-immo-card::after,
.frbtp-actu-card::after,
.frbtp-document-card::after,
.frbtp-membre-card::after,
.frbtp-entreprise-card::after,
.frbtp-annonceur-type-card::after,
.frbtp-post-nav__link::after {
  content: '';
  position: absolute;
  inset: 0;
  clip-path: inherit;
  padding: 2px;
  background: conic-gradient(from var(--frbtp-angle), transparent 0%, transparent 68%, var(--trace-color-1) 82%, var(--trace-color-2) 90%, transparent 100%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s var(--ease);
  animation: frbtp-trace-rotate var(--trace-duration) linear infinite;
  animation-play-state: paused;
  z-index: 5;
}

.frbtp-btn:hover::after,
.frbtp-btn:focus-visible::after,
.frbtp-btn-cta-nav:hover::after,
.frbtp-btn-cta-nav:focus-visible::after,
.frbtp-card:hover::after,
.card:hover::after,
.post-card:hover::after,
.membre-card:hover::after,
.entreprise-card:hover::after,
.offre-card:hover::after,
.annonce-card:hover::after,
.frbtp-v2f-card:hover::after,
.frbtp-pricing-card:hover::after,
.frbtp-formule-card__inner:hover::after,
.frbtp-type-card__inner:hover::after,
.frbtp-type-card:hover::after,
.frbtp-emploi-card:hover::after,
.frbtp-marche-card:hover::after,
.frbtp-immo-card:hover::after,
.frbtp-actu-card:hover::after,
.frbtp-document-card:hover::after,
.frbtp-membre-card:hover::after,
.frbtp-entreprise-card:hover::after,
.frbtp-annonceur-type-card:hover::after,
.frbtp-post-nav__link:hover::after {
  opacity: 1;
  animation-play-state: running;
}

@keyframes frbtp-trace-rotate {
  to { --frbtp-angle: 360deg; }
}

@media (prefers-reduced-motion: reduce) {
  .frbtp-btn::after,
  .frbtp-btn-cta-nav::after,
  .frbtp-card::after,
  .card::after,
  .post-card::after,
  .membre-card::after,
  .entreprise-card::after,
  .offre-card::after,
  .annonce-card::after,
  .frbtp-v2f-card::after,
  .frbtp-pricing-card::after,
  .frbtp-formule-card__inner::after,
  .frbtp-type-card__inner::after,
  .frbtp-type-card::after,
  .frbtp-emploi-card::after,
  .frbtp-marche-card::after,
  .frbtp-immo-card::after,
  .frbtp-actu-card::after,
  .frbtp-document-card::after,
  .frbtp-membre-card::after,
  .frbtp-entreprise-card::after,
  .frbtp-annonceur-type-card::after,
  .frbtp-post-nav__link::after {
    animation: none;
  }
}

/* ── Badges ──────────────────────────────────────────────────────────────── */
.frbtp-badge {
  display: inline-flex;
  align-items: center;
  padding: 2px var(--space-3);
  border-radius: var(--radius-full);
  font-size: var(--font-size-xs);
  font-weight: 600;
  line-height: 1.4;
}
.frbtp-badge--success    { background: #D1F2DF; color: var(--accent-green-dark); }
.frbtp-badge--warning    { background: #FEF0D5; color: #7a5a0a; }
.frbtp-badge--danger     { background: #F8D7DA; color: #842029; }
.frbtp-badge--info       { background: #D0E0F5; color: #022e6b; }
.frbtp-badge--muted      { background: var(--frbtp-gray-100); color: var(--frbtp-gray-600); }
.frbtp-badge--outline    { background: transparent; color: var(--frbtp-primary); border: 1px solid var(--frbtp-primary); }

/* ── Alerts ──────────────────────────────────────────────────────────────── */
.frbtp-alert {
  padding: var(--space-4) var(--space-5);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  margin-bottom: var(--space-5);
  font-size: var(--font-size-sm);
}
.frbtp-alert--success { background: #D1F2DF; color: #0D6B33; border-left: 4px solid #119447; }
.frbtp-alert--warning { background: #FEF0D5; color: #7a5a0a; border-left: 4px solid #f39719; }
.frbtp-alert--danger  { background: #F8D7DA; color: #842029; border-left: 4px solid #DC3545; }
.frbtp-alert--info    { background: #D0E0F5; color: #022e6b; border-left: 4px solid #04449b; }

/* ── Hero ────────────────────────────────────────────────────────────────── */
.frbtp-hero--full {
  position: relative;
  overflow: hidden;
  min-height: 70vh;
  display: flex;
  align-items: center;
}
.frbtp-hero-media {
  position: absolute; inset: 0;
  z-index: 0;
}
.frbtp-hero-media img,
.frbtp-hero-media video {
  width: 100%; height: 100%; object-fit: cover; position: absolute; top: 0; left: 0;
}
.frbtp-hero-overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  display: flex;
  align-items: center;
  padding: var(--space-20) 0;
  background: linear-gradient(135deg, var(--hero-overlay-start) 0%, var(--hero-overlay-end) 100%);
}
.frbtp-hero__title {
  font-size: var(--font-size-5xl);
  color: #fff;
  max-width: 700px;
  line-height: 1.1;
  margin-bottom: var(--space-4);
}
.frbtp-hero__subtitle {
  font-size: var(--font-size-xl);
  color: rgba(255,255,255,.85);
  max-width: 560px;
  margin-bottom: var(--space-8);
}
.frbtp-hero__actions { display: flex; gap: var(--space-4); flex-wrap: wrap; }

/* Variante hero sans média (pages institutionnelles type Contact, Qui sommes-nous) */
.frbtp-hero--gradient {
  position: relative;
  display: flex;
  align-items: center;
  background: linear-gradient(135deg, var(--hero-overlay-start) 0%, var(--hero-overlay-end) 100%);
}
.frbtp-hero--small { min-height: 320px; }
.frbtp-hero__content { padding: var(--space-12) 0; }

@media (max-width: 767px) {
  .frbtp-hero--full { min-height: 50vh; }
  .frbtp-hero__title { font-size: var(--font-size-3xl); }
  .frbtp-hero__subtitle { font-size: var(--font-size-md); }
  /* Mobile : cacher la video (3 MB), afficher le poster (12 KB) */
  .frbtp-hero-video { display: none; }
  .frbtp-hero-media {
    background: url('/wp-content/themes/frbtp-theme/assets/img/hero-poster.jpg') center / cover no-repeat;
  }
}

/* ── Stats bar ───────────────────────────────────────────────────────────── */
.frbtp-stats-bar {
  background: var(--frbtp-dark);
  padding: var(--space-6) 0;
}
.frbtp-stats-bar__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-4);
}
.frbtp-stat-item {
  text-align: center;
  color: #fff;
  padding: var(--space-4);
  border-right: 1px solid rgba(255,255,255,.15);
}
.frbtp-stat-item:last-child { border-right: none; }
.frbtp-stat-item__number { display: block; font-family: var(--font-display); font-size: var(--font-size-3xl); font-weight: 800; color: var(--frbtp-accent); }
.frbtp-stat-item__label  { font-size: var(--font-size-sm); opacity: .75; }

@media (max-width: 767px) {
  .frbtp-stats-bar__grid { grid-template-columns: repeat(2, 1fr); }
  .frbtp-stat-item { border-right: none; border-bottom: 1px solid rgba(255,255,255,.15); }
  .frbtp-stat-item:nth-child(2n) { border-right: none; }
}

/* ── Cards ───────────────────────────────────────────────────────────────── */
.frbtp-card {
  background: var(--frbtp-white);
  border: 1px solid var(--line);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: box-shadow var(--transition), transform var(--transition);
}
.frbtp-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); }
.frbtp-card__media { overflow: hidden; aspect-ratio: 16/9; }
.frbtp-card__img   { width: 100%; height: 100%; object-fit: cover; transition: transform var(--transition-slow); }
.frbtp-card:hover .frbtp-card__img { transform: scale(1.05); }
.frbtp-card__body  { padding: var(--space-5); flex: 1; }
.frbtp-card__meta  { font-size: var(--font-size-xs); color: var(--frbtp-text-muted); margin-bottom: var(--space-2); }
.frbtp-card__title { font-size: var(--font-size-lg); margin-bottom: var(--space-3); }
.frbtp-card__title a { color: var(--frbtp-secondary); }
.frbtp-card__title a:hover { color: var(--frbtp-primary); text-decoration: none; }
.frbtp-card__excerpt { font-size: var(--font-size-sm); color: var(--frbtp-text-muted); }
.frbtp-card__footer { padding: var(--space-4) var(--space-5); border-top: 1px solid var(--frbtp-gray-100); }

/* ── Emploi cards (Indeed-style) ─────────────────────────────────────────── */
.frbtp-emploi-list { display: flex; flex-direction: column; gap: var(--space-4); }
.frbtp-emploi-card {
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
  padding: var(--space-5);
  background: var(--frbtp-white);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--frbtp-gray-100);
  transition: box-shadow var(--transition), border-color var(--transition);
  position: relative;
}
.frbtp-emploi-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--frbtp-primary);
}
.frbtp-emploi-card--urgent {
  border-left: 4px solid #dc2626;
}

/* Logo */
.frbtp-emploi-card__logo {
  flex-shrink: 0;
  width: 64px; height: 64px;
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  overflow: hidden;
  border: 1px solid var(--frbtp-gray-100);
  background: #f8fafc;
}
.frbtp-emploi-card__logo img { width: 100%; height: 100%; object-fit: contain; }
.frbtp-emploi-card__logo-placeholder {
  width: 100%; height: 100%;
  background: linear-gradient(135deg, var(--frbtp-primary), var(--frbtp-secondary));
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-family: var(--font-display); font-size: var(--font-size-lg); font-weight: 700;
  letter-spacing: 1px;
}

/* Content (center) */
.frbtp-emploi-card__content { flex: 1; min-width: 0; }
.frbtp-emploi-card__title { font-size: var(--font-size-lg); margin-bottom: var(--space-1); line-height: 1.3; }
.frbtp-emploi-card__title a { color: var(--frbtp-secondary); text-decoration: none; }
.frbtp-emploi-card__title a:hover { color: var(--frbtp-primary); text-decoration: underline; }

.frbtp-emploi-card__company-line {
  display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center;
  font-size: var(--font-size-sm); color: var(--frbtp-text-muted); margin-bottom: var(--space-2);
}
.frbtp-emploi-card__company { font-weight: 600; color: var(--frbtp-text); }
.frbtp-emploi-card__location {
  display: inline-flex; align-items: center; gap: 3px;
}
.frbtp-emploi-card__location svg { color: var(--frbtp-text-muted); }

/* Badges row */
.frbtp-emploi-card__badges {
  display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center;
  margin-bottom: var(--space-2);
}
.frbtp-badge--contrat {
  background: #e0f2fe; color: #0369a1;
  font-size: var(--font-size-xs); font-weight: 600;
  padding: 2px 10px; border-radius: 999px;
}
.frbtp-badge--urgent {
  background: #fef2f2; color: #dc2626;
  font-size: var(--font-size-xs); font-weight: 700;
  padding: 2px 10px; border-radius: 999px;
  animation: frbtp-pulse-urgent 2s ease-in-out infinite;
}
@keyframes frbtp-pulse-urgent {
  0%, 100% { opacity: 1; }
  50% { opacity: .6; }
}
.frbtp-badge--teletravail {
  background: #f0fdf4; color: #15803d;
  font-size: var(--font-size-xs); font-weight: 600;
  padding: 2px 10px; border-radius: 999px;
  display: inline-flex; align-items: center; gap: 3px;
}
.frbtp-badge--teletravail svg { color: #15803d; }
.frbtp-badge--experience {
  background: #fefce8; color: #a16207;
  font-size: var(--font-size-xs); font-weight: 600;
  padding: 2px 10px; border-radius: 999px;
}
.frbtp-badge--diplome {
  background: #faf5ff; color: #7e22ce;
  font-size: var(--font-size-xs); font-weight: 600;
  padding: 2px 10px; border-radius: 999px;
}

/* Salary */
.frbtp-emploi-card__salary {
  font-size: var(--font-size-md); font-weight: 700;
  color: #15803d; margin-bottom: var(--space-2);
}

/* Excerpt */
.frbtp-emploi-card__excerpt {
  font-size: var(--font-size-sm); color: var(--frbtp-text-muted);
  line-height: 1.5; margin: 0;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}

/* Aside (right column) */
.frbtp-emploi-card__aside {
  flex-shrink: 0;
  display: flex; flex-direction: column; align-items: flex-end;
  gap: var(--space-3);
  min-width: 130px;
}
.frbtp-emploi-card__posted {
  font-size: var(--font-size-xs); color: var(--frbtp-text-muted);
  white-space: nowrap;
}

/* Responsive */
@media (max-width: 767px) {
  .frbtp-emploi-card { flex-wrap: wrap; }
  .frbtp-emploi-card__aside {
    width: 100%; flex-direction: row; justify-content: space-between; align-items: center;
    min-width: 0; border-top: 1px solid var(--frbtp-gray-100); padding-top: var(--space-3); margin-top: var(--space-2);
  }
  .frbtp-emploi-card__aside .frbtp-btn { flex: 1; text-align: center; }
}

/* ── KPI / Chiffres clés ─────────────────────────────────────────────────── */
.frbtp-kpi-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-4); margin: var(--space-8) 0; }
.frbtp-kpi { text-align: center; }
.frbtp-kpi--card { background: rgba(255,255,255,.1); clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%); padding: var(--space-5); }
.frbtp-kpi__value { display: block; font-family: var(--font-display); font-size: var(--font-size-3xl); font-weight: 800; color: var(--frbtp-accent); }
.frbtp-kpi__label { font-size: var(--font-size-sm); opacity: .8; margin-top: var(--space-1); display: block; }
.frbtp-kpi__trend { font-size: var(--font-size-xl); font-weight: 700; }
.frbtp-kpi__trend--up    { color: var(--frbtp-success); }
.frbtp-kpi__trend--down  { color: var(--frbtp-danger); }
.frbtp-kpi__trend--stable { color: var(--frbtp-gray-400); }
@media (max-width: 767px) { .frbtp-kpi-grid { grid-template-columns: repeat(2, 1fr); } }

/* ── Membres logos slider ────────────────────────────────────────────────── */
.frbtp-membres-slider {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-6);
  justify-content: center;
  align-items: center;
  padding: var(--space-8) 0;
}
.frbtp-membre-logo {
  width: 120px; height: 60px;
  display: flex; align-items: center; justify-content: center;
  opacity: 0.7;
  transition: opacity var(--transition);
  filter: grayscale(30%);
}
.frbtp-membre-logo:hover { opacity: 1; filter: none; }
.frbtp-membre-logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.frbtp-membre-logo__text {
  font-family: var(--font-display); font-size: var(--font-size-2xl); font-weight: 800;
  color: var(--frbtp-primary); text-transform: uppercase;
  width: 60px; height: 60px; clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  background: var(--frbtp-gray-100);
  display: flex; align-items: center; justify-content: center;
}

/* ── Newsletter ──────────────────────────────────────────────────────────── */
.frbtp-newsletter-block { text-align: center; }
.frbtp-newsletter-block h2 { margin-bottom: var(--space-4); }
.frbtp-newsletter-block p  { margin-bottom: var(--space-6); opacity: .85; }
.frbtp-newsletter-form .frbtp-newsletter-fields {
  display: flex;
  gap: var(--space-3);
  max-width: 480px;
  margin: 0 auto var(--space-3);
}
.frbtp-newsletter-consent { font-size: var(--font-size-xs); opacity: .65; max-width: 400px; margin: 0 auto; }
.frbtp-newsletter-msg { min-height: 1.4em; font-size: var(--font-size-sm); font-weight: 600; }
.frbtp-newsletter-msg.success { color: var(--frbtp-success); }
.frbtp-newsletter-msg.error   { color: var(--frbtp-danger); }

@media (max-width: 767px) {
  .frbtp-newsletter-form .frbtp-newsletter-fields { flex-direction: column; }
}

/* ── Form elements ───────────────────────────────────────────────────────── */
.frbtp-input,
.frbtp-select,
.frbtp-textarea {
  width: 100%;
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--frbtp-gray-200);
  border-radius: var(--radius-sm);
  font-family: var(--font-sans);
  font-size: var(--font-size-md);
  color: var(--frbtp-text);
  background: var(--frbtp-white);
  transition: border-color var(--transition), box-shadow var(--transition);
  outline: none;
  -webkit-appearance: none;
}
.frbtp-input:focus,
.frbtp-select:focus,
.frbtp-textarea:focus {
  border-color: var(--frbtp-primary);
  box-shadow: 0 0 0 3px rgba(4, 68, 155, .15);
}
.frbtp-select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23757575' d='M7.247 11.14L2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right .75rem center; background-size: 12px; padding-right: 2.25rem; }
.frbtp-textarea { min-height: 120px; resize: vertical; }
.frbtp-select--sm { font-size: var(--font-size-sm); padding: var(--space-2) var(--space-4); }

.frbtp-form__group { display: flex; flex-direction: column; gap: var(--space-2); margin-bottom: var(--space-5); }
.frbtp-form__group label { font-weight: 600; font-size: var(--font-size-sm); }
.frbtp-form__group small { font-size: var(--font-size-xs); color: var(--frbtp-text-muted); }
.frbtp-form__row--2col { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); }
.frbtp-form__checkbox { display: flex; justify-content: space-between; align-items: center; font-size: var(--font-size-sm); margin-bottom: var(--space-5); }

/* ── Archive layout ──────────────────────────────────────────────────────── */
.frbtp-archive-hero {
  /* --frbtp-secondary n'existe pas : resolvait transparent (texte blanc
     invisible sur 6 templates). Surface sombre = bleu de marque (TOKENS). */
  background: var(--frbtp-dark);
  padding: var(--space-12) 0;
  color: white;
  margin-bottom: 0;
}
.frbtp-archive-hero h1 { color: #fff; font-size: var(--font-size-4xl); margin-bottom: var(--space-2); }
.frbtp-archive-hero p  { opacity: .75; font-size: var(--font-size-lg); }
.frbtp-archive-hero--no-bg { background: transparent; color: var(--frbtp-text); padding-bottom: 0; }
.frbtp-archive-hero--no-bg h1 { color: var(--frbtp-secondary); }

.frbtp-archive-layout {
  display: grid;
  grid-template-columns: var(--sidebar-width) 1fr;
  gap: var(--space-8);
  padding: var(--space-8) 0;
}
.frbtp-archive-count { font-size: var(--font-size-sm); color: var(--frbtp-text-muted); margin-bottom: var(--space-5); }

/* ── Filters sidebar ─────────────────────────────────────────────────────── */
.frbtp-filters__title { font-size: var(--font-size-lg); margin-bottom: var(--space-5); }
.frbtp-filter-group { margin-bottom: var(--space-5); }
.frbtp-filter-group label { display: block; font-weight: 600; font-size: var(--font-size-sm); margin-bottom: var(--space-2); }
.frbtp-filters__pub { margin-top: var(--space-6); }
.frbtp-filter-form .frbtp-btn { margin-top: var(--space-2); }

@media (max-width: 1199px) {
  .frbtp-archive-layout { grid-template-columns: 240px 1fr; }
}
@media (max-width: 767px) {
  .frbtp-archive-layout { grid-template-columns: 1fr; }
  .frbtp-filters { order: 2; }
  .frbtp-archive-results { order: 1; }
}

/* ── Encarts publicitaires ───────────────────────────────────────────────── */
.frbtp-pub-leaderboard, .frbtp-pub-inline { padding: var(--space-4) 0; background: var(--frbtp-gray-50); text-align: center; }
.frbtp-encart { display: inline-block; overflow: hidden; clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%); }
.frbtp-encart img, .frbtp-encart video { display: block; }
.frbtp-encart--placeholder {
  background: linear-gradient(135deg, var(--frbtp-gray-100), var(--frbtp-gray-200));
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  border: 2px dashed var(--frbtp-gray-400); clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
}
.frbtp-encart--placeholder a { text-decoration: none; color: var(--frbtp-text-muted); text-align: center; }
.frbtp-encart--placeholder span { font-weight: 600; font-size: var(--font-size-sm); }
.frbtp-encart--placeholder small { font-size: var(--font-size-xs); opacity: .6; }

/* ── Baromètre ───────────────────────────────────────────────────────────── */
.frbtp-barometre-layout { display: grid; grid-template-columns: 220px 1fr; gap: var(--space-8); padding: var(--space-8) 0; }
.frbtp-barometre-list h2 { font-size: var(--font-size-lg); margin-bottom: var(--space-4); }
.frbtp-barometre-list ul { display: flex; flex-direction: column; gap: var(--space-2); }
.frbtp-barometre-list li a { display: block; padding: var(--space-3) var(--space-4); clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%); border: 1px solid var(--frbtp-gray-100); transition: all var(--transition); }
.frbtp-barometre-list li a:hover { border-color: var(--frbtp-primary); text-decoration: none; }
.frbtp-barometre-list li.active a { background: var(--frbtp-primary); color: #fff; border-color: var(--frbtp-primary); }
.frbtp-barometre-list li.active a strong,
.frbtp-barometre-list li.active a small { color: #fff; }
.frbtp-barometre-list li a strong { display: block; font-size: var(--font-size-sm); color: var(--frbtp-text); }
.frbtp-barometre-list li a small { font-size: var(--font-size-xs); color: var(--frbtp-text-muted); }
.frbtp-barometre-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-6); flex-wrap: wrap; gap: var(--space-3); }
.frbtp-kpi-grid--lg { grid-template-columns: repeat(4, 1fr); }
.frbtp-pdf-viewer { margin-top: var(--space-8); text-align: center; }
.frbtp-pdf-viewer canvas { max-width: 100%; border: 1px solid var(--frbtp-gray-200); box-shadow: var(--shadow-md); }
.frbtp-pdf-controls { display: flex; align-items: center; justify-content: center; gap: var(--space-4); margin-top: var(--space-4); font-size: var(--font-size-sm); }

@media (max-width: 767px) { .frbtp-barometre-layout { grid-template-columns: 1fr; } }

/* ── Pagination ──────────────────────────────────────────────────────────── */
.frbtp-pagination { margin-top: var(--space-8); }
.frbtp-pagination ul { display: flex; gap: var(--space-2); justify-content: center; flex-wrap: wrap; }
.frbtp-pagination li a {
  display: flex; align-items: center; justify-content: center;
  width: 36px; height: 36px;
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  border: 1px solid var(--frbtp-gray-200);
  font-size: var(--font-size-sm); font-weight: 600;
  color: var(--frbtp-text);
  transition: all var(--transition);
}
.frbtp-pagination li a:hover { border-color: var(--frbtp-primary); color: var(--frbtp-primary); text-decoration: none; }
.frbtp-pagination li.active a { background: var(--frbtp-primary); border-color: var(--frbtp-primary); color: #fff; }

/* ── Empty state ─────────────────────────────────────────────────────────── */
.frbtp-empty-state {
  text-align: center;
  padding: var(--space-16) var(--space-8);
  color: var(--frbtp-text-muted);
}

/* ── Placeholder ─────────────────────────────────────────────────────────── */
.frbtp-placeholder-image {
  background: linear-gradient(135deg, #2C3E50, #34495E);
  display: flex; align-items: center; justify-content: center;
  color: rgba(255,255,255,.4);
  font-size: var(--font-size-sm);
  font-weight: 500;
  letter-spacing: 0.05em;
}

/* ── Prose ───────────────────────────────────────────────────────────────── */
.frbtp-prose { line-height: 1.75; max-width: 72ch; }
.frbtp-prose h2 { font-size: var(--font-size-2xl); margin: var(--space-8) 0 var(--space-3); }
.frbtp-prose h3 { font-size: var(--font-size-xl); margin: var(--space-6) 0 var(--space-3); }
.frbtp-prose p  { margin-bottom: var(--space-4); }
.frbtp-prose ul, .frbtp-prose ol { padding-left: var(--space-6); margin-bottom: var(--space-4); }
.frbtp-prose ul { list-style: disc; }
.frbtp-prose ol { list-style: decimal; }

/* ── Utility ─────────────────────────────────────────────────────────────── */
.frbtp-hidden { display: none !important; }
.frbtp-link-muted { color: var(--frbtp-text-muted); font-size: var(--font-size-sm); }
.frbtp-link-muted:hover { color: var(--frbtp-danger); }
.frbtp-payment-note { font-size: var(--font-size-xs); color: var(--frbtp-text-muted); text-align: center; margin-top: var(--space-3); display: flex; align-items: center; gap: var(--space-2); justify-content: center; }
.frbtp-danger-zone { border: 1px solid var(--frbtp-danger); clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%); padding: var(--space-6); margin-top: var(--space-8); }
.frbtp-danger-zone h2 { color: var(--frbtp-danger); margin-bottom: var(--space-3); }
.frbtp-form__section { margin-bottom: var(--space-8); padding-bottom: var(--space-8); border-bottom: 1px solid var(--frbtp-gray-100); }
.frbtp-form__section h2 { font-size: var(--font-size-xl); margin-bottom: var(--space-5); }

@media (max-width: 767px) {
  .frbtp-form__row--2col { grid-template-columns: 1fr; }
  .frbtp-section { padding: var(--space-10) 0; }
  .frbtp-hero__title { font-size: var(--font-size-2xl); }
}

/* ── Emploi card enriched elements ──────────────────────────────────────── */
.frbtp-emploi-card__salary {
  display: inline-flex; align-items: center; gap: 4px;
  font-weight: 700; font-size: var(--font-size-sm);
  color: var(--accent-green-dark);
  margin-top: var(--space-2);
}
.frbtp-emploi-card__salary svg { flex-shrink: 0; color: var(--accent-green); }
.frbtp-emploi-card__excerpt {
  font-size: var(--font-size-sm); color: var(--frbtp-text-muted);
  margin-top: var(--space-2); line-height: 1.5;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.frbtp-emploi-card__footer {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: var(--space-3); padding-top: var(--space-3);
  border-top: 1px solid var(--frbtp-gray-100);
  gap: var(--space-2); flex-wrap: wrap;
}
.frbtp-emploi-card__date {
  font-size: var(--font-size-xs); color: var(--frbtp-text-muted);
}
.frbtp-badge--urgent {
  background: var(--frbtp-danger); color: #fff; font-weight: 700;
  animation: frbtp-pulse 2s infinite;
}
@keyframes frbtp-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: .7; }
}
.frbtp-badge--primary { background: var(--frbtp-primary); color: #fff; }
.frbtp-badge--teletravail { background: #e8f5e9; color: #2e7d32; }
.frbtp-badge--experience { background: #fff3e0; color: #e65100; }
.frbtp-badge--diplome { background: #e3f2fd; color: #1565c0; }

/* ── DPE energy badges ─────────────────────────────────────────────────── */
.frbtp-dpe { display: inline-flex; align-items: center; gap: 4px; font-size: var(--font-size-xs); font-weight: 700; }
.frbtp-dpe__letter {
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 22px; border-radius: 3px; color: #fff; font-size: 13px;
}
.frbtp-dpe--A .frbtp-dpe__letter { background: #319834; }
.frbtp-dpe--B .frbtp-dpe__letter { background: #33a357; }
.frbtp-dpe--C .frbtp-dpe__letter { background: #a3c838; }
.frbtp-dpe--D .frbtp-dpe__letter { background: #f2e500; color: #333; }
.frbtp-dpe--E .frbtp-dpe__letter { background: #f0b400; }
.frbtp-dpe--F .frbtp-dpe__letter { background: #eb6a09; }
.frbtp-dpe--G .frbtp-dpe__letter { background: #e5251b; }
.frbtp-dpe__label { font-size: var(--font-size-xs); color: var(--frbtp-text-muted); font-weight: 400; }

/* ── Immo card enriched (BienIci style) ───────────────────────────────── */
.frbtp-immo-card__dpe {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: var(--font-size-xs); color: var(--frbtp-gray-600);
  background: var(--frbtp-gray-50);
  padding: 3px 8px; border-radius: var(--radius-sm);
  border-left: 3px solid var(--dpe-color);
}
.frbtp-immo-card__dpe strong {
  color: var(--dpe-color); font-size: var(--font-size-sm);
}
.frbtp-immo-card__agency {
  font-size: var(--font-size-xs); color: var(--frbtp-text-muted);
  text-align: right; overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; max-width: 55%;
}
.frbtp-badge--vente { background: #e67e22; color: #fff; }
.frbtp-badge--location { background: #2980b9; color: #fff; }

/* ── Marché card enriched ──────────────────────────────────────────────── */
.frbtp-marche-card__budget {
  display: flex; align-items: center; gap: var(--space-2);
  font-size: var(--font-size-sm); font-weight: 600;
  color: var(--frbtp-secondary); margin: var(--space-2) 0;
}
.frbtp-marche-card__budget svg { color: var(--accent-orange); flex-shrink: 0; }
.frbtp-countdown {
  display: inline-flex; align-items: center; gap: 4px;
  font-weight: 700; font-size: var(--font-size-sm);
  padding: 2px 10px; border-radius: 999px;
}
.frbtp-countdown--green, .frbtp-countdown--ok { background: #e8f5e9; color: #2e7d32; }
.frbtp-countdown--orange, .frbtp-countdown--warning { background: #fff3e0; color: #e65100; }
.frbtp-countdown--red, .frbtp-countdown--danger { background: #fce4ec; color: #c62828; }
.frbtp-countdown--expired { background: var(--frbtp-gray-100); color: var(--frbtp-text-muted); text-decoration: line-through; }

/* ── Membre card enriched ──────────────────────────────────────────────── */
.frbtp-membre-card__description {
  font-size: var(--font-size-sm); color: var(--frbtp-text-muted);
  line-height: 1.5; margin-bottom: var(--space-3);
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
  text-align: left;
}
.frbtp-membre-card__stats {
  display: flex; gap: var(--space-3); justify-content: center;
  margin-bottom: var(--space-3); flex-wrap: wrap;
}
.frbtp-membre-card__stat {
  text-align: center; font-size: var(--font-size-xs); color: var(--frbtp-text-muted);
}
.frbtp-membre-card__stat strong {
  display: block; font-size: var(--font-size-base); color: var(--frbtp-secondary); font-weight: 700;
}
.frbtp-membre-card__certs {
  display: flex; flex-wrap: wrap; gap: 4px; justify-content: center;
  margin-bottom: var(--space-2);
}
.frbtp-badge--cert { background: #e8f5e9; color: #1b5e20; font-size: 10px; padding: 1px 6px; }
.frbtp-membre-card__specialties {
  display: flex; flex-wrap: wrap; gap: 4px; justify-content: center;
  margin-bottom: var(--space-2);
}
.frbtp-tag {
  display: inline-block; padding: 2px 8px; border-radius: 999px;
  font-size: var(--font-size-xs); font-weight: 500;
  background: rgba(4,68,155,.08); color: var(--frbtp-primary);
}
.frbtp-membre-card__rse {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: var(--font-size-xs); color: var(--accent-green-dark);
  font-weight: 600;
}

/* ── Badge gold (niveau sponsor / mise en avant - définition canonique
      unique, VAGUE 4 : supprime le doublon contradictoire plus bas dans ce
      fichier qui rendait un gradient hors-charte et gagnait la cascade) ─── */
.frbtp-badge--gold {
  background: rgba(243,151,25,.14);
  color: var(--orange-text);
  border: 1px solid rgba(243,151,25,.45);
  font-weight: 700;
}

/* ── Breadcrumb ──────────────────────────────────────────────────────────── */
.frbtp-breadcrumb {
  display: flex; align-items: center; gap: var(--space-2);
  font-size: var(--font-size-sm); color: var(--frbtp-text-muted);
  padding: var(--space-4) 0 var(--space-6);
}
.frbtp-breadcrumb a { color: var(--frbtp-text-muted); }
.frbtp-breadcrumb a:hover { color: var(--frbtp-primary); text-decoration: none; }

/* ══════════════════════════════════════════════════════════════════════════
   MARCHÉS PUBLICS
   ══════════════════════════════════════════════════════════════════════════ */

.frbtp-marche-list { display: flex; flex-direction: column; gap: var(--space-4); }

.frbtp-marche-card {
  background: var(--frbtp-white);
  border: 1px solid var(--frbtp-gray-200);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  padding: var(--space-5);
  transition: box-shadow var(--transition), border-color var(--transition);
}
.frbtp-marche-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--frbtp-gray-300);
}

.frbtp-marche-card__header {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--space-3); margin-bottom: var(--space-2);
  flex-wrap: wrap;
}
.frbtp-marche-card__badges { display: flex; gap: var(--space-2); flex-wrap: wrap; }
.frbtp-marche-card__ref {
  font-size: var(--font-size-xs); color: var(--frbtp-text-muted);
  font-family: var(--font-mono, monospace);
}

.frbtp-marche-card__title {
  font-size: var(--font-size-lg); margin-bottom: var(--space-2);
}
.frbtp-marche-card__title a { color: var(--frbtp-secondary); }
.frbtp-marche-card__title a:hover { color: var(--frbtp-primary); text-decoration: none; }

.frbtp-marche-card__meta {
  display: flex; gap: var(--space-4); flex-wrap: wrap;
  font-size: var(--font-size-sm); color: var(--frbtp-text-muted);
  margin-bottom: var(--space-3);
}
.frbtp-marche-card__meta > span { display: flex; align-items: center; gap: var(--space-1); }
.frbtp-marche-card__deadline--urgent { color: #b7770d; font-weight: 600; }
.frbtp-marche-card__deadline--expired { color: var(--frbtp-text-muted); text-decoration: line-through; }

.frbtp-marche-card__excerpt {
  font-size: var(--font-size-sm); color: var(--frbtp-text-muted);
  margin-bottom: var(--space-3);
}

.frbtp-marche-card__actions { display: flex; gap: var(--space-3); flex-wrap: wrap; }

/* ══════════════════════════════════════════════════════════════════════════
   ANNONCES IMMOBILIÈRES
   ══════════════════════════════════════════════════════════════════════════ */

.frbtp-immo-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-6);
}
@media (max-width: 1199px) { .frbtp-immo-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 767px)  { .frbtp-immo-grid { grid-template-columns: 1fr; } }

/* -- BienIci-style property cards ---------------------------------------- */
.frbtp-immo-card {
  background: var(--frbtp-white);
  border: 1px solid var(--line);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  overflow: hidden;
  transition: box-shadow var(--transition), transform var(--transition);
  box-shadow: var(--shadow-sm);
  display: flex; flex-direction: column;
}
.frbtp-immo-card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-3px);
}

/* Image area */
.frbtp-immo-card__image-link {
  position: relative; display: block; overflow: hidden;
}
.frbtp-immo-card__image {
  width: 100%; height: 220px; object-fit: cover;
  transition: transform .3s ease;
}
.frbtp-immo-card:hover .frbtp-immo-card__image { transform: scale(1.04); }

.frbtp-immo-card__image-placeholder {
  width: 100%; height: 220px;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: var(--space-2);
  color: rgba(255,255,255,.55);
}
.frbtp-immo-card__placeholder-label {
  font-size: var(--font-size-sm); font-weight: 600;
  text-transform: uppercase; letter-spacing: .06em;
  color: rgba(255,255,255,.7);
}

/* Transaction badge (top-left overlay) */
.frbtp-immo-card__tx-badge {
  position: absolute; top: var(--space-3); left: var(--space-3);
  padding: 4px 12px; border-radius: var(--radius-full);
  font-size: var(--font-size-xs); font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em;
  color: #fff; line-height: 1.4;
}
.frbtp-immo-card__tx-badge--vente   { background: #e67e22; }
.frbtp-immo-card__tx-badge--location { background: #2980b9; }

/* Photo count pill (bottom-right overlay) */
.frbtp-immo-card__photo-count {
  position: absolute; bottom: var(--space-3); right: var(--space-3);
  display: inline-flex; align-items: center; gap: 4px;
  background: rgba(0,0,0,.6); color: #fff;
  font-size: var(--font-size-xs); font-weight: 600;
  padding: 3px 10px; border-radius: var(--radius-full);
}

/* Card body */
.frbtp-immo-card__body {
  padding: var(--space-4) var(--space-5) var(--space-5);
  display: flex; flex-direction: column; flex: 1;
}

/* Price */
.frbtp-immo-card__price {
  font-family: var(--font-display);
  font-size: var(--font-size-2xl); font-weight: 800;
  color: var(--frbtp-secondary); line-height: 1.2;
  margin-bottom: 2px;
}
.frbtp-immo-card__currency { font-weight: 700; }
.frbtp-immo-card__price-period {
  font-size: var(--font-size-sm); font-weight: 400;
  color: var(--frbtp-text-muted);
}

/* Property type label */
.frbtp-immo-card__type-bien {
  font-size: var(--font-size-xs); font-weight: 600;
  text-transform: uppercase; letter-spacing: .05em;
  color: var(--frbtp-primary); margin-bottom: var(--space-1);
}

/* Title */
.frbtp-immo-card__title {
  font-size: var(--font-size-md); font-weight: 600;
  line-height: 1.35; margin-bottom: var(--space-1);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}
.frbtp-immo-card__title a { color: var(--frbtp-secondary); text-decoration: none; }
.frbtp-immo-card__title a:hover { color: var(--frbtp-primary); }

/* Location */
.frbtp-immo-card__location {
  display: flex; align-items: center; gap: 4px;
  font-size: var(--font-size-sm); color: var(--frbtp-text-muted);
  margin-bottom: var(--space-3);
}
.frbtp-immo-card__location svg { flex-shrink: 0; color: var(--frbtp-primary); }

/* Specs row (pieces / surface / chambres) */
.frbtp-immo-card__specs {
  display: flex; flex-wrap: wrap; gap: var(--space-1);
  align-items: center;
  padding: var(--space-3) 0;
  border-top: 1px solid var(--frbtp-gray-100);
  border-bottom: 1px solid var(--frbtp-gray-100);
  margin-bottom: var(--space-3);
}
.frbtp-immo-card__spec {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: var(--font-size-sm); color: var(--frbtp-gray-800);
  font-weight: 500; white-space: nowrap;
}
.frbtp-immo-card__spec svg { color: var(--frbtp-gray-600); }
.frbtp-immo-card__spec + .frbtp-immo-card__spec::before {
  content: '\00b7'; margin-right: var(--space-1);
  color: var(--frbtp-gray-400); font-weight: 700; font-size: 1.2em;
}

/* Footer: DPE + agency */
.frbtp-immo-card__footer {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--space-2); margin-top: auto;
}

/* ══════════════════════════════════════════════════════════════════════════
   MEMBRES
   ══════════════════════════════════════════════════════════════════════════ */

.frbtp-membres-filters {
  display: flex; gap: var(--space-3); flex-wrap: wrap;
  align-items: flex-end;
  padding: var(--space-4) 0 var(--space-6);
  border-bottom: 1px solid var(--frbtp-gray-100);
  margin-bottom: var(--space-4);
}
.frbtp-membres-filters .frbtp-filter-group { flex: 1; min-width: 180px; }
.frbtp-membres-filters .frbtp-filter-group input,
.frbtp-membres-filters .frbtp-filter-group select { margin: 0; }

.frbtp-membres-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-5);
  margin-top: var(--space-4);
}
@media (max-width: 1199px) { .frbtp-membres-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 767px)  { .frbtp-membres-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px)  { .frbtp-membres-grid { grid-template-columns: 1fr; } }

.frbtp-membre-card {
  background: var(--frbtp-white);
  border: 1px solid var(--frbtp-gray-200);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  padding: var(--space-4);
  display: flex; flex-direction: column;
  text-align: center;
  transition: box-shadow var(--transition);
}
.frbtp-membre-card--sponsor { border-color: rgba(243,151,25,.4); box-shadow: 0 0 0 1px rgba(243,151,25,.2); }
.frbtp-membre-card--premium { border-color: rgba(4,68,155,.3); }
.frbtp-membre-card:hover { box-shadow: var(--shadow-md); }

.frbtp-membre-card__header { margin-bottom: var(--space-3); }

.frbtp-membre-card__logo {
  width: 80px; height: 80px; margin: 0 auto var(--space-3);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  overflow: hidden;
}
.frbtp-membre-card__logo img { width: 100%; height: 100%; object-fit: contain; }
.frbtp-membre-card__logo-placeholder {
  width: 80px; height: 80px;
  background: linear-gradient(135deg, var(--frbtp-secondary), #34495e);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  display: flex; align-items: center; justify-content: center;
  font-size: var(--font-size-xl); font-weight: 700;
  color: rgba(255,255,255,.8);
}

.frbtp-membre-card__body { flex: 1; }
.frbtp-membre-card__name {
  font-size: var(--font-size-base); margin-bottom: var(--space-2);
  color: var(--frbtp-secondary);
}
.frbtp-membre-card__secteurs { display: flex; flex-wrap: wrap; gap: 4px; justify-content: center; margin-bottom: var(--space-2); }
.frbtp-membre-card__contact,
.frbtp-membre-card__since {
  font-size: var(--font-size-xs); color: var(--frbtp-text-muted);
  margin-top: var(--space-1);
  display: flex; align-items: center; justify-content: center; gap: 4px;
}

.frbtp-membre-card__footer {
  display: flex; gap: var(--space-2); justify-content: center;
  margin-top: var(--space-4); padding-top: var(--space-4);
  border-top: 1px solid var(--frbtp-gray-100);
}

/* ══════════════════════════════════════════════════════════════════════════
   DOCUMENTATION
   ══════════════════════════════════════════════════════════════════════════ */

.frbtp-filters__subtitle {
  font-size: var(--font-size-sm); font-weight: 600;
  color: var(--frbtp-text-muted); text-transform: uppercase;
  letter-spacing: 0.06em; margin-bottom: var(--space-3);
}
.frbtp-filters__cat-list { display: flex; flex-direction: column; gap: var(--space-1); }
.frbtp-filters__cat-link {
  display: flex; align-items: center; justify-content: space-between;
  padding: var(--space-2) var(--space-3);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  font-size: var(--font-size-sm); color: var(--frbtp-text);
  transition: background var(--transition);
}
.frbtp-filters__cat-link:hover,
.frbtp-filters__cat-link--active {
  background: var(--frbtp-gray-50); color: var(--frbtp-primary);
  text-decoration: none;
}
.frbtp-filters__cat-count {
  font-size: var(--font-size-xs); color: var(--frbtp-text-muted);
  background: var(--frbtp-gray-100); border-radius: 999px;
  padding: 1px 7px;
}

.frbtp-document-list { display: flex; flex-direction: column; gap: var(--space-4); }

.frbtp-document-card {
  background: var(--frbtp-white);
  border: 1px solid var(--frbtp-gray-200);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  padding: var(--space-5);
  display: flex; gap: var(--space-4); align-items: flex-start;
  transition: box-shadow var(--transition), border-color var(--transition);
}
.frbtp-document-card:hover { box-shadow: var(--shadow-md); border-color: var(--frbtp-gray-300); }

.frbtp-document-card__icon {
  flex-shrink: 0;
  width: 48px; height: 48px;
  background: rgba(4,68,155,.08);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  display: flex; align-items: center; justify-content: center;
  color: var(--frbtp-primary);
}

.frbtp-document-card__content { flex: 1; min-width: 0; }
.frbtp-document-card__meta-top {
  display: flex; gap: var(--space-2); align-items: center;
  flex-wrap: wrap; margin-bottom: var(--space-2);
}
.frbtp-document-card__date { font-size: var(--font-size-xs); color: var(--frbtp-text-muted); }

.frbtp-document-card__title {
  font-size: var(--font-size-lg); margin-bottom: var(--space-2);
}
.frbtp-document-card__title a { color: var(--frbtp-secondary); }
.frbtp-document-card__title a:hover { color: var(--frbtp-primary); text-decoration: none; }

.frbtp-document-card__excerpt,
.frbtp-document-card__source {
  font-size: var(--font-size-sm); color: var(--frbtp-text-muted);
  margin-top: var(--space-1);
}

.frbtp-document-card__actions {
  flex-shrink: 0;
  display: flex; flex-direction: column; gap: var(--space-2);
}

@media (max-width: 767px) {
  .frbtp-document-card { flex-direction: column; }
  .frbtp-document-card__actions { flex-direction: row; }
}

/* ══════════════════════════════════════════════════════════════════════════
   SINGLE EMPLOI
   ══════════════════════════════════════════════════════════════════════════ */

.frbtp-single-layout {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: var(--space-10);
  align-items: start;
  padding-bottom: var(--space-16);
}
@media (max-width: 1023px) {
  .frbtp-single-layout {
    grid-template-columns: 1fr;
  }
  .frbtp-single-sidebar { order: -1; }
}

/* Emploi header */
.frbtp-emploi-header {
  display: flex; gap: var(--space-5);
  padding: var(--space-6);
  background: var(--frbtp-gray-50);
  border: 1px solid var(--frbtp-gray-200);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  margin-bottom: var(--space-8);
}
.frbtp-emploi-header__logo {
  flex-shrink: 0;
  width: 80px; height: 80px;
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  overflow: hidden;
  background: var(--frbtp-white);
  border: 1px solid var(--frbtp-gray-200);
}
.frbtp-emploi-header__logo img { width: 100%; height: 100%; object-fit: contain; }
.frbtp-emploi-header__logo-placeholder {
  width: 80px; height: 80px;
  background: linear-gradient(135deg, var(--frbtp-secondary), #34495e);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  display: flex; align-items: center; justify-content: center;
  font-size: var(--font-size-xl); font-weight: 700;
  color: rgba(255,255,255,.8);
}
.frbtp-emploi-header__title { font-size: var(--font-size-2xl); margin-bottom: var(--space-1); }
.frbtp-emploi-header__company { color: var(--frbtp-text-muted); margin-bottom: var(--space-3); }
.frbtp-emploi-header__badges { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-3); }
.frbtp-emploi-header__meta {
  display: flex; flex-wrap: wrap; gap: var(--space-4);
  font-size: var(--font-size-sm); color: var(--frbtp-text-muted);
}
.frbtp-emploi-header__meta li { display: flex; align-items: center; gap: var(--space-1); }

@media (max-width: 767px) {
  .frbtp-emploi-header { flex-direction: column; }
  .frbtp-emploi-header__logo { width: 64px; height: 64px; }
}

/* Apply section */
.frbtp-emploi-apply {
  background: linear-gradient(135deg, rgba(4,68,155,.04), rgba(4,68,155,.08));
  border: 1px solid rgba(4,68,155,.2);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  padding: var(--space-8);
  text-align: center;
  margin: var(--space-10) 0;
}
.frbtp-emploi-apply__title { font-size: var(--font-size-2xl); margin-bottom: var(--space-2); }
.frbtp-emploi-apply__subtitle { color: var(--frbtp-text-muted); margin-bottom: var(--space-6); }
.frbtp-emploi-apply__disclaimer { font-size: var(--font-size-xs); color: var(--frbtp-text-muted); margin-top: var(--space-3); }

/* Share */
.frbtp-share {
  padding-top: var(--space-8);
  border-top: 1px solid var(--frbtp-gray-100);
}
.frbtp-share__title { font-size: var(--font-size-base); margin-bottom: var(--space-3); }
.frbtp-share__buttons { display: flex; gap: var(--space-3); flex-wrap: wrap; }

/* Sidebar cards */
.frbtp-single-sidebar { display: flex; flex-direction: column; gap: var(--space-6); }

.frbtp-sidebar-card {
  background: var(--frbtp-white);
  border: 1px solid var(--frbtp-gray-200);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  padding: var(--space-5);
  position: sticky;
  top: var(--space-6);
}
.frbtp-sidebar-card + .frbtp-sidebar-card { position: static; }

.frbtp-sidebar-card--cta {
  background: var(--frbtp-dark);
  border-color: transparent;
  color: var(--frbtp-white);
  text-align: center;
}
.frbtp-sidebar-card--cta .frbtp-btn--primary { background: var(--frbtp-primary); }
.frbtp-sidebar-card__urgency {
  margin-top: var(--space-3); font-size: var(--font-size-sm);
  color: var(--frbtp-accent);
  font-weight: 600;
}
.frbtp-sidebar-card__deadline {
  margin-top: var(--space-3); font-size: var(--font-size-sm);
  color: rgba(255,255,255,.7);
}

.frbtp-sidebar-card__title {
  font-size: var(--font-size-base); margin-bottom: var(--space-4);
}

.frbtp-sidebar-card__dl {
  display: grid; grid-template-columns: auto 1fr;
  gap: var(--space-2) var(--space-3);
  font-size: var(--font-size-sm);
}
.frbtp-sidebar-card__dl dt { color: var(--frbtp-text-muted); font-weight: 500; white-space: nowrap; }
.frbtp-sidebar-card__dl dd { color: var(--frbtp-text); font-weight: 600; word-break: break-word; }

.frbtp-sidebar-card--pub { border: none; padding: 0; background: transparent; }

/* Similar jobs */
.frbtp-similar-list { display: flex; flex-direction: column; gap: 1px; }
.frbtp-similar-item {
  border-bottom: 1px solid var(--frbtp-gray-100);
  padding: var(--space-2) 0;
}
.frbtp-similar-item:last-child { border-bottom: none; }
.frbtp-similar-item__link {
  display: flex; flex-direction: column; gap: 2px;
  color: var(--frbtp-text);
}
.frbtp-similar-item__link:hover { text-decoration: none; }
.frbtp-similar-item__link:hover .frbtp-similar-item__title { color: var(--frbtp-primary); }
.frbtp-similar-item__title { font-size: var(--font-size-sm); font-weight: 600; }
.frbtp-similar-item__sub { font-size: var(--font-size-xs); color: var(--frbtp-text-muted); }

/* ── Header ───────────────────────────────────────────────────────────── */
.frbtp-header {
  position: sticky; top: 0; z-index: 1000;
  background: rgba(255,255,255,.97);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--frbtp-border);
  box-shadow: 0 1px 3px rgba(0,0,0,.06);
}
.frbtp-header__inner {
  display: flex; align-items: center; justify-content: space-between;
  height: 90px; max-width: 1400px; margin: 0 auto; padding: 0 20px;
  gap: 12px;
}
.frbtp-header__logo img { height: 76px; width: auto; max-width: 340px; object-fit: contain; }
.frbtp-header__nav > ul,
.frbtp-header__nav ul.frbtp-nav-list {
  /* gap resserre (2rem -> 0.75rem) : 2 CTA dans la nav depuis 2026-07-23,
     sinon debordement horizontal a 1440px. */
  display: flex; gap: 0.75rem; list-style: none; margin: 0; padding: 0; align-items: center;
}
.frbtp-header__nav a {
  padding: 8px 14px; clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  font-size: 0.875rem; font-weight: 500;
  color: var(--frbtp-text); transition: all .2s;
  white-space: nowrap; text-decoration: none;
}
.frbtp-header__nav a:hover {
  background: rgba(4,68,155,.06); color: var(--frbtp-primary);
  text-decoration: none;
}

/* ── Dropdown "Opportunités" ───────────────────────────────────────────── */
.frbtp-nav-dropdown {
  position: relative;
}
.frbtp-nav-dropdown__trigger {
  display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
}
.frbtp-nav-dropdown__trigger svg {
  transition: transform .2s;
}
.frbtp-nav-dropdown:hover .frbtp-nav-dropdown__trigger svg,
.frbtp-nav-dropdown.frbtp-nav-dropdown--open .frbtp-nav-dropdown__trigger svg {
  transform: rotate(180deg);
}
.frbtp-nav-dropdown__menu {
  display: flex; /* keep flex but invisible until hover */
  position: absolute; top: calc(100% + 8px); left: 50%; transform: translateX(-50%) translateY(-4px);
  background: #fff;
  border: 1px solid var(--frbtp-gray-100);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  filter: drop-shadow(0 12px 24px rgba(22,32,46,.16));
  padding: 8px;
  min-width: 220px;
  flex-direction: column;
  gap: 2px;
  z-index: 100;
  visibility: hidden;
  opacity: 0;
  /* delay disparition pour permettre de cliquer dessus */
  transition: visibility 0s linear .25s, opacity .18s linear .15s, transform .18s ease .15s;
}
.frbtp-nav-dropdown:hover .frbtp-nav-dropdown__menu,
.frbtp-nav-dropdown:focus-within .frbtp-nav-dropdown__menu,
.frbtp-nav-dropdown.frbtp-nav-dropdown--open .frbtp-nav-dropdown__menu {
  visibility: visible;
  opacity: 1;
  transform: translateX(-50%) translateY(0);
  transition: visibility 0s linear 0s, opacity .18s linear 0s, transform .18s ease 0s;
}
/* Bridge invisible pour éviter que le menu disparaisse en passant le gap */
.frbtp-nav-dropdown::after {
  content: ''; position: absolute; top: 100%; left: -10px; right: -10px; height: 16px;
  pointer-events: none;
}
.frbtp-nav-dropdown:hover::after { pointer-events: auto; }

/* === Sub-menu support pour fallback nav .menu-item-has-children + .sub-menu === */
.frbtp-header__nav .menu-item-has-children {
  position: relative;
}
.frbtp-header__nav .menu-item-has-children::after {
  content: ''; position: absolute; top: 100%; left: -10px; right: -10px; height: 16px;
  pointer-events: none;
}
.frbtp-header__nav .menu-item-has-children:hover::after { pointer-events: auto; }
.frbtp-header__nav .sub-menu {
  display: flex;
  flex-direction: column;
  gap: 2px;
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  background: #fff;
  border: 1px solid var(--frbtp-gray-100);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  filter: drop-shadow(0 12px 24px rgba(22,32,46,.16));
  padding: 8px;
  min-width: 220px;
  list-style: none;
  margin: 0;
  z-index: 100;
  visibility: hidden;
  opacity: 0;
  transform: translateY(-4px);
  transition: visibility 0s linear .25s, opacity .18s linear .15s, transform .18s ease .15s;
}
.frbtp-header__nav .menu-item-has-children:hover > .sub-menu,
.frbtp-header__nav .menu-item-has-children:focus-within > .sub-menu {
  visibility: visible;
  opacity: 1;
  transform: translateY(0);
  transition: visibility 0s linear 0s, opacity .18s linear 0s, transform .18s ease 0s;
}
.frbtp-header__nav .sub-menu li {
  list-style: none;
  margin: 0;
}
.frbtp-header__nav .sub-menu a {
  display: block;
  padding: 10px 14px;
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  font-size: 0.875rem;
  color: var(--frbtp-text);
  white-space: nowrap;
  text-decoration: none;
}
.frbtp-header__nav .sub-menu a:hover {
  background: var(--frbtp-gray-50);
  color: var(--frbtp-primary);
}
.frbtp-header__nav .menu-item-has-children > a {
  display: inline-flex; align-items: center; gap: 6px;
}
.frbtp-header__nav .menu-item-has-children > a::after {
  content: '▾'; font-size: 0.7em; opacity: 0.6; transition: transform .2s;
}
.frbtp-header__nav .menu-item-has-children:hover > a::after {
  transform: rotate(180deg);
}
.frbtp-nav-dropdown__menu li {
  list-style: none;
}
.frbtp-nav-dropdown__menu a {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px; clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  font-size: 0.875rem; font-weight: 500;
  color: var(--frbtp-text); transition: all .15s;
}
.frbtp-nav-dropdown__menu a:hover {
  background: var(--frbtp-gray-50); color: var(--frbtp-primary);
}
.frbtp-nav-dropdown__icon {
  font-size: 1.1rem; flex-shrink: 0; width: 24px; text-align: center;
}

/* Nav CTA "Espace adhérent" : le style vit dans vague-1a.css sur
   .frbtp-btn-cta-nav (classe portée par le lien lui-même dans header.php).
   L'ancien bloc ici (résidu pré-refonte "Espace annonceur", pill
   border-radius:full en !important) gagnait quand même la cascade sur le
   bouton du header malgré sa spécificité plus faible, à cause des
   !important - c'était le bug de bordure incohérente du point 4 (VAGUE 4,
   2026-07-23). Supprimé : plus aucune règle !important ne doit gouverner
   ce CTA. */

.frbtp-header__toggle {
  display: none; flex-direction: column; gap: 5px;
  background: none; border: none; cursor: pointer; padding: 8px;
}
.frbtp-header__toggle span {
  display: block; width: 24px; height: 2px;
  background: var(--frbtp-text); transition: all .3s;
}
@media (max-width: 991px) {
  .frbtp-header__toggle { display: flex; }
  .frbtp-header__nav {
    display: none; position: absolute; top: 80px; left: 0; right: 0;
    background: #fff; border-bottom: 1px solid var(--frbtp-border);
    box-shadow: 0 8px 24px rgba(0,0,0,.1); padding: 16px;
  }
  .frbtp-header--open .frbtp-header__nav { display: block; }
  .frbtp-header__nav > ul,
  .frbtp-header__nav ul.frbtp-nav-list { flex-direction: column; gap: 4px; }
  .frbtp-header__nav a { display: block; padding: 12px 16px; }
  /* Dropdown mobile: always visible, no absolute positioning */
  .frbtp-nav-dropdown__menu {
    position: static; transform: none;
    display: flex !important; box-shadow: none; border: none;
    padding: 0 0 0 16px; min-width: auto; background: transparent;
  }
  .frbtp-nav-dropdown__trigger svg { display: none; }
}
.frbtp-header--scrolled {
  background: rgba(255,255,255,.99);
  box-shadow: 0 2px 8px rgba(0,0,0,.1);
}

/* ── Footer ───────────────────────────────────────────────────────────── */
.frbtp-footer {
  background: var(--frbtp-secondary); color: rgba(255,255,255,.8);
  padding: 60px 0 0; margin-top: 80px;
}
.frbtp-footer__grid {
  display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 48px;
  max-width: 1280px; margin: 0 auto; padding: 0 24px 48px;
}
.frbtp-footer__brand p {
  font-size: var(--font-size-sm); color: rgba(255,255,255,.6); line-height: 1.7;
}
.frbtp-footer__links h4 {
  font-size: var(--font-size-sm); font-weight: 700;
  text-transform: uppercase; letter-spacing: .08em;
  color: rgba(255,255,255,.5); margin-bottom: 16px;
}
.frbtp-footer__links ul { list-style: none; margin: 0; padding: 0; }
.frbtp-footer__links li { margin-bottom: 10px; }
.frbtp-footer__links a {
  color: rgba(255,255,255,.7); font-size: var(--font-size-sm); transition: color .2s;
}
.frbtp-footer__links a:hover { color: #fff; }
.frbtp-footer__bottom {
  border-top: 1px solid rgba(255,255,255,.1);
  padding: 20px 24px; text-align: center;
  max-width: 1280px; margin: 0 auto;
}
.frbtp-footer__bottom p {
  font-size: var(--font-size-xs); color: rgba(255,255,255,.4); margin: 0;
}
@media (max-width: 768px) {
  .frbtp-footer__grid { grid-template-columns: 1fr; gap: 32px; }
  .frbtp-footer { margin-top: 40px; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   BLOG / ACTUALITÉS
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Page Hero Blog ─────────────────────────────────────────────────────── */
.frbtp-page-hero--blog {
  /* var(--frbtp-secondary) n'existait pas -> gradient invalide (fond
     transparent, titre blanc illisible). Bleus de marque (TOKENS). */
  background: linear-gradient(135deg, var(--blue) 0%, var(--blue-deep) 100%);
  color: #fff;
  padding: var(--space-12) 0 var(--space-10);
  text-align: center;
}
.frbtp-page-hero__title {
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  color: #fff;
  margin-bottom: var(--space-3);
}
.frbtp-page-hero__subtitle {
  font-size: var(--font-size-lg);
  color: rgba(255,255,255,.75);
  max-width: 640px;
  margin: 0 auto;
  line-height: 1.6;
}

/* ── Actu Cards ─────────────────────────────────────────────────────────── */
.frbtp-actu-card {
  background: var(--frbtp-white);
  border: 1px solid var(--line);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: box-shadow var(--transition), transform var(--transition);
}
.frbtp-actu-card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-3px);
}
.frbtp-actu-card__link {
  display: flex;
  flex-direction: column;
  flex: 1;
  color: inherit;
  text-decoration: none;
}
.frbtp-actu-card__link:hover { text-decoration: none; }

.frbtp-actu-card__media {
  position: relative;
  overflow: hidden;
  aspect-ratio: 16/9;
  background: var(--frbtp-gray-50);
}
.frbtp-actu-card__img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform var(--transition-slow);
}
.frbtp-actu-card:hover .frbtp-actu-card__img {
  transform: scale(1.05);
}
.frbtp-actu-card__placeholder {
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 100%;
  background: linear-gradient(135deg, var(--frbtp-gray-50), var(--frbtp-gray-100));
}
.frbtp-actu-card__category {
  position: absolute;
  top: var(--space-3); left: var(--space-3);
  background: var(--frbtp-primary);
  color: #fff;
  font-size: var(--font-size-xs);
  font-weight: 600;
  padding: 2px 10px;
  border-radius: var(--radius-full);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.frbtp-actu-card__body {
  padding: var(--space-5);
  flex: 1;
  display: flex;
  flex-direction: column;
}
.frbtp-actu-card__meta {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--font-size-xs);
  color: var(--frbtp-text-muted);
  margin-bottom: var(--space-2);
}
.frbtp-actu-card__meta time,
.frbtp-actu-card__readtime {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.frbtp-actu-card__separator { color: var(--frbtp-gray-300); }

.frbtp-actu-card__title {
  font-size: var(--font-size-lg);
  font-weight: 700;
  color: var(--frbtp-secondary);
  margin-bottom: var(--space-2);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.3;
}
.frbtp-actu-card__excerpt {
  font-size: var(--font-size-sm);
  color: var(--frbtp-text-muted);
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.frbtp-actu-card__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-4) var(--space-5);
  border-top: 1px solid var(--frbtp-gray-100);
  font-size: var(--font-size-sm);
}
.frbtp-actu-card__author {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--frbtp-text-muted);
}
.frbtp-actu-card__avatar {
  border-radius: 50%;
  width: 24px; height: 24px;
}

.frbtp-link--arrow {
  font-weight: 600;
  color: var(--frbtp-primary);
  transition: gap var(--transition);
}
.frbtp-link--arrow::after {
  content: ' \2192';
  transition: margin-left var(--transition);
}
.frbtp-actu-card:hover .frbtp-link--arrow::after {
  margin-left: 4px;
}

/* ── Results count ──────────────────────────────────────────────────────── */
.frbtp-results-count {
  font-size: var(--font-size-sm);
  color: var(--frbtp-text-muted);
  margin-bottom: var(--space-4);
}

/* ── Empty state ────────────────────────────────────────────────────────── */
.frbtp-empty-state {
  text-align: center;
  padding: var(--space-16) var(--space-6);
}
.frbtp-empty-state h2 {
  font-size: var(--font-size-xl);
  margin: var(--space-4) 0 var(--space-2);
}
.frbtp-empty-state p {
  color: var(--frbtp-text-muted);
  margin-bottom: var(--space-6);
}

/* ── Single Post ────────────────────────────────────────────────────────── */
.frbtp-single-post__hero {
  background: linear-gradient(135deg, var(--blue) 0%, var(--blue-deep) 100%);
  padding: var(--space-12) 0 var(--space-10);
  text-align: center;
  color: #fff;
  position: relative;
  overflow: hidden;
}
.frbtp-single-post__hero--has-image {
  padding: var(--space-16) 0 var(--space-12);
}
.frbtp-single-post__hero-bg {
  position: absolute; inset: 0;
  background-size: cover;
  background-position: center;
  opacity: 0.2;
  filter: blur(2px);
}
.frbtp-single-post__hero-content {
  position: relative; z-index: 1;
}
.frbtp-single-post__cats {
  margin-bottom: var(--space-4);
  display: flex;
  justify-content: center;
  gap: var(--space-2);
}
.frbtp-badge--category {
  background: rgba(255,255,255,.2);
  color: #fff;
  padding: 4px 12px;
  border-radius: var(--radius-full);
  font-size: var(--font-size-xs);
  font-weight: 600;
  text-transform: uppercase;
  backdrop-filter: blur(4px);
}
.frbtp-badge--category:hover {
  background: rgba(255,255,255,.3);
  text-decoration: none;
  color: #fff;
}
.frbtp-single-post__title {
  font-size: clamp(1.5rem, 4vw, 2.5rem);
  color: #fff;
  max-width: 800px;
  margin: 0 auto var(--space-4);
  line-height: 1.25;
}
.frbtp-single-post__meta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  font-size: var(--font-size-sm);
  color: rgba(255,255,255,.75);
  flex-wrap: wrap;
}
.frbtp-single-post__meta-sep { opacity: 0.5; }
.frbtp-single-post__author-inline {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
.frbtp-single-post__avatar {
  border-radius: 50%;
  width: 32px; height: 32px;
  border: 2px solid rgba(255,255,255,.3);
}

/* ── Narrow container ───────────────────────────────────────────────────── */
.frbtp-container--narrow {
  max-width: 760px;
  margin: 0 auto;
  padding: var(--space-10) var(--space-6);
}

/* ── Prose (article content typography) ─────────────────────────────────── */
.frbtp-prose {
  font-size: var(--font-size-md);
  line-height: 1.8;
  color: var(--frbtp-text);
}
.frbtp-prose h2 {
  font-size: var(--font-size-2xl);
  margin-top: var(--space-10);
  margin-bottom: var(--space-4);
}
.frbtp-prose h3 {
  font-size: var(--font-size-xl);
  margin-top: var(--space-8);
  margin-bottom: var(--space-3);
}
.frbtp-prose p {
  margin-bottom: var(--space-4);
}
.frbtp-prose img {
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  margin: var(--space-6) 0;
}
.frbtp-prose blockquote {
  border-left: 4px solid var(--frbtp-primary);
  padding: var(--space-4) var(--space-6);
  margin: var(--space-6) 0;
  background: var(--frbtp-gray-50);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  font-style: italic;
  color: var(--frbtp-text-muted);
}
.frbtp-prose ul, .frbtp-prose ol {
  padding-left: var(--space-6);
  margin-bottom: var(--space-4);
}
.frbtp-prose ul { list-style: disc; }
.frbtp-prose ol { list-style: decimal; }
.frbtp-prose li {
  margin-bottom: var(--space-2);
}
.frbtp-prose a {
  color: var(--frbtp-primary);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.frbtp-prose pre {
  background: var(--frbtp-gray-900);
  color: #e2e8f0;
  padding: var(--space-5);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  overflow-x: auto;
  font-size: var(--font-size-sm);
  margin: var(--space-6) 0;
}
.frbtp-prose code {
  background: var(--frbtp-gray-100);
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  font-size: 0.9em;
}
.frbtp-prose pre code {
  background: none;
  padding: 0;
}

/* ── Tags ───────────────────────────────────────────────────────────────── */
.frbtp-single-post__tags {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  padding: var(--space-6) 0;
  border-top: 1px solid var(--frbtp-gray-100);
  margin-top: var(--space-6);
}

/* ── Share links ────────────────────────────────────────────────────────── */
.frbtp-share {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-5) 0;
  border-top: 1px solid var(--frbtp-gray-100);
}
.frbtp-share__label {
  font-size: var(--font-size-sm);
  font-weight: 600;
  color: var(--frbtp-text-muted);
  white-space: nowrap;
}
.frbtp-share__links {
  display: flex;
  gap: var(--space-2);
}
.frbtp-share__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px; height: 40px;
  border-radius: 50%;
  color: #fff;
  transition: transform var(--transition), opacity var(--transition);
}
.frbtp-share__btn:hover {
  transform: scale(1.1);
  text-decoration: none;
  opacity: 0.85;
}
.frbtp-share__btn--linkedin  { background: #0077b5; }
.frbtp-share__btn--twitter   { background: #1d9bf0; }
.frbtp-share__btn--facebook  { background: #1877f2; }
.frbtp-share__btn--email     { background: var(--frbtp-gray-600); }

/* ── Author Bio ─────────────────────────────────────────────────────────── */
.frbtp-author-bio {
  display: flex;
  gap: var(--space-5);
  align-items: flex-start;
  padding: var(--space-6);
  background: var(--frbtp-gray-50);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  border: 1px solid var(--frbtp-gray-100);
  margin-top: var(--space-6);
}
.frbtp-author-bio__img {
  border-radius: 50%;
  width: 80px; height: 80px;
  flex-shrink: 0;
}
.frbtp-author-bio__name {
  font-size: var(--font-size-lg);
  margin-bottom: var(--space-2);
}
.frbtp-author-bio__desc {
  font-size: var(--font-size-sm);
  color: var(--frbtp-text-muted);
  line-height: 1.6;
}

/* ── Post Navigation ────────────────────────────────────────────────────── */
.frbtp-post-nav {
  background: var(--frbtp-gray-50);
  border-top: 1px solid var(--frbtp-gray-100);
  border-bottom: 1px solid var(--frbtp-gray-100);
}
.frbtp-post-nav__inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
}
.frbtp-post-nav__item {
  padding: var(--space-6);
}
.frbtp-post-nav__item--next {
  text-align: right;
  border-left: 1px solid var(--frbtp-gray-100);
}
.frbtp-post-nav__item a {
  display: block;
  color: inherit;
  text-decoration: none;
}
.frbtp-post-nav__item a:hover { text-decoration: none; }
.frbtp-post-nav__item a:hover .frbtp-post-nav__title { color: var(--frbtp-primary); }
.frbtp-post-nav__label {
  font-size: var(--font-size-xs);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--frbtp-text-muted);
  font-weight: 600;
  display: block;
  margin-bottom: var(--space-1);
}
.frbtp-post-nav__title {
  font-size: var(--font-size-md);
  font-weight: 600;
  color: var(--frbtp-secondary);
  transition: color var(--transition);
}

/* ── Breadcrumb ─────────────────────────────────────────────────────────── */
.frbtp-breadcrumb {
  background: var(--frbtp-gray-50);
  border-bottom: 1px solid var(--frbtp-gray-100);
  padding: var(--space-3) 0;
}
.frbtp-breadcrumb__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--font-size-sm);
  color: var(--frbtp-text-muted);
}
.frbtp-breadcrumb__list li:not(:last-child)::after {
  content: '/';
  margin-left: var(--space-2);
  color: var(--frbtp-gray-300);
}
.frbtp-breadcrumb__list a {
  color: var(--frbtp-text-muted);
}
.frbtp-breadcrumb__list a:hover {
  color: var(--frbtp-primary);
}
.frbtp-breadcrumb__list li[aria-current="page"] {
  color: var(--frbtp-secondary);
  font-weight: 500;
}

/* ── Section light ──────────────────────────────────────────────────────── */
.frbtp-section--light {
  background: var(--frbtp-gray-50);
  padding: var(--space-12) 0;
}

/* ── Pagination ─────────────────────────────────────────────────────────── */
.frbtp-pagination {
  margin-top: var(--space-8);
  text-align: center;
}
.frbtp-pagination .page-numbers {
  display: inline-flex;
  gap: var(--space-1);
  list-style: none;
}
.frbtp-pagination .page-numbers li a,
.frbtp-pagination .page-numbers li span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px; height: 40px;
  padding: 0 var(--space-3);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  font-size: var(--font-size-sm);
  font-weight: 500;
  color: var(--frbtp-text-muted);
  border: 1px solid var(--frbtp-gray-200);
  background: var(--frbtp-white);
  transition: all var(--transition);
}
.frbtp-pagination .page-numbers li a:hover {
  border-color: var(--frbtp-primary);
  color: var(--frbtp-primary);
  text-decoration: none;
}
.frbtp-pagination .page-numbers li span.current {
  background: var(--frbtp-primary);
  color: #fff;
  border-color: var(--frbtp-primary);
}

/* ── Blog responsive ────────────────────────────────────────────────────── */
@media (max-width: 768px) {
  .frbtp-single-post__hero { padding: var(--space-8) 0 var(--space-6); }
  .frbtp-container--narrow { padding: var(--space-6) var(--space-4); }
  .frbtp-author-bio { flex-direction: column; align-items: center; text-align: center; }
  .frbtp-post-nav__inner { grid-template-columns: 1fr; }
  .frbtp-post-nav__item--next { border-left: none; border-top: 1px solid var(--frbtp-gray-100); }
  .frbtp-share { flex-direction: column; align-items: flex-start; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   CONTACT PAGE
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Contact Hero ──────────────────────────────────────────────────────── */
.frbtp-page-hero--contact {
  background: linear-gradient(135deg, var(--frbtp-primary) 0%, var(--frbtp-secondary) 100%);
  padding: var(--space-16) 0 var(--space-10);
  text-align: center;
  color: #fff;
}
.frbtp-page-hero--contact .frbtp-page-hero__title {
  font-size: var(--font-size-4xl);
  color: #fff;
  margin-bottom: var(--space-3);
}
.frbtp-page-hero--contact .frbtp-page-hero__subtitle {
  font-size: var(--font-size-lg);
  opacity: .85;
  max-width: 600px;
  margin: 0 auto;
}

/* ── Layout 2 colonnes ─────────────────────────────────────────────────── */
.frbtp-contact-layout {
  display: grid;
  grid-template-columns: 340px 1fr;
  gap: var(--space-10);
  align-items: start;
}

/* ── Sidebar Info Cards ────────────────────────────────────────────────── */
.frbtp-contact-info {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.frbtp-contact-info__card {
  background: var(--frbtp-gray-50);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  padding: var(--space-5);
  transition: box-shadow var(--transition);
}
.frbtp-contact-info__card:hover {
  box-shadow: var(--shadow-md);
}
.frbtp-contact-info__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px; height: 44px;
  border-radius: var(--radius-full);
  background: var(--frbtp-primary);
  color: #fff;
  margin-bottom: var(--space-3);
}
.frbtp-contact-info__card h3 {
  font-size: var(--font-size-md);
  font-weight: 700;
  margin-bottom: var(--space-2);
  color: var(--frbtp-secondary);
}
.frbtp-contact-info__card p {
  font-size: var(--font-size-sm);
  line-height: 1.6;
  color: var(--frbtp-text-muted);
}
.frbtp-contact-info__card a {
  color: var(--frbtp-primary);
  font-weight: 600;
}
.frbtp-contact-info__card a:hover {
  text-decoration: underline;
}
.frbtp-contact-info__hours {
  font-size: var(--font-size-xs);
  color: var(--frbtp-text-muted);
  margin-top: var(--space-1);
}
.frbtp-contact-info__socials {
  display: flex;
  gap: var(--space-3);
  margin-top: var(--space-2);
}
.frbtp-contact-info__socials a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  border-radius: var(--radius-full);
  background: var(--frbtp-primary);
  color: #fff;
  transition: background var(--transition), transform var(--transition);
}
.frbtp-contact-info__socials a:hover {
  background: var(--frbtp-primary-dark);
  transform: translateY(-2px);
  text-decoration: none;
}

/* ── Contact Form ──────────────────────────────────────────────────────── */
.frbtp-contact-form-wrap {
  background: #fff;
  border: 1px solid var(--frbtp-gray-100);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  padding: var(--space-8);
  box-shadow: var(--shadow-sm);
}
.frbtp-contact-form-wrap h2 {
  font-size: var(--font-size-2xl);
  color: var(--frbtp-secondary);
  margin-bottom: var(--space-2);
}
.frbtp-contact-form__intro {
  color: var(--frbtp-text-muted);
  margin-bottom: var(--space-6);
}
.frbtp-contact-form .frbtp-form-row--2col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
}
.frbtp-contact-form .frbtp-form-group {
  margin-bottom: var(--space-4);
}
.frbtp-contact-form label {
  display: block;
  font-size: var(--font-size-sm);
  font-weight: 600;
  color: var(--frbtp-secondary);
  margin-bottom: var(--space-1);
}
.frbtp-contact-form label .required {
  color: var(--frbtp-danger);
}
.frbtp-contact-form input[type="text"],
.frbtp-contact-form input[type="email"],
.frbtp-contact-form input[type="tel"],
.frbtp-contact-form select,
.frbtp-contact-form textarea {
  width: 100%;
  padding: var(--space-3) var(--space-4);
  font-size: var(--font-size-md);
  font-family: var(--font-sans);
  border: 1.5px solid var(--frbtp-gray-200);
  border-radius: var(--radius-sm);
  background: #fff;
  color: var(--frbtp-text);
  transition: border-color var(--transition), box-shadow var(--transition);
}
.frbtp-contact-form input:focus,
.frbtp-contact-form select:focus,
.frbtp-contact-form textarea:focus {
  outline: none;
  border-color: var(--frbtp-primary);
  box-shadow: 0 0 0 3px rgba(4,68,155,.12);
}
.frbtp-contact-form textarea {
  resize: vertical;
  min-height: 120px;
}
.frbtp-contact-form select {
  cursor: pointer;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236B7280' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  padding-right: 36px;
}
.frbtp-form-group--consent {
  margin-top: var(--space-2);
}
.frbtp-checkbox {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  font-size: var(--font-size-sm);
  color: var(--frbtp-text-muted);
  cursor: pointer;
}
.frbtp-checkbox input[type="checkbox"] {
  width: 18px; height: 18px;
  margin-top: 2px;
  accent-color: var(--frbtp-primary);
  flex-shrink: 0;
}
.frbtp-checkbox a {
  color: var(--frbtp-primary);
  text-decoration: underline;
}

/* ── Contact Map ───────────────────────────────────────────────────────── */
.frbtp-contact-map {
  margin-top: var(--space-10);
}
.frbtp-contact-map h3 {
  font-size: var(--font-size-xl);
  color: var(--frbtp-secondary);
  margin-bottom: var(--space-4);
}
.frbtp-contact-map__embed {
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}

/* ── Contact responsive ────────────────────────────────────────────────── */
@media (max-width: 991px) {
  .frbtp-contact-layout {
    grid-template-columns: 1fr;
    gap: var(--space-6);
  }
  .frbtp-contact-info {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-4);
  }
}
@media (max-width: 767px) {
  .frbtp-contact-info {
    grid-template-columns: 1fr;
  }
  .frbtp-contact-form-wrap {
    padding: var(--space-5);
  }
  .frbtp-contact-form .frbtp-form-row--2col {
    grid-template-columns: 1fr;
  }
  .frbtp-page-hero--contact {
    padding: var(--space-10) 0 var(--space-6);
  }
  .frbtp-page-hero--contact .frbtp-page-hero__title {
    font-size: var(--font-size-2xl);
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
   ESPACE ANNONCEUR — LANDING PAGE
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Hero ──────────────────────────────────────────────────────────────── */
.frbtp-annonceur-hero {
  position: relative;
  overflow: hidden;
  padding: var(--space-20) 0 var(--space-16);
  background: linear-gradient(135deg, #021B4A 0%, var(--frbtp-primary) 50%, #1E5BB0 100%);
  color: #fff;
}
.frbtp-annonceur-hero__bg {
  position: absolute; inset: 0;
  background:
    radial-gradient(circle at 20% 50%, rgba(243,151,25,.15) 0%, transparent 50%),
    radial-gradient(circle at 80% 20%, rgba(255,255,255,.05) 0%, transparent 40%);
  pointer-events: none;
}
.frbtp-annonceur-hero__content {
  position: relative; z-index: 1;
  max-width: 680px;
}
.frbtp-annonceur-hero__badge {
  display: inline-block;
  background: rgba(255,255,255,.12);
  backdrop-filter: blur(6px);
  border: 1px solid rgba(255,255,255,.2);
  padding: 6px 16px;
  border-radius: var(--radius-full);
  font-size: var(--font-size-xs);
  font-weight: 600;
  letter-spacing: .05em;
  text-transform: uppercase;
  margin-bottom: var(--space-5);
}
.frbtp-annonceur-hero__title {
  font-size: clamp(2rem, 4vw, 3.25rem);
  font-weight: 800;
  line-height: 1.1;
  margin-bottom: var(--space-4);
  color: #fff;
}
.frbtp-annonceur-hero__desc {
  font-size: var(--font-size-lg);
  line-height: 1.6;
  opacity: .85;
  margin-bottom: var(--space-8);
  max-width: 560px;
}
.frbtp-annonceur-hero__actions {
  display: flex;
  gap: var(--space-4);
  flex-wrap: wrap;
  margin-bottom: var(--space-6);
}
.frbtp-annonceur-hero__trust {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: var(--font-size-sm);
  opacity: .65;
}
.frbtp-annonceur-hero__trust svg {
  flex-shrink: 0;
}

/* ── Stats bar ─────────────────────────────────────────────────────────── */
.frbtp-annonceur-stats {
  background: var(--frbtp-dark);
  padding: var(--space-6) 0;
}
.frbtp-annonceur-stats__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-4);
  text-align: center;
}
.frbtp-annonceur-stats__number {
  display: block;
  font-family: var(--font-display);
  font-size: var(--font-size-3xl);
  font-weight: 800;
  color: var(--accent-orange);
}
.frbtp-annonceur-stats__label {
  font-size: var(--font-size-sm);
  color: rgba(255,255,255,.7);
}

/* ── Section header ────────────────────────────────────────────────────── */
.frbtp-annonceur-section-header {
  text-align: center;
  margin-bottom: var(--space-10);
}

/* ── Types d'annonces cards ────────────────────────────────────────────── */
.frbtp-annonceur-types {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-5);
}
.frbtp-annonceur-type-card {
  background: #fff;
  border: 1px solid var(--frbtp-gray-100);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  padding: var(--space-6);
  text-align: center;
  transition: all .25s;
}
.frbtp-annonceur-type-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 32px rgba(0,0,0,.1);
  border-color: var(--frbtp-primary);
}
.frbtp-annonceur-type-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 64px; height: 64px;
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  background: var(--frbtp-gray-50);
  margin-bottom: var(--space-4);
}
.frbtp-annonceur-type-card__title {
  font-size: var(--font-size-md);
  font-weight: 700;
  color: var(--frbtp-secondary);
  margin-bottom: var(--space-2);
}
.frbtp-annonceur-type-card__desc {
  font-size: var(--font-size-sm);
  color: var(--frbtp-text-muted);
  line-height: 1.5;
}

/* ── Features grid ─────────────────────────────────────────────────────── */
.frbtp-annonceur-features {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-6);
}
.frbtp-annonceur-feature {
  display: flex;
  gap: var(--space-4);
  align-items: flex-start;
}
.frbtp-annonceur-feature__icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px; height: 48px;
  clip-path: polygon(0 0, calc(100% - var(--chamfer-sm)) 0, 100% var(--chamfer-sm), 100% 100%, 0 100%);
  background: rgba(4,68,155,.08);
  color: var(--frbtp-primary);
}
.frbtp-annonceur-feature__title {
  font-size: var(--font-size-md);
  font-weight: 700;
  color: var(--frbtp-secondary);
  margin-bottom: var(--space-1);
}
.frbtp-annonceur-feature__desc {
  font-size: var(--font-size-sm);
  color: var(--frbtp-text-muted);
  line-height: 1.5;
}

/* ── Steps (Comment ça marche) ─────────────────────────────────────────── */
.frbtp-annonceur-steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-6);
  counter-reset: step;
}
.frbtp-annonceur-step {
  text-align: center;
  position: relative;
}
.frbtp-annonceur-step__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px; height: 48px;
  border-radius: var(--radius-full);
  background: var(--frbtp-primary);
  color: #fff;
  font-family: var(--font-display);
  font-size: var(--font-size-xl);
  font-weight: 800;
  margin-bottom: var(--space-4);
}
.frbtp-annonceur-step__title {
  font-size: var(--font-size-md);
  font-weight: 700;
  color: var(--frbtp-secondary);
  margin-bottom: var(--space-2);
}
.frbtp-annonceur-step__desc {
  font-size: var(--font-size-sm);
  color: var(--frbtp-text-muted);
  line-height: 1.5;
}

/* ── CTA final ─────────────────────────────────────────────────────────── */
.frbtp-annonceur-cta {
  background: linear-gradient(135deg, var(--frbtp-primary) 0%, #1E5BB0 100%);
  padding: var(--space-16) 0;
}
.frbtp-annonceur-cta__inner {
  text-align: center;
  max-width: 560px;
  margin: 0 auto;
}
.frbtp-annonceur-cta__title {
  font-size: var(--font-size-3xl);
  font-weight: 800;
  color: #fff;
  margin-bottom: var(--space-3);
}
.frbtp-annonceur-cta__desc {
  font-size: var(--font-size-lg);
  color: rgba(255,255,255,.8);
  margin-bottom: var(--space-8);
}
.frbtp-annonceur-cta__actions {
  display: flex;
  gap: var(--space-4);
  justify-content: center;
  flex-wrap: wrap;
}
.frbtp-annonceur-cta__btn {
  background: #fff !important;
  color: var(--frbtp-primary) !important;
  font-weight: 700 !important;
  border-color: #fff !important;
}
.frbtp-annonceur-cta__btn:hover {
  background: var(--frbtp-gray-50) !important;
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0,0,0,.2) !important;
}

/* ── Annonceur responsive ──────────────────────────────────────────────── */
@media (max-width: 991px) {
  .frbtp-annonceur-types { grid-template-columns: repeat(2, 1fr); }
  .frbtp-annonceur-features { grid-template-columns: repeat(2, 1fr); }
  .frbtp-annonceur-steps { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767px) {
  .frbtp-annonceur-hero { padding: var(--space-12) 0 var(--space-8); }
  .frbtp-annonceur-hero__title { font-size: var(--font-size-3xl); }
  .frbtp-annonceur-types { grid-template-columns: 1fr; }
  .frbtp-annonceur-features { grid-template-columns: 1fr; }
  .frbtp-annonceur-steps { grid-template-columns: 1fr; gap: var(--space-8); }
  .frbtp-annonceur-stats__grid { grid-template-columns: 1fr; }
  .frbtp-annonceur-cta { padding: var(--space-10) 0; }
}

/* ══════════════════════════════════════════════════════════════════════════
   WhatsApp Floating Action Button
   ══════════════════════════════════════════════════════════════════════════ */
.frbtp-whatsapp-fab {
  position: fixed;
  bottom: 24px;
  right: 24px;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: #25D366;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 12px rgba(0,0,0,.2);
  z-index: var(--z-toast);
  transition: transform var(--transition), box-shadow var(--transition);
  text-decoration: none;
}
.frbtp-whatsapp-fab:hover {
  transform: scale(1.1);
  box-shadow: 0 6px 20px rgba(0,0,0,.3);
  text-decoration: none;
}

/* ══════════════════════════════════════════════════════════════════════════
   LinkedIn Embed
   ══════════════════════════════════════════════════════════════════════════ */
.frbtp-linkedin-feed {
  text-align: center;
}
.frbtp-linkedin-embed iframe {
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  border: 1px solid var(--frbtp-gray-200);
}
.frbtp-linkedin-feed--placeholder {
  padding: var(--space-8);
  background: var(--frbtp-gray-50);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  text-align: center;
}

/* ══════════════════════════════════════════════════════════════════════════
   Pricing Cards
   ══════════════════════════════════════════════════════════════════════════ */
.frbtp-pricing-card ul {
  list-style: none;
  padding: 0;
}
.frbtp-pricing-card ul li {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

/* ══════════════════════════════════════════════════════════════════════════
   Badge Gold : définition canonique unique plus haut dans ce fichier
   (section "Badge gold"). Doublon hors-charte (gradient jaune/rose #f6d365)
   supprimé ici VAGUE 4 - il gagnait la cascade par ordre de source et
   rendait un badge "Recommandé"/"Populaire" incohérent avec la charte
   orange (TOKENS.md).
   ══════════════════════════════════════════════════════════════════════════ */
.frbtp-badge--success {
  background: var(--accent-green);
  color: #fff;
}

/* ══════════════════════════════════════════════════════════════════════════
   FRBTP Photos Design System (Lecon 26 - integration moderne)
   ══════════════════════════════════════════════════════════════════════════ */

/* Photo hero principale (above the fold) */
.frbtp-photo-hero {
  position: relative;
  width: 100%;
  aspect-ratio: 21/9;
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  overflow: hidden;
  box-shadow: var(--shadow-lg);
  margin-bottom: var(--space-8);
  background: var(--frbtp-gray-100);
}
.frbtp-photo-hero img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.8s ease;
}
.frbtp-photo-hero:hover img {
  transform: scale(1.02);
}
.frbtp-photo-hero::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg,
    rgba(4, 68, 155, 0.55) 0%,
    rgba(4, 68, 155, 0.10) 55%,
    transparent 100%);
  pointer-events: none;
}
.frbtp-photo-hero__caption {
  position: absolute;
  bottom: var(--space-6);
  left: var(--space-8);
  right: var(--space-8);
  color: #fff;
  z-index: 1;
  text-shadow: 0 2px 8px rgba(0,0,0,0.45);
  pointer-events: none;
}
.frbtp-photo-hero__caption h1,
.frbtp-photo-hero__caption h2 {
  color: #fff;
  margin: 0 0 var(--space-2);
  font-weight: 700;
  letter-spacing: -0.02em;
}
.frbtp-photo-hero__caption p {
  color: rgba(255,255,255,0.92);
  margin: 0;
  font-size: var(--font-size-lg);
  max-width: 720px;
}
@media (max-width: 768px) {
  .frbtp-photo-hero {
    aspect-ratio: 16/9;
  }
  .frbtp-photo-hero__caption {
    bottom: var(--space-4);
    left: var(--space-4);
    right: var(--space-4);
  }
  .frbtp-photo-hero__caption p {
    font-size: var(--font-size-md);
  }
}

/* Carte photo standard (grille 16/9) */
.frbtp-photo-card {
  position: relative;
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  overflow: hidden;
  box-shadow: var(--shadow-md);
  transition: transform var(--transition), box-shadow var(--transition);
  aspect-ratio: 16/9;
  background: var(--frbtp-gray-100);
}
.frbtp-photo-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s ease;
}
.frbtp-photo-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-xl);
}
.frbtp-photo-card:hover img {
  transform: scale(1.04);
}
.frbtp-photo-card__caption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.75) 100%);
  color: #fff;
  padding: var(--space-6) var(--space-4) var(--space-3);
  font-size: var(--font-size-sm);
  font-weight: 600;
  pointer-events: none;
}

/* Section avec background image (overlay sombre + texte blanc) */
.frbtp-section--photo-bg {
  position: relative;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  color: #fff;
  padding: var(--space-20) var(--space-4);
  overflow: hidden;
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  margin: var(--space-8) 0;
}
.frbtp-section--photo-bg::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
    rgba(4, 68, 155, 0.55) 0%,
    rgba(26, 26, 46, 0.78) 100%);
  z-index: 0;
}
.frbtp-section--photo-bg > * {
  position: relative;
  z-index: 1;
}
.frbtp-section--photo-bg h2,
.frbtp-section--photo-bg h3 {
  color: #fff;
}
.frbtp-section--photo-bg p {
  color: rgba(255,255,255,0.92);
}

/* Banner (ratio cinema 21:9 ou 3:1) */
.frbtp-photo-banner {
  width: 100%;
  aspect-ratio: 3/1;
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  overflow: hidden;
  box-shadow: var(--shadow-md);
  margin: var(--space-8) 0;
  position: relative;
}
.frbtp-photo-banner img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.6s ease;
}
.frbtp-photo-banner:hover img {
  transform: scale(1.03);
}
@media (max-width: 768px) {
  .frbtp-photo-banner {
    aspect-ratio: 16/9;
  }
}

/* Portrait vertical (4/5) pour membres / temoignages */
.frbtp-photo-portrait {
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  overflow: hidden;
  box-shadow: var(--shadow-md);
  aspect-ratio: 4/5;
  transition: transform var(--transition), box-shadow var(--transition);
  background: var(--frbtp-gray-100);
}
.frbtp-photo-portrait img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.frbtp-photo-portrait:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-lg);
}

/* Avatar rond (membres CA, equipes) */
.frbtp-photo-avatar {
  width: 96px;
  height: 96px;
  border-radius: var(--radius-full);
  overflow: hidden;
  box-shadow: var(--shadow-md);
  border: 3px solid #fff;
  flex-shrink: 0;
}
.frbtp-photo-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Mosaic grid (galerie evenements) */
.frbtp-photo-mosaic {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--space-4);
  margin: var(--space-8) 0;
}

/* Sticker badge "Sponsorise" / "Partenaire" / "Membre" */
.frbtp-photo-badge {
  position: absolute;
  top: var(--space-3);
  left: var(--space-3);
  background: rgba(255,255,255,0.96);
  color: var(--frbtp-primary);
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-full);
  font-size: var(--font-size-xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  z-index: 2;
  box-shadow: var(--shadow-sm);
}

/* Force lazy loading natif sur toutes les images photos */
.frbtp-photo-hero img,
.frbtp-photo-card img,
.frbtp-photo-banner img,
.frbtp-photo-portrait img {
  background: var(--frbtp-gray-100);
}

/* ══════════════════════════════════════════════════════════════════════════
   Annuaire Entreprises - Layout + Cartes redesign
   ══════════════════════════════════════════════════════════════════════════ */

/* Layout sidebar + grille annuaire */
.frbtp-annuaire-layout {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 2rem;
  align-items: start;
}
@media (max-width: 900px) {
  .frbtp-annuaire-layout {
    grid-template-columns: 1fr;
  }
  .frbtp-annuaire-layout .frbtp-sidebar {
    display: none;
  }
}

/* Grille 4 colonnes pour les cartes entreprises */
.frbtp-grid--entreprises {
  grid-template-columns: repeat(4, 1fr);
}
@media (max-width: 1199px) {
  .frbtp-grid--entreprises { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767px) {
  .frbtp-grid--entreprises { grid-template-columns: 1fr; }
}

/* Carte entreprise */
.frbtp-entreprise-card {
  background: var(--frbtp-white);
  border: 1px solid var(--line);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  position: relative;
  overflow: hidden;
  border-top: 4px solid var(--frbtp-gray-300);
  transition: box-shadow var(--transition), transform var(--transition);
}
.frbtp-entreprise-card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-3px);
}
.frbtp-entreprise-card:hover .frbtp-ec-name a {
  color: var(--frbtp-primary);
}

/* Couleur bandeau par famille APE */
.frbtp-ec--gros-oeuvre     { border-top-color: #04449b; }
.frbtp-ec--travaux-publics { border-top-color: var(--accent-green); }
.frbtp-ec--preparation     { border-top-color: var(--frbtp-secondary); }
.frbtp-ec--installations   { border-top-color: #1a7fc1; }
.frbtp-ec--charpente       { border-top-color: #8B5E3C; }
.frbtp-ec--second-oeuvre   { border-top-color: var(--frbtp-accent); }

/* Sponsor : anneau doré */
.frbtp-ec--sponsor-highlight {
  box-shadow: 0 0 0 2px var(--frbtp-accent), var(--shadow-md);
}

/* Badges (top-right) */
.frbtp-ec-badges {
  position: absolute;
  top: 0.65rem;
  right: 0.65rem;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.2rem;
  z-index: 1;
}
.frbtp-ec-badge {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 8px;
  border-radius: var(--radius-full);
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  white-space: nowrap;
  line-height: 1.6;
}
.frbtp-ec-badge--sponsor {
  background: linear-gradient(135deg, #f6d365, #fda085);
  color: #6b3a0a;
}
.frbtp-ec-badge--adherent {
  background: var(--frbtp-primary);
  color: #fff;
}

/* Logo / initiale */
.frbtp-ec-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.25rem 1.25rem 0.5rem;
  min-height: 80px;
}
.frbtp-ec-logo img {
  max-height: 56px;
  max-width: 120px;
  object-fit: contain;
}
.frbtp-ec-initiale {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--frbtp-primary);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.4rem;
  font-weight: 700;
  font-family: var(--font-display);
  flex-shrink: 0;
}

/* Nom */
.frbtp-ec-name {
  font-size: 0.9rem;
  font-weight: 700;
  text-align: center;
  padding: 0 0.85rem 0.4rem;
  line-height: 1.3;
}
.frbtp-ec-name a {
  color: var(--frbtp-secondary);
  text-decoration: none;
  transition: color var(--transition);
}
.frbtp-ec-name a:hover { color: var(--frbtp-primary); }

/* Stats row */
.frbtp-ec-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  justify-content: center;
  padding: 0.5rem 0.75rem;
  border-top: 1px solid var(--frbtp-gray-100);
  border-bottom: 1px solid var(--frbtp-gray-100);
  margin: 0.2rem 0;
  flex: 1;
  align-content: flex-start;
}
.frbtp-ec-stat {
  font-size: 0.68rem;
  color: var(--frbtp-text-muted);
  background: var(--frbtp-gray-50);
  padding: 2px 7px;
  border-radius: var(--radius-sm);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

/* Footer CTAs */
.frbtp-ec-footer {
  display: flex;
  gap: 0.4rem;
  padding: 0.65rem 0.85rem;
  justify-content: center;
  flex-wrap: wrap;
}

/* ═══════════════════════════════════════════════════════════════════════════
   PHASE 8 — Mobile / Responsive / A11y (2026-06-05)
   ═══════════════════════════════════════════════════════════════════════════ */

/* G-FOOTER: breakpoint tablette 769-960px → 2 cols */
@media (min-width: 769px) and (max-width: 960px) {
  .frbtp-footer__grid {
    grid-template-columns: 1fr 1fr;
    gap: 32px;
  }
}

/* G-FOOTER: icônes sociales du footer — touch target WCAG 2.5.5 (min 44px) */
.frbtp-footer__social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  border-radius: 50%;
  transition: background var(--transition);
}
.frbtp-footer__social a:hover { background: rgba(255,255,255,.12); }

/* G-COOKIE: bandeau pleine largeur en bas sur mobile */
@media (max-width: 767px) {
  .cookieadmin_law_container {
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    border-radius: 12px 12px 0 0 !important;
  }
  /* G-FAB: surélever le FAB au-dessus du bandeau cookies pleine largeur */
  .frbtp-whatsapp-fab {
    bottom: 100px;
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
   SPRINT 2026-06-05 — Annuaire 3 cols, cartes modernes, articles, magic link
   ═══════════════════════════════════════════════════════════════════════════ */

/* Annuaire : grille 3 colonnes (au lieu de 4) */
.frbtp-grid--entreprises { grid-template-columns: repeat(3, 1fr) !important; }
@media (max-width: 1199px) { .frbtp-grid--entreprises { grid-template-columns: repeat(2, 1fr) !important; } }
@media (max-width: 479px)  { .frbtp-grid--entreprises { grid-template-columns: 1fr !important; } }

/* Sidebar annuaire : visible sur mobile avec toggle */
@media (max-width: 900px) {
  .frbtp-annuaire-layout { grid-template-columns: 1fr !important; }
  .frbtp-annuaire-layout .frbtp-sidebar { display: block !important; }
  .frbtp-annuaire-toggle { display: flex !important; }
  .frbtp-annuaire-filter-collapsible { display: none; }
  .frbtp-annuaire-filter-collapsible.is-open { display: block; }
}
.frbtp-annuaire-toggle {
  display: none;
  width: 100%;
  padding: 0.75rem 1rem;
  background: var(--frbtp-white);
  border: 1px solid var(--frbtp-gray-200);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-cta)) 0, 100% var(--chamfer-cta), 100% 100%, 0 100%);
  font-weight: 600;
  font-size: var(--font-size-sm);
  cursor: pointer;
  margin-bottom: 0.75rem;
  text-align: left;
  align-items: center;
  gap: 0.5rem;
}

/* Carte entreprise : zone logo colorée par famille */
.frbtp-ec-logo {
  padding: 1.5rem !important;
  min-height: 100px !important;
  background: var(--frbtp-gray-50);
  position: relative;
}
.frbtp-entreprise-card.frbtp-ec--gros-oeuvre     .frbtp-ec-logo { background: #eef2fa; }
.frbtp-entreprise-card.frbtp-ec--travaux-publics .frbtp-ec-logo { background: #eaf5ee; }
.frbtp-entreprise-card.frbtp-ec--preparation     .frbtp-ec-logo { background: #f0f4fb; }
.frbtp-entreprise-card.frbtp-ec--installations   .frbtp-ec-logo { background: #e8f3f9; }
.frbtp-entreprise-card.frbtp-ec--charpente       .frbtp-ec-logo { background: #f8f4f0; }
.frbtp-entreprise-card.frbtp-ec--second-oeuvre   .frbtp-ec-logo { background: #fef5ea; }
.frbtp-ec-initiale { width: 64px; height: 64px; font-size: 1.6rem; font-weight: 800; }

/* Corps carte entreprise */
.frbtp-ec-body {
  padding: 1rem 1.1rem 0.75rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.frbtp-ec-name { font-size: 0.95rem; font-weight: 700; text-align: left; line-height: 1.3; margin-bottom: 0.5rem; }
.frbtp-ec-stats { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-bottom: 0.75rem; flex: 1; }
.frbtp-ec-stat {
  font-size: 0.72rem;
  color: var(--frbtp-text-muted);
  background: var(--frbtp-gray-50);
  padding: 3px 8px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--frbtp-gray-100);
}
.frbtp-ec-footer {
  display: flex;
  gap: 0.4rem;
  padding-top: 0.65rem;
  border-top: 1px solid var(--frbtp-gray-100);
}

/* Hero article : hauteur réduite */
.frbtp-hero--post { min-height: 52vh !important; }
.frbtp-hero--post .frbtp-hero__title { font-size: clamp(1.6rem, 4vw, 2.5rem); }

/* Navigation article : cards modernes */
.frbtp-post-nav {
  display: flex;
  justify-content: space-between;
  gap: var(--space-4);
  flex-wrap: wrap;
}
.frbtp-post-nav__link {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: var(--space-4) var(--space-5);
  background: var(--frbtp-white);
  border: 1px solid var(--frbtp-gray-100);
  clip-path: polygon(0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, 0 100%);
  text-decoration: none;
  max-width: 48%;
  transition: border-color var(--transition), box-shadow var(--transition);
}
.frbtp-post-nav__link:hover {
  border-color: var(--frbtp-primary);
  box-shadow: var(--shadow-sm);
  text-decoration: none;
}
.frbtp-post-nav__link--next { text-align: right; margin-left: auto; }
.frbtp-post-nav__label {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: var(--font-size-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--frbtp-text-muted);
}
.frbtp-post-nav__link--next .frbtp-post-nav__label { justify-content: flex-end; }
.frbtp-post-nav__link .frbtp-post-nav__title {
  font-size: var(--font-size-sm);
  font-weight: 600;
  color: var(--frbtp-secondary);
  line-height: 1.4;
  transition: color var(--transition);
}
.frbtp-post-nav__link:hover .frbtp-post-nav__title { color: var(--frbtp-primary); }

/* Verif globale 2026-07-23 (QSN4) : un CTA long (445px) ne revenait pas a la
   ligne sur mobile (white-space nowrap du composant bouton). Sous 480px, les
   boutons peuvent replier leur libelle. */
@media (max-width: 480px) {
  .frbtp-btn { white-space: normal; text-align: center; }
}
