/* =============================================================
   Mobilité Rurale — Frontend CSS
   Mobile-first, WCAG AA, taille min 16px, zones tactiles ≥44px
   ============================================================= */

/* =============================================================
   Correctif de cascade — attribut [hidden]
   ============================================================= */
.mobility-wrap [hidden],
#mob-locale-modal[hidden],
#mob-contact-modal[hidden],
#mob-manage-modal[hidden] {
  display: none !important;
}

/* ---- Variables ---- */
/* Définies sur :root ET sur .mobility-wrap.
   Les modales sont déplacées sous <body> par JS (fix Elementor stacking context) :
   elles ne sont plus enfants de .mobility-wrap et héritent donc de :root. */
:root,
.mobility-wrap {
  --mob-blue:    #2563eb;
  --mob-blue-d:  #1d4ed8;
  --mob-blue-l:  #eff6ff;
  --mob-green:   #16a34a;
  --mob-red:     #dc2626;
  --mob-gray-1:  #111827;
  --mob-gray-2:  #374151;
  --mob-gray-3:  #6b7280;
  --mob-gray-4:  #e5e7eb;
  --mob-gray-5:  #f9fafb;
  --mob-radius:  10px;
  --mob-shadow:  0 1px 3px rgba(0,0,0,.1);
}

/* ---- Wrapper ---- */
.mobility-wrap {
  max-width: 760px;
  margin: 0 auto;
  padding: 0 16px 32px;
  font-size: 16px;
  color: var(--mob-gray-2);
  box-sizing: border-box;
  width: 100%;
  overflow-x: hidden;
}

/* ---- Sections ---- */
.mob-section {
  margin-bottom: 28px;
}

/* Titre compact — réduit par rapport à la v0.6.0 */
.mob-section-title {
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .5px;
  color: var(--mob-gray-3);
  margin: 0 0 10px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--mob-blue);
}

/* =============================================================
   Liste des trajets — compactée
   ============================================================= */
.mob-trips {
  display: grid;
  gap: 7px;
}

.mob-loading,
.mob-empty {
  color: var(--mob-gray-3);
  font-size: 14px;
  padding: 12px 0;
}

/* Carte compacte : en-tête sur une ligne, infos en dessous */
.mob-trip-card {
  background: #fff;
  border: 1px solid var(--mob-gray-4);
  border-radius: var(--mob-radius);
  padding: 10px 12px;
  box-shadow: var(--mob-shadow);
  display: flex;
  flex-direction: column;
  gap: 4px;
}

/* En-tête : badge rôle + bouton Contacter sur la même ligne */
.mob-trip-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.mob-trip-role {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .4px;
  padding: 2px 8px;
  border-radius: 999px;
  white-space: nowrap;
  flex-shrink: 0;
}

.mob-trip-role.driver    { background: #fee2e2; color: var(--mob-red); }
.mob-trip-role.passenger { background: #dbeafe; color: var(--mob-blue); }

.mob-trip-route {
  font-size: 15px;
  font-weight: 600;
  color: var(--mob-gray-1);
}

.mob-trip-meta {
  font-size: 13px;
  color: var(--mob-gray-3);
  line-height: 1.4;
}

.mob-trip-meta strong {
  color: var(--mob-gray-2);
}

/* ---- Bouton Contacter (inline sur la carte) ---- */
.mob-contact-btn {
  appearance: none;
  background: var(--mob-blue);
  color: #fff;
  border: none;
  border-radius: 6px;
  padding: 5px 11px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  min-height: 30px;
  white-space: nowrap;
  flex-shrink: 0;
  transition: background .15s;
}

.mob-contact-btn:hover {
  background: var(--mob-blue-d);
}

/* ---- Ligne de stats 24 h ---- */
.mob-stats-line {
  font-size: 12px;
  color: var(--mob-gray-3);
  margin: 6px 0 0;
  padding: 0;
}

/* =============================================================
   Assistant multi-étapes
   ============================================================= */
.mob-step {
  animation: mob-fadein .15s ease;
}

@keyframes mob-fadein {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: translateY(0); }
}

.mob-back-btn {
  appearance: none;
  background: none;
  border: none;
  padding: 0;
  margin: 0 0 16px;
  font-size: 14px;
  color: var(--mob-gray-3);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.mob-back-btn:hover {
  color: var(--mob-blue);
}

.mob-step-prompt {
  font-size: 17px;
  font-weight: 600;
  color: var(--mob-gray-1);
  margin: 0 0 16px;
}

/* =============================================================
   Étape 1 — grille de direction
   ============================================================= */
.mob-direction-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  width: 100%;
  box-sizing: border-box;
}

@media (max-width: 440px) {
  .mob-direction-grid {
    grid-template-columns: 1fr;
  }
}

.mob-direction-btn {
  appearance: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 18px 14px;
  background: #fff;
  border: 2px solid var(--mob-gray-4);
  border-radius: var(--mob-radius);
  cursor: pointer;
  text-align: center;
  transition: border-color .15s, background .15s, box-shadow .15s;
  min-height: 100px;
  box-sizing: border-box;
  width: 100%;
}

.mob-direction-btn:hover,
.mob-direction-btn:focus-visible {
  border-color: var(--mob-blue);
  background: var(--mob-blue-l);
  box-shadow: 0 0 0 3px rgba(37,99,235,.15);
  outline: none;
}

.mob-direction-arrow {
  font-size: 26px;
  color: var(--mob-blue);
  line-height: 1;
}

.mob-direction-label {
  font-size: 15px;
  font-weight: 700;
  color: var(--mob-gray-1);
  justify-content: center;
}

.mob-direction-sub {
  font-size: 12px;
  color: var(--mob-gray-3);
  line-height: 1.4;
  justify-content: center;
}

/* =============================================================
   Étape 2 — grille de villages locaux
   ============================================================= */
.mob-locale-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

@media (max-width: 360px) {
  .mob-locale-grid {
    grid-template-columns: 1fr;
  }
}

.mob-locale-btn {
  appearance: none;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px 12px;
  background: #fff;
  border: 2px solid var(--mob-gray-4);
  border-radius: var(--mob-radius);
  font-size: 16px;
  font-weight: 600;
  color: var(--mob-gray-1);
  cursor: pointer;
  text-align: center;
  min-height: 56px;
  transition: border-color .15s, background .15s, box-shadow .15s, transform .1s;
  box-shadow: 0 2px 14px rgba(0, 0, 0, .18);
  box-sizing: border-box;
  width: 100%;
}

.mob-locale-btn:hover,
.mob-locale-btn:focus-visible {
  border-color: var(--mob-blue);
  background: var(--mob-blue-l);
  color: var(--mob-blue);
  outline: none;
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(37, 99, 235, .22);
}

/* =============================================================
   Étape 3 — formulaire
   ============================================================= */
.mob-form {
  display: grid;
  gap: 16px;
}

.mob-hp {
  display: none;
}

.mob-fieldset {
  border: none;
  padding: 0;
  margin: 0;
}

.mob-label {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: var(--mob-gray-2);
  margin-bottom: 5px;
}

.mob-req {
  color: var(--mob-red);
}

.mob-row {
  display: grid;
  gap: 12px;
}

@media (min-width: 520px) {
  .mob-row {
    grid-template-columns: 1fr 1fr;
  }
}

.mob-row--zones {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  align-items: start;
}

@media (max-width: 400px) {
  .mob-row--zones {
    grid-template-columns: 1fr;
  }
}

.mob-row--zones .mob-field {
  min-width: 0;
}

.mob-field {
  display: flex;
  flex-direction: column;
}

/* ---- Zone fixe (badge) ---- */
.mob-zone-fixed {
  display: flex;
  align-items: center;
  min-height: 44px;
}

.mob-zone-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  background: var(--mob-blue-l);
  border: 2px solid var(--mob-blue);
  border-radius: var(--mob-radius);
  font-size: 15px;
  font-weight: 700;
  color: var(--mob-blue);
}

