/* Page « Projets immobiliers à venir » (permis Sit@del) — design VefaConnect 2026.
   Tokens --vefa-*, fonte titre du site (Charter, serif), hero image de ville + KPI. */
:root { --up-display: var(--title-font-family, Charter, "PT Serif", Georgia, serif); --up-navy: var(--vefa-primary-darker, #1f6396); }

.upcoming-page {
  max-width: 1400px; margin: 0 auto;
  padding: var(--vefa-space-4, 16px) clamp(1rem, 3vw, 2.5rem) var(--vefa-space-9, 96px);
  color: var(--vefa-text, #0f172a);
}
@keyframes vefa-rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

/* ---------- Boutons ---------- */
.up-btn { display: inline-flex; align-items: center; gap: 8px; font-weight: var(--vefa-fw-bold, 700); font-size: var(--vefa-fs-sm, .9rem); text-decoration: none; border-radius: var(--vefa-radius-pill, 999px); padding: 11px 22px; border: 1.5px solid transparent; cursor: pointer; transition: transform .15s ease, box-shadow .15s ease, background .15s ease, color .15s ease; }
.up-btn--primary { background: var(--up-navy); color: #fff; box-shadow: 0 4px 14px rgba(31,99,150,.28); }
.up-btn--primary:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(31,99,150,.38); color: #fff; }
.up-btn--ghost { background: var(--vefa-surface, #fff); color: var(--vefa-text, #0f172a); border-color: var(--vefa-border-strong, #cbd5e1); }
.up-btn--ghost:hover { border-color: var(--up-navy); color: var(--up-navy); }
.up-btn--lg { padding: 14px 28px; font-size: var(--vefa-fs-base, 1rem); }
.up-btn--sm { padding: 8px 16px; font-size: var(--vefa-fs-sm, .85rem); }

/* ---------- Hero ---------- */
.upcoming-hero {
  position: relative; overflow: hidden; border: 1px solid var(--vefa-border, #e2e8f0);
  border-radius: var(--vefa-radius-xl, 24px); margin-bottom: var(--vefa-space-3, 12px);
  background-image: linear-gradient(100deg, rgba(255,255,255,.62) 0%, rgba(255,255,255,.84) 38%, rgba(248,250,252,.97) 58%, #f8fafc 100%), var(--up-hero-img, var(--vefa-gradient-hero, linear-gradient(135deg, #e6f2fd, #f5fafe 46%, #fff0e6)));
  background-size: cover, cover; background-position: center, left center;
}
.upcoming-hero__inner { display: grid; grid-template-columns: 1.1fr 1.15fr; gap: clamp(1.5rem, 4vw, 3rem); align-items: center; padding: clamp(0.9rem, 1.8vw, 1.4rem) clamp(1.5rem, 3vw, 2.5rem); }
.upcoming-hero__lead { animation: vefa-rise .5s cubic-bezier(.16,.84,.44,1) both; }
/* Fil d'Ariane : composant standard du site (vefa-breadcrumb), posé au-dessus du hero
   sur le fond neutre de la page — exactement comme la fiche programme. */
.upcoming-page > .vefa-breadcrumb { margin-bottom: var(--vefa-space-5, 24px); }
.upcoming-hero__badge { display: inline-block; font-size: var(--vefa-fs-xs, .72rem); font-weight: var(--vefa-fw-bold, 700); letter-spacing: .06em; text-transform: uppercase; color: var(--vefa-primary-dark, #2980b9); background: var(--vefa-primary-soft, rgba(52,152,219,.1)); border: 1px solid var(--vefa-primary-soft-strong, rgba(52,152,219,.18)); padding: 5px 12px; border-radius: var(--vefa-radius-pill, 999px); margin-bottom: var(--vefa-space-4, 16px); }
.upcoming-hero .upcoming-title { font-family: var(--up-display); color: var(--vefa-text-strong, #0b1b30); font-size: clamp(1.65rem, 2.3vw, 2.2rem); font-weight: var(--vefa-fw-bold, 700); line-height: var(--vefa-lh-tight, 1.1); letter-spacing: var(--vefa-tracking-tight, -.02em); margin: 0 0 var(--vefa-space-2, 8px); }
.upcoming-subtitle { font-size: var(--vefa-fs-base, 1rem); line-height: var(--vefa-lh-normal, 1.5); color: var(--vefa-text-muted, #475569); margin: 0 0 var(--vefa-space-4, 16px); max-width: 46ch; }
.upcoming-hero__actions { display: flex; flex-wrap: wrap; gap: var(--vefa-space-3, 12px); }

/* KPI 2×2 — cartes horizontales compactes */
.upcoming-hero__kpis { display: grid; grid-template-columns: 1fr 1fr; gap: var(--vefa-space-3, 12px); }
.up-kpi { display: grid; grid-template-columns: auto 1fr; column-gap: 12px; align-items: center; background: var(--vefa-surface, #fff); border: 1px solid var(--vefa-border, #e2e8f0); border-radius: var(--vefa-radius-lg, 14px); padding: var(--vefa-space-3, 12px) var(--vefa-space-4, 16px); box-shadow: var(--vefa-shadow-md); animation: vefa-rise .5s cubic-bezier(.16,.84,.44,1) both; }
.up-kpi:nth-child(2){animation-delay:.07s} .up-kpi:nth-child(3){animation-delay:.13s} .up-kpi:nth-child(4){animation-delay:.19s}
.up-kpi__icon { grid-row: 1 / 3; align-self: center; display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 11px; font-size: 1.05rem; }
.up-kpi__icon--blue { background: var(--vefa-primary-soft, rgba(52,152,219,.12)); color: var(--vefa-primary-dark, #2980b9); }
.up-kpi__icon--orange { background: var(--vefa-accent-soft, rgba(255,64,0,.1)); color: var(--vefa-accent, #ff4000); }
.up-kpi__icon--green { background: var(--vefa-success-soft, rgba(22,163,74,.12)); color: var(--vefa-success, #16a34a); }
.up-kpi__icon--purple { background: rgba(139,92,246,.12); color: #8b5cf6; }
.up-kpi__num { grid-column: 2; display: block; font-family: var(--up-display); font-size: clamp(1.5rem, 1.9vw, 1.9rem); font-weight: var(--vefa-fw-bold, 700); line-height: 1; color: var(--vefa-text-strong, #0b1b30); font-variant-numeric: tabular-nums; }
.up-kpi__num--orange { color: var(--vefa-accent, #ff4000); } .up-kpi__num--green { color: var(--vefa-success, #16a34a); } .up-kpi__num--purple { color: #8b5cf6; }
.up-kpi__lbl { grid-column: 2; display: block; font-size: var(--vefa-fs-xs, .76rem); color: var(--vefa-text-muted, #475569); margin-top: 2px; line-height: 1.25; }

/* ---------- Faits clé (prix + PTZ) ---------- */
.up-facts { display: grid; grid-template-columns: 1fr 1fr; gap: var(--vefa-space-4, 16px); margin-bottom: var(--vefa-space-4, 16px); }
.up-fact { position: relative; overflow: hidden; display: flex; align-items: center; justify-content: space-between; gap: var(--vefa-space-4, 16px); border: 1px solid var(--vefa-border, #e2e8f0); border-radius: var(--vefa-radius-lg, 16px); padding: var(--vefa-space-4, 14px) var(--vefa-space-5, 20px); box-shadow: var(--vefa-shadow-sm); }
.up-fact--price { background: linear-gradient(135deg, #fff8f2, #fffdfb); }
.up-fact--ptz { background: linear-gradient(135deg, #f1fbf4, #fcfffd); }
.up-fact__label { display: block; font-size: var(--vefa-fs-xs, .72rem); font-weight: var(--vefa-fw-bold, 700); letter-spacing: .05em; text-transform: uppercase; color: var(--vefa-text-muted, #475569); }
.up-fact__value { display: block; font-family: var(--up-display); font-size: clamp(1.7rem, 2.5vw, 2.1rem); font-weight: var(--vefa-fw-bold, 700); color: var(--vefa-accent, #ff4000); line-height: 1.15; margin: 2px 0; }
.up-fact__value--green { color: var(--vefa-success, #16a34a); }
.up-fact__value i { font-size: .75em; }
.up-fact__sub { display: block; font-size: var(--vefa-fs-sm, .85rem); color: var(--vefa-text, #334155); }
.up-fact__src { display: block; font-size: var(--vefa-fs-xs, .72rem); color: var(--vefa-text-subtle, #94a3b8); margin-top: 4px; }
.up-fact__link { display: inline-block; margin-top: 6px; font-size: var(--vefa-fs-sm, .85rem); font-weight: var(--vefa-fw-bold, 700); color: var(--vefa-success, #16a34a); text-decoration: none; }
.up-fact__link:hover { text-decoration: underline; }
.up-fact__spark { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; flex: 0 0 110px; }
.up-fact__spark svg { width: 110px; height: 34px; }
.up-fact__delta { font-size: var(--vefa-fs-sm, .8rem); font-weight: var(--vefa-fw-bold, 700); }
.up-fact__delta.is-up { color: var(--vefa-success, #16a34a); } .up-fact__delta.is-down { color: var(--vefa-accent, #ff4000); }
.up-fact__bg-icon { position: absolute; right: -10px; bottom: -16px; font-size: 6rem; color: var(--vefa-success, #16a34a); opacity: .08; pointer-events: none; }

/* ---------- Insight ---------- */
.up-insight { display: flex; align-items: center; gap: var(--vefa-space-4, 16px); background: var(--vefa-accent-soft, rgba(255,64,0,.07)); border: 1px solid rgba(255,64,0,.14); border-radius: var(--vefa-radius-lg, 16px); padding: var(--vefa-space-3, 12px) var(--vefa-space-5, 20px); margin-bottom: var(--vefa-space-5, 22px); }
.up-insight__icon { font-size: 1.4rem; color: var(--vefa-accent, #ff4000); flex: 0 0 auto; }
.up-insight__text { margin: 0; flex: 1; font-size: var(--vefa-fs-sm, .92rem); line-height: var(--vefa-lh-normal, 1.55); color: var(--vefa-text, #334155); }
.up-insight__cta { flex: 0 0 auto; white-space: nowrap; font-weight: var(--vefa-fw-bold, 700); font-size: var(--vefa-fs-sm, .85rem); color: var(--up-navy); background: var(--vefa-surface, #fff); border: 1.5px solid var(--vefa-border-strong, #cbd5e1); border-radius: var(--vefa-radius-pill, 999px); padding: 9px 18px; text-decoration: none; }
.up-insight__cta:hover { border-color: var(--up-navy); }

/* ---------- Sections ---------- */
.up-section { margin-bottom: var(--vefa-space-7, 44px); }
.up-section__head { display: flex; align-items: center; justify-content: space-between; gap: var(--vefa-space-4, 16px); flex-wrap: wrap; margin-bottom: var(--vefa-space-4, 14px); }
.up-section__title { font-family: var(--up-display); font-size: var(--vefa-fs-2xl, 1.7rem); font-weight: var(--vefa-fw-bold, 700); color: var(--vefa-text-strong, #0b1b30); letter-spacing: -.01em; margin: 0; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.up-section__title i { color: var(--vefa-primary, #3498db); font-size: .85em; }
.up-count { font-family: var(--ui-font-family, inherit); font-size: var(--vefa-fs-sm, .8rem); font-weight: var(--vefa-fw-semibold, 600); color: var(--vefa-primary-dark, #2980b9); background: var(--vefa-primary-soft, rgba(52,152,219,.1)); padding: 3px 10px; border-radius: var(--vefa-radius-pill, 999px); }
.up-sort { font-size: var(--vefa-fs-sm, .85rem); color: var(--vefa-text-muted, #475569); display: inline-flex; align-items: center; gap: 8px; }
.up-sort select { font: inherit; font-size: var(--vefa-fs-sm, .85rem); padding: 7px 12px; border: 1px solid var(--vefa-border-strong, #cbd5e1); border-radius: var(--vefa-radius-md, 10px); background: var(--vefa-surface, #fff); color: var(--vefa-text, #0f172a); cursor: pointer; }

/* ---------- Carte ---------- */
.upcoming-map { height: 360px; border-radius: var(--vefa-radius-lg, 16px); border: 1px solid var(--vefa-border, #e2e8f0); overflow: hidden; display: flex; align-items: center; justify-content: center; background: var(--vefa-bg-muted, #f1f5f9); box-shadow: var(--vefa-shadow-md); }
.upcoming-map__loading { color: var(--vefa-text-muted, #475569); font-size: var(--vefa-fs-sm, .9rem); }
.upcoming-map .leaflet-popup-content { font-size: var(--vefa-fs-sm, .85rem); line-height: 1.45; }
.vefa-pin { background: transparent; border: 0; filter: drop-shadow(0 2px 3px rgba(15,23,42,.3)); }

/* ---------- Grille de cartes ---------- */
.up-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: var(--vefa-space-5, 22px); }
.up-card { display: flex; flex-direction: column; background: var(--vefa-surface, #fff); border: 1px solid var(--vefa-border, #e2e8f0); border-radius: var(--vefa-radius-lg, 16px); overflow: hidden; box-shadow: var(--vefa-shadow-sm); transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; animation: vefa-rise .45s cubic-bezier(.16,.84,.44,1) both; }
.up-card:hover { transform: translateY(-4px); box-shadow: var(--vefa-shadow-lg); border-color: var(--vefa-border-strong, #cbd5e1); }
.up-card__media { position: relative; height: 130px; display: flex; align-items: center; justify-content: center; }
.up-card__media--authorized { background: linear-gradient(135deg, #dbeafe, #eef4fb); }
.up-card__media--works { background: linear-gradient(135deg, #ffe6d6, #fff3ea); }
.up-card__media-icon { font-size: 2.6rem; color: rgba(15,23,42,.14); }
.up-card__badge { position: absolute; top: 12px; left: 12px; font-size: var(--vefa-fs-xs, .68rem); font-weight: var(--vefa-fw-bold, 700); letter-spacing: .04em; text-transform: uppercase; padding: 4px 10px; border-radius: var(--vefa-radius-pill, 999px); }
.up-card__badge--authorized { background: var(--vefa-accent, #ff4000); color: #fff; }
.up-card__badge--works { background: var(--vefa-primary-dark, #2980b9); color: #fff; }
.up-card__fav { position: absolute; top: 10px; right: 10px; width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; background: rgba(255,255,255,.9); border-radius: 50%; color: var(--vefa-text-muted, #475569); text-decoration: none; box-shadow: var(--vefa-shadow-sm); transition: color .15s ease, transform .15s ease; }
.up-card__fav:hover { color: var(--vefa-accent, #ff4000); transform: scale(1.08); }
.up-card__body { padding: var(--vefa-space-4, 16px) var(--vefa-space-4, 18px) var(--vefa-space-2, 8px); flex: 1; }
.up-card__name { font-family: var(--up-display); font-size: var(--vefa-fs-xl, 1.25rem); font-weight: var(--vefa-fw-bold, 700); color: var(--vefa-text-strong, #0b1b30); margin: 0 0 2px; line-height: 1.2; }
.up-card__name a { color: inherit; text-decoration: none; }
.up-card__name a:hover { color: var(--vefa-primary-dark, #2980b9); }
.up-card__loc { margin: 0 0 var(--vefa-space-3, 12px); font-size: var(--vefa-fs-sm, .85rem); color: var(--vefa-text-muted, #475569); }
.up-card__specs { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.up-card__specs li { font-size: var(--vefa-fs-sm, .85rem); color: var(--vefa-text, #334155); display: flex; align-items: center; gap: 8px; }
.up-card__specs i { color: var(--vefa-text-subtle, #94a3b8); width: 14px; text-align: center; }
.up-card__foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: var(--vefa-space-3, 12px) var(--vefa-space-4, 18px); border-top: 1px solid var(--vefa-border-subtle, #f1f5f9); margin-top: auto; }
.up-card__launch { font-size: var(--vefa-fs-xs, .76rem); color: var(--vefa-text-muted, #475569); }
.up-card__launch strong { color: var(--vefa-text, #0f172a); }
.up-card__btn { font-size: var(--vefa-fs-sm, .82rem); font-weight: var(--vefa-fw-bold, 700); color: var(--up-navy); border: 1.5px solid var(--vefa-border-strong, #cbd5e1); border-radius: var(--vefa-radius-pill, 999px); padding: 6px 14px; text-decoration: none; white-space: nowrap; transition: background .15s ease, color .15s ease, border-color .15s ease; }
.up-card__btn:hover { background: var(--up-navy); border-color: var(--up-navy); color: #fff; }

/* ---------- CTA alerte ---------- */
.up-cta { display: flex; align-items: center; gap: var(--vefa-space-5, 22px); flex-wrap: wrap; background: var(--vefa-primary-soft, rgba(52,152,219,.08)); border: 1px solid var(--vefa-primary-soft-strong, rgba(52,152,219,.16)); border-radius: var(--vefa-radius-xl, 22px); padding: clamp(1.5rem, 3vw, 2.25rem); margin-bottom: var(--vefa-space-7, 44px); }
.up-cta__icon { font-size: 2rem; color: var(--vefa-primary-dark, #2980b9); flex: 0 0 auto; }
.up-cta__text { flex: 1; min-width: 220px; }
.up-cta__text h2 { font-family: var(--up-display); font-size: var(--vefa-fs-xl, 1.35rem); font-weight: var(--vefa-fw-bold, 700); color: var(--vefa-text-strong, #0b1b30); margin: 0 0 4px; }
.up-cta__text p { margin: 0; color: var(--vefa-text-muted, #475569); font-size: var(--vefa-fs-sm, .92rem); }

/* ---------- Repliable ---------- */
.up-more { margin-bottom: var(--vefa-space-6, 32px); border: 1px dashed var(--vefa-border-strong, #cbd5e1); border-radius: var(--vefa-radius-lg, 16px); padding: 4px var(--vefa-space-5, 22px); background: var(--vefa-bg-soft, #f8fafc); }
.up-more > summary { cursor: pointer; padding: var(--vefa-space-3, 12px) 4px; list-style: none; }
.up-more > summary::-webkit-details-marker { display: none; }
.up-more__title { font-weight: var(--vefa-fw-bold, 700); color: var(--vefa-text, #0f172a); }
.up-more__title::before { content: '▸ '; color: var(--vefa-text-subtle, #94a3b8); }
.up-more[open] .up-more__title::before { content: '▾ '; }
.up-more__hint { display: block; font-size: var(--vefa-fs-sm, .85rem); color: var(--vefa-text-muted, #475569); margin-top: 2px; }
.up-more .up-grid { margin: var(--vefa-space-4, 16px) 0 var(--vefa-space-3, 12px); }

/* ---------- Programmes existants ---------- */
.up-existing__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--vefa-space-3, 12px); }
.up-existing__item { display: block; padding: var(--vefa-space-4, 16px); border: 1px solid var(--vefa-border, #e2e8f0); border-radius: var(--vefa-radius-md, 10px); text-decoration: none; color: var(--vefa-text, #0f172a); background: var(--vefa-surface, #fff); transition: border-color .15s ease, transform .15s ease; }
.up-existing__item:hover { border-color: var(--vefa-primary, #3498db); transform: translateY(-2px); }
.up-existing__name { display: block; font-weight: var(--vefa-fw-bold, 700); }
.up-existing__dev { display: block; font-size: var(--vefa-fs-sm, .82rem); color: var(--vefa-text-muted, #475569); }

/* ---------- Disclaimer ---------- */
.upcoming-disclaimer { font-size: var(--vefa-fs-sm, .82rem); color: var(--vefa-text-muted, #475569); line-height: var(--vefa-lh-normal, 1.55); border-top: 1px solid var(--vefa-border, #e2e8f0); padding-top: var(--vefa-space-4, 16px); }

/* ---------- Responsive ---------- */
@media (max-width: 860px) {
  .upcoming-hero__inner { grid-template-columns: 1fr; }
  .up-facts { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .upcoming-hero__kpis { grid-template-columns: 1fr 1fr; }
  .up-insight { flex-direction: column; align-items: flex-start; }
}
@media (prefers-reduced-motion: reduce) { .upcoming-hero__lead, .up-kpi, .up-card { animation: none; } }

/* ---------- Hub national /projets-a-venir/ ---------- */
.up-hub-hero {
  position: relative; overflow: visible; border: 1px solid var(--vefa-border, #e2e8f0);
  border-radius: var(--vefa-radius-xl, 24px); padding: clamp(1.1rem, 2.2vw, 1.6rem) clamp(1.4rem, 3vw, 2.25rem);
  margin-bottom: var(--vefa-space-5, 24px);
  background: linear-gradient(135deg, #e6f2fd 0%, #f5fafe 45%, #fff0e6 100%);
}
.up-hub-hero--rich { display: grid; grid-template-columns: 1.15fr 1fr; gap: clamp(1.5rem, 4vw, 2.5rem); align-items: center; }
.up-hub-title { font-family: var(--up-display); color: var(--vefa-text-strong, #0b1b30); font-size: clamp(1.6rem, 2.6vw, 2.3rem); font-weight: var(--vefa-fw-bold, 700); letter-spacing: var(--vefa-tracking-tight, -.02em); line-height: 1.08; margin: 0 0 var(--vefa-space-2, 8px); }
.up-hub-subtitle { font-size: var(--vefa-fs-base, 1rem); line-height: var(--vefa-lh-normal, 1.45); color: var(--vefa-text-muted, #475569); max-width: 52ch; margin: 0 0 var(--vefa-space-4, 16px); }
.up-hub-subtitle strong { color: var(--vefa-primary-dark, #2980b9); }

/* Carte des 3 chiffres clés */
.up-hub-statcard { display: flex; flex-wrap: wrap; gap: var(--vefa-space-5, 24px); background: var(--vefa-surface, #fff); border: 1px solid var(--vefa-border, #e2e8f0); border-radius: var(--vefa-radius-lg, 16px); padding: var(--vefa-space-3, 12px) var(--vefa-space-5, 20px); box-shadow: var(--vefa-shadow-md); margin-bottom: var(--vefa-space-3, 12px); }
.up-hub-stat { display: flex; align-items: center; gap: 10px; }
.up-hub-stat__icon { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 11px; font-size: 1rem; flex: 0 0 auto; }
.up-hub-stat__num { display: block; font-family: var(--up-display); font-size: clamp(1.5rem, 2.2vw, 2rem); font-weight: var(--vefa-fw-bold, 700); line-height: 1; color: var(--vefa-primary-dark, #2980b9); font-variant-numeric: tabular-nums; }
.up-hub-stat__num--orange { color: var(--vefa-accent, #ff4000); } .up-hub-stat__num--green { color: var(--vefa-success, #16a34a); }
.up-hub-stat__lbl { display: block; font-size: var(--vefa-fs-xs, .76rem); color: var(--vefa-text-muted, #475569); margin-top: 2px; }

/* Hero droite : illustration + 4 cartes valeur */
.up-hub-hero__right { position: relative; min-height: 200px; }
.up-hub-hero__art { position: absolute; right: -8px; bottom: -8px; width: 60%; max-width: 340px; height: auto; opacity: .62; mix-blend-mode: multiply; pointer-events: none; z-index: 0; }
.up-valueprops { position: relative; z-index: 1; display: grid; grid-template-columns: 1fr 1fr; gap: var(--vefa-space-3, 12px); }
.up-value { display: grid; grid-template-columns: auto 1fr; column-gap: 10px; align-items: center; background: var(--vefa-surface-glass-strong, rgba(255,255,255,.92)); border: 1px solid var(--vefa-border, #e2e8f0); border-radius: var(--vefa-radius-lg, 14px); padding: var(--vefa-space-3, 12px) var(--vefa-space-4, 14px); box-shadow: var(--vefa-shadow-sm); backdrop-filter: blur(4px); }
.up-value__icon { grid-row: 1 / 4; align-self: start; display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 10px; font-size: .9rem; }
.up-value__label { grid-column: 2; font-size: var(--vefa-fs-xs, .72rem); color: var(--vefa-text-muted, #475569); }
.up-value__title { grid-column: 2; font-weight: var(--vefa-fw-bold, 700); color: var(--vefa-text-strong, #0b1b30); font-size: var(--vefa-fs-sm, .95rem); line-height: 1.15; }
.up-value__sub { grid-column: 2; font-size: var(--vefa-fs-xs, .72rem); color: var(--vefa-text-subtle, #94a3b8); }

.up-hub-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: var(--vefa-space-4, 16px); margin-bottom: var(--vefa-space-7, 44px); }
.up-hub-card { position: relative; display: flex; flex-direction: column; gap: 4px; background: var(--vefa-surface, #fff); border: 1px solid var(--vefa-border, #e2e8f0); border-left: 4px solid var(--vefa-accent, #ff4000); border-radius: var(--vefa-radius-lg, 14px); padding: var(--vefa-space-4, 16px) var(--vefa-space-5, 20px); text-decoration: none; box-shadow: var(--vefa-shadow-sm); transition: transform .15s ease, box-shadow .15s ease; }
.up-hub-card:hover { transform: translateY(-3px); box-shadow: var(--vefa-shadow-lg); }
.up-hub-card__name { font-family: var(--up-display); font-size: var(--vefa-fs-xl, 1.25rem); font-weight: var(--vefa-fw-bold, 700); color: var(--vefa-text-strong, #0b1b30); padding-right: 1.9rem; }
.up-hub-card__meta { font-size: var(--vefa-fs-sm, .85rem); color: var(--vefa-text-muted, #475569); }
.up-hub-card__arrow { position: absolute; top: var(--vefa-space-4, 16px); right: var(--vefa-space-5, 18px); color: var(--vefa-accent, #ff4000); font-weight: 700; }
.up-hub-empty { text-align: center; padding: var(--vefa-space-8, 64px) var(--vefa-space-4, 16px); color: var(--vefa-text-muted, #475569); }
.up-hub-empty p { margin: 0 0 var(--vefa-space-5, 20px); }
.up-hub-card--all { border-left-color: var(--vefa-primary, #3498db); background: var(--vefa-primary-soft, rgba(52,152,219,.06)); cursor: pointer; font: inherit; text-align: left; width: 100%; }
.up-hub-card--all .up-hub-card__name { color: var(--vefa-primary-dark, #2980b9); }
.up-hub-card--all .up-hub-card__arrow { color: var(--vefa-primary, #3498db); }

/* Corps 2 colonnes : communes | carte */
.up-hub-body { display: grid; grid-template-columns: 1.25fr 1fr; gap: var(--vefa-space-6, 28px); align-items: start; margin-bottom: var(--vefa-space-7, 44px); }
.up-hub-body .up-hub-grid { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); margin-bottom: 0; }
.up-hub-aside { position: sticky; top: 84px; }
.up-hub-map { height: 480px; border-radius: var(--vefa-radius-lg, 16px); border: 1px solid var(--vefa-border, #e2e8f0); border-top: 3px solid var(--vefa-accent, #ff4000); overflow: hidden; display: flex; align-items: center; justify-content: center; background: var(--vefa-bg-muted, #f1f5f9); box-shadow: var(--vefa-shadow-md); }
.up-hub-map .leaflet-popup-content { font-size: var(--vefa-fs-sm, .85rem); line-height: 1.4; }
.up-hub-map .leaflet-popup-content a { color: var(--vefa-primary-dark, #2980b9); font-weight: 700; text-decoration: none; }
.up-hub-map-legend { display: flex; gap: var(--vefa-space-5, 20px); margin-top: var(--vefa-space-3, 12px); font-size: var(--vefa-fs-sm, .82rem); color: var(--vefa-text-muted, #475569); }
.up-hub-map-legend span { display: inline-flex; align-items: center; gap: 7px; }
.up-legend-pin { width: 12px; height: 12px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); background: var(--vefa-accent, #ff4000); display: inline-block; }
.up-legend-cluster { width: 22px; height: 22px; border-radius: 50%; background: var(--vefa-accent, #ff4000); color: #fff; font-size: .7rem; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }

/* Clusters Leaflet (orange marque) */
.up-cluster-wrap { background: transparent; border: 0; }
.up-cluster { width: 38px; height: 38px; border-radius: 50%; background: var(--vefa-accent, #ff4000); color: #fff; font-weight: 700; font-size: .9rem; display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 8px rgba(255,64,0,.45); border: 3px solid rgba(255,255,255,.85); }

/* Barre CTA du hub */
.up-hub-ctabar { margin-bottom: var(--vefa-space-6, 32px); }

@media (max-width: 980px) {
  .up-hub-hero--rich { grid-template-columns: 1fr; }
  .up-hub-hero__art { display: none; }
  .up-hub-body { grid-template-columns: 1fr; }
  .up-hub-aside { position: static; }
}
@media (max-width: 520px) { .up-valueprops { grid-template-columns: 1fr; } }

/* ---------- Recherche de commune (hub) ---------- */
.up-hub-search { position: relative; margin-top: var(--vefa-space-5, 24px); max-width: 520px; }
.up-hub-search__icon { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); color: var(--vefa-text-subtle, #94a3b8); pointer-events: none; }
.up-hub-search__input { width: 100%; font: inherit; font-size: var(--vefa-fs-base, 1rem); padding: 13px 16px 13px 42px; border: 1.5px solid var(--vefa-border-strong, #cbd5e1); border-radius: var(--vefa-radius-pill, 999px); background: var(--vefa-surface, #fff); color: var(--vefa-text, #0f172a); box-shadow: var(--vefa-shadow-sm); }
.up-hub-search__input:focus { outline: none; border-color: var(--vefa-primary, #3498db); box-shadow: var(--vefa-ring-focus, 0 0 0 3px rgba(52,152,219,.35)); }
.up-hub-search__results { position: absolute; left: 0; right: 0; top: calc(100% + 6px); z-index: 30; }
.up-search-list { list-style: none; margin: 0; padding: 6px; background: var(--vefa-surface, #fff); border: 1px solid var(--vefa-border, #e2e8f0); border-radius: var(--vefa-radius-lg, 14px); box-shadow: var(--vefa-shadow-lg); }
.up-search-list a { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border-radius: var(--vefa-radius-md, 10px); text-decoration: none; color: var(--vefa-text, #0f172a); }
.up-search-list a:hover { background: var(--vefa-bg-muted, #f1f5f9); }
.up-search-name { font-weight: var(--vefa-fw-semibold, 600); }
.up-search-name i { color: var(--vefa-accent, #ff4000); margin-right: 4px; }
.up-search-count { font-size: var(--vefa-fs-sm, .82rem); color: var(--vefa-text-muted, #475569); white-space: nowrap; }
.up-search-empty { padding: 12px 16px; background: var(--vefa-surface, #fff); border: 1px solid var(--vefa-border, #e2e8f0); border-radius: var(--vefa-radius-lg, 14px); box-shadow: var(--vefa-shadow-lg); font-size: var(--vefa-fs-sm, .9rem); color: var(--vefa-text-muted, #475569); }

/* ---------- Carte en plein écran (Fullscreen API) ---------- */
.up-hub-map:fullscreen, .upcoming-map:fullscreen,
.up-hub-map:-webkit-full-screen, .upcoming-map:-webkit-full-screen {
  width: 100vw; height: 100vh; border-radius: 0; border: 0; box-shadow: none;
}
.up-hub-map:fullscreen .leaflet-container, .upcoming-map:fullscreen .leaflet-container { height: 100%; }
