/*
 * Corrections de visibilite et de finition du site public AjiNsafro.
 *
 * Cette feuille est chargee APRES celle de chaque page : elle corrige le rendu
 * sans toucher a la structure ni aux donnees. Les jetons ci-dessous sont les
 * seules valeurs de texte autorisees (contraste mesure sur fond blanc).
 *
 * Sommaire
 *   §0  Jetons
 *   §1  Primitives partagees (visuel manquant, jauge, etat vide)
 *   §2  Regles transverses (champs, cibles tactiles, RTL, 360 px)
 *   §3  Voyages
 *   §4  Group Deals
 *   §5  Hebergement et Activites (cartes .aj-result-* et .aj-featured-*)
 *   §6  Hajj & Omra
 */

/* ── §0 Jetons ─────────────────────────────────────────────────────────── */

:root {
  --ink: #0d2137;        /* titres, prix, libelles forts — 14,6:1 */
  --body: #3d5a75;       /* descriptions, paragraphes — 7,2:1 */
  --meta: #5b7690;       /* metadonnees uniquement — 4,8:1 */
  --line: #dce7f2;       /* bordures de cartes */
  --line-soft: #eef3f9;  /* separateurs internes */
  --surface: #ffffff;
  --canvas: #eef3f9;
  --brand: #144e8c;      /* actions principales */
  --brand-dark: #0d3767; /* survol + bandeaux */
  --accent: #f5821f;     /* promos, badges */
  --accent-ink: #2a1400; /* SEUL texte autorise sur --accent */
  --ok: #0f7a44;         /* disponible */
  --warn: #a8401f;       /* dernieres places */
  --neutral: #3d5a75;    /* complet / liste d'attente */
  --aj-scrim: linear-gradient(to bottom, rgba(9, 30, 52, 0.42), rgba(9, 30, 52, 0) 52%);
  --aj-hatch: repeating-linear-gradient(135deg, #cfe0ee 0 11px, #e2ecf5 11px 22px);
}

/* ── §1 Primitives partagees ───────────────────────────────────────────── */

/* Visuel absent : jamais d'alt visible ni d'icone de fichier casse. */
.ajui-media-empty {
  position: absolute;
  inset: 0;
  background: var(--aj-hatch);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1;
}

.ajui-media-empty__label,
.ajui-photo-label {
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 11px;
  letter-spacing: 0.08em;
  color: #2e4c66;
  background: rgba(255, 255, 255, 0.88);
  border-radius: 7px;
  padding: 6px 11px;
  white-space: nowrap;
}

/* Jauge de remplissage : 8 px, toujours doublee du chiffre en clair. */
.ajui-meter {
  height: 8px;
  border-radius: 999px;
  background: #e2ecf5;
  overflow: hidden;
}

.ajui-meter > span {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: var(--ok);
}

.ajui-meter--warn > span { background: var(--warn); }
.ajui-meter--neutral > span { background: var(--neutral); }

/* Etat vide assume, a la place d'un catalogue de demonstration. */
.ajui-empty {
  background: var(--surface);
  border: 1px dashed #b9cfe6;
  border-radius: 15px;
  padding: clamp(20px, 2.6vw, 30px);
  display: flex;
  flex-direction: column;
  gap: 11px;
  align-items: flex-start;
}

.ajui-empty h3,
.ajui-empty strong {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
}

.ajui-empty p {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--body);
  max-width: 56ch;
}

.ajui-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  background: var(--brand);
  color: #fff;
  border: 1.5px solid var(--brand);
  border-radius: 9px;
  padding: 11px 16px;
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
}

.ajui-btn:hover { background: var(--brand-dark); border-color: var(--brand-dark); color: #fff; }

.ajui-btn--outline {
  background: var(--surface);
  color: var(--brand);
}

.ajui-btn--outline:hover { background: var(--line-soft); color: var(--brand-dark); }

/* Bloc arabe isole : jamais melange a un paragraphe francais. */
.ajui-rtl {
  direction: rtl;
  text-align: right;
  font-family: "Noto Naskh Arabic", "Segoe UI", serif;
  font-size: 15px;
  line-height: 1.8;
  color: var(--ink);
  background: #f6f9fc;
  border-radius: 11px;
  padding: 12px 14px;
}

/* ── §2 Regles transverses ─────────────────────────────────────────────── */

.page-voyages-ajinsafro,
.page-hebergement-ajinsafro,
.page-activites-ajinsafro,
.page-hajj-omra-ajinsafro {
  /* Aucun texte sous 12 px, aucun gris plus clair que --meta. */
  --aj-muted: var(--body);
}

/* Champs de formulaire : libelle lisible, champ confortable, focus visible. */
.page-voyages-ajinsafro input:focus,
.page-voyages-ajinsafro select:focus,
.page-voyages-ajinsafro textarea:focus,
.page-hebergement-ajinsafro input:focus,
.page-hebergement-ajinsafro select:focus,
.page-hebergement-ajinsafro textarea:focus,
.page-activites-ajinsafro input:focus,
.page-activites-ajinsafro select:focus,
.page-activites-ajinsafro textarea:focus {
  outline: none;
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(20, 78, 140, 0.16);
}

/* Cible tactile minimale sur les filtres cochables. */
.page-voyages-ajinsafro label:has(> input[type="checkbox"]),
.page-hebergement-ajinsafro label:has(> input[type="checkbox"]),
.page-activites-ajinsafro label:has(> input[type="checkbox"]) {
  display: flex;
  align-items: center;
  gap: 11px;
  min-height: 44px;
}

/* ── §3 Voyages ────────────────────────────────────────────────────────── */

/* Correctif 2 : la grille se reflue et les cartes s'etirent a la meme hauteur. */
.aj-voyages-booking .hotel-list {
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
  align-items: stretch;
}

.aj-voyages-booking .hotel-card {
  border-color: var(--line);
  box-sizing: border-box;
}

/* Correctif 1 : le texte reste dans la carte, titre et description sur deux lignes. */
.aj-voyages-booking .hotel-main,
.aj-voyages-booking .hotel-side,
.aj-voyages-booking .price-area {
  min-width: 0;
}

.aj-voyages-booking .hotel-main h3 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  font-size: 17px;
  font-weight: 600;
  line-height: 1.28;
  letter-spacing: -0.015em;
  color: var(--ink);
}

.aj-voyages-booking .hotel-main h3 a { color: inherit; }

.aj-voyages-booking .description {
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--body);
}

.aj-voyages-booking .meta,
.aj-voyages-booking .location,
.aj-voyages-booking .hotel-fact,
.aj-voyages-booking .tax,
.aj-voyages-booking .rating-text span {
  color: var(--body);
  font-size: 12.5px;
}

/* Correctif 3 : deux badges au maximum, un par coin, sur un voile sombre. */
.aj-voyages-booking .photo-wrap::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: var(--aj-scrim);
}

.aj-voyages-booking .photo-badges {
  left: 10px;
  right: 10px;
  top: 10px;
  max-width: none;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: nowrap;
}

.aj-voyages-booking .photo-badge {
  background: rgba(9, 30, 52, 0.72);
  color: #fff;
  border-radius: 7px;
  padding: 5px 10px;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

.aj-voyages-booking .photo-badge--type { background: rgba(9, 30, 52, 0.72); }
.aj-voyages-booking .photo-badge--promo { background: var(--accent); color: var(--accent-ink); font-weight: 700; }
.aj-voyages-booking .photo-badge--stock { background: var(--ok); }
.aj-voyages-booking .photo-badge--stock.is-warn { background: var(--warn); }
.aj-voyages-booking .photo-badge--stock.is-full { background: var(--neutral); }

/* Le statut qui ne tient pas sur la photo descend en pied de carte. */
.aj-voyages-booking .card-status {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  border-radius: 6px;
  padding: 4px 9px;
  font-size: 11.5px;
  font-weight: 600;
  background: var(--line-soft);
  color: var(--body);
}

.aj-voyages-booking .card-status--promo { background: #fdf1e4; color: #a8521f; }

/* Correctif 5 : substitut de visuel au meme gabarit que les photos. */
.aj-voyages-booking .photo-wrap--placeholder { background: var(--aj-hatch); }

.aj-voyages-booking .photo-wrap img { width: 100%; height: 100%; object-fit: cover; display: block; }

.aj-voyages-booking .photo-placeholder {
  z-index: 3;
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.08em;
  color: #2e4c66;
  border-radius: 7px;
  padding: 6px 11px;
  box-shadow: none;
}

/* Correctif 8 : le prix reprend la hierarchie commune, le pied s'aligne. */
.aj-voyages-booking .price-area small {
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
  color: var(--body);
}

.aj-voyages-booking .price {
  font-size: 19px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--ink);
}

.aj-voyages-booking .old-price {
  color: var(--meta);
  font-size: 13px;
  font-weight: 500;
}

.aj-voyages-booking .hotel-side {
  margin-top: auto;
  border-top: 1px solid var(--line-soft);
}

/* Correctif 4 : action principale en bleu de marque, jamais blanc sur orange. */
.aj-voyages-booking .primary-btn,
.page-voyages-ajinsafro .aj-voyages-booking .primary-btn {
  background: var(--brand);
  color: #fff;
  box-shadow: none;
  font-size: 13px;
  font-weight: 600;
}

.aj-voyages-booking .primary-btn:hover,
.page-voyages-ajinsafro .aj-voyages-booking .primary-btn:hover {
  background: var(--brand-dark);
  color: #fff;
  filter: none;
  box-shadow: none;
}

.aj-voyages-booking .secondary-btn {
  background: var(--surface);
  border: 1.5px solid var(--brand);
  color: var(--brand);
  box-shadow: none;
}

.aj-voyages-booking .secondary-btn:hover { background: var(--line-soft); color: var(--brand-dark); }

.aj-voyages-booking .search-field--date {
  border-top: 0;
  border-bottom: 0;
  padding: 0;
}

.aj-voyages-booking .search-field label {
  font-size: 12px;
  font-weight: 600;
  color: #2e4c66;
  text-transform: none;
  letter-spacing: 0.02em;
  margin-bottom: 0;
}

.aj-voyages-booking .search-field input,
.aj-voyages-booking .search-field select {
  border: 1px solid #cfdcea;
  border-radius: 10px;
  padding: 12px;
  font-size: 14px;
  font-weight: 400;
  color: var(--ink);
  background: var(--surface);
  box-sizing: border-box;
}

.aj-voyages-booking .search-field--date input[type="date"] {
  font-size: 14px;
  font-weight: 400;
}

.aj-voyages-booking .search-field input:focus,
.aj-voyages-booking .search-field select:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(20, 78, 140, 0.16);
}

.aj-voyages-booking .search-btn {
  background: var(--brand);
  color: #fff;
  box-shadow: none;
}

.aj-voyages-booking .search-btn:hover { background: var(--brand-dark); filter: none; }

.aj-voyages-booking .search-field label {
  font-size: 12px;
  font-weight: 600;
  color: #2e4c66;
}

.aj-voyages-booking .search-field input,
.aj-voyages-booking .search-field select {
  border: 1px solid #cfdcea;
  border-radius: 10px;
  padding: 12px;
  font-size: 14px;
  color: var(--ink);
}

.aj-voyages-booking .deal-strip { background: var(--brand); }

/* Sur bandeau bleu, l'action passe en blanc plein : l'orange n'y tenait pas le contraste. */
.aj-voyages-booking .deal-strip__link,
.aj-voyages-booking .deal-strip button {
  background: var(--surface);
  color: var(--brand);
  font-weight: 600;
  font-size: 13px;
  border-radius: 9px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
}

.aj-voyages-booking .deal-strip__link:hover,
.aj-voyages-booking .deal-strip button:hover {
  background: var(--line-soft);
  color: var(--brand-dark);
  filter: none;
}

/* Reflux jusqu'a 360 px : aucune largeur fixe, le pied de carte s'empile. */
@media (max-width: 420px) {
  .aj-voyages-booking .card-actions { grid-template-columns: 1fr; }
  .aj-voyages-booking .photo-badges { flex-wrap: wrap; }
}

/* ── §4 Group Deals ────────────────────────────────────────────────────── */

/* Correctif 2 : grille fluide, cartes de hauteur egale, pied aligne. */
.aj-groupdeals-fusion .ajgd-deals-grid {
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 290px), 1fr));
  align-items: stretch;
}

.aj-groupdeals-fusion .ajgd-card {
  height: 100%;
  box-sizing: border-box;
  border: 1px solid var(--line);
  border-radius: 15px;
}

.aj-groupdeals-fusion .ajgd-card:hover {
  border-color: #b9cfe6;
  transform: none;
}

.aj-groupdeals-fusion .ajgd-card__body {
  min-width: 0;
  gap: 10px;
}