/* ---- Autocomplete ---- */
.mob-autocomplete-wrap {
  position: relative;
}

.mob-autocomplete-input {
  width: 100%;
  font-size: 16px;
  color: var(--mob-gray-1);
  background: #fff;
  border: 1.5px solid var(--mob-gray-4);
  border-radius: var(--mob-radius);
  padding: 10px 12px;
  outline: none;
  min-height: 44px;
  transition: border-color .15s;
}

.mob-autocomplete-input:focus {
  border-color: var(--mob-blue);
  box-shadow: 0 0 0 3px rgba(37,99,235,.15);
}

.mob-autocomplete-list {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  z-index: 100;
  background: #fff;
  border: 1.5px solid var(--mob-blue);
  border-radius: var(--mob-radius);
  box-shadow: 0 4px 12px rgba(0,0,0,.12);
  list-style: none;
  margin: 0;
  padding: 4px 0;
  max-height: 240px;
  overflow-y: auto;
}

.mob-autocomplete-list li {
  padding: 10px 14px;
  font-size: 15px;
  color: var(--mob-gray-1);
  cursor: pointer;
  transition: background .1s;
}

.mob-autocomplete-list li:hover {
  background: var(--mob-blue-l);
  color: var(--mob-blue);
}

/* ---- Bouton géolocalisation ---- */
.mob-geo-btn {
  appearance: none;
  background: none;
  border: 1.5px solid var(--mob-gray-4);
  border-radius: 8px;
  padding: 6px 12px;
  margin-top: 6px;
  font-size: 13px;
  color: var(--mob-gray-3);
  cursor: pointer;
  width: fit-content;
  align-self: flex-end;
  transition: border-color .15s, color .15s;
}

.mob-geo-btn:hover:not(:disabled) {
  border-color: var(--mob-blue);
  color: var(--mob-blue);
}

.mob-geo-btn:disabled {
  opacity: .6;
  cursor: not-allowed;
}

