/* ========================================
   IMMO FLUX - Styles front-end
   ======================================== */

:root {
  --immo-primary:    #1a3c5e;
  --immo-accent:     #e8a020;
  --immo-success:    #2ecc71;
  --immo-warning:    #f39c12;
  --immo-danger:     #e74c3c;
  --immo-gray:       #6c757d;
  --immo-light:      #f8f9fa;
  --immo-border:     #dee2e6;
  --immo-radius:     8px;
  --immo-shadow:     0 2px 12px rgba(0,0,0,.10);
}

/* ---- FILTRES ---- */
.immo-filtres {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: flex-end;
  background: var(--immo-light);
  padding: 20px;
  border-radius: var(--immo-radius);
  margin-bottom: 24px;
  border: 1px solid var(--immo-border);
}
.immo-filtres__group {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1 1 160px;
}
.immo-filtres__group label {
  font-size: 12px;
  font-weight: 600;
  color: var(--immo-gray);
  text-transform: uppercase;
  letter-spacing: .5px;
}
.immo-filtres select,
.immo-filtres input[type="number"],
.immo-filtres input[type="text"] {
  padding: 8px 10px;
  border: 1px solid var(--immo-border);
  border-radius: 6px;
  font-size: 14px;
  background: #fff;
  transition: border-color .2s;
}
.immo-filtres select:focus,
.immo-filtres input:focus {
  border-color: var(--immo-primary);
  outline: none;
}
.immo-btn-reset {
  padding: 8px 16px;
  background: none;
  border: 1px solid var(--immo-border);
  border-radius: 6px;
  cursor: pointer;
  font-size: 13px;
  color: var(--immo-gray);
  transition: all .2s;
  align-self: flex-end;
}
.immo-btn-reset:hover { background: var(--immo-light); color: #333; }

/* ---- RÉSULTATS INFO ---- */
.immo-resultats-info {
  font-size: 14px;
  color: var(--immo-gray);
  margin-bottom: 16px;
}
.immo-nb-resultats { font-weight: 700; color: var(--immo-primary); }

/* ---- PLACEHOLDER INITIALES ---- */
.immo-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  user-select: none;
  container-type: size;
}
.immo-placeholder__icon {
  opacity: .30;
  flex-shrink: 0;
}
.immo-placeholder__initiales {
  font-size: clamp(20px, 30cqh, 52px);
  font-weight: 900;
  letter-spacing: .05em;
  color: #fff;
  line-height: 1;
  text-shadow: 0 2px 8px rgba(0,0,0,.20);
}
.immo-placeholder__label {
  font-size: 10px;
  font-weight: 700;
  color: rgba(255,255,255,.70);
  text-transform: uppercase;
  letter-spacing: .10em;
  text-align: center;
  padding: 0 8px;
  line-height: 1.3;
}
/* Popup carte : compact, pas d'icône ni label */
.immo-popup__img .immo-placeholder .immo-placeholder__icon,
.immo-popup__img .immo-placeholder .immo-placeholder__label { display: none; }
.immo-popup__img .immo-placeholder .immo-placeholder__initiales { font-size: 30px; }

/* ---- GRILLE ---- */
.immo-grille {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 24px;
}
.immo-grille.immo-affichage-liste {
  grid-template-columns: 1fr;
}
.immo-vide {
  grid-column: 1/-1;
  text-align: center;
  color: var(--immo-gray);
  padding: 40px;
}

/* ---- CARD ---- */
.immo-card {
  background: #fff;
  border-radius: var(--immo-radius);
  box-shadow: var(--immo-shadow);
  overflow: hidden;
  transition: transform .2s, box-shadow .2s;
  border: 1px solid var(--immo-border);
}
.immo-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(0,0,0,.15);
}
.immo-card__link { text-decoration: none; color: inherit; display: block; }
.immo-card__image {
  position: relative;
  height: 180px;
  overflow: hidden;
  background: var(--immo-light);
}
.immo-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .3s;
}
.immo-card:hover .immo-card__image img { transform: scale(1.04); }
.immo-card__body { padding: 16px; }
.immo-card__titre {
  font-size: 16px;
  font-weight: 700;
  color: var(--immo-primary);
  margin: 0 0 6px;
  line-height: 1.3;
}
.immo-card__ville {
  font-size: 13px;
  color: var(--immo-gray);
  margin: 0 0 8px;
  display: flex;
  align-items: center;
  gap: 4px;
}
.immo-card__ville svg { fill: var(--immo-accent); flex-shrink:0; }
.immo-card__prix {
  font-size: 15px;
  font-weight: 700;
  color: var(--immo-accent);
  margin: 6px 0;
}
.immo-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
  font-size: 12px;
  color: var(--immo-gray);
}
.immo-card__meta span {
  background: var(--immo-light);
  padding: 2px 8px;
  border-radius: 12px;
  border: 1px solid var(--immo-border);
}
.immo-np { color: var(--immo-primary); font-weight: 600; }

