/* =====================================================================
   ND LIENS — Système de design (redesign 2026)
   Palette officielle ndliens-maroc.com. Classes préfixées "nd-" pour
   ne pas entrer en conflit avec le thème existant (rollout page par page).
   ===================================================================== */

:root {
  color-scheme: light;       /* empêche le mode sombre auto des navigateurs mobiles */
  /* ===== Palette officielle ND Liens =====
     Deux couleurs de base : navy et taupe. Le bleu/turquoise et le doré ont
     été retirés — ils multipliaient les teintes sans logique de marque.
     Le rouge et le vert du drapeau marocain restent, en touches identitaires
     uniquement : bandes du drapeau, bouton de réservation, « RABAT ». */
  --nd-navy: #0E0147;         /* titres, textes forts, fonds sombres */
  --nd-taupe: #9B8B74;        /* accent : boutons, liens, icônes */
  --nd-taupe-clair: #B5A78F;  /* survol */
  --nd-beige: #F5F2EC;        /* fonds clairs */
  --nd-beige-clair: #D8CCB4;  /* texte d'accent sur fond sombre */
  --nd-maroc-rouge: #C1272D;
  --nd-maroc-vert: #006233;
  --nd-blanc: #FFFFFF;
  --nd-texte: #2E2745;        /* navy adouci, pour les paragraphes */
  --nd-gris: #6B6480;
  --nd-font-titre: 'Nunito', sans-serif;
  --nd-font-texte: 'Roboto', sans-serif;
  --nd-font-ui: 'Inter', sans-serif;
}

/* Bouton « remonter en haut » du thème retiré partout (il masquait le bouton contact) */
.scroll-top, #scroll-top { display: none !important; }

/* Notifications toast (contact / newsletter sur l'accueil) */
.nd-toast-zone { position: fixed; top: 84px; left: 50%; transform: translateX(-50%); z-index: 2000; display: flex; flex-direction: column; gap: 10px; width: min(92vw, 460px); }
.nd-toast { display: flex; align-items: center; gap: 11px; padding: 14px 16px; border-radius: 14px; box-shadow: 0 12px 34px rgba(14,1,71,0.22); font-size: 14.5px; font-family: var(--nd-font-ui); background: #fff; animation: ndToastIn .35s ease; }
.nd-toast i { font-size: 18px; flex: 0 0 auto; }
.nd-toast span { flex: 1; color: var(--nd-texte); }
.nd-toast-ok { border-left: 4px solid var(--nd-maroc-vert); }
.nd-toast-ok > i { color: var(--nd-maroc-vert); }
.nd-toast-err { border-left: 4px solid var(--nd-maroc-rouge); }
.nd-toast-err > i { color: var(--nd-maroc-rouge); }
.nd-toast-x { background: none; border: none; font-size: 21px; line-height: 1; color: var(--nd-gris); cursor: pointer; padding: 0 2px; flex: 0 0 auto; }
.nd-toast-x:hover { color: var(--nd-navy); }
@keyframes ndToastIn { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: none; } }

/* Réglages généraux d'une page redesignée */
.nd-page, .nd-auth { font-family: var(--nd-font-texte); color: var(--nd-texte); background: var(--nd-blanc); }
/* box-sizing (les pages auth ne chargent pas le reset global) + fond blanc forcé */
.nd-page, .nd-page *, .nd-auth, .nd-auth * { box-sizing: border-box; }
.nd-auth-form-side, .nd-auth-card { background: var(--nd-blanc); }
.nd-page img { max-width: 100%; }
.nd-titre { font-family: var(--nd-font-titre); font-size: clamp(26px, 3.5vw, 38px); font-weight: 700; color: var(--nd-navy); line-height: 1.25; }
.nd-liseret { height: 4px; background: linear-gradient(90deg, var(--nd-maroc-rouge) 0%, var(--nd-maroc-rouge) 45%, var(--nd-maroc-vert) 55%, var(--nd-maroc-vert) 100%); }