/* ---- Rôle ---- */
.mob-role-group {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

.mob-role-btn {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  border: 2px solid var(--mob-gray-4);
  border-radius: var(--mob-radius);
  cursor: pointer;
  font-size: 16px;
  font-weight: 500;
  background: #fff;
  transition: border-color .15s, background .15s;
  min-height: 44px;
  flex: 1;
  justify-content: center;
}

.mob-role-btn:hover {
  border-color: var(--mob-blue);
  background: var(--mob-blue-l);
}

.mob-role-btn input[type="radio"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.mob-role-btn:has(input:checked) {
  border-color: var(--mob-blue);
  background: var(--mob-blue-l);
  color: var(--mob-blue);
  font-weight: 700;
}

.mob-role-icon {
  font-size: 20px;
}

/* ---- Inputs & selects standard ---- */
.mob-form input[type="text"],
.mob-form input[type="date"],
.mob-form input[type="time"],
.mob-form input[type="tel"],
.mob-form input[type="number"],
.mob-form select {
  width: 100%;
  font-size: 16px;
  color: var(--mob-gray-1);
  background: #fff;
  border: 1.5px solid var(--mob-gray-4);
  border-radius: var(--mob-radius);
  padding: 10px 12px;
  outline: none;
  min-height: 44px;
  transition: border-color .15s;
  appearance: auto;
}

.mob-form input:focus,
.mob-form select:focus {
  border-color: var(--mob-blue);
  box-shadow: 0 0 0 3px rgba(37,99,235,.15);
}

.mob-form input::placeholder {
  color: var(--mob-gray-3);
}

/* ---- Captcha ---- */
.mob-captcha-input {
  width: 100%;
  max-width: 120px;
  font-size: 16px;
  color: var(--mob-gray-1);
  background: #fff;
  border: 1.5px solid var(--mob-gray-4);
  border-radius: var(--mob-radius);
  padding: 10px 12px;
  outline: none;
  min-height: 44px;
  transition: border-color .15s;
  appearance: textfield;
}

.mob-captcha-input:focus {
  border-color: var(--mob-blue);
  box-shadow: 0 0 0 3px rgba(37,99,235,.15);
}

/* ---- Hint ---- */
.mob-hint {
  font-size: 13px;
  color: var(--mob-gray-3);
  margin: 4px 0 0;
  line-height: 1.5;
}

/* ---- Note confidentialité ---- */
.mob-privacy {
  font-size: 12px;
  color: var(--mob-gray-3);
  line-height: 1.5;
  background: var(--mob-gray-5);
  border-radius: 8px;
  padding: 8px 12px;
  margin: 0;
}

.mob-privacy-link {
  color: var(--mob-gray-3);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.mob-privacy-link:hover {
  color: var(--mob-primary);
}

/* ---- Erreur ---- */
.mob-error {
  font-size: 14px;
  color: var(--mob-red);
  background: #fef2f2;
  border: 1px solid #fecaca;
  border-radius: 8px;
  padding: 10px 14px;
}

/* ---- Bouton soumettre ---- */
.mob-btn-submit {
  appearance: none;
  background: var(--mob-blue);
  color: #fff;
  border: none;
  border-radius: var(--mob-radius);
  padding: 13px 24px;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  min-height: 48px;
  width: 100%;
  transition: background .15s;
}

.mob-btn-submit:hover {
  background: var(--mob-blue-d);
}

.mob-btn-submit:disabled {
  background: var(--mob-gray-3);
  cursor: not-allowed;
}

/* ---- Bouton secondaire (Modifier dans la confirmation) ---- */
.mob-btn-secondary {
  appearance: none;
  background: #fff;
  color: var(--mob-gray-2);
  border: 1.5px solid var(--mob-gray-4);
  border-radius: var(--mob-radius);
  padding: 12px 20px;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  min-height: 44px;
  transition: border-color .15s, background .15s;
}

.mob-btn-secondary:hover {
  border-color: var(--mob-blue);
  background: var(--mob-blue-l);
  color: var(--mob-blue);
}

/* ---- Succès ---- */
.mob-success {
  text-align: center;
  padding: 32px 20px;
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  border-radius: var(--mob-radius);
}

.mob-success-icon {
  width: 52px;
  height: 52px;
  background: var(--mob-green);
  border-radius: 50%;
  line-height: 52px;
  font-size: 26px;
  color: #fff;
  margin: 0 auto 14px;
}

.mob-success h3 {
  font-size: 19px;
  font-weight: 700;
  color: var(--mob-green);
  margin: 0 0 8px;
}

.mob-success p {
  font-size: 15px;
  color: var(--mob-gray-2);
  line-height: 1.6;
}

/* =============================================================
   Étape 1 — 3e bouton "Autre trajet"
   ============================================================= */
.mob-direction-btn--other {
  grid-column: 1 / -1;
  flex-direction: row;
  justify-content: flex-start;
  gap: 12px;
  min-height: 52px;
  padding: 14px 18px;
  border-style: dashed;
  background: var(--mob-gray-5);
}

.mob-direction-btn--other .mob-direction-arrow {
  font-size: 18px;
  flex-shrink: 0;
}

.mob-direction-btn--other .mob-direction-label {
  font-size: 14px;
}

.mob-direction-btn--other:hover,
.mob-direction-btn--other:focus-visible {
  border-color: var(--mob-blue);
  border-style: dashed;
  background: var(--mob-blue-l);
  box-shadow: 0 0 0 3px rgba(37,99,235,.10);
}

/* =============================================================
   Modales — base commune (locale + contact)
   ============================================================= */
.mob-modal-overlay {
  display: none;
}

.mob-modal-overlay:not([hidden]) {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100vw;
  height: 100vh;
  background: rgba(0, 0, 0, 0.52);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  z-index: 99999;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 20px 16px;
  box-sizing: border-box;
  animation: mob-fadein .15s ease;
}

.mob-modal {
  background: transparent;
  border-radius: 0;
  padding: 0;
  width: 100%;
  max-width: 480px;
  max-height: 85dvh;
  max-height: 85vh;
  overflow-y: auto;
  overflow-x: hidden;
  box-shadow: none;
  animation: mob-modal-in .18s ease;
}

@keyframes mob-modal-in {
  from { opacity: 0; transform: translateY(12px) scale(.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

.mob-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}

.mob-modal-header .mob-step-prompt {
  margin: 0;
  color: #fff;
  font-size: 16px;
  font-weight: 700;
  text-shadow: 0 1px 6px rgba(0, 0, 0, .35);
}

.mob-modal-close {
  appearance: none;
  background: rgba(255, 255, 255, .18);
  border: 1.5px solid rgba(255, 255, 255, .45);
  border-radius: 50%;
  width: 34px;
  height: 34px;
  min-width: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 13px;
  color: #fff;
  flex-shrink: 0;
  transition: background .15s, border-color .15s;
}

.mob-modal-close:hover,
.mob-modal-close:focus-visible {
  background: rgba(255, 255, 255, .32);
  border-color: #fff;
  outline: none;
}

body.mob-modal-open {
  overflow: hidden;
}

/* =============================================================
   Modale locale — spécifique
   ============================================================= */
/* (styles de .mob-locale-btn déjà définis ci-dessus) */

/* =============================================================
   Modale contact — structure et corps
   ============================================================= */

/* Conteneur principal : sans padding global (géré section par section) */
.mob-contact-modal {
  background: #fff;
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 8px 32px rgba(0, 0, 0, .22);
}

/* En-tête : titre + bouton fermeture */
.mob-contact-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--mob-gray-4);
}

.mob-contact-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--mob-gray-1);
}

/* Bouton ✕ adapté au fond blanc de la modale contact */
.mob-contact-modal .mob-modal-close {
  background: var(--mob-gray-5);
  border: 1.5px solid var(--mob-gray-4);
  color: var(--mob-gray-2);
  flex-shrink: 0;
}

.mob-contact-modal .mob-modal-close:hover {
  background: var(--mob-gray-4);
  border-color: var(--mob-gray-3);
  color: var(--mob-gray-1);
}

/* Idem pour la modale gestionnaire */
.mob-manage-modal .mob-modal-close {
  background: var(--mob-gray-5);
  border: 1.5px solid var(--mob-gray-4);
  color: var(--mob-gray-2);
}

.mob-manage-modal .mob-modal-close:hover {
  background: var(--mob-gray-4);
  border-color: var(--mob-gray-3);
  color: var(--mob-gray-1);
}

/* Récapitulatif du trajet — bande fixe sous le header, visible sur les 3 étapes */
.mob-contact-recap {
  padding: 10px 16px;
  background: var(--mob-gray-5);
  border-bottom: 1px solid var(--mob-gray-4);
}

.mob-contact-recap-route {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  font-size: 14px;
  font-weight: 600;
  color: var(--mob-gray-1);
  margin-bottom: 2px;
}

.mob-contact-recap-meta {
  font-size: 12px;
  color: var(--mob-gray-3);
}

/* Badge rôle (driver / passenger) dans le recap */
.mob-contact-role-badge {
  display: inline-block;
  font-size: 10px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  background: var(--mob-blue-l);
  color: var(--mob-blue);
  border: 1px solid #bfdbfe;
  border-radius: 999px;
  padding: 2px 8px;
}

/* Corps — padding commun aux 3 étapes */
.mob-contact-body {
  padding: 14px 16px 10px;
}

/* Note de rôle (ex. "Vous souhaitez être passager·ère") */
.mob-contact-role-note {
  font-size: 11px;
  font-weight: 600;
  color: var(--mob-gray-3);
  text-transform: uppercase;
  letter-spacing: .05em;
  margin: 0 0 14px;
}

/* Champs dans la modale contact */
.mob-contact-modal .mob-field {
  margin-bottom: 12px;
}

.mob-contact-modal .mob-label {
  font-size: 14px;
}

.mob-contact-modal input[type="text"],
.mob-contact-modal input[type="tel"],
.mob-contact-modal input[type="number"] {
  width: 100%;
  font-size: 16px;
  color: var(--mob-gray-1);
  background: #fff;
  border: 1.5px solid var(--mob-gray-4);
  border-radius: var(--mob-radius);
  padding: 10px 12px;
  outline: none;
  min-height: 44px;
  transition: border-color .15s;
  box-sizing: border-box;
}

.mob-contact-modal input:focus {
  border-color: var(--mob-blue);
  box-shadow: 0 0 0 3px rgba(37,99,235,.15);
}

/* Captcha : question + champ réponse sur la même ligne */
.mob-captcha-row {
  display: flex;
  align-items: center;
  gap: 10px;
}

.mob-captcha-q {
  font-size: 14px;
  color: var(--mob-gray-2);
  white-space: nowrap;
}

.mob-captcha-input--inline {
  width: 72px !important;
  min-height: 40px !important;
  text-align: center;
  appearance: textfield;
}

.mob-contact-modal .mob-btn-submit {
  margin-top: 6px;
}

/* Étape confirmation — lignes de récapitulatif */
.mob-contact-confirm-summary {
  border-top: 1px solid var(--mob-gray-4);
  margin-bottom: 0;
}

.mob-confirm-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 8px 0;
  border-bottom: 1px solid var(--mob-gray-4);
  font-size: 14px;
  gap: 12px;
}