/* Correctif 3 : voile en haut de la photo, un badge par coin. */
.aj-groupdeals-fusion .ajgd-card__media { aspect-ratio: 16 / 9; }

.aj-groupdeals-fusion .ajgd-card__media::after {
  inset: 0;
  height: auto;
  background: var(--aj-scrim);
}

.aj-groupdeals-fusion .ajgd-card__badges {
  top: 10px;
  left: 10px;
  right: 10px;
  flex-wrap: nowrap;
  justify-content: space-between;
  gap: 8px;
}

.aj-groupdeals-fusion .ajgd-badge {
  border-radius: 7px;
  padding: 5px 10px;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.04em;
  box-shadow: none;
  white-space: nowrap;
}

.aj-groupdeals-fusion .ajgd-badge--blue { background: rgba(9, 30, 52, 0.72); color: #fff; }
.aj-groupdeals-fusion .ajgd-badge--green,
.aj-groupdeals-fusion .ajgd-badge--guaranteed { background: var(--ok); color: #fff; }
.aj-groupdeals-fusion .ajgd-badge--almost,
.aj-groupdeals-fusion .ajgd-badge--progress { background: rgba(9, 30, 52, 0.72); color: #fff; }
.aj-groupdeals-fusion .ajgd-badge--last,
.aj-groupdeals-fusion .ajgd-badge--request { background: var(--warn); color: #fff; }
.aj-groupdeals-fusion .ajgd-badge--full { background: var(--neutral); color: #fff; }
/* Promo : seul cas ou l'orange porte du texte, en brun tres fonce. */
.aj-groupdeals-fusion .ajgd-badge--orange { background: var(--accent); color: var(--accent-ink); font-weight: 700; }

/* Correctif 5 : substitut de visuel, jamais d'icone de fichier casse. */
.aj-groupdeals-fusion .ajgd-card__media.is-fallback { background: var(--aj-hatch); }
.aj-groupdeals-fusion .ajgd-card__media.is-fallback img { display: none; }

.aj-groupdeals-fusion .ajgd-card__media.is-fallback::before {
  content: "VISUEL À VENIR";
  position: absolute;
  z-index: 1;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 11px;
  letter-spacing: 0.08em;
  color: #2e4c66;
  background: rgba(255, 255, 255, 0.88);
  border-radius: 7px;
  padding: 6px 11px;
}

/* Correctif 8 : quatre niveaux, titre 17 px, meta sur une ligne lisible. */
.aj-groupdeals-fusion .ajgd-card__title {
  font-size: 17px;
  font-weight: 600;
  line-height: 1.28;
  letter-spacing: -0.015em;
  color: var(--ink);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.aj-groupdeals-fusion .ajgd-card__dest,
.aj-groupdeals-fusion .ajgd-card__meta {
  font-size: 12.5px;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
  color: var(--body);
}

.aj-groupdeals-fusion .ajgd-card__meta {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.aj-groupdeals-fusion .ajgd-card__meta span {
  padding: 0;
  border: 0;
  background: none;
  border-radius: 0;
  font-size: 12.5px;
  font-weight: 400;
  color: var(--body);
}

.aj-groupdeals-fusion .ajgd-card__excerpt {
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--body);
}

.aj-groupdeals-fusion .ajgd-card__tags {
  font-size: 12px;
  font-weight: 500;
  color: var(--body);
}

/* Les tags redescendent en neutre : l'orange reste au prix et aux promos. */
.aj-groupdeals-fusion .ajgd-card__tags span {
  background: var(--line-soft);
  color: var(--body);
  border: 1px solid var(--line);
  font-weight: 500;
}

/* Barre de remplissage : 8 px, teinte selon l'etat, chiffre toujours en clair. */
.aj-groupdeals-fusion .ajgd-card__progress {
  padding: 0;
  border: 0;
  background: none;
}

.aj-groupdeals-fusion .ajgd-card__progress-bar {
  height: 8px;
  background: #e2ecf5;
}

.aj-groupdeals-fusion .ajgd-card__progress-bar span { background: var(--ok); }
.aj-groupdeals-fusion .ajgd-card__progress.is-warn .ajgd-card__progress-bar span { background: var(--warn); }
.aj-groupdeals-fusion .ajgd-card__progress.is-full .ajgd-card__progress-bar span { background: var(--neutral); }

.aj-groupdeals-fusion .ajgd-card__progress-top {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  font-size: 13px;
  color: var(--body);
  margin-bottom: 7px;
}

.aj-groupdeals-fusion .ajgd-card__progress-top b { font-weight: 600; color: var(--ok); }
.aj-groupdeals-fusion .ajgd-card__progress.is-warn .ajgd-card__progress-top b { color: var(--warn); }
.aj-groupdeals-fusion .ajgd-card__progress.is-full .ajgd-card__progress-top b { color: var(--neutral); }

/* Pied : prix a gauche, une action a droite, aligne d'une carte a l'autre. */
.aj-groupdeals-fusion .ajgd-card__footer {
  margin-top: auto;
  padding-top: 13px;
  border-top: 1px solid var(--line-soft);
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}

.aj-groupdeals-fusion .ajgd-card__price small {
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
  color: var(--body);
}

.aj-groupdeals-fusion .ajgd-card__price strong {
  font-size: 19px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--ink);
}

.aj-groupdeals-fusion .ajgd-card__price del {
  color: var(--meta);
  font-size: 13px;
  font-weight: 500;
}

.aj-groupdeals-fusion .ajgd-card__price span { font-size: 12.5px; color: var(--body); }

.aj-groupdeals-fusion .ajgd-card__actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

/* Correctif 4 : action principale en bleu de marque, secondaire en contour. */
.aj-groupdeals-fusion .ajgd-btn {
  border-radius: 9px;
  font-size: 13px;
  font-weight: 600;
  min-height: 44px;
}

.aj-groupdeals-fusion .ajgd-btn:hover { transform: none; }

/* L'orange ne porte que du brun tres fonce : jamais de blanc dessus. */
.aj-groupdeals-fusion .ajgd-btn--orange {
  background: var(--accent);
  color: var(--accent-ink);
  font-weight: 700;
  box-shadow: none;
}

.aj-groupdeals-fusion .ajgd-btn--orange:hover {
  background: #e07310;
  color: var(--accent-ink);
  box-shadow: none;
}

/* Dans les cartes et l'appel final, l'action principale passe au bleu de marque. */
.aj-groupdeals-fusion .ajgd-card .ajgd-btn--orange,
.aj-groupdeals-fusion .ajgd-final-cta .ajgd-btn--orange {
  background: var(--brand);
  color: #fff;
  font-weight: 600;
}

.aj-groupdeals-fusion .ajgd-card .ajgd-btn--orange:hover,
.aj-groupdeals-fusion .ajgd-final-cta .ajgd-btn--orange:hover {
  background: var(--brand-dark);
  color: #fff;
}

.aj-groupdeals-fusion .ajgd-btn--outline-blue {
  background: var(--surface);
  border: 1.5px solid var(--brand);
  color: var(--brand);
}

.aj-groupdeals-fusion .ajgd-btn--outline-blue:hover { background: var(--line-soft); color: var(--brand-dark); }

.aj-groupdeals-fusion .ajgd-btn.is-disabled {
  background: var(--neutral);
  color: #fff;
  cursor: default;
}


/* Panneau de recherche : meme gabarit que les autres catalogues. */
.aj-groupdeals-fusion .ajgd-search-box {
  border: 0;
  border-radius: 16px;
  box-shadow: none;
}

.aj-groupdeals-fusion .ajgd-search-btn {
  background: var(--brand);
  color: #fff;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 600;
  min-height: 44px;
  box-shadow: none;
}

.aj-groupdeals-fusion .ajgd-search-btn:hover {
  background: var(--brand-dark);
  box-shadow: none;
}

/* Encart conseils : carte sobre, plus de degrade tricolore. */
.aj-groupdeals-fusion .ajgd-promo-card {
  background: var(--line-soft);
  border: 1px solid var(--line);
  border-radius: 15px;
  box-shadow: none;
}

.aj-groupdeals-fusion .ajgd-promo-eyebrow {
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #c2570a;
}

/* Etats vides : meme traitement que les autres catalogues. */
.aj-groupdeals-fusion .ajgd-empty-state h3 { color: var(--ink); font-size: 16px; font-weight: 600; }
.aj-groupdeals-fusion .ajgd-empty-state p { color: var(--body); font-size: 13.5px; line-height: 1.55; }

/* ── §5 Hebergement et Activites ───────────────────────────────────────── */

.page-hebergement-ajinsafro .aj-hebergements-grid.is-grid-view,
.page-activites-ajinsafro .aj-activities-grid,
.page-hebergement-ajinsafro .aj-featured-grid,
.page-activites-ajinsafro .aj-featured-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
  align-items: stretch;
}

.page-hebergement-ajinsafro .aj-result-card,
.page-activites-ajinsafro .aj-result-card,
.page-hebergement-ajinsafro .aj-featured-card,
.page-activites-ajinsafro .aj-featured-card {
  height: 100%;
  box-sizing: border-box;
  border: 1px solid var(--line);
  border-radius: 15px;
  box-shadow: none;
}

.page-hebergement-ajinsafro .aj-result-card:hover,
.page-activites-ajinsafro .aj-result-card:hover,
.page-hebergement-ajinsafro .aj-featured-card:hover,
.page-activites-ajinsafro .aj-featured-card:hover {
  transform: none;
  border-color: #b9cfe6;
  box-shadow: none;
}

/* En grille, la carte s'empile : la photo garde son gabarit 16/10. */
.page-hebergement-ajinsafro .is-grid-view .aj-result-card,
.page-activites-ajinsafro .aj-result-card {
  flex-direction: column;
}

.page-hebergement-ajinsafro .is-grid-view .aj-result-media,
.page-activites-ajinsafro .aj-result-media {
  width: 100%;
  min-width: 0;
  aspect-ratio: 16 / 10;
}

.page-hebergement-ajinsafro .aj-result-body,
.page-activites-ajinsafro .aj-result-body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 9px;
  padding: 16px;
  flex: 1;
}

/* Correctif 3 : voile et deux badges, un par coin. */
.page-hebergement-ajinsafro .aj-result-media::after,
.page-activites-ajinsafro .aj-result-media::after,
.page-hebergement-ajinsafro .aj-featured-visual::after,
.page-activites-ajinsafro .aj-featured-visual::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: var(--aj-scrim);
}

.page-hebergement-ajinsafro .aj-result-media .aj-card-badges,
.page-activites-ajinsafro .aj-result-media .aj-card-badges {
  left: 10px;
  right: 10px;
  top: 10px;
  z-index: 2;
  flex-wrap: nowrap;
  gap: 8px;
}

.page-hebergement-ajinsafro .aj-category-badge,
.page-activites-ajinsafro .aj-category-badge,
.page-hebergement-ajinsafro .aj-badge,
.page-activites-ajinsafro .aj-badge {
  background: rgba(9, 30, 52, 0.72);
  color: #fff;
  border-radius: 7px;
  padding: 5px 10px;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.04em;
  box-shadow: none;
  z-index: 2;
}

.page-hebergement-ajinsafro .aj-status-badge,
.page-activites-ajinsafro .aj-status-badge {
  background: var(--ok);
  color: #fff;
  border-radius: 7px;
  padding: 5px 10px;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.04em;
  box-shadow: none;
  z-index: 2;
}

.page-hebergement-ajinsafro .aj-status-badge--unavailable,
.page-activites-ajinsafro .aj-status-badge--unavailable { background: var(--neutral); }
.page-hebergement-ajinsafro .aj-status-badge--limited,
.page-activites-ajinsafro .aj-status-badge--limited { background: var(--warn); }

/* Correctif 5 : substitut de visuel, jamais d'alt visible. */
.page-hebergement-ajinsafro .aj-media-empty,
.page-activites-ajinsafro .aj-media-empty {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: var(--aj-hatch);
  display: flex;
  align-items: center;
  justify-content: center;
}

.page-hebergement-ajinsafro .aj-media-empty span,
.page-activites-ajinsafro .aj-media-empty span,
.page-hebergement-ajinsafro .aj-pack-hero-fallback,
.page-activites-ajinsafro .aj-pack-hero-fallback {
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 11px;
  letter-spacing: 0.08em;
  color: #2e4c66;
  background: rgba(255, 255, 255, 0.88);
  border-radius: 7px;
  padding: 6px 11px;
}

.page-hebergement-ajinsafro .aj-pack-hero-fallback,
.page-activites-ajinsafro .aj-pack-hero-fallback {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--aj-hatch);
  border-radius: 0;
  padding: 0;
  font-size: 0;
}

.page-hebergement-ajinsafro .aj-pack-hero-fallback::before,
.page-activites-ajinsafro .aj-pack-hero-fallback::before {
  content: "VISUEL À VENIR";
  font-size: 11px;
  background: rgba(255, 255, 255, 0.88);
  border-radius: 7px;
  padding: 6px 11px;
}

/* Correctif 1 et 8 : titre et description a deux lignes, hierarchie unifiee. */
.page-hebergement-ajinsafro .aj-result-body h3,
.page-activites-ajinsafro .aj-result-body h3,
.page-hebergement-ajinsafro .aj-featured-content h3,
.page-activites-ajinsafro .aj-featured-content h3 {
  margin: 0;
  font-size: 17px;
  font-weight: 600;
  line-height: 1.28;
  letter-spacing: -0.015em;
  color: var(--ink);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.page-hebergement-ajinsafro .aj-result-body h3 a,
.page-activites-ajinsafro .aj-result-body h3 a,
.page-hebergement-ajinsafro .aj-featured-title-link,
.page-activites-ajinsafro .aj-featured-title-link { color: inherit; }

.page-hebergement-ajinsafro .aj-result-desc,
.page-activites-ajinsafro .aj-result-desc,
.page-hebergement-ajinsafro .aj-featured-content p,
.page-activites-ajinsafro .aj-featured-content p {
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--body);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.page-hebergement-ajinsafro .aj-result-meta,
.page-activites-ajinsafro .aj-result-meta,
.page-hebergement-ajinsafro .aj-inline-meta,
.page-activites-ajinsafro .aj-inline-meta {
  font-size: 12.5px;
  color: var(--body);
}

/* Deux reperes maximum par carte. */
.page-hebergement-ajinsafro .aj-result-fact:nth-of-type(n + 3),
.page-activites-ajinsafro .aj-result-fact:nth-of-type(n + 3) { display: none; }

.page-hebergement-ajinsafro .aj-result-fact,
.page-activites-ajinsafro .aj-result-fact {
  background: var(--line-soft);
  border: 1px solid var(--line);
  color: var(--body);
  font-size: 12px;
  font-weight: 500;
}

/* Correctif : la pastille de prix quitte la photo pour le pied de carte. */
.page-hebergement-ajinsafro .aj-featured-price,
.page-activites-ajinsafro .aj-featured-price {
  position: static;
  background: none;
  box-shadow: none;
  padding: 0;
  color: var(--ink);
  font-size: 19px;
  font-weight: 600;
  letter-spacing: -0.02em;
}

.page-hebergement-ajinsafro .aj-featured-price small,
.page-activites-ajinsafro .aj-featured-price small,
.page-hebergement-ajinsafro .aj-result-price small,
.page-activites-ajinsafro .aj-result-price small {
  display: inline;
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
  color: var(--body);
}

.page-hebergement-ajinsafro .aj-result-footer,
.page-activites-ajinsafro .aj-result-footer,
.page-hebergement-ajinsafro .aj-featured-footer,
.page-activites-ajinsafro .aj-featured-footer {
  margin-top: auto;
  padding-top: 13px;
  border-top: 1px solid var(--line-soft);
  align-items: baseline;
  flex-wrap: wrap;
  gap: 12px;
}

.page-hebergement-ajinsafro .aj-result-price strong,
.page-activites-ajinsafro .aj-result-price strong {
  font-size: 19px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: -0.02em;
  color: var(--ink);
}

.page-hebergement-ajinsafro .aj-result-price .aj-old-price,
.page-activites-ajinsafro .aj-result-price .aj-old-price {
  color: var(--meta);
  font-size: 13px;
  font-weight: 500;
}

/* Correctif 4 : action principale en bleu de marque. */
.page-hebergement-ajinsafro .aj-result-btn,
.page-activites-ajinsafro .aj-result-btn,
.page-hebergement-ajinsafro .aj-card-primary,
.page-activites-ajinsafro .aj-card-primary,
.page-hebergement-ajinsafro .aj-pack-reserve,
.page-activites-ajinsafro .aj-pack-reserve {
  background: var(--brand);
  color: #fff;
  border: 1.5px solid var(--brand);
  box-shadow: none;
  font-size: 13px;
  font-weight: 600;
  min-height: 44px;
}

.page-hebergement-ajinsafro .aj-result-btn:hover,
.page-activites-ajinsafro .aj-result-btn:hover,
.page-hebergement-ajinsafro .aj-card-primary:hover,
.page-activites-ajinsafro .aj-card-primary:hover,
.page-hebergement-ajinsafro .aj-pack-reserve:hover,
.page-activites-ajinsafro .aj-pack-reserve:hover {
  background: var(--brand-dark);
  border-color: var(--brand-dark);
  color: #fff;
  filter: none;
  transform: none;
}

.page-hebergement-ajinsafro .aj-card-secondary,
.page-activites-ajinsafro .aj-card-secondary,
.page-hebergement-ajinsafro .aj-pack-secondary,
.page-activites-ajinsafro .aj-pack-secondary,
.page-hebergement-ajinsafro .aj-featured-link,
.page-activites-ajinsafro .aj-featured-link {
  background: var(--surface);
  border: 1.5px solid var(--brand);
  color: var(--brand);
  box-shadow: none;
  font-weight: 600;
}

/* Correctif 7 : etat vide assume plutot qu'un catalogue de demonstration. */
.page-hebergement-ajinsafro .aj-empty-state,
.page-activites-ajinsafro .aj-empty-state,
.page-hebergement-ajinsafro .aj-hotel-empty-card {
  background: var(--surface);
  border: 1px dashed #b9cfe6;
  border-radius: 15px;
  padding: clamp(20px, 2.6vw, 30px);
  display: flex;
  flex-direction: column;
  gap: 11px;
  align-items: flex-start;
  text-align: start;
}

.page-hebergement-ajinsafro .aj-empty-state h3,
.page-activites-ajinsafro .aj-empty-state h3,
.page-hebergement-ajinsafro .aj-hotel-empty-card strong {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
}

.page-hebergement-ajinsafro .aj-empty-state p,
.page-activites-ajinsafro .aj-empty-state p,
.page-hebergement-ajinsafro .aj-hotel-empty-card p {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--body);
  max-width: 56ch;
}

.page-hebergement-ajinsafro .aj-empty-state button,
.page-activites-ajinsafro .aj-empty-state button {
  background: var(--brand);
  color: #fff;
  border: 0;
  border-radius: 9px;
  padding: 11px 16px;
  min-height: 44px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}

/* ── §6 Hajj & Omra ────────────────────────────────────────────────────── */

/* Correctif 5 : la photo passe au gabarit 16/9 du pelerinage. */
.page-hajj-omra-ajinsafro .ajho-card__media { aspect-ratio: 16 / 9; }

.page-hajj-omra-ajinsafro .ajho-card__media::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: var(--aj-scrim);
}

