/* ============================================================
   ============= PROPERTY DETAIL — palette FooyDeuk ============
   ============================================================ */

.prop-page { padding: 32px 0 80px; }

.prop-page .crumbs {
  display: flex;
  gap: 8px;
  align-items: center;
  font-size: 0.85rem;
  color: var(--text-mute);
  margin-bottom: 18px;
}
.prop-page .crumbs a { color: var(--text-soft); transition: color var(--t); }
.prop-page .crumbs a:hover { color: var(--terra); }

/* ===== En-tête ===== */
.prop-head {
  margin-bottom: 24px;
}
.prop-head h1 {
  font-size: clamp(1.6rem, 2.8vw, 2.2rem);
  margin-bottom: 10px;
  color: var(--forest);
  letter-spacing: -0.02em;
}

/* ===== Badges de type de bien ===== */
.prop-type-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}
.prop-type-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  background: var(--bg-sand);
  border: 1px solid var(--border);
  border-radius: var(--r-full);
  font-size: .8rem;
  font-weight: 600;
  color: var(--text-soft);
  text-transform: uppercase;
  letter-spacing: .04em;
  transition: background-color, color, border-color var(--t);
}
.prop-type-badge i {
  font-size: .76rem;
  color: var(--terra);
}
[data-theme="dark"] .prop-type-badge {
  background: rgba(255,255,255,.06);
  border-color: var(--border);
  color: var(--text-soft);
}
/* Variante foncier : vert */
.prop-type-badge.prop-type-foncier {
  background: rgba(45,106,79,.10);
  border-color: rgba(45,106,79,.25);
  color: var(--forest);
}
.prop-type-badge.prop-type-foncier i { color: var(--forest-2); }
[data-theme="dark"] .prop-type-badge.prop-type-foncier { background: rgba(45,106,79,.20); border-color: rgba(45,106,79,.35); }
/* Variante commercial : or */
.prop-type-badge.prop-type-commercial {
  background: rgba(244,163,0,.10);
  border-color: rgba(244,163,0,.30);
  color: #8a6800;
}
.prop-type-badge.prop-type-commercial i { color: var(--gold); }
[data-theme="dark"] .prop-type-badge.prop-type-commercial { background: rgba(244,163,0,.18); color: var(--gold); }
[data-theme="dark"] .prop-head h1 { color: var(--text); }
.prop-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  align-items: center;
  font-size: 0.92rem;
  color: var(--text-soft);
}
.prop-meta .dot { color: var(--text-mute); }
.prop-meta .rate {
  color: var(--text);
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(244,163,0,.16);
  padding: 4px 12px;
  border-radius: var(--r-full);
  font-size: 0.85rem;
}
.prop-meta .rate i { color: var(--gold); font-size: .76rem; }
.prop-meta i { color: var(--terra); font-size: 0.82rem; }

/* ============================================================
   Bandeau "Publié par" — photo + username + tag rôle bien visible
   Placé entre la meta du bien et les boutons d'actions
   ============================================================ */
.prop-publisher {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 18px;
  background: linear-gradient(135deg, var(--bg-cream) 0%, var(--surface) 100%);
  border: 1.5px solid var(--border);
  border-radius: var(--r);
  margin-top: 16px;
  box-shadow: 0 2px 8px rgba(27,67,50,.04);
  flex-wrap: wrap;
}
[data-theme="dark"] .prop-publisher {
  background: linear-gradient(135deg, rgba(255,255,255,.05), rgba(255,255,255,.02));
  border-color: var(--border);
}

/* Avatar : 56px rond avec dot rôle en bas-droite */
.prop-publisher-avatar {
  position: relative;
  width: 56px; height: 56px;
  flex-shrink: 0;
}
.prop-publisher-avatar img,
.prop-publisher-avatar .initial {
  width: 56px; height: 56px;
  border-radius: 50%;
  object-fit: cover;
  border: 2.5px solid var(--surface);
  box-shadow: 0 4px 12px -2px rgba(27,67,50,.20);
}
.prop-publisher-avatar .initial {
  display: grid; place-items: center;
  background: linear-gradient(135deg, var(--terra), var(--gold));
  color: white;
  font-family: 'Fraunces', serif;
  font-weight: 700;
  font-size: 1.5rem;
}
[data-theme="dark"] .prop-publisher-avatar img,
[data-theme="dark"] .prop-publisher-avatar .initial { border-color: var(--bg); }