/* ---- BADGES ---- */
.immo-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .3px;
  background: var(--immo-primary);
  color: #fff;
}
.immo-card__image .immo-badge {
  position: absolute;
  top: 10px;
  left: 10px;
}
.immo-badge--nue_propriété,
.immo-badge--démembrement { background: #6c3483; }
.immo-badge--pinel        { background: #1a5276; }
.immo-badge--lmnp         { background: #0e6655; }
.immo-badge--déficit_foncier { background: #784212; }
.immo-badge--monument_historique { background: #6d4c41; }
.immo-badge--zone { background: var(--immo-accent); color: #fff; }

/* ---- PAGINATION ---- */
.immo-pagination {
  margin-top: 32px;
  display: flex;
  justify-content: center;
  gap: 8px;
}
.immo-pagination button {
  padding: 6px 14px;
  border: 1px solid var(--immo-border);
  border-radius: 6px;
  background: #fff;
  cursor: pointer;
  transition: all .2s;
}
.immo-pagination button.active,
.immo-pagination button:hover {
  background: var(--immo-primary);
  color: #fff;
  border-color: var(--immo-primary);
}

/* ==============================
   FICHE PROGRAMME
   ============================== */
.immo-fiche { max-width: 960px; margin: 0 auto; }

/* Galerie */
.immo-fiche__galerie { margin-bottom: 28px; }
.immo-galerie-main { border-radius: var(--immo-radius); overflow: hidden; height: 420px; }
.immo-galerie-main img { width:100%; height:100%; object-fit:cover; }
.immo-galerie-thumbs {
  display: flex;
  gap: 8px;
  margin-top: 10px;
  overflow-x: auto;
}
.immo-galerie-thumb {
  width: 80px;
  height: 56px;
  object-fit: cover;
  border-radius: 4px;
  cursor: pointer;
  opacity: .65;
  transition: opacity .2s;
  border: 2px solid transparent;
  flex-shrink: 0;
}
.immo-galerie-thumb:hover,
.immo-galerie-thumb.active { opacity: 1; border-color: var(--immo-accent); }

/* Header */
.immo-fiche__header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: 16px;
  margin-bottom: 24px;
}
.immo-fiche__titre { font-size: 28px; margin: 0 0 6px; color: var(--immo-primary); }
.immo-fiche__lieu  { font-size: 15px; color: var(--immo-gray); margin: 0; }
.immo-fiche__badges { display: flex; flex-wrap: wrap; gap: 8px; }

/* Infos clés */
.immo-fiche__infos-cles {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 12px;
  background: var(--immo-light);
  padding: 20px;
  border-radius: var(--immo-radius);
  margin-bottom: 28px;
  border: 1px solid var(--immo-border);
}
.immo-info-item { display: flex; flex-direction: column; gap: 4px; }
.immo-info-label { font-size: 11px; text-transform: uppercase; letter-spacing: .5px; color: var(--immo-gray); font-weight: 600; }
.immo-info-value { font-size: 15px; font-weight: 700; color: var(--immo-primary); }

/* Description */
.immo-fiche__description { margin-bottom: 28px; }
.immo-fiche__description h2 { font-size: 20px; color: var(--immo-primary); border-bottom: 2px solid var(--immo-accent); padding-bottom: 8px; margin-bottom: 16px; }

/* Documents */
.immo-fiche__documents { margin-bottom: 28px; }
.immo-fiche__documents h2 { font-size: 20px; color: var(--immo-primary); border-bottom: 2px solid var(--immo-accent); padding-bottom: 8px; margin-bottom: 16px; }
.immo-docs-list { display: flex; flex-wrap: wrap; gap: 10px; }
.immo-doc-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  background: var(--immo-light);
  border: 1px solid var(--immo-border);
  border-radius: 6px;
  text-decoration: none;
  color: var(--immo-primary);
  font-size: 13px;
  transition: all .2s;
}
.immo-doc-btn svg { fill: var(--immo-primary); }
.immo-doc-btn:hover { background: var(--immo-primary); color: #fff; }
.immo-doc-btn:hover svg { fill: #fff; }

/* Lots */
.immo-fiche__lots { margin-bottom: 28px; }
.immo-fiche__lots h2 { font-size: 20px; color: var(--immo-primary); border-bottom: 2px solid var(--immo-accent); padding-bottom: 8px; margin-bottom: 16px; }
.immo-lots-filtres { display: flex; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }
.immo-lots-filtres select {
  padding: 8px 12px;
  border: 1px solid var(--immo-border);
  border-radius: 6px;
  font-size: 14px;
  background: #fff;
}
.immo-lots-table-wrapper { overflow-x: auto; }
.immo-lots-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}
.immo-lots-table th {
  background: var(--immo-primary);
  color: #fff;
  padding: 10px 12px;
  text-align: left;
  font-weight: 600;
  white-space: nowrap;
}
.immo-lots-table td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--immo-border);
  vertical-align: middle;
}
.immo-lots-table tr:hover td { background: var(--immo-light); }
.immo-lots-table tr.hidden { display: none; }
.immo-prix { font-weight: 700; color: var(--immo-accent); }
.immo-plan-link {
  color: var(--immo-primary);
  text-decoration: none;
  font-weight: 600;
  font-size: 12px;
  border: 1px solid var(--immo-primary);
  padding: 2px 8px;
  border-radius: 4px;
}
.immo-plan-link:hover { background: var(--immo-primary); color: #fff; }

/* Statuts */
.immo-statut {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 12px;
  font-size: 11px;
  font-weight: 700;
}
.immo-statut--disponible { background: #d5f5e3; color: #1e8449; }
.immo-statut--optionné   { background: #fdebd0; color: #a04000; }
.immo-statut--vendu      { background: #f2d7d5; color: #922b21; }

/* Carte fiche */
.immo-fiche__carte { margin-bottom: 28px; }
.immo-fiche__carte h2 { font-size: 20px; color: var(--immo-primary); border-bottom: 2px solid var(--immo-accent); padding-bottom: 8px; margin-bottom: 16px; }
#immo-map-fiche { border-radius: var(--immo-radius); border: 1px solid var(--immo-border); }

/* ---- BASCULE VUE LISTE / CARTE ---- */
.immo-resultats-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 16px;
}
.immo-vue-toggle {
  display: flex;
  gap: 6px;
}
.immo-vue-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 14px;
  border: 1px solid var(--immo-border);
  border-radius: 6px;
  background: #fff;
  color: var(--immo-gray);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all .18s;
}
.immo-vue-btn svg { fill: currentColor; }
.immo-vue-btn:hover { border-color: var(--immo-primary); color: var(--immo-primary); }
.immo-vue-btn.active {
  background: var(--immo-primary);
  border-color: var(--immo-primary);
  color: #fff;
}

/* ---- PICTO CARTE (marqueur SVG) ---- */
.immo-pin {
  display: block;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,.35));
  transition: transform .15s;
}
.immo-pin:hover { transform: scale(1.15); }
.immo-pin svg { display: block; }

/* ---- CLUSTER ---- */
.immo-cluster {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--immo-primary);
  border: 3px solid #fff;
  box-shadow: 0 2px 8px rgba(0,0,0,.30);
  display: flex;
  align-items: center;
  justify-content: center;
}
.immo-cluster span {
  color: #fff;
  font-weight: 800;
  font-size: 14px;
  line-height: 1;
}

/* ---- POPUP CARTE CATALOGUE ---- */
.immo-leaflet-popup .leaflet-popup-content-wrapper {
  border-radius: 10px;
  padding: 0;
  overflow: hidden;
  box-shadow: 0 6px 24px rgba(0,0,0,.18);
}
.immo-leaflet-popup .leaflet-popup-content {
  margin: 0;
  width: 260px !important;
}
.immo-leaflet-popup .leaflet-popup-tip { background: #fff; }

.immo-popup { font-family: inherit; }
.immo-popup__img {
  width: 100%;
  height: 130px;
  overflow: hidden;
  background: #e9ecef;
}
.immo-popup__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.immo-popup__body {
  padding: 12px 14px 14px;
}
.immo-popup__badge {
  display: inline-block;
  background: var(--immo-primary);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  padding: 2px 8px;
  border-radius: 10px;
  margin-bottom: 6px;
}
.immo-popup__nom {
  display: block;
  font-size: 14px;
  font-weight: 700;
  color: var(--immo-primary);
  margin-bottom: 4px;
  line-height: 1.3;
}
.immo-popup__adresse {
  font-size: 12px;
  color: var(--immo-gray);
  margin: 0 0 4px;
  line-height: 1.4;
}
.immo-popup__prix {
  font-size: 13px;
  font-weight: 700;
  color: var(--immo-accent);
  margin: 0 0 10px;
}
.immo-popup__btn {
  display: block;
  text-align: center;
  background: var(--immo-primary);
  color: #fff !important;
  text-decoration: none;
  padding: 8px 12px;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 700;
  transition: background .18s;
}
.immo-popup__btn:hover { background: var(--immo-accent); }

/* CTA */
.immo-fiche__cta {
  background: linear-gradient(135deg, var(--immo-primary) 0%, #2c5f8e 100%);
  color: #fff;
  padding: 40px;
  border-radius: var(--immo-radius);
  text-align: center;
  margin-bottom: 28px;
}
.immo-fiche__cta h2 { color: #fff; margin-bottom: 12px; border: none; padding: 0; }
.immo-fiche__cta p  { opacity: .85; margin-bottom: 20px; }
.immo-btn-cta {
  display: inline-block;
  padding: 12px 32px;
  background: var(--immo-accent);
  color: #fff;
  text-decoration: none;
  border-radius: 6px;
  font-weight: 700;
  font-size: 15px;
  transition: background .2s;
}
.immo-btn-cta:hover { background: #c8850f; color: #fff; }

/* Responsive */
@media (max-width: 640px) {
  .immo-grille { grid-template-columns: 1fr; }
  .immo-fiche__header { flex-direction: column; }
  .immo-galerie-main { height: 220px; }
  .immo-fiche__infos-cles { grid-template-columns: 1fr 1fr; }
  #immo-catalogue-carte { height: 420px !important; }
}
