:root {
  --t-10: .625rem; --t-11: .6875rem; --t-12: .75rem; --t-13: .8125rem; --t-14: .875rem; --t-15: .9375rem; --t-17: 1.0625rem; --t-22: 1.375rem; --h-bouton: 30px; --h-onglet: 34px; --r-bouton: 7px; --r-fin: 3px; --r-pastille: 5px; --r-moyen: 10px; --r-carte: 12px; --r-panneau: 14px; --r-rond: 999px; /* l'échelle de jetons.css, pour les pages publiques qui ne la chargent pas */
  --fond: #FAFAF7;
  --surface: #ffffff;
  --encre: #0E0E0C;
  --encre-2: #33332F;
  --encre-3: #6B6B63; /* 5,2:1 sur le fond (4,32:1 avec #77776F : sous le seuil d'Apple, audit HIG du 02/10) */
  --filet: #E4E2D9;
  --filet-2: #C9C7BC;
  --survol: #F3F2EC;
  --accent: #1B3A5C;
  --ponctuation: #E8453C;
  --jauge: #C9D3DD;
  /* Trois angles, pas quatre : les commandes, les cartes internes, les panneaux flottants.
     Relevé du 23/09/2026 : huit valeurs différentes cohabitaient (8, 10, 12, 14, 16). */
  --rayon: 8px;
  --rayon-carte: 12px;
  --rayon-panneau: 16px;
  --ombre-flottant: 0 1px 2px rgba(14, 14, 12, 0.08), 0 6px 20px rgba(14, 14, 12, 0.14);
}
@media (prefers-color-scheme: dark) {
  :root {
    --fond: #151515;
    --surface: #1d1d1c;
    --encre: #f2f2f0;
    --encre-2: #a8a8a3;
    --encre-3: #7c7c77;
    --filet: #2e2e2c;
    --filet-2: #45453f;
    --survol: #252524;
    --accent: #8FB4D9;
    --jauge: #2f4152;
    --ombre-flottant: 0 1px 2px rgba(0, 0, 0, 0.4), 0 6px 20px rgba(0, 0, 0, 0.45);
  }
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--fond);
  color: var(--encre);
  font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  font-size: 1rem;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2 { font-weight: 600; letter-spacing: -0.015em; line-height: 1.2; margin: 0; }
h1 { font-size: 2rem; }
h2 { font-size: 1.25rem; margin-bottom: 16px; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* Barre */
.barre {
  position: sticky; top: 0; z-index: 10;
  display: flex; align-items: center; gap: 24px;
  padding: 12px max(16px, calc((100vw - 1080px) / 2));
  background: var(--fond);
  border-bottom: 1px solid var(--filet);
}
.marque { display: flex; align-items: center; gap: 10px; color: var(--encre); font-weight: 600; white-space: nowrap; }
.marque:hover { text-decoration: none; }
.marque img { border-radius: var(--r-pastille); }

main { max-width: 1080px; margin: 0 auto; padding: 0 16px; }
main section { margin-top: 48px; }
.entete { margin-top: 48px; }
.chapo { color: var(--encre-2); font-size: var(--t-17); margin: 12px 0 0; max-width: 680px; }
.note { color: var(--encre-3); font-size: var(--t-14); margin: 12px 0 0; }
.fil { margin-top: 24px; font-size: var(--t-14); color: var(--encre-3); }

/* Recherche */
.recherche { position: relative; flex: 1; max-width: 420px; margin: 0; }
.recherche input {
  width: 100%; height: 40px; padding: 0 14px;
  border: 1px solid var(--filet); border-radius: var(--rayon);
  background: var(--surface); color: var(--encre); font: inherit; font-size: var(--t-15);
}
.recherche input:focus { outline: 2px solid var(--accent); outline-offset: -1px; }
.recherche-grande { max-width: 640px; margin-top: 28px; }
.recherche-grande input { height: 52px; font-size: var(--t-17); padding: 0 18px; }
.suggestions {
  position: absolute; top: calc(100% + 4px); left: 0; right: 0; z-index: 20;
  list-style: none; margin: 0; padding: 4px;
  background: var(--surface); border: 1px solid var(--filet); border-radius: var(--rayon);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
  max-height: 60vh; overflow-y: auto;
}
.suggestions a { display: flex; justify-content: space-between; gap: 12px; padding: 10px 12px; border-radius: var(--r-pastille); color: var(--encre); min-height: 44px; align-items: center; }
.suggestions a:hover, .suggestions [aria-selected="true"] a { background: var(--survol); text-decoration: none; }
.suggestions small { color: var(--encre-3); font-size: var(--t-13); white-space: nowrap; }

/* Tuiles */
.tuiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.tuile { background: var(--surface); border: 1px solid var(--filet); border-radius: var(--rayon); padding: 20px; }
.tuile-titre { margin: 0; color: var(--encre-2); font-size: var(--t-14); }
.tuile-valeur { margin: 6px 0 0; font-size: 1.75rem; font-weight: 600; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.tuile-note { margin: 6px 0 0; color: var(--encre-3); font-size: var(--t-13); }

/* Tables : défilement horizontal au téléphone, première colonne collante */
.table-defile { overflow-x: auto; border: 1px solid var(--filet); border-radius: var(--rayon); background: var(--surface); }
.table { width: 100%; border-collapse: collapse; font-size: var(--t-14); font-variant-numeric: tabular-nums; }
.table th, .table td { padding: 10px 14px; border-bottom: 1px solid var(--filet); text-align: left; white-space: nowrap; }
.table thead th { color: var(--encre-2); font-weight: 500; font-size: var(--t-13); background: var(--surface); }
.table tbody tr:last-child > * { border-bottom: 0; }
.table tbody tr:hover > * { background: var(--survol); }
.table tbody th { font-weight: 500; }
.table th:first-child, .table td:first-child { position: sticky; left: 0; background: var(--surface); }
.table .num { text-align: right; }
.nd { color: var(--encre-3); }
.barre-cell { width: 30%; min-width: 80px; }
.jauge { display: block; height: 6px; border-radius: var(--r-fin); background: var(--jauge); }
.table-ventes td:nth-child(3) { white-space: normal; min-width: 180px; }

/* Ventes */
.ventes-tete { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; flex-wrap: wrap; }
.ventes-tete h2 { margin-bottom: 0; }
.filtres { display: flex; gap: 8px; }
.filtres select, .filtres input {
  height: 40px; padding: 0 12px; border: 1px solid var(--filet); border-radius: var(--rayon);
  background: var(--surface); color: var(--encre); font: inherit; font-size: var(--t-14);
}
.bouton {
  margin-top: 16px; height: 44px; padding: 0 18px;
  border: 1px solid var(--filet); border-radius: var(--rayon);
  background: var(--surface); color: var(--encre); font: inherit; font-size: var(--t-14); font-weight: 500; cursor: pointer;
}
.bouton:hover { background: var(--survol); }

/* Texte long */
.texte { max-width: 680px; }
.texte h2 { margin: 32px 0 8px; font-size: var(--t-17); }
.texte p { color: var(--encre-2); margin: 0 0 12px; }

.pied { max-width: 1080px; margin: 64px auto 0; padding: 24px 16px 48px; border-top: 1px solid var(--filet); color: var(--encre-3); font-size: var(--t-13); }
.pied p { margin: 0 0 6px; }

@media (max-width: 720px) {
  h1 { font-size: 1.625rem; }
  .barre { gap: 12px; }
  .marque span, .barre .liens a:is([href="/outil/"], [href="/mcp/"]) { display: none; } /* au téléphone : Carte, Communes, Guides (les autres restent au pied) */
  .recherche { max-width: none; }
  .tuiles { grid-template-columns: 1fr; }
  .filtres { width: 100%; }
  .filtres input { flex: 1; min-width: 0; }
  main section, .entete { margin-top: 36px; }
}

/* Lien Carte dans la barre des pages */
.liens a { color: var(--encre-2); font-size: var(--t-15); font-weight: 500; padding: 10px 4px; }
.liens a:hover { color: var(--encre); text-decoration: none; }

/* Boutons */
.actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.bouton { display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }
.bouton:hover { text-decoration: none; }
.bouton-primaire { background: var(--plein, var(--encre)); color: var(--plein-texte, var(--fond)); border-color: var(--plein, var(--encre)); border-radius: var(--r-bouton); font-weight: 500; }
.bouton-primaire:hover { background: var(--plein, var(--encre)); opacity: 0.88; }
.actions .bouton { margin-top: 0; }
.appel { border-top: 2px solid var(--encre); padding-top: 20px; }
.appel p { color: var(--encre-2); max-width: 560px; margin: 0; }
.alerte { margin: 0 0 12px; padding: 10px 12px; border-left: 2px solid var(--ponctuation); background: var(--survol); font-size: var(--t-14); }
.pastille { display: inline-block; width: 8px; height: 8px; border-radius: 50%; flex: none; }
.pastille-maison { background: #1F56B8; } .pastille-appartement { background: #8FCBF0; } .pastille-terrain { background: #FEFEFE; } .pastille-local { background: #6B7483; }

/* Bande de chiffres (registre) : filet noir au-dessus, colonnes séparées par des filets fins */
.bande { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 2px solid var(--encre); }
.bande-2 { grid-template-columns: repeat(2, 1fr); }
.bande-cellule { padding: 10px 12px 12px 0; min-width: 0; }
.bande-cellule + .bande-cellule { padding-left: 12px; border-left: 1px solid var(--filet); }
.bande-cellule.choisie .bande-valeur { text-decoration: underline 2px var(--ponctuation); text-underline-offset: 5px; }
.bande-titre { margin: 0; font-size: var(--t-12); color: var(--encre-3); display: flex; align-items: center; gap: 6px; }
.bande-valeur { margin: 4px 0 0; font-size: var(--t-17); font-weight: 600; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; white-space: nowrap; }
.bande-note { margin: 2px 0 0; font-size: var(--t-12); color: var(--encre-3); }

/* ── Application carte (accueil) ─────────────────────────────────────────────────
   Direction : Linear. Un fond presque noir, des panneaux translucides posés sur la carte,
   des filets d'un pixel au lieu d'ombres lourdes, un seul accent (indigo), des chiffres
   tabulaires, des tailles serrées. Thème sombre par défaut, clair au choix. */
html[data-theme] .page-app {
  --fond: #08090A;
  --surface: #0F1012;
  --panneau: rgba(15, 16, 18, 0.84);
  --encre: #F7F8F8;
  --encre-2: #B7B9BD;
  --encre-3: #8A8F98;
  --encre-4: #868B94; /* était #62666D : 3,17:1 sur le panneau sombre, sous le seuil de 4,5:1 */
  --filet: rgba(255, 255, 255, 0.07);
  --filet-2: rgba(255, 255, 255, 0.13);
  --survol: rgba(255, 255, 255, 0.05);
  --actif: rgba(255, 255, 255, 0.09);
  --accent: #E6E7E9;
  --accent-fort: #F7F8F8;
  --lien: #F7F8F8;
  --jauge: rgba(255, 255, 255, 0.16); --sur-accent: #08090A; --anneau: rgba(255, 255, 255, 0.2);
  --ombre-flottant: 0 0 0 1px rgba(255, 255, 255, 0.07), 0 10px 30px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.05);
  --surface-panneau: #101114;
  color-scheme: dark;
}
html[data-theme="clair"] .page-app {
  --fond: #F7F7F8;
  --surface: #FFFFFF;
  --panneau: rgba(255, 255, 255, 0.9);
  --encre: #0F0F10;
  --encre-2: #3C4149;
  --encre-3: #5F636A;
  --encre-4: #686C73; /* était #8A8F98 : 3,25:1 sur blanc */
  --filet: rgba(15, 15, 16, 0.08);
  --filet-2: rgba(15, 15, 16, 0.14);
  --survol: rgba(15, 15, 16, 0.04);
  --actif: rgba(15, 15, 16, 0.07);
  --accent: #1F2023;
  --accent-fort: #0F0F10;
  --lien: #0F0F10;
  --jauge: rgba(15, 15, 16, 0.12); --sur-accent: #FFFFFF; --anneau: rgba(15, 15, 16, 0.16);
  --ombre-flottant: 0 0 0 1px rgba(15, 15, 16, 0.08), 0 10px 30px rgba(15, 15, 16, 0.12);
  --surface-panneau: #FBFBFC;
  color-scheme: light;
}
.page-app { position: fixed; inset: 0; overflow: hidden; overscroll-behavior: none; background: #0B0C0E; font-size: var(--t-14); letter-spacing: -0.006em; }
.page-app a { color: var(--lien); }
.carte-app { position: absolute; inset: 0; }
.page-app .maplibregl-ctrl-attrib { font-size: var(--t-11); background: var(--panneau); color: var(--encre-3); }
.page-app .maplibregl-ctrl-attrib a { color: var(--encre-3); }
.page-app .maplibregl-ctrl-group { background: var(--panneau); box-shadow: var(--ombre-flottant); border-radius: var(--rayon-carte); backdrop-filter: blur(18px); }
.page-app .maplibregl-ctrl-group button + button { border-top: 1px solid var(--filet); }
.page-app .maplibregl-ctrl button .maplibregl-ctrl-icon { filter: invert(var(--inverse, 1)); }
html[data-theme="clair"] .page-app { --inverse: 0; }
.maplibregl-ctrl-bottom-right, .maplibregl-ctrl-bottom-left { bottom: 164px; }
.verre { background: var(--panneau); backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4); box-shadow: var(--ombre-flottant); }

/* Recherche et filtres flottants */
.haut { position: absolute; z-index: 5; top: calc(env(safe-area-inset-top) + 10px); left: 12px; right: 12px; pointer-events: none; }
.haut > * { pointer-events: auto; }
.recherche-carte { position: relative; z-index: 3; max-width: none; display: flex; align-items: center; height: 46px; padding: 0 8px 0 10px; gap: 8px; border-radius: var(--rayon-panneau); background: var(--panneau); backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4); box-shadow: var(--ombre-flottant); }
.recherche-carte input { flex: 1; height: 44px; border: 0; padding: 0 4px; background: transparent; color: var(--encre); font-size: 1rem; letter-spacing: -0.01em; }
.recherche-carte input::placeholder { color: var(--encre-3); }
.recherche-carte input:focus { outline: none; }
.recherche-carte:focus-within { box-shadow: 0 0 0 1px var(--accent), 0 0 0 4px var(--anneau), var(--ombre-flottant); }
.raccourci { display: none; padding: 2px 6px; border: 1px solid var(--filet-2); border-radius: var(--r-pastille); color: var(--encre-3); font: 500 var(--t-11)/16px -apple-system, BlinkMacSystemFont, sans-serif; }
.recherche-carte:focus-within .raccourci { visibility: hidden; }
.recherche-carte .suggestions { z-index: 40; top: calc(100% + 6px); padding: 4px; border: 0; border-radius: var(--rayon-panneau); background: var(--panneau); backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4); box-shadow: var(--ombre-flottant); }
.recherche-carte .suggestions a { color: var(--encre); border-radius: var(--r-bouton); min-height: 40px; padding: 8px 10px; font-size: var(--t-14); }
.recherche-carte .suggestions a:hover, .recherche-carte .suggestions [aria-selected="true"] a { background: var(--actif); }
.recherche-carte .suggestions small { color: var(--encre-3); font-size: var(--t-12); }
.recherche-avancee { flex: none; display: grid; place-items: center; width: 32px; height: 32px; border: 0; border-radius: var(--r-bouton); background: none; color: var(--encre-3); cursor: pointer; }
.recherche-avancee:hover { background: var(--survol); color: var(--encre); }
.recherche-avancee svg { width: 18px; height: 18px; }
.marque-mini { display: flex; flex: none; }
.marque-mini img { border-radius: var(--r-bouton); display: block; box-shadow: 0 0 0 1px var(--filet-2); }
.suggestions-titre { padding: 8px 10px 4px; font-size: var(--t-11); color: var(--encre-4); }
.puces { position: relative; z-index: 1; display: flex; gap: 6px; margin: 8px -12px 0; padding: 0 12px 4px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.puces::-webkit-scrollbar { display: none; }
.puce-filtre { flex: none; display: inline-flex; align-items: center; gap: 7px; height: 32px; padding: 0 12px; border: 0; border-radius: var(--r-bouton); background: var(--panneau); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); box-shadow: var(--ombre-flottant); color: var(--encre-2); font: inherit; font-size: var(--t-13); font-weight: 500; cursor: pointer; white-space: nowrap; transition: background 0.15s, color 0.15s, transform 0.1s; }
.puce-filtre:hover { color: var(--encre); }
.puce-filtre:active { transform: scale(0.97); }
.puce-filtre[data-menu]::after { content: ""; width: 5px; height: 5px; margin-left: 1px; border-right: 1.4px solid currentColor; border-bottom: 1.4px solid currentColor; transform: translateY(-2px) rotate(45deg); opacity: 0.55; }
.puce-filtre[aria-pressed="true"] { background: var(--accent); color: var(--sur-accent); box-shadow: none; }
.menu-flottant { position: fixed; z-index: 50; max-height: 70vh; overflow-y: auto; width: 236px; padding: 4px; border-radius: var(--r-carte); background: var(--panneau); backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4); box-shadow: var(--ombre-flottant); animation: surgir 0.14s ease-out; }
.menu-titre { margin: 8px 10px 2px; font-size: var(--t-11); color: var(--encre-4); letter-spacing: 0.02em; }
.menu-titre:first-child { margin-top: 4px; }
.menu-vider { color: var(--encre-3) !important; margin-top: 4px; box-shadow: inset 0 1px 0 var(--filet); border-radius: 0 0 8px 8px !important; }
.puce-filtres svg { width: 14px; height: 14px; }
.puce-compte { display: inline-grid; place-items: center; min-width: 16px; height: 16px; padding: 0 4px; border-radius: var(--r-bouton); background: var(--accent); color: var(--sur-accent); font-size: var(--t-11); font-weight: 600; }
.puce-filtre[aria-pressed="true"] .puce-compte { background: rgba(255, 255, 255, 0.25); }
.menu-flottant button { position: relative; display: flex; align-items: center; width: 100%; min-height: 30px; padding: 0 10px; border: 0; border-radius: var(--r-bouton); background: none; color: var(--encre); font: inherit; font-size: var(--t-13); text-align: left; cursor: pointer; }
.menu-flottant button:hover { background: var(--actif); }
.menu-flottant button[data-rapport] { flex-direction: column; align-items: flex-start; justify-content: center; gap: 1px; min-height: 48px; padding: 6px 10px; }
.menu-flottant button[data-rapport] small { color: var(--encre-3); font-size: var(--t-12); }
.menu-flottant .pastille { flex: none; width: 8px; height: 8px; margin-right: 9px; border-radius: 50%; }
.menu-grille { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; padding: 2px 0; }
.menu-grille button { min-height: var(--h-bouton); justify-content: center; font-variant-numeric: tabular-nums; font-size: var(--t-13); }
.menu-grille [aria-checked="true"] { background: var(--actif); }
.menu-grille [aria-checked="true"]::after { display: none; }
.menu-flottant [aria-checked="true"] { color: var(--encre); font-weight: 500; }
/* la coche à gauche, comme les listes (menu-liste.css) : un seul menu (cohérence, 28/10/2026) */
.menu-flottant [role="menuitemradio"], .menu-flottant [role="menuitemcheckbox"], .menu-flottant [aria-checked] { padding-left: 28px; }
.menu-flottant [aria-checked="true"]::before { content: ""; position: absolute; left: 10px; top: 50%; width: 9px; height: 5px; border-left: 1.6px solid currentColor; border-bottom: 1.6px solid currentColor; transform: translateY(-70%) rotate(-45deg); }
.menu-flottant .menu-grille [aria-checked] { padding-left: 0; }
.menu-flottant .menu-grille [aria-checked="true"]::before { display: none; }
@keyframes surgir { from { opacity: 0; transform: translateY(-4px) scale(0.98); } to { opacity: 1; transform: none; } }