.prop-publisher-avatar .role-dot {
  position: absolute;
  bottom: -2px; right: -2px;
  width: 24px; height: 24px;
  display: grid; place-items: center;
  border-radius: 50%;
  border: 2.5px solid var(--surface);
  font-size: .7rem;
  color: white;
}
[data-theme="dark"] .prop-publisher-avatar .role-dot { border-color: var(--bg); }
.role-dot.agent { background: var(--forest); }
.role-dot.hotel { background: var(--gold); color: var(--night); }
.role-dot.owner { background: var(--terra); }

/* Bloc nom + handle */
.prop-publisher-meta {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
  flex: 1;
}
.prop-publisher-lbl {
  font-size: .66rem;
  color: var(--text-mute);
  text-transform: uppercase;
  letter-spacing: 0.10em;
  font-weight: 800;
}
.prop-publisher-name {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
}
.prop-publisher-name strong {
  font-family: 'Fraunces', serif;
  font-size: 1.18rem;
  font-weight: 600;
  color: var(--text);
  letter-spacing: -0.015em;
}
.prop-publisher-name .handle {
  font-family: 'DM Sans', sans-serif;
  font-size: .86rem;
  color: var(--text-soft);
  font-weight: 500;
}

/* Tag rôle à droite */
.prop-publisher-tag {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 13px;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  border-radius: var(--r-full);
  flex-shrink: 0;
}
.prop-publisher-tag i { font-size: .68rem; }
.prop-publisher-tag.agent { background: rgba(45,106,79,.14); color: var(--forest); }
[data-theme="dark"] .prop-publisher-tag.agent { background: rgba(95,203,149,.18); color: var(--forest-2); }
.prop-publisher-tag.hotel { background: rgba(244,167,64,.18); color: var(--night); }
[data-theme="dark"] .prop-publisher-tag.hotel { color: var(--gold); }
.prop-publisher-tag.owner { background: rgba(231,111,81,.14); color: var(--terra); }

@media (max-width: 600px) {
  .prop-publisher { padding: 12px 14px; gap: 12px; }
  .prop-publisher-avatar, .prop-publisher-avatar img, .prop-publisher-avatar .initial { width: 48px; height: 48px; }
  .prop-publisher-name strong { font-size: 1.05rem; }
  .prop-publisher-tag { width: 100%; justify-content: center; }
}

.prop-actions-top {
  display: flex;
  gap: 8px;
  margin-top: 16px;
  flex-wrap: wrap;
}
.prop-actions-top button {
  background: var(--surface);
  border: 1.5px solid var(--border);
  color: var(--text);
  padding: 10px 18px;
  border-radius: var(--r-full);
  font-weight: 600;
  font-size: 0.86rem;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  transition: border-color, color, box-shadow, transform var(--t);
}
.prop-actions-top button:hover {
  border-color: var(--terra);
  color: var(--terra);
  transform: translateY(-1px);
  box-shadow: 0 6px 16px -8px rgba(231,111,81,.25);
}
[data-theme="dark"] .prop-actions-top button { background: var(--surface); border-color: var(--border); color: var(--text); }
[data-theme="dark"] .prop-actions-top button:hover { border-color: var(--terra); color: var(--terra); }

/* ===== Galerie ===== */
.gallery {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  grid-template-rows: 220px 220px;
  gap: 8px;
  margin-bottom: 36px;
  border-radius: var(--r-xl);
  overflow: hidden;
  height: 448px;
}
.g-item {
  cursor: pointer;
  overflow: hidden;
  position: relative;
  background: var(--bg-sand);
}
.g-item img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .6s cubic-bezier(.2,.8,.2,1);
}
.g-item:hover img { transform: scale(1.06); }
.g-item:nth-child(1) { grid-row: span 2; }

/* Overlay "+N photos" sur la 5e vignette quand le bien a plus de 5 photos.
   Affiché dynamiquement uniquement si .g-item-more est présent. */
