/* Page commune « projets à venir », version 2 (prototype ?v2=1, chantier projets-a-venir).
 * Liste et carte 3D côte à côte, synchronisées ; mobile : liste d'abord, carte plein
 * écran à la demande. Couleurs uniquement par tokens --vefa-* (règle dure du dépôt). */

.upv2 {
  --upv2-gutter: clamp(16px, 3vw, 32px);
  --upv2-toolbar-top: 0px;
  max-width: 1480px;
  margin: 0 auto;
  padding: var(--vefa-space-4, 16px) var(--upv2-gutter) var(--vefa-space-7, 48px);
  color: var(--vefa-text, #0f172a);
}

/* ---------- En-tête ---------- */
.upv2-head { padding: var(--vefa-space-3, 12px) 0 var(--vefa-space-5, 24px); }
.upv2-crumbs { display: flex; flex-wrap: wrap; gap: 6px; font-size: var(--vefa-fs-xs, .75rem); color: var(--vefa-text-muted, #475569); margin-bottom: var(--vefa-space-4, 16px); }
.upv2-crumbs a { color: var(--vefa-text-muted, #475569); text-decoration: none; }
.upv2-crumbs a:hover { color: var(--vefa-primary-darker, #1f6396); text-decoration: underline; }
.upv2-crumbs [aria-current] { color: var(--vefa-text, #0f172a); font-weight: var(--vefa-fw-semibold, 600); }

.upv2-head__row { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: var(--vefa-space-5, 24px); }
.upv2-head__text { flex: 1 1 520px; min-width: 0; }
.upv2-eyebrow { margin: 0 0 var(--vefa-space-2, 8px); font-size: var(--vefa-fs-xs, .75rem); font-weight: var(--vefa-fw-semibold, 600); letter-spacing: .08em; text-transform: uppercase; color: var(--vefa-primary-darker, #1f6396); }
.upv2-title { margin: 0 0 var(--vefa-space-3, 12px); font-family: var(--up-display); font-size: clamp(1.75rem, 1.4vw + 1.3rem, 2.5rem); font-weight: var(--vefa-fw-bold, 700); line-height: 1.1; letter-spacing: -.02em; color: var(--vefa-text-strong, #020617); text-wrap: balance; }
.upv2-lede { margin: 0; max-width: 62ch; font-size: var(--vefa-fs-lg, 1.125rem); line-height: 1.5; color: var(--vefa-text-muted, #475569); }
.upv2-lede strong { color: var(--vefa-text-strong, #020617); font-weight: var(--vefa-fw-semibold, 600); font-variant-numeric: tabular-nums; }
.upv2-head__actions { flex: 0 1 auto; }

/* Bouton d'alerte : l'orange est réservé à l'action, et le reste au survol (jamais de bleu). */
.upv2 .up-alert .up-btn--primary,
.upv2 .up-alert .up-btn--primary:hover,
.upv2 .up-alert .up-btn--primary:focus { background: var(--vefa-accent-action, #d93600); color: var(--vefa-text-on-primary, #fff); box-shadow: var(--vefa-shadow-sm); transform: none; }
.upv2 .up-alert .up-btn--primary:hover { background: var(--vefa-accent-action-hover, #b82d00); }

/* Repères chiffrés : une ligne de faits, pas une grille de cartes. */
.upv2-facts { display: flex; flex-wrap: wrap; gap: 0; margin: var(--vefa-space-5, 24px) 0 0; padding: 0; border-top: 1px solid var(--vefa-border, #e2e8f0); }
.upv2-fact { flex: 1 1 180px; padding: var(--vefa-space-3, 12px) var(--vefa-space-5, 24px) 0 0; margin: 0 var(--vefa-space-5, 24px) 0 0; }
.upv2-fact + .upv2-fact { padding-left: var(--vefa-space-5, 24px); border-left: 1px solid var(--vefa-border, #e2e8f0); margin-left: 0; }
.upv2-fact dt { font-size: var(--vefa-fs-xs, .75rem); color: var(--vefa-text-muted, #475569); font-weight: var(--vefa-fw-medium, 500); }
.upv2-fact dd { margin: 2px 0 0; font-size: var(--vefa-fs-lg, 1.125rem); font-weight: var(--vefa-fw-semibold, 600); color: var(--vefa-text-strong, #020617); font-variant-numeric: tabular-nums; }
.upv2-fact a { font-size: var(--vefa-fs-xs, .75rem); color: var(--vefa-primary-darker, #1f6396); }
.upv2-delta { font-size: var(--vefa-fs-xs, .75rem); font-weight: var(--vefa-fw-semibold, 600); padding: 1px 6px; border-radius: var(--vefa-radius-pill, 999px); background: var(--vefa-bg-muted, #f1f5f9); color: var(--vefa-text-muted, #475569); }

/* ---------- Barre d'outils collante ---------- */
.upv2-toolbar {
  position: sticky; top: var(--upv2-toolbar-top); z-index: 20;
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--vefa-space-3, 12px);
  padding: var(--vefa-space-3, 12px) 0;
  background: var(--vefa-bg, #fff);
  border-bottom: 1px solid var(--vefa-border, #e2e8f0);
}
.upv2-seg { display: inline-flex; padding: 3px; gap: 2px; background: var(--vefa-bg-muted, #f1f5f9); border-radius: var(--vefa-radius-pill, 999px); }
.upv2-seg__btn { appearance: none; border: 0; background: transparent; cursor: pointer; min-height: 36px; padding: 0 14px; border-radius: var(--vefa-radius-pill, 999px); font: inherit; font-size: var(--vefa-fs-sm, .875rem); font-weight: var(--vefa-fw-medium, 500); color: var(--vefa-text-muted, #475569); white-space: nowrap; }
.upv2-seg__btn span { margin-left: 4px; color: var(--vefa-text-subtle, #94a3b8); font-variant-numeric: tabular-nums; }
.upv2-seg__btn.is-on { background: var(--vefa-bg, #fff); color: var(--vefa-text-strong, #020617); box-shadow: var(--vefa-shadow-sm); }
.upv2-seg__btn.is-on span { color: var(--vefa-primary-darker, #1f6396); }

.upv2-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 36px; padding: 0 14px; border-radius: var(--vefa-radius-pill, 999px); font: inherit; font-size: var(--vefa-fs-sm, .875rem); font-weight: var(--vefa-fw-semibold, 600); cursor: pointer; text-decoration: none; white-space: nowrap; }
.upv2-btn--outline { background: var(--vefa-bg, #fff); color: var(--vefa-text, #0f172a); border: 1px solid var(--vefa-border-strong, #cbd5e1); }
.upv2-btn--outline:hover { border-color: var(--vefa-primary-darker, #1f6396); color: var(--vefa-primary-darker, #1f6396); }
.upv2-btn--quiet { background: transparent; color: var(--vefa-primary-darker, #1f6396); border: 1px solid transparent; padding: 0 10px; }
.upv2-btn--quiet:hover { background: var(--vefa-primary-soft, rgba(52, 152, 219, .08)); }
.upv2-btn:focus-visible, .upv2-seg__btn:focus-visible, .upv2-chip input:focus-visible + * { outline: 2px solid var(--vefa-primary, #3498db); outline-offset: 2px; }
.upv2-link { appearance: none; border: 0; background: none; padding: 0; font: inherit; font-size: var(--vefa-fs-sm, .875rem); color: var(--vefa-primary-darker, #1f6396); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }

.upv2-more-filters { position: relative; }
.upv2-more-filters > summary { list-style: none; }
.upv2-more-filters > summary::-webkit-details-marker { display: none; }
.upv2-badge { min-width: 18px; height: 18px; padding: 0 5px; border-radius: var(--vefa-radius-pill, 999px); background: var(--vefa-primary-darker, #1f6396); color: var(--vefa-text-on-primary, #fff); font-size: 11px; line-height: 18px; text-align: center; }
.upv2-panel { position: absolute; top: calc(100% + 8px); left: 0; z-index: 30; width: min(420px, calc(100vw - 32px)); padding: var(--vefa-space-4, 16px); background: var(--vefa-bg, #fff); border: 1px solid var(--vefa-border, #e2e8f0); border-radius: var(--vefa-radius-lg, 16px); box-shadow: var(--vefa-shadow-lg); display: grid; gap: var(--vefa-space-4, 16px); }
.upv2-panel fieldset { border: 0; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.upv2-panel legend { width: 100%; margin-bottom: 6px; font-size: var(--vefa-fs-xs, .75rem); font-weight: var(--vefa-fw-semibold, 600); color: var(--vefa-text-muted, #475569); text-transform: uppercase; letter-spacing: .06em; }
.upv2-chip { position: relative; display: inline-flex; align-items: center; min-height: 34px; padding: 0 12px; border: 1px solid var(--vefa-border-strong, #cbd5e1); border-radius: var(--vefa-radius-pill, 999px); font-size: var(--vefa-fs-sm, .875rem); cursor: pointer; user-select: none; }
.upv2-chip input { position: absolute; opacity: 0; pointer-events: none; }
.upv2-chip:has(input:checked) { background: var(--vefa-primary-tint, #eaf4fb); border-color: var(--vefa-primary-darker, #1f6396); color: var(--vefa-primary-darker, #1f6396); font-weight: var(--vefa-fw-semibold, 600); }
.upv2-chip:has(input:focus-visible) { outline: 2px solid var(--vefa-primary, #3498db); outline-offset: 2px; }

.upv2-sort select { min-height: 36px; padding: 0 32px 0 12px; border: 1px solid var(--vefa-border-strong, #cbd5e1); border-radius: var(--vefa-radius-pill, 999px); background-color: var(--vefa-bg, #fff); font: inherit; font-size: var(--vefa-fs-sm, .875rem); color: var(--vefa-text, #0f172a); }
.upv2-count { margin: 0 0 0 auto; font-size: var(--vefa-fs-sm, .875rem); color: var(--vefa-text-muted, #475569); }
.upv2-count strong { color: var(--vefa-text-strong, #020617); font-variant-numeric: tabular-nums; }
.upv2-visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- Corps : liste | carte ---------- */
.upv2-body { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--vefa-space-6, 32px); }
.upv2-list { min-width: 0; }

.upv2-row {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--vefa-space-3, 12px) var(--vefa-space-5, 24px);
  padding: var(--vefa-space-5, 24px) var(--vefa-space-3, 12px);
  margin: 0 calc(-1 * var(--vefa-space-3, 12px));
  border-bottom: 1px solid var(--vefa-border, #e2e8f0);
  border-radius: var(--vefa-radius-md, 10px);
  transition: background-color .15s ease;
  scroll-margin-top: 140px;
}
.upv2-row:hover, .upv2-row.is-selected { background: var(--vefa-bg-soft, #f8fafc); }
.upv2-row.up-card--highlight, .upv2-row.is-selected { box-shadow: inset 3px 0 0 var(--vefa-accent, #ff4000); }
.upv2-row[hidden] { display: none; }
.upv2-row__main { min-width: 0; }
.upv2-row__status { display: flex; align-items: center; gap: 8px; margin: 0 0 6px; font-size: var(--vefa-fs-xs, .75rem); font-weight: var(--vefa-fw-semibold, 600); color: var(--vefa-text-muted, #475569); }
.upv2-dot { width: 8px; height: 8px; border-radius: 50%; flex: none; background: var(--vefa-primary, #3498db); }
.upv2-dot--works { background: var(--vefa-success, #16a34a); box-shadow: 0 0 0 3px var(--vefa-success-soft, rgba(22, 163, 74, .1)); }
.upv2-dot--authorized { background: var(--vefa-primary, #3498db); box-shadow: 0 0 0 3px var(--vefa-primary-soft, rgba(52, 152, 219, .08)); }
.upv2-dot--uncertain { background: var(--vefa-text-subtle, #94a3b8); }
.upv2-dot--cancelled { background: var(--vefa-danger, #dc2626); }
.upv2-row__title { margin: 0; font-size: var(--vefa-fs-lg, 1.125rem); font-weight: var(--vefa-fw-semibold, 600); line-height: 1.3; color: var(--vefa-text-strong, #020617); }
.upv2-row__who { margin: 2px 0 0; font-size: var(--vefa-fs-sm, .875rem); color: var(--vefa-text, #0f172a); overflow-wrap: anywhere; }
.upv2-row__who a { color: var(--vefa-primary-darker, #1f6396); }
.upv2-row__note { color: var(--vefa-text-muted, #475569); }
.upv2-row__facts { display: flex; flex-wrap: wrap; gap: 4px 16px; margin: 10px 0 0; font-size: var(--vefa-fs-sm, .875rem); color: var(--vefa-text-muted, #475569); }
.upv2-row__facts strong { color: var(--vefa-text-strong, #020617); font-variant-numeric: tabular-nums; }
.upv2-typo { display: flex; gap: 2px; height: 6px; max-width: 280px; margin-top: 10px; border-radius: var(--vefa-radius-pill, 999px); overflow: hidden; }
.upv2-typo__seg { background: var(--vefa-primary, #3498db); }
.upv2-typo__seg--1 { opacity: .35; } .upv2-typo__seg--2 { opacity: .55; } .upv2-typo__seg--3 { opacity: .75; } .upv2-typo__seg--4 { opacity: .9; } .upv2-typo__seg--5 { opacity: 1; }
.upv2-row__side { display: flex; flex-direction: column; align-items: flex-end; justify-content: space-between; gap: var(--vefa-space-3, 12px); text-align: right; }
.upv2-row__horizon { margin: 0; display: grid; font-size: var(--vefa-fs-xs, .75rem); color: var(--vefa-text-muted, #475569); }
.upv2-row__horizon strong { font-size: var(--vefa-fs-base, 1rem); color: var(--vefa-text-strong, #020617); font-variant-numeric: tabular-nums; }
.upv2-row__actions { display: flex; gap: 4px; }
.upv2-row--uncertain .upv2-row__title, .upv2-row--cancelled .upv2-row__title { color: var(--vefa-text-muted, #475569); }

.upv2-loadmore { width: 100%; margin-top: var(--vefa-space-4, 16px); min-height: 44px; }
.upv2-empty { padding: var(--vefa-space-6, 32px) 0; color: var(--vefa-text-muted, #475569); }

.upv2-group { margin-top: var(--vefa-space-5, 24px); border-top: 1px solid var(--vefa-border, #e2e8f0); }
.upv2-group > summary { list-style: none; cursor: pointer; display: grid; gap: 2px; padding: var(--vefa-space-4, 16px) 28px var(--vefa-space-4, 16px) 0; position: relative; }
.upv2-group > summary::-webkit-details-marker { display: none; }
.upv2-group > summary::after { content: "\f078"; font-family: "Font Awesome 6 Free"; font-weight: 900; position: absolute; right: 4px; top: 18px; font-size: 12px; color: var(--vefa-text-muted, #475569); transition: transform .2s ease; }
.upv2-group[open] > summary::after { transform: rotate(180deg); }
.upv2-group__title { font-weight: var(--vefa-fw-semibold, 600); color: var(--vefa-text-strong, #020617); }
.upv2-group__title span { margin-left: 6px; color: var(--vefa-text-muted, #475569); font-weight: var(--vefa-fw-medium, 500); }
.upv2-group__hint { font-size: var(--vefa-fs-sm, .875rem); color: var(--vefa-text-muted, #475569); max-width: 70ch; }

.upv2-forsale { margin-top: var(--vefa-space-6, 32px); padding-top: var(--vefa-space-5, 24px); border-top: 1px solid var(--vefa-border, #e2e8f0); }
.upv2-forsale h2 { margin: 0 0 var(--vefa-space-3, 12px); font-size: var(--vefa-fs-base, 1rem); font-weight: var(--vefa-fw-semibold, 600); }
.upv2-forsale ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--vefa-space-2, 8px); }
.upv2-forsale a { display: grid; padding: 10px 12px; border: 1px solid var(--vefa-border, #e2e8f0); border-radius: var(--vefa-radius-md, 10px); text-decoration: none; color: var(--vefa-text-strong, #020617); font-weight: var(--vefa-fw-semibold, 600); }
.upv2-forsale a:hover { border-color: var(--vefa-primary-darker, #1f6396); }
.upv2-forsale small { color: var(--vefa-text-muted, #475569); font-weight: var(--vefa-fw-normal, 400); }
.upv2-links { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: var(--vefa-space-5, 24px); margin-top: var(--vefa-space-6, 32px); padding-top: var(--vefa-space-5, 24px); border-top: 1px solid var(--vefa-border, #e2e8f0); }
.upv2-links h2 { margin: 0 0 var(--vefa-space-2, 8px); font-size: var(--vefa-fs-sm, .875rem); font-weight: var(--vefa-fw-semibold, 600); color: var(--vefa-text-strong, #020617); }
.upv2-links ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.upv2-links a { display: flex; justify-content: space-between; gap: 8px; padding: 6px 0; font-size: var(--vefa-fs-sm, .875rem); color: var(--vefa-primary-darker, #1f6396); text-decoration: none; }
.upv2-links a:hover { text-decoration: underline; }
.upv2-links a span { color: var(--vefa-text-muted, #475569); font-variant-numeric: tabular-nums; }
.upv2-source { margin-top: var(--vefa-space-6, 32px); font-size: var(--vefa-fs-xs, .75rem); line-height: 1.5; color: var(--vefa-text-muted, #475569); max-width: 80ch; }

/* ---------- Carte ---------- */
.upv2-map { display: none; }
.upv2-map__bar { display: flex; align-items: center; gap: var(--vefa-space-3, 12px); padding: 0 0 var(--vefa-space-2, 8px); font-size: var(--vefa-fs-sm, .875rem); }
.upv2-map__bar strong { margin-right: auto; }
.upv2-map__close { display: none; }
.upv2-map__frame { position: relative; height: 100%; min-height: 360px; border-radius: var(--vefa-radius-lg, 16px); overflow: hidden; border: 1px solid var(--vefa-border, #e2e8f0); background: var(--vefa-bg-muted, #f1f5f9); }
.upv2-map__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.upv2-map__placeholder { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: 8px; color: var(--vefa-text-muted, #475569); font-size: var(--vefa-fs-sm, .875rem); pointer-events: none; }
.upv2-map.is-loaded .upv2-map__placeholder { display: none; }

/* ---------- Alerte en un geste ---------- */
.upa { display: grid; gap: var(--vefa-space-2, 8px); max-width: 440px; }
.upa__lead { margin: 0; font-size: var(--vefa-fs-sm, .875rem); color: var(--vefa-text-muted, #475569); }
.upa__form { display: flex; gap: var(--vefa-space-2, 8px); }
.upa__input { flex: 1 1 auto; min-width: 0; min-height: 44px; padding: 0 14px; border: 1px solid var(--vefa-border-strong, #cbd5e1); border-radius: var(--vefa-radius-pill, 999px); font: inherit; font-size: var(--vefa-fs-sm, .875rem); background: var(--vefa-bg, #fff); color: var(--vefa-text, #0f172a); }
.upa__input:focus-visible { outline: 2px solid var(--vefa-primary, #3498db); outline-offset: 1px; border-color: var(--vefa-primary-darker, #1f6396); }
.upa__input[aria-invalid="true"] { border-color: var(--vefa-danger, #dc2626); }
.upa__cta, .upa__cta:hover, .upa__cta:focus { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 18px; border: 0; border-radius: var(--vefa-radius-pill, 999px); background: var(--vefa-accent-action, #d93600); color: var(--vefa-text-on-primary, #fff); font: inherit; font-size: var(--vefa-fs-sm, .875rem); font-weight: var(--vefa-fw-semibold, 600); cursor: pointer; white-space: nowrap; text-decoration: none; }
.upa__cta:hover { background: var(--vefa-accent-action-hover, #b82d00); }
.upa__cta:disabled { opacity: .7; cursor: progress; }
.upa__alt { margin: 0; font-size: var(--vefa-fs-xs, .75rem); color: var(--vefa-text-muted, #475569); }
.upa__google { color: var(--vefa-primary-darker, #1f6396); font-weight: var(--vefa-fw-semibold, 600); }
.upa__trap { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.upa__error { margin: 0; font-size: var(--vefa-fs-sm, .875rem); color: var(--vefa-danger, #dc2626); }
.upa__done { padding: var(--vefa-space-3, 12px) var(--vefa-space-4, 16px); border-radius: var(--vefa-radius-md, 10px); background: var(--vefa-success-surface, #f0fdf4); border: 1px solid var(--vefa-success-border, #bbf7d0); color: var(--vefa-success-ink, #15803d); font-size: var(--vefa-fs-sm, .875rem); }
.upa__done p { margin: 0; } .upa__done p + p { margin-top: 4px; color: var(--vefa-text, #0f172a); }
.upa__done--warn { background: var(--vefa-warning-surface, #fffbeb); border-color: var(--vefa-warning-border, #fde68a); color: var(--vefa-warning-ink, #b45309); }
.upa__row { display: flex; align-items: center; gap: var(--vefa-space-3, 12px); flex-wrap: wrap; margin: 0; }
.upa__on { display: inline-flex; align-items: center; gap: 6px; font-weight: var(--vefa-fw-semibold, 600); color: var(--vefa-success-ink, #15803d); }

/* ---------- Page projet ---------- */
.upv2-sale { display: inline-flex; align-items: center; gap: 8px; margin-bottom: var(--vefa-space-3, 12px); padding: 8px 14px; border-radius: var(--vefa-radius-pill, 999px); background: var(--vefa-success-surface, #f0fdf4); border: 1px solid var(--vefa-success-border, #bbf7d0); color: var(--vefa-success-ink, #15803d); font-weight: var(--vefa-fw-semibold, 600); text-decoration: none; }
.upv2-sale span { text-transform: uppercase; font-size: var(--vefa-fs-xs, .75rem); letter-spacing: .06em; }
.upv2-eyebrow .upv2-dot { display: inline-block; vertical-align: middle; margin-right: 4px; }
.upv2-h2 { margin: var(--vefa-space-6, 32px) 0 var(--vefa-space-3, 12px); font-size: var(--vefa-fs-base, 1rem); font-weight: var(--vefa-fw-semibold, 600); color: var(--vefa-text-strong, #020617); }
.upv2-project .upv2-list > .upv2-h2:first-child { margin-top: var(--vefa-space-4, 16px); }
.upv2-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--vefa-space-2, 8px); counter-reset: step; }
.upv2-steps li { position: relative; padding: 14px 12px 12px; border-top: 3px solid var(--vefa-border, #e2e8f0); display: grid; gap: 2px; font-size: var(--vefa-fs-sm, .875rem); }
.upv2-steps li.is-done { border-top-color: var(--vefa-primary, #3498db); }
.upv2-steps strong { color: var(--vefa-text-strong, #020617); font-weight: var(--vefa-fw-semibold, 600); }
.upv2-steps span { color: var(--vefa-text-muted, #475569); }
.upv2-note { margin: var(--vefa-space-3, 12px) 0 0; font-size: var(--vefa-fs-sm, .875rem); color: var(--vefa-text-muted, #475569); max-width: 70ch; }
.upv2-specs { margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 0 var(--vefa-space-5, 24px); }
.upv2-specs div { padding: 10px 0; border-bottom: 1px solid var(--vefa-border, #e2e8f0); }
.upv2-specs dt { font-size: var(--vefa-fs-xs, .75rem); color: var(--vefa-text-muted, #475569); }
.upv2-specs dd { margin: 2px 0 0; font-weight: var(--vefa-fw-medium, 500); overflow-wrap: anywhere; }
.upv2-row__title a { color: inherit; text-decoration: none; }
.upv2-row__title a:hover { color: var(--vefa-primary-darker, #1f6396); text-decoration: underline; }
a.upv2-place { color: inherit; text-decoration: none; }

@media (min-width: 1024px) {
  .upv2-body { grid-template-columns: minmax(0, 1fr) minmax(400px, 44%); align-items: start; }
  .upv2-map { display: flex; flex-direction: column; position: sticky; top: calc(var(--upv2-toolbar-top) + 76px); height: calc(100vh - var(--upv2-toolbar-top) - 96px); padding-top: var(--vefa-space-4, 16px); }
  .upv2-map__frame { flex: 1; }
  .upv2-mapbtn { display: none; }
}

/* Mobile : carte plein écran à la demande. */
@media (max-width: 1023.98px) {
  .upv2-toolbar { gap: var(--vefa-space-2, 8px); margin: 0 calc(-1 * var(--upv2-gutter)); padding-left: var(--upv2-gutter); padding-right: var(--upv2-gutter); }
  .upv2-seg { order: 1; width: 100%; overflow-x: auto; scrollbar-width: none; }
  .upv2-seg__btn { flex: 1 0 auto; min-height: 40px; padding: 0 10px; }
  .upv2-more-filters { order: 2; }
  .upv2-sort { order: 3; flex: 1 1 0; min-width: 0; }
  .upv2-sort select { width: 100%; text-overflow: ellipsis; }
  .upv2-mapbtn { order: 4; }
  .upv2-count { order: 5; width: 100%; margin: 0; }
  .upv2-panel { position: fixed; left: 0; right: 0; bottom: 0; top: auto; width: auto; max-height: 75vh; overflow: auto; border-radius: var(--vefa-radius-xl, 24px) var(--vefa-radius-xl, 24px) 0 0; padding: var(--vefa-space-5, 24px) var(--upv2-gutter) calc(var(--vefa-space-5, 24px) + env(safe-area-inset-bottom, 0px)); z-index: 60; }
  .upv2-facts { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .upv2-fact { flex: 0 0 auto; }
  .upv2-row { grid-template-columns: minmax(0, 1fr); padding: var(--vefa-space-4, 16px) var(--vefa-space-2, 8px); margin: 0 calc(-1 * var(--vefa-space-2, 8px)); }
  .upv2-row__side { flex-direction: row; align-items: center; text-align: left; }
  .upv2-row__horizon { display: flex; gap: 6px; align-items: baseline; }
  .upv2-btn { min-height: 44px; }
  .upv2-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .upa__form { flex-wrap: wrap; }
  .upa__cta { flex: 1 1 auto; justify-content: center; }
  .upv2--map-open .upv2-map { display: flex; flex-direction: column; position: fixed; inset: 0; z-index: 1050; background: var(--vefa-bg, #fff); padding: calc(var(--vefa-space-3, 12px) + env(safe-area-inset-top, 0px)) var(--upv2-gutter) calc(var(--vefa-space-3, 12px) + env(safe-area-inset-bottom, 0px)); }
  .upv2--map-open .upv2-map__frame { flex: 1; }
  .upv2--map-open .upv2-map__close { display: inline-flex; }
}

@media (prefers-reduced-motion: reduce) {
  .upv2-row, .upv2-group > summary::after { transition: none; }
}

/* Hub : navigation par région (chantier projets-a-venir, Lot 3). */
.up-region__list { list-style: none; margin: 0 0 var(--vefa-space-3, 12px); padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 0 var(--vefa-space-5, 24px); border-top: 0; }
.up-region__list a { display: flex; justify-content: space-between; gap: 8px; padding: 6px 0; font-size: var(--vefa-fs-sm, .875rem); color: var(--vefa-primary-darker, #1f6396); text-decoration: none; }
.up-region__list a span { color: var(--vefa-text-muted, #475569); font-variant-numeric: tabular-nums; }