.mob-confirm-row:last-child {
  border-bottom: none;
}

.mob-confirm-label {
  color: var(--mob-gray-3);
  flex-shrink: 0;
}

.mob-confirm-val {
  font-weight: 600;
  color: var(--mob-gray-1);
  text-align: right;
}

.mob-contact-confirm-actions {
  display: flex;
  gap: 10px;
  margin-top: 14px;
}

.mob-contact-confirm-actions .mob-btn-secondary { flex: 1; }
.mob-contact-confirm-actions .mob-btn-submit    { flex: 2; }

/* Indicateur d'étapes (3 points) */
.mob-contact-dots {
  display: flex;
  justify-content: center;
  gap: 5px;
  padding: 10px 0 14px;
}

.mob-contact-dot {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--mob-gray-4);
  transition: background .2s;
}

.mob-contact-dot--on {
  background: var(--mob-blue);
}

/* Succès dans la modale contact */
.mob-contact-modal .mob-success {
  margin: 0;
  padding: 24px 16px;
}

/* =============================================================
   Signal visuel d'urgence — cartes de trajet proches du départ
   ============================================================= */
.mob-trip--soon {
  background: #fff7ed;
  border-color: #fed7aa;
}

.mob-trip--urgent {
  background: #ffedd5;
  border-color: #fb923c;
}

.mob-trip--imminent {
  background: #fee2e2;
  border-color: #fca5a5;
}

/* =============================================================
   Cases intelligentes — lieux fréquents (section 19)
   ============================================================= */

/* Bloc principal — affiché uniquement si des lieux sont sauvegardés */
.mob-smart-cases {
  margin-bottom: 20px;
  background: var(--mob-blue-l);
  border: 1px solid #bfdbfe;
  border-radius: var(--mob-radius);
  padding: 12px 14px;
}

/* En-tête : titre + bouton Gérer */
.mob-smart-cases-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}

.mob-smart-cases-title {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .4px;
  color: var(--mob-gray-3);
}