.page-hajj-omra-ajinsafro .ajho-card__media.is-empty { background: var(--aj-hatch); }
.page-hajj-omra-ajinsafro .ajho-card__media.is-empty img { display: none; }

.page-hajj-omra-ajinsafro .ajho-card__media.is-empty::before {
  content: "VISUEL À VENIR";
  position: absolute;
  z-index: 2;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 11px;
  letter-spacing: 0.08em;
  color: #2e4c66;
  background: rgba(255, 255, 255, 0.88);
  border-radius: 7px;
  padding: 6px 11px;
}

.page-hajj-omra-ajinsafro .ajho-card__badges { z-index: 2; }

/* Correctif 8 : titre 17 px, description a deux lignes, prix en tete de pied. */
.page-hajj-omra-ajinsafro .ajho-card__body h3 {
  font-size: 17px;
  font-weight: 600;
  line-height: 1.28;
  color: var(--ink);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.page-hajj-omra-ajinsafro .ajho-card__body > p {
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--body);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Les trois reperes sont regroupes sur un fond calme, comme la maquette. */
.page-hajj-omra-ajinsafro .ajho-card__facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  padding: 12px;
  background: #f6f9fc;
  border: 0;
  border-radius: 11px;
}

.page-hajj-omra-ajinsafro .ajho-card__facts span {
  font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--body);
}

.page-hajj-omra-ajinsafro .ajho-card__facts b {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
}

.page-hajj-omra-ajinsafro .ajho-card__hotels dt { color: var(--body); }
.page-hajj-omra-ajinsafro .ajho-card__hotels dd { color: var(--ink); font-size: 13.5px; }

/* Jauge : 8 px, teintee, toujours doublee du chiffre en clair. */
.page-hajj-omra-ajinsafro .ajho-meter { height: 8px; background: #e2ecf5; }
.page-hajj-omra-ajinsafro .ajho-meter span { background: var(--ok); }
.page-hajj-omra-ajinsafro .is-sold-out .ajho-meter span { background: var(--neutral); }
.page-hajj-omra-ajinsafro .ajho-card__meter.is-warn .ajho-meter span { background: var(--warn); }

.page-hajj-omra-ajinsafro .ajho-card__seats { font-size: 13px; color: var(--body); }
.page-hajj-omra-ajinsafro .ajho-card__seats .is-available { color: var(--ok); }
.page-hajj-omra-ajinsafro .ajho-card__seats .is-limited { color: var(--warn); }
.page-hajj-omra-ajinsafro .ajho-card__seats .is-full { color: var(--neutral); }

/* Correctif 8 : prix 19 px/600, precede de « des ». */
.page-hajj-omra-ajinsafro .ajho-card__footer {
  align-items: baseline;
  flex-wrap: wrap;
  gap: 12px;
  padding-top: 13px;
  border-top: 1px solid var(--line-soft);
}

.page-hajj-omra-ajinsafro .ajho-card__actions { flex: none; }

.page-hajj-omra-ajinsafro .ajho-card__price small {
  display: inline;
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
  color: var(--body);
}

.page-hajj-omra-ajinsafro .ajho-card__price strong {
  font-family: inherit;
  font-size: 19px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--ink);
}

/* Correctif 4 : l'action principale quitte l'orange pour le bleu de marque. */
.page-hajj-omra-ajinsafro .ajho-btn--primary {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
  min-height: 44px;
}

.page-hajj-omra-ajinsafro .ajho-btn--primary:hover {
  background: var(--brand-dark);
  border-color: var(--brand-dark);
  color: #fff;
}

.page-hajj-omra-ajinsafro .ajho-btn--ghost {
  background: var(--surface);
  border: 1.5px solid var(--brand);
  color: var(--brand);
  min-height: 44px;
}

.page-hajj-omra-ajinsafro .ajho-btn--gold {
  background: var(--accent);
  color: var(--accent-ink);
  font-weight: 700;
}

.page-hajj-omra-ajinsafro .ajho-tab.is-active {
  background: var(--brand);
  border-color: var(--brand);
}

.page-hajj-omra-ajinsafro .ajho-chip.is-limited { background: var(--warn); }
.page-hajj-omra-ajinsafro .ajho-chip.is-full,
.page-hajj-omra-ajinsafro .ajho-chip.is-expired { background: var(--neutral); }
.page-hajj-omra-ajinsafro .ajho-chip.is-available { background: var(--ok); }

/* Textes arabes : bloc dedie, jamais melange a un paragraphe francais. */
.page-hajj-omra-ajinsafro .ajho-ar {
  display: block;
  direction: rtl;
  text-align: right;
  font-family: "Noto Naskh Arabic", "Segoe UI", serif;
  line-height: 1.8;
}

.page-hajj-omra-ajinsafro p.ajho-ar,
.page-hajj-omra-ajinsafro .ajho-card__body > .ajho-ar {
  background: #f6f9fc;
  border-radius: 11px;
  padding: 12px 14px;
  font-size: 15px;
  color: var(--ink);
}

/* Champs de la barre de filtres, au gabarit commun. */
.page-hajj-omra-ajinsafro .ajho-field select,
.page-hajj-omra-ajinsafro .ajho-field input[type="date"] {
  border: 1px solid #cfdcea;
  border-radius: 10px;
  padding: 12px;
  font-size: 14px;
  color: var(--ink);
}