.g-item-more .g-more-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(15,27,22,.72) 0%, rgba(27,67,50,.60) 100%);
  color: var(--cream);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-weight: 700;
  font-size: 1rem;
  font-family: 'Fraunces', serif;
  letter-spacing: -0.01em;
  transition: background var(--t);
  pointer-events: none;
}
.g-item-more .g-more-overlay i {
  font-size: 1.6rem;
  color: var(--gold);
}
.g-item-more:hover .g-more-overlay {
  background: linear-gradient(135deg, rgba(231,111,81,.78) 0%, rgba(201,90,61,.66) 100%);
}
.g-item-more:hover .g-more-overlay i { color: #fff; }

/* ===== Grid principal ===== */
.prop-grid {
  display: grid;
  grid-template-columns: 1fr 360px;
  gap: 56px;
  align-items: start;
}

.prop-section {
  padding: 32px 0;
  border-bottom: 1px solid var(--border-soft);
}
.prop-section:last-child { border-bottom: none; }
.prop-section h3 {
  margin-bottom: 18px;
  font-size: 1.35rem;
  color: var(--forest);
  font-family: 'Fraunces', serif;
  font-weight: 600;
  letter-spacing: -0.01em;
}
[data-theme="dark"] .prop-section h3 { color: var(--text); }

/* ===== Quick facts ===== */
.facts {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-bottom: 8px;
}
.fact {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--border-soft);
  border-radius: var(--r);
  background: var(--surface);
  transition: border-color, box-shadow, transform var(--t);
}
[data-theme="dark"] .fact { background: var(--surface); border-color: var(--border); }
.fact:hover {
  transform: translateY(-2px);
  border-color: rgba(231,111,81,.30);
  box-shadow: 0 12px 24px -12px rgba(27,67,50,.18);
}
.fact i {
  width: 40px; height: 40px;
  background: rgba(231,111,81,.14);
  color: var(--terra);
  border-radius: 12px;
  display: grid;
  place-items: center;
  font-size: .95rem;
  flex-shrink: 0;
}
.fact .lbl {
  color: var(--text-mute);
  font-size: 0.74rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-weight: 700;
}
.fact .val {
  font-weight: 700;
  font-size: 1rem;
  color: var(--text);
  margin-top: 2px;
  letter-spacing: -0.01em;
}

.desc {
  color: var(--text);
  line-height: 1.75;
  font-size: 1rem;
}

/* ===== Features list ===== */
.feat-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.feat-list .feat {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  font-size: 0.95rem;
  background: var(--bg-cream);
  border-radius: 12px;
  transition: background-color, box-shadow, transform var(--t);
}
[data-theme="dark"] .feat-list .feat { background: var(--bg-cream); }
.feat-list .feat:hover {
  background: var(--surface);
  transform: translateX(2px);
  box-shadow: 0 4px 12px -4px rgba(27,67,50,.10);
}
.feat-list .feat i {
  width: 24px; height: 24px;
  background: var(--terra);
  color: white;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 0.7rem;
  flex-shrink: 0;
}

/* ===== Map ===== */
#propMap {
  height: 380px;
  border-radius: var(--r-xl);
  overflow: hidden;
  border: 1px solid var(--border-soft);
}
[data-theme="dark"] #propMap { border-color: var(--border); }

/* ===== Sidebar contact ===== */
/* La sidebar contient maintenant peu d'éléments (prix · agent · bouton · info)
   donc elle tient dans le viewport. Sticky simple, pas de max-height nécessaire.
   Le FAB "Je suis intéressé" reste de toute façon visible en permanence en bas-droite. */
.prop-aside {
  align-self: start;
  position: sticky;
  top: calc(var(--header-h) + 20px);
}
@media (max-width: 1024px) {
  .prop-aside { position: static; }
}

.contact-card {
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: 22px;
  padding: 26px;
  box-shadow: 0 18px 40px -16px rgba(27,67,50,.18);
  margin-bottom: 16px;
}
[data-theme="dark"] .contact-card { background: var(--surface); border-color: var(--border); box-shadow: 0 18px 40px -10px rgba(0,0,0,.4); }