.mob-smart-cases-manage-btn {
  appearance: none;
  background: none;
  border: none;
  padding: 0;
  font-size: 12px;
  color: var(--mob-blue);
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.mob-smart-cases-manage-btn:hover {
  color: var(--mob-blue-d);
}

/* Grille de cases */
.mob-smart-cases-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* Bouton individuel d'une case */
.mob-smart-case-btn {
  appearance: none;
  display: flex;
  align-items: center;
  gap: 6px;
  background: #fff;
  border: 1px solid #bfdbfe;
  border-radius: 999px;
  padding: 7px 14px;
  font-size: 14px;
  font-weight: 500;
  color: var(--mob-gray-1);
  cursor: pointer;
  transition: background .12s, border-color .12s;
  min-height: 36px;
}

.mob-smart-case-btn:hover {
  background: #eff6ff;
  border-color: var(--mob-blue);
}

.mob-smart-case-icon {
  font-size: 16px;
  line-height: 1;
}

.mob-smart-case-label {
  font-size: 13px;
}

/* =============================================================
   Gestionnaire de lieux — panel inline
   ============================================================= */
.mob-places-manager {
  margin-top: 12px;
  border-top: 1px solid #bfdbfe;
  padding-top: 10px;
}

.mob-places-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.mob-places-item {
  display: flex;
  align-items: center;
  gap: 8px;
  background: #fff;
  border: 1px solid var(--mob-gray-4);
  border-radius: 8px;
  padding: 7px 10px;
}

.mob-places-item-icon {
  font-size: 18px;
  flex-shrink: 0;
}

.mob-places-item-label {
  flex: 1;
  font-size: 14px;
  color: var(--mob-gray-1);
}

/* Zone de renommage inline */
.mob-places-item-rename-wrap {
  flex: 1;
  display: flex;
  gap: 6px;
  align-items: center;
}

.mob-places-item-rename-input {
  flex: 1;
  border: 1px solid var(--mob-blue);
  border-radius: 6px;
  padding: 4px 8px;
  font-size: 13px;
  outline: none;
}

.mob-places-item-rename-input:focus {
  box-shadow: 0 0 0 2px #bfdbfe;
}

/* Boutons d'action sur un lieu */
.mob-places-item-actions {
  display: flex;
  gap: 5px;
  flex-shrink: 0;
}

.mob-places-item-btn {
  appearance: none;
  background: none;
  border: 1px solid var(--mob-gray-4);
  border-radius: 6px;
  padding: 3px 8px;
  font-size: 12px;
  color: var(--mob-gray-3);
  cursor: pointer;
  transition: border-color .12s, color .12s;
}

.mob-places-item-btn:hover {
  border-color: var(--mob-blue);
  color: var(--mob-blue);
}

.mob-places-item-btn--delete:hover {
  border-color: var(--mob-red);
  color: var(--mob-red);
}

/* Message aucun lieu */
.mob-places-empty {
  font-size: 13px;
  color: var(--mob-gray-3);
  padding: 6px 0;
}

/* =============================================================
   Étape "Depuis où ?" — résolution de l'origine (smart case)
   ============================================================= */
.mob-from-prompt-title {
  font-size: 16px;
  font-weight: 600;
  color: var(--mob-gray-1);
  margin: 10px 0 14px;
}

.mob-from-prompt-geo-btn {
  appearance: none;
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  background: var(--mob-blue);
  color: #fff;
  border: none;
  border-radius: var(--mob-radius);
  padding: 12px 16px;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  text-align: left;
  transition: background .15s;
  min-height: 44px;
}

.mob-from-prompt-geo-btn:hover {
  background: var(--mob-blue-d);
}

.mob-from-prompt-geo-btn:disabled {
  opacity: .65;
  cursor: not-allowed;
}

.mob-from-prompt-or {
  font-size: 13px;
  color: var(--mob-gray-3);
  text-align: center;
  margin: 12px 0;
  display: flex;
  align-items: center;
  gap: 8px;
}

.mob-from-prompt-or::before,
.mob-from-prompt-or::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--mob-gray-4);
}

/* =============================================================
   Invitation post-soumission — sauvegarder un lieu
   ============================================================= */
.mob-save-place-invite {
  margin-top: 16px;
  background: var(--mob-blue-l);
  border: 1px solid #bfdbfe;
  border-radius: var(--mob-radius);
  padding: 12px 14px;
}

.mob-save-place-question {
  font-size: 14px;
  color: var(--mob-gray-2);
  margin: 0 0 10px;
}

.mob-save-place-icons {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

/* Bouton d'icône de sauvegarde */
.mob-save-icon-btn {
  appearance: none;
  display: flex;
  align-items: center;
  gap: 5px;
  background: #fff;
  border: 1px solid #bfdbfe;
  border-radius: 999px;
  padding: 6px 12px;
  font-size: 13px;
  cursor: pointer;
  transition: background .12s;
}

.mob-save-icon-btn:hover {
  background: #eff6ff;
  border-color: var(--mob-blue);
}

.mob-save-icon-btn--no-thanks {
  color: var(--mob-gray-3);
  border-color: var(--mob-gray-4);
}

.mob-save-icon-btn--saved {
  background: #dcfce7;
  border-color: #86efac;
  color: var(--mob-green);
  font-weight: 600;
  pointer-events: none;
}

/* Champ nom personnalisé */
.mob-save-place-custom {
  display: flex;
  gap: 6px;
  margin-top: 8px;
  align-items: center;
}

.mob-save-place-name {
  flex: 1;
  border: 1px solid var(--mob-blue);
  border-radius: 8px;
  padding: 7px 10px;
  font-size: 14px;
  outline: none;
}

.mob-save-place-name:focus {
  box-shadow: 0 0 0 2px #bfdbfe;
}

/* État vide du bloc cases intelligentes */
.mob-smart-cases-empty {
  font-size: 13px;
  color: var(--mob-gray-3);
  padding: 4px 0;
  margin: 0;
}

/* =============================================================
   Onglets de navigation (v0.6.4)
   ============================================================= */

/* =============================================================
   Architecture v0.6.5 — Écrans (plus d'onglets)
   ============================================================= */

/* Garantir la visibilité quand l'attribut hidden est retiré
   (Elementor peut ajouter display:none via ses propres règles) */
.mob-screen:not([hidden]) {
  display: block !important;
}

/* Lien "Mes lieux →" */
.mob-places-link {
  appearance: none;
  background: none;
  border: none;
  padding: 4px 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--mob-blue);
  cursor: pointer;
  white-space: nowrap;
  text-decoration: none;
  flex-shrink: 0;
}

.mob-places-link:hover {
  color: var(--mob-blue-d);
  text-decoration: underline;
}

/* En-tête de section avec titre + lien côte à côte */
.mob-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
  flex-wrap: nowrap;  /* empêche le lien de passer à la ligne */
}

.mob-section-header .mob-section-title {
  margin: 0;
  flex: 1 1 auto;   /* titre flexible mais ne force pas 100% de largeur */
  min-width: 0;     /* permet le texte-overflow si nécessaire */
}