.page-hajj-omra-ajinsafro .ajho-field > span { font-size: 12px; font-weight: 600; color: #2e4c66; }

.page-hajj-omra-ajinsafro .ajho-switch { min-height: 44px; }

/* ── §4b Group Deals : haut de page ────────────────────────────────────── */

/* Le bandeau devient une carte posee sur le fond, sans trame ni degrade. */
.aj-groupdeals-fusion .ajgd-hero {
  background: none;
  padding: clamp(14px, 2vw, 20px) 0 0;
}

.aj-groupdeals-fusion .ajgd-hero::before { display: none; }

.aj-groupdeals-fusion .ajgd-hero-grid {
  background: var(--brand-dark);
  border-radius: 20px;
  padding: clamp(22px, 3.4vw, 44px);
  gap: clamp(20px, 3vw, 44px);
  align-items: center;
}

.aj-groupdeals-fusion .ajgd-eyebrow {
  background: none;
  padding: 0;
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #f5b06a;
}

.aj-groupdeals-fusion .ajgd-hero-title {
  font-size: clamp(27px, 3.6vw, 44px);
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1.08;
}

.aj-groupdeals-fusion .ajgd-hero-sub {
  font-size: clamp(14.5px, 1.4vw, 16.5px);
  line-height: 1.6;
  color: #c6dcf0;
  max-width: 54ch;
}

/* Les quatre reperes remplacent la photo et ses vignettes flottantes. */
.aj-groupdeals-fusion .ajgd-hero-visual {
  position: static;
  min-height: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

@media (max-width: 520px) {
  .aj-groupdeals-fusion .ajgd-hero-visual { grid-template-columns: minmax(0, 1fr); }
}

.aj-groupdeals-fusion .ajgd-hero-photo { display: none; }

.aj-groupdeals-fusion .ajgd-float-card {
  position: static;
  min-width: 0;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 14px;
  padding: 16px;
  box-shadow: none;
  color: #fff;
  gap: 0;
  animation: none;
  transform: none;
}

.aj-groupdeals-fusion .ajgd-float-card .ajgd-fi { display: none; }

/* Le chiffre passe au-dessus de son libelle, comme la maquette. */
.aj-groupdeals-fusion .ajgd-float-card > div {
  display: flex;
  flex-direction: column-reverse;
  gap: 5px;
  min-width: 0;
}

.aj-groupdeals-fusion .ajgd-float-card strong {
  font-size: clamp(22px, 2.6vw, 30px);
  font-weight: 600;
  letter-spacing: -0.02em;
  color: #fff;
}

.aj-groupdeals-fusion .ajgd-float-card small {
  font-size: 13px;
  font-weight: 400;
  color: #c6dcf0;
  text-transform: none;
  letter-spacing: 0;
}

/* « Comment ca marche » : carte blanche, pastille numerotee carree. */
.aj-groupdeals-fusion .ajgd-how { padding-block: clamp(24px, 3vw, 40px) 0; background: none; }

.aj-groupdeals-fusion .ajgd-section-hd h2 {
  font-size: clamp(18px, 2vw, 22px);
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--ink);
}

.aj-groupdeals-fusion .ajgd-section-hd h2::after { display: none; }

.aj-groupdeals-fusion .ajgd-how-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
  gap: clamp(14px, 1.8vw, 20px);
}

.aj-groupdeals-fusion .ajgd-how-card {
  flex-direction: column;
  align-items: flex-start;
  gap: 9px;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: 15px;
  box-shadow: none;
}

.aj-groupdeals-fusion .ajgd-how-icon {
  width: 30px;
  height: 30px;
  border-radius: 9px;
  background: var(--brand);
  font-size: 14px;
  font-weight: 600;
}

.aj-groupdeals-fusion .ajgd-how-card h3 {
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
  margin: 0;
}

.aj-groupdeals-fusion .ajgd-how-card p {
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--body);
  margin: 0;
}

/* Bandeau de resultats et pastilles de comptage. */
.aj-groupdeals-fusion .ajgd-results-head {
  border: 1px solid var(--line);
  border-radius: 16px;
  box-shadow: none;
}

.aj-groupdeals-fusion .ajgd-results-head h2 {
  font-size: clamp(18px, 2vw, 22px);
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--ink);
}

.aj-groupdeals-fusion .ajgd-result-count { font-size: 13.5px; color: var(--body); }

.aj-groupdeals-fusion .ajgd-stat-pill {
  background: var(--line-soft);
  color: var(--body);
  border: 1px solid var(--line);
  font-size: 12.5px;
  font-weight: 500;
}

.aj-groupdeals-fusion .ajgd-sort-wrap select {
  border: 1px solid #cfdcea;
  border-radius: 9px;
  padding: 10px 12px;
  font-size: 13.5px;
  color: var(--ink);
  background: var(--surface);
}

/* Blocs « pourquoi nous choisir » alignes sur les memes cartes. */
.aj-groupdeals-fusion .ajgd-benefit {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 15px;
}

.aj-groupdeals-fusion .ajgd-benefit h3 { font-size: 16px; font-weight: 600; color: var(--ink); }
.aj-groupdeals-fusion .ajgd-benefit p { font-size: 13.5px; line-height: 1.55; color: var(--body); }

/* Appel final : carte blanche sur le fond de page, sans halo. */
.aj-groupdeals-fusion .ajgd-final-cta {
  background: none;
  border-top: 0;
  padding: clamp(24px, 3vw, 40px) 0;
}

.aj-groupdeals-fusion .ajgd-cta-box {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 18px;
  box-shadow: none;
}

.aj-groupdeals-fusion .ajgd-cta-box h2 {
  font-size: clamp(19px, 2.2vw, 26px);
  font-weight: 600;
  letter-spacing: -0.025em;
  color: var(--ink);
}

.aj-groupdeals-fusion .ajgd-cta-box p { font-size: 14.5px; line-height: 1.55; color: var(--body); }
.aj-groupdeals-fusion .ajgd-cta-deco { display: none; }

/* Le texte prend la place restante pour que les deux actions tiennent cote a cote. */
.aj-groupdeals-fusion .ajgd-cta-content {
  flex: 1 1 320px;
  min-width: 0;
}

.aj-groupdeals-fusion .ajgd-cta-box > .ajgd-btn {
  flex: none;
}

@media (max-width: 860px) {
  .aj-groupdeals-fusion .ajgd-hero-grid { grid-template-columns: minmax(0, 1fr); }
}

/* ── §5b Hebergement et Activites : haut de page ───────────────────────── */

/* Bandeau : aplat navy, sans degrade ni halos. */
.page-hebergement-ajinsafro .aj-hero,
.page-activites-ajinsafro .aj-hero {
  background: var(--brand-dark);
  border-radius: 20px;
  padding: clamp(22px, 3.4vw, 44px);
  box-shadow: none;
}

.page-hebergement-ajinsafro .aj-hero::before,
.page-activites-ajinsafro .aj-hero::before,
.page-hebergement-ajinsafro .aj-hero::after,
.page-activites-ajinsafro .aj-hero::after {
  display: none;
}

.page-hebergement-ajinsafro .aj-hero-copy h1,
.page-activites-ajinsafro .aj-hero-copy h1 {
  font-size: clamp(28px, 3.8vw, 46px);
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1.08;
  color: #fff;
}

.page-hebergement-ajinsafro .aj-hero-copy p,
.page-activites-ajinsafro .aj-hero-copy p {
  font-size: clamp(14.5px, 1.4vw, 16.5px);
  line-height: 1.6;
  color: #c6dcf0;
  max-width: 58ch;
}

/* Surtitres en mono, comme les autres catalogues. */
.page-hebergement-ajinsafro .aj-eyebrow,
.page-activites-ajinsafro .aj-eyebrow,
.page-hebergement-ajinsafro .aj-section-kicker,
.page-activites-ajinsafro .aj-section-kicker {
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  background: none;
  border: 0;
  padding: 0;
  color: #c2570a;
}

.page-hebergement-ajinsafro .aj-hero .aj-eyebrow,
.page-activites-ajinsafro .aj-hero .aj-eyebrow,
.page-hebergement-ajinsafro .aj-hero .aj-section-kicker,
.page-activites-ajinsafro .aj-hero .aj-section-kicker {
  color: #f5b06a;
}

/* Panneau de recherche : carte blanche posee dans le bandeau. */
.page-hebergement-ajinsafro .aj-hero-search,
.page-activites-ajinsafro .aj-hero-search {
  background: var(--surface);
  border: 0;
  border-radius: 16px;
  padding: clamp(14px, 1.6vw, 20px);
  box-shadow: none;
}

.page-hebergement-ajinsafro .aj-hero-search label > span,
.page-activites-ajinsafro .aj-hero-search label > span {
  font-size: 12px;
  font-weight: 600;
  color: #2e4c66;
  letter-spacing: 0.02em;
}

.page-hebergement-ajinsafro .aj-hero-search input,
.page-activites-ajinsafro .aj-hero-search input,
.page-hebergement-ajinsafro .aj-hero-search select,
.page-activites-ajinsafro .aj-hero-search select,
.page-hebergement-ajinsafro .aj-filter-card input:not([type="checkbox"]):not([type="radio"]),
.page-activites-ajinsafro .aj-filter-card input:not([type="checkbox"]):not([type="radio"]),
.page-hebergement-ajinsafro .aj-filter-card select,
.page-activites-ajinsafro .aj-filter-card select {
  border: 1px solid #cfdcea;
  border-radius: 10px;
  padding: 12px;
  font-size: 14px;
  color: var(--ink);
  background: var(--surface);
}

.page-hebergement-ajinsafro .aj-search-button,
.page-activites-ajinsafro .aj-search-button {
  border-radius: 10px;
  font-size: 14px;
  font-weight: 600;
  min-height: 44px;
}

/* En-tetes de section et barres de resultats. */
.page-hebergement-ajinsafro .aj-section-head h2,
.page-activites-ajinsafro .aj-section-head h2,
.page-hebergement-ajinsafro .aj-pack-block-head h2,
.page-activites-ajinsafro .aj-pack-block-head h2 {
  font-size: clamp(20px, 2.4vw, 28px);
  font-weight: 600;
  letter-spacing: -0.025em;
  color: var(--ink);
}

.page-hebergement-ajinsafro .aj-section-head p,
.page-activites-ajinsafro .aj-section-head p {
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--body);
}

/* .aj-results-meta est la barre de commandes (compteur + vue + tri),
   pas une ligne de texte : on n'habille que le compteur. */
.page-hebergement-ajinsafro .aj-results-meta strong,
.page-activites-ajinsafro .aj-results-meta strong {
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
}

/* La barre de resultats du catalogue devient une carte, comme sur Voyages. */
.page-hebergement-ajinsafro .aj-section-head--catalog,
.page-activites-ajinsafro .aj-section-head--catalog {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: clamp(14px, 1.8vw, 20px);
  box-shadow: none;
}

/* Au-dela du point de rupture du gabarit, titre et commandes sur une ligne ;
   en dessous, la mise en colonne du gabarit reste alignee a gauche. */
@media (min-width: 821px) {
  .page-hebergement-ajinsafro .aj-section-head--catalog,
  .page-activites-ajinsafro .aj-section-head--catalog {
    align-items: center;
  }
}

.page-hebergement-ajinsafro .aj-section-head--catalog h2,
.page-activites-ajinsafro .aj-section-head--catalog h2 {
  font-size: clamp(18px, 2vw, 22px);
}

.page-hebergement-ajinsafro .aj-view-toggle,
.page-activites-ajinsafro .aj-view-toggle {
  background: var(--line-soft);
  border-radius: 10px;
  padding: 3px;
}

.page-hebergement-ajinsafro .aj-view-btn,
.page-activites-ajinsafro .aj-view-btn {
  border-radius: 8px;
  font-size: 13px;
  font-weight: 500;
  color: var(--body);
  border: 0;
  background: none;
  min-height: 38px;
}

.page-hebergement-ajinsafro .aj-view-btn.is-active,
.page-activites-ajinsafro .aj-view-btn.is-active {
  background: var(--surface);
  color: var(--ink);
  font-weight: 600;
}

.page-hebergement-ajinsafro .aj-sort-select,
.page-activites-ajinsafro .aj-sort-select {
  border: 1px solid #cfdcea;
  border-radius: 9px;
  padding: 10px 12px;
  font-size: 13.5px;
  color: var(--ink);
  background: var(--surface);
}

/* Colonne de filtres : carte blanche, libelles en mono, cibles de 44 px. */
.page-hebergement-ajinsafro .aj-filter-card,
.page-activites-ajinsafro .aj-filter-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 16px;
  box-shadow: none;
}

.page-hebergement-ajinsafro .aj-filter-head span,
.page-activites-ajinsafro .aj-filter-head span,
.page-hebergement-ajinsafro .aj-filter-head h3,
.page-activites-ajinsafro .aj-filter-head h3 {
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
}

.page-hebergement-ajinsafro .aj-filter-card .aj-filter-label,
.page-activites-ajinsafro .aj-filter-card .aj-filter-label,
.page-hebergement-ajinsafro .aj-filter-group > span,
.page-activites-ajinsafro .aj-filter-group > span {
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #2e4c66;
}