/* Boutons */
.nd-btn-bleu, .nd-btn-ghost, .nd-btn-accent {
  display: inline-block; text-decoration: none; font-weight: 700; font-size: 16px;
  padding: 15px 36px; border-radius: 40px; transition: transform .2s, background .2s; cursor: pointer; border: none;
}
.nd-btn-bleu { background: linear-gradient(90deg, var(--nd-taupe), var(--nd-taupe-clair)); color: var(--nd-blanc); box-shadow: 0 8px 26px rgba(14,1,71,0.30); }
.nd-btn-bleu:hover { transform: translateY(-3px); color: #fff; }
.nd-btn-ghost { border: 1.5px solid var(--nd-taupe); color: var(--nd-taupe); background: var(--nd-blanc); }
.nd-btn-ghost:hover { background: var(--nd-beige); color: var(--nd-taupe); }
.nd-btn-accent { background: var(--nd-taupe); color: var(--nd-navy); box-shadow: 0 8px 26px rgba(245,166,35,0.4); font-weight: 800; }
.nd-btn-accent:hover { transform: translateY(-3px); color: var(--nd-navy); }

/* Bandeau événement (haut de page) */
.nd-event-banner { background: linear-gradient(90deg, var(--nd-navy), var(--nd-taupe), var(--nd-navy)); color: var(--nd-blanc); text-align: center; padding: 12px 20px; font-weight: 500; font-size: 15px; }
.nd-event-banner strong { font-weight: 800; color: var(--nd-beige-clair); }
.nd-event-banner a { display: inline-block; margin-left: 14px; background: var(--nd-taupe); color: var(--nd-navy); padding: 6px 18px; border-radius: 30px; text-decoration: none; font-size: 13px; font-weight: 700; transition: transform .2s; }
.nd-event-banner a:hover { transform: scale(1.05); color: var(--nd-navy); }

/* Icônes sociales */
.nd-ico-social { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 50%; font-size: 17px; text-decoration: none; color: #fff !important; }
.nd-ico-insta { background: linear-gradient(45deg, #F58529, #DD2A7B, #8134AF); }
.nd-ico-wa { background: #25D366; }

/* ===== HERO ===== */
.nd-hero { position: relative; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 70px 24px 80px; min-height: 78vh; overflow: hidden; background: var(--nd-navy); }
.nd-hero-bg { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0; animation: ndHeroFade 21s infinite; z-index: 0; }
.nd-hero-bg:nth-child(1) { animation-delay: 0s; }
.nd-hero-bg:nth-child(2) { animation-delay: 7s; }
.nd-hero-bg:nth-child(3) { animation-delay: 14s; }
@keyframes ndHeroFade { 0% { opacity: 0; transform: scale(1); } 8% { opacity: 1; } 33% { opacity: 1; transform: scale(1.06); } 41% { opacity: 0; } 100% { opacity: 0; } }
.nd-hero-overlay { position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(62,80,85,0.75) 0%, rgba(155,139,116,0.55) 60%, rgba(62,80,85,0.85) 100%); }
.nd-hero > *:not(.nd-hero-bg):not(.nd-hero-overlay) { position: relative; z-index: 2; }
.nd-badge-cible { display: inline-flex; align-items: center; gap: 10px; background: var(--nd-blanc); border: 1px solid rgba(14,1,71,0.25); color: var(--nd-taupe); padding: 9px 24px; border-radius: 30px; font-size: 13px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; margin-bottom: 26px; box-shadow: 0 4px 14px rgba(14,1,71,0.10); }
.nd-hero h1 { font-family: var(--nd-font-titre); font-size: clamp(34px, 5vw, 56px); font-weight: 800; line-height: 1.15; max-width: 980px; color: var(--nd-blanc); text-shadow: 0 2px 20px rgba(0,0,0,0.35); }
.nd-hero h1 em { font-style: normal; color: var(--nd-beige-clair); }
.nd-hero .nd-sous-titre { margin-top: 22px; font-size: clamp(16px, 2vw, 19px); color: rgba(255,255,255,0.92); max-width: 720px; line-height: 1.65; text-shadow: 0 1px 10px rgba(0,0,0,0.3); }
.nd-hero .nd-sous-titre strong { color: var(--nd-beige-clair); }
.nd-recherche { margin-top: 36px; background: var(--nd-blanc); border-radius: 50px; box-shadow: 0 12px 40px rgba(14,1,71,0.18); padding: 10px; display: flex; gap: 8px; flex-wrap: wrap; align-items: center; max-width: 820px; width: 100%; }
.nd-recherche select, .nd-recherche input { flex: 1; min-width: 150px; border: none; outline: none; padding: 14px 18px; font-family: var(--nd-font-ui); font-size: 15px; color: var(--nd-texte); background: transparent; border-right: 1px solid #E3EAF0; height: 52px; }
.nd-recherche select { -webkit-appearance: none; -moz-appearance: none; appearance: none; cursor: pointer; padding-right: 40px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23388da8' d='M6 8 0 0h12z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; }
.nd-recherche select:invalid { color: #8a97a1; }
.nd-recherche .nd-btn-chercher { background: linear-gradient(90deg, var(--nd-taupe), var(--nd-taupe-clair)); color: var(--nd-blanc); border: none; padding: 15px 30px; border-radius: 40px; font-weight: 700; font-size: 15px; cursor: pointer; }
.nd-hero-ctas { margin-top: 28px; display: flex; gap: 16px; flex-wrap: wrap; justify-content: center; }
.nd-note-gratuit { margin-top: 15px; font-size: 14px; color: rgba(255,255,255,0.85); }
.nd-note-gratuit strong { color: var(--nd-beige-clair); }
.nd-hero-preuves { margin-top: 46px; display: flex; gap: 46px; flex-wrap: wrap; justify-content: center; }
.nd-preuve { text-align: center; }
.nd-preuve .nd-chiffre { font-family: var(--nd-font-titre); font-size: 28px; font-weight: 700; color: var(--nd-blanc); text-shadow: 0 1px 10px rgba(0,0,0,0.3); }
.nd-preuve .nd-label { font-size: 12.5px; color: rgba(255,255,255,0.8); margin-top: 4px; }

/* ===== Sections génériques ===== */
.nd-section { padding: 80px 24px; }
.nd-section-sub { color: var(--nd-gris); margin-top: 14px; font-size: 16px; }
.nd-container { max-width: 1100px; margin: 0 auto; }

/* Catégories (chips) */
.nd-categories { text-align: center; background: var(--nd-blanc); }
.nd-cat-grid { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; max-width: 900px; margin: 40px auto 0; }
.nd-cat { display: inline-flex; align-items: center; gap: 10px; background: var(--nd-beige); color: var(--nd-navy); padding: 13px 24px; border-radius: 40px; font-size: 15px; font-weight: 600; text-decoration: none; transition: all .2s; border: 1px solid transparent; }
.nd-cat:hover { background: var(--nd-taupe); color: var(--nd-blanc); transform: translateY(-2px); }
.nd-cat.nd-plus { background: var(--nd-blanc); border: 1.5px dashed var(--nd-taupe-clair); color: var(--nd-taupe-clair); }

/* 2 Piliers */
.nd-piliers { background: var(--nd-beige); text-align: center; }
.nd-piliers-grid { display: flex; gap: 30px; justify-content: center; flex-wrap: wrap; max-width: 1000px; margin: 50px auto 0; }
.nd-pilier { flex: 1; min-width: 300px; border-radius: 20px; padding: 45px 35px; text-align: left; }
.nd-pilier.nd-clair { background: var(--nd-blanc); box-shadow: 0 8px 30px rgba(14,1,71,0.08); }
.nd-pilier.nd-fonce { background: var(--nd-taupe); color: var(--nd-blanc); }
.nd-pilier .nd-emoji { font-size: 36px; margin-bottom: 16px; }
.nd-pilier h3 { font-family: var(--nd-font-titre); font-size: 22px; margin-bottom: 12px; }
.nd-pilier.nd-clair h3 { color: var(--nd-navy); }
.nd-pilier p { line-height: 1.65; font-size: 15.5px; }
.nd-pilier.nd-clair p { color: var(--nd-gris); }
.nd-pilier.nd-fonce p { color: rgba(255,255,255,0.85); }

/* Galerie */
.nd-gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; max-width: 1100px; margin: 45px auto 0; }
.nd-gallery img { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: 16px; box-shadow: 0 8px 24px rgba(14,1,71,0.15); }
.nd-gallery-note { margin-top: 35px; background: var(--nd-beige); display: inline-block; padding: 16px 34px; border-radius: 40px; font-weight: 700; color: var(--nd-navy); font-size: 16px; }

/* Qui sommes-nous */
.nd-fondatrice { background: var(--nd-blanc); display: flex; justify-content: center; }
.nd-fondatrice-inner { max-width: 1000px; display: grid; grid-template-columns: 1fr 1.5fr; gap: 50px; align-items: center; }
.nd-photo-cadre { position: relative; border-radius: 20px; overflow: hidden; aspect-ratio: 4/5; border: 3px solid var(--nd-beige); box-shadow: 0 20px 50px rgba(14,1,71,0.15); }
.nd-photo-cadre img { width: 100%; height: 100%; object-fit: cover; }
.nd-fondatrice .nd-tag { color: var(--nd-maroc-vert); font-size: 13px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; margin-bottom: 14px; }
.nd-fondatrice p.nd-recit { color: var(--nd-gris); line-height: 1.75; font-size: 16px; margin-top: 18px; }
.nd-fondatrice p.nd-recit strong { color: var(--nd-navy); }
.nd-citation { margin-top: 24px; padding: 20px 26px; border-left: 4px solid var(--nd-maroc-rouge); background: var(--nd-beige); border-radius: 0 14px 14px 0; font-family: var(--nd-font-titre); font-size: 19px; font-weight: 600; color: var(--nd-navy); font-style: italic; }

/* Événement */
.nd-event-section { background: var(--nd-navy); padding: 90px 24px; display: flex; flex-direction: column; align-items: center; gap: 30px; }
.nd-event-card { max-width: 1000px; width: 100%; border-radius: 20px; padding: 50px 55px; background: radial-gradient(ellipse at top right, rgba(46,124,199,0.35) 0%, transparent 55%), var(--nd-taupe); color: var(--nd-blanc); display: grid; grid-template-columns: 1.4fr 1fr; gap: 40px; align-items: center; box-shadow: 0 20px 60px rgba(0,0,0,0.3); }
.nd-event-tag { color: var(--nd-beige-clair); font-size: 13px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; margin-bottom: 16px; }
.nd-event-card h2 { font-family: var(--nd-font-titre); font-size: clamp(26px, 3.5vw, 38px); font-weight: 700; line-height: 1.2; }
.nd-event-card h2 span { color: var(--nd-beige-clair); }
.nd-event-card p.nd-desc { color: rgba(255,255,255,0.85); margin-top: 18px; line-height: 1.65; font-size: 16px; }
.nd-event-infos { margin-top: 24px; display: flex; flex-direction: column; gap: 10px; }
.nd-event-infos div { display: flex; align-items: center; gap: 12px; font-size: 15px; }
.nd-event-cta-box { text-align: center; }
.nd-compteur { display: flex; gap: 12px; justify-content: center; margin-bottom: 26px; }
.nd-compteur .nd-bloc { background: rgba(255,255,255,0.10); border: 1px solid rgba(255,255,255,0.25); border-radius: 12px; padding: 14px 16px; min-width: 66px; }
.nd-compteur .nd-num { font-family: var(--nd-font-titre); font-size: 26px; font-weight: 700; color: var(--nd-beige-clair); }
.nd-compteur .nd-unite { font-size: 11px; color: rgba(255,255,255,0.7); text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; }
.nd-places { margin-top: 16px; font-size: 13px; color: var(--nd-beige-clair); font-weight: 600; }
.nd-sponsor-strip { max-width: 1000px; width: 100%; border: 1.5px dashed rgba(255,217,138,0.6); border-radius: 16px; padding: 22px 32px; display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; color: var(--nd-blanc); }
.nd-sponsor-strip .nd-txt { font-size: 15px; line-height: 1.5; }
.nd-sponsor-strip .nd-txt strong { color: var(--nd-beige-clair); }
.nd-btn-sponsor { border: 1.5px solid var(--nd-beige-clair); color: var(--nd-beige-clair); padding: 12px 26px; border-radius: 40px; text-decoration: none; font-weight: 700; font-size: 14px; white-space: nowrap; transition: all .2s; }
.nd-btn-sponsor:hover { background: var(--nd-beige-clair); color: var(--nd-navy); }

/* Tarifs */
.nd-tarifs { background: var(--nd-beige); text-align: center; }
.nd-toggle-wrap { display: inline-flex; align-items: center; gap: 0; margin: 30px 0 45px; background: var(--nd-blanc); border-radius: 40px; padding: 6px; box-shadow: 0 4px 16px rgba(14,1,71,0.10); }
.nd-toggle-wrap button { border: none; background: transparent; padding: 12px 26px; border-radius: 34px; font-family: var(--nd-font-ui); font-size: 15px; font-weight: 600; color: var(--nd-gris); cursor: pointer; transition: all .2s; }
.nd-toggle-wrap button.nd-actif { background: var(--nd-taupe); color: var(--nd-blanc); }
.nd-toggle-wrap .nd-promo { font-size: 12px; color: var(--nd-maroc-vert); font-weight: 700; }
.nd-tarif-grid { display: flex; gap: 24px; justify-content: center; flex-wrap: wrap; max-width: 760px; margin: 0 auto; }
.nd-tarif-card { flex: 1; min-width: 235px; max-width: 320px; background: var(--nd-blanc); border-radius: 20px; padding: 38px 28px; text-align: left; box-shadow: 0 8px 30px rgba(14,1,71,0.08); position: relative; }
.nd-tarif-card.nd-star { border: 2px solid var(--nd-taupe-clair); transform: scale(1.03); }
.nd-tarif-card .nd-pop { position: absolute; top: -13px; left: 50%; transform: translateX(-50%); background: var(--nd-taupe-clair); color: var(--nd-blanc); font-size: 12px; font-weight: 700; padding: 5px 16px; border-radius: 20px; white-space: nowrap; }
.nd-tarif-card h3 { font-family: var(--nd-font-titre); font-size: 20px; color: var(--nd-navy); }
.nd-tarif-card .nd-prix { font-family: var(--nd-font-titre); font-size: 34px; font-weight: 800; color: var(--nd-taupe); margin: 14px 0 2px; }
.nd-tarif-card .nd-periode { font-size: 13px; color: var(--nd-gris); margin-bottom: 18px; }
.nd-tarif-card ul { list-style: none; margin: 18px 0 24px; padding: 0; }
.nd-tarif-card li { font-size: 14px; color: var(--nd-gris); padding: 6px 0; }
.nd-tarif-card li::before { content: "✔ "; color: var(--nd-maroc-vert); font-weight: 700; }
.nd-tarif-card a { display: block; text-align: center; background: var(--nd-taupe); color: var(--nd-blanc); padding: 13px; border-radius: 30px; text-decoration: none; font-weight: 700; font-size: 15px; }
.nd-tarif-card.nd-free a { background: var(--nd-beige); color: var(--nd-taupe); }
.nd-paiements { margin-top: 40px; font-size: 14px; color: var(--nd-gris); }
.nd-paiements .nd-badges { display: flex; gap: 14px; justify-content: center; margin-top: 14px; flex-wrap: wrap; }
.nd-badge-pay { background: var(--nd-blanc); border: 1px solid #D5E2ED; border-radius: 10px; padding: 10px 22px; font-weight: 700; font-size: 15px; color: var(--nd-texte); }

/* CTA final */
.nd-cta-final { text-align: center; background: var(--nd-blanc); }
.nd-cta-final p { color: var(--nd-gris); margin: 18px auto 34px; font-size: 17px; max-width: 700px; }

/* Newsletter */
.nd-newsletter { background: var(--nd-navy); color: var(--nd-blanc); text-align: center; padding: 55px 24px; }
.nd-newsletter h2 { font-family: var(--nd-font-titre); color: var(--nd-blanc); }
.nd-newsletter-form { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin-top: 20px; max-width: 520px; margin-left: auto; margin-right: auto; }
.nd-newsletter-form input { flex: 1; min-width: 220px; border: none; border-radius: 40px; padding: 14px 20px; font-family: var(--nd-font-ui); }

/* Bouton contact flottant */
.nd-contact-float { position: fixed; bottom: 26px; right: 26px; z-index: 200; background: var(--nd-taupe); color: #fff; width: 58px; height: 58px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 26px; text-decoration: none; box-shadow: 0 8px 24px rgba(155,139,116,0.45); transition: transform .2s; }
.nd-contact-float:hover { transform: scale(1.1); color: #fff; }
.nd-ico-contact { background: var(--nd-taupe); }

/* ===== NAV (page redesignée) ===== */
.nd-nav-header { position: fixed; top: 0; left: 0; width: 100%; z-index: 1000; background: var(--nd-blanc); box-shadow: 0 1px 8px rgba(14,1,71,0.08); }
.nd-nav-header .nd-nav { box-shadow: none; margin: 0 auto; max-width: 1300px; }
.nd-nav { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 12px 40px; background: var(--nd-blanc); box-shadow: 0 1px 8px rgba(14,1,71,0.08); flex-wrap: wrap; }
.nd-nav .nd-nav-logo img { height: 48px; width: auto; }
.nd-nav-toggle { display: none; background: none; border: none; font-size: 28px; line-height: 1; color: var(--nd-navy); cursor: pointer; padding: 2px 6px; }
.nd-nav-links { display: flex; gap: 22px; align-items: center; }
.nd-nav-links a { color: var(--nd-gris); text-decoration: none; font-size: 15px; font-weight: 500; font-family: var(--nd-font-ui); transition: color .2s; }
.nd-nav-links a:hover { color: var(--nd-taupe); }
.nd-btn-connexion { border: 1.5px solid var(--nd-taupe); color: var(--nd-taupe) !important; padding: 8px 22px; border-radius: 30px; font-weight: 600 !important; }
.nd-btn-connexion:hover { background: var(--nd-beige); }

/* Footer redesigné */
.nd-footer { background: var(--nd-navy); color: rgba(255,255,255,0.75); padding: 50px 40px 26px; }
.nd-footer-grid { display: flex; justify-content: space-between; gap: 40px; flex-wrap: wrap; max-width: 1100px; margin: 0 auto; }
.nd-footer h4 { color: var(--nd-blanc); font-family: var(--nd-font-titre); font-size: 16px; margin-bottom: 14px; }
.nd-footer a { color: rgba(255,255,255,0.75); text-decoration: none; display: block; padding: 4px 0; font-size: 14.5px; }
.nd-footer a:hover { color: var(--nd-beige-clair); }
.nd-footer-social { display: flex; gap: 12px; margin-top: 10px; }
/* Les icônes sociales gardent leur forme ronde (sinon .nd-footer a { display:block } les écrase) */
.nd-footer .nd-footer-social a { display: inline-flex; padding: 0; }
.nd-copyright { text-align: center; margin-top: 36px; font-size: 13px; color: rgba(255,255,255,0.45); }
.nd-copyright a { color: rgba(255,255,255,0.55); }

/* ===== Tablette ===== */
@media (max-width: 992px) {
  .nd-hero { min-height: auto; padding: 60px 20px 70px; }
  .nd-hero-preuves { gap: 30px; }
  .nd-piliers-grid, .nd-tarif-grid { gap: 18px; }
  .nd-fondatrice-inner, .nd-event-card { grid-template-columns: 1fr; gap: 28px; }
}

/* ===== Menu : hamburger dès 1100px pour éviter que le nav passe sur 2 lignes
   (sinon le nav fixe, plus haut, recouvre le début de la page).
   Seuil relevé de 992 à 1100 px : avec le lien « Témoignages », les 9 entrées
   ne tiennent plus sur une ligne en dessous de ~1150 px. ===== */
@media (max-width: 1100px) {
  .nd-nav { padding: 10px 18px; }
  .nd-nav-toggle { display: inline-flex; }
  .nd-nav-links { display: none; width: 100%; flex-direction: column; align-items: stretch; gap: 4px; padding: 8px 0 4px; }
  .nd-nav.nd-nav-open .nd-nav-links { display: flex; }
  .nd-nav-links a { padding: 11px 8px; border-radius: 8px; }
  .nd-nav-links a:hover { background: var(--nd-beige); }
  .nd-nav-links .nd-ico-social { width: 42px; }
  .nd-btn-connexion { text-align: center; margin-top: 6px; }
}

/* ===== Mobile : mise en page une colonne ===== */
@media (max-width: 860px) {
  .nd-event-card { padding: 32px 22px; }
  .nd-recherche { border-radius: 22px; padding: 8px; }
  .nd-recherche select, .nd-recherche input { border-right: none; border-bottom: 1px solid #E3EAF0; min-width: 100%; }
  .nd-recherche .nd-btn-chercher { width: 100%; }
  .nd-section { padding: 52px 18px; }
  .nd-piliers-grid, .nd-tarif-grid, .nd-cat-grid { gap: 14px; }
  .nd-tarif-card { max-width: 100%; transform: none; }
  .nd-tarif-card.nd-star { transform: none; }
  .nd-hero-preuves { gap: 22px 34px; margin-top: 34px; }
  .nd-sponsor-strip, .nd-gallery-note { text-align: center; justify-content: center; }
  .nd-footer { padding: 40px 22px 24px; }
  .nd-footer-grid { gap: 28px; }
}

/* ===== Petit téléphone ===== */
@media (max-width: 480px) {
  .nd-event-banner { font-size: 13px; padding: 10px 14px; }
  .nd-event-banner a { display: inline-block; margin: 8px 0 0; }
  .nd-hero { padding: 46px 16px 56px; }
  .nd-badge-cible { font-size: 11px; padding: 8px 16px; letter-spacing: 1px; }
  .nd-hero-preuves { gap: 18px 26px; }
  .nd-preuve .nd-chiffre { font-size: 24px; }
  .nd-section { padding: 44px 16px; }
  .nd-pilier { padding: 32px 24px; min-width: 0; }
  .nd-event-section { padding: 60px 16px; }
  .nd-event-card { padding: 26px 18px; }
  .nd-compteur .nd-bloc { min-width: 56px; padding: 12px; }
  .nd-tarif-card { padding: 30px 22px; }
  .nd-btn-bleu, .nd-btn-ghost, .nd-btn-accent { padding: 14px 26px; font-size: 15px; }
  .nd-hero-ctas .nd-btn-bleu, .nd-hero-ctas .nd-btn-ghost { width: 100%; text-align: center; }
  .nd-cat { font-size: 14px; padding: 11px 18px; }
}

/* ===== Pages Auth (connexion / inscription) ===== */
.nd-auth { min-height: 100vh; display: flex; font-family: var(--nd-font-texte); color: var(--nd-texte); background: var(--nd-blanc); }
.nd-auth-visual { flex: 1; position: relative; background: linear-gradient(160deg, var(--nd-navy), var(--nd-taupe)); color: #fff; display: flex; flex-direction: column; justify-content: center; padding: 60px 55px; overflow: hidden; }
.nd-auth-visual::after { content: ""; position: absolute; bottom: 0; left: 0; right: 0; height: 5px; background: linear-gradient(90deg, var(--nd-maroc-rouge) 0 45%, var(--nd-maroc-vert) 55% 100%); }
.nd-auth-visual .nd-auth-logo img { height: 54px; width: auto; background: #fff; border-radius: 10px; padding: 6px 12px; }
.nd-auth-visual h2 { font-family: var(--nd-font-titre); font-size: 32px; font-weight: 800; margin-top: 28px; line-height: 1.25; max-width: 430px; }
.nd-auth-visual h2 span { color: var(--nd-beige-clair); }
.nd-auth-visual .nd-auth-desc { margin-top: 16px; font-size: 16px; color: rgba(255,255,255,0.9); line-height: 1.6; max-width: 430px; }
.nd-auth-points { margin-top: 30px; display: flex; flex-direction: column; gap: 12px; }
.nd-auth-points div { display: flex; align-items: center; gap: 12px; font-size: 15px; }
.nd-auth-points i { color: var(--nd-beige-clair); font-size: 18px; }
.nd-auth-form-side { flex: 1; display: flex; align-items: center; justify-content: center; padding: 40px 24px; }
.nd-auth-card { width: 100%; max-width: 440px; }
.nd-auth-card .nd-auth-title { font-family: var(--nd-font-titre); font-size: 26px; font-weight: 800; color: var(--nd-navy); }
.nd-auth-card .nd-auth-sub { color: var(--nd-gris); margin: 6px 0 24px; font-size: 15px; }
.nd-auth-card input[type=text], .nd-auth-card input[type=email], .nd-auth-card input[type=password], .nd-auth-card input[type=tel], .nd-auth-card select {
  width: 100%; padding: 13px 16px; margin-bottom: 14px; border: 1.5px solid #dbe6ec; border-radius: 12px; font-family: var(--nd-font-ui); font-size: 15px; color: var(--nd-texte); background: #fff; outline: none; transition: border-color .2s, box-shadow .2s;
}
.nd-auth-card input:focus, .nd-auth-card select:focus { border-color: var(--nd-taupe); box-shadow: 0 0 0 3px rgba(155,139,116,0.15); }
.nd-auth-card select { -webkit-appearance: none; appearance: none; cursor: pointer; padding-right: 40px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath fill='%23388da8' d='M6 8 0 0h12z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; }
.nd-auth-card button[type=submit] { width: 100%; margin-top: 6px; border: none; cursor: pointer; background: linear-gradient(90deg, var(--nd-taupe), var(--nd-taupe-clair)); color: #fff; font-weight: 700; font-size: 16px; padding: 14px; border-radius: 40px; box-shadow: 0 8px 22px rgba(155,139,116,0.28); transition: transform .2s; }
.nd-auth-card button[type=submit]:hover { transform: translateY(-2px); }
.nd-auth-card .nd-auth-link { text-align: center; margin-top: 20px; color: var(--nd-gris); font-size: 14.5px; }
.nd-auth-card .nd-auth-link a { color: var(--nd-taupe); font-weight: 600; text-decoration: none; }
.nd-auth-card .nd-checkbox { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; font-size: 14px; color: var(--nd-gris); }
.nd-auth-card .nd-checkbox input { width: auto; margin: 0; }
.nd-role-title { font-weight: 600; color: var(--nd-navy); margin-bottom: 10px; }
.nd-role-selection { display: flex; gap: 12px; margin-bottom: 18px; }
.nd-role-option { flex: 1; text-align: center; padding: 16px; border: 1.5px solid #dbe6ec; border-radius: 14px; cursor: pointer; font-weight: 600; color: var(--nd-gris); transition: all .2s; user-select: none; }
.nd-role-option:hover { border-color: var(--nd-taupe-clair); }
.nd-role-option.selected { border-color: var(--nd-taupe); background: var(--nd-beige); color: var(--nd-navy); box-shadow: 0 4px 14px rgba(155,139,116,0.12); }
.nd-auth-alert { padding: 12px 16px; border-radius: 10px; margin-bottom: 14px; font-size: 14px; }
.nd-auth-alert.err { background: #fdeaea; color: #a12626; }
.nd-auth-alert.ok { background: #e8f6ee; color: #1c7a43; }
@media (max-width: 860px) {
  .nd-auth { flex-direction: column; }
  .nd-auth-visual { padding: 36px 28px; }
  .nd-auth-visual h2 { font-size: 23px; margin-top: 16px; }
  .nd-auth-points { display: none; }
}

/* ===================================================================
   Liste des prestataires (/profil/list — annuaire)
   =================================================================== */
.nd-liste-page { padding-top: 80px; background: var(--nd-beige); min-height: 100vh; }

/* Bannière « Abonnement requis » (abonné connecté sans abo actif) */
.nd-sub-alert { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 14px; background: linear-gradient(90deg, var(--nd-maroc-rouge), #a51f24); color: #fff; padding: 12px 20px; font-size: 14.5px; font-weight: 500; }
.nd-sub-alert i { margin-right: 4px; }
.nd-sub-alert a { background: #fff; color: var(--nd-maroc-rouge); font-weight: 700; padding: 7px 18px; border-radius: 30px; text-decoration: none; font-size: 13.5px; white-space: nowrap; }
.nd-sub-alert a:hover { background: #ffe9ea; }

/* En-tête (bandeau teal) */
.nd-liste-head { position: relative; background: linear-gradient(160deg, var(--nd-navy), var(--nd-taupe)); color: #fff; text-align: center; padding: 46px 24px 90px; overflow: hidden; }
.nd-liseret-top { position: absolute; top: 0; left: 0; right: 0; }
.nd-liste-head-inner { max-width: 760px; margin: 0 auto; position: relative; z-index: 1; }
.nd-liste-head .nd-badge-cible { margin-bottom: 18px; }
.nd-liste-head h1 { font-family: var(--nd-font-titre); font-size: clamp(28px, 4vw, 42px); font-weight: 800; line-height: 1.2; color: #fff; }
.nd-liste-head h1 em { font-style: normal; color: var(--nd-beige-clair); }
.nd-liste-head p { margin-top: 14px; font-size: 16px; color: rgba(255,255,255,0.9); line-height: 1.6; }

/* Barre de filtres (chevauche le bandeau) */
.nd-liste-filtres-wrap { max-width: 1000px; margin: -58px auto 0; padding: 0 20px; position: relative; z-index: 2; }
.nd-liste-filtres { background: #fff; border-radius: 18px; box-shadow: 0 14px 40px rgba(14,1,71,0.16); padding: 14px; display: flex; gap: 10px; flex-wrap: wrap; align-items: stretch; }
.nd-filtre-champ { flex: 1; min-width: 170px; display: flex; align-items: center; gap: 8px; background: var(--nd-beige); border: 1.5px solid transparent; border-radius: 12px; padding: 0 14px; transition: border-color .2s, background .2s; }
.nd-filtre-champ:focus-within { border-color: var(--nd-taupe); background: #fff; }
.nd-filtre-champ > i { color: var(--nd-taupe); font-size: 16px; }
.nd-filtre-q { flex: 2; min-width: 220px; }
.nd-filtre-champ input, .nd-filtre-champ select { flex: 1; width: 100%; border: none; outline: none; background: transparent; padding: 14px 0; font-family: var(--nd-font-ui); font-size: 14.5px; color: var(--nd-texte); }
.nd-filtre-champ select { -webkit-appearance: none; appearance: none; cursor: pointer; padding-right: 18px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath fill='%23388da8' d='M6 8 0 0h12z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right center; }
.nd-liste-filtres .nd-btn-chercher { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; gap: 8px; background: linear-gradient(90deg, var(--nd-taupe), var(--nd-taupe-clair)); color: #fff; border: none; padding: 0 28px; border-radius: 12px; font-weight: 700; font-size: 14.5px; cursor: pointer; font-family: var(--nd-font-ui); transition: transform .2s; }
.nd-liste-filtres .nd-btn-chercher:hover { transform: translateY(-2px); }

/* Résumé (compteur + réinitialisation) */
.nd-liste-resume { max-width: 1000px; margin: 18px auto 0; padding: 0 4px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; }
.nd-resume-count { color: var(--nd-gris); font-size: 15px; }
.nd-resume-count strong { color: var(--nd-navy); font-size: 17px; }
.nd-reset-filtres { color: var(--nd-taupe); font-weight: 600; font-size: 14px; text-decoration: none; display: inline-flex; align-items: center; gap: 6px; }
.nd-reset-filtres:hover { color: var(--nd-maroc-rouge); }

/* Grille de résultats */
.nd-liste-resultats { max-width: 1180px; margin: 0 auto; padding: 30px 20px 70px; }
.nd-liste-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 24px; }

/* Carte prestataire */
.nd-presta-card { background: #fff; border-radius: 18px; overflow: hidden; box-shadow: 0 6px 22px rgba(14,1,71,0.08); display: flex; flex-direction: column; transition: transform .2s, box-shadow .2s; }
.nd-presta-card:hover { transform: translateY(-5px); box-shadow: 0 16px 40px rgba(14,1,71,0.16); }
.nd-presta-media { position: relative; aspect-ratio: 16 / 10; background: var(--nd-beige); overflow: hidden; }
.nd-presta-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.nd-presta-initiales { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-family: var(--nd-font-titre); font-size: 44px; font-weight: 800; color: var(--nd-taupe); background: linear-gradient(135deg, var(--nd-beige), #dcecf3); }
.nd-presta-verif { position: absolute; top: 12px; right: 12px; width: 30px; height: 30px; border-radius: 50%; background: #fff; color: var(--nd-taupe); display: inline-flex; align-items: center; justify-content: center; font-size: 16px; box-shadow: 0 2px 8px rgba(0,0,0,0.15); }
.nd-presta-domaine { position: absolute; left: 12px; bottom: 12px; max-width: calc(100% - 24px); background: rgba(62,80,85,0.9); color: #fff; font-size: 12px; font-weight: 600; padding: 5px 12px; border-radius: 30px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nd-presta-body { padding: 18px 20px 20px; display: flex; flex-direction: column; flex: 1; }
.nd-presta-nom { font-family: var(--nd-font-titre); font-size: 18px; font-weight: 700; color: var(--nd-navy); margin: 0; }
.nd-presta-titre { color: var(--nd-taupe); font-size: 13.5px; font-weight: 600; margin-top: 2px; }
.nd-presta-meta { color: var(--nd-gris); font-size: 13px; margin-top: 8px; display: flex; align-items: center; gap: 5px; }
.nd-presta-desc { color: var(--nd-gris); font-size: 14px; line-height: 1.55; margin-top: 10px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.nd-presta-foot { margin-top: auto; padding-top: 16px; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.nd-stars { display: flex; align-items: center; gap: 2px; color: var(--nd-taupe); font-size: 13px; }
.nd-stars .bi-star { color: #d4dde3; }
.nd-stars-txt { color: var(--nd-gris); font-size: 12.5px; margin-left: 5px; font-weight: 600; }
.nd-stars-txt small { font-weight: 400; color: #9aa7b0; }
.nd-presta-btn { background: var(--nd-taupe); color: #fff !important; text-decoration: none; padding: 9px 18px; border-radius: 30px; font-size: 13.5px; font-weight: 700; white-space: nowrap; transition: background .2s; }
.nd-presta-btn:hover { background: var(--nd-navy); }

/* Pagination */
.nd-pagination { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; margin-top: 44px; }
.nd-page-lien { min-width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; padding: 0 12px; border-radius: 10px; background: #fff; color: var(--nd-navy); text-decoration: none; font-weight: 600; font-size: 15px; box-shadow: 0 3px 12px rgba(14,1,71,0.08); transition: all .2s; }
.nd-page-lien:hover { background: var(--nd-beige); color: var(--nd-taupe); }
.nd-page-lien.nd-actif { background: linear-gradient(90deg, var(--nd-taupe), var(--nd-taupe-clair)); color: #fff; box-shadow: 0 6px 18px rgba(155,139,116,0.35); }

/* État vide */
.nd-empty { text-align: center; padding: 60px 24px; background: #fff; border-radius: 20px; box-shadow: 0 6px 22px rgba(14,1,71,0.06); max-width: 560px; margin: 10px auto; }
.nd-empty-ico { width: 76px; height: 76px; border-radius: 50%; background: var(--nd-beige); color: var(--nd-taupe); display: inline-flex; align-items: center; justify-content: center; font-size: 32px; margin-bottom: 18px; }
.nd-empty h3 { font-family: var(--nd-font-titre); font-size: 22px; font-weight: 700; color: var(--nd-navy); }
.nd-empty p { color: var(--nd-gris); margin: 10px 0 22px; }

/* Messages flash */
.nd-flash { padding: 13px 18px; border-radius: 12px; margin-bottom: 16px; font-size: 14.5px; }
.nd-flash-error, .nd-flash-danger { background: #fdeaea; color: #a12626; }
.nd-flash-success { background: #e8f6ee; color: #1c7a43; }
.nd-flash-info { background: #fff; color: var(--nd-navy); box-shadow: 0 3px 12px rgba(14,1,71,0.06); }

/* Responsive liste */
@media (max-width: 860px) {
  .nd-liste-head { padding: 40px 20px 84px; }
  .nd-liste-filtres { flex-direction: column; }
  .nd-filtre-champ, .nd-filtre-q { min-width: 100%; }
  .nd-liste-grid { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 18px; }
}
@media (max-width: 480px) {
  .nd-liste-grid { grid-template-columns: 1fr; }
  .nd-liste-resume { flex-direction: column; align-items: flex-start; }
}

/* ===================================================================
   Offres disponibles (/offres) + modal candidature
   =================================================================== */
.nd-offres-grid { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.nd-offre-card { background: #fff; border-radius: 18px; padding: 24px 24px 22px; box-shadow: 0 6px 22px rgba(14,1,71,0.08); display: flex; flex-direction: column; border-top: 4px solid var(--nd-taupe); transition: transform .2s, box-shadow .2s; }
.nd-offre-card:hover { transform: translateY(-5px); box-shadow: 0 16px 40px rgba(14,1,71,0.16); }
.nd-offre-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 14px; }
.nd-offre-type { background: var(--nd-beige); color: var(--nd-taupe); font-size: 12px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; padding: 5px 14px; border-radius: 30px; }
.nd-offre-date { color: var(--nd-gris); font-size: 12.5px; display: inline-flex; align-items: center; gap: 5px; }
.nd-offre-titre { font-family: var(--nd-font-titre); font-size: 19px; font-weight: 700; color: var(--nd-navy); margin: 0; line-height: 1.3; }
.nd-offre-auteur { color: var(--nd-gris); font-size: 13px; margin-top: 8px; display: inline-flex; align-items: center; gap: 6px; }
.nd-offre-desc { color: var(--nd-gris); font-size: 14px; line-height: 1.6; margin-top: 12px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.nd-offre-foot { margin-top: auto; padding-top: 18px; }
.nd-offre-btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; width: 100%; border: none; cursor: pointer; }
.nd-offre-postule { display: inline-flex; align-items: center; gap: 8px; width: 100%; justify-content: center; background: #e8f6ee; color: #1c7a43; font-weight: 700; font-size: 14px; padding: 10px; border-radius: 30px; }
.nd-offre-lock { display: inline-flex; align-items: center; justify-content: center; gap: 8px; width: 100%; background: #f4f6f8; color: var(--nd-gris); font-weight: 600; font-size: 13.5px; padding: 11px; border-radius: 30px; text-decoration: none; border: 1px dashed #cfd9e0; }
.nd-offre-lock:hover { background: var(--nd-beige); color: var(--nd-taupe); border-color: var(--nd-taupe-clair); }

/* Modal candidature (surcharge du composant Bootstrap) */
.nd-modal { border: none; border-radius: 20px; overflow: hidden; box-shadow: 0 24px 70px rgba(14,1,71,0.3); font-family: var(--nd-font-texte); }
.nd-modal-head { background: linear-gradient(120deg, var(--nd-navy), var(--nd-taupe)); color: #fff; padding: 20px 24px; display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.nd-modal-head h5 { font-family: var(--nd-font-titre); font-weight: 800; font-size: 19px; margin: 0; }
.nd-modal-offre { margin: 4px 0 0; font-size: 13.5px; color: var(--nd-beige-clair); font-weight: 600; }
.nd-modal-close { background: rgba(255,255,255,0.18); border: none; color: #fff; width: 34px; height: 34px; border-radius: 50%; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; font-size: 15px; flex: 0 0 auto; transition: background .2s; }
.nd-modal-close:hover { background: rgba(255,255,255,0.32); }
.nd-modal-body { padding: 22px 24px; background: #fff; }
.nd-modal-row { margin-bottom: 15px; }
.nd-modal-row label { display: block; font-weight: 600; color: var(--nd-navy); font-size: 14px; margin-bottom: 6px; }
.nd-modal-row .nd-opt { font-weight: 400; color: var(--nd-gris); font-size: 12.5px; }
.nd-modal-row .nd-req { color: var(--nd-maroc-rouge); }
.nd-modal-row input, .nd-modal-row textarea { width: 100%; border: 1.5px solid #dbe6ec; border-radius: 12px; padding: 12px 14px; font-family: var(--nd-font-ui); font-size: 14.5px; color: var(--nd-texte); background: #fff; outline: none; transition: border-color .2s, box-shadow .2s; }
.nd-modal-row input[readonly] { background: var(--nd-beige); color: var(--nd-gris); }
.nd-modal-row input:focus, .nd-modal-row textarea:focus { border-color: var(--nd-taupe); box-shadow: 0 0 0 3px rgba(155,139,116,0.15); }
.nd-modal-row textarea { resize: vertical; }
.nd-modal-foot { padding: 16px 24px 22px; background: #fff; display: flex; justify-content: flex-end; gap: 12px; flex-wrap: wrap; }
.nd-btn-sm { padding: 11px 22px; font-size: 14.5px; display: inline-flex; align-items: center; gap: 7px; }

@media (max-width: 480px) {
  .nd-offres-grid { grid-template-columns: 1fr; }
  .nd-modal-foot { flex-direction: column-reverse; }
  .nd-modal-foot .nd-btn-sm { width: 100%; justify-content: center; }
}

/* Page offres unifiée (publier + mes offres + postuler) */
.nd-offre-publish-btn { margin-top: 22px; display: inline-flex; align-items: center; gap: 9px; }
.nd-section-titre { max-width: 1180px; margin: 34px auto 16px; display: flex; align-items: center; gap: 10px; font-family: var(--nd-font-titre); font-size: 21px; font-weight: 800; color: var(--nd-navy); }
.nd-section-titre:first-of-type { margin-top: 6px; }
.nd-section-titre i { color: var(--nd-taupe); font-size: 20px; }
.nd-liste-resultats > .nd-section-titre { padding: 0 4px; }

/* Cartes « mes offres » */
.nd-mine-card { border-top-color: var(--nd-taupe); }
.nd-mine-meta { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px; color: var(--nd-gris); font-size: 13px; }
.nd-mine-meta i { color: var(--nd-taupe); margin-right: 4px; }
.nd-mine-note { font-size: 13px; color: var(--nd-gris); display: inline-flex; align-items: center; gap: 7px; }
.nd-mine-note-refus { color: var(--nd-maroc-rouge); }
.nd-mine-card .nd-offre-foot form { width: 100%; margin: 0; }
.nd-mine-card .nd-offre-foot .nd-offre-btn,
.nd-mine-card .nd-offre-foot .nd-offre-lock { width: 100%; }

/* Badges de statut d'une offre */
.nd-statut { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; padding: 5px 12px; border-radius: 30px; white-space: nowrap; }
.nd-statut-live { background: #e8f6ee; color: #1c7a43; }
.nd-statut-attente { background: #fff5e6; color: #b26a00; }
.nd-statut-refus { background: #fdeaea; color: #a12626; }
.nd-statut-off { background: #eef1f4; color: #5e6e7c; }

/* Formulaire nd- (publier une offre, etc.) */
.nd-form-wrap { max-width: 680px; margin: -46px auto 0; padding: 0 20px 70px; position: relative; z-index: 2; }
.nd-form-back { display: inline-flex; align-items: center; gap: 7px; color: var(--nd-taupe); font-weight: 600; font-size: 14px; text-decoration: none; margin-bottom: 14px; }
.nd-form-back:hover { color: var(--nd-navy); }
.nd-form-card { background: #fff; border-radius: 18px; box-shadow: 0 10px 34px rgba(14,1,71,0.12); padding: 28px 26px; }
.nd-form-card .nd-field { margin-bottom: 18px; display: block; }
.nd-form-card label { display: block; font-weight: 600; color: var(--nd-navy); font-size: 14px; margin-bottom: 7px; }
.nd-form-card .nd-opt { font-weight: 400; color: var(--nd-gris); font-size: 12.5px; }
.nd-form-card .nd-req { color: var(--nd-maroc-rouge); }
.nd-form-card input, .nd-form-card select, .nd-form-card textarea {
  width: 100%; border: 1.5px solid #dbe6ec; border-radius: 12px; padding: 12px 15px; font-family: var(--nd-font-ui); font-size: 14.5px; color: var(--nd-texte); background: #fff; outline: none; transition: border-color .2s, box-shadow .2s;
}
.nd-form-card input:focus, .nd-form-card select:focus, .nd-form-card textarea:focus { border-color: var(--nd-taupe); box-shadow: 0 0 0 3px rgba(155,139,116,0.15); }
.nd-form-card select { -webkit-appearance: none; appearance: none; cursor: pointer; padding-right: 40px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath fill='%23388da8' d='M6 8 0 0h12z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; }
.nd-form-card textarea { resize: vertical; }
.nd-form-actions { display: flex; justify-content: flex-end; gap: 12px; margin-top: 8px; flex-wrap: wrap; }
@media (max-width: 480px) {
  .nd-form-actions { flex-direction: column-reverse; }
  .nd-form-actions .nd-btn-sm { width: 100%; justify-content: center; text-align: center; }
}

/* ===================================================================
   Page abonnement (/abonnement)
   =================================================================== */
.nd-abo-page .nd-liste-head { padding-bottom: 46px; }
.nd-abo-wrap { max-width: 1120px; margin: 26px auto 0; padding: 0 20px 70px; position: relative; z-index: 2; }
.nd-abo-grid { align-items: stretch; }
.nd-abo-grid { display: flex; gap: 22px; justify-content: center; flex-wrap: wrap; align-items: stretch; }
.nd-abo-card { flex: 1; min-width: 270px; max-width: 350px; background: #fff; border-radius: 20px; padding: 32px 28px; box-shadow: 0 10px 34px rgba(14,1,71,0.12); position: relative; display: flex; flex-direction: column; border: 2px solid transparent; transition: transform .2s, box-shadow .2s; }
.nd-abo-free { background: #fbfdfe; }
.nd-abo-badge-free { background: var(--nd-navy) !important; box-shadow: none !important; }
.nd-abo-souprix { margin: 4px 0 0; font-size: 13px; color: var(--nd-gris); font-weight: 600; }
.nd-abo-card:hover { transform: translateY(-4px); box-shadow: 0 18px 44px rgba(14,1,71,0.18); }
.nd-abo-card.nd-abo-star { border-color: var(--nd-taupe); }
.nd-abo-badge { position: absolute; top: -14px; left: 50%; transform: translateX(-50%); background: linear-gradient(90deg, var(--nd-taupe), var(--nd-taupe-clair)); color: #fff; font-size: 12px; font-weight: 800; letter-spacing: .5px; text-transform: uppercase; padding: 6px 18px; border-radius: 30px; white-space: nowrap; box-shadow: 0 6px 16px rgba(155,139,116,0.35); }
.nd-abo-nom { font-family: var(--nd-font-titre); font-size: 22px; font-weight: 800; color: var(--nd-navy); margin: 4px 0 0; }
.nd-abo-desc { color: var(--nd-gris); font-size: 14px; line-height: 1.5; margin: 6px 0 0; }
.nd-abo-prix { font-family: var(--nd-font-titre); font-size: 40px; font-weight: 800; color: var(--nd-taupe); margin: 18px 0 0; line-height: 1; }
.nd-abo-euro { font-size: 22px; vertical-align: super; margin-right: 2px; }
.nd-abo-periode { font-family: var(--nd-font-ui); font-size: 14px; font-weight: 500; color: var(--nd-gris); }
.nd-abo-engagement { display: inline-flex; align-items: center; gap: 7px; margin: 12px 0 20px; font-size: 13px; font-weight: 600; color: var(--nd-navy); }
.nd-abo-engagement i { color: var(--nd-maroc-vert); }
.nd-abo-actions { margin-top: auto; padding-top: 18px; display: flex; flex-direction: column; gap: 10px; }
.nd-abo-actions form { margin: 0; }
.nd-abo-btn { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; border: none; cursor: pointer; font-family: var(--nd-font-ui); font-weight: 700; font-size: 15px; padding: 13px; border-radius: 40px; text-decoration: none; transition: all .2s; }
.nd-abo-btn-primary { background: linear-gradient(90deg, var(--nd-taupe), var(--nd-taupe-clair)); color: #fff; box-shadow: 0 8px 22px rgba(155,139,116,0.28); }
.nd-abo-btn-primary:hover { transform: translateY(-2px); color: #fff; }
.nd-abo-btn-ghost { background: #fff; color: var(--nd-taupe); border: 1.5px solid var(--nd-taupe); }
.nd-abo-btn-ghost:hover { background: var(--nd-beige); }
.nd-abo-btn-disabled { background: #eef1f4; color: #9aa7b0; cursor: not-allowed; }
.nd-abo-note { color: var(--nd-gris); font-size: 12px; text-align: center; margin: 0 0 4px; line-height: 1.4; }
.nd-abo-features { list-style: none; margin: 20px 0 0; padding: 20px 0 0; border-top: 1px solid #eef3f6; }
.nd-abo-features li { display: flex; align-items: flex-start; gap: 9px; font-size: 14px; color: var(--nd-texte); padding: 7px 0; }
.nd-abo-features li i { color: var(--nd-maroc-vert); font-size: 15px; margin-top: 2px; flex: 0 0 auto; }
.nd-abo-secure { text-align: center; color: var(--nd-gris); font-size: 13px; margin: 30px auto 0; display: flex; align-items: center; justify-content: center; gap: 8px; }
.nd-abo-secure i { color: var(--nd-taupe); }
@media (max-width: 600px) {
  .nd-abo-card.nd-abo-star { transform: none; }
  .nd-abo-card { max-width: 100%; }
}

/* Page de confirmation de paiement */
.nd-confirm-page { min-height: 78vh; display: flex; align-items: center; justify-content: center; padding: 90px 18px 40px; background: var(--nd-beige); }
.nd-confirm-card { max-width: 520px; width: 100%; text-align: center; background: #fff; border-radius: 20px; box-shadow: 0 14px 44px rgba(14,1,71,0.14); padding: 44px 32px; }
.nd-confirm-card h3 { font-family: var(--nd-font-titre); font-weight: 800; color: var(--nd-navy); margin: 22px 0 0; font-size: 22px; }
.nd-confirm-card p { color: var(--nd-gris); margin: 12px 0 0; line-height: 1.6; font-size: 14.5px; }
.nd-confirm-card .nd-btn-bleu { margin-top: 20px; }
.nd-confirm-emoji { font-size: 46px; }
.nd-confirm-spinner { width: 52px; height: 52px; border-radius: 50%; border: 5px solid var(--nd-beige); border-top-color: var(--nd-taupe); margin: 0 auto; animation: ndSpin 0.8s linear infinite; }
@keyframes ndSpin { to { transform: rotate(360deg); } }

/* ===================================================================
   Consulter un prestataire (/profil/{id}/consulter) — habillage nd-
   =================================================================== */
.nd-consulter { padding-top: 80px; background: var(--nd-beige); min-height: 100vh; }
.nd-consulter > .container, .nd-consulter section > .container { max-width: 1100px; }
.nd-consulter section { padding: 24px 0 40px; }
/* Bandeau d'en-tête décoratif → teal */
.nd-consulter .pt-20 { height: 130px; border-radius: 20px 20px 0 0 !important; background: linear-gradient(120deg, var(--nd-navy), var(--nd-taupe)) !important; }
.nd-consulter .card { border: none !important; border-radius: 20px !important; box-shadow: 0 8px 30px rgba(14,1,71,0.10) !important; }
.nd-consulter .avatar-xxl.rounded-circle, .nd-consulter .avatar-xxl img { border: 4px solid #fff !important; box-shadow: 0 6px 18px rgba(14,1,71,0.18); background: #fff; }
.nd-consulter h4, .nd-consulter h5, .nd-consulter h6, .nd-consulter .title { color: var(--nd-navy) !important; font-family: var(--nd-font-titre); }
/* Bouton Contacter */
.nd-consulter .contact-pro .btn-getstarted { background: linear-gradient(90deg, var(--nd-taupe), var(--nd-taupe-clair)) !important; color: #fff !important; border: none !important; border-radius: 40px !important; padding: 11px 30px !important; font-weight: 700; box-shadow: 0 8px 22px rgba(155,139,116,0.28); transition: transform .2s; }
.nd-consulter .contact-pro .btn-getstarted:hover { transform: translateY(-2px); }
.nd-consulter .contact-pro a[style*="ccc"], .nd-consulter .contact-pro a[style*="not-allowed"] { background: #eef1f4 !important; color: var(--nd-gris) !important; box-shadow: none; }
/* Cartes d'info + timeline */
.nd-consulter .info-item { background: #fff !important; border-radius: 16px; box-shadow: 0 6px 22px rgba(14,1,71,0.08) !important; padding: 22px !important; margin-bottom: 20px; }
.nd-consulter .details a, .nd-consulter .text-primary { color: var(--nd-taupe) !important; }
.nd-consulter .details i, .nd-consulter .fas { color: var(--nd-taupe) !important; }
.nd-consulter .badge.hov-badge { background: var(--nd-beige) !important; color: var(--nd-navy) !important; font-weight: 600; padding: 8px 14px; border-radius: 30px; }
.nd-consulter .competence-badges { display: flex; flex-wrap: wrap; gap: 8px; }
.nd-consulter .timeline-item { position: relative; padding-left: 22px; padding-bottom: 18px; border-left: 2px solid #dce8ee; margin-left: 6px; }
.nd-consulter .timeline-item:last-child { border-left-color: transparent; }
.nd-consulter .timeline-icon { position: absolute; left: -7px; top: 4px; width: 12px; height: 12px; border-radius: 50%; background: var(--nd-taupe); box-shadow: 0 0 0 3px var(--nd-beige); }
.nd-consulter .timeline-content { background: var(--nd-beige); border-radius: 12px; padding: 12px 16px; }
/* Avis */
.nd-consulter .stars .bi-star-fill { font-size: 15px; }
.nd-consulter #flash-messages .flash { padding: 12px 16px; border-radius: 12px; margin-bottom: 14px; background: #fff; box-shadow: 0 3px 12px rgba(14,1,71,0.06); }
/* Modal d'avis (Bootstrap) */
.nd-consulter .modal-content { border: none; border-radius: 18px; box-shadow: 0 24px 70px rgba(14,1,71,0.28); }
.nd-consulter .modal-header { border: none; }

/* ===================================================================
   Messagerie (chat client) — temps réel
   =================================================================== */
.nd-chat-page { padding-top: 70px; height: 100vh; display: flex; flex-direction: column; background: var(--nd-beige); }
.nd-chat { flex: 1; min-height: 0; display: flex; max-width: 1300px; width: 100%; margin: 0 auto; background: #fff; box-shadow: 0 6px 30px rgba(14,1,71,0.10); }

/* Avatars partagés */
.nd-chat-avatar { flex: 0 0 auto; width: 46px; height: 46px; border-radius: 50%; overflow: hidden; display: inline-flex; align-items: center; justify-content: center; background: var(--nd-beige); }
.nd-chat-avatar img { width: 100%; height: 100%; object-fit: cover; }
.nd-chat-avatar-txt { background: linear-gradient(135deg, var(--nd-taupe), var(--nd-taupe-clair)); color: #fff; font-family: var(--nd-font-titre); font-weight: 800; font-size: 18px; }

/* Sidebar conversations */
.nd-chat-sidebar { flex: 0 0 320px; border-right: 1px solid #e6eef2; display: flex; flex-direction: column; min-height: 0; background: #fff; }
.nd-chat-sidebar-head { padding: 20px 22px; font-family: var(--nd-font-titre); font-weight: 800; color: var(--nd-navy); font-size: 17px; border-bottom: 1px solid #eef3f6; display: flex; align-items: center; gap: 9px; }
.nd-chat-sidebar-head i { color: var(--nd-taupe); }
.nd-chat-list { list-style: none; margin: 0; padding: 8px; overflow-y: auto; flex: 1; min-height: 0; }
.nd-chat-item { display: flex; align-items: center; gap: 12px; padding: 11px 12px; border-radius: 14px; text-decoration: none; transition: background .15s; }
.nd-chat-item:hover { background: var(--nd-beige); }
.nd-chat-item.nd-actif { background: var(--nd-beige); box-shadow: inset 3px 0 0 var(--nd-taupe); }
.nd-chat-item-info { min-width: 0; display: flex; flex-direction: column; }
.nd-chat-item-nom { font-weight: 700; color: var(--nd-navy); font-size: 14.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nd-chat-item-last { color: var(--nd-gris); font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* Zone conversation */
.nd-chat-main { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; background: #f7fafc; }
.nd-chat-topbar { flex: 0 0 auto; display: flex; align-items: center; gap: 12px; padding: 14px 22px; background: #fff; border-bottom: 1px solid #e6eef2; }
.nd-chat-back { display: none; width: 40px; height: 40px; border-radius: 50%; align-items: center; justify-content: center; color: var(--nd-navy); background: var(--nd-beige); text-decoration: none; font-size: 18px; flex: 0 0 auto; }
.nd-chat-topbar-info { min-width: 0; }
.nd-chat-topbar-nom { font-family: var(--nd-font-titre); font-weight: 800; color: var(--nd-navy); font-size: 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nd-chat-topbar-status { color: var(--nd-gris); font-size: 12.5px; display: flex; align-items: center; gap: 6px; }
.nd-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--nd-maroc-vert); display: inline-block; }

/* Historique + bulles */
.nd-chat-history { flex: 1; min-height: 0; overflow-y: auto; padding: 24px 22px; display: flex; flex-direction: column; gap: 12px; }
.nd-msg { display: flex; max-width: 74%; }
.nd-msg-mine { align-self: flex-end; justify-content: flex-end; }
.nd-msg-other { align-self: flex-start; }
.nd-msg-bulle { position: relative; padding: 10px 15px 20px; border-radius: 16px; font-size: 14.5px; line-height: 1.5; word-wrap: break-word; overflow-wrap: anywhere; box-shadow: 0 2px 8px rgba(14,1,71,0.06); }
.nd-msg-mine .nd-msg-bulle { background: linear-gradient(135deg, var(--nd-taupe), var(--nd-taupe-clair)); color: #fff; border-bottom-right-radius: 5px; }
.nd-msg-other .nd-msg-bulle { background: #fff; color: var(--nd-texte); border-bottom-left-radius: 5px; }
.nd-msg-txt { display: block; white-space: pre-wrap; }
.nd-msg-file { display: inline-flex; align-items: center; gap: 6px; margin-top: 6px; font-size: 13.5px; font-weight: 600; text-decoration: underline; color: inherit; }
.nd-msg-mine .nd-msg-file { color: #fff; }
.nd-msg-other .nd-msg-file { color: var(--nd-taupe); }
.nd-msg-time { position: absolute; right: 12px; bottom: 5px; font-size: 10.5px; opacity: .7; }
.nd-chat-empty { margin: auto; text-align: center; color: var(--nd-gris); }
.nd-chat-empty i { font-size: 40px; color: var(--nd-taupe-clair); }
.nd-chat-empty p { margin-top: 12px; font-size: 14.5px; }

/* Barre de saisie */
.nd-chat-compose { flex: 0 0 auto; display: flex; align-items: center; gap: 10px; padding: 14px 18px; background: #fff; border-top: 1px solid #e6eef2; }
.nd-chat-attach { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--nd-beige); color: var(--nd-taupe); cursor: pointer; font-size: 19px; margin: 0; transition: background .2s; }
.nd-chat-attach:hover { background: #dcecf3; }
.nd-chat-input-wrap { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.nd-chat-input-wrap input { width: 100%; border: 1.5px solid #dbe6ec; border-radius: 40px; padding: 13px 20px; font-family: var(--nd-font-ui); font-size: 14.5px; color: var(--nd-texte); outline: none; transition: border-color .2s, box-shadow .2s; }
.nd-chat-input-wrap input:focus { border-color: var(--nd-taupe); box-shadow: 0 0 0 3px rgba(155,139,116,0.15); }
.nd-chat-file-badge { font-size: 12px; color: var(--nd-taupe); margin: 5px 0 0 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nd-chat-send { flex: 0 0 auto; width: 48px; height: 48px; border-radius: 50%; border: none; cursor: pointer; background: linear-gradient(135deg, var(--nd-taupe), var(--nd-taupe-clair)); color: #fff; font-size: 18px; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 6px 18px rgba(155,139,116,0.35); transition: transform .15s; }
.nd-chat-send:hover { transform: scale(1.06); }

/* Liste des conversations (page indexConv) */
.nd-conv-wrap { max-width: 760px; margin: -40px auto 0; padding: 0 20px 60px; position: relative; z-index: 2; }
.nd-conv-list { list-style: none; margin: 0; padding: 0; background: #fff; border-radius: 18px; box-shadow: 0 10px 34px rgba(14,1,71,0.12); overflow: hidden; }
.nd-conv-item { display: flex; align-items: center; gap: 14px; padding: 16px 20px; text-decoration: none; border-bottom: 1px solid #eef3f6; transition: background .15s; }
.nd-conv-list li:last-child .nd-conv-item { border-bottom: none; }
.nd-conv-item:hover { background: var(--nd-beige); }
.nd-conv-info { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.nd-conv-nom { font-family: var(--nd-font-titre); font-weight: 700; color: var(--nd-navy); font-size: 15.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nd-conv-last { color: var(--nd-gris); font-size: 13.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; }
.nd-conv-go { color: var(--nd-taupe-clair); font-size: 18px; flex: 0 0 auto; }

/* Responsive chat */
@media (max-width: 860px) {
  .nd-chat-sidebar { display: none; }
  .nd-chat-back { display: inline-flex; }
  .nd-msg { max-width: 86%; }
}

/* ===================================================================
   Espace administration
   =================================================================== */
.nd-admin { font-family: var(--nd-font-texte); background: var(--nd-beige); color: var(--nd-texte); margin: 0; min-height: 100vh; }
.nd-admin * { box-sizing: border-box; }

/* Barre du haut */
.nd-admin-topbar { position: sticky; top: 0; z-index: 1000; background: var(--nd-navy); box-shadow: 0 2px 14px rgba(14,1,71,0.18); }
.nd-admin-topbar-inner { max-width: 1280px; margin: 0 auto; display: flex; align-items: center; gap: 16px; padding: 10px 22px; flex-wrap: wrap; }
.nd-admin-brand { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; color: #fff; font-family: var(--nd-font-titre); font-weight: 800; }
.nd-admin-brand img { height: 34px; background: #fff; border-radius: 7px; padding: 3px 7px; }
.nd-admin-brand span { font-size: 15px; letter-spacing: .5px; opacity: .9; }
.nd-admin-toggle { display: none; margin-left: auto; background: rgba(255,255,255,0.12); border: none; color: #fff; font-size: 22px; width: 42px; height: 42px; border-radius: 10px; cursor: pointer; }
.nd-admin-links { display: flex; align-items: center; gap: 4px; flex: 1; flex-wrap: wrap; }
.nd-admin-links a { display: inline-flex; align-items: center; gap: 7px; color: rgba(255,255,255,0.82); text-decoration: none; font-family: var(--nd-font-ui); font-size: 14px; font-weight: 500; padding: 9px 14px; border-radius: 10px; transition: all .15s; }
.nd-admin-links a:hover { background: rgba(255,255,255,0.10); color: #fff; }
.nd-admin-links a.active { background: var(--nd-taupe); color: #fff; }
.nd-admin-links a i { font-size: 15px; }
.nd-admin-spacer { flex: 1; }
.nd-admin-ext { color: var(--nd-beige-clair) !important; }
.nd-admin-logout { background: rgba(255,255,255,0.10); }

/* Contenu */
.nd-admin-main { padding: 28px 0 60px; }
.nd-admin-wrap { max-width: 1280px; margin: 0 auto; padding: 0 22px; }
.nd-admin-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 24px; }
.nd-admin-head h1 { font-family: var(--nd-font-titre); font-size: 26px; font-weight: 800; color: var(--nd-navy); margin: 0; }
.nd-admin-head .nd-admin-sub { color: var(--nd-gris); font-size: 14px; margin-top: 4px; }
.nd-admin-head-actions { display: flex; gap: 10px; flex-wrap: wrap; }

/* Boutons admin */
.nd-abtn { display: inline-flex; align-items: center; gap: 7px; border: none; cursor: pointer; font-family: var(--nd-font-ui); font-weight: 600; font-size: 13.5px; padding: 9px 16px; border-radius: 10px; text-decoration: none; transition: all .15s; white-space: nowrap; }
.nd-abtn-primary { background: linear-gradient(90deg, var(--nd-taupe), var(--nd-taupe-clair)); color: #fff; }
.nd-abtn-primary:hover { transform: translateY(-1px); color: #fff; }
.nd-abtn-ghost { background: #fff; color: var(--nd-navy); border: 1.5px solid #dbe6ec; }
.nd-abtn-ghost:hover { border-color: var(--nd-taupe); color: var(--nd-taupe); }
.nd-abtn-success { background: #1c9d54; color: #fff; }
.nd-abtn-success:hover { background: #17843f; color: #fff; }
.nd-abtn-danger { background: #fff; color: var(--nd-maroc-rouge); border: 1.5px solid #f0c9cb; }
.nd-abtn-danger:hover { background: var(--nd-maroc-rouge); color: #fff; }
.nd-abtn-sm { padding: 7px 12px; font-size: 13px; }
.nd-abtn-icon { padding: 8px 11px; }

/* Cartes de stats */
.nd-admin-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 18px; margin-bottom: 26px; }
.nd-stat { background: #fff; border-radius: 16px; padding: 22px; box-shadow: 0 6px 22px rgba(14,1,71,0.08); display: flex; align-items: center; justify-content: space-between; gap: 14px; border-left: 4px solid var(--nd-taupe); }
.nd-stat-lbl { color: var(--nd-gris); font-size: 13.5px; font-weight: 600; }
.nd-stat-val { font-family: var(--nd-font-titre); font-size: 30px; font-weight: 800; color: var(--nd-navy); line-height: 1.1; margin-top: 2px; }
.nd-stat-ico { width: 52px; height: 52px; border-radius: 14px; display: flex; align-items: center; justify-content: center; font-size: 24px; background: var(--nd-beige); color: var(--nd-taupe); flex: 0 0 auto; }
.nd-stat.nd-stat-clients { border-left-color: var(--nd-taupe); }
.nd-stat.nd-stat-presta { border-left-color: var(--nd-taupe); }
.nd-stat.nd-stat-presta .nd-stat-ico { background: #fdf1dc; color: #b26a00; }
.nd-stat.nd-stat-attente { border-left-color: var(--nd-maroc-rouge); }
.nd-stat.nd-stat-attente .nd-stat-ico { background: #fdeaea; color: var(--nd-maroc-rouge); }

/* Carte de contenu */
.nd-admin-card { background: #fff; border-radius: 16px; box-shadow: 0 6px 22px rgba(14,1,71,0.08); overflow: hidden; }
.nd-admin-card-head { padding: 18px 22px; border-bottom: 1px solid #eef3f6; display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.nd-admin-card-head h2 { font-family: var(--nd-font-titre); font-size: 17px; font-weight: 800; color: var(--nd-navy); margin: 0; }
.nd-admin-card-body { padding: 20px 22px; }
.nd-admin-card-body.nd-p0 { padding: 0; }

/* Filtres */
.nd-admin-filtres { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.nd-admin-filtres select, .nd-admin-filtres input { border: 1.5px solid #dbe6ec; border-radius: 10px; padding: 9px 13px; font-family: var(--nd-font-ui); font-size: 13.5px; color: var(--nd-texte); outline: none; background: #fff; }
.nd-admin-filtres select:focus, .nd-admin-filtres input:focus { border-color: var(--nd-taupe); box-shadow: 0 0 0 3px rgba(155,139,116,0.12); }
.nd-admin-filtres select { -webkit-appearance: none; appearance: none; padding-right: 34px; cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath fill='%23388da8' d='M6 8 0 0h12z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; }

/* Tableau */
.nd-admin-table { width: 100%; border-collapse: collapse; }
.nd-admin-table thead th { text-align: left; font-family: var(--nd-font-ui); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; color: var(--nd-gris); padding: 14px 18px; background: var(--nd-beige); white-space: nowrap; }
.nd-admin-table tbody td { padding: 14px 18px; border-top: 1px solid #eef3f6; font-size: 14px; vertical-align: middle; }
.nd-admin-table tbody tr:hover { background: #f7fbfd; }
.nd-admin-table .nd-td-end { text-align: right; }
.nd-admin-user { display: flex; align-items: center; gap: 11px; }
.nd-admin-avatar { width: 38px; height: 38px; border-radius: 50%; background: linear-gradient(135deg, var(--nd-taupe), var(--nd-taupe-clair)); color: #fff; display: flex; align-items: center; justify-content: center; font-family: var(--nd-font-titre); font-weight: 800; font-size: 14px; flex: 0 0 auto; }
.nd-admin-user-nom { font-weight: 600; color: var(--nd-navy); }
.nd-admin-user-sub { font-size: 12.5px; color: var(--nd-gris); }
.nd-table-actions { display: inline-flex; gap: 8px; align-items: center; justify-content: flex-end; flex-wrap: wrap; }
.nd-table-actions form { margin: 0; }

/* Badges admin */
.nd-badge { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 700; padding: 4px 11px; border-radius: 30px; white-space: nowrap; }
.nd-badge-client { background: var(--nd-beige); color: var(--nd-taupe); }
.nd-badge-presta { background: #fdf1dc; color: #b26a00; }
.nd-badge-ok { background: #e8f6ee; color: #1c7a43; }
.nd-badge-wait { background: #fff5e6; color: #b26a00; }
.nd-badge-off { background: #eef1f4; color: #5e6e7c; }
.nd-badge-danger { background: #fdeaea; color: #a12626; }

/* Pied de carte / pagination */
.nd-admin-card-foot { padding: 14px 22px; border-top: 1px solid #eef3f6; display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.nd-admin-card-foot .nd-pagination { margin: 0; }
.nd-admin-count { color: var(--nd-gris); font-size: 13px; }

/* État vide admin */
.nd-admin-empty { text-align: center; padding: 46px 20px; color: var(--nd-gris); }
.nd-admin-empty i { font-size: 40px; color: var(--nd-taupe-clair); display: block; margin-bottom: 12px; }

/* Bloc « demande / élément » (offres à valider) */
.nd-admin-item { border: 1px solid #eef3f6; border-radius: 14px; padding: 18px 20px; margin-bottom: 14px; display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; align-items: flex-start; }
.nd-admin-item:hover { border-color: #dce8ee; box-shadow: 0 4px 16px rgba(14,1,71,0.06); }
.nd-admin-item-main { flex: 1; min-width: 260px; }
.nd-admin-item-main h3 { font-family: var(--nd-font-titre); font-size: 17px; font-weight: 700; color: var(--nd-navy); margin: 0 0 6px; }
.nd-admin-item-meta { color: var(--nd-gris); font-size: 13px; margin-bottom: 8px; display: flex; flex-wrap: wrap; gap: 4px 14px; }
.nd-admin-item-desc { color: var(--nd-texte); font-size: 14px; line-height: 1.55; margin: 0; }
.nd-admin-item-actions { display: flex; gap: 10px; flex-wrap: wrap; }

/* Formulaire admin (réutilise nd-form-card) */
.nd-admin-wrap .nd-form-card { max-width: 820px; }

/* Candidats (offre/index) */
.nd-admin-applicants { margin-top: 14px; border-top: 1px dashed #dce8ee; padding-top: 12px; }
.nd-admin-applicants summary { cursor: pointer; color: var(--nd-taupe); font-weight: 600; font-size: 13.5px; display: inline-flex; align-items: center; gap: 7px; list-style: none; }
.nd-admin-applicants summary::-webkit-details-marker { display: none; }
.nd-admin-applicants[open] summary { margin-bottom: 12px; }
.nd-admin-table-compact thead th { padding: 9px 12px; font-size: 11px; }
.nd-admin-table-compact tbody td { padding: 9px 12px; font-size: 13px; }

/* Le select dans une modal nd- (offre admin) */
.nd-modal-row select { width: 100%; padding: 12px 14px; border: 1.5px solid #dbe6ec; border-radius: 12px; font-family: var(--nd-font-ui); font-size: 14.5px; color: var(--nd-texte); background: #fff; outline: none; -webkit-appearance: none; appearance: none; cursor: pointer; padding-right: 40px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath fill='%23388da8' d='M6 8 0 0h12z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; transition: border-color .2s, box-shadow .2s; }
.nd-modal-row select:focus { border-color: var(--nd-taupe); box-shadow: 0 0 0 3px rgba(155,139,116,0.15); }

/* Fiche membre (userIndex) — habillage nd- du contenu profil */
.nd-admin-userview .contact.section, .nd-admin-userview.section { margin: 0 !important; padding: 0 !important; overflow: visible; }
.nd-admin-userview .container { max-width: 100% !important; padding-left: 0; padding-right: 0; }
.nd-admin-userview .section-title { display: none; }
.nd-admin-userview .info-item { background: #fff !important; border-radius: 16px; box-shadow: 0 6px 22px rgba(14,1,71,0.08) !important; padding: 22px !important; margin-bottom: 20px; }
.nd-admin-userview h4, .nd-admin-userview h5, .nd-admin-userview h6,
.nd-admin-userview .title, .nd-admin-userview .profile-header h5 { color: var(--nd-navy) !important; font-family: var(--nd-font-titre); }
.nd-admin-userview .card { border: none !important; border-radius: 16px !important; box-shadow: 0 6px 22px rgba(14,1,71,0.08) !important; margin-bottom: 20px; overflow: hidden; }
.nd-admin-userview .card-header { background: var(--nd-beige) !important; color: var(--nd-navy) !important; border: none !important; font-family: var(--nd-font-titre); font-weight: 700; }
.nd-admin-userview .profile-image img, .nd-admin-userview .profile-image .rounded-circle { border: 3px solid var(--nd-taupe-clair) !important; }
.nd-admin-userview .text-primary, .nd-admin-userview .details a { color: var(--nd-taupe) !important; }
.nd-admin-userview .details i, .nd-admin-userview .fas { color: var(--nd-taupe) !important; }
.nd-admin-userview .badge.hov-badge { background: var(--nd-beige) !important; color: var(--nd-navy) !important; font-weight: 600; padding: 8px 14px; border-radius: 30px; }
.nd-admin-userview .competence-badges { display: flex; flex-wrap: wrap; gap: 8px; }
.nd-admin-userview .timeline-item { position: relative; padding-left: 22px; padding-bottom: 18px; border-left: 2px solid #dce8ee; margin-left: 6px; }
.nd-admin-userview .timeline-item:last-child { border-left-color: transparent; }
.nd-admin-userview .timeline-icon { position: absolute; left: -7px; top: 4px; width: 12px; height: 12px; border-radius: 50%; background: var(--nd-taupe); box-shadow: 0 0 0 3px var(--nd-beige); }
.nd-admin-userview .timeline-content { background: var(--nd-beige); border-radius: 12px; padding: 12px 16px; }
.nd-admin-userview .alert { border-radius: 12px !important; }
.nd-admin-userview .table { border-radius: 12px; overflow: hidden; }
.nd-admin-userview #flash-messages .flash { padding: 12px 16px; border-radius: 12px; margin-bottom: 14px; background: #fff; box-shadow: 0 3px 12px rgba(14,1,71,0.06); }

/* Responsive admin */
@media (max-width: 860px) {
  .nd-admin-toggle { display: inline-flex; align-items: center; justify-content: center; }
  .nd-admin-links { display: none; width: 100%; flex-direction: column; align-items: stretch; gap: 3px; padding-top: 8px; }
  .nd-admin-topbar.open .nd-admin-links { display: flex; }
  .nd-admin-spacer { display: none; }
  .nd-admin-table thead { display: none; }
  .nd-admin-table tbody td { display: block; border: none; padding: 6px 16px; }
  .nd-admin-table tbody tr { display: block; border-top: 1px solid #eef3f6; padding: 12px 0; }
  .nd-admin-table .nd-td-end { text-align: left; }
  .nd-table-actions { justify-content: flex-start; }
}

/* ===================================================================
   Profil client (/profil/hote/modifier)
   =================================================================== */
.nd-profil-head { text-align: left; padding: 44px 24px 80px; }
.nd-profil-head-inner { max-width: 1000px; margin: 0 auto; display: flex; align-items: center; gap: 24px; position: relative; z-index: 1; }
.nd-profil-head-avatar { flex: 0 0 auto; width: 96px; height: 96px; border-radius: 50%; overflow: hidden; background: rgba(255,255,255,0.16); border: 3px solid rgba(255,255,255,0.5); display: flex; align-items: center; justify-content: center; font-family: var(--nd-font-titre); font-weight: 800; font-size: 32px; color: #fff; }
.nd-profil-head-avatar img { width: 100%; height: 100%; object-fit: cover; }
.nd-profil-head-txt h1 { font-family: var(--nd-font-titre); font-size: clamp(24px, 3.4vw, 34px); font-weight: 800; color: #fff; margin: 0; }
.nd-profil-head-txt p { margin: 6px 0 0; color: rgba(255,255,255,0.9); font-size: 15px; display: flex; align-items: center; gap: 7px; }
.nd-profil-badge { display: inline-flex; align-items: center; gap: 7px; margin-top: 12px; background: rgba(255,255,255,0.16); color: #fff; padding: 6px 16px; border-radius: 30px; font-size: 13px; font-weight: 700; }

.nd-profil-wrap { max-width: 1000px; margin: -46px auto 0; padding: 0 20px 70px; position: relative; z-index: 2; }

/* Carte abonnement */
.nd-profil-abo { background: #fff; border-radius: 18px; box-shadow: 0 10px 34px rgba(14,1,71,0.12); padding: 22px 26px; margin-bottom: 24px; border-left: 4px solid var(--nd-taupe); }
.nd-profil-abo-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.nd-profil-abo-head h3 { font-family: var(--nd-font-titre); font-size: 18px; font-weight: 800; color: var(--nd-navy); margin: 0; display: flex; align-items: center; gap: 9px; }
.nd-profil-abo-head h3 i { color: var(--nd-taupe); }
.nd-profil-abo-head form { margin: 0; }

/* Carte à onglets */
.nd-profil-card { background: #fff; border-radius: 18px; box-shadow: 0 10px 34px rgba(14,1,71,0.10); overflow: hidden; }
.nd-tabs { list-style: none; margin: 0; padding: 6px 10px 0; display: flex; gap: 6px; border-bottom: 1px solid #e9eff3; background: var(--nd-beige); }
.nd-tab { border: none; background: transparent; cursor: pointer; font-family: var(--nd-font-ui); font-weight: 600; font-size: 14.5px; color: var(--nd-gris); padding: 14px 20px; border-radius: 12px 12px 0 0; display: inline-flex; align-items: center; gap: 8px; transition: all .2s; border-bottom: 3px solid transparent; margin-bottom: -1px; }
.nd-tab:hover { color: var(--nd-taupe); }
.nd-tab.active { color: var(--nd-navy); background: #fff; border-bottom-color: var(--nd-taupe); }
.nd-profil-tabcontent { padding: 30px 28px 32px; }

/* Formulaires profil */
.nd-profil-form .nd-profil-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.nd-field { display: flex; flex-direction: column; }
.nd-field-full { grid-column: 1 / -1; }
.nd-field label { font-weight: 600; color: var(--nd-navy); font-size: 14px; margin-bottom: 7px; }
.nd-profil-form .form-control,
.nd-profil-form input[type=text],
.nd-profil-form input[type=email],
.nd-profil-form input[type=tel],
.nd-profil-form input[type=password] {
  width: 100%; border: 1.5px solid #dbe6ec; border-radius: 12px; padding: 12px 15px; font-family: var(--nd-font-ui); font-size: 14.5px; color: var(--nd-texte); background: #fff; outline: none; transition: border-color .2s, box-shadow .2s;
}
.nd-profil-form .form-control:focus,
.nd-profil-form input:focus { border-color: var(--nd-taupe); box-shadow: 0 0 0 3px rgba(155,139,116,0.15); }
.nd-profil-actions { display: flex; justify-content: flex-end; margin-top: 22px; }

/* Avatar éditable */
.nd-profil-avatar-row { display: flex; align-items: center; gap: 20px; margin-bottom: 26px; padding-bottom: 24px; border-bottom: 1px solid #eef3f6; }
.nd-profil-avatar { position: relative; flex: 0 0 auto; width: 96px; height: 96px; border-radius: 50%; overflow: hidden; cursor: pointer; display: block; box-shadow: 0 6px 18px rgba(14,1,71,0.15); }
.nd-profil-avatar .current-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.nd-profil-avatar-txt { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--nd-taupe), var(--nd-taupe-clair)); color: #fff; font-family: var(--nd-font-titre); font-weight: 800; font-size: 32px; }
.nd-profil-avatar-cam { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(62,80,85,0); color: transparent; font-size: 24px; transition: all .2s; }
.nd-profil-avatar:hover .nd-profil-avatar-cam { background: rgba(62,80,85,0.5); color: #fff; }
.nd-profil-avatar-hint { display: flex; flex-direction: column; gap: 3px; }
.nd-profil-avatar-hint strong { color: var(--nd-navy); font-size: 15px; }
.nd-profil-avatar-hint span { color: var(--nd-gris); font-size: 13px; }

@media (max-width: 640px) {
  .nd-profil-head-inner { flex-direction: column; text-align: center; }
  .nd-profil-head-txt p { justify-content: center; }
  .nd-profil-form .nd-profil-grid { grid-template-columns: 1fr; }
  .nd-profil-avatar-row { flex-direction: column; text-align: center; }
  .nd-profil-tabcontent { padding: 24px 18px 26px; }
  .nd-tab { padding: 12px 14px; font-size: 13.5px; }
}

/* ===================================================================
   Profil prestataire (/profil/presta) — habillage nd- du markup existant
   (couche de surcharge scoppée à .nd-presta-profil : ne touche pas les
   modals/CRUD ni les autres pages)
   =================================================================== */
.nd-presta-profil { padding-top: 70px; background: var(--nd-beige); min-height: 100vh; }
.nd-presta-profil .contact.section,
.nd-presta-profil.section { margin: 0 !important; padding: 30px 16px 70px !important; overflow: visible; }
.nd-presta-profil .container { max-width: 1180px; }

/* Bandeau d'en-tête (teal) */
.nd-presta-hero { text-align: left; padding: 38px 24px; }
.nd-presta-hero .nd-profil-head-inner { max-width: 1180px; margin: 0 auto; display: flex; align-items: center; gap: 22px; flex-wrap: wrap; position: relative; z-index: 1; }
.nd-presta-hero .nd-profil-head-txt h1 { color: #fff !important; }
.nd-presta-hero .nd-profil-head-txt p { color: rgba(255,255,255,0.9) !important; margin: 6px 0 0; display: flex; align-items: center; gap: 7px; }
.nd-presta-hero .nd-profil-head-txt p i { color: #fff !important; }
.nd-presta-hero .nd-profil-badge { display: inline-flex; align-items: center; gap: 7px; margin-top: 12px; background: rgba(255,255,255,0.16); color: #fff !important; padding: 6px 16px; border-radius: 30px; font-size: 13px; font-weight: 700; }
.nd-presta-hero .nd-profil-badge i { color: var(--nd-beige-clair) !important; }
.nd-profil-head-btn { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; border: 1.5px solid rgba(255,255,255,0.6); color: #fff !important; background: transparent; border-radius: 40px; padding: 11px 22px; text-decoration: none; font-weight: 600; font-size: 14.5px; font-family: var(--nd-font-ui); transition: background .2s; }
.nd-profil-head-btn:hover { background: rgba(255,255,255,0.16); color: #fff !important; }
@media (max-width: 640px) {
  .nd-presta-hero { text-align: center; }
  .nd-presta-hero .nd-profil-head-inner { flex-direction: column; }
  .nd-presta-hero .nd-profil-head-txt p { justify-content: center; }
  .nd-profil-head-btn { margin-left: 0; }
}

/* Cartes */
.nd-presta-profil .info-item { background: #fff !important; border-radius: 18px; box-shadow: 0 6px 22px rgba(14,1,71,0.08) !important; padding: 24px !important; margin-bottom: 22px; }
.nd-presta-profil .profile-header { border-bottom: 1px solid #eef3f6 !important; }

/* Titres en teal (surcharge des #0e0147 inline) */
.nd-presta-profil h4, .nd-presta-profil h5, .nd-presta-profil h6,
.nd-presta-profil .title, .nd-presta-profil .profile-header h5 { color: var(--nd-navy) !important; font-family: var(--nd-font-titre); }
.nd-presta-profil .section .title { font-size: 15px; font-weight: 700; }

/* Avatar */
.nd-presta-profil .profile-image img,
.nd-presta-profil .profile-image .rounded-circle { border: 3px solid var(--nd-taupe-clair) !important; box-shadow: 0 6px 18px rgba(14,1,71,0.15); }

/* Boutons Modifier / Ajouter / Gérer */
.nd-presta-profil .btn-outline-primary { border: 1.5px solid var(--nd-taupe) !important; color: var(--nd-taupe) !important; border-radius: 30px !important; font-weight: 600; padding: 6px 18px; transition: all .2s; background: #fff; }
.nd-presta-profil .btn-outline-primary:hover { background: var(--nd-taupe) !important; color: #fff !important; }

/* Liens documents / coordonnées + icônes */
.nd-presta-profil .text-primary, .nd-presta-profil .details a { color: var(--nd-taupe) !important; }
.nd-presta-profil .details i, .nd-presta-profil .fas { color: var(--nd-taupe) !important; }

/* Badges (langues, compétences) */
.nd-presta-profil .competence-badges { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-start; }
.nd-presta-profil .competence-badges a { text-decoration: none; }
.nd-presta-profil .badge.hov-badge { background: var(--nd-beige) !important; color: var(--nd-navy) !important; font-weight: 600; font-size: 13px; padding: 8px 14px; border-radius: 30px; border: 1px solid transparent; transition: all .2s; }
.nd-presta-profil .badge.hov-badge:hover { background: var(--nd-taupe) !important; color: #fff !important; }

/* Timeline expériences / certifications */
.nd-presta-profil .timeline { position: relative; padding-left: 4px; }
.nd-presta-profil .timeline-item { position: relative; padding-left: 22px; padding-bottom: 18px; border-left: 2px solid #dce8ee; margin-left: 6px; }
.nd-presta-profil .timeline-item:last-child { border-left-color: transparent; padding-bottom: 0; }
.nd-presta-profil .timeline-icon { position: absolute; left: -7px; top: 4px; width: 12px; height: 12px; border-radius: 50%; background: var(--nd-taupe); box-shadow: 0 0 0 3px var(--nd-beige); }
.nd-presta-profil .timeline-content { background: var(--nd-beige); border-radius: 12px; padding: 12px 16px; }
.nd-presta-profil .timeline-content h6 { color: var(--nd-navy) !important; }
.nd-presta-profil .icon-actions { display: inline-flex; gap: 12px; align-items: center; }
.nd-presta-profil .icon-actions .bi-pencil { color: var(--nd-taupe) !important; }
.nd-presta-profil .icon-actions .bi-trash { color: var(--nd-maroc-rouge) !important; }

/* Flash */
.nd-presta-profil #flash-messages .flash { padding: 12px 16px; border-radius: 12px; margin-bottom: 14px; background: #fff; box-shadow: 0 3px 12px rgba(14,1,71,0.06); }

/* Sections d'infos (Documents, Coordonnées, etc.) */
.nd-presta-profil .section > .title { position: relative; padding-left: 14px; margin-bottom: 10px; }
.nd-presta-profil .section > .title::before { content: ""; position: absolute; left: 0; top: 2px; bottom: 2px; width: 4px; border-radius: 3px; background: linear-gradient(var(--nd-taupe), var(--nd-taupe-clair)); }
.nd-presta-profil hr { border-color: #e9eff3; opacity: 1; }
.nd-presta-profil .details h6.title { font-weight: 600; }
.nd-presta-profil .details .text-muted { color: var(--nd-gris) !important; }

/* ===== Modals CRUD du profil presta (habillage nd-) ===== */
.modal-dialog:has(.modal-reservation) { max-width: 640px; }
.modal-reservation { border: none !important; border-radius: 20px !important; overflow: hidden; box-shadow: 0 24px 70px rgba(14,1,71,0.30) !important; font-family: var(--nd-font-texte); }
.modal-reservation .modal-header { background: linear-gradient(120deg, var(--nd-navy), var(--nd-taupe)); border: none; padding: 18px 24px; }
.modal-reservation .modal-header h5 { color: #fff !important; font-family: var(--nd-font-titre); font-weight: 800; font-size: 19px; }
.modal-reservation .modal-header .btn-close { filter: brightness(0) invert(1); opacity: .9; }
.modal-reservation .modal-body { padding: 22px 24px; background: #fff; }
.modal-reservation label { font-weight: 600; color: var(--nd-navy) !important; font-size: 14px; margin-bottom: 6px; }
.modal-reservation .form-control,
.modal-reservation .form-select,
.modal-reservation input:not([type=file]):not([type=checkbox]):not([type=radio]),
.modal-reservation select,
.modal-reservation textarea {
  width: 100%; border: 1.5px solid #dbe6ec !important; border-radius: 12px !important; padding: 12px 14px !important; font-family: var(--nd-font-ui); font-size: 14.5px; color: var(--nd-texte); background: #fff; outline: none; box-shadow: none !important;
}
.modal-reservation .form-control:focus,
.modal-reservation .form-select:focus,
.modal-reservation input:focus,
.modal-reservation select:focus,
.modal-reservation textarea:focus { border-color: var(--nd-taupe) !important; box-shadow: 0 0 0 3px rgba(155,139,116,0.15) !important; }
.modal-reservation input[type=file] { font-size: 13.5px; color: var(--nd-gris); }
.modal-reservation .input-group { display: block; }
.modal-reservation .btn.post,
.modal-reservation .btn-outline-primary.post {
  background: linear-gradient(90deg, var(--nd-taupe), var(--nd-taupe-clair)) !important; color: #fff !important; border: none !important; border-radius: 40px !important; font-weight: 700; padding: 11px 28px !important; box-shadow: 0 8px 22px rgba(155,139,116,0.28); transition: transform .2s;
}
.modal-reservation .btn.post:hover { transform: translateY(-2px); color: #fff !important; }
/* Avatar éditable dans le modal profil */
.modal-reservation .profile-image-container { margin: 0 auto; }
.modal-reservation .profile-image-container .current-img { border: 3px solid var(--nd-taupe-clair); box-shadow: 0 6px 18px rgba(14,1,71,0.15); }
.modal-reservation .image-overlay { background: rgba(62,80,85,0); color: transparent; transition: all .2s; }
.modal-reservation .profile-image-container:hover .image-overlay { background: rgba(62,80,85,0.5); color: #fff; }
.modal-reservation .image-overlay .fas { color: #fff !important; }

/* ============================================================================
   LANCEMENT 12 SEPTEMBRE — bandeau événement, bouton rouge, témoignages,
   grille tarifaire promo + sélecteur de devise, annuaire réservé aux membres.
   ========================================================================== */

/* Hauteur du menu fixe : le contenu de la home doit démarrer en dessous,
   sinon le bandeau événement passe derrière le menu. */
:root { --nd-nav-h: 66px; }
/* main.css applique déjà `main { margin-top: 90px }` pour compenser le menu
   fixe. Sur l'accueil, ce décalage est trop grand (le menu ne fait que 66 px)
   et laissait une bande blanche au-dessus du bandeau événement. On le ramène
   à la hauteur réelle du menu pour que le bandeau s'y colle. */
.nd-home-page { margin-top: var(--nd-nav-h) !important; padding-top: 0; }

/* ===== Bouton rouge (drapeau marocain) — CTA « Je réserve ma place » ===== */
.nd-btn-rouge {
  display: inline-block; text-decoration: none; text-align: center;
  font-family: var(--nd-font-ui); font-weight: 800; font-size: 16px;
  padding: 14px 34px; border-radius: 40px; border: none; cursor: pointer;
  background: linear-gradient(90deg, #C1272D, #E0353C);
  color: #fff; box-shadow: 0 10px 30px rgba(193,39,45,0.45);
  transition: transform .2s ease, box-shadow .2s ease;
}
.nd-btn-rouge:hover { transform: translateY(-3px); color: #fff; box-shadow: 0 14px 38px rgba(193,39,45,0.55); }
.nd-btn-rouge:focus-visible { outline: 3px solid var(--nd-beige-clair); outline-offset: 3px; }

/* ===== Bandeau événement : premier élément visible, plein écran ===== */
.nd-event-hero {
  position: relative; overflow: hidden; text-align: center;
  padding: 46px 24px 42px;
  background:
    radial-gradient(ellipse at 50% -10%, rgba(245,166,35,0.28) 0%, transparent 62%),
    linear-gradient(135deg, #2c3b40 0%, var(--nd-navy) 45%, #2f4a52 100%);
  color: var(--nd-blanc);
  border-bottom: 4px solid transparent;
}
.nd-eh-inner { max-width: 980px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; gap: 18px; }
.nd-eh-kicker {
  display: inline-flex; align-items: center; gap: 10px;
  background: rgba(255,255,255,0.10); border: 1px solid rgba(255,217,138,0.55);
  color: var(--nd-beige-clair); font-family: var(--nd-font-ui); font-weight: 800;
  font-size: 13px; letter-spacing: 3px; text-transform: uppercase;
  padding: 9px 22px; border-radius: 999px;
}
.nd-eh-titre {
  font-family: var(--nd-font-titre); font-weight: 900; line-height: 1.08;
  font-size: clamp(30px, 6vw, 60px); color: var(--nd-blanc);
  text-shadow: 0 3px 26px rgba(0,0,0,0.4); margin: 0;
}
/* « RABAT » : au vert du drapeau marocain, en capitales et plus grand que la
   date. Le vert officiel (#006233) est trop sombre pour rester lisible sur le
   fond foncé du bandeau — on garde la teinte du drapeau dans une version
   éclaircie, qui passe le seuil de contraste pour un texte de cette taille. */
.nd-eh-titre em {
  display: block;
  font-style: normal;
  color: #00A651;
  text-transform: uppercase;
  font-size: 1.4em;
  line-height: 1;
  letter-spacing: 3px;
  margin-top: 8px;
  text-shadow: 0 3px 24px rgba(0,0,0,0.45);
}
.nd-eh-sub { font-size: clamp(15px, 2vw, 19px); color: rgba(255,255,255,0.92); max-width: 720px; line-height: 1.6; margin: 0; }
.nd-eh-lieu { display: inline-flex; align-items: center; gap: 9px; font-size: 15px; font-weight: 600; color: var(--nd-beige-clair); }
.nd-eh-compteur { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 4px; }
.nd-eh-compteur .nd-bloc { background: rgba(255,255,255,0.10); border: 1px solid rgba(255,255,255,0.22); border-radius: 14px; padding: 12px 18px; min-width: 78px; }
.nd-eh-compteur .nd-num { font-family: var(--nd-font-titre); font-size: 30px; font-weight: 900; color: #fff; line-height: 1; }
.nd-eh-compteur .nd-unite { font-size: 11px; color: rgba(255,255,255,0.72); text-transform: uppercase; letter-spacing: 1.4px; margin-top: 6px; }
.nd-eh-actions { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; align-items: center; margin-top: 6px; }
.nd-eh-note { font-size: 13.5px; color: rgba(255,255,255,0.75); }
.nd-eh-note strong { color: var(--nd-beige-clair); }

/* ===== Témoignages vidéo (événement précédent — Rabat) ===== */
.nd-temoignages { background: var(--nd-beige); text-align: center; }
.nd-temoin-grid {
  display: grid; gap: 20px; margin: 38px auto 0; max-width: 1120px;
  grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
}
.nd-temoin {
  position: relative; display: block; border: none; padding: 0; cursor: pointer;
  background: #0d1418; border-radius: 18px; overflow: hidden; aspect-ratio: 9 / 16;
  box-shadow: 0 12px 34px rgba(14,1,71,0.18);
  transition: transform .25s ease, box-shadow .25s ease;
}
.nd-temoin:hover, .nd-temoin:focus-visible { transform: translateY(-6px); box-shadow: 0 22px 50px rgba(14,1,71,0.30); }
.nd-temoin:focus-visible { outline: 3px solid var(--nd-maroc-rouge); outline-offset: 3px; }
/* Le poster sert de fond d'ambiance, volontairement flouté : les images
   extraites des vidéos sont des frames d'ouverture où le visage est pixelisé
   par l'effet de transition. Le flou donne une carte propre et colorée, et
   chaque témoignage garde son atmosphère propre. Pour afficher des posters
   nets, remplacer les fichiers de public/img/temoignages/ par des visuels
   choisis et retirer le `filter` ci-dessous. */
.nd-temoin img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  opacity: .85; filter: blur(13px) saturate(1.25);
  transform: scale(1.14); /* masque les bords délavés par le flou */
  transition: opacity .25s ease, transform .5s ease;
}
.nd-temoin:hover img { opacity: 1; transform: scale(1.2); }
.nd-temoin-play {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  background: linear-gradient(180deg, rgba(0,0,0,0.05) 40%, rgba(0,0,0,0.72) 100%);
}
.nd-temoin-play i {
  width: 58px; height: 58px; border-radius: 50%; background: rgba(255,255,255,0.94);
  color: var(--nd-maroc-rouge); font-size: 24px; display: flex; align-items: center;
  justify-content: center; padding-left: 4px; box-shadow: 0 6px 20px rgba(0,0,0,0.35);
  transition: transform .25s ease;
}
.nd-temoin:hover .nd-temoin-play i { transform: scale(1.12); }
.nd-temoin-legende {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 14px 14px 16px;
  text-align: left; color: #fff; font-family: var(--nd-font-ui); font-size: 13.5px;
  font-weight: 700; text-shadow: 0 1px 8px rgba(0,0,0,0.7); pointer-events: none;
}
.nd-temoin-legende span { display: block; font-weight: 500; font-size: 12px; opacity: .82; margin-top: 2px; }

/* Lecteur : l'iframe Drive n'est chargée qu'à l'ouverture (pas au chargement
   de la page), sinon 8 lecteurs vidéo plomberaient la home. */
.nd-video-modal { position: fixed; inset: 0; z-index: 2000; display: none; align-items: center; justify-content: center; background: rgba(8,14,18,0.92); padding: 24px; }
.nd-video-modal.nd-open { display: flex; }
/* Vidéo hébergée sur le site : format vertical, la vidéo remplit la boîte. */
.nd-video-modal-box { position: relative; width: min(430px, 100%); aspect-ratio: 9 / 16; max-height: 86vh; border-radius: 18px; overflow: hidden; background: #000; box-shadow: 0 30px 80px rgba(0,0,0,0.6); }
/* Lecteur Google Drive : il impose sa propre mise en page (barre de titre,
   commandes) et centre la vidéo en 16/9. Enfermé dans une boîte verticale, il
   affichait une vignette minuscule entourée de noir. On lui donne donc une
   boîte large, qu'il remplit correctement. */
.nd-video-modal-box.nd-drive { width: min(1000px, 96vw); aspect-ratio: 16 / 9; max-height: 88vh; }
.nd-video-modal-box iframe,
.nd-video-modal-box video { width: 100%; height: 100%; border: 0; display: block; background: #000; }
.nd-video-modal-box video { object-fit: contain; }
.nd-video-close { position: absolute; top: 14px; right: 18px; z-index: 2; background: rgba(255,255,255,0.92); border: none; width: 44px; height: 44px; border-radius: 50%; font-size: 26px; line-height: 1; color: var(--nd-navy); cursor: pointer; }
.nd-video-close:hover { background: #fff; }

/* ===== Sélecteur de devise (€ / MAD) ===== */
.nd-devise { display: inline-flex; align-items: center; gap: 0; background: var(--nd-blanc); border: 1px solid #d5e2ed; border-radius: 999px; padding: 5px; margin-top: 22px; box-shadow: 0 4px 16px rgba(14,1,71,0.08); }
.nd-devise button { border: none; background: transparent; padding: 9px 22px; border-radius: 999px; font-family: var(--nd-font-ui); font-size: 14.5px; font-weight: 700; color: var(--nd-gris); cursor: pointer; transition: all .2s; }
.nd-devise button.nd-actif { background: var(--nd-taupe); color: #fff; }
.nd-devise-note { font-size: 12.5px; color: var(--nd-gris); margin-top: 10px; }

/* ===== Grille tarifaire — offre de lancement ===== */
.nd-promo-alerte {
  max-width: 720px; margin: 26px auto 0; display: flex; align-items: center; gap: 14px;
  background: #fff5f5; border: 1.5px solid rgba(193,39,45,0.35); border-left: 5px solid var(--nd-maroc-rouge);
  border-radius: 14px; padding: 16px 20px; text-align: left;
  font-size: 14.5px; line-height: 1.55; color: var(--nd-texte);
}
.nd-promo-alerte i { color: var(--nd-maroc-rouge); font-size: 22px; flex: 0 0 auto; }
.nd-promo-alerte strong { color: var(--nd-maroc-rouge); }
.nd-tarif-card.nd-star { border-color: var(--nd-maroc-rouge); }
.nd-tarif-card.nd-star .nd-pop { background: var(--nd-maroc-rouge); }
.nd-prix-barre { font-family: var(--nd-font-titre); font-size: 22px; font-weight: 700; color: var(--nd-gris); text-decoration: line-through; text-decoration-color: var(--nd-maroc-rouge); text-decoration-thickness: 2px; margin-right: 10px; }
.nd-tarif-card .nd-prix.nd-prix-promo { color: var(--nd-maroc-rouge); display: flex; align-items: baseline; flex-wrap: wrap; gap: 2px; }
.nd-ruban-promo { display: inline-block; background: var(--nd-maroc-vert); color: #fff; font-size: 12px; font-weight: 800; letter-spacing: .4px; padding: 5px 14px; border-radius: 999px; margin-bottom: 4px; }
.nd-tarif-card .nd-apres { font-size: 12.5px; color: var(--nd-gris); margin-top: 8px; font-style: italic; }
.nd-tarif-card li.nd-non { color: #9aa7b2; }
.nd-tarif-card li.nd-non::before { content: "✕ "; color: #c3ced7; }
.nd-tarif-grid { max-width: 820px; }

/* ===== Annuaire : aperçu flouté pour les non-abonnés ===== */
.nd-lock-banner {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap; justify-content: center;
  max-width: 900px; margin: 0 auto 26px; text-align: center;
  background: linear-gradient(135deg, var(--nd-navy), var(--nd-taupe));
  color: #fff; border-radius: 18px; padding: 22px 28px;
  box-shadow: 0 14px 38px rgba(14,1,71,0.22);
}
.nd-lock-banner .nd-lock-txt { flex: 1 1 380px; text-align: left; font-size: 15px; line-height: 1.55; }
.nd-lock-banner .nd-lock-txt strong { color: var(--nd-beige-clair); }
.nd-locked { position: relative; }
.nd-locked .nd-flou { filter: blur(6px); pointer-events: none; user-select: none; }
.nd-locked-badge {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  display: inline-flex; align-items: center; gap: 8px; white-space: nowrap;
  background: rgba(255,255,255,0.96); color: var(--nd-navy);
  font-family: var(--nd-font-ui); font-size: 13px; font-weight: 800;
  padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 24px rgba(14,1,71,0.28);
}
.nd-locked-badge i { color: var(--nd-maroc-rouge); }

/* ===== Responsive ===== */
@media (max-width: 992px) {
  :root { --nd-nav-h: 68px; }
  .nd-event-hero { padding: 34px 20px 32px; }
  .nd-eh-compteur .nd-bloc { min-width: 68px; padding: 10px 14px; }
  .nd-eh-compteur .nd-num { font-size: 25px; }
}
@media (max-width: 600px) {
  .nd-event-hero { padding: 26px 16px 26px; }
  .nd-eh-inner { gap: 14px; }
  .nd-eh-kicker { font-size: 11px; letter-spacing: 1.6px; padding: 8px 16px; }
  .nd-eh-compteur { gap: 8px; }
  .nd-eh-compteur .nd-bloc { min-width: 60px; padding: 9px 10px; border-radius: 11px; }
  .nd-eh-compteur .nd-num { font-size: 21px; }
  .nd-eh-compteur .nd-unite { font-size: 9.5px; letter-spacing: 1px; }
  .nd-btn-rouge { padding: 13px 26px; font-size: 15px; }
  .nd-temoin-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; }
  .nd-temoin-play i { width: 46px; height: 46px; font-size: 19px; }
  .nd-promo-alerte { flex-direction: column; text-align: center; gap: 10px; }
  .nd-lock-banner .nd-lock-txt { text-align: center; }
  .nd-video-modal { padding: 12px; }
}

/* Confort : respecte le réglage système « animations réduites ». */
@media (prefers-reduced-motion: reduce) {
  .nd-btn-rouge, .nd-temoin, .nd-temoin img, .nd-temoin-play i { transition: none; }
  .nd-btn-rouge:hover, .nd-temoin:hover { transform: none; }
}

/* Ancres du menu : le menu est fixe, sans ce décalage un lien « #tarifs »
   arrête le scroll avec le titre de section caché derrière le menu. */
#hero, #categories, #temoignages, #evenement, #quisommesnous, #tarifs, #contact, #newsletter {
  scroll-margin-top: calc(var(--nd-nav-h) + 10px);
}

/* ===== Hero sur téléphone : une seule photo, cadrée sur le haut =====
   Le carrousel de 3 photos est pensé pour un écran large. Sur un écran étroit
   et haut, il rogne les sujets et l'image devient illisible. On lui substitue
   donc une photo unique, zoomée et ancrée en haut pour garder le visage dans
   le cadre plutôt que de le voir sortir par le bas. */
.nd-hero-bg-mobile { display: none; }

@media (max-width: 860px) {
  .nd-hero-bg:not(.nd-hero-bg-mobile) { display: none; }
  .nd-hero-bg-mobile {
    display: block;
    opacity: 1;            /* neutralise l'opacity: 0 du carrousel */
    animation: none;       /* et son fondu enchaîné */
    background-position: 50% 0;
    /* Zoom ancré en haut : le sujet remonte dans le cadre au lieu d'être
       rogné par le bas. Le hero est en overflow:hidden, rien ne déborde. */
    transform: scale(1.25);
    transform-origin: 50% 0;
  }
}

/* Carrousel du hero : pas de trou noir au chargement.
   ndHeroFade part de opacity:0 et n'atteint 1 qu'à 8 % du cycle (soit 1,7 s) :
   à l'ouverture de la page, le hero restait donc vide pendant près de deux
   secondes avant que la première photo n'apparaisse. Un délai négatif fait
   démarrer la première image déjà visible ; les deux autres sont décalées
   d'autant pour conserver l'espacement de 7 s. */
.nd-hero-bg:nth-child(1) { animation-delay: -1.7s; }
.nd-hero-bg:nth-child(2) { animation-delay: 5.3s; }
.nd-hero-bg:nth-child(3) { animation-delay: 12.3s; }

/* ============================================================================
   Correctif : main.css impose `color:#0e0147 !important` et
   `font-family:var(--default-font) !important` à TOUS les titres (h1..h6).
   Cette règle héritée du gabarit d'origine écrasait la charte du redesign sur
   l'ensemble du site : titre du hero en bleu nuit illisible par-dessus les
   photos, sections dans la mauvaise police. ndliens.css étant chargé après
   main.css, on rétablit ici la charte avec la même priorité.
   ========================================================================== */

/* Police des titres du redesign. */
.nd-page h1, .nd-page h2, .nd-page h3, .nd-page h4, .nd-page h5, .nd-page h6,
.nd-auth h1, .nd-auth h2, .nd-auth h3, .nd-auth h4,
.nd-footer h1, .nd-footer h2, .nd-footer h3, .nd-footer h4,
.nd-event-hero h1, .nd-event-hero h2 {
  font-family: var(--nd-font-titre) !important;
}

/* Titres clairs (posés sur un fond sombre ou une photo). */
.nd-hero h1,
.nd-eh-titre,
.nd-event-card h2,
.nd-newsletter h2,
.nd-footer h4,
.nd-liste-head h1,
.nd-profil-head-txt h1,
.nd-auth-visual h2,
.nd-pilier.nd-fonce h3 {
  color: var(--nd-blanc) !important;
}

/* Titres sombres (posés sur fond clair). */
.nd-titre,
.nd-pilier.nd-clair h3,
.nd-tarif-card h3,
.nd-empty h3,
.nd-confirm-card h3,
.nd-abo-nom,
.nd-modal-head h5,
.nd-sponsor-name,
.nd-admin-head h1,
.nd-admin-card-head h2,
.nd-admin-item-main h3,
.nd-profil-abo-head h3 {
  color: var(--nd-navy) !important;
}

/* Fragments mis en valeur à l'intérieur des titres : ils doivent rester dorés.
   « RABAT » dans le bandeau fait exception — il est au vert du drapeau. */
.nd-hero h1 em,
.nd-event-card h2 span,
.nd-liste-head h1 em,
.nd-auth-visual h2 span,
.nd-profil-abo-head h3 i {
  color: var(--nd-beige-clair) !important;
}
.nd-eh-titre em { color: #00A651 !important; }
.nd-titre span[style*="--nd-taupe-clair"] { color: var(--nd-taupe-clair) !important; }

/* Calque du hero : il était à 0,75 / 0,55 / 0,85 d'opacité, ce qui noyait
   complètement les photos — on ne voyait qu'un aplat de couleur. Allégé pour
   que les photos se lisent, tout en gardant assez de densité derrière le texte
   (le titre est blanc avec une ombre portée, le contraste reste bon). */
.nd-hero-overlay {
  background: linear-gradient(180deg,
    rgba(62,80,85,0.62) 0%,
    rgba(45,70,80,0.42) 45%,
    rgba(62,80,85,0.72) 100%) !important;
}

/* Menu : l'ajout du lien « Témoignages » faisait déborder la barre sur deux
   lignes en 1440 px (logo + liens = 1282 px pour 1220 px utiles). On resserre
   l'espacement et on bascule en menu hamburger un peu plus tôt, plutôt que de
   sacrifier un lien. */
@media (min-width: 1101px) {
  .nd-nav-links { gap: 15px; }
  .nd-nav-links a { font-size: 14.5px; }
  .nd-btn-connexion { padding: 8px 18px; }
  .nd-nav { padding: 12px 26px; flex-wrap: nowrap; }
  .nd-nav .nd-nav-logo img { height: 42px; }
}
@media (max-width: 1240px) and (min-width: 1101px) {
  .nd-nav-links { gap: 11px; }
  .nd-nav-links a { font-size: 13.5px; }
}

/* Filtre « Travail à distance » de l'annuaire : une case à cocher présentée
   comme les autres champs de la barre de filtres. */
.nd-filtre-distance {
  display: inline-flex; align-items: center; gap: 9px; cursor: pointer;
  background: var(--nd-blanc); border: 1px solid #e0d9cd; border-radius: 40px;
  padding: 0 18px; height: 46px; white-space: nowrap;
  font-family: var(--nd-font-ui); font-size: 14.5px; font-weight: 600;
  color: var(--nd-navy); transition: border-color .2s, background .2s;
}
.nd-filtre-distance:hover { border-color: var(--nd-taupe); }
.nd-filtre-distance input { accent-color: var(--nd-taupe); width: 16px; height: 16px; cursor: pointer; }
.nd-filtre-distance i { color: var(--nd-taupe); font-size: 16px; }
.nd-filtre-distance:has(input:checked) { background: var(--nd-beige); border-color: var(--nd-taupe); }
.nd-filtre-champ select:disabled { opacity: .45; cursor: not-allowed; }
@media (max-width: 860px) {
  .nd-filtre-distance { width: 100%; justify-content: center; }
}

/* Case « À distance » dans la recherche de l'accueil : s'intègre à la barre
   blanche arrondie, au même niveau que les listes déroulantes. */
.nd-recherche-distance {
  display: inline-flex; align-items: center; gap: 8px; cursor: pointer;
  padding: 0 16px; height: 52px; white-space: nowrap;
  border-right: 1px solid #E3EAF0;
  font-family: var(--nd-font-ui); font-size: 15px; color: var(--nd-texte);
}
.nd-recherche-distance input { accent-color: var(--nd-taupe); width: 16px; height: 16px; cursor: pointer; }
@media (max-width: 860px) {
  .nd-recherche-distance { width: 100%; justify-content: center; border-right: none; border-bottom: 1px solid #E3EAF0; }
}