.contact-price {
  position: relative;
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 20px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--border-soft);
  isolation: isolate;
}
[data-theme="dark"] .contact-price { border-bottom-color: var(--border); }
/* Halo doré derrière le prix de la sidebar — discret sur fond clair */
.contact-price::before {
  content: "";
  position: absolute;
  inset: -8px -16px 6px -8px;
  z-index: -1;
  background:
    radial-gradient(60% 100% at 22% 50%, rgba(244, 163, 0, .22), transparent 72%),
    radial-gradient(50% 100% at 70% 50%, rgba(231, 111, 81, .14), transparent 75%);
  filter: blur(10px);
  opacity: .85;
  pointer-events: none;
  transition: opacity var(--t);
}
.contact-card:hover .contact-price::before { opacity: 1; }
.contact-price .num {
  font-family: 'Fraunces', serif;
  font-size: 2.05rem;
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1;
  /* Gradient forest → terra → gold pour un prix éditorial chaleureux */
  background: linear-gradient(108deg,
    var(--forest) 0%,
    #2D6A4F 22%,
    var(--terra) 58%,
    var(--gold) 92%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
  filter: drop-shadow(0 1px 0 rgba(244, 163, 0, .18))
          drop-shadow(0 4px 14px rgba(231, 111, 81, .18));
  transition: filter var(--t);
}
.contact-card:hover .contact-price .num {
  filter: drop-shadow(0 1px 0 rgba(244, 163, 0, .28))
          drop-shadow(0 4px 18px rgba(231, 111, 81, .28));
}
[data-theme="dark"] .contact-price .num {
  background: linear-gradient(108deg, #FFE7B5 0%, var(--gold) 38%, var(--terra) 78%, #FFD089 100%);
  -webkit-background-clip: text;
  background-clip: text;
}
[data-theme="dark"] .contact-price::before { opacity: .65; }
.contact-price .per {
  color: var(--text-soft);
  font-size: 0.92rem;
  font-weight: 500;
}

/* ===== Extras prix (charges + caution) sous le prix principal =====
   Rendu uniquement pour les locations long terme (cf. renderPriceExtras
   dans property.js). Style discret pour ne pas voler la vedette au prix. */
.prop-price-extras {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding-top: 6px;
  padding-bottom: 12px;
  color: var(--text-soft);
  font-size: 0.85rem;
  font-weight: 500;
}
.prop-price-extras > span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.prop-price-extras > span i {
  color: var(--terra);
  font-size: 0.8rem;
}
.prop-price-extras .sep {
  color: var(--border);
  font-weight: 700;
  margin: 0 2px;
}

.agent-row {
  display: flex;
  gap: 14px;
  align-items: center;
  margin-bottom: 20px;
  padding: 12px;
  background: var(--bg-cream);
  border-radius: 14px;
}
[data-theme="dark"] .agent-row { background: var(--bg-cream); }
.agent-photo {
  width: 52px; height: 52px;
  border-radius: 50%;
  background-size: cover;
  background-position: center;
  flex-shrink: 0;
  border: 2px solid var(--surface);
  box-shadow: 0 4px 12px -2px rgba(0,0,0,.15);
}
.agent-row .name {
  font-weight: 700;
  color: var(--text);
  font-size: 0.95rem;
}
.agent-row .role {
  color: var(--text-soft);
  font-size: 0.82rem;
  margin-top: 2px;
}

.contact-form {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.contact-form input,
.contact-form textarea {
  padding: 12px 14px;
  border: 1.5px solid var(--border);
  border-radius: 12px;
  background: var(--bg-cream);
  color: var(--text);
  font-size: 0.92rem;
  font-family: inherit;
  transition: border-color, background-color, box-shadow var(--t);
  outline: none;
}
[data-theme="dark"] .contact-form input,
[data-theme="dark"] .contact-form textarea { background: var(--bg-cream); border-color: var(--border); color: var(--text); }
.contact-form input:hover,
.contact-form textarea:hover { border-color: var(--text-mute); }
.contact-form input:focus,
.contact-form textarea:focus {
  border-color: var(--terra);
  background: var(--surface);
  box-shadow: 0 0 0 4px rgba(231,111,81,.12);
}
.contact-form input::placeholder,
.contact-form textarea::placeholder { color: var(--text-mute); }
.contact-form textarea { min-height: 100px; resize: vertical; line-height: 1.5; }

.alt-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-top: 12px;
}

/* ===== Similaires ===== */
.similar { margin-top: 56px; }
.similar h3 {
  margin-bottom: 24px;
  font-size: clamp(1.4rem, 2.2vw, 1.7rem);
  font-family: 'Fraunces', serif;
  color: var(--forest);
  letter-spacing: -0.02em;
}
[data-theme="dark"] .similar h3 { color: var(--text); }

.similar .cards-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 22px;
}

@media (max-width: 1024px) {
  .gallery { grid-template-columns: 1fr 1fr; height: 360px; }
  .g-item:nth-child(1) { grid-column: span 2; grid-row: span 1; }
  .prop-grid { grid-template-columns: 1fr; gap: 32px; }
  .facts { grid-template-columns: 1fr 1fr; }
  .feat-list { grid-template-columns: 1fr; }
}
@media (max-width: 768px) {
  .gallery { grid-template-columns: 1fr; height: auto; }
  .g-item { height: 220px; }
  .g-item:nth-child(1) { grid-column: span 1; }
  .contact-card { padding: 22px; }
}

/* ============================================================
   ============= REVAMP — Composants ajoutés =============
   ============================================================ */

/* ===== Highlights chips (top features visuels) ===== */
.highlights-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 6px 0 24px;
}
.highlight-chip {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 7px 14px 7px 7px;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--r-full);
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text);
  letter-spacing: -0.005em;
  transition: border-color, box-shadow, transform var(--t);
}
[data-theme="dark"] .highlight-chip { background: var(--surface); border-color: var(--border); }
.highlight-chip:hover {
  border-color: var(--terra);
  transform: translateY(-2px);
  box-shadow: 0 8px 18px -10px rgba(231,111,81,.30);
}
.highlight-chip i {
  width: 28px; height: 28px;
  border-radius: 50%;
  background: rgba(231,111,81,.14);
  color: var(--terra);
  display: grid;
  place-items: center;
  font-size: 0.78rem;
}