.page-hebergement-ajinsafro .aj-clear-link,
.page-activites-ajinsafro .aj-clear-link,
.page-hebergement-ajinsafro .aj-filter-head a,
.page-activites-ajinsafro .aj-filter-head a,
.page-hebergement-ajinsafro .aj-filter-head button,
.page-activites-ajinsafro .aj-filter-head button {
  font-size: 12.5px;
  font-weight: 600;
  color: #c2570a;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}


.page-hebergement-ajinsafro .aj-filter-card input[type="checkbox"],
.page-activites-ajinsafro .aj-filter-card input[type="checkbox"] {
  width: 18px;
  height: 18px;
  min-height: 0;
  flex: none;
  margin: 0;
  padding: 0;
  accent-color: var(--brand);
}

.page-hebergement-ajinsafro .aj-filter-card label:not(.aj-filter-label),
.page-activites-ajinsafro .aj-filter-card label:not(.aj-filter-label) {
  font-size: 14px;
  color: var(--ink);
}

/* ── §3b Voyages : haut de page ────────────────────────────────────────── */

/* Bandeau : aplat navy en carte arrondie, sans formes decoratives. */
.aj-voyages-booking .hero {
  background: none;
  padding: clamp(14px, 2vw, 20px) 0 0;
  overflow: visible;
}

.aj-voyages-booking .hero::before,
.aj-voyages-booking .hero::after,
.aj-voyages-booking .hero .container::before {
  display: none;
}

.aj-voyages-booking .hero .container {
  background: var(--brand-dark);
  border-radius: 20px;
  padding: clamp(22px, 3.4vw, 44px);
  box-sizing: border-box;
}

/* Le theme redefinit `.container` apres cette feuille et remet l'encoche a
   zero : le titre et le panneau de recherche se collent alors au bord du
   bandeau. On la verrouille sur un selecteur porte par la page. */
.page-voyages-ajinsafro .aj-voyages-booking .hero > .container {
  padding: clamp(22px, 3.4vw, 44px) !important;
  box-sizing: border-box !important;
  max-width: 1320px;
}

.aj-voyages-booking .hero-title {
  font-size: clamp(28px, 3.8vw, 46px);
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1.08;
  max-width: 22ch;
}

.aj-voyages-booking .hero-subtitle {
  font-size: clamp(14.5px, 1.4vw, 16.5px);
  line-height: 1.6;
  color: #c6dcf0;
  max-width: 56ch;
}

/* Panneau de recherche : carte blanche calme, champs au gabarit commun. */
.aj-voyages-booking .search-panel {
  border: 0;
  border-radius: 16px;
  box-shadow: none;
  grid-template-columns: repeat(auto-fit, minmax(178px, 1fr));
  gap: 14px;
  padding: clamp(14px, 1.6vw, 20px);
  align-items: end;
  overflow: visible;
}

.aj-voyages-booking .search-field {
  border-right: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 7px;
  min-width: 0;
}

.aj-voyages-booking .search-btn {
  border-radius: 10px;
  font-size: 14px;
  font-weight: 600;
  min-height: 44px;
}

/* Barre de resultats. */
.aj-voyages-booking .results-topline {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: clamp(14px, 1.8vw, 20px);
  box-shadow: none;
}

.aj-voyages-booking .results-topline h2 {
  margin: 0;
  font-size: clamp(18px, 2vw, 22px);
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--ink);
}

/* Ligne secondaire du compteur : jamais en taille de titre. */
.aj-voyages-booking .result-count,
.aj-voyages-booking .results-topline p {
  margin: 6px 0 0;
  font-size: 13.5px;
  font-weight: 400;
  color: var(--body);
}

/* Surtitre du bandeau, au meme gabarit que les autres catalogues. */
.aj-voyages-booking .hero-eyebrow {
  display: inline-block;
  margin-bottom: 14px;
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #f5b06a;
}

.aj-voyages-booking .sort-wrap select {
  border: 1px solid #cfdcea;
  border-radius: 9px;
  padding: 10px 12px;
  font-size: 13.5px;
  color: var(--ink);
  background: var(--surface);
}

/* Colonne de filtres. */
.aj-voyages-booking .filters {
  border: 1px solid var(--line);
  border-radius: 16px;
  box-shadow: none;
  padding: 18px;
}

.aj-voyages-booking .filter-title {
  border-bottom: 1px solid var(--line);
  padding-bottom: 12px;
}

.aj-voyages-booking .filter-title h2 {
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
}

.aj-voyages-booking .clear-link {
  font-size: 12.5px;
  font-weight: 600;
  color: #c2570a;
}

.aj-voyages-booking .accordion summary {
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 10.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #2e4c66;
  min-height: 44px;
}

.aj-voyages-booking .filters label {
  font-size: 14px;
  color: var(--ink);
}

.aj-voyages-booking .filters input[type="checkbox"] {
  width: 18px;
  height: 18px;
  flex: none;
  accent-color: var(--brand);
}

.aj-voyages-booking .filters input:not([type="checkbox"]):not([type="radio"]),
.aj-voyages-booking .filters select {
  border: 1px solid #cfdcea;
  border-radius: 10px;
  padding: 11px 12px;
  font-size: 13.5px;
  font-weight: 400;
  color: var(--ink);
}

/* Encart de contact : carte sobre, plus de degrade bleu-orange. */
.aj-voyages-booking .map-card {
  background: var(--line-soft);
  border: 1px solid var(--line);
  border-radius: 15px;
  min-height: 0;
  margin: 16px 0 0;
}

.aj-voyages-booking .map-card button {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 10px;
  color: var(--brand);
  font-size: 13.5px;
  font-weight: 600;
  min-height: 44px;
  box-shadow: none;
}

/* Lien d'effacement : casse normale, la charte reserve les capitales aux surtitres. */
.aj-voyages-booking .clear-link {
  text-transform: none;
  letter-spacing: 0;
}

/* Bandeau d'offres : aplat de marque, texte au complet. */
.aj-voyages-booking .deal-strip {
  background: var(--brand);
  border-radius: 15px;
  box-shadow: none;
  padding: 16px 20px;
  align-items: center;
}

.aj-voyages-booking .deal-strip strong {
  font-size: 15px;
  font-weight: 600;
  line-height: 1.4;
}

.aj-voyages-booking .deal-strip span {
  font-size: 13px;
  line-height: 1.5;
  color: #c6dcf0;
}

/* Pagination : carrees, page courante en bleu de marque. */
.aj-voyages-booking .aj-voyages-pagination .page-numbers {
  min-width: 42px;
  height: 42px;
  border-radius: 10px;
  border: 1px solid #cfdcea;
  font-size: 14px;
  font-weight: 600;
  color: #2e4c66;
}

/* ── §3c Voyages : banniere image en tete de page ──────────────────────── */

/* Le conteneur cesse d'etre une carte navy : la banniere prend sa place.
   Le `!important` repond a celui du verrou d'encoche de §3b. */
.page-voyages-ajinsafro .aj-voyages-booking .hero--banner > .container {
  background: none;
  padding: 0 !important;
  border-radius: 0;
}

.aj-voyages-booking .hero-banner {
  display: block;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 18px 40px -24px rgba(13, 55, 103, 0.35);
  line-height: 0;
}

/* Entiere, sans recadrage : la hauteur suit le ratio d'origine (~2073 x 758). */
.aj-voyages-booking .hero-banner img {
  width: 100%;
  height: auto;
  display: block;
}

/* Le panneau de recherche chevauche le bas de l'image. */
.aj-voyages-booking .hero--banner .search-panel {
  position: relative;
  z-index: 1;
  margin: -26px clamp(14px, 3vw, 30px) 0;
  box-shadow: 0 14px 34px -20px rgba(13, 55, 103, 0.4);
}

@media (max-width: 540px) {
  .aj-voyages-booking .hero--banner .search-panel {
    margin-left: 10px;
    margin-right: 10px;
  }
}

/* ── §5c Hebergement : fiche detaillee ─────────────────────────────────── */

/* Cartes : filet de la charte, pas d'ombre portee. */
.page-hebergement-ajinsafro .aj-hotel-hero-card,
.page-hebergement-ajinsafro .aj-hotel-section,
.page-hebergement-ajinsafro .aj-hotel-booking-card,
.page-hebergement-ajinsafro .aj-hotel-map-card,
.page-hebergement-ajinsafro .aj-hotel-empty-card {
  border: 1px solid var(--line);
  border-radius: 16px;
  box-shadow: none;
}

/* Bandeau de la fiche. */
.page-hebergement-ajinsafro .aj-hotel-hero-card h1 {
  font-size: clamp(26px, 3.6vw, 42px);
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1.08;
  color: var(--ink);
}

.page-hebergement-ajinsafro .aj-hotel-hero-location,
.page-hebergement-ajinsafro .aj-hotel-hero-summary {
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--body);
}

.page-hebergement-ajinsafro .aj-hotel-stars {
  color: var(--accent);
  letter-spacing: 0.14em;
  font-size: 13px;
}

/* Ligne de reperes du bandeau : localisation | etoiles | type. */
.page-hebergement-ajinsafro .aj-hotel-hero-location {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

.page-hebergement-ajinsafro .aj-hotel-hero-sep {
  color: var(--line);
}

.page-hebergement-ajinsafro .aj-hotel-status {
  font-size: 11.5px;
  font-weight: 600;
  padding: 5px 12px;
}

.page-hebergement-ajinsafro .aj-hotel-status--available {
  color: var(--ok);
  background: #e4f5ec;
  border: 1px solid #bde3cf;
}

/* Encart de prix du bandeau. */
.page-hebergement-ajinsafro .aj-hotel-hero-price {
  border: 1px solid var(--line);
  border-radius: 15px;
  background: var(--surface);
  box-shadow: none;
}

.page-hebergement-ajinsafro .aj-hotel-hero-price strong {
  font-size: clamp(24px, 3vw, 32px);
  font-weight: 600;
  letter-spacing: -0.03em;
  color: var(--brand-dark);
}

.page-hebergement-ajinsafro .aj-hotel-hero-price span,
.page-hebergement-ajinsafro .aj-hotel-hero-price small {
  font-size: 12.5px;
  color: var(--body);
}

/* Galerie : substitut en trame, jamais de vide gris. */
.page-hebergement-ajinsafro .aj-hotel-gallery-thumb--placeholder {
  background: var(--aj-hatch);
  border: 1px dashed #b9cfe6;
  color: #2e4c66;
}

.page-hebergement-ajinsafro .aj-hotel-gallery-thumb--placeholder span {
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 10.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.page-hebergement-ajinsafro .aj-hotel-gallery-thumb--placeholder small {
  font-size: 12px;
  color: var(--body);
}

/* Titres de section. */
.page-hebergement-ajinsafro .aj-hotel-section h2 {
  font-size: clamp(19px, 2.2vw, 25px);
  font-weight: 600;
  letter-spacing: -0.025em;
  color: var(--ink);
}

.page-hebergement-ajinsafro .aj-hotel-richtext {
  font-size: 14.5px;
  line-height: 1.68;
  color: #2e4c66;
  max-width: 72ch;
}

/* Equipements et regles. */
.page-hebergement-ajinsafro .aj-hotel-amenity {
  background: #f6fafd;
  border: 1px solid #e6eef7;
  border-radius: 10px;
  font-size: 13px;
  color: #2e4c66;
  min-height: 44px;
}

.page-hebergement-ajinsafro .aj-hotel-rule-row {
  border-top: 1px solid var(--line-soft);
  padding: 13px 0;
}

.page-hebergement-ajinsafro .aj-hotel-rule-row strong {
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
}

.page-hebergement-ajinsafro .aj-hotel-rule-row span {
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--body);
}

/* Chambres a confirmer : parcours en trois temps. */
.page-hebergement-ajinsafro .aj-hotel-empty-card strong {
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
}

.page-hebergement-ajinsafro .aj-hotel-empty-card p {
  font-size: 14px;
  line-height: 1.6;
  color: var(--body);
  max-width: 64ch;
}

.page-hebergement-ajinsafro .aj-hotel-steps {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 190px), 1fr));
  gap: 12px;
  margin: 18px 0 0;
  /* La carte parente peut etre un contexte flex : sans largeur explicite,
     auto-fit retombe sur une seule colonne. */
  width: 100%;
  box-sizing: border-box;
}

.page-hebergement-ajinsafro .aj-hotel-step {
  border: 1px solid #e6eef7;
  background: #f6fafd;
  border-radius: 12px;
  padding: 15px;
}

.page-hebergement-ajinsafro .aj-hotel-step b {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 999px;
  background: var(--brand-dark);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
}

.page-hebergement-ajinsafro .aj-hotel-step strong {
  display: block;
  margin-top: 11px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
}

.page-hebergement-ajinsafro .aj-hotel-step span {
  display: block;
  margin-top: 5px;
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--body);
}

/* Carte de reservation. */
.page-hebergement-ajinsafro .aj-hotel-booking-card h3 {
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
}