/* Bouton "← Retour" de l'écran Mes lieux */
.mob-places-back {
  appearance: none;
  background: none;
  border: 1px solid var(--mob-gray-4);
  border-radius: 8px;
  padding: 7px 12px;
  font-size: 13px;
  font-weight: 600;
  color: var(--mob-gray-2);
  cursor: pointer;
  transition: background .12s, border-color .12s;
  flex-shrink: 0;
}

.mob-places-back:hover {
  background: var(--mob-gray-5);
  border-color: var(--mob-gray-3);
}

/* =============================================================
   Grille de tuiles — style CFF (2 colonnes, 2 niveaux de texte)
   ============================================================= */
.mob-places-tile-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 14px;
  user-select: none;
}

.mob-place-tile {
  appearance: none;
  background: #fff;
  border: 1.5px solid var(--mob-gray-4);
  border-radius: 12px;
  padding: 14px 12px;
  cursor: pointer;
  text-align: left;
  min-height: 80px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 4px;
  box-shadow: 0 1px 4px rgba(0,0,0,.06);
  transition: background .12s, border-color .12s, box-shadow .12s, opacity .12s;
  -webkit-user-select: none;
  touch-action: none;
}

.mob-place-tile:hover,
.mob-place-tile:focus-visible {
  background: var(--mob-blue-l);
  border-color: var(--mob-blue);
  box-shadow: 0 2px 8px rgba(37,99,235,.1);
  transform: scale(1.03);
}

/* Ligne 1 — slug / zone réelle (petite, grise) */
.mob-tile-slug {
  font-size: 11px;
  color: var(--mob-gray-3);
  text-transform: uppercase;
  letter-spacing: .04em;
  line-height: 1.2;
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Ligne 2 — label personnalisé (grande, noire, bold) */
.mob-tile-label {
  font-size: 15px;
  font-weight: 700;
  color: var(--mob-gray-1);
  line-height: 1.25;
  display: block;
  word-break: break-word;
}

/* États de drag */
.mob-place-tile.mob-tile--drag-source {
  opacity: .45;
  border-style: dashed;
  transform: scale(.97);
  transition: none;
}

.mob-place-tile.mob-tile--drag-over {
  background: var(--mob-blue-l);
  border-color: var(--mob-blue);
  box-shadow: 0 0 0 3px #bfdbfe;
  transform: scale(1.05);
  transition: none;
}

/* Message vide dans la grille */
.mob-places-empty-hint {
  grid-column: 1 / -1;
  text-align: center;
  font-size: 14px;
  color: var(--mob-gray-3);
  padding: 24px 16px;
  margin: 0;
}

/* Wrapper du lien "Gérer mes lieux" */
.mob-places-manage-wrap {
  text-align: right;
  margin-bottom: 20px;
}

.mob-places-manage-link {
  appearance: none;
  background: none;
  border: none;
  padding: 0;
  font-size: 13px;
  color: var(--mob-blue);
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
  transition: color .12s;
}

.mob-places-manage-link:hover {
  color: var(--mob-blue-d);
}

/* Formulaire plat (écran Mes lieux) — séparateur visuel */
.mob-places-form {
  border-top: 1px solid var(--mob-gray-4);
  padding-top: 20px;
  margin-top: 4px;
}

/* =============================================================
   Modale gestionnaire de lieux
   ============================================================= */
.mob-manage-modal {
  max-height: 90vh;
  overflow-y: auto;
}

.mob-manage-body {
  padding: 4px 0 0;
}

/* Liste des lieux dans la modale gestionnaire */
.mob-places-list {
  list-style: none;
  margin: 0 0 20px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.mob-places-item {
  display: flex;
  align-items: center;
  gap: 8px;
  background: #fff;
  border: 1px solid var(--mob-gray-4);
  border-radius: 8px;
  padding: 8px 10px;
}

.mob-places-item-icon {
  font-size: 18px;
  flex-shrink: 0;
}

.mob-places-item-info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.mob-places-item-label {
  font-size: 14px;
  font-weight: 600;
  color: var(--mob-gray-1);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mob-places-item-zone {
  font-size: 11px;
  color: var(--mob-gray-3);
  text-transform: uppercase;
  letter-spacing: .03em;
}

.mob-places-item-rename-wrap {
  flex: 1;
  display: flex;
  gap: 6px;
  align-items: center;
}

.mob-places-item-rename-input {
  flex: 1;
  border: 1px solid var(--mob-blue);
  border-radius: 6px;
  padding: 4px 8px;
  font-size: 13px;
  outline: none;
}

.mob-places-item-rename-input:focus {
  box-shadow: 0 0 0 2px #bfdbfe;
}

.mob-places-item-actions {
  display: flex;
  gap: 5px;
  flex-shrink: 0;
}

.mob-places-item-btn {
  appearance: none;
  background: none;
  border: 1px solid var(--mob-gray-4);
  border-radius: 6px;
  padding: 3px 8px;
  font-size: 12px;
  color: var(--mob-gray-3);
  cursor: pointer;
  transition: border-color .12s, color .12s;
}

.mob-places-item-btn:hover { border-color: var(--mob-blue); color: var(--mob-blue); }
.mob-places-item-btn--delete:hover { border-color: var(--mob-red); color: var(--mob-red); }

.mob-places-empty {
  font-size: 13px;
  color: var(--mob-gray-3);
  padding: 6px 0;
}

/* Formulaire ajout de lieu dans la modale */
.mob-place-add-form {
  margin-top: 4px;
  background: var(--mob-blue-l);
  border: 1px solid #bfdbfe;
  border-radius: var(--mob-radius);
  padding: 14px;
}

/* Espace avant le bouton Ajouter / Enregistrer dans la modale gestionnaire */
#mob-manage-add-btn {
  margin-top: 14px;
}

.mob-place-add-title {
  font-size: 14px;
  font-weight: 700;
  color: var(--mob-gray-2);
  margin: 0 0 12px;
}

.mob-input {
  width: 100%;
  background: #fff;
  border: 1px solid var(--mob-gray-4);
  border-radius: 8px;
  padding: 10px 12px;
  font-size: 15px;
  color: var(--mob-gray-1);
  outline: none;
  box-sizing: border-box;
}

.mob-input:focus {
  border-color: var(--mob-blue);
  box-shadow: 0 0 0 2px #bfdbfe;
}

/* =============================================================
   Écran événement (v0.6.9)
   ============================================================= */

/* En-tête logo + titre */
.mob-ev-header {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 24px;
}

.mob-ev-logo {
  max-height: 100px;
  max-width: 150px;
  object-fit: contain;
  flex-shrink: 0;
}

.mob-ev-title {
  font-size: 1.1rem;
  font-weight: 700;
  margin: 0;
  margin-left: auto;   /* pousse le titre à droite du logo */
  text-align: right;
  color: var(--mob-gray-1);
}

/* ---- Labels des champs — identiques à la page principale ---- */
#mob-screen-event label {
  font-size: 14px;
  font-weight: 600;
  color: var(--mob-gray-2);
  margin-bottom: 5px;
}

/* ---- Boutons rôle Conducteur / Passager — compacts (plats, 1 ligne) ---- */
#mob-screen-event .mob-direction-btn {
  flex-direction: row;
  justify-content: flex-start;
  min-height: 44px;
  padding: 10px 16px;
  gap: 10px;
}