/* ===== Stats grandes ===== */
.stats-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin: 28px 0;
}
.stat-tile {
  position: relative;
  padding: 24px 22px;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--r-lg);
  overflow: hidden;
  transition: border-color, box-shadow, transform var(--t);
}
[data-theme="dark"] .stat-tile { background: var(--surface); border-color: var(--border); }
.stat-tile:hover { transform: translateY(-3px); box-shadow: 0 18px 40px -16px rgba(27,67,50,.20); border-color: rgba(231,111,81,.30); }
.stat-tile::before {
  content: '';
  position: absolute;
  top: -30px; right: -30px;
  width: 100px; height: 100px;
  background: radial-gradient(circle, rgba(231,111,81,.10), transparent 60%);
  filter: blur(20px);
}
.stat-tile .ic {
  width: 38px; height: 38px;
  background: rgba(231,111,81,.14);
  color: var(--terra);
  border-radius: 12px;
  display: grid;
  place-items: center;
  font-size: 0.92rem;
  margin-bottom: 14px;
  position: relative;
}
.stat-tile:nth-child(2) .ic { background: rgba(244,163,0,.14); color: var(--gold); }
.stat-tile:nth-child(3) .ic { background: rgba(45,106,79,.14); color: var(--forest-2); }
[data-theme="dark"] .stat-tile:nth-child(3) .ic { color: var(--forest-3); }
.stat-tile:nth-child(4) .ic { background: rgba(82,183,136,.14); color: var(--forest-3); }
.stat-tile .num {
  font-family: 'Fraunces', serif;
  font-weight: 700;
  font-size: 1.85rem;
  color: var(--forest);
  letter-spacing: -0.025em;
  line-height: 1;
  position: relative;
}
[data-theme="dark"] .stat-tile .num { color: var(--text); }
.stat-tile .lbl {
  font-size: 0.78rem;
  color: var(--text-mute);
  margin-top: 6px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-weight: 700;
  position: relative;
}

/* ===== Tabs navigation (scrollspy) ===== */
.prop-tabs {
  position: sticky;
  top: var(--header-h);
  z-index: 30;
  background: rgba(251, 246, 238, 0.92);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--border-soft);
  margin: 32px -32px 32px;
  padding: 0 32px;
  overflow-x: auto;
  scrollbar-width: none;
}
[data-theme="dark"] .prop-tabs { background: rgba(11,20,16,0.92); border-color: var(--border); }
.prop-tabs::-webkit-scrollbar { display: none; }
.prop-tabs-inner {
  display: flex;
  gap: 4px;
  position: relative;
}
.prop-tab {
  flex-shrink: 0;
  padding: 16px 18px;
  font-weight: 600;
  font-size: 0.88rem;
  color: var(--text-soft);
  border-bottom: 2px solid transparent;
  transition: color, border-bottom-color var(--t);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  letter-spacing: -0.005em;
  background: transparent;
  cursor: pointer;
}
.prop-tab:hover { color: var(--text); }
.prop-tab.active {
  color: var(--terra);
  border-bottom-color: var(--terra);
}
.prop-tab i { font-size: 0.82rem; }