.page-hebergement-ajinsafro .aj-hotel-booking-price strong {
  font-size: 27px;
  font-weight: 600;
  letter-spacing: -0.03em;
  color: var(--brand-dark);
}

.page-hebergement-ajinsafro .aj-hotel-booking-price small,
.page-hebergement-ajinsafro .aj-hotel-booking-price span {
  font-size: 13px;
  color: var(--body);
}

.page-hebergement-ajinsafro .aj-hotel-booking-form label > span {
  font-size: 11.5px;
  font-weight: 600;
  color: #2e4c66;
  letter-spacing: 0.02em;
}

.page-hebergement-ajinsafro .aj-hotel-booking-form input {
  border: 1px solid #cfdcea;
  border-radius: 10px;
  padding: 11px;
  min-height: 44px;
  font-size: 13.5px;
  font-weight: 400;
  color: var(--ink);
  background: var(--surface);
}

/* Estimation : le tarif final reste celui du conseiller. */
.page-hebergement-ajinsafro .aj-hotel-estimate {
  margin-top: 14px;
  background: #f6fafd;
  border: 1px solid #e6eef7;
  border-radius: 12px;
  padding: 13px;
}

.page-hebergement-ajinsafro .aj-hotel-estimate-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  font-size: 13px;
  color: var(--body);
}

.page-hebergement-ajinsafro .aj-hotel-estimate-row b {
  font-weight: 600;
  color: var(--ink);
}

.page-hebergement-ajinsafro .aj-hotel-estimate-total {
  margin-top: 9px;
  padding-top: 11px;
  border-top: 1px solid var(--line);
}

.page-hebergement-ajinsafro .aj-hotel-estimate-total span {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
}

.page-hebergement-ajinsafro .aj-hotel-estimate-total b {
  font-size: 18px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--brand-dark);
}

.page-hebergement-ajinsafro .aj-hotel-estimate small {
  display: block;
  margin-top: 7px;
  font-size: 11.5px;
  line-height: 1.5;
  color: var(--meta);
}

.page-hebergement-ajinsafro .aj-hotel-contact-quick span {
  font-size: 13px;
  color: var(--body);
}

/* Avantages Ajinsafro : aplat navy, comme les bandeaux des catalogues. */
.page-hebergement-ajinsafro .aj-hotel-perks {
  background: var(--brand-dark);
  border-radius: 16px;
  padding: clamp(16px, 1.8vw, 20px);
  color: #c6dcf0;
}

.page-hebergement-ajinsafro .aj-hotel-perks strong {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: #fff;
}

.page-hebergement-ajinsafro .aj-hotel-perks ul {
  margin: 12px 0 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 9px;
}

.page-hebergement-ajinsafro .aj-hotel-perks li {
  position: relative;
  padding-left: 15px;
  font-size: 13px;
  line-height: 1.5;
}

.page-hebergement-ajinsafro .aj-hotel-perks li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 7px;
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: #f5b06a;
}

/* ── §5d Hebergement : corrections de la fiche detaillee ───────────────── */

/* 1. Colonne collante.
   `align-self: start` reduisait l'aside a la hauteur de son contenu : le
   `position: sticky` n'avait alors aucune course. On laisse la colonne
   s'etirer et c'est le conteneur interieur qui colle. */
.page-hebergement-ajinsafro .aj-hotel-sidebar {
  position: static;
  align-self: stretch;
  min-width: 0;
}

.page-hebergement-ajinsafro .aj-hotel-sidebar-inner {
  position: sticky;
  top: 16px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-width: 0;
}

@media (max-width: 900px) {
  .page-hebergement-ajinsafro .aj-hotel-sidebar-inner {
    position: static;
  }
}

/* 2. Dates : l'asterisque signale le champ requis. */
.page-hebergement-ajinsafro .aj-hotel-required {
  color: var(--accent);
  font-weight: 600;
}

.page-hebergement-ajinsafro .aj-hotel-date-error {
  margin: 0;
  font-size: 12px;
  line-height: 1.5;
  color: #b4413c;
}

.page-hebergement-ajinsafro .aj-hotel-date-error[hidden] {
  display: none !important;
}

/* 3. Compteurs. */
.page-hebergement-ajinsafro .aj-hotel-counter {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid #cfdcea;
  border-radius: 10px;
  padding: 9px 11px;
  flex-wrap: wrap;
}

.page-hebergement-ajinsafro .aj-hotel-counter__label {
  font-size: 13px;
  font-weight: 600;
  color: #2e4c66;
  min-width: 0;
}

.page-hebergement-ajinsafro .aj-hotel-counter__controls {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: none;
}

.page-hebergement-ajinsafro .aj-hotel-counter__btn {
  width: 30px;
  height: 30px;
  flex: none;
  border: 1px solid #cfdcea;
  background: var(--surface);
  border-radius: 8px;
  font-size: 16px;
  line-height: 1;
  color: var(--brand);
  cursor: pointer;
  font-family: inherit;
}

.page-hebergement-ajinsafro .aj-hotel-counter__btn:hover:not(:disabled) {
  border-color: var(--brand);
  background: #f6fafd;
}

.page-hebergement-ajinsafro .aj-hotel-counter__btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.page-hebergement-ajinsafro .aj-hotel-counter__value {
  min-width: 18px;
  text-align: center;
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
}

/* 4. Le bouton principal s'eteint tant que les dates manquent. */
.page-hebergement-ajinsafro .aj-pack-reserve[disabled],
.page-hebergement-ajinsafro .aj-pack-reserve[aria-disabled="true"] {
  background: #9fb6cc;
  cursor: not-allowed;
}

/* 6. Galerie en mosaique, substituts compris. */
.page-hebergement-ajinsafro .aj-hotel-gallery {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  gap: 12px;
  height: auto;
  max-height: none;
  /* 2 colonnes 2fr/1fr avec la principale en 16/10 : la hauteur vaut
     largeur x 2/3 x 10/16, soit largeur / 2,4. La poser ici rend la mosaique
     insensible aux dimensions des photos. */
  aspect-ratio: 12 / 5;
  padding: 0;
  border: 0;
  background: none;
}

.page-hebergement-ajinsafro .aj-hotel-gallery-main {
  aspect-ratio: 16 / 10;
  height: auto;
  min-height: 0;
  border-radius: 16px;
  overflow: hidden;
}

.page-hebergement-ajinsafro .aj-hotel-gallery-side {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: 12px;
  min-height: 0;
}

.page-hebergement-ajinsafro .aj-hotel-gallery-thumb {
  border-radius: 16px;
  overflow: hidden;
  min-height: 0;
  margin: 0;
}

.page-hebergement-ajinsafro .aj-hotel-gallery-main,
.page-hebergement-ajinsafro .aj-hotel-gallery-thumb {
  position: relative;
}

.page-hebergement-ajinsafro .aj-hotel-gallery-main img,
.page-hebergement-ajinsafro .aj-hotel-gallery-thumb img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.page-hebergement-ajinsafro .aj-hotel-gallery-thumb--placeholder {
  background: #f6fafd;
  border: 1px dashed #b9cfe6;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  text-align: center;
  padding: 14px;
  box-sizing: border-box;
}

@media (max-width: 767px) {
  .page-hebergement-ajinsafro .aj-hotel-gallery {
    grid-template-columns: 1fr;
    aspect-ratio: auto;
  }

  /* Le plafond de hauteur commandait la largeur via l'aspect-ratio. */
  .page-hebergement-ajinsafro .aj-hotel-gallery-main {
    max-height: none;
  }

  .page-hebergement-ajinsafro .aj-hotel-gallery-side {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: auto;
  }

  .page-hebergement-ajinsafro .aj-hotel-gallery-thumb {
    aspect-ratio: 4 / 3;
  }

  .page-hebergement-ajinsafro .aj-hotel-gallery-open {
    position: static;
    grid-column: 1 / -1;
    width: 100%;
    margin: 0;
  }
}

/* 7. Substitut de carte, aux dimensions de la carte reelle. */
.page-hebergement-ajinsafro .aj-hotel-map-placeholder {
  /* La largeur commande, la hauteur suit : l'inverse imposait un plancher de
     761 px a la page entiere (min-height 290 x 21/8). */
  width: 100%;
  min-height: 0;
  aspect-ratio: 21 / 8;
  border: 1px dashed #b9cfe6;
  background: #f6fafd;
  border-radius: 13px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  text-align: center;
  padding: 16px;
  box-sizing: border-box;
}

.page-hebergement-ajinsafro .aj-hotel-map-placeholder span {
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 10.5px;
  letter-spacing: 0.14em;
  color: var(--meta);
}

.page-hebergement-ajinsafro .aj-hotel-map-placeholder small {
  font-size: 13px;
  line-height: 1.5;
  color: var(--body);
  max-width: 38ch;
}

.page-hebergement-ajinsafro .aj-hotel-map-embed {
  width: 100%;
  min-height: 0;
  aspect-ratio: 21 / 8;
  border-radius: 13px;
  overflow: hidden;
}

.page-hebergement-ajinsafro .aj-hotel-map-embed iframe {
  width: 100%;
  height: 100%;
  min-height: 0;
  border: 0;
  display: block;
}

/* 8. Etat du catalogue de chambres. */
.page-hebergement-ajinsafro .aj-hotel-rooms-badge {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
  flex: none;
  border-radius: 999px;
  padding: 5px 12px;
  font-size: 11.5px;
  font-weight: 600;
}

.page-hebergement-ajinsafro .aj-hotel-rooms-badge--request {
  background: #fff5e8;
  color: #a24c07;
  border: 1px solid #f6d6b0;
}

.page-hebergement-ajinsafro .aj-hotel-rooms-badge--open {
  background: #e4f5ec;
  color: var(--ok);
  border: 1px solid #bde3cf;
}

/* 9. Puce des equipements, au diametre de la maquette. */
.page-hebergement-ajinsafro .aj-hotel-amenity-icon {
  width: 6px;
  height: 6px;
  flex: none;
  border-radius: 999px;
  background: #2f8ed6;
  font-size: 0;
  overflow: hidden;
}

/* 12. Bandeau : la colonne de texte et l'encart de prix se replient.
   `display: flex` sans `flex-wrap` plus `min-width: 200px` sur le prix
   ecrasait le titre et le resume des ~700 px vers le bas. */
.page-hebergement-ajinsafro .aj-hotel-hero-card {
  flex-wrap: wrap;
  align-items: flex-end;
}

.page-hebergement-ajinsafro .aj-hotel-hero-copy {
  flex: 1 1 320px;
  min-width: 0;
}

.page-hebergement-ajinsafro .aj-hotel-hero-price {
  flex: 0 1 auto;
  min-width: 0;
  padding: 14px 18px;
}

@media (max-width: 767px) {
  .page-hebergement-ajinsafro .aj-hotel-hero-price {
    flex: 1 1 100%;
    text-align: left;
  }
}

/* 13. Plancher de lisibilite : aucun texte sous 12 px sur la fiche. */
.page-hebergement-ajinsafro .aj-section-kicker,
.page-hebergement-ajinsafro .aj-hotel-status,
.page-hebergement-ajinsafro .aj-hotel-rooms-badge,
.page-hebergement-ajinsafro .aj-hotel-map-placeholder span,
.page-hebergement-ajinsafro .aj-hotel-gallery-thumb--placeholder span,
.page-hebergement-ajinsafro .aj-hotel-booking-form label > span,
.page-hebergement-ajinsafro .aj-hotel-estimate small {
  font-size: 12px;
}

/* ── §7 Formule Economique : catalogue ─────────────────────────────────── */

.page-economic-offers-ajinsafro .aj-eco-hero,
.page-economic-offers-ajinsafro .aj-eco-section {
  max-width: 1320px;
  margin: 0 auto;
  padding-left: clamp(14px, 3vw, 30px);
  padding-right: clamp(14px, 3vw, 30px);
  box-sizing: border-box;
}

.page-economic-offers-ajinsafro .aj-eco-hero {
  padding-top: clamp(14px, 2vw, 22px);
}

.page-economic-offers-ajinsafro .aj-eco-section {
  padding-top: clamp(20px, 2.6vw, 30px);
  padding-bottom: clamp(28px, 4vw, 56px);
}

/* Bandeau */
.page-economic-offers-ajinsafro .aj-eco-hero__card {
  background: var(--brand-dark);
  border-radius: 20px;
  padding: clamp(22px, 3.4vw, 44px);
  color: #fff;
}

.page-economic-offers-ajinsafro .aj-eco-breadcrumb {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  font-size: 12.5px;
}

.page-economic-offers-ajinsafro .aj-eco-breadcrumb a {
  color: #c6dcf0;
}