#mob-screen-event .mob-direction-arrow {
  font-size: 20px;
}

#mob-screen-event .mob-direction-label {
  font-size: 15px;
}

/* ---- État actif (sélection persistante conducteur / passager) ---- */
.mob-direction-btn--active {
  border-color: var(--mob-blue) !important;
  background: var(--mob-blue-l) !important;
  box-shadow: 0 0 0 2px rgba(37,99,235,.2) !important;
  color: var(--mob-blue) !important;
}

.mob-direction-btn--active .mob-direction-label {
  color: var(--mob-blue);
  font-weight: 700;
}

/* ---- Header "Trajets disponibles" — colonne sur mobile ---- */
@media (max-width: 520px) {
  .mob-ev-trips-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }
}

/* Rangée zones (départ ⇆ arrivée) */
.mob-ev-zones-row {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}

.mob-ev-from-field,
.mob-ev-to-field {
  flex: 1 1 200px;
  min-width: 160px;
}

/* Badge zone fixe — ambre */
.mob-ev-zone-badge {
  display: inline-block;
  padding: 10px 14px;
  border-radius: 8px;
  background: #fef3c7;
  border: 1.5px solid #f59e0b;
  color: #92400e;
  font-weight: 600;
  font-size: .95rem;
  width: 100%;
  box-sizing: border-box;
  min-height: 44px;
  line-height: 1.4;
}