/* ===== Caractéristiques par catégorie ===== */
.feats-categorized {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}
.feat-cat {
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--r);
  padding: 20px;
}
[data-theme="dark"] .feat-cat { background: var(--surface); border-color: var(--border); }
.feat-cat h5 {
  font-size: 0.78rem;
  color: var(--terra);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 14px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.feat-cat h5 i { font-size: 0.82rem; }
.feat-cat ul { display: flex; flex-direction: column; gap: 10px; list-style: none; padding: 0; }
.feat-cat li {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 0.92rem;
  color: var(--text);
}
.feat-cat li i {
  width: 22px; height: 22px;
  border-radius: 50%;
  background: rgba(45,106,79,.14);
  color: var(--forest-2);
  display: grid;
  place-items: center;
  font-size: 0.66rem;
  flex-shrink: 0;
}
[data-theme="dark"] .feat-cat li i { color: var(--forest-3); }

/* ===== À proximité (nearby amenities) ===== */
.nearby-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}
.nearby-item {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 16px;
  background: var(--bg-cream);
  border: 1px solid var(--border-soft);
  border-radius: 14px;
  transition: border-color, transform var(--t);
}
/* Point mis en avant : bordure or subtile */
.nearby-item.is-highlight {
  border-color: rgba(244, 163, 0, .45);
  background: linear-gradient(135deg, rgba(244, 163, 0, .04), var(--bg-cream));
}
[data-theme="dark"] .nearby-item { background: var(--bg-cream); border-color: var(--border); }
[data-theme="dark"] .nearby-item.is-highlight { border-color: rgba(244, 163, 0, .35); background: rgba(244, 163, 0, .06); }
.nearby-item:hover { transform: translateX(2px); border-color: var(--terra); }
.nearby-item .ic {
  width: 38px; height: 38px;
  border-radius: 12px;
  background: var(--surface);
  display: grid;
  place-items: center;
  font-size: 0.95rem;
  color: var(--terra);
  flex-shrink: 0;
}
.nearby-item.is-highlight .ic { color: var(--gold); }
.nearby-item .meta { flex: 1; min-width: 0; }
.nearby-item .name {
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--text);
  display: flex;
  align-items: center;
  gap: 5px;
  flex-wrap: wrap;
}
.nearby-star { color: var(--gold); font-size: 0.72rem; }
.nearby-cat {
  font-size: 0.7rem;
  color: var(--text-mute);
  text-transform: uppercase;
  letter-spacing: .05em;
  font-weight: 600;
  margin-top: 2px;
}
.nearby-item .dist {
  font-size: 0.76rem;
  color: var(--text-mute);
  margin-top: 2px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.nearby-item .dist i { color: var(--terra); font-size: 0.7rem; }

/* État vide "À proximité" : aucun point renseigné par le propriétaire */
.nearby-empty {
  padding: 20px 18px;
  border: 1px dashed var(--border-soft);
  border-radius: 14px;
  text-align: center;
  color: var(--text-mute);
  font-size: .88rem;
}

/* ===== Avis (reviews) ===== */
.reviews-list {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.review-card {
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--r);
  padding: 22px;
}
[data-theme="dark"] .review-card { background: var(--surface); border-color: var(--border); }
.review-card-head {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 12px;
}
.review-avatar {
  width: 44px; height: 44px;
  border-radius: 50%;
  background-size: cover;
  background-position: center;
  flex-shrink: 0;
}
.review-card-head .meta { flex: 1; min-width: 0; }
.review-card-head .name { font-weight: 700; color: var(--text); }
.review-card-head .when { font-size: 0.78rem; color: var(--text-mute); margin-top: 2px; }
.review-stars {
  color: var(--gold);
  font-size: 0.86rem;
  letter-spacing: 1px;
}
.review-text {
  color: var(--text-soft);
  line-height: 1.6;
  font-size: 0.95rem;
  font-style: italic;
}
.review-verified {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-left: 8px;
  padding: 2px 8px;
  background: rgba(46, 196, 122, 0.12);
  color: var(--success, #2EC47A);
  font-size: 0.72rem;
  font-weight: 700;
  border-radius: var(--r-full);
  letter-spacing: .02em;
  vertical-align: middle;
}
.review-verified i { font-size: 0.7rem; }
[data-theme="dark"] .review-verified { background: rgba(46, 196, 122, 0.18); }

.review-stars-pick i { transition: color .15s ease, transform .15s ease; }
.review-stars-pick i:hover { transform: scale(1.15); }

/* ===== Visit booking calendar ===== */
.visit-block {
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: 18px;
  padding: 22px;
  margin-top: 16px;
}
[data-theme="dark"] .visit-block { background: var(--surface); border-color: var(--border); }
.visit-cal {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 6px;
  margin: 14px 0 16px;
}
.visit-day {
  aspect-ratio: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: 1.5px solid var(--border);
  border-radius: var(--r-sm);
  background: var(--surface);
  cursor: pointer;
  transition: border-color, background-color, color, transform var(--t);
  font-family: 'DM Sans', sans-serif;
}
[data-theme="dark"] .visit-day { background: var(--bg-cream); border-color: var(--border); }
.visit-day:hover:not(.is-disabled) { border-color: var(--terra); transform: translateY(-2px); }
.visit-day.is-disabled { opacity: .35; cursor: not-allowed; }
.visit-day.is-active {
  background: var(--terra);
  border-color: var(--terra);
  color: white;
  box-shadow: 0 6px 14px -4px rgba(231,111,81,.45);
}
.visit-day .dow { font-size: 0.6rem; font-weight: 700; text-transform: uppercase; opacity: .7; letter-spacing: 0.04em; }
.visit-day .day { font-family: 'Fraunces', serif; font-weight: 700; font-size: 1.1rem; line-height: 1; margin-top: 2px; }
.visit-day .mon { font-size: 0.6rem; opacity: .7; margin-top: 1px; }

.visit-slots {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 14px;
}
.visit-slot {
  padding: 8px 14px;
  border: 1.5px solid var(--border);
  border-radius: var(--r-full);
  background: var(--surface);
  font-weight: 600;
  font-size: 0.82rem;
  color: var(--text);
  cursor: pointer;
  transition: background-color, color, border-color var(--t);
}
[data-theme="dark"] .visit-slot { background: var(--bg-cream); border-color: var(--border); }
.visit-slot:hover { border-color: var(--terra); color: var(--terra); }
.visit-slot.is-active {
  background: var(--terra);
  color: white;
  border-color: var(--terra);
}

.visit-summary {
  margin: 16px 0;
  padding: 14px 16px;
  background: var(--bg-cream);
  border-radius: 12px;
  font-size: 0.9rem;
  color: var(--text);
  display: flex;
  align-items: center;
  gap: 10px;
}
[data-theme="dark"] .visit-summary { background: var(--bg-cream); }
.visit-summary i { color: var(--terra); }
.visit-summary strong { color: var(--terra); font-weight: 700; }
.visit-summary.empty { color: var(--text-mute); }
.visit-summary.empty i { color: var(--text-mute); }

/* ===== Section header dans la page ===== */
.prop-section-head {
  display: flex;
  justify-content: space-between;
  align-items: end;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 18px;
}
.prop-section-head h3 { margin: 0; }
.prop-section-head .helper {
  font-size: 0.84rem;
  color: var(--text-mute);
  font-weight: 500;
}

/* ===== Responsive ===== */
@media (max-width: 1024px) {
  .stats-row { grid-template-columns: 1fr 1fr; }
  .feats-categorized { grid-template-columns: 1fr; }
  .nearby-grid { grid-template-columns: 1fr; }
  .visit-cal { gap: 4px; }
  .visit-day .day { font-size: 1rem; }
}
@media (max-width: 600px) {
  .stats-row { grid-template-columns: 1fr 1fr; gap: 10px; }
  .stat-tile { padding: 18px 16px; }
  .stat-tile .num { font-size: 1.5rem; }
  .prop-tabs { margin-left: -16px; margin-right: -16px; padding: 0 16px; }
  .prop-tab { padding: 14px 12px; font-size: 0.82rem; }
  .visit-block { padding: 18px; }
  .visit-day .day { font-size: 0.92rem; }
  .visit-day .dow, .visit-day .mon { font-size: 0.56rem; }
  .review-card { padding: 18px; }
}

/* ==========================================================================
   Sections repliables (Sprint 16 — simplification page bien)
   ========================================================================== */
.prop-collapsible {
  margin: 18px 0;
  border: 1px solid var(--border-soft);
  border-radius: 14px;
  background: var(--bg-cream);
  padding: 0;
  overflow: hidden;
  transition: border-color 220ms ease, box-shadow 220ms ease;
}
.prop-collapsible[open] {
  border-color: var(--border);
  box-shadow: var(--sh-sm);
  background: var(--surface);
}
.prop-collapsible > summary {
  list-style: none;
  cursor: pointer;
  padding: 14px 18px;
  font-weight: 700;
  font-size: 0.98rem;
  color: var(--forest);
  display: flex;
  align-items: center;
  gap: 10px;
  user-select: none;
  position: relative;
}
.prop-collapsible > summary::-webkit-details-marker { display: none; }
.prop-collapsible > summary::after {
  content: '\f078'; /* chevron-down */
  font-family: 'Font Awesome 6 Free';
  font-weight: 900;
  margin-left: auto;
  font-size: 0.78rem;
  color: var(--text-mute);
  transition: transform 220ms cubic-bezier(.4,0,.2,1);
}
.prop-collapsible[open] > summary::after { transform: rotate(180deg); color: var(--terra); }
.prop-collapsible > summary > i:first-child {
  color: var(--terra);
  font-size: 0.95rem;
}
.prop-collapsible > summary .helper-inline {
  font-weight: 500;
  color: var(--text-mute);
  font-size: 0.86rem;
  margin-left: 6px;
}
.prop-collapsible > *:not(summary) {
  padding: 0 18px 18px;
}
[data-theme="dark"] .prop-collapsible > summary { color: var(--text); }

/* Bloc adresse verrouillée (no access) */
.addr-locked {
  animation: addrLockedFade 320ms cubic-bezier(.4,0,.2,1);
}
@keyframes addrLockedFade {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ===== Extra fields display (fiche bien) ===== */
.ef-display-block {
  padding: 14px 18px;
  background: linear-gradient(135deg, rgba(27,67,50,.04), rgba(244,163,0,.04));
  border: 1px solid var(--border-soft);
  border-radius: var(--r);
}
.ef-display-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ef-display-item {
  display: flex;
  align-items: baseline;
  gap: 10px;
  font-size: .9rem;
}
.ef-display-label {
  color: var(--text-soft);
  flex: 0 0 auto;
  min-width: 160px;
}
.ef-display-value {
  font-weight: 600;
  color: var(--text);
}
@media (max-width: 480px) {
  .ef-display-label { min-width: 120px; }
}

/* A6 (V4) — Placeholder visite gated par Interest accepté */
.visit-gate {
  text-align: center;
  padding: 40px 24px;
  background: linear-gradient(135deg, rgba(244,167,0,.06), rgba(231,111,81,.04));
  border: 1px dashed var(--border);
  border-radius: var(--r-lg);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}
.visit-gate-icon {
  width: 56px; height: 56px;
  border-radius: 50%;
  background: rgba(231,111,81,.12);
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--terra);
  font-size: 1.35rem;
}
.visit-gate h4 {
  font-family: 'Fraunces', serif;
  font-size: 1.15rem;
  color: var(--forest);
  margin: 0;
  max-width: 28em;
}
.visit-gate p {
  color: var(--text-soft);
  margin: 0;
  max-width: 36em;
  line-height: 1.55;
}
.visit-gate .btn { margin-top: 4px; }
[data-theme="dark"] .visit-gate h4 { color: var(--text); }
[data-theme="dark"] .visit-gate { border-color: rgba(255,255,255,.10); }

/* ============= V11-B / S-12 — Popover de partage (Copier / WhatsApp) ============= */
.share-popover {
  position: fixed;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r);
  box-shadow: var(--sh-md);
  padding: 8px;
  display: flex;
  flex-direction: column;
  min-width: 220px;
  gap: 4px;
}
.share-popover button,
.share-popover a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border-radius: var(--r-sm);
  font: inherit;
  font-size: .92rem;
  color: var(--text);
  text-decoration: none;
  background: transparent;
  border: 0;
  cursor: pointer;
  transition: background-color var(--t);
  text-align: left;
}
.share-popover button:hover,
.share-popover a:hover {
  background: rgba(231,111,81,.08);
  color: var(--terra);
}
.share-popover a[data-action="whatsapp"] i { color: #25D366; }

/* ============= V11-B / S-6 — Section vidéo du bien ============= */
.prop-video-section {
  margin-top: 28px;
  padding: 24px;
  background: var(--surface);
  border: 1px solid var(--border-soft);
  border-radius: var(--r-lg);
}
.prop-video-title {
  font-family: 'Fraunces', serif;
  font-size: 1.25rem;
  margin: 0 0 16px;
  color: var(--forest);
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.prop-video-title i { color: var(--terra); }
.prop-video-grid {
  display: grid;
  gap: 16px;
}
.prop-video-grid video {
  width: 100%;
  max-height: 480px;
  border-radius: var(--r);
  background: #000;
  outline: none;
}
[data-theme="dark"] .prop-video-title { color: var(--text); }