.page-economic-offers-ajinsafro .aj-eco-breadcrumb a:hover {
  color: #fff;
}

.page-economic-offers-ajinsafro .aj-eco-breadcrumb span {
  color: #4d7ba8;
}

.page-economic-offers-ajinsafro .aj-eco-breadcrumb .is-current {
  color: #fff;
}

.page-economic-offers-ajinsafro .aj-eco-hero__inner {
  margin-top: clamp(16px, 2.4vw, 26px);
  display: flex;
  align-items: flex-end;
  gap: clamp(20px, 3vw, 44px);
  flex-wrap: wrap;
}

.page-economic-offers-ajinsafro .aj-eco-hero__copy {
  flex: 1 1 440px;
  min-width: 0;
}

.page-economic-offers-ajinsafro .aj-eco-kicker {
  display: block;
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 500;
  color: #c2570a;
}

.page-economic-offers-ajinsafro .aj-eco-kicker--hero {
  color: #f5b06a;
}

.page-economic-offers-ajinsafro .aj-eco-hero__copy h1 {
  margin: 14px 0 0;
  font-size: clamp(28px, 3.8vw, 46px);
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1.08;
  color: #fff;
  max-width: 22ch;
}

.page-economic-offers-ajinsafro .aj-eco-hero__copy p {
  margin: 14px 0 0;
  font-size: clamp(14.5px, 1.4vw, 16.5px);
  line-height: 1.6;
  color: #c6dcf0;
  max-width: 56ch;
}

.page-economic-offers-ajinsafro .aj-eco-hero__actions {
  margin-top: clamp(18px, 2.4vw, 26px);
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

/* Boutons */
.page-economic-offers-ajinsafro .aj-eco-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  padding: 12px 20px;
  font-size: 13.5px;
  font-weight: 600;
  font-family: inherit;
  line-height: 1.2;
  text-align: center;
  cursor: pointer;
  border: 1px solid transparent;
  box-sizing: border-box;
}

.page-economic-offers-ajinsafro .aj-eco-btn--accent {
  background: var(--accent);
  color: var(--accent-ink);
  font-weight: 700;
}

.page-economic-offers-ajinsafro .aj-eco-btn--accent:hover {
  background: #e07310;
  color: var(--accent-ink);
}

.page-economic-offers-ajinsafro .aj-eco-btn--outline-light {
  border-color: #4d7ba8;
  color: #fff;
  background: transparent;
}

.page-economic-offers-ajinsafro .aj-eco-btn--outline-light:hover {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
}

.page-economic-offers-ajinsafro .aj-eco-btn--primary {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
}

.page-economic-offers-ajinsafro .aj-eco-btn--primary:hover {
  background: var(--brand-dark);
  border-color: var(--brand-dark);
  color: #fff;
}

.page-economic-offers-ajinsafro .aj-eco-btn--outline {
  background: var(--surface);
  border-color: #cfdcea;
  color: var(--brand);
}

.page-economic-offers-ajinsafro .aj-eco-btn--outline:hover {
  border-color: var(--brand);
  background: #f6fafd;
  color: var(--brand);
}

/* Recherche rapide */
.page-economic-offers-ajinsafro .aj-eco-quick {
  flex: 0 1 330px;
  min-width: 0;
  background: #0b2e56;
  border: 1px solid #1d5490;
  border-radius: 15px;
  padding: clamp(14px, 1.6vw, 18px);
  box-sizing: border-box;
}

.page-economic-offers-ajinsafro .aj-eco-quick__title {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: #c6dcf0;
}

.page-economic-offers-ajinsafro .aj-eco-quick__field {
  display: block;
  margin-top: 11px;
  min-width: 0;
}

.page-economic-offers-ajinsafro .aj-eco-quick__field span {
  display: block;
  font-size: 12px;
  color: #c6dcf0;
}

.page-economic-offers-ajinsafro .aj-eco-quick__field input {
  margin-top: 6px;
  width: 100%;
  box-sizing: border-box;
  border: 1px solid #1d5490;
  border-radius: 10px;
  padding: 12px;
  font-size: 14px;
  font-family: inherit;
  color: var(--ink);
  background: #fff;
}

.page-economic-offers-ajinsafro .aj-eco-quick__tags {
  margin-top: 12px;
  display: flex;
  gap: 7px;
  flex-wrap: wrap;
}

.page-economic-offers-ajinsafro .aj-eco-tag {
  display: inline-flex;
  align-items: center;
  border: 1px solid #1d5490;
  background: var(--brand-dark);
  color: #c6dcf0;
  border-radius: 999px;
  padding: 7px 13px;
  font-size: 12px;
  font-weight: 500;
}

.page-economic-offers-ajinsafro .aj-eco-tag:hover {
  background: var(--brand);
  color: #fff;
}

/* Barre de filtres */
.page-economic-offers-ajinsafro .aj-eco-filters {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: clamp(14px, 1.8vw, 20px);
}

.page-economic-offers-ajinsafro .aj-eco-filters__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 178px), 1fr));
  gap: 13px;
  align-items: end;
}

.page-economic-offers-ajinsafro .aj-eco-field {
  display: flex;
  flex-direction: column;
  gap: 7px;
  min-width: 0;
}

.page-economic-offers-ajinsafro .aj-eco-field__label {
  font-size: 12px;
  font-weight: 600;
  color: #2e4c66;
}

.page-economic-offers-ajinsafro .aj-eco-field input,
.page-economic-offers-ajinsafro .aj-eco-field select {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid #cfdcea;
  border-radius: 10px;
  padding: 12px;
  font-size: 14px;
  font-family: inherit;
  color: var(--ink);
  background: var(--surface);
}

.page-economic-offers-ajinsafro .aj-eco-filters__row {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--line-soft);
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
}

.page-economic-offers-ajinsafro .aj-eco-check {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 44px;
  cursor: pointer;
  font-size: 13.5px;
  color: #2e4c66;
  min-width: 0;
}

.page-economic-offers-ajinsafro .aj-eco-check input {
  width: 17px;
  height: 17px;
  flex: none;
  accent-color: var(--brand);
  cursor: pointer;
  margin: 0;
}

.page-economic-offers-ajinsafro .aj-eco-sort {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-size: 13.5px;
  color: #2e4c66;
  min-width: 0;
  flex-wrap: wrap;
}

.page-economic-offers-ajinsafro .aj-eco-sort__label {
  font-weight: 600;
}

.page-economic-offers-ajinsafro .aj-eco-sort select {
  border: 1px solid #cfdcea;
  border-radius: 9px;
  padding: 9px 11px;
  font-size: 13.5px;
  font-family: inherit;
  color: var(--ink);
  background: var(--surface);
  min-width: 0;
}

.page-economic-offers-ajinsafro .aj-eco-filters__actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.page-economic-offers-ajinsafro .aj-eco-reset {
  display: inline-flex;
  align-items: center;
  background: var(--surface);
  border: 1px solid #cfdcea;
  border-radius: 10px;
  padding: 11px 18px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--brand);
}

.page-economic-offers-ajinsafro .aj-eco-reset:hover {
  border-color: var(--brand);
  background: #f6fafd;
}

/* Tete de resultats */
.page-economic-offers-ajinsafro .aj-eco-results-head {
  margin-top: clamp(18px, 2.2vw, 26px);
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
}

.page-economic-offers-ajinsafro .aj-eco-results-head__copy {
  min-width: 0;
}

.page-economic-offers-ajinsafro .aj-eco-results-head h2 {
  margin: 11px 0 0;
  font-size: clamp(20px, 2.4vw, 28px);
  font-weight: 600;
  letter-spacing: -0.025em;
  color: var(--ink);
}

.page-economic-offers-ajinsafro .aj-eco-count {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--body);
  min-width: 0;
}

/* Grille */
.page-economic-offers-ajinsafro .aj-eco-grid {
  margin-top: clamp(14px, 1.8vw, 20px);
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
  gap: clamp(14px, 1.8vw, 20px);
  align-items: stretch;
}

.page-economic-offers-ajinsafro .aj-eco-card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 16px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  height: 100%;
  box-sizing: border-box;
  min-width: 0;
}

.page-economic-offers-ajinsafro .aj-eco-card:hover {
  border-color: #b9cfe6;
}

/* Une offre passee reste lisible : on baisse l'image, pas le texte. */
.page-economic-offers-ajinsafro .aj-eco-card.is-expired .aj-eco-card__media {
  opacity: 0.72;
}

.page-economic-offers-ajinsafro .aj-eco-card__media {
  position: relative;
  aspect-ratio: 16 / 10;
  background: #f6fafd;
  border-bottom: 1px solid var(--line-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.page-economic-offers-ajinsafro .aj-eco-card__media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.page-economic-offers-ajinsafro .aj-eco-card__placeholder {
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--meta);
}

.page-economic-offers-ajinsafro .aj-eco-card__kind {
  position: absolute;
  top: 10px;
  left: 10px;
  max-width: calc(100% - 20px);
  background: rgba(13, 33, 55, 0.82);
  color: #fff;
  border-radius: 7px;
  padding: 5px 10px;
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.page-economic-offers-ajinsafro .aj-eco-state {
  position: absolute;
  top: 10px;
  right: 10px;
  border-radius: 999px;
  padding: 5px 11px;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}

.page-economic-offers-ajinsafro .aj-eco-state--available {
  background: #e4f5ec;
  color: #146b45;
  border: 1px solid #bde3cf;
}

.page-economic-offers-ajinsafro .aj-eco-state--limited {
  background: #fff5e8;
  color: #a24c07;
  border: 1px solid #f6d6b0;
}

.page-economic-offers-ajinsafro .aj-eco-state--full,
.page-economic-offers-ajinsafro .aj-eco-state--expired {
  background: var(--line-soft);
  color: var(--body);
  border: 1px solid #cfdcea;
}

.page-economic-offers-ajinsafro .aj-eco-card__body {
  padding: 16px 17px 0;
  min-width: 0;
}

.page-economic-offers-ajinsafro .aj-eco-card__body h3 {
  margin: 0;
  font-size: 17px;
  font-weight: 600;
  letter-spacing: -0.015em;
  line-height: 1.3;
  color: var(--ink);
}

.page-economic-offers-ajinsafro .aj-eco-card__body h3 a {
  color: inherit;
}

.page-economic-offers-ajinsafro .aj-eco-card__body h3 a:hover {
  color: var(--brand);
}

.page-economic-offers-ajinsafro .aj-eco-card__body p {
  margin: 8px 0 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--body);
}

.page-economic-offers-ajinsafro .aj-eco-card__facts {
  margin: 14px 0 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 11px 14px;
}

.page-economic-offers-ajinsafro .aj-eco-card__facts > div {
  min-width: 0;
}

.page-economic-offers-ajinsafro .aj-eco-card__facts dt {
  display: block;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--meta);
}

.page-economic-offers-ajinsafro .aj-eco-card__facts dd {
  display: block;
  margin: 3px 0 0;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
}

.page-economic-offers-ajinsafro .aj-eco-card__seats {
  margin-top: 13px;
  display: flex;
  align-items: center;
  gap: 9px;
  flex-wrap: wrap;
}

.page-economic-offers-ajinsafro .aj-eco-gauge {
  flex: 1 1 auto;
  min-width: 60px;
  height: 8px;
  border-radius: 999px;
  background: #e2ecf5;
  overflow: hidden;
}

.page-economic-offers-ajinsafro .aj-eco-gauge__fill {
  display: block;
  height: 8px;
  border-radius: 999px;
  background: var(--ok);
}

.page-economic-offers-ajinsafro .aj-eco-card--limited .aj-eco-gauge__fill {
  background: var(--warn);
}

.page-economic-offers-ajinsafro .aj-eco-card--full .aj-eco-gauge__fill {
  background: var(--neutral);
}

.page-economic-offers-ajinsafro .aj-eco-card.is-expired .aj-eco-gauge__fill {
  background: #9fb6cc;
}

.page-economic-offers-ajinsafro .aj-eco-card__seats-label {
  flex: none;
  font-size: 12.5px;
  color: var(--body);
}

.page-economic-offers-ajinsafro .aj-eco-card__footer {
  margin-top: auto;
  padding: 14px 17px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.page-economic-offers-ajinsafro .aj-eco-card__price {
  min-width: 0;
}

.page-economic-offers-ajinsafro .aj-eco-card__price small {
  font-size: 13px;
  color: var(--body);
}

.page-economic-offers-ajinsafro .aj-eco-card__price strong {
  font-size: 19px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--ink);
}

.page-economic-offers-ajinsafro .aj-eco-card__cta {
  flex: none;
  padding: 11px 17px;
  font-size: 13px;
}

/* Aucun resultat */
.page-economic-offers-ajinsafro .aj-eco-empty {
  margin-top: clamp(14px, 1.8vw, 20px);
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: clamp(24px, 3.4vw, 44px);
  text-align: center;
}