/* Bouton swap ⇆ */
.mob-ev-swap-btn {
  appearance: none;
  background: var(--mob-gray-5, #f9fafb);
  border: 1px solid var(--mob-gray-4, #e5e7eb);
  border-radius: 50%;
  width: 40px;
  height: 40px;
  font-size: 18px;
  cursor: pointer;
  flex-shrink: 0;
  margin-bottom: 2px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .15s, border-color .15s;
}

.mob-ev-swap-btn:hover {
  background: var(--mob-blue-l, #eff6ff);
  border-color: var(--mob-blue, #2563eb);
}

/* Header liste + bouton filtre */
.mob-ev-trips-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}

.mob-ev-filter-link {
  appearance: none;
  background: none;
  border: none;
  color: var(--mob-blue, #2563eb);
  font-size: 0.85rem;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
  padding: 0;
  white-space: nowrap;
}

.mob-ev-filter-link:hover {
  opacity: .8;
}

/* Lien site de l'événement */
.mob-ev-event-link-wrap {
  margin-top: 12px;
  text-align: center;
  font-size: 0.85rem;
}

.mob-ev-event-link-wrap a {
  color: var(--mob-gray-3, #6b7280);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.mob-ev-event-link-wrap a:hover {
  color: var(--mob-blue, #2563eb);
}

/* Mobile : passer en colonne sous 400 px */
@media (max-width: 400px) {
  .mob-ev-zones-row {
    flex-wrap: wrap;
  }
  .mob-ev-from-field,
  .mob-ev-to-field {
    flex: 1 1 100%;
  }
  .mob-ev-swap-btn {
    align-self: center;
    margin-bottom: 0;
  }
}


/* ================================================================
   Interstitiel ?contact=TRIP_ID — overlay fixe (mobility.js)
   Indépendant de l'écran actif (default, places, event)
   ================================================================ */

.mob-contact-interstitiel {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, .6);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 99998;
}

.mob-contact-interstitiel-box {
  position: relative;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 14px;
  padding: 36px 40px;
  max-width: 540px;
  width: 92%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
  text-align: center;
  box-shadow: 0 8px 32px rgba(0,0,0,.18);
}

.mob-contact-interstitiel-text {
  font-size: 1rem;
  line-height: 1.6;
  color: #374151;
}

.mob-contact-interstitiel--unavailable .mob-contact-interstitiel-text {
  color: #991b1b;
}

.mob-contact-interstitiel-route {
  font-weight: 700;
  color: #111827;
}

.mob-contact-interstitiel-btn {
  background: #2563eb;
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 12px 28px;
  font-size: 1rem;
  font-weight: 700;
  cursor: pointer;
}

.mob-contact-interstitiel-btn:disabled {
  opacity: .4;
  cursor: default;
}

.mob-contact-interstitiel-btn:not(:disabled):hover {
  filter: brightness(.92);
}

.mob-contact-interstitiel-close {
  position: absolute;
  top: 12px;
  right: 14px;
  background: none;
  border: none;
  font-size: 1.2rem;
  color: #9ca3af;
  cursor: pointer;
  line-height: 1;
  padding: 4px;
}

.mob-contact-interstitiel-close:hover { color: #374151; }

/* ---------------------------------------------------------------
   Écran de contact autonome — #mob-screen-contact (v0.6.11)
   Affiché quand ?contact=TRIP_ID est détecté dans l'URL.
   Reprend le look&feel de la modale contact.
   --------------------------------------------------------------- */

.mob-contact-page {
  max-width: 520px;
  margin: 0 auto;
  border: 1px solid var(--mob-gray-4);
  border-radius: var(--mob-radius-lg, 14px);
  overflow: hidden;
  background: #fff;
}

/* Récap trajet — même style que dans la modale */
.mob-contact-page-recap {
  border-bottom: 1px solid var(--mob-gray-4);
}

/* Zone de chargement / indisponible */
.mob-contact-page-loading {
  padding: 40px 20px;
  text-align: center;
  color: var(--mob-gray-3);
  font-size: .95rem;
}

.mob-contact-page-unavailable {
  padding: 40px 20px;
  text-align: center;
  color: #991b1b;
  font-size: .95rem;
  line-height: 1.6;
}

.mob-contact-page-unavailable .mob-btn {
  margin-top: 16px;
}

/* Corps formulaire */
#mob-cp-form-wrap,
#mob-cp-confirm-wrap,
#mob-cp-success-wrap {
  padding: 16px 20px 20px;
}

/* Champs */
.mob-contact-field {
  margin-bottom: 14px;
}

.mob-contact-field label {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: var(--mob-gray-2);
  margin-bottom: 6px;
}

.mob-contact-field .mob-input {
  width: 100%;
  font-size: 16px;
  color: var(--mob-gray-1);
  background: #fff;
  border: 1.5px solid var(--mob-gray-4);
  border-radius: var(--mob-radius);
  padding: 10px 12px;
  outline: none;
  min-height: 44px;
  box-sizing: border-box;
  transition: border-color .15s;
}

.mob-contact-field .mob-input:focus {
  border-color: var(--mob-blue);
  box-shadow: 0 0 0 3px rgba(37,99,235,.15);
}

/* Captcha inline */
.mob-contact-captcha-row {
  display: flex;
  align-items: center;
  gap: 10px;
}

.mob-contact-captcha-question {
  font-size: 14px;
  color: var(--mob-gray-2);
  white-space: nowrap;
}

.mob-contact-captcha-input {
  width: 72px !important;
  text-align: center;
  appearance: textfield;
}

/* Note confidentialité */
.mob-contact-privacy-note {
  font-size: .82rem;
  color: var(--mob-gray-3);
  margin: 10px 0 16px;
  line-height: 1.5;
}

/* Bouton principal pleine largeur */
.mob-contact-page-submit {
  width: 100%;
  margin-top: 4px;
}

/* Actions étape confirmation */
.mob-contact-page-actions {
  display: flex;
  gap: 10px;
  margin-top: 16px;
}

.mob-contact-page-actions .mob-btn {
  flex: 1;
}

/* Écran succès */
.mob-contact-page-success {
  text-align: center;
  padding: 20px 0 8px;
}

.mob-contact-page-success .mob-success-icon {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: #d1fae5;
  color: #065f46;
  font-size: 1.8rem;
  line-height: 56px;
  margin: 0 auto 14px;
}

.mob-contact-page-success .mob-success-title {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--mob-gray-1);
  margin-bottom: 8px;
}

.mob-contact-page-success .mob-success-msg {
  color: var(--mob-gray-3);
  font-size: .95rem;
  line-height: 1.5;
  margin-bottom: 20px;
}

.mob-contact-page-success .mob-btn {
  width: 100%;
}

/* =============================================================
   Fix états :hover persistants sur écrans tactiles (iOS / Android)
   Sur mobile, le navigateur simule :hover au tap et l'état reste collé.
   @media (hover: none) cible les appareils sans vrai pointeur.
   Les états :focus-visible (clavier) ne sont pas affectés.
   ============================================================= */
@media (hover: none) {
  .mob-direction-btn:hover {
    background: #fff;
    border-color: var(--mob-gray-4);
    box-shadow: none;
  }
  .mob-locale-btn:hover {
    background: #fff;
    border-color: var(--mob-gray-4);
    color: var(--mob-gray-1);
    transform: none;
    box-shadow: 0 2px 14px rgba(0,0,0,.18);
  }
  .mob-btn-submit:hover           { background: var(--mob-blue); }
  .mob-btn-secondary:hover        { background: #fff; border-color: var(--mob-gray-4); color: var(--mob-gray-2); }
  .mob-contact-btn:hover          { background: var(--mob-blue); }
  .mob-back-btn:hover             { color: var(--mob-gray-3); }
  .mob-role-btn:hover             { background: #fff; border-color: var(--mob-gray-4); }
  .mob-direction-btn--other:hover { background: #fff; border-color: var(--mob-gray-4); box-shadow: none; }
  .mob-geo-btn:hover              { border-color: var(--mob-gray-4); color: var(--mob-gray-3); }
  .mob-place-tile:hover           { background: #fff; border-color: var(--mob-gray-4); box-shadow: var(--mob-shadow); transform: none; }
  .mob-smart-case-btn:hover       { background: #fff; border-color: var(--mob-gray-4); }
  .mob-places-item-btn:hover      { border-color: var(--mob-gray-4); color: var(--mob-gray-2); }
  .mob-places-item-btn--delete:hover { border-color: var(--mob-gray-4); color: var(--mob-gray-2); }
  .mob-ev-swap-btn:hover          { background: var(--mob-gray-5); border-color: var(--mob-gray-4); }
  .mob-ev-swap-btn:active         { background: var(--mob-gray-5); border-color: var(--mob-gray-4); }
  .mob-ev-filter-link:hover       { opacity: 1; }
  .mob-ev-event-link-wrap a:hover { color: var(--mob-gray-3); }
  .mob-contact-interstitiel-btn:hover { background: var(--mob-blue); }
  .mob-contact-interstitiel-close:hover { color: var(--mob-gray-3); }
  .mob-places-link:hover,
  .mob-places-back:hover,
  .mob-places-manage-link:hover   { color: var(--mob-blue); opacity: 1; }
  .mob-save-icon-btn:hover        { background: #fff; }
  .mob-from-prompt-geo-btn:hover  { border-color: var(--mob-gray-4); }
  .mob-smart-cases-manage-btn:hover { opacity: 1; }
  .mob-modal-close:hover          { background: transparent; border-color: transparent; }
}