/* Commandes de la carte */
.commandes { position: absolute; z-index: 4; right: 12px; top: calc(env(safe-area-inset-top) + 108px); display: flex; flex-direction: column; border-radius: var(--rayon-panneau); overflow: hidden; background: var(--panneau); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); box-shadow: var(--ombre-flottant); }
.commande { width: 42px; height: 42px; display: grid; place-items: center; border: 0; background: none; color: var(--encre-2); cursor: pointer; transition: color 0.15s, background 0.15s; }
.commande:hover { color: var(--encre); background: var(--survol); }
.commande + .commande { border-top: 1px solid var(--filet); }
.commande svg { width: 18px; height: 18px; }
.commande[aria-pressed="true"] { color: var(--accent-fort); background: var(--actif); }
.point-ici { width: 14px; height: 14px; border-radius: 50%; background: #0A84FF; border: 2.5px solid #fff; box-shadow: 0 0 0 7px rgba(10, 132, 255, 0.28); }

/* Légende : l'échelle des prix et le choix du mode */
.legende-carte { position: absolute; z-index: 4; left: 12px; bottom: calc(env(safe-area-inset-bottom) + 168px); width: 252px; max-height: calc(100dvh - 360px); overflow-y: auto; padding: 10px; border-radius: var(--rayon-panneau); background: var(--panneau); backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4); box-shadow: var(--ombre-flottant); color: var(--encre); transition: opacity 0.2s; }
.legende-carte:empty { display: none; }
.lg-tete { display: flex; justify-content: space-between; gap: 8px; align-items: baseline; }
.lg-titre { font-size: var(--t-12); font-weight: 500; }
.lg-periode { font-size: var(--t-11); color: var(--encre-4); white-space: nowrap; }
.lg-classes { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 3px; }
.lg-classes li { display: flex; align-items: center; gap: 7px; font-size: var(--t-12); color: var(--encre-2); font-variant-numeric: tabular-nums; }
.lg-classes i { width: 14px; height: 10px; border-radius: var(--r-fin); flex: none; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); }
.lg-vide i { background: repeating-linear-gradient(45deg, var(--filet-2) 0 2px, transparent 2px 4px); box-shadow: inset 0 0 0 1px var(--filet-2); }
.lg-vide span { color: var(--encre-4); }
.lg-legendes { display: grid; gap: 6px; margin-top: 8px; }
.lg-legende { display: flex; align-items: center; gap: 8px; }
.lg-legende p { margin: 0; font-size: var(--t-11); color: var(--encre-3); min-width: 74px; }
.lg-legende img { max-width: 130px; max-height: 58px; border-radius: var(--r-fin); background: #fff; padding: 2px; }
/* Replier le panneau de gauche : au bureau seulement, la poignée fait ce travail au doigt */
.feuille-replier { display: none; }
.panneau-ouvrir { display: none; }
.lg-fermer { flex: none; margin: -4px -2px -4px 0; width: 26px; height: 26px; border: 0; border-radius: var(--r-bouton); background: none; color: var(--encre-3); font-size: var(--t-17); line-height: 1; cursor: pointer; }
.lg-fermer:hover { background: var(--actif); color: var(--encre); }
.lg-tete2 .lg-fermer { display: none; }
.lg-tete2 { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--filet); }
.lg-plu { margin-top: 8px; max-height: 232px; overflow-y: auto; }
.lg-plu li { align-items: flex-start; }
.lg-plu b { font-weight: 600; font-variant-numeric: tabular-nums; }
.lg-zones { margin-top: 2px; }
.regle { margin-top: 10px; padding: 10px 12px; border-radius: var(--rayon-carte); background: var(--surface); box-shadow: 0 0 0 1px var(--filet); }
.regle-titre { margin: 0 0 4px; display: flex; align-items: center; gap: 7px; font-size: var(--t-13); font-weight: 600; }
.regle-titre i { width: 9px; height: 9px; border-radius: var(--r-fin); flex: none; }
.regle-titre i.risque { background: repeating-linear-gradient(45deg, #d94d1a 0 3px, #b82d3c 3px 6px); }
.regle .note { margin-top: 2px; }
.mesures { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; margin-top: 8px; padding: 2px; border-radius: var(--r-bouton); background: var(--survol); box-shadow: inset 0 0 0 1px var(--filet); }
.mesure { height: 26px; border: 0; border-radius: var(--r-pastille); background: none; color: var(--encre-3); font: inherit; font-size: var(--t-12); font-weight: 500; cursor: pointer; }
.mesure:hover { color: var(--encre); }
.mesure.actif { background: var(--actif); color: var(--encre); box-shadow: 0 0 0 1px var(--filet-2); }
.lg-absent { margin: 6px 0 0; padding: 8px 10px; border-radius: var(--r-bouton); background: rgba(222,130,0,0.10); border-left: 2px solid #de8200; font-size: var(--t-11); line-height: 1.4; color: var(--encre-2); }
.lg-note { margin: 8px 0 0; font-size: var(--t-11); color: var(--encre-4); line-height: 1.35; }
.lg-types { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; font-size: var(--t-12); color: var(--encre-2); }
.lg-types span { display: inline-flex; align-items: center; gap: 5px; }
.lg-types i { width: 7px; height: 7px; border-radius: 50%; }
.segment { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; margin-top: 10px; padding: 2px; border-radius: var(--r-bouton); background: var(--survol); box-shadow: inset 0 0 0 1px var(--filet); }
.lg-tete ~ .segment { margin-top: 10px; }
.legende-carte > .segment:first-child { margin-top: 0; }
.segment button { height: 28px; border: 0; border-radius: var(--r-pastille); background: none; color: var(--encre-3); font: inherit; font-size: var(--t-12); font-weight: 500; cursor: pointer; transition: background 0.15s, color 0.15s; }
.segment button:hover { color: var(--encre); }
.segment [aria-checked="true"] { background: var(--actif); color: var(--encre); box-shadow: 0 0 0 1px var(--filet-2), 0 1px 2px rgba(0, 0, 0, 0.2); }
.feuille:not([data-cran="bas"]) ~ .legende-carte { opacity: 0; pointer-events: none; }

/* Info-bulle au survol d'une zone (souris seulement) */
.info-zone { position: absolute; z-index: 8; left: 0; top: 0; min-width: 180px; max-width: 250px; padding: 8px 10px; border-radius: var(--rayon-carte); pointer-events: none; background: var(--panneau); backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4); box-shadow: var(--ombre-flottant); color: var(--encre); }
.info-zone[hidden] { display: none; }
.info-zone p { margin: 0; }
.iz-titre { font-size: var(--t-12); font-weight: 500; }
.iz-titre span { color: var(--encre-3); font-weight: 400; }
.iz-valeur { display: flex; align-items: center; gap: 7px; margin-top: 3px !important; font-size: var(--t-17); font-weight: 600; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.iz-valeur i { width: 9px; height: 9px; border-radius: var(--r-fin); }
.iz-valeur .nd { font-size: var(--t-13); font-weight: 400; }
.iz-note { margin-top: 2px !important; font-size: var(--t-11); color: var(--encre-3); }

/* Étiquettes des communes : nom, pastille de sa classe, prix */
/* MapLibre pose chaque étiquette par un transform : une transition sur transform (ou un
   flou d'arrière-plan à recalculer à chaque image) la fait traîner derrière la carte */
.etiquette-commune { display: flex; flex-direction: column; align-items: center; padding: 4px 9px 5px; border: 0; border-radius: var(--r-bouton); background: rgba(15, 16, 18, 0.88); color: #F7F8F8; font: inherit; line-height: 1.2; cursor: pointer; box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.1), 0 4px 12px rgba(0, 0, 0, 0.35); white-space: nowrap; transition: background-color 0.12s, box-shadow 0.12s; }
.etiquette-commune:hover { background: rgba(28, 30, 34, 0.94); box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.22), 0 6px 16px rgba(0, 0, 0, 0.4); }
.etiquette-commune[hidden] { display: none; }
.ec-nom { font-size: var(--t-11); font-weight: 500; color: #B7B9BD; }
.ec-prix { display: flex; align-items: center; gap: 5px; font-size: var(--t-13); font-weight: 600; letter-spacing: -0.01em; font-variant-numeric: tabular-nums; }
.ec-prix i { width: 7px; height: 7px; border-radius: var(--r-fin); flex: none; }
.etiquette-commune.actif { background: #F7F8F8; color: #08090A; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3); }
.etiquette-commune.actif .ec-nom { color: rgba(8, 9, 10, 0.7); }
.zoom-loin .etiquette-commune { flex-direction: row; gap: 5px; padding: 3px 7px; }
.zoom-loin .ec-nom, .zoom-loin .ec-prix { font-size: var(--t-11); }

/* Feuille du bas : trois hauteurs (bas 156 px, mi 52 %, haut), glissée au doigt */
/* Le panneau des prix est OPAQUE, pas dépoli : il porte des en-têtes collants, et un
   en-tête collant doit être plein pour que le texte ne se lise pas au travers. Tant qu'il
   était translucide et ses bandeaux opaques, deux blancs différents cohabitaient dans le
   même panneau - c'est ce qu'Henri voyait le 23/09/2026. Le verre dépoli reste sur les
   petits panneaux flottants, qui n'ont rien de collant. */
.feuille { overflow: hidden; position: absolute; z-index: 6; left: 0; right: 0; bottom: 0; height: calc(100% - 72px); display: flex; flex-direction: column; background: var(--surface-panneau); border-radius: var(--rayon-panneau) var(--rayon-panneau) 0 0; box-shadow: 0 0 0 1px var(--filet), 0 -8px 30px rgba(0, 0, 0, 0.35); transition: transform 0.36s cubic-bezier(0.22, 1, 0.36, 1); will-change: transform; touch-action: none; color: var(--encre); }
.feuille-poignee { flex: none; height: 22px; display: grid; place-items: center; cursor: grab; }
.feuille-poignee span { width: 36px; height: 4px; border-radius: var(--r-fin); background: var(--filet-2); }
/* La barre de défilement vivait DANS l'angle : elle repeignait le coin haut-droit et la
   forme du panneau se cassait (Henri, 23/09/2026). Elle est fine, détachée du bord, et
   le panneau découpe ce qu'il contient. */
.feuille-corps { flex: 1; min-height: 0; overflow: hidden; padding: 0 16px calc(env(safe-area-inset-bottom) + 24px); scrollbar-width: thin; scrollbar-color: var(--filet-2) transparent; }
.feuille-corps::-webkit-scrollbar { width: 11px; }
.feuille-corps::-webkit-scrollbar-track { background: transparent; }
.feuille-corps::-webkit-scrollbar-thumb { background: var(--filet-2); border-radius: var(--r-pastille); border: 3.5px solid transparent; background-clip: content-box; }
.feuille-corps::-webkit-scrollbar-thumb:hover { background: var(--encre-3); background-clip: content-box; }
.feuille[data-cran="haut"] .feuille-corps { overflow-y: auto; overscroll-behavior: contain; touch-action: pan-y; }
.feuille-corps > div:not([hidden]) { animation: apparaitre 0.22s ease-out; }
@keyframes apparaitre { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
.feuille-titre { font-size: var(--t-17); font-weight: 600; letter-spacing: -0.02em; margin: 2px 0 0; line-height: 1.25; }
.feuille-chapo { margin: 5px 0 0; color: var(--encre-3); font-size: var(--t-13); }
.feuille-section { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 22px 0 8px; font-size: var(--t-13); font-weight: 500; color: var(--encre-2); }
.feuille-section-note { font-size: var(--t-11); font-weight: 400; color: var(--encre-4); text-align: right; }
.feuille .note { font-size: var(--t-12); color: var(--encre-3); }
.page-app .nd { color: var(--encre-4); }

.page-app .bande { border-top: 0; gap: 1px; margin-top: 8px; border-radius: var(--rayon-carte); overflow: hidden; background: var(--filet); box-shadow: 0 0 0 1px var(--filet); }
.page-app .bande-cellule, .page-app .bande-cellule + .bande-cellule { padding: 7px 10px; border-left: 0; background: var(--surface); }
.page-app .bande-titre { color: var(--encre-3); font-size: var(--t-11); }
.page-app .bande-valeur { margin-top: 2px; font-size: 1rem; letter-spacing: -0.02em; }
.page-app .bande-note { margin-top: 1px; color: var(--encre-4); font-size: var(--t-11); }
.page-app .bande-cellule.choisie .bande-valeur { text-decoration: none; color: var(--accent-fort); }

.page-app .liste-communes, .page-app .liste-ventes { border-top: 0; border-radius: var(--rayon-carte); overflow: hidden; box-shadow: 0 0 0 1px var(--filet); background: var(--surface); }
.page-app .liste-communes li, .page-app .liste-ventes li { border-bottom: 1px solid var(--filet); }
.page-app .liste-communes li:last-child, .page-app .liste-ventes li:last-child { border-bottom: 0; }
.ligne-commune { display: grid; grid-template-columns: 1fr auto; column-gap: 12px; padding: 9px 12px; color: var(--encre) !important; min-height: 44px; transition: background 0.12s; }
.ligne-commune:hover { text-decoration: none; background: var(--survol); }
.lc-nom { font-weight: 500; font-size: var(--t-14); }
.lc-prix { font-weight: 600; font-variant-numeric: tabular-nums; text-align: right; font-size: var(--t-14); }
.lc-note { grid-column: 1 / 3; font-size: var(--t-11); color: var(--encre-4); }
.liste-ventes button { display: grid; grid-template-columns: 8px 1fr; column-gap: 10px; align-items: baseline; width: 100%; padding: 9px 12px; border: 0; background: none; color: var(--encre); font: inherit; text-align: left; cursor: pointer; min-height: 44px; transition: background 0.12s; }
.liste-ventes button:hover { background: var(--survol); }
.liste-ventes .pastille { align-self: center; grid-row: 1 / 4; }
.lv-prix { font-weight: 600; font-variant-numeric: tabular-nums; font-size: var(--t-14); }
.lv-detail, .lv-lieu { grid-column: 2; font-size: var(--t-12); color: var(--encre-4); }
.lv-detail { color: var(--encre-3); }

/* Fiches */
.fiche-tete { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.fiche-titre { font-size: 1.25rem; font-weight: 600; letter-spacing: -0.02em; margin: 0; }
.fiche-sous-titre { margin: 3px 0 0; font-size: var(--t-12); color: var(--encre-3); }
.fermer { flex: none; display: grid; place-items: center; width: 28px; height: 28px; padding: 0; border: 0; border-radius: var(--r-bouton); background: none; color: var(--encre-3); cursor: pointer; } /* la croix nue ; dans l'application, instrument.css la règle (lot 1, 28/10/2026) */
.fermer:hover { background: var(--survol); color: var(--encre); }
.fermer svg { width: 15px; height: 15px; }
.page-app .bouton { height: var(--h-bouton); margin: 0; padding: 0 14px; border: 0; border-radius: var(--r-bouton); background: var(--champ, var(--survol)); box-shadow: none; color: var(--encre); font-size: var(--t-13); font-weight: 500; transition: background 0.15s, transform 0.1s; }
.page-app .bouton:hover { background: var(--actif); }
.page-app .bouton:active { transform: scale(0.98); }
.page-app .bouton-primaire { background: var(--plein, var(--encre)); color: var(--plein-texte, var(--fond)) !important; box-shadow: none; font-weight: 500; }
.page-app .bouton-primaire:hover { background: var(--plein, var(--encre)); opacity: 0.88; }
.actions-fiche { margin-top: 14px; }
.actions-fiche .bouton { flex: 1 1 auto; }
.actions-bas { margin: 12px 0 0; font-size: var(--t-13); }
.prevision { margin: 12px 0 0; font-size: var(--t-14); color: var(--encre-2); }
.prevision strong { color: var(--encre); font-weight: 600; font-variant-numeric: tabular-nums; }
.appel-fiche { margin-top: 24px; padding: 14px; border-radius: var(--rayon-carte); background: var(--survol); box-shadow: inset 0 0 0 1px var(--filet); }
.appel-titre { margin: 0; font-weight: 600; font-size: var(--t-14); }
.appel-fiche .actions { margin-top: 12px; }
.appel-fiche .bouton { flex: 1 1 auto; }

.fiab { display: inline-flex; align-items: center; gap: 3px; margin-top: 10px; font-size: var(--t-12); color: var(--encre-3); }
.fiab i { width: 6px; height: 6px; border-radius: 50%; background: var(--filet-2); }
.fiab i.plein { background: var(--accent-fort); }
.fiab b { margin-left: 5px; font-weight: 400; }
.info-zone .fiab { margin-top: 6px; }

/* Courbe : ligne accent, prévision en pointillé, fourchette en aplat léger */
.courbe { display: block; width: 100%; height: auto; margin-top: 4px; overflow: visible; }
.courbe-ligne { fill: none; stroke: var(--accent-fort); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.courbe-prevision { fill: none; stroke: var(--accent-fort); stroke-width: 2; stroke-dasharray: 2 4; stroke-linecap: round; }
.courbe-cone { fill: var(--accent); opacity: 0.18; }
.courbe-point { fill: var(--surface); stroke: var(--accent-fort); stroke-width: 1.6; }
.courbe-an { font-size: var(--t-11); fill: var(--encre-4); font-variant-numeric: tabular-nums; }
.courbe-valeur { font-size: var(--t-12); font-weight: 600; fill: var(--encre); font-variant-numeric: tabular-nums; }

/* Rechercher (adresse, parcelle cadastrale) : les champs du simulateur, sur deux colonnes */
.segment-rech { grid-template-columns: 1fr 1fr; margin-top: 4px; }
.form-rech { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 8px; margin-top: 14px; }
.form-rech .large { grid-column: 1 / -1; }
.form-rech select:disabled, .form-rech input:disabled { opacity: 0.45; }
.form-rech .bouton { height: 44px; }
.form-rech .bouton:disabled { opacity: 0.45; cursor: default; }
.bouton-large { width: 100%; margin-top: 10px; }
.liste-rech { list-style: none; margin: 12px 0 0; padding: 0; border-radius: var(--rayon-carte); overflow: hidden; background: var(--surface); box-shadow: 0 0 0 1px var(--filet); }
.liste-rech li + li { border-top: 1px solid var(--filet); }
.liste-rech button { display: flex; flex-direction: column; gap: 2px; width: 100%; min-height: 44px; padding: 9px 12px; border: 0; background: none; color: var(--encre); font: inherit; font-size: var(--t-14); text-align: left; cursor: pointer; }
.liste-rech button:hover { background: var(--survol); }
.liste-rech small { color: var(--encre-3); font-size: var(--t-12); }

/* Simulateur */
.simulateur { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; margin-top: 14px; }
.simulateur label, .form-rech label { display: flex; flex-direction: column; gap: 4px; font-size: var(--t-11); color: var(--encre-3); min-width: 0; }
.simulateur select, .simulateur input, .form-rech select, .form-rech input { width: 100%; min-width: 0; height: 40px; padding: 0 10px; border: 0; border-radius: var(--r-bouton); background: var(--survol); box-shadow: inset 0 0 0 1px var(--filet-2); color: var(--encre); font: inherit; font-size: 1rem; font-variant-numeric: tabular-nums; }
.simulateur select:focus, .simulateur input:focus, .form-rech select:focus, .form-rech input:focus { outline: none; box-shadow: inset 0 0 0 1px var(--accent), 0 0 0 3px var(--anneau); }
.champ-unite { position: relative; display: block; }
.champ-unite input { padding-right: 34px; }
.champ-unite span { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); color: var(--encre-4); font-size: var(--t-13); }
[data-resultat] .bande { margin-top: 16px; }
[data-resultat] .table-defile { margin-top: 12px; }
.page-app .table-defile { border: 0; border-radius: var(--rayon-carte); background: var(--surface); box-shadow: 0 0 0 1px var(--filet); }
.page-app .table th, .page-app .table td { border-bottom-color: var(--filet); padding: 9px 12px; font-size: var(--t-13); }
.page-app .table thead th { color: var(--encre-4); font-size: var(--t-11); background: var(--surface); }
.page-app .table th:first-child, .page-app .table td:first-child { background: var(--surface); }

/* Téléphone : la parcelle en bulle sur la carte, la fiche rangée tant qu'on ne la touche pas */
.bulle-parcelle { display: flex; flex-direction: column; gap: 6px; min-width: 150px; max-width: 250px; padding: 9px 11px; border: 0; border-radius: var(--rayon-carte); background: var(--surface-panneau); color: var(--encre); font: inherit; text-align: left; cursor: pointer; box-shadow: 0 0 0 1px var(--filet-2), 0 10px 28px rgba(0, 0, 0, 0.45); }
.bulle-parcelle::after { content: ""; position: absolute; left: 50%; bottom: -6px; width: 12px; height: 12px; background: var(--surface-panneau); transform: translateX(-50%) rotate(45deg); box-shadow: 1px 1px 0 var(--filet-2); }
.bp-ligne { display: flex; align-items: baseline; gap: 8px; }
.bp-ligne b { font-size: var(--t-15); letter-spacing: -0.01em; }
.bp-surface { color: var(--encre-3); font-size: var(--t-13); font-variant-numeric: tabular-nums; }
.bp-chevron { margin-left: auto; color: var(--encre-3); font-size: 1.25rem; line-height: 1; }
.bp-puces { display: flex; flex-wrap: wrap; gap: 5px; }
.bp-puce { display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 8px; border-radius: var(--r-rond); background: var(--actif); font-size: var(--t-12); font-weight: 600; }
.bp-puce i { width: 7px; height: 7px; border-radius: var(--r-fin); }
.bp-rouge { color: #F07A72; }
body:not(.mode-bulle) .bulle-parcelle { display: none; }
body.mode-bulle .barre-fiche { display: none; }
@media (min-width: 900px) { .bulle-parcelle { display: none; } }

/* Mesurer : distance ou surface */
.outil-mesure { position: absolute; z-index: 7; left: 12px; right: 66px; top: calc(env(safe-area-inset-top) + 108px); padding: 10px 12px 12px; border-radius: var(--rayon-panneau); background: var(--panneau); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); box-shadow: var(--ombre-flottant); color: var(--encre); }
.outil-mesure[hidden] { display: none; }
.outil-mesure .segment { grid-template-columns: 1fr 1fr; margin-top: 0; }
.mesure-valeur { margin: 10px 0 0; font-size: var(--t-22); font-weight: 700; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.mesure-sous { margin: 0; min-height: 1.4em; color: var(--encre-3); font-size: var(--t-12); font-variant-numeric: tabular-nums; }
.mesure-actions { display: flex; gap: 6px; margin-top: 8px; }
.mesure-actions .bouton { flex: 1; height: var(--h-bouton); margin: 0; padding: 0 8px; font-size: var(--t-12); }
@media (min-width: 900px) { .outil-mesure { left: auto; right: 72px; top: 16px; width: 320px; } }

/* Estimation d'une parcelle */
.estim { margin-top: 10px; padding: 12px 14px; border-radius: var(--rayon-carte); background: var(--surface); box-shadow: 0 0 0 1px var(--filet); }
.estim-titre { margin: 0; color: var(--encre-3); font-size: var(--t-12); }
.estim-valeur { margin: 2px 0 4px; font-size: var(--t-22); font-weight: 700; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.estim-note { margin: 0; color: var(--encre-3); font-size: var(--t-12); font-variant-numeric: tabular-nums; }
.lien { padding: 0; border: 0; background: none; color: var(--lien, var(--accent)); font: inherit; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
.bp-estim { font-size: var(--t-13); font-weight: 600; font-variant-numeric: tabular-nums; }
.bp-estim small { color: var(--encre-3); font-weight: 400; font-size: var(--t-11); }
.rapport-deux { display: grid; grid-template-columns: minmax(0, 220px) 1fr; gap: 20px; align-items: center; }
@media (max-width: 560px) { .rapport-deux { grid-template-columns: 1fr; } }
.plan-parcelle { display: block; width: 100%; max-height: 240px; color: var(--encre); }
.rapport-h3 { margin: 18px 0 6px; font-size: var(--t-14); }
.rapport .estim { box-shadow: none; border: 1px solid var(--filet); border-radius: 0; background: none; }

/* Visite guidée : un trou lumineux sur la vraie commande, une bulle à côté */
.visite { position: fixed; inset: 0; z-index: 100; }
.visite-trou { position: fixed; border-radius: var(--rayon-panneau); box-shadow: 0 0 0 2px var(--accent), 0 0 0 9999px rgba(4, 5, 8, 0.7); pointer-events: none; transition: left 0.3s ease, top 0.3s ease, width 0.3s ease, height 0.3s ease; }
.visite-trou.sans-cible { box-shadow: 0 0 0 9999px rgba(4, 5, 8, 0.7); }
.visite-bulle { position: fixed; padding: 18px 18px 14px; border-radius: var(--rayon-panneau); background: var(--surface-panneau); color: var(--encre); box-shadow: var(--ombre-flottant); transition: top 0.3s ease, left 0.3s ease; }
.visite-bulle.centree { left: 50%; top: 50%; width: min(380px, calc(100% - 32px)); transform: translate(-50%, -50%); padding: 24px 22px 18px; }
.visite-compte { margin: 0 0 6px; color: var(--encre-4); font-size: var(--t-12); font-variant-numeric: tabular-nums; }
.visite-titre { margin: 0; font-size: var(--t-17); font-weight: 600; letter-spacing: -0.01em; }
.centree .visite-titre { font-size: 1.3125rem; }
.visite-texte { margin: 6px 0 0; color: var(--encre-2); font-size: var(--t-14); line-height: 1.5; }
.visite-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 16px; }
.visite-actions .bouton { height: var(--h-bouton); }
.centree .visite-actions .bouton { flex: 1; height: 44px; }
.visite-lien { margin-right: auto; padding: 8px 4px; border: 0; background: none; color: var(--encre-3); font: inherit; font-size: var(--t-13); cursor: pointer; }
.visite-lien:hover { color: var(--encre); }
.visite-signal { position: fixed; border-radius: var(--r-moyen); box-shadow: 0 0 0 2px var(--accent-fort); pointer-events: none; animation: visite-pulse 1.4s ease-out infinite; }
.visite-signal[hidden] { display: none; }
@keyframes visite-pulse { 0% { box-shadow: 0 0 0 2px var(--accent-fort), 0 0 0 0 rgba(255, 255, 255, 0.5); } 100% { box-shadow: 0 0 0 2px var(--accent-fort), 0 0 0 12px rgba(255, 255, 255, 0); } }
.visite-icone { display: inline-block; width: 1.15em; height: 1.15em; margin: 0 1px; vertical-align: -0.2em; padding: 1px; border-radius: var(--r-fin); background: var(--actif); color: var(--encre); }
@media (prefers-reduced-motion: reduce) { .visite-trou, .visite-bulle { transition: none; } .visite-signal { animation: none; } }

.toast { position: fixed; z-index: 40; left: 50%; bottom: calc(env(safe-area-inset-bottom) + 176px); transform: translateX(-50%); max-width: calc(100% - 32px); padding: 10px 14px; border-radius: var(--rayon-carte); background: #1C1D21; color: #F7F8F8; font-size: var(--t-13); box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.08), 0 10px 30px rgba(0, 0, 0, 0.5); }
.toast[hidden] { display: none; }
.alerte { margin: 0 0 12px; padding: 10px 12px; border-radius: var(--r-bouton); background: rgba(232, 69, 60, 0.12); box-shadow: inset 0 0 0 1px rgba(232, 69, 60, 0.35); font-size: var(--t-13); }

/* Bureau : la feuille devient un panneau à gauche, toujours ouvert */
@media (min-width: 900px) {
  .haut { right: auto; left: 16px; top: 16px; width: 420px; }
  .raccourci { display: inline-block; }
  .puces { margin: 8px 0 0; padding: 0 0 4px; flex-wrap: wrap; overflow: visible; }
  .commandes { top: 16px; right: 16px; }
  .feuille-replier { display: grid; place-items: center; position: absolute; z-index: 4; right: 10px; top: 10px; width: 30px; height: 30px; padding: 0; border: 0; border-radius: var(--rayon); background: none; color: var(--encre-3); cursor: pointer; }
  .feuille-replier:hover { background: var(--actif); color: var(--encre); }
  .feuille-replier svg { width: 16px; height: 16px; }
  /* il chevauchait la croix des fiches et le titre de l'accueil : à gauche de la croix, titres en retrait */
  .feuille:has(.fiche-tete .fermer) .feuille-replier { right: 50px; top: 16px; } .feuille-titre, .fiche-tete > div:first-child { padding-right: 34px; }
  body.panneau-replie .feuille { display: none; }
  .panneau-ouvrir { display: grid; place-items: center; position: absolute; z-index: 6; left: 16px; top: 138px; width: 38px; height: 38px; padding: 0; border: 0; border-radius: var(--rayon-panneau); background: var(--panneau); backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4); box-shadow: var(--ombre-flottant); color: var(--encre); cursor: pointer; }
  .panneau-ouvrir[hidden] { display: none; }
  .panneau-ouvrir svg { width: 16px; height: 16px; }
  .feuille { left: 16px; right: auto; top: 138px; bottom: auto; max-height: calc(100dvh - 154px); width: 420px; height: auto; border-radius: var(--rayon-panneau); transform: none !important; transition: none; touch-action: auto; box-shadow: var(--ombre-flottant); }
  .feuille-poignee { display: none; }
  .feuille-corps { overflow-y: auto; overflow-x: hidden; padding: 4px 18px 18px; scroll-behavior: smooth; }
  /* En-tête de fiche collant : le nom et les deux actions restent sous les yeux */
  /* En-tête collant : fond PLEIN, sinon le contenu se lit au travers en défilant */
  .feuille .fiche-tete { position: sticky; top: 0; z-index: 3; margin: 0 -18px; padding: 14px 18px 10px; background: var(--surface-panneau); box-shadow: 0 1px 0 var(--filet); }
  .feuille .actions-fiche { position: sticky; top: 58px; z-index: 2; margin: 0 -18px; padding: 10px 18px; background: var(--surface-panneau); box-shadow: 0 1px 0 var(--filet); }
  .feuille .feuille-titre { position: sticky; top: 0; z-index: 3; margin: 0 -18px; padding: 14px 18px 8px; background: var(--surface-panneau); }
  .feuille.defile { box-shadow: var(--ombre-flottant), inset 0 1px 0 var(--filet-2); }
  .feuille.defile .fiche-tete { box-shadow: 0 8px 12px -12px rgba(0, 0, 0, 0.6); }
  /* Une accolade en trop fermait ici le bloc BUREAU : les quatre regles suivantes
     s'appliquaient a TOUS les ecrans. Au telephone, la legende se posait a 16 px
     du bas, PAR-DESSUS la feuille : 140 px de recouvrement mesures a 393x852, le
     23/09/2026, signale par Henri. L'accolade orpheline de la fin du bloc est
     maintenant refusee par la construction. */
  .legende-carte { left: auto; right: 16px; bottom: 16px; max-height: calc(100dvh - 120px); }
  .feuille:not([data-cran="bas"]) ~ .legende-carte { opacity: 1; pointer-events: auto; }
  .maplibregl-ctrl-bottom-right { bottom: 0; right: 272px; }
  .toast { bottom: 32px; }
}

/* Explorateur : onglets, tris, classements, transactions */
.segment-large { grid-template-columns: repeat(4, 1fr); margin: 14px 0 12px; }
.segment-large button { height: 32px; font-size: var(--t-13); }
.expl-barre { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.expl-barre .segment { margin: 0; grid-template-columns: repeat(2, 1fr); min-width: 170px; }
.expl-barre .note { margin: 0; }
.champ-expl { flex: 1 1 180px; min-width: 0; height: 36px; padding: 0 10px; border: 0; border-radius: var(--r-bouton); background: var(--survol); box-shadow: inset 0 0 0 1px var(--filet-2); color: var(--encre); font: inherit; font-size: var(--t-15); }
.champ-expl:focus { outline: none; box-shadow: inset 0 0 0 1px var(--accent), 0 0 0 3px var(--anneau); }
.tris { display: flex; gap: 4px; flex-wrap: wrap; }
.tri { display: inline-flex; align-items: center; gap: 3px; height: 30px; padding: 0 10px; border: 0; border-radius: var(--r-bouton); background: var(--survol); box-shadow: inset 0 0 0 1px var(--filet); color: var(--encre-3); font: inherit; font-size: var(--t-12); font-weight: 500; cursor: pointer; }
.tri:hover { color: var(--encre); }
.tri.actif { background: var(--actif); color: var(--encre); box-shadow: inset 0 0 0 1px var(--filet-2); }
.tri i { font-style: normal; font-size: var(--t-11); opacity: 0.7; }
.liste-rang { list-style: none; margin: 10px 0 0; padding: 0; border-radius: var(--rayon-carte); overflow: hidden; background: var(--surface); box-shadow: 0 0 0 1px var(--filet); }
.liste-rang li + li { border-top: 1px solid var(--filet); }
.liste-rang button { display: grid; grid-template-columns: auto 1fr auto; gap: 2px 10px; width: 100%; padding: 9px 12px; border: 0; background: none; color: var(--encre); font: inherit; text-align: left; cursor: pointer; min-height: 44px; }
.liste-rang button:hover { background: var(--survol); }
.rg-rang { grid-row: 1 / 3; align-self: center; min-width: 20px; color: var(--encre-4); font-size: var(--t-12); font-variant-numeric: tabular-nums; }
.rg-nom { font-size: var(--t-14); font-weight: 500; }
.rg-nom em { font-style: normal; color: var(--encre-4); font-weight: 400; }
.rg-valeur { display: inline-flex; align-items: center; gap: 6px; font-size: var(--t-14); font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.rg-valeur i { width: 9px; height: 9px; border-radius: var(--r-fin); }
.rg-note { grid-column: 2 / 4; font-size: var(--t-12); color: var(--encre-4); }
.liste-rang .tx-prix { font-size: var(--t-14); font-weight: 600; font-variant-numeric: tabular-nums; }
.liste-rang .tx-m2 { justify-self: end; font-size: var(--t-13); color: var(--encre-2); font-variant-numeric: tabular-nums; }
.liste-rang .tx-detail, .liste-rang .tx-lieu { grid-column: 2 / 4; font-size: var(--t-12); color: var(--encre-4); }
.liste-rang .tx-detail { color: var(--encre-3); }
.liste-rang .pastille { grid-row: 1 / 4; align-self: center; }
.liste-rang li:has(.pastille) button { grid-template-columns: 8px 1fr auto; }
.expl-corps .bouton { margin-top: 12px; width: 100%; }
.actions-accueil { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; margin-top: 10px; }
.actions-accueil .bouton { width: 100%; height: var(--h-bouton); min-height: 0; margin: 0; padding: 0 4px; font-size: var(--t-13); }
.vue-live { margin-top: 14px; padding: 8px 10px; border-radius: var(--rayon-carte); background: var(--survol); box-shadow: inset 0 0 0 1px var(--filet); }
.vue-live[hidden] { display: none; }
.vl-titre { margin: 0; font-size: var(--t-12); color: var(--encre-3); }
.vl-chiffres { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 3px; }
.vue-live { margin-top: 12px; }
.vl-valeur { margin: 0; font-size: var(--t-17); font-weight: 600; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.vl-note { margin: 2px 0 0; font-size: var(--t-11); color: var(--encre-4); }

/* Diagnostic (?diag=1) : le site se mesure chez celui qui le regarde */
.diag { position: fixed; z-index: 60; left: 12px; top: 12px; max-width: 360px; padding: 12px 14px; border-radius: var(--rayon-panneau); background: rgba(8, 9, 10, 0.94); color: #F7F8F8; font-size: var(--t-12); line-height: 1.45; box-shadow: 0 0 0 1px rgba(255,255,255,0.12), 0 10px 30px rgba(0,0,0,0.5); font-variant-numeric: tabular-nums; }
.diag p { margin: 0 0 6px; }
.diag-titre { font-weight: 600; color: #B7B9BD; }
.diag table { width: 100%; border-collapse: collapse; margin-bottom: 8px; }
.diag th { text-align: left; font-weight: 400; color: #B7B9BD; padding: 1px 0; }
.diag td { text-align: right; padding: 1px 0; }

/* ── Rapport 91STUDIO ─────────────────────────────────────────────────────────── */
.rapport { position: fixed; inset: 0; z-index: 20; overflow-y: auto; background: var(--fond); -webkit-overflow-scrolling: touch; color: var(--encre);
  --fond: #FAFAF7; --surface: #FFFFFF; --encre: #0E0E0C; --encre-2: #33332F; --encre-3: #77776F; --encre-4: #8A8A82; --filet: #E4E2D9; --filet-2: #C9C7BC; --survol: #F3F2EC; --actif: #ECEAE2; --accent: #1B3A5C; --accent-fort: #1B3A5C; --lien: #1B3A5C; --jauge: #C9D3DD; color-scheme: light; }
.rapport .bouton-primaire { background: #0E0E0C !important; color: #fff !important; box-shadow: none !important; }
.rapport .bande { border-radius: 0 !important; box-shadow: none !important; background: none !important; border-top: 2px solid var(--encre) !important; gap: 0 !important; }
.rapport .bande-cellule { background: none !important; padding: 10px 12px 12px 0 !important; }
.rapport .bande-cellule + .bande-cellule { padding-left: 12px !important; border-left: 1px solid var(--filet) !important; }
.rapport[hidden] { display: none; }
.rapport-barre { position: sticky; top: 0; z-index: 1; display: flex; align-items: center; gap: 8px; padding: calc(env(safe-area-inset-top) + 8px) 12px 8px; background: var(--fond); border-bottom: 1px solid var(--filet); }
.rapport-barre .bouton { margin: 0; }
.rapport-barre-titre { flex: 1; text-align: center; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rapport-page { max-width: 760px; margin: 0 auto; padding: 24px 16px 48px; background: var(--fond); }
.rapport-tete { display: flex; gap: 14px; align-items: flex-start; padding-bottom: 16px; border-bottom: 2px solid var(--encre); }
.rapport-tete img { border-radius: var(--r-bouton); flex: none; }
.rapport-surtitre { margin: 0; font-size: var(--t-12); color: var(--encre-3); }
.rapport-tete h1 { font-size: 2.125rem; font-weight: 700; letter-spacing: -0.03em; margin: 2px 0 0; }
.rapport-meta { margin: 6px 0 0; font-size: var(--t-12); color: var(--encre-3); }
.rapport-section { margin-top: 30px; }
.rapport-section h2 { font-size: var(--t-17); margin-bottom: 10px; }
.rapport-chapo { margin: 0 0 16px; font-size: 1rem; color: var(--encre-2); max-width: 600px; }
.rapport-section .bande { margin-top: 14px; }
.bande-3 { grid-template-columns: repeat(3, 1fr); }
.facteurs { list-style: none; margin: 14px 0 0; padding: 0; border-top: 1px solid var(--filet); font-size: var(--t-14); }
.facteurs li { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid var(--filet); font-variant-numeric: tabular-nums; }
.facteurs li span:first-child { color: var(--encre-2); }
.rapport-appel { padding-top: 18px; border-top: 2px solid var(--encre); }
.rapport-appel p { color: var(--encre-2); max-width: 600px; margin: 0; }
.rapport-appel .bouton { height: 44px; }
.rapport-contact { margin-top: 14px !important; font-size: var(--t-13); }
.rapport-pied { margin-top: 36px; padding-top: 12px; border-top: 1px solid var(--filet); font-size: var(--t-11); color: var(--encre-3); line-height: 1.5; }

@media (max-width: 720px) {
  .bande-valeur { font-size: var(--t-17); }
  .bande-3 { grid-template-columns: 1fr 1fr 1fr; }
  .rapport-tete h1 { font-size: 1.75rem; }
  .simulateur { grid-template-columns: 1fr 1fr; }
  .simulateur label:first-child { grid-column: 1 / 3; }
}


/* ── Page de présentation de l'outil ────────────────────────────────────────────── */
.page-outil { background: #08090A; color: #F7F8F8; }
.page-outil .barre { background: rgba(8, 9, 10, 0.86); backdrop-filter: blur(16px); border-bottom-color: rgba(255, 255, 255, 0.08); }
.page-outil .marque, .page-outil .liens a { color: #F7F8F8; }
.page-outil .recherche input { background: rgba(255, 255, 255, 0.05); border-color: rgba(255, 255, 255, 0.1); color: #F7F8F8; }
.page-outil .suggestions { background: #0F1012; border-color: rgba(255, 255, 255, 0.1); }
.page-outil .suggestions a { color: #F7F8F8; }
.page-outil .suggestions small { color: #868B94; }
.page-outil .suggestions a:hover { background: rgba(255, 255, 255, 0.07); }
.page-outil main { max-width: 1120px; }
.page-outil .pied { border-top-color: rgba(255, 255, 255, 0.08); color: #868B94; }
.page-outil a { color: #F7F8F8; text-decoration: underline; text-decoration-color: rgba(255, 255, 255, 0.3); }
.page-outil .bouton { height: 46px; padding: 0 20px; border: 1px solid rgba(255, 255, 255, 0.14); border-radius: var(--r-moyen); background: rgba(255, 255, 255, 0.04); color: #F7F8F8; font-size: var(--t-15); font-weight: 500; }
.page-outil .bouton:hover { background: rgba(255, 255, 255, 0.09); }
.page-outil .bouton-primaire { background: #F7F8F8; border-color: #F7F8F8; color: #08090A; font-weight: 600; }
.page-outil .bouton-primaire:hover { background: #FFFFFF; }
.page-outil .note { color: #868B94; }

.hero { margin-top: 64px !important; }
.sur-titre { margin: 0 0 18px; font-size: var(--t-12); letter-spacing: 0.08em; color: #868B94; }
.hero h1 { font-size: clamp(34px, 6vw, 62px); font-weight: 600; letter-spacing: -0.035em; line-height: 1.04; }
.hero .chapo { color: #B7B9BD; font-size: clamp(16px, 2vw, 19px); max-width: 620px; margin-top: 20px; }
.hero .actions { margin-top: 28px; }
.svg-carte { display: block; width: 100%; height: auto; margin: 48px 0 0; overflow: visible; }
.svg-carte path { stroke: rgba(8, 9, 10, 0.75); stroke-width: 0.6; transition: fill-opacity 0.2s; }
.svg-carte path:hover { fill-opacity: 1; }
.legende-svg { list-style: none; display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 20px 0 0; padding: 0; font-size: var(--t-13); color: #B7B9BD; font-variant-numeric: tabular-nums; }
.legende-svg li { display: inline-flex; align-items: center; gap: 7px; }
.legende-svg i { width: 14px; height: 10px; border-radius: var(--r-fin); }
.legende-svg .nd i { background: repeating-linear-gradient(45deg, rgba(255,255,255,0.18) 0 2px, transparent 2px 4px); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.18); }
.legende-svg .nd { color: #868B94; }

.manifeste { margin-top: 84px !important; max-width: 680px; }
.manifeste p { color: #B7B9BD; font-size: var(--t-17); line-height: 1.65; margin: 0 0 16px; }
.sous-section { margin: 44px 0 14px; font-size: 1rem; font-weight: 600; letter-spacing: -0.015em; }
.liste-limites { list-style: none; margin: 0; padding: 0; max-width: 720px; }
.liste-limites li { position: relative; padding: 12px 0 12px 22px; border-top: 1px solid rgba(255, 255, 255, 0.08); color: #B7B9BD; font-size: var(--t-15); line-height: 1.55; }
.liste-limites li:last-child { border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.liste-limites li::before { content: ""; position: absolute; left: 2px; top: 20px; width: 8px; height: 1px; background: #62666D; }
.chiffres { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; margin-top: 72px !important; background: rgba(255, 255, 255, 0.08); border-top: 1px solid rgba(255, 255, 255, 0.08); border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.chiffres > div { background: #08090A; padding: 26px 20px 26px 0; }
.chiffre { margin: 0; font-size: clamp(28px, 4vw, 44px); font-weight: 600; letter-spacing: -0.035em; font-variant-numeric: tabular-nums; }
.chiffre-libelle { margin: 6px 0 0; font-size: var(--t-14); color: #F7F8F8; }
.chiffre-note { margin: 2px 0 0; font-size: var(--t-13); color: #868B94; }

.page-outil section h2 { font-size: clamp(22px, 3vw, 30px); font-weight: 600; letter-spacing: -0.025em; margin-bottom: 28px; }
.grille-blocs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: rgba(255, 255, 255, 0.08); box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.08); border-radius: var(--r-panneau); overflow: hidden; }
.grille-blocs article { background: #0B0C0E; padding: 26px 24px 28px; }
.grille-blocs h3, .grille-vision h3 { font-size: 1rem; font-weight: 600; margin: 0 0 10px; letter-spacing: -0.015em; }
.grille-blocs p, .grille-vision p:not(.num) { margin: 0; color: #B7B9BD; font-size: var(--t-15); line-height: 1.55; }
.vision { margin-top: 96px !important; }
.vision .chapo { color: #B7B9BD; max-width: 620px; margin: -12px 0 32px; font-size: var(--t-17); }
.grille-vision { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; }
.grille-vision article { border-top: 1px solid rgba(255, 255, 255, 0.14); padding-top: 18px; }
.num { margin: 0 0 14px; font-size: var(--t-12); color: #8A8F98; font-variant-numeric: tabular-nums; letter-spacing: 0.06em; }
td.num, th.num { color: var(--encre-3); }
.appel-outil { margin-top: 44px; padding: 32px; border-radius: var(--r-panneau); background: #0F1012; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08); }
.appel-outil p { margin: 0; max-width: 620px; color: #B7B9BD; font-size: 1rem; }
.faq details { border-top: 1px solid rgba(255, 255, 255, 0.08); padding: 16px 0; }
.faq details:last-child { border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.faq summary { cursor: pointer; font-size: 1rem; font-weight: 500; list-style: none; display: flex; justify-content: space-between; gap: 16px; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; color: #62666D; font-weight: 400; }
.faq details[open] summary::after { content: "–"; }
.faq p { margin: 12px 0 0; color: #B7B9BD; max-width: 720px; font-size: var(--t-15); line-height: 1.6; }
.liens-communes { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 10px; margin: 0; padding: 0; }
.liens-communes a { display: inline-block; padding: 7px 12px; border-radius: var(--r-bouton); background: rgba(255, 255, 255, 0.04); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08); color: #B7B9BD; font-size: var(--t-13); }
.liens-communes a:hover { background: rgba(255, 255, 255, 0.09); color: #F7F8F8; text-decoration: none; }

@media (max-width: 900px) {
  .chiffres { grid-template-columns: repeat(2, 1fr); }
  .chiffres > div { padding: 20px 16px 20px 0; }
  .grille-blocs, .grille-vision { grid-template-columns: 1fr; }
  .grille-vision { gap: 24px; }
  .hero { margin-top: 36px !important; }
  .appel-outil { padding: 22px; }
}

/* Rapport : méthode dépliable, tableaux de mesures, limites */
.methode { margin-top: 16px; border-top: 1px solid var(--filet); }
.methode summary { padding: 10px 0 0; cursor: pointer; list-style: none; font-size: var(--t-13); font-weight: 500; color: var(--encre-3); display: flex; align-items: center; gap: 6px; }
.methode summary::-webkit-details-marker { display: none; }
.methode summary::before { content: "+"; width: 14px; text-align: center; color: var(--encre-4); }
.methode[open] summary::before { content: "–"; }
.methode summary:hover { color: var(--encre); }
.methode > div { padding: 6px 0 4px; }
.methode p { margin: 0 0 8px; font-size: var(--t-13); line-height: 1.55; color: var(--encre-2); max-width: 680px; }
.methode .limite, .rapport .limite { padding-left: 10px; border-left: 2px solid var(--ponctuation); color: var(--encre-2); }
.table-mesures th[scope="row"] { font-weight: 500; white-space: normal; }
.table-mesures td { white-space: normal; font-size: var(--t-13); }
.table-mesures .lecture { color: var(--encre-3); font-style: normal; }
.rapport .liste-limites li { border-color: var(--filet); color: var(--encre-2); }
.rapport .liste-limites li::before { background: var(--filet-2); }
.rapport-section .bande + .rapport-chapo { margin-top: 16px; }

/* Impression : le rapport seul, en A4 */
@media print {
  @page { size: A4; margin: 14mm 14mm 16mm; }
  .page-app { position: static; overflow: visible; background: #fff; }
  .page-app:not(.pg-imprime) > :not(.rapport) { display: none !important; }
  .rapport { position: static; overflow: visible; background: #fff; }
  .rapport-barre, .rapport-appel .actions { display: none; }
  .methode { border-top: 1px solid #E4E2D9; }
  .methode[open] > div, .methode > div { display: block !important; }
  .methode summary { color: #77776F; }
  .rapport-page { max-width: none; padding: 0; background: #fff; }
  .rapport-section { break-inside: avoid; }
  .table-defile { overflow: visible; border: 0; }
  .table th:first-child, .table td:first-child { position: static; }
  :root { --fond: #fff; --surface: #fff; --encre: #0E0E0C; --encre-2: #33332F; --encre-3: #77776F; --filet: #E4E2D9; --accent: #1B3A5C; --jauge: #C9D3DD; }
}
/* Synthèse du PLU (rapport de parcelle, rapport « Synthèse du PLU ») */
.plu-fiche { margin-bottom: 8px; }
.plu-fiche .bande-valeur { font-size: var(--t-17); }
.plu-zone { margin-top: 24px; padding-top: 14px; border-top: 2px solid var(--encre); }
.plu-zone-titre { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0 0 6px; font-size: var(--t-17); }
.plu-zone-titre i { width: 12px; height: 12px; border-radius: var(--r-fin); flex: none; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.plu-zone .rapport-chapo { margin-bottom: 8px; }
.plu-article { margin-top: 16px; }
.plu-article .rapport-h3 { margin: 0 0 2px; }
.plu-article .texte-corps p { margin: 4px 0 0; }
.plu-reperes th { white-space: nowrap; }
.plu-reperes td:last-child { min-width: 220px; color: var(--encre-2); font-size: var(--t-12); white-space: normal; }
.plu-reperes td.num { white-space: nowrap; }
.plu-ecartes { font-size: var(--t-11); }
@media print {
  .rapport-section.rapport-plu { break-inside: auto; }
  .rapport-saut { break-before: page; page-break-before: always; }
  .plu-article, .plu-reperes tr { break-inside: avoid; }
  .plu-zone-titre, .plu-article .rapport-h3, .rapport-plu .rapport-h3 { break-after: avoid; }
}
/* Texte du règlement, article par article, dans la fiche parcelle */
.texte-source { margin-top: 6px; }
.texte-regle { border-top: 1px solid var(--filet); }
.texte-regle:first-of-type { margin-top: 6px; }
.texte-regle summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; font-size: var(--t-13); font-weight: 500; }
.texte-regle summary::-webkit-details-marker { display: none; }
.texte-regle summary::after { content: "+"; opacity: 0.55; font-weight: 400; }
.texte-regle summary > span { flex: 1; min-width: 0; }
.texte-regle[open] > summary { position: sticky; top: 0; z-index: 1; background: var(--surface-panneau); }
.art-n { display: inline-block; min-width: 24px; color: var(--encre-4); font-weight: 500; font-variant-numeric: tabular-nums; }
.art-nr { flex: none; color: var(--encre-3); font-size: var(--t-11); font-weight: 400; align-self: center; }
.section-plu { margin: 14px 0 0; padding: 0 0 6px; color: var(--accent-fort); font-size: var(--t-11); font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; }
.texte-corps p.num { margin-top: 10px; color: var(--encre); font-weight: 600; }
.texte-corps mark { padding: 0 2px; border-radius: var(--r-fin); background: var(--actif, rgba(128, 128, 128, 0.18)); color: var(--encre); }
.texte-regle[open] summary::after { content: "−"; }
.texte-corps { padding: 0 0 10px; font-size: var(--t-13); line-height: 1.55; }
.texte-corps p { margin: 0 0 6px; }
.texte-corps h4 { margin: 10px 0 4px; font-size: var(--t-13); font-weight: 600; }
/* Fiche parcelle, sur le modèle de Pappers Immobilier : volets à toucher, action en bas */
.fiche-parcelle .bande-valeur { font-size: 1rem; white-space: normal; overflow-wrap: anywhere; }
.pprn-rouge { color: #E5484D; }
.volets { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin: 12px 0 4px; }
.volet { min-height: 36px; padding: 6px 4px; border: 0; border-radius: var(--rayon); background: var(--surface); box-shadow: 0 0 0 1px var(--filet); color: var(--encre-2); font: inherit; font-size: var(--t-13); font-weight: 500; cursor: pointer; }
.volet[aria-selected="true"] { background: var(--actif); color: var(--encre); box-shadow: 0 0 0 1px var(--accent-fort, var(--filet-2)); }
.volet-corps > .feuille-section:first-child, .volet-corps > h3:first-child { margin-top: 12px; }
.feuille .actions-pied { position: sticky; bottom: -18px; z-index: 2; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 8px; margin: 16px -18px 0; padding: 10px 18px 28px; background: var(--surface-panneau); box-shadow: 0 -1px 0 var(--filet); }
.feuille .actions-pied .bouton { margin: 0; width: 100%; justify-content: center; text-align: center; }
/* Téléphone : les actions de la fiche ouverte, fixées au bas de l'écran, au-dessus de la fiche */
.barre-fiche { position: fixed; z-index: 8; left: 0; right: 0; bottom: 0; padding: 10px 16px calc(env(safe-area-inset-bottom) + 10px); background: var(--surface-panneau); box-shadow: 0 -1px 0 var(--filet), 0 -8px 24px rgba(0, 0, 0, 0.3); }
.barre-fiche[hidden] { display: none; }
.barre-fiche .actions-pied { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 8px; margin: 0; }
.barre-fiche .bouton { margin: 0; width: 100%; }
@media (min-width: 900px) { .barre-fiche { display: none; } }
@media (max-width: 899px) { [data-vue] { padding-bottom: 72px; } }

/* ── Pièces graphiques (src/pieces.js) ── */
.pg { position: fixed; inset: 0; z-index: 60; display: flex; flex-direction: column; background: var(--fond); color: var(--encre); }
body.pg-ouvert { overflow: hidden; }
/* Sous une fenêtre plein écran (recherche foncière, pièces, topo…), la feuille de la carte ne reste pas active en dessous :
   ni vue, ni atteinte au clavier ou au lecteur d'écran (Henri, 18/10/2026 : « j'ai encore […] div.feuille-corps, la sidebar
   des cartes, lorsque je vais dans le module recherche foncière »). visibility garde sa place : rien ne bouge à la fermeture. */
body.pg-ouvert > .feuille { visibility: hidden; }
.pg-barre-haut { display: flex; align-items: center; gap: 8px; padding: calc(env(safe-area-inset-top) + 8px) 12px 8px; border-bottom: 1px solid var(--filet); }
.pg-barre-haut .bouton { margin: 0; }
.pg-titre { flex: 1; text-align: center; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pg-appli { flex: 1; min-height: 0; display: grid; grid-template-columns: 320px minmax(0, 1fr); }
.pg-reglages { overflow-y: auto; padding: 14px 14px 40px; border-right: 1px solid var(--filet); display: flex; flex-direction: column; gap: 8px; }
.pg-reglages h2 { margin: 10px 0 2px; font-size: var(--t-11); font-weight: 600; letter-spacing: 0.07em; text-transform: uppercase; color: var(--encre-4); }
.pg-pieces { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.pg-piece { display: grid; grid-template-columns: 20px 1fr auto; align-items: center; gap: 8px; padding: 6px 8px; border-radius: var(--r-moyen); cursor: pointer; }
.pg-piece:hover { background: var(--survol); }
.pg-piece[aria-current="true"] { background: var(--actif); box-shadow: inset 0 0 0 1px var(--accent); }
.pg-piece input { margin: 0; width: 16px; height: 16px; accent-color: var(--accent); }
.pg-piece b { font-size: var(--t-13); font-weight: 600; }
.pg-piece small { display: block; color: var(--encre-3); font-size: var(--t-12); }
.pg-code { color: var(--encre-4); font-size: var(--t-11); font-variant-numeric: tabular-nums; }
.pg-indispo { opacity: 0.5; cursor: not-allowed; }
.pg-ligne2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.pg-seg { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 2px; padding: 2px; border-radius: var(--r-moyen); background: var(--survol); box-shadow: inset 0 0 0 1px var(--filet); }
.pg-seg button { height: 30px; border: 0; border-radius: var(--r-bouton); background: none; color: var(--encre-3); font: inherit; font-size: var(--t-13); font-weight: 600; cursor: pointer; }
.pg-seg button[aria-pressed="true"] { background: var(--actif); color: var(--encre); box-shadow: 0 0 0 1px var(--filet-2); }
.pg-calques { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 10px; }
.pg-calques label { display: flex; align-items: center; gap: 7px; padding: 4px 0; font-size: var(--t-13); cursor: pointer; }
.pg-calques input { margin: 0; width: 16px; height: 16px; accent-color: var(--accent); }
.pg-nords button { height: 44px; }
.pg-nords svg { width: 20px; height: 26px; vertical-align: middle; }
.pg-leg-prix { margin: 2px 0 4px; }
.pg-champ { display: flex; flex-direction: column; gap: 4px; font-size: var(--t-12); color: var(--encre-3); }
.pg-champ input, .pg-champ select { height: var(--h-bouton); padding: 0 10px; border: 0; border-radius: var(--r-bouton); background: var(--champ, var(--survol)); box-shadow: inset 0 0 0 1px var(--filet); color: var(--encre); font: inherit; font-size: var(--t-13); }
.pg-champ .bouton { height: var(--h-bouton); margin: 0; }
.pg-info { margin: 0; padding: 8px 10px; border-radius: var(--r-bouton); background: var(--survol); color: var(--encre-2); font-size: var(--t-12); font-variant-numeric: tabular-nums; }
.pg-plateau { min-width: 0; overflow-y: auto; padding: 14px; display: flex; flex-direction: column; gap: 12px; background: var(--surface); }
.pg-dossier { display: flex; gap: 10px; overflow-x: auto; padding-bottom: 4px; }
.pg-vignette { flex: none; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 0; border: 0; background: none; color: var(--encre-3); font: inherit; font-size: var(--t-11); cursor: pointer; }
.pg-vignette span { display: block; background: #fff; border-radius: var(--r-fin); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); outline: 2px solid transparent; outline-offset: 2px; }
.pg-vignette[aria-current="true"] span { outline-color: var(--accent); }
.pg-scene { display: grid; place-items: center; }
.pg-aide { margin: 0; text-align: center; color: var(--encre-3); font-size: var(--t-12); }
@media (max-width: 899px) {
  .pg-appli { grid-template-columns: 1fr; overflow-y: auto; }
  .pg-reglages { order: 2; border-right: 0; border-top: 1px solid var(--filet); overflow: visible; }
  .pg-plateau { overflow: visible; }
}
/* La feuille : tout en millimètres papier (--mm = px par mm à l'écran, 1mm à l'impression) */
.pg-feuille { position: relative; background: #fff; color: #111; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18), 0 18px 50px rgba(0, 0, 0, 0.25); overflow: hidden; user-select: none; }
.pg-cadre { position: absolute; left: calc(var(--mm) * 10); top: calc(var(--mm) * 10); right: calc(var(--mm) * 10); bottom: calc(var(--mm) * 10); border: calc(var(--mm) * 0.5) solid #111; overflow: hidden; background: #fff; }
.pg-carte { position: absolute; inset: 0; width: 100%; height: 100%; display: block; object-fit: fill; }
.pg-sur { position: absolute; inset: 0; pointer-events: none; }
.pg-sur svg { display: block; width: 100%; height: 100%; }
.pg-vide { position: absolute; inset: 0; display: grid; place-items: center; margin: 0; color: #777; }
.pg-legende { position: absolute; left: calc(var(--mm) * 14); top: calc(var(--mm) * 14); max-width: calc(var(--mm) * 72); padding: calc(var(--mm) * 2) calc(var(--mm) * 2.5); border: calc(var(--mm) * 0.25) solid #111; background: rgba(255, 255, 255, 0.94); color: #111; font: calc(var(--mm) * 2.2) / 1.35 "Archivo Narrow", "Arial Narrow", sans-serif; pointer-events: none; }
.pg-legende[hidden] { display: none; }
.pg-legende b { display: block; margin-bottom: calc(var(--mm) * 1); font-size: calc(var(--mm) * 2.4); letter-spacing: 0.06em; text-transform: uppercase; }
.pg-legende i { display: inline-block; width: calc(var(--mm) * 4); height: calc(var(--mm) * 2.6); margin-right: calc(var(--mm) * 1.5); vertical-align: middle; border: calc(var(--mm) * 0.25) solid #333; }
.pg-leg-note { margin-top: calc(var(--mm) * 1); color: #444; }
.pg-nord { position: absolute; right: calc(var(--mm) * 14); top: calc(var(--mm) * 14); width: calc(var(--mm) * 11); pointer-events: none; }
.pg-barre { position: absolute; left: calc(var(--mm) * 14); bottom: calc(var(--mm) * 14); padding: calc(var(--mm) * 1.2) calc(var(--mm) * 2); background: rgba(255, 255, 255, 0.92); color: #111; font: 600 calc(var(--mm) * 2.2) "Archivo Narrow", "Arial Narrow", sans-serif; pointer-events: none; }
.pg-barre-lib { display: flex; justify-content: space-between; }
.pg-cartouche { position: absolute; right: calc(var(--mm) * 10); bottom: calc(var(--mm) * 10); width: calc(var(--mm) * 96); display: grid; grid-template-columns: calc(var(--mm) * 22) 1fr; background: #fff; color: #111; border-left: calc(var(--mm) * 0.5) solid #111; border-top: calc(var(--mm) * 0.5) solid #111; font-family: "Archivo Narrow", "Arial Narrow", sans-serif; pointer-events: none; }
.pg-c-logo { grid-row: span 3; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: calc(var(--mm) * 1.2); padding: calc(var(--mm) * 2); border-right: calc(var(--mm) * 0.25) solid #111; }
.pg-c-logo img { width: calc(var(--mm) * 11); height: calc(var(--mm) * 11); border-radius: calc(var(--mm) * 1); }
.pg-c-logo span { font-size: calc(var(--mm) * 2.6); font-weight: 700; letter-spacing: 0.06em; }
.pg-c-cell { min-width: 0; padding: calc(var(--mm) * 1.3) calc(var(--mm) * 2); border-bottom: calc(var(--mm) * 0.25) solid #111; }
.pg-c-lib { display: block; color: #555; font-size: calc(var(--mm) * 1.9); letter-spacing: 0.08em; text-transform: uppercase; }
.pg-c-val { display: block; overflow: hidden; font-size: calc(var(--mm) * 3); font-weight: 600; line-height: 1.15; white-space: nowrap; text-overflow: ellipsis; }
.pg-c-fin { font-weight: 500; }
.pg-c-titre .pg-c-val { font-size: calc(var(--mm) * 3.3); font-weight: 700; text-transform: uppercase; white-space: normal; }
.pg-c-fin { white-space: normal; }
.pg-c-grille { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr 1fr; border-top: calc(var(--mm) * 0.25) solid #111; }
.pg-c-grille > div { padding: calc(var(--mm) * 1.1) calc(var(--mm) * 2); border-right: calc(var(--mm) * 0.25) solid #111; }
.pg-c-grille > div:last-child { border-right: 0; }
.pg-c-grille .pg-c-val { font-size: calc(var(--mm) * 2.7); }
.pg-c-pied { grid-column: 1 / -1; padding: calc(var(--mm) * 0.9) calc(var(--mm) * 2); border-top: calc(var(--mm) * 0.25) solid #111; color: #444; font: calc(var(--mm) * 1.7) / 1.3 ui-monospace, "SF Mono", monospace; }
.pg.pg-export .pg-appli { opacity: 0.5; pointer-events: none; }
.pg-impression { display: none; }
@page pgA4P { size: 210mm 297mm; margin: 0; }
@page pgA4L { size: 297mm 210mm; margin: 0; }
@page pgA3P { size: 297mm 420mm; margin: 0; }
@page pgA3L { size: 420mm 297mm; margin: 0; }
@media print {
  body.pg-imprime > *:not(.pg-impression) { display: none !important; }
  body.pg-imprime { background: #fff !important; }
  body.pg-imprime .pg-impression { display: block !important; }
  .pg-page { box-shadow: none; break-after: page; page-break-after: always; }
  .pg-page:last-child { break-after: auto; page-break-after: auto; }
  .pg-page * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

/* ── Étude de division (src/division.js) ── */
body.pg-ouvert .rapport { z-index: 70; }
.dv-plateau { position: relative; min-width: 0; min-height: 420px; }
.dv-carte { position: absolute; inset: 0; }
.dv-dessin { position: absolute; z-index: 2; left: 12px; right: 12px; top: 12px; max-width: 420px; padding: 10px 12px; border-radius: var(--rayon-panneau); background: var(--panneau); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); box-shadow: var(--ombre-flottant); }
.dv-dessin[hidden] { display: none; }
.dv-dessin p { margin: 0 0 8px; font-size: var(--t-13); }
.dv-lot { display: flex; flex-direction: column; gap: 8px; padding: 10px; border-radius: var(--rayon-carte); background: var(--surface); box-shadow: inset 3px 0 0 var(--c), 0 0 0 1px var(--filet); }
.dv-lot-tete { display: flex; align-items: center; gap: 8px; }
.dv-lot-tete i { width: 12px; height: 12px; border-radius: var(--r-fin); background: var(--c); flex: none; }
.dv-nom { flex: 1; min-width: 0; height: 32px; padding: 0 8px; border: 0; border-radius: var(--r-bouton); background: var(--survol); color: var(--encre); font: inherit; font-size: var(--t-15); font-weight: 600; }
.dv-suppr { width: 30px; height: 30px; border: 0; border-radius: var(--r-bouton); background: none; color: var(--encre-3); cursor: pointer; }
.dv-lot .pg-ligne2 .bouton { height: var(--h-bouton); margin: 0; align-self: end; }
.dv-aire { margin: 0; align-self: center; font-weight: 600; font-variant-numeric: tabular-nums; }
.dv-unite { position: relative; display: block; }
.dv-unite input { width: 100%; padding-right: 30px; }
.dv-unite span { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); color: var(--encre-4); font-size: var(--t-13); }
.dv-etiquette { padding: 3px 7px; border-radius: var(--r-pastille); background: rgba(0, 0, 0, 0.72); color: #fff; font-size: var(--t-12); font-weight: 600; white-space: nowrap; pointer-events: none; }
.dv-statut { display: inline-block; padding: 1px 7px; border-radius: var(--r-rond); font-size: var(--t-11); font-weight: 600; white-space: nowrap; }
.dv-ok { background: rgba(46, 158, 110, 0.16); color: #2F9E6E; }
.dv-non { background: rgba(217, 83, 79, 0.16); color: #D9534F; }
.dv-voir { background: rgba(232, 163, 60, 0.18); color: #B7791F; }
.dv-regles td:last-child { font-size: var(--t-13); }
.dv-plan { max-height: 300px; }
@media (max-width: 899px) { .dv-plateau { order: 1; height: 55vh; } }

/* Fiche d'un plan d'assainissement, dans la légende */
.lg-doc { margin-top: 6px; padding: 8px 10px; border-radius: var(--r-moyen); background: var(--survol); font-size: var(--t-12); line-height: 1.4; }
.lg-doc p { margin: 0 0 4px; color: var(--encre-2); }
.lg-doc .lg-doc-titre { color: var(--encre); font-weight: 600; font-size: var(--t-13); }
.lg-doc .lg-classes { margin: 4px 0; }
.lg-doc-note { margin: 4px 0 0; color: var(--encre-3); font-size: var(--t-12); }
.lg-doc-lien { display: inline-block; margin-top: 6px; font-weight: 600; font-size: var(--t-13); }

/* ── Espace d'administration (/admin/) ── */
.page-admin { min-height: 100vh; background: var(--fond); color: var(--encre); }
.admin-haut { display: flex; align-items: center; gap: 10px; padding: calc(env(safe-area-inset-top) + 12px) 16px 12px; border-bottom: 1px solid var(--filet); font-weight: 600; }
.admin { max-width: 1100px; margin: 0 auto; padding: 20px 16px 60px; }
.admin-tete { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; margin-bottom: 14px; }
.admin-titre { margin: 0; font-size: 1.625rem; letter-spacing: -0.02em; }
.admin-periode { width: auto; margin: 0; grid-template-columns: repeat(3, auto); }
.admin-periode button { padding: 0 12px; }
.admin-tete .bouton { margin: 0; }
.admin-moi { display: flex; align-items: center; gap: 6px; margin-left: auto; color: var(--encre-3); font-size: var(--t-13); cursor: pointer; }
.admin-moi input { accent-color: var(--accent); }
.admin-connexion { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; max-width: 520px; }
.admin-connexion .pg-champ { flex: 1; min-width: 220px; }
.admin-connexion .bouton { height: var(--h-bouton); margin: 0; }
.bande-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 640px) { .bande-4 { grid-template-columns: repeat(2, 1fr); } }
.admin-bloc { margin-top: 18px; padding: 14px 16px; border-radius: var(--rayon-carte); background: var(--surface); box-shadow: 0 0 0 1px var(--filet); min-width: 0; }
.admin-bloc h2 { margin: 0 0 10px; font-size: var(--t-14); }
.admin-grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 0 16px; }
.admin-courbe { display: block; width: 100%; height: auto; }
.admin-rect { fill: var(--accent); }
.admin-axe { fill: var(--encre-3); font-size: var(--t-11); }
.admin-liste { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.admin-liste li { position: relative; display: flex; justify-content: space-between; gap: 10px; padding: 5px 8px; font-size: var(--t-13); font-variant-numeric: tabular-nums; }
.admin-barre { position: absolute; inset: 0 auto 0 0; width: var(--p); border-radius: var(--r-pastille); background: var(--actif); }
.admin-cle, .admin-val { position: relative; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-val { flex: none; font-weight: 600; }

/* Bandeau de consentement : léger, deux choix de même poids */
.consentement { position: fixed; inset: 0; z-index: 120; display: grid; place-items: center; padding: 16px; background: rgba(8, 9, 10, 0.55); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); color: var(--encre); font-size: var(--t-14); line-height: 1.5; }
.consentement-boite { position: relative; width: min(440px, 100%); padding: 22px 22px 18px; border-radius: var(--rayon-panneau); background: var(--surface-panneau, #fff); box-shadow: var(--ombre-flottant); } .consentement p { margin: 0; color: var(--encre-2); }
.consentement .consentement-titre { margin: 0 0 8px; padding-right: 150px; color: var(--encre); font-size: var(--t-17); font-weight: 600; letter-spacing: -0.01em; line-height: 1.3; }
.consentement-choix { display: grid; gap: 8px; margin-top: 18px; } .consentement-choix .bouton { height: 48px; margin: 0; font-size: var(--t-15); }
.consentement-sans { position: absolute; top: 16px; right: 16px; padding: 4px 2px; border: 0; background: none; color: var(--encre-2); font: inherit; font-size: var(--t-13); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; } .consentement-sans:hover { color: var(--encre); }
.consentement-logo { display: block; width: 36px; height: 36px; margin-bottom: 14px; border-radius: var(--r-bouton); }
.admin-grille-2 { grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); }
.admin-carte { height: 320px; border-radius: var(--r-moyen); overflow: hidden; }
.admin-bloc h2 .note { font-weight: 400; font-size: var(--t-12); margin-left: 6px; }
.consentement-page .bouton { display: inline-flex; margin: 6px 6px 0 0; }

/* ── Recherche foncière (src/foncier.js) ── */
.fc-plateau { display: grid; grid-template-rows: minmax(260px, 45%) 1fr; min-width: 0; min-height: 0; }
.fc-carte { position: relative; min-height: 260px; }
.fc-resultats { overflow-y: auto; padding: 12px 14px 40px; border-top: 1px solid var(--filet); }
.fc-seg-h { grid-auto-flow: column; }
/* Barre d'outils de la carte : fond et calques */
.fc-outils { position: absolute; z-index: 3; top: 10px; right: 10px; display: flex; gap: 6px; align-items: flex-start; }
.fc-seg { display: inline-flex; padding: 3px; gap: 2px; border-radius: var(--r-moyen); background: var(--panneau); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); box-shadow: var(--ombre-flottant); }
.fc-seg button { height: 28px; padding: 0 10px; border: 0; border-radius: var(--r-bouton); background: none; color: var(--encre-3); font: inherit; font-size: var(--t-13); font-weight: 600; cursor: pointer; }
.fc-seg button[aria-pressed="true"] { background: var(--actif); color: var(--encre); box-shadow: 0 0 0 1px var(--filet-2); }
.fc-legende { position: absolute; z-index: 2; left: 10px; bottom: 10px; display: flex; flex-direction: column; gap: 4px; padding: 7px 10px; border-radius: var(--r-moyen); background: var(--panneau); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); box-shadow: var(--ombre-flottant); font-size: var(--t-12); color: var(--encre-2); }
.fc-legende[hidden] { display: none; }
.fc-legende > span, .fc-leg-ligne { display: flex; flex-wrap: wrap; gap: 2px 0; }
.fc-leg-titre { display: block; width: 100%; margin-bottom: 2px; color: var(--encre); font-size: var(--t-12); font-weight: 600; }
.fc-info .maplibregl-popup-content { padding: 6px 9px; border-radius: var(--r-bouton); background: var(--surface-panneau); color: var(--encre); font-size: var(--t-12); box-shadow: 0 0 0 1px var(--filet-2), 0 8px 20px rgba(0, 0, 0, 0.35); }
.fc-info .maplibregl-popup-tip { display: none; }
.fc-item { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; width: 100%; padding: 7px 9px; border: 0; border-radius: var(--r-bouton); background: none; color: var(--encre); font: inherit; font-size: var(--t-13); text-align: left; cursor: pointer; }
.fc-item:hover { background: var(--actif); }
.fc-item small { color: var(--encre-3); font-size: var(--t-12); }
.fc-legende > span, .fc-legende span { display: inline-flex; align-items: center; gap: 5px; margin-right: 8px; }
.fc-legende i { width: 10px; height: 10px; border-radius: var(--r-fin); display: inline-block; }
.fc-legende i.rond { border-radius: 50%; border: 2px solid; background: #fff; }
.fc-legende i.rond.plein { border: 1px solid #fff; }
/* Menus déroulants à cases, façon Linear */
.fc-deroulant { position: relative; }
.fc-declencheur { display: inline-flex; align-items: center; gap: 7px; height: 34px; padding: 0 10px; border: 0; border-radius: var(--r-moyen); background: var(--panneau); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); box-shadow: var(--ombre-flottant); color: var(--encre); font: inherit; font-size: var(--t-13); font-weight: 600; cursor: pointer; }
.fc-declencheur svg { width: 12px; height: 12px; opacity: 0.6; }
.fc-declencheur b { min-width: 18px; height: 18px; padding: 0 5px; border-radius: var(--r-rond); background: var(--accent); color: var(--sur-accent); font-size: var(--t-11); line-height: 18px; text-align: center; }
.fc-declencheur b[hidden] { display: none; }
.fc-large { width: 100%; height: 40px; justify-content: flex-start; background: var(--survol); box-shadow: inset 0 0 0 1px var(--filet-2); backdrop-filter: none; font-weight: 500; }
.fc-large span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: left; color: var(--encre-2); }
.fc-menu { position: absolute; z-index: 20; top: calc(100% + 6px); left: 0; width: 100%; min-width: 240px; max-height: min(460px, 60vh); display: flex; flex-direction: column; border-radius: var(--r-carte); background: var(--surface-panneau); box-shadow: 0 0 0 1px var(--filet-2), 0 16px 40px rgba(0, 0, 0, 0.45); overflow: hidden; animation: surgir 0.14s ease-out; }
.fc-menu[hidden] { display: none; }
.fc-menu-droite { left: auto; right: 0; width: 240px; }
.fc-menu-cherche { padding: 8px; border-bottom: 1px solid var(--filet); }
.fc-menu-cherche input { width: 100%; height: var(--h-bouton); padding: 0 10px; border: 0; border-radius: var(--r-bouton); background: var(--champ, var(--survol)); color: var(--encre); font: inherit; font-size: var(--t-13); }
.fc-menu-cherche input:focus { outline: none; box-shadow: inset 0 0 0 1px var(--accent); }
.fc-menu-liste { overflow-y: auto; padding: 4px; }
.fc-groupe + .fc-groupe { margin-top: 4px; padding-top: 4px; border-top: 1px solid var(--filet); }
.fc-groupe-tete { display: flex; align-items: center; gap: 7px; padding: 6px 8px 4px; color: var(--encre-3); font-size: var(--t-12); font-weight: 600; }
.fc-groupe-tete i { width: 8px; height: 8px; border-radius: var(--r-fin); }
.fc-groupe-tete span { font-weight: 500; font-variant-numeric: tabular-nums; }
.fc-groupe-tete button { margin-left: auto; padding: 2px 6px; border: 0; border-radius: var(--r-pastille); background: none; color: var(--accent-fort); font: inherit; font-size: var(--t-12); cursor: pointer; }
.fc-groupe-tete button:hover { background: var(--actif); }
.fc-option { display: flex; align-items: center; gap: 9px; height: 32px; padding: 0 8px; border-radius: var(--r-bouton); font-size: var(--t-13); cursor: pointer; }
.fc-option:hover { background: var(--actif); }
.fc-option small { margin-left: auto; color: var(--encre-3); font-size: var(--t-12); font-variant-numeric: tabular-nums; }
.fc-option input, .fc-case input { position: absolute; opacity: 0; pointer-events: none; }
.fc-case-v { flex: none; width: 16px; height: 16px; border-radius: var(--r-pastille); box-shadow: inset 0 0 0 1.5px var(--filet-2); background: var(--survol); display: grid; place-items: center; transition: background 0.12s; }
.fc-option input:checked + .fc-case-v, .fc-case input:checked + .fc-case-v { background: var(--accent); box-shadow: none; }
.fc-option input:checked + .fc-case-v::after, .fc-case input:checked + .fc-case-v::after { content: ""; width: 8px; height: 5px; border-left: 2px solid var(--sur-accent, #fff); border-bottom: 2px solid var(--sur-accent, #fff); transform: translateY(-1px) rotate(-45deg); }
.fc-option input:focus-visible + .fc-case-v, .fc-case input:focus-visible + .fc-case-v { outline: 2px solid var(--accent); outline-offset: 2px; }
.fc-vide { margin: 10px; color: var(--encre-3); font-size: var(--t-13); }
.fc-case { position: relative; cursor: pointer; }
.fc-moy { display: block; margin-top: 4px; color: var(--encre-2); }
.fc-moy small { color: var(--encre-4); }
.fc-mesure { color: var(--accent-fort); }
.fc-case { display: flex; align-items: center; gap: 8px; font-size: var(--t-13); color: var(--encre-2); }
.fc-case input { accent-color: var(--accent); }
.fc-compte { margin: 0 0 8px; font-size: var(--t-13); color: var(--encre-2); }
@media (max-width: 899px) { .fc-plateau { order: 1; grid-template-rows: 300px auto; } .fc-resultats { overflow: visible; } }

/* ── Bilan promoteur (src/bilan.js) ── */
.bilan { display: flex; flex-direction: column; gap: 12px; }
.bl-programme { max-width: 280px; }
.bl-verdict { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; font-size: var(--t-13); }
.bl-verdict strong { font-size: var(--t-15); }
.bl-chiffres { margin: 4px 0; }
.bl-table th small { display: block; color: var(--encre-3); font-size: var(--t-11); font-weight: 400; white-space: normal; }
.bl-table th { white-space: normal; font-weight: 500; }
.bl-table .bl-fort th, .bl-table .bl-fort td { font-weight: 700; }
.bl-alertes { margin: 0; padding-left: 18px; color: var(--encre-2); font-size: var(--t-13); }
.bl-alertes:empty { display: none; }
.bl-grille { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 12px; padding-top: 8px; }
.bl-groupe { grid-column: 1 / -1; margin: 8px 0 0; color: var(--encre-3); font-size: var(--t-11); font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; }
.bl-champ { display: flex; flex-direction: column; gap: 3px; font-size: var(--t-12); color: var(--encre-2); }
.bl-saisie { position: relative; display: flex; align-items: center; }
.bl-saisie input { width: 100%; height: 32px; padding: 0 8px; border: 1px solid var(--filet); border-radius: var(--r-bouton); background: var(--surface); color: var(--encre); font: inherit; font-size: var(--t-13); font-variant-numeric: tabular-nums; }
.bl-saisie small { position: absolute; right: 8px; color: var(--encre-4); font-size: var(--t-11); pointer-events: none; }
@media (max-width: 420px) { .bl-grille { grid-template-columns: 1fr; } }

/* ── Comptes (src/compte.js) : fenêtre de connexion et menu du compte ── */
.commande-connecte { position: relative; color: var(--accent-fort); }
.commande-connecte::after { content: ""; position: absolute; top: 9px; right: 9px; width: 7px; height: 7px; border-radius: 50%; background: #2F9E6E; box-shadow: 0 0 0 2px var(--surface); }
.compte-fond { position: fixed; inset: 0; z-index: 90; display: grid; place-items: center; padding: 16px; background: rgba(8, 9, 10, 0.55); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); }
.compte-fenetre { position: relative; width: 100%; max-width: 380px; display: flex; flex-direction: column; gap: 12px; padding: 26px 22px 20px; border-radius: var(--r-panneau); background: var(--surface); color: var(--encre); box-shadow: 0 0 0 1px var(--filet), 0 24px 60px rgba(0, 0, 0, 0.35); }
.compte-fenetre h2 { margin: 0; font-size: var(--t-17); letter-spacing: -0.01em; text-wrap: balance; }
.compte-fenetre img { border-radius: var(--r-moyen); }
.compte-fenetre form { display: flex; flex-direction: column; gap: 8px; }
.compte-fenetre .bouton-primaire { justify-content: center; }
.compte-raison { margin: -4px 0 0; color: var(--encre-2); font-size: var(--t-14); line-height: 1.45; }
.compte-fermer { position: absolute; top: 10px; right: 10px; width: 28px; height: 28px; border: 0; border-radius: var(--r-bouton); background: none; color: var(--encre-3); cursor: pointer; }
.compte-fermer:hover { background: var(--survol); color: var(--encre); }
.compte-cgu { position: relative; display: flex; align-items: flex-start; gap: 9px; padding: 10px; border-radius: var(--r-moyen); background: var(--survol); font-size: var(--t-13); line-height: 1.4; color: var(--encre-2); cursor: pointer; }
.compte-cgu input { position: absolute; opacity: 0; pointer-events: none; }
.compte-cgu .fc-case-v { margin-top: 1px; background: var(--surface); }
.compte-cgu input:checked + .fc-case-v { background: var(--accent); box-shadow: none; }
.compte-cgu input:checked + .fc-case-v::after { content: ""; width: 8px; height: 5px; border-left: 2px solid var(--sur-accent, #fff); border-bottom: 2px solid var(--sur-accent, #fff); transform: translateY(-1px) rotate(-45deg); }
.compte-cgu input:focus-visible + .fc-case-v { outline: 2px solid var(--accent); outline-offset: 2px; }
.compte-alerte { box-shadow: inset 0 0 0 1.5px #C8423A; }
.compte-google { display: flex; align-items: center; justify-content: center; gap: 10px; height: 42px; border: 0; border-radius: var(--r-moyen); background: var(--surface); box-shadow: inset 0 0 0 1px var(--filet-2); color: var(--encre); font: inherit; font-size: var(--t-15); font-weight: 500; cursor: pointer; }
.compte-google:hover { background: var(--survol); }
.compte-ou { display: flex; align-items: center; gap: 10px; color: var(--encre-4); font-size: var(--t-12); }
.compte-ou::before, .compte-ou::after { content: ""; flex: 1; height: 1px; background: var(--filet); }
.compte-etat { margin: 0; min-height: 1em; font-size: var(--t-13); line-height: 1.45; color: var(--encre-2); }
.compte-etat:empty { display: none; }
.compte-note { margin: 0; font-size: var(--t-12); color: var(--encre-3); }
.compte-menu { position: fixed; z-index: 45; width: min(320px, calc(100vw - 24px)); max-height: calc(100vh - 120px); overflow-y: auto; padding: 6px; border-radius: var(--r-carte); background: var(--surface); color: var(--encre); box-shadow: 0 0 0 1px var(--filet), 0 16px 40px rgba(0, 0, 0, 0.3); }
.compte-qui { display: flex; flex-direction: column; margin: 6px 10px 8px; font-size: var(--t-14); }
.compte-qui small { color: var(--encre-3); font-size: var(--t-12); }
.compte-menu > button, .compte-historique button { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; width: 100%; padding: 8px 10px; border: 0; border-radius: var(--r-bouton); background: none; color: var(--encre); font: inherit; font-size: var(--t-13); text-align: left; cursor: pointer; }
.compte-menu > button:hover, .compte-historique button:hover { background: var(--survol); }
.compte-historique small { color: var(--encre-3); font-size: var(--t-12); font-variant-numeric: tabular-nums; }
.compte-historique .note { margin: 4px 10px 8px; font-size: var(--t-13); }
.compte-historique { padding-bottom: 6px; margin-bottom: 4px; border-bottom: 1px solid var(--filet); }
.compte-menu > .compte-danger { color: #C8423A; }
.compte-menu > .compte-foncier { margin-bottom: 4px; font-weight: 600; box-shadow: inset 0 0 0 1px var(--filet-2); }
.compte-regle { margin: 2px 10px 6px; color: var(--encre-3); font-size: var(--t-12); line-height: 1.4; }

/* Recherche foncière : les communes absentes et pourquoi */

/* Recherche foncière : le bâti existant en trois positions, et la phrase qui dit ce qu'elle retient */
.fc-seg-nu button { font-size: var(--t-13); }
.fc-aide { margin: 6px 0 0; color: var(--encre-3); font-size: var(--t-12); line-height: 1.4; }

/* ── Rapport de parcelle (26/09/2026) : sur le modèle du rapport de marché d'Auguste. En-tête
   91STUDIO et référence, chiffres clés en tuiles, une page par sujet, chacune avec son plan
   (les planches des pièces graphiques), tableaux sobres, sources en pied. ── */
.rp { --rp-encre: #1D1D1F; --rp-encre-2: #515154; --rp-encre-3: #86868B; --rp-filet: #E5E5E7; --rp-doux: #F5F5F7; --rp-accent: #1B3A5C;
  color: var(--rp-encre); font-family: -apple-system, "SF Pro Text", "Helvetica Neue", Arial, sans-serif; font-feature-settings: "tnum"; }
.rp code { font-family: "SF Mono", Menlo, monospace; font-size: 0.92em; }
.rp-section { padding-top: 6px; margin-bottom: 18px; }
.rp-h2 { margin: 3px 0 12px; padding-bottom: 8px; border-bottom: 1px solid var(--rp-filet); font-size: 1.25rem; font-weight: 600; letter-spacing: -0.015em; }
.rp-h3 { margin: 18px 0 8px; font-size: var(--t-13); font-weight: 600; }
.rp-note { margin: 8px 0 0; font-size: var(--t-12); color: var(--rp-encre-3); line-height: 1.5; }
.rp-texte { margin-top: 12px; font-size: var(--t-13); line-height: 1.55; color: var(--rp-encre-2); }
/* Les plans : image du fond, surcouche vectorielle, légende, nord et barre d'échelle */
.rp-plan { margin: 0; }
.rp-plan-cadre { position: relative; width: 100%; max-width: 100%; overflow: hidden; border-radius: var(--r-bouton); background: #F2F2F4; box-shadow: inset 0 0 0 1px var(--rp-filet); }
.rp-plan-cadre > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.rp-plan-cadre .pg-sur { position: absolute; inset: 0; }
.rp-plan-cadre .pg-sur svg { width: 100%; height: 100%; }
.rp-plan-attente { position: absolute; inset: 0; display: grid; place-items: center; margin: 0; font-size: var(--t-12); color: var(--rp-encre-3); }
.rp-nord { position: absolute; top: 10px; right: 12px; width: 18px; height: 24px; }
.rp-barre { position: absolute; left: 10px; bottom: 10px; padding: 4px 6px 2px; border-radius: var(--r-pastille); background: rgba(255,255,255,0.88); }
.rp-barre .pg-barre-lib { display: flex; justify-content: space-between; font-size: var(--t-11); color: #111; }
.rp-legende { position: absolute; right: 10px; bottom: 10px; max-width: 46%; padding: 7px 9px; border-radius: var(--r-pastille); background: rgba(255,255,255,0.92); font-size: var(--t-11); line-height: 1.45; color: #111; box-shadow: 0 0 0 1px rgba(0,0,0,0.08); }
.rp-legende b { display: block; margin-bottom: 2px; font-size: var(--t-11); }
.rp-legende i { display: inline-block; width: 10px; height: 10px; margin-right: 5px; vertical-align: -1px; border-radius: var(--r-fin); border: 1.5px solid transparent; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.rp-plan-pied { margin-top: 6px; font-size: var(--t-11); color: var(--rp-encre-2); }
.rp-plan-pied span { color: var(--rp-encre-3); }
/* Chiffres de base du PLU, risques, comparables */
/* (des filets propres à chaque case : une grille incomplète ne laisse pas de case grise vide) */
.rp-chiffres { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); margin-top: 14px; border-radius: var(--r-moyen); overflow: hidden; box-shadow: inset 0 0 0 1px var(--rp-filet); }
.rp-chiffres > div { padding: 9px 11px; background: #fff; box-shadow: inset -1px -1px 0 var(--rp-filet); }
.rp-chiffres dt { font-size: var(--t-11); font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--rp-encre-3); }
.rp-chiffres dd { margin: 3px 0 0; font-size: var(--t-14); font-weight: 600; }
.rp-risque { display: flex; gap: 10px; margin: 12px 0 0; font-size: var(--t-13); line-height: 1.5; color: var(--rp-encre-2); }
.rp-risque i { flex: none; width: 12px; height: 12px; margin-top: 3px; border-radius: var(--r-fin); -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.rp-risque strong { color: var(--rp-encre); }
.rp-estims { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 8px; margin-top: 14px; }
.rp-table { font-size: var(--t-12); }
.rp-num { display: inline-grid; place-items: center; min-width: 18px; height: 18px; padding: 0 4px; border-radius: var(--r-moyen); color: #fff; font-size: var(--t-11); font-weight: 700; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
@media (max-width: 640px) {
  .rp-legende { max-width: 58%; padding: 5px 7px; font-size: var(--t-11); }
  .rp-legende b { font-size: var(--t-11); }
}
@media print {
  .rp-plan-cadre > img, .rp-plan-cadre, .rp-cle { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .rp-section, .rp-plan, .rp-cles { break-inside: avoid; }
  .rp-h2 { break-after: avoid; }
}

/* Annexe « Synthèse du PLU » : une adresse longue passe à la ligne au lieu de mordre sur la case voisine */
.plu-fiche .bande-cellule { min-width: 0; }
.plu-fiche .bande-valeur { overflow-wrap: anywhere; }

/* ── Recherche foncière (26/09/2026) : communes à cases, zones par commune, tableau des résultats ── */
/* Le menu « Exporter » d'une ligne : en position fixe, calée par foncier.js sous son bouton,
   car le cadre du tableau défile et couperait un menu ouvert dans une cellule */
.fc-flottant { position: static; }
.fc-flottant .fc-menu { position: fixed; z-index: 70; top: auto; left: auto; width: 240px; }
/* Une zone présente dans plusieurs communes dit lesquelles, sur une seconde ligne grise */
.fc-option-z { height: auto; min-height: 32px; padding-top: 4px; padding-bottom: 4px; }
.fc-opt-txt { display: flex; flex-direction: column; min-width: 0; line-height: 1.25; }
.fc-opt-txt em { overflow: hidden; color: var(--encre-3); font-size: var(--t-12); font-style: normal; white-space: nowrap; text-overflow: ellipsis; }
.fc-option small { flex: none; white-space: nowrap; }
/* Une grille ne rétrécit pas sous la largeur de son contenu sans minmax(0) : sans lui, le
   tableau élargirait la page au lieu de défiler dans son cadre */
.fc-plateau { grid-template-columns: minmax(0, 1fr); }
.fc-resultats { min-width: 0; }
@media (min-width: 900px) {
  /* Au bureau, seul le cadre du tableau défile : les en-têtes restent collés en haut */
  .fc-resultats { display: flex; flex-direction: column; overflow: hidden; padding-bottom: 12px; }
  .fc-resultats > * { flex: none; }
  .fc-resultats > .fc-table-cadre { flex: 0 1 auto; min-height: 0; overflow: auto; }
}
.fc-table-cadre { max-width: 100%; overflow-x: auto; border: 1px solid var(--filet); border-radius: var(--rayon); background: var(--surface); -webkit-overflow-scrolling: touch; }
.fc-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--t-13); font-variant-numeric: tabular-nums; }
.fc-table th, .fc-table td { height: 36px; padding: 0 10px; border-bottom: 1px solid var(--filet); color: var(--encre-2); text-align: left; white-space: nowrap; }
.fc-table .num { text-align: right; }
.fc-table thead th { position: sticky; top: 0; z-index: 2; height: 32px; padding: 0; background: var(--surface); color: var(--encre-3); font-weight: 500; }
.fc-table thead button { display: flex; align-items: center; gap: 4px; width: 100%; height: 32px; padding: 0 10px; border: 0; background: none; color: inherit; font: inherit; font-size: var(--t-12); white-space: nowrap; cursor: pointer; }
.fc-table thead .num button { justify-content: flex-end; }
.fc-table thead button small { color: var(--encre-4); font-size: var(--t-11); }
.fc-table thead button i { width: 9px; color: var(--accent-fort); font-size: var(--t-11); font-style: normal; }
.fc-table thead button:hover, .fc-table thead th[aria-sort] { color: var(--encre); }
.fc-table tbody th { color: var(--encre); font-weight: 600; }
.fc-table tbody tr { cursor: pointer; }
.fc-table tbody tr:last-child > * { border-bottom: 0; }
/* Fonds opaques (dégradé sur la surface) : la première colonne est collante et le reste
   de la ligne passe dessous quand on défile */
.fc-table tbody tr:hover > * { background: linear-gradient(var(--survol), var(--survol)), var(--surface); }
.fc-table tbody tr.fc-choisie > * { background: linear-gradient(var(--actif), var(--actif)), var(--surface); }
.fc-table tbody tr.fc-choisie > :first-child { box-shadow: inset 3px 0 0 var(--accent-fort); }
.fc-table tbody tr:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.fc-table tr > :first-child { position: sticky; left: 0; z-index: 1; background: var(--surface); }
.fc-table thead tr > :first-child { z-index: 3; }
.fc-t-proprio span { display: block; max-width: 150px; overflow: hidden; text-overflow: ellipsis; }
.fc-t-gris { color: var(--encre-4) !important; }
.fc-t-rouge { color: #D9534F; font-weight: 600; }
.fc-pastille { display: inline-block; width: 7px; height: 7px; margin-right: 6px; border-radius: 50%; vertical-align: 1px; }
.fc-table .fc-t-actions { width: 1%; padding: 0 4px; text-align: right; }
.fc-icone { display: inline-grid; place-items: center; width: 28px; height: 28px; border: 0; border-radius: var(--r-bouton); background: none; color: var(--encre-3); cursor: pointer; }
.fc-icone:hover, .fc-icone[aria-expanded="true"] { background: var(--actif); color: var(--encre); }
.fc-icone svg { width: 15px; height: 15px; }
.fc-plus { position: sticky; left: 0; margin: 8px; }
.fc-plus small { color: var(--encre-3); font-weight: 400; }
.fc-cache { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
@media (max-width: 639px) {
  .fc-resultats { padding: 10px 10px 32px; }
  .fc-table th, .fc-table td { padding: 0 8px; }
  .fc-table thead button { padding: 0 8px; }
}

/* Recherche foncière : la raison d'une parcelle qui ne se construit pas (filtre décoché) */
.fc-t-exclu { display: inline-block; margin-left: 4px; padding: 0 5px; border-radius: var(--r-fin); background: #FDECEA; color: #A3261B; font-size: var(--t-11); font-weight: 500; white-space: nowrap; }

/* Synthèse du PLU : la remarque d'un secteur relu à la main */
.plu-remarque { margin: 6px 0 0; padding: 6px 8px; border-left: 2px solid var(--accent); background: var(--survol); border-radius: 0 6px 6px 0; font-size: var(--t-13); line-height: 1.45; color: var(--encre-2); }

/* Volet Règles : les chiffres de base du secteur, en grille compacte */
.chiffres-plu { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 1px; margin: 8px 0 10px; border-radius: var(--r-moyen); overflow: hidden; background: var(--filet); box-shadow: 0 0 0 1px var(--filet); }
.chiffres-plu > div { padding: 8px 10px; background: var(--surface); }
.chiffres-plu dt { color: var(--encre-3); font-size: var(--t-12); }
.chiffres-plu dd { margin: 2px 0 0; color: var(--encre); font-size: var(--t-14); font-weight: 600; font-variant-numeric: tabular-nums; }
.chiffre-relu { display: inline-block; margin-left: 4px; padding: 0 5px; border-radius: var(--r-fin); background: var(--survol); color: var(--encre-3); font-size: var(--t-11); font-weight: 500; }
/* Audit HIG du 02/10/2026 : un anneau de focus visible sur tout ce qui se prend au clavier, et des résumés à hauteur de toucher */
:where(a, button, summary, input, select, textarea, [tabindex]):focus-visible { outline: 2px solid var(--accent, currentColor); outline-offset: 2px; }
@media (pointer: coarse) { summary { min-height: 44px; display: flex; align-items: center; } }

/* Cibles au toucher sur les pages statiques (audit HIG du 02/10/2026) : 44 pt */
@media (pointer: coarse), (max-width: 899px) {
  .bouton, .ca-bouton, .mcp-copier, .marque, .marque-mini, header a.marque, select, input:not([type="checkbox"], [type="radio"], [type="range"]) { min-height: 44px; }
  .marque, .marque-mini { min-width: 44px; display: inline-flex; align-items: center; }
}

/* pages statiques : 28 pt à la souris (liens de navigation, pied de page, résumés), 44 pt au toucher */
.marque-mini, .liens a, .note-liens a, .pied a { display: inline-flex; align-items: center; min-height: 28px; }
.marque-mini { min-width: 28px; justify-content: center; }
.faq summary, .page-outil summary { display: flex; align-items: center; min-height: 28px; }
@media (pointer: coarse), (max-width: 899px) {
  .marque-mini, .liens a, .note-liens a, .pied a, .faq summary, .page-outil summary { min-height: 44px; }
  .marque-mini, .liens a { min-width: 44px; justify-content: center; }
}