.page-economic-offers-ajinsafro .aj-eco-empty h3 {
  margin: 0;
  font-size: 19px;
  font-weight: 600;
  color: var(--ink);
}

.page-economic-offers-ajinsafro .aj-eco-empty p {
  margin: 10px auto 0;
  font-size: 14px;
  line-height: 1.6;
  color: var(--body);
  max-width: 46ch;
}

.page-economic-offers-ajinsafro .aj-eco-empty__actions {
  margin-top: 18px;
  display: flex;
  gap: 10px;
  justify-content: center;
  flex-wrap: wrap;
}

@media (max-width: 600px) {
  .page-economic-offers-ajinsafro .aj-eco-filters__actions {
    margin-left: 0;
    width: 100%;
  }

  .page-economic-offers-ajinsafro .aj-eco-filters__actions > * {
    flex: 1 1 auto;
  }
}

/* ── §8 Connexion ──────────────────────────────────────────────────────── */

.page-connexion-ajinsafro .aj-login {
  max-width: 1320px;
  margin: 0 auto;
  padding: clamp(20px, 3vw, 44px) clamp(14px, 3vw, 30px) clamp(24px, 3.4vw, 52px);
  box-sizing: border-box;
}

.page-connexion-ajinsafro .aj-login__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 330px), 1fr));
  gap: clamp(16px, 2.2vw, 26px);
  align-items: stretch;
}

/* ── Carte de connexion ───────────────────────────────────────────────── */
.page-connexion-ajinsafro .aj-login__card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 18px;
  padding: clamp(20px, 3vw, 38px);
  display: flex;
  flex-direction: column;
  min-width: 0;
  box-sizing: border-box;
}

.page-connexion-ajinsafro .aj-login__card h1 {
  margin: 0;
  font-size: clamp(24px, 3vw, 32px);
  font-weight: 600;
  letter-spacing: -0.03em;
  color: var(--ink);
}

.page-connexion-ajinsafro .aj-login__lead {
  margin: 10px 0 0;
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--body);
  max-width: 46ch;
}

.page-connexion-ajinsafro .aj-login__alert {
  margin: 18px 0 0;
  border-radius: 11px;
  padding: 12px 14px;
  font-size: 13px;
  line-height: 1.5;
  border: 1px solid;
}

.page-connexion-ajinsafro .aj-login__alert--error {
  background: #fdeceb;
  border-color: #f4c7c3;
  color: #8c2018;
}

.page-connexion-ajinsafro .aj-login__alert--warn {
  background: #fff5e8;
  border-color: #f6d6b0;
  color: #a24c07;
}

/* ── Champs ───────────────────────────────────────────────────────────── */
.page-connexion-ajinsafro .aj-login__form {
  display: flex;
  flex-direction: column;
  gap: 15px;
  margin-top: 20px;
}

.page-connexion-ajinsafro .aj-login__field {
  display: flex;
  flex-direction: column;
  gap: 7px;
  min-width: 0;
  margin: 0;
}

.page-connexion-ajinsafro .aj-login__labelrow {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.page-connexion-ajinsafro .aj-login__label {
  font-size: 12.5px;
  font-weight: 600;
  color: #2e4c66;
}

.page-connexion-ajinsafro .aj-login__label b {
  color: #c2570a;
  font-weight: 600;
}

.page-connexion-ajinsafro .aj-login__forgot {
  font-size: 12.5px;
  font-weight: 500;
  color: var(--brand);
}

.page-connexion-ajinsafro .aj-login__field input[type="text"],
.page-connexion-ajinsafro .aj-login__field input[type="password"],
.page-connexion-ajinsafro .aj-login__field input[type="email"] {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid #cfdcea;
  border-radius: 11px;
  padding: 13px 14px;
  font-size: 14.5px;
  font-family: inherit;
  color: var(--ink);
  background: var(--surface);
}

/* Le bouton d'affichage se superpose : on lui reserve la place a droite. */
.page-connexion-ajinsafro .aj-login__password {
  position: relative;
  display: block;
  min-width: 0;
}

.page-connexion-ajinsafro .aj-login__field .aj-login__password input {
  padding-right: 96px;
}

.page-connexion-ajinsafro .aj-login__reveal {
  position: absolute;
  top: 50%;
  right: 8px;
  transform: translateY(-50%);
  border: 1px solid #cfdcea;
  background: var(--surface);
  border-radius: 8px;
  padding: 7px 11px;
  font-size: 12.5px;
  font-weight: 600;
  font-family: inherit;
  color: var(--brand);
  cursor: pointer;
  white-space: nowrap;
}

.page-connexion-ajinsafro .aj-login__reveal:hover {
  border-color: var(--brand);
  background: #f6fafd;
}

.page-connexion-ajinsafro .aj-login__remember {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  cursor: pointer;
  font-size: 13.5px;
  color: #2e4c66;
  min-width: 0;
  margin: 0;
}

.page-connexion-ajinsafro .aj-login__remember input {
  width: 17px;
  height: 17px;
  flex: none;
  margin: 0;
  accent-color: var(--brand);
  cursor: pointer;
}

.page-connexion-ajinsafro .aj-login__submit {
  width: 100%;
  box-sizing: border-box;
  border: none;
  border-radius: 12px;
  background: var(--brand);
  color: #fff;
  padding: 15px 20px;
  font-size: 15px;
  font-weight: 600;
  font-family: inherit;
  cursor: pointer;
}

.page-connexion-ajinsafro .aj-login__submit:hover {
  background: var(--brand-dark);
}

/* Formulaire encore vide : le bouton s'attenue sans jamais etre desactive. */
.page-connexion-ajinsafro .aj-login__submit.is-idle {
  background: #9fb6cc;
}

/* ── Pied de carte ────────────────────────────────────────────────────── */
.page-connexion-ajinsafro .aj-login__signup {
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid var(--line-soft);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  font-size: 13.5px;
  color: var(--body);
}

.page-connexion-ajinsafro .aj-login__ghost {
  display: inline-flex;
  align-items: center;
  border: 1px solid #cfdcea;
  border-radius: 10px;
  padding: 11px 18px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--brand);
}

.page-connexion-ajinsafro .aj-login__ghost:hover {
  border-color: var(--brand);
  background: #f6fafd;
}

.page-connexion-ajinsafro .aj-login__partner {
  margin-top: 12px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--brand);
}

/* ── Panneau des avantages ────────────────────────────────────────────── */
.page-connexion-ajinsafro .aj-login__aside {
  background: var(--brand-dark);
  border-radius: 18px;
  padding: clamp(20px, 3vw, 38px);
  color: #c6dcf0;
  display: flex;
  flex-direction: column;
  min-width: 0;
  box-sizing: border-box;
}

.page-connexion-ajinsafro .aj-login__kicker {
  display: block;
  font-family: ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 500;
  color: #f5b06a;
}

.page-connexion-ajinsafro .aj-login__aside h2 {
  margin: 12px 0 0;
  font-size: clamp(20px, 2.4vw, 26px);
  font-weight: 600;
  letter-spacing: -0.025em;
  line-height: 1.2;
  color: #fff;
  max-width: 22ch;
}

.page-connexion-ajinsafro .aj-login__perks {
  margin: clamp(18px, 2.4vw, 26px) 0 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.page-connexion-ajinsafro .aj-login__perks li {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  border-top: 1px solid #1d5490;
  padding-top: 14px;
}

.page-connexion-ajinsafro .aj-login__dot {
  width: 7px;
  height: 7px;
  flex: none;
  margin-top: 7px;
  border-radius: 999px;
  background: #f5b06a;
}

.page-connexion-ajinsafro .aj-login__perk {
  min-width: 0;
}

.page-connexion-ajinsafro .aj-login__perk strong {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: #fff;
}

.page-connexion-ajinsafro .aj-login__perk span {
  display: block;
  margin-top: 4px;
  font-size: 13.5px;
  line-height: 1.55;
}

.page-connexion-ajinsafro .aj-login__help {
  margin-top: auto;
  background: #0b2e56;
  border: 1px solid #1d5490;
  border-radius: 13px;
  padding: 16px;
}

.page-connexion-ajinsafro .aj-login__help strong {
  display: block;
  font-size: 13.5px;
  font-weight: 600;
  color: #fff;
}

.page-connexion-ajinsafro .aj-login__help > span {
  display: block;
  margin-top: 7px;
  font-size: 13px;
  line-height: 1.55;
}

.page-connexion-ajinsafro .aj-login__help a {
  color: #f5b06a;
}

.page-connexion-ajinsafro .aj-login__help a:hover {
  color: #fff;
}

/* Le panneau garde de l'air au-dessus du bloc d'aide quand il est seul. */
@media (max-width: 767px) {
  .page-connexion-ajinsafro .aj-login__help {
    margin-top: clamp(20px, 2.6vw, 28px);
  }
}

/* ── §9 Bannieres de pages : image entiere en tete de catalogue ────────── */

/* Le visuel : carte arrondie, ombre douce, image jamais recadree.
   Partage par Hebergement, Activites, Group Deals, Hajj & Omra et Formule
   economique ; Voyages garde son §3c, de meme geometrie. */
.aj-page-banner {
  display: block;
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 18px 40px -24px rgba(13, 55, 103, 0.35);
  line-height: 0;
}

.aj-page-banner img {
  width: 100%;
  height: auto;
  display: block;
}

/* ── Hebergement et Activites : le bandeau perd son aplat navy ; le panneau
   de recherche, deja dans la section, vient chevaucher le bas de l'image. */
.page-hebergement-ajinsafro .aj-hero--banner,
.page-activites-ajinsafro .aj-hero--banner {
  /* `!important` : repond a celui de hebergement-booking.css (aplat navy). */
  background: none !important;
  padding: 0;
  border-radius: 0;
  box-shadow: none;
  overflow: visible;
}

.page-hebergement-ajinsafro .aj-hero--banner .aj-hero-search,
.page-activites-ajinsafro .aj-hero--banner .aj-hero-search {
  position: relative;
  z-index: 1;
  margin: -26px clamp(14px, 3vw, 30px) 0;
  box-shadow: 0 14px 34px -20px rgba(13, 55, 103, 0.4);
}

/* ── Group Deals : la grille navy est remplacee ; le bloc recherche qui suit
   remonte deja de 36 px (group-deals-fusion.css), on le ramene a 26. */
.aj-groupdeals-fusion .ajgd-hero--banner + .ajgd-search-wrap {
  margin-top: -26px;
}

.aj-groupdeals-fusion .ajgd-hero--banner .aj-page-banner {
  margin: 0;
}

/* ── Hajj & Omra : le bandeau navy pleine largeur devient neutre ; le fil
   d'Ariane et le choix de langue restent au-dessus de l'image. */
.page-hajj-omra-ajinsafro .ajho-hero--banner {
  background: none;
  color: inherit;
  padding-bottom: 0;
  overflow: visible;
}

.page-hajj-omra-ajinsafro .ajho-hero--banner::before {
  display: none;
}

.page-hajj-omra-ajinsafro .ajho-hero--banner .ajho-breadcrumb--light,
.page-hajj-omra-ajinsafro .ajho-hero--banner .ajho-breadcrumb--light a {
  color: var(--body);
}

.page-hajj-omra-ajinsafro .ajho-hero--banner .ajho-breadcrumb--light [aria-current="page"] {
  color: var(--ink);
}

/* La barre de filtres est collante et pleine largeur : on ne la fait pas
   chevaucher, on garde une respiration constante sous l'image. */
.page-hajj-omra-ajinsafro .ajho-hero--banner .aj-page-banner {
  margin-bottom: clamp(16px, 2.2vw, 24px);
}

/* ── Formule economique : la carte navy disparait ; la barre de filtres
   blanche de la section suivante chevauche l'image. */
.page-economic-offers-ajinsafro .aj-eco-hero--banner .aj-page-banner {
  margin: 0;
}

.page-economic-offers-ajinsafro .aj-eco-section--under-banner {
  padding-top: 0;
}

.page-economic-offers-ajinsafro .aj-eco-section--under-banner .aj-eco-filters {
  position: relative;
  z-index: 1;
  margin: -26px clamp(14px, 3vw, 30px) 0;
  box-shadow: 0 14px 34px -20px rgba(13, 55, 103, 0.4);
}

@media (max-width: 540px) {
  .page-hebergement-ajinsafro .aj-hero--banner .aj-hero-search,
  .page-activites-ajinsafro .aj-hero--banner .aj-hero-search,
  .page-economic-offers-ajinsafro .aj-eco-section--under-banner .aj-eco-filters {
    margin-left: 10px;
    margin-right: 10px;
  }
}
