/* Propre à Bornag. Le reste (palette, typo, barre, profil) vient de /ancrag-ui/ancrag.css.
   Seuls ajouts : le QR est un SVG inline (Ancrag : une image PNG), et le panneau
   « Mot de passe » qui n'existe pas chez Ancrag. */
.qr svg{width:160px;height:160px;background:#fff;border-radius:var(--r-1);padding:6px;display:block}
.bornag-mdp{display:grid;gap:.55rem;max-width:360px}
.bornag-mdp .btn{justify-self:start}

/* ---- page carte : pleine largeur sous la barre d'Ancrag ---- */
body.page-carte{max-width:none;padding:4.5rem 0 0;margin:0;height:100dvh;display:flex;flex-direction:column;overflow:hidden}
.carte-outils{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.5rem .75rem;border-bottom:1px solid var(--border)}
.carte-outils select{max-width:13rem;min-width:0;flex:0 1 11rem}
.carte-outils .segchoix{flex:0 0 auto}
/* La carte et ce qui flotte dessus, dans une même boîte : les panneaux se placent par
   rapport à la carte, quelle que soit la hauteur de la barre d'outils (qui passe sur
   plusieurs lignes au téléphone). */
.carte-zone{position:relative;flex:1 1 auto;min-height:0;display:flex;isolation:isolate}
/* La barre (et la liste de la recherche) au-dessus de la carte : l'animation d'entrée
   d'Ancrag laisse un transform sur la barre, qui en fait un contexte d'empilement ;
   sans z-index, la carte et la ligne des puces, venues après, passaient par-dessus la
   liste (vu sur capture, 15/09/2026). */
.carte-outils{position:relative;z-index:1100}
/* Et pas d'animation d'apparition (body>*{animation:fadeUp both}) sur la page carte : un
   transform animé fait de la barre le bloc conteneur des éléments `fixed` — la recherche
   plein écran du téléphone se serait calée sur la barre au lieu de l'écran. */
body.page-carte>.carte-outils,body.page-carte>.carte-selection,body.page-carte>.carte-zone{animation:none}
.carte-selection{position:relative;z-index:1090}
#carte{flex:1 1 auto;min-height:0;background:var(--surface)}
.carte-info,.carte-legende,.carte-etat{position:absolute;z-index:1000;background:var(--card);color:var(--text);
  border:1px solid var(--border);border-radius:var(--r-2);box-shadow:0 8px 24px -12px rgba(0,0,0,.45);font-size:var(--fs-2)}
.carte-info{top:.6rem;right:.6rem;padding:.55rem .75rem;max-width:17rem}
/* Posée près de la zone touchée : `left`/`top` sont écrits par carte.js, `right` doit
   alors lâcher prise. */
.carte-info[style*="left"]{right:auto}
.carte-info .ci-nom{font-weight:600;color:var(--strong)}
.carte-info .ci-com,.carte-info .ci-n{color:var(--text-2);font-size:var(--fs-1)}
.carte-info .ci-prix{margin:.2rem 0;font-size:var(--fs-4)}
.carte-legende{bottom:1.6rem;right:.6rem;padding:.5rem .7rem;line-height:1.5}
.cl-titre{font-weight:600;margin-bottom:.2rem}
.cl-l{display:flex;align-items:center;gap:.45rem;white-space:nowrap}
.cl-c{display:inline-block;width:.85rem;height:.85rem;border-radius:3px}
.cl-p{color:var(--text-2);font-size:var(--fs-1);margin-top:.25rem}
.carte-etat{top:.6rem;left:50%;transform:translateX(-50%);padding:.35rem .7rem}
@media (max-width:600px){
  .carte-outils select{max-width:none}
  /* Fiche en bas, pleine largeur, au-dessus de la zone de sécurité et de l'attribution ;
     trop haute pour l'écran : elle défile au lieu d'être coupée. */
  .carte-info{position:fixed;top:auto!important;left:.5rem!important;right:.5rem!important;
    bottom:calc(.6rem + env(safe-area-inset-bottom));max-width:none;
    max-height:min(52dvh,calc(100dvh - 9rem));overflow-y:auto;overscroll-behavior:contain}
  /* Sur téléphone la légende ne doit pas masquer la carte : compacte, sans la période. */
  .carte-legende{bottom:auto;top:.5rem;right:.4rem;font-size:.66rem;padding:.3rem .45rem;line-height:1.35}
  .carte-legende .cl-titre{font-size:.66rem;margin-bottom:.1rem}
  .carte-legende .cl-c{width:.62rem;height:.62rem}
  .carte-legende .cl-p{display:none}
}

/* ---- points clés : une forme, une couleur, un pictogramme par catégorie ---- */
.c-points{display:inline-flex;align-items:center;gap:.4rem;margin:0}
.c-points svg{width:1rem;height:1rem}
.c-points.on{color:var(--blue-l);border-color:color-mix(in srgb,var(--blue-l) 45%,transparent)}
.carte-panneau{position:absolute;z-index:1001;top:.6rem;left:3.4rem;background:var(--card);color:var(--text);
  border:1px solid var(--border);border-radius:var(--r-2);box-shadow:0 8px 24px -12px rgba(0,0,0,.45);
  padding:.5rem .6rem;font-size:var(--fs-2);max-width:17rem}
.cp-l{display:flex;align-items:center;gap:.5rem;padding:.22rem 0;cursor:pointer}
.cp-l input{margin:0}
.cp-l .pt{width:20px;height:20px}
.cp-nom{flex:1}
.cp-n{color:var(--text-2);font-size:var(--fs-1);min-width:1.5rem;text-align:right}
.cp-aide{color:var(--text-2);font-size:var(--fs-1);margin:.35rem 0 0;line-height:1.35}
.pt-icone{background:none;border:0}
.pt{display:flex;align-items:center;justify-content:center;width:100%;height:100%;box-sizing:border-box;
  color:#fff;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.55);font:700 12px/1 Inter,system-ui,sans-serif}
.pt svg{width:62%;height:62%}
.pt b{font-size:.75em}
.pt-rond{border-radius:50%}
.pt-carre{border-radius:22%}
.pt-gare{background:#0d9488}          /* gare : au même rang visuel que le métro */
.pt-aeroport{background:#111827}
.pt-metro{background:#2563eb}
.pt-tram{background:#7c3aed}
.pt-projet{background:#fff;color:#2563eb;border:2px dashed #2563eb}
.pt-universite{background:#0e7490}
.pt-musee{background:#be185d}
.pt-monument{background:#7c2d12}
.carte-info .ci-cat{display:flex;align-items:center;gap:.4rem;color:var(--text-2);font-size:var(--fs-1);margin-bottom:.2rem}
.carte-info .ci-cat .pt{width:18px;height:18px}
@media (max-width:600px){
  .c-points span{display:none}
  .carte-panneau{top:10.8rem;left:.4rem;max-width:calc(100vw - 6rem)}
}

/* ---- affichage de la carte (15/09/2026) : accent du profil, contrôles au thème ---- */

.carte-info .ci-prix{font-weight:700;font-size:var(--fs-5)}
.carte-info .ci-vide{color:var(--text-2);font-style:italic;font-weight:400;font-size:var(--fs-3)}
.cl-gris{background:#8a8d98;opacity:.5}
.leaflet-container{background:var(--bg);font-family:'Inter',system-ui,sans-serif}
.leaflet-container:focus{outline:none}
.leaflet-bar{border:1px solid var(--border)!important;box-shadow:0 6px 18px -10px rgba(0,0,0,.5)!important}
.leaflet-bar a{background:var(--card);color:var(--text);border-bottom-color:var(--border)}
.leaflet-bar a:hover{background:var(--elev);color:var(--blue-l)}
.leaflet-control-attribution{background:color-mix(in srgb,var(--card) 82%,transparent)!important;color:var(--text-2)}
.leaflet-control-attribution a{color:var(--blue-l)}
.leaflet-tooltip{background:var(--card);color:var(--text);border:1px solid var(--border);box-shadow:0 6px 18px -10px rgba(0,0,0,.5);font-size:var(--fs-2)}
.leaflet-tooltip-top:before{border-top-color:var(--card)}

/* ---- fond Plan IGN sobre (thème sombre par défaut, clair si le profil le demande) ---- */
.fond-ign{filter:grayscale(1) invert(1) brightness(.78) contrast(.92)}
[data-theme=clair] .fond-ign{filter:grayscale(1) brightness(1.06) contrast(.88)}
/* Étiquettes au-dessus des aplats : seuls textes et traits passent (fusion). */
.leaflet-etiquettes-pane{mix-blend-mode:screen;opacity:.85}
.etiquettes-ign{filter:grayscale(1) invert(1) contrast(3.2) brightness(.62)}
[data-theme=clair] .leaflet-etiquettes-pane{mix-blend-mode:multiply;opacity:.8}
[data-theme=clair] .etiquettes-ign{filter:grayscale(1) contrast(3.2) brightness(1.45)}

/* ---- bouton « Points clés » : même famille que le sélecteur de type ---- */
.carte-outils .c-points{background:var(--surface);border:1px solid var(--border-l);color:var(--text-2);
  border-radius:var(--r-1);padding:.42rem .8rem;user-select:none;-webkit-user-select:none;margin:0}
.carte-outils .c-points:hover{color:var(--text);background:var(--elev)}
.carte-outils .c-points.on{color:var(--blue-l);background:var(--blue-bg);border-color:color-mix(in srgb,var(--blue-l) 40%,transparent)}

/* ---- tracés et rayons ---- */
.cp-titre{color:var(--text-2);font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.06em;margin:.45rem 0 .1rem}
.cp-trait{display:inline-block;width:20px;height:0;border-top:3px solid #2563eb}
.cp-lignes_projet{border-top:3px dashed #2563eb}
.rayon-etiquette{background:none;border:0}
.rayon-etiquette span{display:inline-block;padding:1px 6px;border-radius:99px;background:var(--card);color:var(--blue-l);
  border:1px solid var(--blue-l);font:600 11px/1.3 Inter,system-ui,sans-serif;white-space:nowrap}

/* ================= Biens, Score, Analyse (15/09/2026) ================= */
.biens-tete{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}
.biens-tete h1{margin:0;border:0}
.biens-actions{display:flex;gap:.5rem}
.biens-actions .btn svg{width:1rem;height:1rem}
.biens-filtres{margin:.8rem 0}
.biens-liste{display:grid;gap:.6rem}
.bien{position:relative;display:flex;flex-direction:column;overflow:hidden;isolation:isolate;background:var(--card);
  border:1px solid var(--border);border-radius:var(--r-2);padding:0;cursor:pointer;
  transition:border-color .15s,transform .15s,box-shadow .15s}
.bien:hover{border-color:var(--border-l)}
.bien-ecarte{opacity:.55}
.bien-score{flex:none;width:2.25rem;height:2.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:var(--fs-2);line-height:1;color:var(--blue-l);border:1.5px solid currentColor;
  background:color-mix(in srgb,currentColor 12%,transparent)}
/* La note se lit à la couleur : vert ≥ 70, orange ≥ 45, rouge en dessous. */
.bs-haut{color:var(--green-l)}
.bs-moyen{color:var(--orange)}
.bs-bas{color:var(--red-l)}
.bien-corps{flex:1;min-width:0;display:grid;gap:.3rem;align-content:start}
.bien-l1{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.bien-titre{color:var(--strong)}
.bien-l2{font-size:var(--fs-3)}
.bien-l3,.bien-l4,.bien-dist{font-size:var(--fs-2)}
.bien-badges{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.15rem}
.bien-actions{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.35rem}
.bien-actions .btn{padding:.3rem .65rem;font-size:var(--fs-2);margin:0}
.badge{display:inline-block;padding:.12rem .5rem;border-radius:var(--r-1);font-size:var(--fs-1);font-weight:600}
.badge-baisse{background:color-mix(in srgb,var(--green) 22%,transparent);color:var(--green-l)}
.badge-vieux{background:color-mix(in srgb,var(--orange) 20%,transparent);color:var(--orange)}
.badge-alerte{background:var(--blue-bg);color:var(--blue-l)}
.ecart{font-weight:700;background:color-mix(in srgb,currentColor 14%,transparent);
  border:1px solid color-mix(in srgb,currentColor 35%,transparent)}
.ec-tres-bas{color:#1a9850;border-color:#1a9850}
.ec-bas{color:#6abf45;border-color:#6abf45}
.ec-neutre{color:var(--text-2);border-color:var(--text-2)}
.ec-haut{color:#f59e0b;border-color:#f59e0b}
.ec-tres-haut{color:#d73027;border-color:#d73027}
.ec-inconnu{color:var(--text-2);border-color:var(--text-2)}
.positif{color:var(--green-l)}
.negatif{color:var(--red-l)}
.alerte{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.4rem 0;border-bottom:1px solid var(--border)}
.alerte>div:first-child{flex:1;min-width:10rem}
.alerte .btn{margin:0;padding:.3rem .6rem;font-size:var(--fs-2)}
.alerte-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.45rem;margin-top:.7rem}
.alerte-form .btn{margin:0}
.bien-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));gap:.55rem .7rem}
.bien-form label{display:grid;gap:.2rem;font-size:var(--fs-2);color:var(--text-2)}
.bien-form .bf-large{grid-column:1/-1}
.bien-form textarea{width:100%;font-family:inherit}
.score-profil{display:grid;gap:.25rem;font-size:var(--fs-2);color:var(--text-2);margin-bottom:.6rem}
.score-curseurs{display:grid;gap:.35rem;margin-bottom:.6rem}
.curseur{display:grid;grid-template-columns:1fr 8rem 1.6rem;align-items:center;gap:.5rem;font-size:var(--fs-2)}
.curseur input{accent-color:var(--blue-l);width:100%}
.curseur .c-val{text-align:right;color:var(--blue-l)}
.pjm .pjm-card{max-height:calc(100dvh - 2rem);overflow:auto}
/* biens sur la carte */
.bien-icone{background:none;border:0}
.bien-pastille{display:inline-block;transform:translate(-50%,-50%);white-space:nowrap;padding:2px 7px;border-radius:99px;
  background:#fff;border:2.5px solid;font:700 11px/1.3 Inter,system-ui,sans-serif;box-shadow:0 2px 6px rgba(0,0,0,.5)}
.carte-info .ci-cat .bien-pastille{transform:none}
.ci-liens{margin-top:.3rem;font-size:var(--fs-2)}
/* analyse */
.analyse{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:1rem;align-items:start}
.af-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.55rem .7rem}
.af-grille label{display:grid;gap:.2rem;font-size:var(--fs-2);color:var(--text-2)}
.af-large{grid-column:1/-1;margin:0}
.analyse-resultat{position:sticky;top:5rem}
.ar-principal{display:grid;gap:.1rem;margin-bottom:.6rem}
.ar-principal b{font-size:var(--fs-7)}
.ar-table{width:100%;border-collapse:collapse;font-size:var(--fs-2)}
.ar-table td{padding:.28rem 0;border-bottom:1px solid var(--border)}
.ar-table td:last-child{text-align:right;white-space:nowrap}
.ar-table tr.fort td{font-weight:600;color:var(--strong)}
.ar-enreg{margin-top:.8rem}
.analyse-ligne{display:flex;align-items:center;gap:.7rem;padding:.35rem 0;border-bottom:1px solid var(--border)}
.analyse-ligne a{flex:1;min-width:0}
@media (max-width:760px){.analyse{grid-template-columns:1fr}.analyse-resultat{position:static}}

/* ================= Mémoire ================= */
.mem-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.5rem .7rem}
.mem-form label{display:grid;gap:.2rem;font-size:var(--fs-2);color:var(--text-2)}
.mem-form .mf-large{grid-column:1/-1}
.mem-form textarea{width:100%;font-family:inherit}
.mem-ajout{margin-top:.8rem;padding-top:.8rem;border-top:1px solid var(--border)}
.mem-table-boite{overflow-x:auto}
.mem-table{width:100%;border-collapse:collapse;font-size:var(--fs-2)}
.mem-table th{text-align:left;color:var(--text-2);font-weight:500;padding:.3rem .4rem;border-bottom:1px solid var(--border);white-space:nowrap}
.mem-table td{padding:.35rem .4rem;border-bottom:1px solid var(--border);white-space:nowrap}
.mem-ops{display:grid;gap:.4rem;margin-bottom:.7rem}
.mem-op{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.5rem .6rem;border:1px solid var(--border);border-radius:var(--r-1);text-decoration:none;color:var(--text)}
.mem-op:hover{border-color:var(--blue-l)}
.mem-lecons,.mem-docs,.mem-histo{list-style:none;padding:0;margin:0 0 .7rem;display:grid;gap:.3rem}
.lecon-erreur span{color:var(--red-l)}
.lecon-bonne span{color:var(--green-l)}
#md-texte{white-space:pre-wrap;max-height:60vh;overflow:auto;font-size:var(--fs-2)}

/* ---- correctifs vus sur capture (15/09/2026) ---- */
.af-grille select,.mem-form select,.bien-form select,.alerte-form select,.af-grille input,.mem-form input,
.bien-form input,.alerte-form input{width:100%;min-width:0;box-sizing:border-box}
/* Aération : un seul rythme pour toutes les fenêtres et toutes les pages. */
.pjm-body{padding:1.25rem 1.35rem 1.45rem}
.pjm-head{padding:.8rem 1.15rem}
.geo-apercu{font-size:var(--fs-1);margin-top:.2rem;color:var(--text-2)}
.geo-apercu.geo-doute{color:var(--orange)}

/* ================= sélection partagée et recherche (15/09/2026) ================= */
/* champ de recherche de lieux */
.c-recherche{position:relative;flex:1 1 16rem;min-width:0;max-width:30rem}
.c-recherche input{width:100%;box-sizing:border-box;padding-left:2rem;margin:0}
.c-loupe{position:absolute;left:.6rem;top:50%;transform:translateY(-50%);width:1rem;height:1rem;color:var(--text-2);pointer-events:none}
.rl-liste{position:absolute;z-index:1200;top:calc(100% + 4px);left:0;right:0;min-width:min(22rem,calc(100vw - 1.5rem));
  margin:0;padding:.3rem;list-style:none;background:var(--card);color:var(--text);border:1px solid var(--border);
  border-radius:var(--r-2);box-shadow:0 14px 34px -14px rgba(0,0,0,.55);max-height:min(26rem,62vh);overflow:auto}
.rl-titre{padding:.45rem .55rem .2rem;font-size:var(--fs-1);color:var(--text-2);text-transform:uppercase;letter-spacing:.04em}
.rl-vide{padding:.6rem;color:var(--text-2);font-size:var(--fs-2)}
.rl-l{display:flex;align-items:center;gap:.55rem;padding:.5rem .6rem;border-radius:var(--r-1);cursor:pointer;min-height:2.3rem}
.rl-l:hover,.rl-l.on{background:var(--elev)}
.rl-l.on{box-shadow:inset 3px 0 0 var(--blue-l)}
.rl-ic{flex:0 0 1.2rem;text-align:center;font-size:.95em}
.rl-nom{flex:0 1 auto;max-width:68%;min-width:0;color:var(--strong);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rl-nom mark{background:none;color:var(--blue-l);font-weight:700}
.rl-num{display:inline-block;min-width:1.9rem;margin-right:.4rem;padding:0 .3rem;border-radius:4px;background:var(--elev);color:var(--text);font-weight:700;text-align:center}
.rl-ou{flex:1 1 0;min-width:0;font-size:var(--fs-1);color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rl-prix{flex:0 0 auto;font-size:var(--fs-2);color:var(--text);font-variant-numeric:tabular-nums}
.rl-choisi .rl-prix{color:var(--blue-l);font-weight:600}
/* puces de la sélection, sous la barre */
.carte-selection{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .6rem;padding:.35rem .75rem;border-bottom:1px solid var(--border);min-height:2.1rem}
/* Les puces participent DIRECTEMENT à la ligne (display:contents) : dans une boîte à
   elles, elles ne s'enroulaient pas avec le filtre du budget et la croix, qui débordaient
   au téléphone (vu sur capture, 16/09/2026). */
.c-puces{display:contents}
.c-puces:empty::before{content:"tout le département — ajoute des villes ou des quartiers par la recherche ou au clic";color:var(--text-2);font-size:var(--fs-1)}
.c-dep{display:inline-flex;align-items:center;gap:.35rem;flex:0 0 auto;padding:.2rem .55rem;
  border-radius:var(--r-1);border:1px solid var(--border-l);background:var(--card);
  font-size:var(--fs-2);font-weight:600;color:var(--text);white-space:nowrap}
.puce{display:inline-flex;align-items:center;gap:.35rem;margin:0;padding:.2rem .32rem .2rem .55rem;
  border-radius:var(--r-1);white-space:nowrap;flex:0 0 auto;
  background:var(--card);color:var(--text);border:1px solid var(--border-l);font-size:var(--fs-2);cursor:pointer}
.puce:hover{border-color:var(--strong)}
.puce-ico{width:.95rem;height:.95rem;flex:none;color:var(--muted)}
/* La croix d'une puce a sa classe : viser span:last-child mettait en rond le libellé des
   puces qui n'ont pas de croix (vu sur capture, 16/09/2026). */
.puce .puce-x{display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;border-radius:50%;font-size:.95em;opacity:.75}
.puce:hover .puce-x{background:color-mix(in srgb,var(--red) 25%,transparent);color:var(--red-l);opacity:1}
/* Le filtre du budget est une puce comme les autres : il suit les villes et quartiers,
   vert quand il agit, et porte alors sa croix (16/09/2026). */
.puce-budget{background:var(--card);color:var(--text-2);border-color:var(--border-l)}
.puce-budget[aria-pressed="true"]{color:var(--text);border-color:var(--strong)}
.puce-ville{font-weight:600}
/* « Effacer » agit sur les puces : juste après elles, une croix seule, rouge (la couleur
   de suppression d'Ancrag), et carrée — même hauteur que les autres boutons de la ligne. */
.c-effacer{display:inline-flex;align-items:center;justify-content:center;width:var(--h-mini);padding:0}
.c-effacer svg{width:.9rem;height:.9rem}
.c-effacer:hover{background:color-mix(in srgb,var(--red) 26%,var(--card));border-color:var(--red)}
.segchoix-mini .segopt{padding:.18rem .55rem;font-size:var(--fs-1)}
/* fiche du quartier : ajout à la sélection, raccourcis vers les autres pages */
.ci-choix,.ci-actions{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.45rem}
.ci-choix .btn,.ci-actions .btn{margin:0;padding:.25rem .55rem;font-size:var(--fs-1)}
.popup-bien .leaflet-popup-content{margin:.6rem .7rem}
.popup-bien .ci-actions{margin:0}
/* bandeau « ta sélection » des pages Biens, Analyse, Mémoire */
.bandeau-contexte{margin:.6rem 0 .2rem}
.bandeau-l{display:grid;gap:.5rem;padding:.7rem .85rem;border:1px solid var(--border);
  border-left:3px solid var(--blue-l);border-radius:var(--r-1);background:var(--card);font-size:var(--fs-2)}
.bc-tete{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .7rem}
.bc-tete b{color:var(--strong)}
.bc-med{color:var(--text-2)}
.bc-lien{margin-left:auto}
.bc-ligne{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .45rem}
.bc-k{flex:0 0 4.2rem;font-size:var(--fs-1);color:var(--text-2);text-transform:uppercase;letter-spacing:.04em}
.bc-puce{display:inline-flex;align-items:center;padding:.15rem .55rem;border-radius:var(--r-1);
  background:var(--elev);color:var(--text);border:1px solid var(--border);white-space:nowrap}
.bc-crit{background:var(--blue-bg);color:var(--blue-l);border-color:color-mix(in srgb,var(--blue-l) 30%,transparent)}
.bc-vide{background:none;border:0;color:var(--text-2);font-style:italic;padding-left:0}
.bc-large{white-space:normal}
@media (max-width:600px){.bc-k{flex-basis:100%}.bc-lien{margin-left:0}}
.biens-filtres{display:flex;flex-wrap:wrap;gap:.5rem}
.segopt .n{display:inline-block;min-width:1.2rem;margin-left:.2rem;padding:0 .3rem;border-radius:var(--r-1);background:var(--elev);font-size:var(--fs-1)}
@media (max-width:600px){
  .carte-outils{gap:.35rem;padding:.4rem .5rem}
  .carte-outils .segopt{padding:.3rem .55rem;font-size:var(--fs-2)}
  .c-points span{display:none}
  .c-points{padding:.4rem .55rem}
  .carte-selection{padding:.3rem .5rem;gap:.3rem .5rem}
  .c-puces.vide::before{content:none}
  .c-puces.vide{flex:0 0 0}
  .carte-zone .leaflet-control-attribution{font-size:.58rem;line-height:1.3;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .c-recherche{flex-basis:100%;max-width:none;order:-1}
  .c-criteres{max-width:10rem;flex:0 1 auto}
  .carte-outils select{flex:1 1 8rem;max-width:none}
  .c-mode>.tiny{display:none}
  .carte-panneau{left:.5rem;top:3.6rem}
}
.a-selection{grid-column:1/-1;display:flex;align-items:center;gap:.45rem;font-size:var(--fs-2);color:var(--text-2)}
.a-selection input{width:auto;margin:0}
.an-choix{display:flex;flex-wrap:wrap;align-items:end;gap:.5rem .8rem;margin:.4rem 0 .2rem}
.an-choix label{display:grid;gap:.2rem;font-size:var(--fs-2);color:var(--text-2);flex:1 1 18rem;max-width:32rem}
.an-choix select{width:100%;min-width:0}
.op-nouvelle .sel-bien{flex:1 1 14rem;min-width:0}
/* Leaflet ne lève la limite `svg{max-width:100%}` d'Ancrag que pour son plan standard :
   dans un plan ajouté (contour des communes choisies, tracés métro/tram), le SVG héritait
   de la largeur NULLE du plan — rien ne s'affichait (constaté sur capture, 15/09/2026). */
.leaflet-pane > svg{max-width:none!important;max-height:none!important}
/* bouton « OK » : seulement dans la recherche plein écran du téléphone */
.c-recherche .c-ok{display:none;margin:0;flex:0 0 auto}
/* Tablette et téléphone (doigt) : cibles de 48 px, police de 16 px (iOS ne zoome pas). */
@media (pointer:coarse){
  .c-recherche input{font-size:16px}
  .rl-l{min-height:3rem}
  .puce{padding:.3rem .35rem .3rem .7rem}
  .puce .puce-x{width:1.4rem;height:1.4rem}
  .segchoix-mini .segopt{padding:.32rem .6rem}
}
@media (min-width:761px) and (max-width:1100px){
  .c-recherche{flex:1 1 20rem}
  .rl-liste{min-width:26rem}
}
/* Téléphone : la recherche prend tout l'écran pendant qu'on choisit. */
@media (max-width:760px){
  body.recherche-ouverte .c-recherche{position:fixed;left:0;right:0;top:0;z-index:1300;display:flex;align-items:center;
    gap:.5rem;max-width:none;padding:.6rem .6rem .55rem;padding-top:calc(.6rem + env(safe-area-inset-top));
    background:var(--bg);border-bottom:1px solid var(--border)}
  body.recherche-ouverte .c-recherche input{flex:1 1 auto}
  body.recherche-ouverte .c-loupe{left:1.25rem}
  body.recherche-ouverte .c-recherche .c-ok{display:inline-flex}
  body.recherche-ouverte .rl-liste{position:fixed;top:calc(3.9rem + env(safe-area-inset-top));left:0;right:0;bottom:0;
    min-width:0;max-height:none;margin:0;border:0;border-radius:0;box-shadow:none;background:var(--bg);
    padding:.35rem .5rem calc(.8rem + env(safe-area-inset-bottom));overscroll-behavior:contain}
  body.recherche-ouverte .rl-titre{padding-top:.7rem}
}
.ci-fermer{float:right;margin:-.2rem -.3rem 0 .4rem;width:1.8rem;height:1.8rem;padding:0;border:0;border-radius:50%;
  background:var(--elev);color:var(--text-2);font-size:1.1rem;line-height:1;cursor:pointer}
.ci-fermer:hover{color:var(--strong)}
@media (pointer:coarse){.ci-fermer{width:2.2rem;height:2.2rem}.ci-choix .btn,.ci-actions .btn{padding:.45rem .7rem}}
/* flèche de tendance dans la fiche d'un quartier */
.ci-tend{display:inline-flex;align-items:center;gap:.25rem;margin-left:.55rem;padding:.1rem .45rem .1rem .3rem;border-radius:var(--r-1);
  font-size:var(--fs-1);font-weight:600;vertical-align:middle}
.ci-tend svg{width:1rem;height:1rem;flex:none}
/* Sens des prix, du point de vue de celui qui revend : un marché qui monte est une bonne
   nouvelle (vert), un marché qui baisse une mauvaise (rouge), un marché plat une vigilance
   (orange) — demande de l'utilisateur, 16/09/2026. */
.ci-tend-hausse{color:var(--green-l);background:color-mix(in srgb,var(--green-l) 14%,transparent)}
.ci-tend-baisse{color:var(--red-l);background:color-mix(in srgb,var(--red-l) 14%,transparent)}
.ci-tend-stable{color:var(--orange);background:color-mix(in srgb,var(--orange) 15%,transparent)}
.ci-tend-na{color:var(--text-2);font-weight:400;font-style:italic;margin-left:.5rem}
/* d'où vient un montant rempli d'office */
.auto-indice{font-size:var(--fs-1);color:var(--blue-l);line-height:1.3}
.auto-indice.auto-modifie{color:var(--text-2)}
.auto-indice.auto-manque{color:var(--orange)}
/* marché zone par zone : grille au bureau, carrousel au téléphone */
.mk-zones{display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:.55rem}
.mk-zone{display:grid;gap:.15rem;align-content:start;padding:.6rem .7rem;border:1px solid var(--border);border-radius:var(--r-1);background:var(--surface)}
.mkz-nom{font-weight:600;color:var(--strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mkz-med{font-size:var(--fs-5);font-weight:700;color:var(--strong)}
.mkz-sous{font-size:var(--fs-1);color:var(--text-2)}
.mk-zone .ci-tend{margin:0;justify-self:start}
@media (max-width:600px){
  .mk-zones{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:.5rem;margin:0 -.3rem;padding:0 .3rem .4rem;
    -webkit-overflow-scrolling:touch;scrollbar-width:thin}
  .mk-zone{flex:0 0 78%;scroll-snap-align:start}
  .mk-chiffres{grid-template-columns:1fr 1fr}
}
/* ================= pages harmonisées (16/09/2026) ================= */
/* même tête partout : titre à gauche, actions à droite, une seule action pleine */
.page-tete{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.2rem}
.page-tete h1{margin:0;border:0}
.page-actions{display:flex;gap:.4rem;flex-wrap:wrap}
.page-actions .btn{margin:0;display:inline-flex;align-items:center;gap:.4rem}
.page-actions .btn svg{width:1rem;height:1rem}
.page-actions .n:not(:empty){min-width:1.2rem;padding:0 .3rem;border-radius:var(--r-1);background:var(--elev);font-size:var(--fs-1)}
/* ruban de chiffres : l'essentiel sur une ligne, le détail replié */
.ruban{margin:.6rem 0 .3rem;padding:.6rem .75rem;border:1px solid var(--border);border-radius:var(--r-2);background:var(--card)}
.rb-l{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.4rem}
.rb-lieu{font-size:var(--fs-3)}
.rb-v{display:grid;gap:.05rem;font-size:var(--fs-3);color:var(--strong);white-space:nowrap}
.rb-k{font-size:var(--fs-1);color:var(--text-2);font-weight:400}
.rb-v b{font-size:var(--fs-5)}
.rb-v .ci-tend{margin:.1rem 0 0;justify-self:start}
.rb-btn{margin:0 0 0 auto}
/* replis : tout ce qui n'est pas essentiel */
.plus{margin:.1rem 0}
.plus>summary{cursor:pointer;color:var(--blue-l);font-size:var(--fs-2);padding:.3rem 0;list-style:none}
.plus>summary::-webkit-details-marker{display:none}
.plus>summary::before{content:"▸ ";display:inline-block;transition:transform .12s}
.plus[open]>summary::before{content:"▾ "}
.plus-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));gap:.55rem .7rem;padding:.4rem 0 .2rem}
.plus-grille .bf-large,.plus-grille .mf-large{grid-column:1/-1}
.pied{margin-top:1rem;display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline}
.lien-bouton{background:none;border:0;padding:0;color:var(--blue-l);text-decoration:underline;cursor:pointer;font:inherit;font-size:var(--fs-1)}
/* annonce reçue, posée dans la liste des biens */
.bien-annonce{border-style:dashed}
.bien-score-vide{color:var(--text-2);background:transparent}
.badge-portail{background:var(--elev);color:var(--text-2);border:1px solid var(--border-l)}
.biens-filtres{align-items:center}
#b-profil-pied{margin-left:auto}
@media (max-width:600px){
  /* Ruban au téléphone : deux colonnes, pas cinq lignes. */
  .rb-l{display:grid;grid-template-columns:1fr 1fr;gap:.5rem .8rem;align-items:start}
  .rb-lieu,.rb-btn{grid-column:1/-1}
  .rb-btn{margin:0;text-align:center}
  .rb-v b{font-size:var(--fs-4)}
  /* Tête au téléphone : le titre sur sa ligne, les actions en dessous, à égalité. */
  .page-tete{flex-direction:column;align-items:stretch;gap:.5rem}
  .page-tete h1{font-size:var(--fs-5)}
  .page-actions{justify-content:stretch}
  .page-actions .btn{flex:1 1 8rem;justify-content:center}
  .an-choisir{flex-direction:column;align-items:stretch;gap:.2rem}
  #b-profil-pied{margin-left:0}
}
.an-choisir{display:flex;align-items:center;gap:.4rem;font-size:var(--fs-2);color:var(--text-2)}
.an-choisir select{max-width:22rem;min-width:0;margin:0}
.analyse-form .plus>summary{padding:.5rem 0}
.analyse-resultat .plus{margin-top:.5rem}
@media (max-width:600px){.an-choisir{width:100%}.an-choisir select{flex:1}}
/* réglages discrets en pied de page, et action principale bien visible */
.reglages{display:flex;flex-wrap:wrap;gap:.2rem 1.1rem;margin-top:1rem}
.btn-large{padding:.55rem 1rem;font-size:var(--fs-3);width:100%;justify-content:center;text-align:center}
.ar-suite{margin-top:.9rem;display:grid;gap:.3rem}
.ar-suite .plus>summary{font-size:var(--fs-1)}
.bien-plus{display:grid;gap:.15rem;font-size:var(--fs-2);padding-top:.2rem}
.bien-liens{font-size:var(--fs-2)}
.bien .plus>summary{font-size:var(--fs-1);padding:.15rem 0}
.bien-badges{display:inline-flex;flex-wrap:wrap;gap:.25rem}
@media (max-width:600px){
  .ci-actions .btn-large{font-size:var(--fs-3)}
  .carte-selection{gap:.3rem .5rem}
}
/* l'assistant : ce que Bornag a trouvé pour toi */
.assistant{margin:.6rem 0 .1rem;padding:.5rem .7rem;border-radius:var(--r-1);background:var(--blue-bg);
  color:var(--text);font-size:var(--fs-2);border:1px solid color-mix(in srgb,var(--blue-l) 30%,transparent)}
.bien-pourquoi{color:var(--green-l);font-size:var(--fs-1);font-weight:600}
.bien-manques{color:var(--orange);font-size:var(--fs-1)}
.bien-proche .bien-manques{display:inline-flex;align-items:center;gap:.3rem;padding:.08rem .45rem;border-radius:var(--r-1);
  background:color-mix(in srgb,var(--orange) 14%,transparent);justify-self:start;width:fit-content}
/* ma recherche : bouton compact sur la carte, liste des recherches enregistrées */
/* La barre de la carte est au-dessus de la carte (z 1100) : les fenêtres doivent passer
   au-dessus d'elle, sinon la barre traverse la fenêtre (vu sur capture, 16/09/2026). */
body.page-carte .pjm{z-index:1400}
/* Les critères sont dans la barre du haut : ils commandent ce que la carte montre. */
.c-criteres{display:inline-flex;align-items:center;gap:.4rem;margin:0;max-width:14rem;overflow:hidden;white-space:nowrap}
.c-criteres svg{width:1rem;height:1rem;flex:none}
.c-criteres span{overflow:hidden;text-overflow:ellipsis}
.c-criteres-vide{opacity:.92}
/* Une seule hauteur pour tous les contrôles d'une même ligne (demande de l'utilisateur,
   16/09/2026 : « tous les boutons doivent avoir la même taille »). */
:root{--h-controle:2.5rem;--h-mini:1.85rem}
.carte-outils>*,.carte-outils .segchoix,.carte-outils input,.carte-outils select,.carte-outils .btn{
  min-height:var(--h-controle);box-sizing:border-box}
.carte-outils .btn:not(.c-ok),.carte-outils .segchoix{display:inline-flex;align-items:center}
.carte-selection .btn-mini,.carte-selection .puce{height:var(--h-mini);min-height:0}
.carte-outils .c-recherche input{height:var(--h-controle)}
@media (pointer:coarse){:root{--h-mini:2.1rem}}
.btn-mini{margin:0;padding:.22rem .6rem;font-size:var(--fs-1);display:inline-flex;align-items:center;justify-content:center}

/* fenêtres au téléphone : poignée et glissement vers le bas, pas de croix */
.pjm-poignee{display:none;flex:none;width:2.8rem;height:4px;padding:0;border:0;border-radius:2px;
  background:var(--border-l);margin:.55rem auto .1rem;cursor:pointer}
@media (max-width:760px){
  .pjm-poignee{display:block}
  .pjm .pjm-close{display:none}
  .pjm-card{transition:transform .18s ease-out;touch-action:pan-y}
  .pjm-head{padding-top:.5rem}
}
/* Type de bien : le mot au grand écran, l'icône seule au téléphone et à la tablette. */
.segchoix .segopt svg{width:1.15rem;height:1.15rem;display:none}
@media (max-width:1100px){
  .carte-outils .segchoix .segopt svg{display:block}
  .carte-outils .segchoix .segopt span{display:none}
  .carte-outils .segchoix .segopt{padding:.35rem .7rem}
}
/* Sélecteurs segmentés : l'option retenue prend la couleur du profil, au lieu du simple
   relief d'Ancrag (demande de l'utilisateur, 16/09/2026). */
.segchoix .segopt.on,.segchoix .segopt.on:hover{background:var(--blue);color:#fff;box-shadow:none}
[data-theme=clair] .segchoix .segopt.on{box-shadow:none}
.segchoix .segopt.on svg{color:#fff}
/* ---- aération des pages (16/09/2026, demande de l'utilisateur) ---- */
.biens-liste{gap:.85rem}
.bien{padding:.85rem .95rem;gap:.85rem}
.bien-corps{display:grid;gap:.3rem}
.bien-actions{margin-top:.45rem}
.biens-filtres{margin:1rem 0 .9rem;gap:.7rem}
.ruban{margin:.9rem 0 .5rem;padding:.85rem 1rem}
.rb-l{gap:.7rem 1.8rem}
.assistant{margin:.9rem 0 .2rem;padding:.7rem .9rem;line-height:1.5}
.zones{margin:.2rem 0 .8rem;line-height:1.7}
.bandeau-l{padding:.6rem .85rem;gap:.4rem .9rem}
.mem-ops{gap:.6rem}
.mem-op{padding:.7rem .85rem}
.mem-table th,.mem-table td{padding:.5rem .55rem}
.af-grille,.bien-form,.mem-form,.plus-grille{gap:.85rem .9rem}
.analyse{gap:1.4rem}
.an-choisir{margin:.2rem 0}
.reglages{margin-top:1.5rem;gap:.3rem 1.4rem}
.pied{margin-top:.9rem;line-height:1.6}
.ci-actions,.ci-choix{gap:.4rem;margin-top:.6rem}
.carte-info{padding:.7rem .85rem}
.carte-selection{padding:.45rem .75rem;gap:.45rem .7rem}
.carte-outils{padding:.6rem .75rem;gap:.6rem}
@media (max-width:600px){
  .bien{padding:.75rem .8rem;gap:.7rem}
  .biens-filtres{margin:.8rem 0 .7rem}
  .pjm-body{padding:1.1rem 1.1rem 1.3rem}
  .carte-outils{padding:.45rem .5rem;gap:.4rem}
}
/* ─── Le module unique de Biens : recherche, marché, courbe, zones, ventes ───────────
   Un seul bloc qui respire : chaque sous-partie est séparée par un filet et par de
   l'air, le même rythme que les panneaux d'Analyse et de Mémoire (16/09/2026). */
.ruban-marche{display:block;padding:1rem 1.1rem}
.ruban-marche > * + *{margin-top:.95rem;padding-top:.95rem;border-top:1px solid var(--border)}
.ruban-marche > .mk-crit + *,
.ruban-marche > .mk-detail{margin-top:.55rem;padding-top:0;border-top:0}
.ruban-marche .rb-l{flex-wrap:wrap;align-items:center;gap:.6rem 1.6rem}
/* Icônes au trait (aucune emoji dans la page) : même famille que la barre de la carte. */
.ico{width:1.05em;height:1.05em;flex:none;vertical-align:-.15em}
.ico-type{width:1.15em;height:1.15em;margin-right:.45rem;color:var(--blue-l)}
.ico-zone{width:1.1em;height:1.1em;margin-top:.12em;color:var(--muted)}
.ico-ok{width:1em;height:1em;margin-right:.35rem}
.assistant-ico{display:inline-flex;margin-right:.4rem;color:var(--blue-l)}
.mkz-nom{display:grid;grid-template-columns:auto 1fr;align-items:start;column-gap:.4rem;min-width:0;white-space:normal}
.mkz-txt{display:flex;flex-wrap:wrap;align-items:center;gap:.15rem .4rem;min-width:0}
.mkz-titre{font-weight:600;color:var(--strong);overflow-wrap:anywhere}
.bien-pourquoi{display:flex;align-items:center}
.mk-crit{display:flex;flex-wrap:wrap;gap:.4rem}
.mk-detail{color:var(--muted)}
.mk-sect{margin-bottom:.15rem}
.mk-source{margin:.1rem 0 .5rem}
.mk-sect h3{margin:0}

/* La courbe : tracée à la main, sans bibliothèque (CSP script-src 'self'). */
.mk-courbe{margin:0}
.mk-courbe figcaption{margin-bottom:.35rem}
.mk-courbe svg{width:100%;height:auto;display:block;overflow:visible}
.mkc-ligne{fill:none;stroke:var(--zc,var(--blue-l));stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}
.mkc-ref .mkc-ligne{stroke-width:2.6;stroke-dasharray:6 5}
.mkc-ref .mkc-pt{opacity:.75}
.mkz-ref{padding:.05rem .4rem;border:1px dashed currentColor;border-radius:var(--r-1);
  font-size:var(--fs-1);font-weight:500;color:var(--muted);flex:none}
.mkc-pt{fill:var(--zc,var(--blue-l))}
.mkc-aire{fill:color-mix(in srgb,var(--zc,var(--blue)) 14%,transparent)}
.mkc-an{fill:var(--muted);font-size:12px}
.mkc-ech{fill:var(--muted);font-size:11px}
.mkc-grille{stroke:var(--border);stroke-width:1;stroke-dasharray:2 4}

/* Une couleur par zone : la courbe et la carte de la zone la partagent ; cliquer la
   carte masque ou remet sa courbe. */
.zc0{--zc:#4a9dff}.zc1{--zc:#f0883e}.zc2{--zc:#57c48a}.zc3{--zc:#c77dff}
.zc4{--zc:#e5c54b}.zc5{--zc:#4fd1d9}.zc6{--zc:#f56a8c}.zc7{--zc:#9aa4b2}
.mk-zones{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.7rem}
.mk-zone{padding:.75rem .85rem;gap:.25rem}
.mk-zone[class*="zc"]{border-left:3px solid var(--zc)}
button.mk-zone{font:inherit;text-align:left;cursor:pointer;transition:opacity .15s,border-color .15s}
button.mk-zone:hover{border-color:var(--zc,var(--border))}
button.mk-zone:focus-visible{outline:2px solid var(--zc,var(--blue-l));outline-offset:2px}
.mkz-off{opacity:.42}
.mkz-off .mkz-med{color:var(--muted)}

/* Dernière case de la grille : retourner choisir une zone sur la carte. */
.mk-ajout{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.55rem;
  min-height:6.5rem;background:var(--bg);border:1px dashed var(--border);color:var(--muted);
  text-align:center;text-decoration:none;font-size:var(--fs-2);line-height:1.35;transition:color .15s,border-color .15s}
.mk-ajout:hover{color:var(--blue-l);border-color:var(--blue-l)}
.mka-rond{display:inline-flex;align-items:center;justify-content:center;width:2.1rem;height:2.1rem;
  border:1px solid currentColor;border-radius:50%}
.mka-rond .ico{width:1.2rem;height:1.2rem;stroke-width:2}

/* Rythme des pages : un peu plus d'air entre la tête, les modules et les listes. */
.page-tete{margin-bottom:.5rem}
.biens-liste{gap:.7rem}
.assistant{margin:1rem 0 .3rem}
.zones{margin:.2rem 0 .6rem}
.reglages{margin-top:1.6rem}
.pied{margin-top:.9rem}
@media (min-width:900px){
  .ruban-marche{padding:1.15rem 1.35rem}
  .ruban-marche > * + *{margin-top:1.15rem;padding-top:1.15rem}
  .mk-zones{gap:.85rem}
  .ruban-marche .mem-table th{padding-bottom:.45rem}
  .mk-zone{padding:.85rem .95rem}
  .biens-liste{gap:.9rem}
}
@media (max-width:600px){
  .ruban-marche{padding:.85rem .9rem}
  .ruban-marche > * + *{margin-top:.8rem;padding-top:.8rem}
  .ruban-marche .rb-l{gap:.5rem .9rem}
  .rb-btn{margin-left:0}
}
/* « Zones où ton budget passe » : la proposition de Bornag, mise en avant (16/09/2026). */
.propositions{margin:1.3rem 0 .4rem;padding:1.05rem 1.15rem 1.15rem;
  border:1px solid color-mix(in srgb,var(--green) 28%,transparent);
  border-radius:var(--r-2);background:color-mix(in srgb,var(--green) 6%,var(--card))}
.pz-tete{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem .9rem;font-size:var(--fs-3);color:var(--strong);
  cursor:pointer;list-style:none;user-select:none}
.pz-tete::-webkit-details-marker{display:none}
.pz-chevron{flex:none;width:.55rem;height:.55rem;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);
  transform:rotate(45deg);transition:transform .15s}
.propositions[open] .pz-chevron{transform:rotate(-135deg)}
.propositions[open] .pz-tete{margin-bottom:.9rem}
.pz-vide,.pz-grille{margin-top:.2rem}
.pz-ico{display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;flex:none;
  border-radius:var(--r-1);background:var(--green-bg);color:var(--green-l)}
.pz-ico .ico{width:1.15rem;height:1.15rem}
.pz-sous{font-size:var(--fs-2);color:var(--text-2);font-weight:400}
.pz-phare{font-size:var(--fs-2);color:var(--green-l);font-weight:600}
.pz-compte{margin-left:auto}
.pz-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.7rem}
.pz-carte{position:relative;display:grid;gap:.1rem;align-content:start;text-align:left;font:inherit;cursor:pointer;
  padding:.8rem .9rem 2.4rem;border:1px solid var(--border);border-radius:var(--r-1);background:var(--card);
  transition:border-color .15s,transform .15s,box-shadow .15s}
.pz-carte:hover{border-color:var(--green-l);box-shadow:0 10px 20px -18px rgba(0,0,0,.85)}
.pz-carte:focus-visible{outline:2px solid var(--green-l);outline-offset:2px}
.pz-carte[disabled]{opacity:.5;cursor:default}
.pz-nom{font-weight:600;color:var(--strong)}
.pz-lieu{font-size:var(--fs-1);color:var(--muted)}
.pz-med{font-size:var(--fs-5);font-weight:700;color:var(--green-l);margin-top:.35rem;line-height:1.15}
.pz-gain{font-size:var(--fs-2);color:var(--text)}
.pz-plus{position:absolute;left:.9rem;bottom:.75rem;display:inline-flex;align-items:center;gap:.3rem;
  padding:.16rem .5rem;border-radius:var(--r-1);font-size:var(--fs-1);font-weight:600;color:var(--green-l);
  background:color-mix(in srgb,var(--green) 14%,transparent)}
.pz-carte:hover .pz-plus{background:color-mix(in srgb,var(--green) 26%,transparent)}
.pz-plus .ico{width:.95rem;height:.95rem}
.pz-vide{margin:0 0 .7rem;font-size:var(--fs-2);color:var(--text-2);max-width:60ch}
.btn-green{background:var(--green-bg);color:var(--green-l);border-color:color-mix(in srgb,var(--green) 40%,transparent)}
.btn-green:hover{border-color:var(--green-l)}
@media (min-width:900px){.propositions{padding:1.1rem 1.25rem}.pz-grille{gap:.75rem}}
/* Les biens qui s'approchent des critères : proposés à part, sans couleur — un titre
   de section et une carte en retrait suffisent à les distinguer (16/09/2026). */
.bl-groupe{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:.8rem;
  margin:1.3rem 0 .2rem}
.bl-txt{min-width:0}
.bl-groupe .b-vue{flex:none;margin:0}
.bl-groupe:first-child{margin-top:.2rem}
.bl-sect{margin:0}
.bl-sous{margin:.15rem 0 0}
.bl-sect h3{margin:0}
.bien-proche{background:transparent;border-style:dashed}
.bien-proche .bien-titre{font-weight:600}
/* Où est le bien : la ville, et le quartier quand l'annonce le nomme (utile dans les
   grandes villes) — 16/09/2026. */
.bien-lieu{display:flex;align-items:center;gap:.35rem;font-size:var(--fs-2);color:var(--text-2);flex-wrap:wrap}
.ico-genre{width:1.25rem;height:1.25rem;color:var(--blue-l);stroke-width:1.7;margin-right:.1rem}
.bl-ville{color:var(--text);font-weight:600}
.bl-coin{padding:.02rem .4rem;border-radius:var(--r-1);background:var(--elev);border:1px solid var(--border-l)}
.bl-coin::before{content:"";}
.prop{margin:0 0 .6rem;padding:.3rem .55rem;border-radius:var(--r-1);color:var(--text-2);
  background:var(--elev);border:1px dashed var(--border-l);display:inline-block}
/* Ancien / neuf : deux cases cochées par défaut, rien n'est exclu tant qu'on n'y touche pas. */
.cases{border:1px solid var(--border-l);border-radius:var(--r-1);padding:.5rem .7rem .6rem;margin:0}
.cases legend{padding:0 .3rem;font-size:var(--fs-1);color:var(--muted)}
.cases .case,.bien-form .case{display:inline-flex;align-items:center;gap:.4rem;margin-right:1.2rem;
  font-size:var(--fs-2);color:var(--text);cursor:pointer;width:auto}
.case input{width:1rem;height:1rem;accent-color:var(--blue-l)}
.badge-neuf{background:color-mix(in srgb,var(--green) 16%,transparent);color:var(--green-l);
  border:1px solid color-mix(in srgb,var(--green) 34%,transparent)}
.prop-agir{color:var(--text);background:var(--blue-bg);border-color:color-mix(in srgb,var(--blue-l) 40%,transparent)}
/* ─── Fenêtre « Ma recherche » : un seul style de champ, des groupes qui respirent ───
   (demande de l'utilisateur, 16/09/2026 : harmoniser et aérer). */
.mr-intro{margin:0 0 .7rem;line-height:1.5}
.mr-form{display:grid;gap:1.1rem}
.mr-groupe{display:grid;gap:.65rem;padding:0}
.mr-groupe + .mr-groupe{padding-top:1rem;border-top:1px solid var(--border)}
.mr-titre{margin:0;font-size:var(--fs-2);font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em}
.mr-champs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(10.5rem,100%),1fr));gap:.7rem .8rem}
.mr-champ{display:grid;gap:.25rem;font-size:var(--fs-1);color:var(--text-2);position:relative}
.mr-champ input,.mr-champ select{width:100%;min-width:0;box-sizing:border-box;height:2.6rem;padding:0 .7rem;font-size:var(--fs-3);
  color:var(--strong);background:var(--card);border:1px solid var(--border-l);border-radius:var(--r-1)}
.mr-champ input:focus,.mr-champ select:focus{outline:none;border-color:var(--blue-l);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--blue-l) 18%,transparent)}
.mr-champ input::placeholder{color:var(--muted);font-size:var(--fs-2)}
.mr-unite{position:absolute;right:.7rem;bottom:.7rem;font-size:var(--fs-1);color:var(--muted);pointer-events:none}
/* --unite : la largeur mesurée de l'unité (api.js) ; + .7 rem de bord + .55 rem d'écart
   avec les flèches. 1,9 rem si le script n'a pas tourné. */
.mr-champ:has(.mr-unite) input{padding-right:calc(var(--unite, 1.9rem) + 1.25rem)}
/* Ancien / neuf : deux pastilles qu'on coche, au style des puces de la carte. */
.mr-bascules{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}
.mr-pastille{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .75rem;border-radius:var(--r-1);
  border:1px solid var(--border-l);background:var(--card);color:var(--text-2);font-size:var(--fs-2);cursor:pointer;
  transition:background .15s,border-color .15s,color .15s}
.mr-pastille input{width:1rem;height:1rem;margin:0;accent-color:var(--blue-l)}
.mr-pastille:has(input:checked){background:var(--blue-bg);border-color:color-mix(in srgb,var(--blue-l) 45%,transparent);color:var(--strong)}
.mr-aide{margin-left:.2rem}
.mr-pied{display:flex;flex-wrap:wrap;align-items:end;gap:.7rem}
.mr-nom{flex:1;min-width:14rem}
.mr-pied .btn-large{height:2.6rem}
@media (max-width:600px){
  .mr-groupe + .mr-groupe{padding-top:.85rem}
  .mr-champs{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mr-pied .btn-large{width:100%}
}
.mr-fac{font-style:normal;color:var(--muted)}
.mr-ou{font-size:var(--fs-2);font-weight:400;color:var(--muted);margin-left:.35rem}
/* Les recherches enregistrées, en tête de la fenêtre : une carte par recherche, on
   appuie dessus pour la reprendre (16/09/2026). */
.mr-titre-liste{margin:0 0 .45rem}
#r-sect{margin-bottom:.9rem}
.r-liste{display:grid;gap:.5rem}
.r-l{position:relative}
.r-prendre{width:100%;box-sizing:border-box;display:grid;gap:.2rem;text-align:left;font:inherit;cursor:pointer;
  padding:.6rem 2.6rem .65rem .8rem;border:1px solid var(--border-l);border-radius:var(--r-1);background:var(--card);
  transition:border-color .15s,background .15s}
.r-prendre:hover{border-color:var(--strong);background:var(--elev)}
.r-prendre:focus-visible{outline:2px solid var(--strong);outline-offset:2px}
.r-l .r-nom{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;font-weight:600;color:var(--strong)}
.r-en{background:var(--elev);color:var(--text-2);border:1px solid var(--border-l);font-weight:500}
.r-en-cours .r-prendre{border-color:var(--strong)}
/* La croix vit DANS la carte, en haut à droite. */
.r-l .btn-icone{position:absolute;top:.45rem;right:.45rem;width:1.6rem;height:1.6rem;padding:0;
  display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-1);
  color:var(--muted);background:transparent;border:1px solid transparent;font-size:var(--fs-1)}
.r-l .btn-icone:hover{color:var(--red-l);border-color:color-mix(in srgb,var(--red) 40%,transparent);
  background:color-mix(in srgb,var(--red) 12%,transparent)}
/* Fiche d'une zone : une ligne dit où elle en est dans le cycle des appuis. */
.ci-etat-zone{margin:.45rem 0 .1rem;font-size:var(--fs-1);color:var(--muted)}
.ci-etat-zone.ci-dedans{color:var(--green-l)}
.ci-etat-zone.ci-ecartee{color:var(--red-l)}
/* ─── Page Biens : des vignettes façon portail ───────────────────────────────────────
   Photo en grand sur toute la largeur, les chiffres dessous, et la fiche complète dans
   une fenêtre quand on appuie (17/09/2026). */
.biens-liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:1rem;align-items:start}
.bien:hover{border-color:var(--border-l);box-shadow:0 12px 24px -20px rgba(0,0,0,.95)}
.bien:focus-visible{outline:2px solid var(--blue-l);outline-offset:2px}
.bien-visuel{position:relative;width:100%;aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;
  background:var(--elev);border-bottom:1px solid var(--border);overflow:visible}
.bien-visuel img{width:100%;height:100%;object-fit:cover;display:block}
.ico-vide{width:2.6rem;height:2.6rem;color:var(--border-l)}
.bien-corps{padding:.85rem .95rem 1rem;display:grid;gap:.35rem;align-content:start}
.bien .bien-badges{position:absolute;top:10px;left:10px;display:flex;flex-wrap:wrap;gap:.3rem;max-width:calc(100% - 4.4rem)}
.bien .bien-score{position:absolute;top:10px;right:10px;background:var(--card);border-width:1px;
  box-shadow:0 0 0 1px color-mix(in srgb,#000 35%,transparent)}
.bien-titre{font-size:var(--fs-2);line-height:1.35;color:var(--strong);font-weight:600;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bien-chiffres{display:flex;align-items:baseline;flex-wrap:wrap;gap:.2rem .6rem;margin-top:.1rem}
.bien-prix{font-size:var(--fs-5);font-weight:700;color:var(--strong);line-height:1.2}
.bien-mesures{font-size:var(--fs-2);color:var(--text-2)}
.bien-l3{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem}
.bien-actions{margin-top:.5rem;gap:.5rem}
.bien-actions .btn{padding:.38rem .8rem;font-size:var(--fs-2)}
.bien .plus{margin-top:.1rem}
.bien .plus summary{font-size:var(--fs-1)}
@media (max-width:600px){
  .biens-liste{grid-template-columns:1fr;gap:.8rem}
  .bien-visuel{aspect-ratio:16/10}
}
/* La fenêtre d'une annonce : la photo en tête, les faits en deux colonnes. */
.pjm-annonce .pjm-card{max-width:40rem}
.an-visuel{position:relative;width:100%;aspect-ratio:16/9;display:flex;align-items:center;justify-content:center;
  background:var(--elev);border:1px solid var(--border);border-radius:var(--r-1);margin-bottom:1.4rem}
.an-visuel img{border-radius:var(--r-1)}
.an-visuel img{width:100%;height:100%;object-fit:cover}
.an-visuel .bien-score{position:absolute;top:12px;right:12px;background:var(--card);border-width:1px;
  box-shadow:0 0 0 1px color-mix(in srgb,#000 35%,transparent)}
.an-badges{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.45rem}
.an-titre{margin:0 0 .5rem;font-size:var(--fs-4);line-height:1.3}
.an-manques{margin:.5rem 0 0}
.an-faits{display:grid;grid-template-columns:auto 1fr;gap:.3rem .9rem;margin:.9rem 0 0;font-size:var(--fs-2)}
.an-faits dt{color:var(--muted)}
.an-faits dd{margin:0;color:var(--text)}
.an-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.1rem}
.an-actions .btn{margin:0}
.bien-gain{font-size:var(--fs-2);color:var(--text-2)}
.bien .plus summary{color:var(--text-2)}
/* Le module marché en accordéon : replié, il donne le cap (où, médiane, fil du prix,
   tendance, nombre de ventes) ; déplié, tout le détail (17/09/2026). */
.ruban-marche{padding:.85rem 1rem}
.mk-resume{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem .9rem;cursor:pointer;list-style:none;user-select:none}
.mk-resume::-webkit-details-marker{display:none}
.mk-ou{font-size:var(--fs-2);color:var(--text-2);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:14rem}
.mk-fil{width:5.25rem;height:1.4rem;flex:none}
.mk-fil polyline{fill:none;stroke:var(--blue-l);stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}
.mk-fil circle{fill:var(--blue-l)}
.mk-ventes{margin-left:auto}
.mk-peu{font-size:var(--fs-2);color:var(--orange)}
.mk-chevron{flex:none;width:.55rem;height:.55rem;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);
  transform:rotate(45deg);transition:transform .15s}
.ruban-marche[open] .mk-chevron{transform:rotate(-135deg)}
.ruban-marche[open] > * + *{margin-top:.95rem;padding-top:.95rem;border-top:1px solid var(--border)}
.rb-actions{gap:.7rem;align-items:center}
@media (max-width:600px){
  .mk-ventes{margin-left:0}
  .mk-ou{max-width:9rem}
}
/* Vue dense : une ligne par annonce, tout se balaye d'un coup d'œil (17/09/2026). */
.b-vue{margin-left:auto;gap:.35rem}
.biens-filtres{align-items:center;gap:.9rem}
.vue-dense{display:grid;grid-template-columns:1fr;gap:.4rem}
.vue-dense .bien{flex-direction:row;align-items:stretch}
.vue-dense .bien-visuel{width:5.5rem;aspect-ratio:auto;align-self:stretch;border-bottom:0;border-right:1px solid var(--border)}
.vue-dense .bien .bien-badges{position:static;max-width:none;align-self:center;flex:none;padding:0 .2rem}
.vue-dense .bien .bien-score{position:static;box-shadow:none;align-self:center;flex:none;margin:0 .6rem 0 .2rem;order:9}
.vue-dense .bien-corps{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .7rem;padding:.5rem .7rem}
.vue-dense .bien-titre{-webkit-line-clamp:1;flex:1 1 14rem;order:2}
.vue-dense .bien-chiffres{order:1;flex:0 0 auto;gap:.15rem .5rem}
.vue-dense .bien-prix{font-size:var(--fs-3)}
.vue-dense .bien-lieu{order:4;flex:0 0 auto}
.vue-dense .bien-l3{order:5;flex:1 0 100%}
.vue-dense .bien-manques{order:6;flex-basis:100%}
.vue-dense .ico-vide{width:1.6rem;height:1.6rem}
@media (max-width:600px){
  .vue-dense .bien-visuel{width:4.6rem}
  .vue-dense .bien-corps{padding:.5rem .6rem}
  .vue-dense .bien-titre{flex-basis:100%}
}
/* Les compteurs de la barre d'assistant : l'état de la recherche d'un regard. */
.as-compteurs{display:inline-flex;flex-wrap:wrap;gap:.4rem;margin-right:.5rem;vertical-align:middle}
.as-c{display:inline-flex;align-items:center;gap:.3rem;padding:.18rem .55rem;border-radius:var(--r-1);
  font-family:inherit;font-weight:600;font-size:var(--fs-1);line-height:1.4;   /* « font: … inherit » est invalide : le bouton retombait en Arial */
  background:var(--elev);color:var(--text-2);border:1px solid var(--border-l);
  cursor:pointer;transition:filter .15s,box-shadow .15s}
.as-c:hover{filter:brightness(1.25)}
.as-c[aria-pressed="true"]{box-shadow:inset 0 0 0 1px currentColor}
.as-on{filter:brightness(1.15)}
.as-c .ico{width:.9rem;height:.9rem}
.as-ok{background:var(--green-bg);color:var(--green-l);border-color:color-mix(in srgb,var(--green) 35%,transparent)}
.as-presque{background:color-mix(in srgb,var(--orange) 14%,transparent);color:var(--orange);
  border-color:color-mix(in srgb,var(--orange) 32%,transparent)}
.as-neuf{background:var(--blue-bg);color:var(--blue-l);border-color:color-mix(in srgb,var(--blue-l) 35%,transparent)}
.biens-liste > p{grid-column:1/-1}
.bien-annonce{grid-column:1/-1}
/* ─── L'état de la recherche, en cartes qui filtrent ─────────────────────────────── */
.b-stats{margin:1rem 0 .4rem}
.st-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.7rem}
.st-carte{display:grid;gap:.15rem;align-content:center;justify-items:start;text-align:left;font:inherit;
  cursor:pointer;min-height:5.4rem;padding:.85rem .95rem;border:1px solid var(--border);border-radius:var(--r-2);
  background:var(--card);color:var(--text-2);transition:border-color .12s,background .12s}
.st-carte:hover{border-color:currentColor;background:color-mix(in srgb,currentColor 8%,var(--card))}
.st-carte:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.st-n{font-size:var(--fs-6);font-weight:700;line-height:1.05;color:var(--strong)}
.st-l{font-size:var(--fs-2);font-weight:600;color:var(--text)}
.st-s{font-size:var(--fs-1);color:var(--muted)}
.st-ok{color:var(--green-l)}
.st-ok .st-n{color:var(--green-l)}
.st-presque{color:var(--orange)}
.st-presque .st-n{color:var(--orange)}
.st-neuf{color:var(--blue-l)}
.st-neuf .st-n{color:var(--blue-l)}
.st-on{background:color-mix(in srgb,currentColor 12%,var(--card));border-color:currentColor}
.st-invite{flex:1;margin:0;padding:.7rem .85rem;border-radius:var(--r-2);background:var(--blue-bg);
  border:1px solid color-mix(in srgb,var(--blue-l) 30%,transparent);font-size:var(--fs-2)}
.st-invite .ico{margin-right:.4rem;color:var(--blue-l);vertical-align:-.15em}
@media (max-width:600px){
  .st-grille{grid-template-columns:repeat(auto-fit,minmax(7.5rem,1fr));gap:.5rem}
  .st-carte{padding:.55rem .65rem}
}
.bl-vue-seule{justify-content:flex-end;margin:.2rem 0 .1rem}
/* L'étoile des favoris : posée sur la photo, elle ne déclenche pas l'ouverture. */
.bien-etoile{position:absolute;right:10px;bottom:-18px;z-index:2;display:inline-flex;align-items:center;
  justify-content:center;width:36px;height:36px;padding:0;border-radius:50%;
  border:1px solid var(--border-l);background:var(--card);color:var(--muted);cursor:pointer;
  transition:color .12s,border-color .12s,background .12s}
.bien-etoile:focus-visible{outline:2px solid var(--orange);outline-offset:2px}
.bien-etoile:hover{color:var(--orange);border-color:var(--orange)}
.bien-etoile .ico{width:1.1rem;height:1.1rem;fill:none}
.bien-etoile.on{color:var(--orange);border-color:color-mix(in srgb,var(--orange) 45%,transparent)}
.bien-etoile.on .ico{fill:currentColor}
.vue-dense .bien-etoile{position:static;width:1.9rem;height:1.9rem;box-shadow:none;background:transparent;
  border-color:transparent;align-self:center;flex:none;order:8}
.an-visuel .bien-etoile{right:14px;bottom:-20px;width:40px;height:40px}
.an-visuel .bien-etoile .ico{width:1.25rem;height:1.25rem}
.st-favori{color:var(--orange)}
.st-favori .st-n{color:var(--orange)}
/* Le contenu arrive en trois temps (marché, état, zones) : sans place reservée, la
   liste sautait à chaque arrivée. Les modules occupent leur hauteur repliée dès le
   premier rendu, en gris (17/09/2026). */
#b-marche:empty,#b-zones:empty,#b-assistant:empty{display:block;opacity:.45}
#b-marche:empty{min-height:75px;border:1px solid var(--border);border-radius:var(--r-2);background:var(--card)}
#b-zones:empty{min-height:68px;border:1px solid var(--border);border-radius:var(--r-2);background:var(--card)}
#b-assistant:empty{min-height:96px}
#b-assistant:empty::before{content:"";display:block;height:96px;border-radius:var(--r-2);
  background:linear-gradient(90deg,var(--card) 0 32%,transparent 32% 34%,var(--card) 34% 66%,transparent 66% 68%,var(--card) 68%)}
.biens-liste:empty{min-height:24rem}
@media (max-width:600px){
  .st-grille{grid-template-columns:repeat(auto-fit,minmax(4.4rem,1fr));gap:.4rem}
  .st-s{display:none}
  .st-carte{min-height:4.6rem;padding:.7rem .45rem;gap:.2rem;justify-items:center;text-align:center}
  .st-n{font-size:var(--fs-4);line-height:1.1}
  .st-l{font-size:var(--fs-1);line-height:1.2}
}
/* Un bouton plein bleu porte du texte BLANC, comme le segment sélectionné. La charte
   Ancrag y met une couleur sombre (--sur-accent) qui n'est lisible que sur ses fonds
   clairs (17/09/2026). */
.btn-blue,.btn-blue:hover,.btn-blue svg,.btn-green.btn-plein{color:#fff}
.btn-blue .ico{color:#fff}
/* ─── Analyse : simuler un investissement ────────────────────────────────────────── */
.si-usages{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.7rem;margin:.9rem 0 .2rem}
.si-usage{display:flex;align-items:center;text-align:left;font:inherit;cursor:pointer;min-height:3.4rem;
  padding:.85rem 1rem;border:1px solid var(--border);border-radius:var(--r-2);background:var(--card);
  color:var(--text-2);transition:border-color .12s,background .12s}
.si-usage b{color:var(--text);font-size:var(--fs-2);line-height:1.25}
.si-usage i{display:block;font-style:normal}
.si-usage:hover{border-color:var(--border-l)}
.si-usage.on{border-color:var(--blue-l);background:color-mix(in srgb,var(--blue-l) 10%,var(--card))}
.si-usage.on b{color:var(--blue-l)}
.si-cles{margin:.9rem 0 .2rem}
.si-form{display:grid;gap:1.1rem;margin:1.1rem 0}
.si-form .mr-groupe + .mr-groupe{padding-top:1rem;border-top:1px solid var(--border)}
.si-graphe{margin:1.1rem 0 .4rem;padding:.9rem 1rem;border:1px solid var(--border);border-radius:var(--r-2);background:var(--card)}
/* Dessiné à la largeur exacte du cadre (simulation.js, largeurGraphe) : échelle 1, le
   texte garde sa taille réelle quelle que soit la largeur. */
.si-graphe svg{width:100%;max-width:100%;height:auto;display:block;overflow:visible}
.si-legende{display:flex;flex-wrap:wrap;gap:.35rem .9rem;margin-bottom:.5rem;font-size:var(--fs-1);color:var(--text-2)}
.si-l{display:inline-flex;align-items:center;gap:.35rem}
.si-l::before{content:"";width:.85rem;height:2px;border-radius:2px;background:currentColor}
.si-l-valeur{color:var(--blue-l)}
.si-l-dette{color:var(--red-l)}
.si-l-patrimoine{color:var(--green-l)}
.si-l-tresorerie{color:var(--orange)}
.si-t{fill:none;stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}
.si-t-valeur{stroke:var(--blue-l)}
.si-t-dette{stroke:var(--red-l);stroke-dasharray:6 5}
.si-t-patrimoine{stroke:var(--green-l)}
.si-t-tresorerie{stroke:var(--orange)}
.si-zero{stroke:var(--border-l);stroke-width:1}
/* Le détail du calcul : une carte à onglets. En tête, un onglet par volet avec son
   chiffre clé ; dessous, le tableau de l'onglet choisi (19/09/2026). */
.si-detail{margin:.2rem 0 .6rem;border:1px solid var(--border);border-radius:var(--r-2);background:var(--card);overflow:hidden}
.si-onglets{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);border-bottom:1px solid var(--border)}
.si-onglet{display:grid;gap:.2rem;justify-items:start;min-width:0;margin:0;padding:.75rem .9rem .7rem;font:inherit;text-align:left;
  cursor:pointer;background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--text-2);
  touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:background .12s,border-color .12s}
.si-onglet + .si-onglet{box-shadow:inset 1px 0 0 var(--border)}
.si-onglet:hover{background:color-mix(in srgb,var(--text) 4%,transparent)}
.si-onglet > span{font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);white-space:nowrap}
.si-onglet > b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-5);font-weight:600;
  color:var(--text);font-variant-numeric:tabular-nums}
.si-onglet > b.negatif{color:var(--red-l)}
.si-onglet.on{border-bottom-color:var(--blue-l);background:color-mix(in srgb,var(--blue-l) 7%,transparent)}
.si-onglet.on > span{color:var(--blue-l)}
.si-panneau{padding:.35rem .9rem .5rem}
/* Les hypothèses : la même carte à onglets ; le résumé de chaque volet sur deux lignes au
   plus, plus discret que le chiffre clé du détail. */
.si-hyp-carte{border:1px solid var(--border);border-radius:var(--r-2);background:var(--card);overflow:hidden}
.si-hyp-carte .si-onglet > b{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;
  white-space:normal;font-size:var(--fs-2);font-weight:500;color:var(--text-2);line-height:1.35;min-height:2.7em}
.si-hyp-carte .si-onglet.on > b{color:var(--text)}
.si-hyp-carte .si-onglet[hidden]{display:none}
.si-hyp-panneau{padding:.9rem .9rem 1rem}
.si-hyp-panneau.cache{display:none}
/* Les champs d'un volet : deux colonnes dès le téléphone, sans la marge que la règle
   « label » d'ancrag.css ajoute au-dessus de chacun (la carte faisait 722 px sur mobile). */
.si-hyp-panneau .mr-champs{grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:.8rem .9rem}
.si-hyp-panneau .mr-champ{margin:0}
@media (max-width:600px){
  .si-hyp-panneau{padding:.8rem .75rem .9rem}
  .si-hyp-panneau .mr-champs{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem .6rem}
}
.si-hyp-pli{border-top:1px solid var(--border);padding:.55rem .9rem}
.si-hyp-pli > summary{cursor:pointer;list-style:none;font-size:var(--fs-1);color:var(--muted)}
.si-hyp-pli > summary::-webkit-details-marker{display:none}
.si-hyp-pli > summary::before{content:"";display:inline-block;width:.4rem;height:.4rem;margin:0 .5rem .12rem .1rem;
  border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .12s}
.si-hyp-pli[open] > summary::before{transform:rotate(45deg)}
.si-hyp-pli[open] > summary{margin-bottom:.5rem}
@media (max-width:600px){
  /* Sur téléphone, pas de barre qui défile de côté (« pas pratique », utilisateur,
     19/09/2026) : une grille de tuiles sur deux colonnes, tout est visible d'un coup. Les
     traits entre tuiles sont l'écart de 1 px de la grille sur un fond de bordure. La
     dernière tuile, seule sur sa ligne, prend la largeur (Échéancier ; Sortie quand
     Exploitation est masquée). L'onglet actif : fond teinté, titre bleu — le trait du bas
     d'une barre n'a plus de sens dans une grille. */
  .si-onglets{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-columns:auto;
    gap:1px;background:var(--border)}
  .si-onglet{padding:.65rem .75rem .6rem;margin-bottom:0;border-bottom:0;background:var(--card)}
  .si-onglet + .si-onglet{box-shadow:none}
  .si-onglet:last-child:nth-child(odd),.si-onglet[hidden] + .si-onglet:last-child{grid-column:1/-1}
  .si-onglet.on{background:color-mix(in srgb,var(--blue-l) 11%,var(--card));box-shadow:inset 3px 0 0 var(--blue-l)}
  .si-onglet > b{font-size:var(--fs-4)}
  .si-panneau,.si-hyp-pli{padding-left:.75rem;padding-right:.75rem}
}
.si-table{margin:0}
.si-table td{padding:.42rem 0;font-variant-numeric:tabular-nums}
.si-table tr:last-child td{border-bottom:0}
.si-table tr.fort td{padding-top:.55rem;border-top:1px solid var(--border-l);color:var(--text)}
.si-v{text-align:right;color:var(--text);white-space:nowrap}
.si-table td:first-child{color:var(--text-2)}
.si-table-defile{overflow-x:auto;margin:0 -.2rem}
.si-echeancier{min-width:19rem;font-variant-numeric:tabular-nums}
@media (max-width:600px){.si-echeancier{font-size:var(--fs-1)}}
.si-echeancier th{padding:.3rem 0 .45rem;font-size:var(--fs-1);font-weight:500;color:var(--muted);text-align:right;
  border-bottom:1px solid var(--border-l)}
.si-echeancier th:first-child,.si-echeancier td:first-child{text-align:left;color:var(--text-2)}
.si-echeancier td{padding:.36rem 0;text-align:right}
.si-hyp{margin:0;padding-left:1.1rem;font-size:var(--fs-2);color:var(--text-2);line-height:1.5}
.si-hyp li + li{margin-top:.3rem}
.si-pied{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem;margin:1.1rem 0 .4rem}
.si-pied .inline-form{flex:1;min-width:16rem}
.page-tete .si-etat{flex-basis:100%;margin:.15rem 0 0;color:var(--muted)}
/* Mémoire : les analyses enregistrées, une ligne chacune (nom, usage · gain · date, actions). */
.mem-analyses{display:grid;gap:.4rem;margin-bottom:.9rem}
.mem-analyse{display:flex;align-items:center;flex-wrap:wrap;gap:.2rem .7rem;padding:.55rem .75rem;
  border:1px solid var(--border);border-radius:var(--r-1);background:var(--card)}
.mem-an-nom{font-weight:600;color:var(--text);text-decoration:none;min-width:0;overflow-wrap:anywhere}
.mem-an-nom:hover{color:var(--blue-l)}
.mem-an-meta{flex:1 1 12rem;min-width:0}
.mem-an-actions{display:flex;align-items:center;gap:.3rem;margin-left:auto}
.mem-an-groupe{margin:.5rem 0 .1rem;font-size:var(--fs-2);color:var(--text-2)}
.mem-an-groupe b{margin-right:.4rem}
.mem-an-brouillon{border-style:dashed;background:color-mix(in srgb,var(--orange) 5%,var(--card))}
.mem-an-champ{flex:1 1 16rem;min-width:0;margin:0;padding:.35rem .55rem;font:inherit;color:var(--text);
  background:var(--bg,transparent);border:1px solid var(--blue-l);border-radius:var(--r-1)}
@media (max-width:600px){
  .si-usages{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
  .si-usage{padding:.75rem .8rem;min-height:3.6rem}
  .si-pied .btn{width:100%}
}
/* Analyse rangée en trois temps : le choix, le projet, le résultat. Sur grand écran, le
   résultat reste sous les yeux pendant qu'on règle le projet (17/09/2026). */
.si-h{margin:1.4rem 0 .6rem;font-size:var(--fs-2);font-weight:600;color:var(--text-2);
  text-transform:uppercase;letter-spacing:.05em}
.si-choix .si-h{margin-top:.8rem}
.si-resultat .si-cles{margin-top:0}
/* Les cartes de résultats : le titre, puis le chiffre avec sa flèche, puis le sens. La
   couleur suit le SIGNE (simulation.js, ton()) : vert positif, rouge négatif, orange qui
   stagne ; neutre pour les coûts. Limité à l'Analyse : .st-carte sert aussi à Biens. */
.si-cles .st-grille{gap:.7rem}
.si-carte-cle{--k:var(--border-l);gap:.3rem;align-content:start;padding:.85rem 1rem .9rem;border:1px solid var(--border);
  border-left:3px solid var(--k);border-radius:var(--r-2);background:color-mix(in srgb,var(--k) 6%,var(--card));
  color:var(--text);cursor:default}
.si-carte-cle:hover{border-color:var(--border);border-left-color:var(--k);background:color-mix(in srgb,var(--k) 6%,var(--card))}
.si-carte-cle .st-l{font-size:var(--fs-1);font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.si-carte-cle .st-n{display:inline-flex;align-items:baseline;gap:.4rem;font-size:var(--fs-7);font-weight:700;
  font-variant-numeric:tabular-nums;color:var(--k);white-space:nowrap}
.si-carte-cle .st-s{font-size:var(--fs-1);color:var(--muted);line-height:1.35}
.si-fleche{font-style:normal;font-size:.55em;line-height:1;transform:translateY(-.15em)}
.si-k-pos{--k:var(--green-l)}
.si-k-neg{--k:var(--red-l)}
.si-k-stag{--k:var(--orange)}
.si-k-neutre .st-n{color:var(--strong)}
.si-graphe .mkc-an,.si-graphe .mkc-ech{font-size:11px}
.si-graphe{padding:.8rem .9rem}
/* Analyse — le projet en accordéons : replié, chaque volet affiche ses valeurs,
   comme le ruban marché de la page Biens (17/09/2026). */
.pli{border:1px solid var(--border);border-radius:var(--r-2);background:var(--card);padding:.7rem .85rem}
.pli + .pli{margin-top:.6rem}
.pli > .mk-resume{gap:.5rem .7rem;flex-wrap:nowrap}
.pli > .mk-resume > b{font-size:var(--fs-2);text-transform:uppercase;letter-spacing:.04em;color:var(--text-2);flex:none}
.pli-r{font-size:var(--fs-2);color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pli > .mk-resume > .mk-chevron{margin-left:auto}
.pli[open] > .mk-resume{margin-bottom:.8rem;padding-bottom:.65rem;border-bottom:1px solid var(--border)}
.pli[open] .pli-r{display:none}
.si-form .mr-groupe + .mr-groupe{padding-top:0;border-top:0}
/* Le résultat d'abord (c'est la supervision), le formulaire ensuite : sur grand écran
   les champs s'étalent alors sur toute la largeur (17/09/2026). */
@media (min-width:900px){
  .si-form .mr-champs{grid-template-columns:repeat(auto-fit,minmax(min(11rem,100%),1fr))}
}
/* Deux lectures au lieu d'une : le patrimoine en haut, l'argent de l'année en bas.
   Sur une seule échelle, les quatre courbes paraissaient plates (17/09/2026). */
.si-lecture{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .6rem;font-size:var(--fs-2);
  color:var(--text-2);min-height:1.25em;margin-bottom:.5rem}
.si-lecture b{color:var(--text);font-weight:600}
.si-legende-2{margin-top:.7rem}
.si-aire{fill:var(--green-l);opacity:.13;stroke:none}
/* Graphique du haut : le gain si l'on revend chaque année — vert au-dessus de zéro, rouge
   en dessous ; repère pointillé à l'année où l'opération devient rentable (19/09/2026). */
.si-aire-plus{fill:var(--green-l);opacity:.16;stroke:none}
.si-aire-moins{fill:var(--red-l);opacity:.14;stroke:none}
.si-t-gain{stroke-width:2.4}
.si-t-gain-plus{stroke:var(--green-l)}
.si-t-gain-moins{stroke:var(--red-l)}
.si-seuil{stroke:var(--green-l);stroke-width:1;stroke-dasharray:3 3;opacity:.8}
.si-seuil-t{fill:var(--green-l)}
.si-l-gain{color:var(--text)}
/* Graphique du bas : revenus (vert) et dépenses (rouge) de chaque année. */
.si-b-rev{fill:var(--green-l);opacity:.75}
.si-b-dep{fill:var(--red-l);opacity:.6}
.si-l-rev{color:var(--green-l)}
.si-l-dep{color:var(--red-l)}
.si-lecture strong.positif{color:var(--green-l)}
.si-lecture strong.negatif{color:var(--red-l)}
.si-barre{stroke:none}
.si-b-plus{fill:var(--green-l);opacity:.75}
.si-b-moins{fill:var(--orange);opacity:.6}
.si-b-marge{fill:var(--blue-l);opacity:.85}
.si-l-plus{color:var(--green-l)}
.si-l-moins{color:var(--orange)}
.si-guide{stroke:var(--border-l);stroke-width:1;stroke-dasharray:3 3}
.si-bande{fill:transparent}
.si-val{font-size:10px;fill:var(--text-2)}
.si-graphe .si-val{font-size:11px}
.mr-aide{grid-column:1/-1;margin:.1rem 0 0;font-size:var(--fs-1);color:var(--muted)}
.si-ech-d{fill:var(--orange);opacity:.85}
/* Sur quoi porte l'analyse : un pli fermé qui dit la source en une ligne ; ouvert, les
   annonces en liste compacte, filtrable, qui défile dans son cadre. Un clic sur une ligne
   la choisit, la case l'ajoute à une moyenne (18-19/09/2026). */
.si-pli-source > .mk-resume{min-width:0}
.si-src-resume{display:flex;align-items:center;gap:.6rem;min-width:0;flex:1}
.si-src-quoi{flex:none;font-size:var(--fs-2);color:var(--text)}
.si-src-detail{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-2);color:var(--muted)}
.si-src-nb{flex:none;margin-left:auto;font-size:var(--fs-1);color:var(--blue-l)}
.si-src-retour{flex:none;margin-left:auto;font:inherit;font-size:var(--fs-1);padding:.2rem .6rem;cursor:pointer;
  border:1px solid var(--border);border-radius:999px;background:none;color:var(--text-2)}
.si-src-retour:hover{border-color:var(--blue-l);color:var(--blue-l)}
.si-pli-source[open] .si-src-nb{display:none}
.si-outils{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .7rem;margin:0 0 .4rem}
.si-outils[hidden]{display:none}
.si-outils input[type=search]{flex:1 1 14rem;min-width:0;margin:0;font:inherit;font-size:var(--fs-2);padding:.4rem .6rem;
  border:1px solid var(--border);border-radius:var(--r-1);background:var(--bg,transparent);color:var(--text)}
/* À droite du champ : Mes critères, les filtres, Plusieurs (utilisateur, 19/09/2026). */
.si-boutons{display:flex;align-items:center;gap:.35rem;flex:none}
.si-boutons .si-filtre,.si-plusieurs{white-space:nowrap}
.si-filtres{display:contents}
.si-btn-crit.on .si-ico-crit{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--blue-l) 10%,var(--card)),inset 0 0 0 5px var(--blue-l)}
.si-filtre{display:inline-flex;align-items:center;gap:.35rem;font:inherit;font-size:var(--fs-1);padding:.25rem .6rem;
  border:1px solid var(--border);border-radius:999px;background:none;color:var(--text-2);cursor:pointer}
.si-filtre.on{border-color:var(--blue-l);color:var(--blue-l);background:color-mix(in srgb,var(--blue-l) 10%,transparent)}
.si-filtre-n{color:var(--muted)}
.si-lignes{display:grid;align-content:start;gap:2px;max-height:20rem;overflow-y:auto;overscroll-behavior:contain;min-width:0}
/* Une ligne = un seul bouton, toute la largeur : rien de petit à viser au doigt. */
.si-ligne{display:grid;grid-template-columns:auto auto minmax(0,1.4fr) minmax(0,1fr);align-items:center;gap:.2rem .6rem;
  width:100%;min-width:0;margin:0;padding:.45rem .7rem;font:inherit;text-align:left;cursor:pointer;
  background:none;border:0;border-radius:var(--r-1);color:var(--text-2);
  touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:background .12s}
.si-ligne:hover{background:color-mix(in srgb,var(--text) 5%,transparent)}
.si-ligne:active{background:color-mix(in srgb,var(--text) 9%,transparent)}
.si-ligne.on{background:color-mix(in srgb,var(--blue-l) 13%,transparent)}
.si-ligne > b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-2);color:var(--text);font-weight:500}
.si-ligne.on > b{color:var(--blue-l)}
.si-ligne-d{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-1);color:var(--muted)}
/* La pastille du mode « Plusieurs » : un rond qui se remplit d'une coche, comme la
   sélection d'un téléphone. Hors de ce mode, elle ne prend aucune place. */
.si-marque{display:none;width:1.25rem;height:1.25rem;border-radius:50%;box-sizing:border-box;
  border:1.5px solid var(--muted);transition:background .12s,border-color .12s}
.multi .si-marque{display:block}
.multi .si-ligne.on .si-marque{border-color:var(--blue-l);background:var(--blue-l) no-repeat center/.8rem
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3 4.7-4.9' fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.si-lignes:not(.multi) .si-ligne{grid-template-columns:auto minmax(0,1.4fr) minmax(0,1fr)}
.si-lignes:not(.multi) .si-ligne > .si-pt{margin-right:.2rem}
.si-plusieurs{display:inline-flex;align-items:center;gap:.4rem;font:inherit;font-size:var(--fs-1);
  padding:.25rem .7rem;border:1px solid var(--border);border-radius:999px;background:none;color:var(--text-2);
  cursor:pointer;touch-action:manipulation}
.si-plusieurs svg{width:.9rem;height:.9rem;fill:none;stroke:currentColor;stroke-width:1.5}
.si-plusieurs.on{border-color:var(--blue-l);background:var(--blue-l);color:#fff}
.si-fini{margin-left:auto;font:inherit;font-size:var(--fs-1);font-weight:600;padding:.3rem .9rem;border:0;border-radius:999px;
  background:var(--blue-l);color:#fff;cursor:pointer;touch-action:manipulation}
.si-ico-crit{flex:none;width:.8rem;height:.8rem;border-radius:50%;box-sizing:border-box;border:2px solid var(--blue-l);
  box-shadow:inset 0 0 0 2px var(--card),inset 0 0 0 5px var(--blue-l)}
.si-pt{flex:none;width:.5rem;height:.5rem;border-radius:50%;background:var(--muted)}
.si-pt-conforme{background:var(--green-l)}
.si-pt-favori{background:var(--orange)}
/* Pas « .si-pied » : c'est la barre Enregistrer / Lancer l'opération, qui prenait ce style. */
.si-liste-pied{display:flex;align-items:center;gap:.6rem;min-height:1.9rem;margin:.45rem 0 0;font-size:var(--fs-1);color:var(--muted)}
@media (max-width:600px){
  .si-src-nb{display:none}
  .si-lignes .si-ligne,.si-lignes:not(.multi) .si-ligne{grid-template-columns:auto auto minmax(0,1fr);
    grid-template-areas:"m p t" "m . d";row-gap:.1rem;min-height:3.1rem;padding:.5rem .6rem}
  .si-lignes:not(.multi) .si-ligne{grid-template-columns:auto minmax(0,1fr);grid-template-areas:"p t" ". d"}
  .si-ligne > .si-marque{grid-area:m}
  .si-ligne > .si-pt{grid-area:p}
  .si-ligne > b{grid-area:t}
  .si-ligne > .si-ligne-d{grid-area:d}
  .si-marque{width:1.4rem;height:1.4rem}
  /* Sur téléphone, les quatre boutons (≈ 380 px) ne tiennent pas à droite du champ :
     « Plusieurs » y reste, Mes critères et les filtres passent sur la ligne dessous
     (≈ 310 px, tient dès 360 px d'écran). Le champ prend 60 % : ce qui suit « Plusieurs »
     ne tient plus sur sa ligne et passe à la suivante. */
  .si-outils{gap:.5rem .3rem}
  .si-boutons{display:contents}
  .si-outils input[type=search]{flex:1 1 60%;order:0}
  .si-plusieurs{order:1;flex:none}
  .si-boutons .si-btn-crit{order:2}
  .si-filtres .si-filtre{order:3}
  .si-boutons .si-filtre,.si-plusieurs{padding:.42rem .6rem;gap:.3rem}
  .si-boutons .si-filtre-n{display:none}   /* les nombres restent sur ordinateur */
  .si-lignes{max-height:55vh}
}
.si-finesse{display:flex;align-items:baseline;gap:.5rem;margin:0;font-size:var(--fs-2);color:var(--muted)}
.si-finesse b{padding:.15rem .5rem;border-radius:8px;font-weight:600;font-size:var(--fs-1);
  text-transform:uppercase;letter-spacing:.03em}
.si-f1 b{background:color-mix(in srgb,var(--orange) 18%,transparent);color:var(--orange)}
.si-f2 b{background:color-mix(in srgb,var(--blue-l) 18%,transparent);color:var(--blue-l)}
.si-f3 b{background:color-mix(in srgb,var(--green-l) 18%,transparent);color:var(--green-l)}
@media (max-width:600px){.si-finesse{flex-wrap:wrap}}
/* La page Analyse sur un téléphone : quatre chiffres clés sur deux lignes (ils sont
   longs et leur légende compte), accordéons et graphiques au large (17/09/2026). */
@media (max-width:600px){
  .si-cles .st-grille{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}
  .si-cles .st-s{display:block;font-size:var(--fs-1)}
  .si-cles .st-carte{min-height:5.2rem;padding:.7rem .75rem .75rem;justify-items:start;text-align:left}
  .si-cles .st-n{font-size:var(--fs-6)}
  .si-cles .st-l{font-size:var(--fs-1)}
  .si-graphe{padding:.7rem .5rem}
  .si-lecture{font-size:var(--fs-1)}
  .si-legende{gap:.25rem .7rem;font-size:var(--fs-1)}
  .pli{padding:.7rem .7rem}
  .pli > .mk-resume > b{font-size:var(--fs-1)}
  .pli-r{font-size:var(--fs-1)}
  .si-h{margin:1.1rem 0 .5rem}
  .page-tete .si-finesse{margin-top:.3rem}
}
.mr-champ{min-width:0}
/* Un élément de grille vaut par défaut au moins son contenu insécable (min-width:auto) :
   le résumé d'un accordéon, écrit sur une ligne, imposait donc sa largeur à toute la page
   et « Mon projet » sortait de l'écran sur mobile (17/09/2026). */
.si-form,.si-projet,.si-resultat,.si-resultat-detail,.si-fin,.si-source,.si-choix{min-width:0}
.si-form > *,.si-usages > *,.st-grille > *{min-width:0}
.pli,.si-usage{min-width:0;max-width:100%}
@media (max-width:420px){
  .mr-champs{grid-template-columns:1fr}
}
/* Les tableaux du détail tiennent dans un écran de 320 px : rien ne dépasse (l'échéancier,
   à quatre colonnes, défile de côté dans son cadre). */
.si-detail .si-table{table-layout:fixed;width:100%}
.si-detail .si-table td{overflow-wrap:anywhere;padding-right:.4rem}
.si-detail .si-table td:first-child{width:58%}
.si-detail .si-table td.si-v{padding-right:0;white-space:normal}
.si-etiq{fill:var(--text-2)}
.si-val-fort{fill:var(--blue-l);font-weight:600}

/* La liste se met à jour toute seule : une ligne discrète le dit, puis s'efface. */
.b-arrivee{margin:.6rem 0 0;padding:.5rem .8rem;border-radius:var(--r-2);font-size:var(--fs-2);
  background:color-mix(in srgb,var(--green-l) 13%,transparent);color:var(--green-l);
  border:1px solid color-mix(in srgb,var(--green-l) 30%,transparent)}
.rl-info{cursor:default;opacity:.7;font-size:var(--fs-1)}
.rl-info:hover{background:none}

/* ================= Mémoire : le dessin de l'Analyse (19/09/2026) =================
   Demande de l'utilisateur : la Mémoire « dans le même design et style que l'Analyse ».
   Mêmes composants : titres de section .si-h, cartes de chiffres .si-carte-cle (couleur
   selon le sens), cartes à onglets .si-hyp-carte (tuiles sur téléphone). Ici : les
   panneaux, les lignes de liste, les tableaux et formulaires qu'ils contiennent. */
.mem-carte{margin-bottom:.3rem}
/* Les onglets de la Mémoire portent un chiffre, pas un résumé : une ligne, comme ceux du
   détail du calcul (la hauteur de deux lignes des hypothèses les étirait). */
.mem-carte .si-onglet > b{display:block;min-height:0;-webkit-line-clamp:unset;line-clamp:unset;font-weight:600;color:var(--text)}
.mem-panneau{padding:.7rem .9rem .85rem}
.mem-panneau.cache{display:none}
.mem-titre{display:flex;align-items:baseline;justify-content:space-between;gap:.6rem}
.mem-titre .btn{flex:none}
.mem-sous{margin:-.25rem 0 .6rem}
.mem-pied{margin:0;padding:0 .9rem .75rem}
.mem-vide{margin:.25rem 0}
/* Une ligne de liste : point, titre, détail, actions — comme les annonces de l'Analyse. */
.mem-ligne{display:grid;grid-template-columns:auto minmax(0,1.3fr) minmax(0,1fr) auto;align-items:center;gap:.25rem .7rem;
  padding:.55rem .15rem;border-bottom:1px solid var(--border);min-width:0}
.mem-ligne:last-child{border-bottom:0}
.mem-ligne-titre{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:var(--text);text-decoration:none}
.mem-ligne-titre:hover{color:var(--blue-l)}
.mem-ligne-d{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}
.mem-ligne-actions{display:flex;align-items:center;justify-content:flex-end;gap:.3rem}
.mem-ligne .mem-an-champ{grid-column:2/4;margin:0}
.si-pt-negatif{background:var(--red-l)}
.si-pt-encours{background:var(--blue-l)}
.mem-statut{display:inline-flex;align-items:center;padding:.12rem .55rem;border-radius:999px;border:1px solid var(--border);
  color:var(--text-2);white-space:nowrap}
.mem-statut-en_cours{color:var(--blue-l);border-color:color-mix(in srgb,var(--blue-l) 45%,transparent)}
.mem-statut-termine{color:var(--green-l);border-color:color-mix(in srgb,var(--green-l) 45%,transparent)}
.mem-statut-abandonne{color:var(--red-l);border-color:color-mix(in srgb,var(--red-l) 45%,transparent)}
/* Tableaux et formulaires des panneaux : les tableaux du détail du calcul. */
.mem-carte .mem-table th{padding:.3rem .5rem .45rem 0;color:var(--muted);font-weight:500;border-bottom:1px solid var(--border-l)}
.mem-carte .mem-table td{padding:.45rem .5rem .45rem 0;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums}
.mem-carte .mem-table tr:last-child td{border-bottom:0}
.mem-carte .mem-form label{margin:0}
.mem-carte .mem-ajout{margin-top:.9rem;padding-top:.9rem}
.mem-actions{display:flex;align-items:center;gap:.7rem}
.mem-carte .mem-lecons,.mem-carte .mem-docs,.mem-carte .mem-histo{gap:0;margin:0}
.mem-carte .mem-lecons li,.mem-carte .mem-docs li,.mem-carte .mem-histo li{display:flex;align-items:center;gap:.6rem;
  padding:.5rem 0;border-bottom:1px solid var(--border)}
.mem-carte .mem-lecons li > span,.mem-carte .mem-docs li > a{flex:1;min-width:0;overflow-wrap:anywhere}
.mem-carte .mem-lecons li:last-child,.mem-carte .mem-docs li:last-child,.mem-carte .mem-histo li:last-child{border-bottom:0}
.lecon-erreur > span{color:var(--text)}
.lecon-erreur > span::first-letter{color:var(--red-l)}
.lecon-bonne > span::first-letter{color:var(--green-l)}
.page-tete .page-actions{display:flex;gap:.4rem}
@media (max-width:600px){
  /* Sur téléphone : titre et détail l'un sous l'autre, actions dessous, rien de coupé. */
  .mem-ligne{grid-template-columns:auto minmax(0,1fr);grid-template-areas:"p t" ". d" ". a";row-gap:.2rem}
  .mem-ligne > .si-pt{grid-area:p}
  .mem-ligne > .mem-ligne-titre,.mem-ligne > .mem-an-champ{grid-area:t;white-space:normal}
  .mem-ligne > .mem-ligne-d{grid-area:d;white-space:normal}
  .mem-ligne > .mem-ligne-actions{grid-area:a;justify-content:flex-start;flex-wrap:wrap}
  .mem-panneau{padding:.65rem .75rem .8rem}
  .mem-pied{padding:0 .75rem .7rem}
}

/* ================= Typographie unique (19/09/2026) =================
   Demande de l'utilisateur : la même police et les mêmes tailles partout — pages et
   fenêtres. Une police, Inter ; six tailles, chacune avec un rôle :
     12 px  --fs-1  secondaire : dates, badges, légendes, graduations, carte
     13 px  --fs-2  courant : libellés, navigation, puces et filtres, tableaux, titres de section
     14 px  --fs-3  contrôles : boutons, champs, titres de fenêtre
     15 px  --fs-4  titre d'un élément : annonce, analyse, opération
     17 px  --fs-5  titre de page, chiffres clés
     24 px  --fs-7  grands chiffres (21 px sur téléphone)
   Audit avant : Arial, Lucida Console, JetBrains Mono ; 9, 11, 12, 12,3, 13,2, 13,3, 16,
   17,6, 21, 22 px en plus. Ce bloc vient en DERNIER : il l'emporte sur les règles d'avant.
   Seuls restent hors échelle les pictogrammes (lettres des points de la carte, flèches). */
button,input,select,textarea,optgroup,.leaflet-container,.leaflet-bar a,svg text{font-family:inherit}
input[name=code]{font-family:inherit;letter-spacing:.2em;font-variant-numeric:tabular-nums}
/* Export Markdown, clé de double authentification : en Inter aussi (JetBrains Mono avant). */
pre.kv,.kv{font-family:inherit;font-variant-numeric:tabular-nums}
pre.kv{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55}
.mr-champ .mr-unite{font-size:var(--fs-1)}

.tiny,.badge,.rb-k,.mk-ventes,.ci-tend,figcaption,
.mkc-an,.mkc-ech,.si-val,.si-graphe .mkc-an,.si-graphe .mkc-ech,.si-graphe .si-val,.si-graphe .si-etiq,
.bien-pastille,.rayon-etiquette span,.leaflet-control-attribution,.carte-zone .leaflet-control-attribution,
.carte-legende,.carte-legende .cl-titre,.st-s,.si-carte-cle .st-s,.si-carte-cle .st-l,
.si-onglet > span,.si-liste-pied,.si-ligne-d,.si-filtre-n,.mem-an-meta,.mem-ligne-d,.mem-statut{font-size:var(--fs-1)}

body,.pdesc,.segopt,.as-c,.puce,.c-points,.mr-champ,.cp-nom,pre.kv,.kv,.si-filtre,.si-plusieurs,.btn-mini,.si-fini,.si-src-retour,.si-src-nb,
.si-h,.sect h3,.mem-an-groupe,.ar-table,.si-table,.si-echeancier,.si-hyp,.mem-table,
.leaflet-tooltip,.si-legende,.si-lecture,.mem-ligne-titre,.mem-carte .mem-lecons,.mem-carte .mem-docs,.mem-carte .mem-histo,.si-hyp-carte .si-onglet > b,.si-ligne > b,.si-src-quoi,.si-src-detail{font-size:var(--fs-2)}
.si-h,.sect h3{font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-2)}

.btn,.pjm-title,input,select,textarea,.mr-champ input,.mr-champ select,.si-outils input[type=search]{font-size:var(--fs-3)}
.btn.btn-mini{font-size:var(--fs-2)}

h3,.an-titre,.mem-an-nom,.mkz-titre,.pjm-close,.ci-fermer,.puce .puce-x,.btn-icone{font-size:var(--fs-4)}

h1,.page-tete h1,.ptete .pmeta h1,.ci-prix,.bien-prix,.mkz-med,.si-onglet > b,.mem-carte .si-onglet > b{font-size:var(--fs-5)}   /* le profil réduisait son titre à 15 px */
/* Leaflet impose 22 px en Lucida Console, par une règle .leaflet-touch plus précise. */
.leaflet-touch .leaflet-bar a.leaflet-control-zoom-in,.leaflet-touch .leaflet-bar a.leaflet-control-zoom-out,
.leaflet-bar a.leaflet-control-zoom-in,.leaflet-bar a.leaflet-control-zoom-out{font:600 var(--fs-6)/1 inherit;font-family:inherit}

.st-n,.si-cles .st-n,.si-carte-cle .st-n{font-size:var(--fs-7)}
@media (max-width:600px){
  .st-n,.si-cles .st-n,.si-carte-cle .st-n{font-size:var(--fs-6)}
  .si-onglet > b,.mem-carte .si-onglet > b{font-size:var(--fs-4)}
}
/* Sur un écran tactile, un champ sous 16 px fait zoomer iOS à chaque toucher : tous les
   champs y passent à 16 px (la carte le faisait déjà pour sa recherche). */
@media (pointer:coarse){
  input:not([type=checkbox]):not([type=radio]):not([type=range]),select:not([multiple]),textarea:not([disabled]),
  .mr-champ select{font-size:16px}   /* « .mr-champ select » est plus précis que « select » */
}

/* ================= Listes déroulantes (19/09/2026) =================
   Demande de l'utilisateur : le fond et le style des menus déroulants, dans toutes les
   pages, au style de Bornag. Avant : deux apparences (avec ou sans flèche — la règle
   « background » de .mr-champ effaçait celle d'ancrag.css —, deux fonds, 35 à 42 px de
   haut) et une liste ouverte dessinée par le système.
   1. Fermée, partout : le champ de Bornag — fond de carte, bordure, 42 px, flèche, anneau
      bleu au focus.
   2. Ouverte : Chrome, Edge et Brave récents dessinent la liste comme on veut
      (appearance: base-select) ; ailleurs (Safari, Firefox, iPhone) la liste reste celle du
      système, aux couleurs de Bornag quand il les accepte. */
select,.mr-champ select,.mem-form select,.carte-outils select,.pjm select{
  appearance:none;-webkit-appearance:none;box-sizing:border-box;height:2.6rem;min-height:2.6rem;margin:0;
  padding:0 2.3rem 0 .75rem;border:1px solid var(--border-l);border-radius:var(--r-1);color:var(--strong);cursor:pointer;
  background:var(--card) url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a8d98' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right .75rem center/.85rem;
  transition:border-color .12s,box-shadow .12s}
select:hover{border-color:color-mix(in srgb,var(--blue-l) 45%,var(--border-l))}
select:focus,select:focus-visible,.mr-champ select:focus{outline:none;border-color:var(--blue-l);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--blue-l) 18%,transparent)}
select:disabled{opacity:.55;cursor:not-allowed}
select option,select optgroup{background-color:var(--card);color:var(--text)}
select optgroup{color:var(--muted);font-weight:600}
select option:checked{background-color:color-mix(in srgb,var(--blue-l) 22%,var(--card));color:var(--text)}
@supports (appearance: base-select){
  select,.mr-champ select,.mem-form select,.carte-outils select,.pjm select{appearance:base-select;display:inline-flex;align-items:center}
  .mr-champ select,.mem-form select,.af-grille select,.bien-form select,.alerte-form select,.pjm select{display:flex}
  select::picker-icon{display:none}                 /* la flèche de Bornag reste celle du fond */
  select::picker(select){appearance:base-select;margin-top:.3rem;padding:.3rem;min-width:anchor-size(width);
    max-width:min(36rem,calc(100vw - 2rem));   /* des titres d'annonces longs : on passe à la ligne */
    background:var(--elev,var(--card));color:var(--text);border:1px solid var(--border-l);border-radius:var(--r-2);
    box-shadow:0 16px 36px -14px rgba(0,0,0,.65);max-height:min(22rem,60vh);overflow-y:auto}
  select option{padding:.5rem .7rem;border-radius:var(--r-1);background:transparent;color:var(--text);
    font-size:var(--fs-3);gap:.5rem;cursor:pointer;white-space:normal;overflow-wrap:anywhere}
  select option:hover,select option:focus-visible{background:color-mix(in srgb,var(--text) 7%,transparent);outline:none}
  select option:checked{background:color-mix(in srgb,var(--blue-l) 16%,transparent);color:var(--blue-l)}
  select option::checkmark{color:var(--blue-l)}
  select optgroup{background:transparent;padding:.2rem 0}
  select optgroup::label{display:block;padding:.45rem .7rem .25rem;font-size:var(--fs-1);font-weight:600;
    text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
}

/* Les champs texte des formulaires (Bien, Mémoire, alertes, fenêtres) prennent l'apparence
   de ceux de l'Analyse et des listes déroulantes : côte à côte, ils sont identiques
   (avant : fond plus sombre, 40 px contre 42). :where() leur donne la précision d'un simple « input » :
   la place réservée à l'unité d'un champ (.mr-champ:has(.mr-unite) input) doit l'emporter. */
:where(.mem-form,.bien-form,.af-grille,.alerte-form,.pjm) input:where(:not([type=checkbox],[type=radio],[type=range],[type=file],[type=hidden])),
:where(.mem-form,.bien-form,.pjm) textarea{
  box-sizing:border-box;margin:0;border:1px solid var(--border-l);border-radius:var(--r-1);background:var(--card);color:var(--strong)}
:where(.mem-form,.bien-form,.af-grille,.alerte-form,.pjm) input:where(:not([type=checkbox],[type=radio],[type=range],[type=file],[type=hidden])){
  height:2.6rem;padding:0 .75rem}
:where(.mem-form,.bien-form,.pjm) textarea{padding:.6rem .75rem}
:where(.mem-form,.bien-form,.af-grille,.alerte-form,.pjm) input:focus,:where(.mem-form,.bien-form,.pjm) textarea:focus{outline:none;border-color:var(--blue-l);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--blue-l) 18%,transparent)}

/* ---- Demande dans la zone (19/09/2026) ----
   app/sourcing/demande.py : forte, soutenue, modérée, faible. Même code couleur que les
   cartes de l'Analyse : vert c'est bon pour qui achète, orange à surveiller, rouge faible. */
.dz-forte{--dz:var(--green-l)}
.dz-soutenue{--dz:color-mix(in srgb,var(--green-l) 55%,var(--orange))}
.dz-moderee{--dz:var(--orange)}
.dz-faible{--dz:var(--red-l)}
.dz-puce{display:inline-flex;align-items:center;gap:.3rem;padding:.1rem .5rem;border-radius:999px;
  font-size:var(--fs-1);font-weight:600;white-space:nowrap;color:var(--dz);
  background:color-mix(in srgb,var(--dz) 13%,transparent)}
.dz-puce::before{content:"";width:.45rem;height:.45rem;border-radius:50%;background:var(--dz)}
.dz-bloc{margin:.9rem 0 0;padding:.8rem .95rem .85rem;border:1px solid var(--border);border-left:3px solid var(--dz);
  border-radius:var(--r-2);background:color-mix(in srgb,var(--dz) 6%,var(--card))}
.dz-tete{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap;margin-bottom:.55rem}
.dz-titre{font-size:var(--fs-1);font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.dz-niveau{font-size:var(--fs-7);font-weight:700;color:var(--dz);font-variant-numeric:tabular-nums;line-height:1}
.dz-texte{font-size:var(--fs-3);font-weight:600;color:var(--dz)}
.dz-indices{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}
.dz-i{display:grid;grid-template-columns:.5rem 9.5rem 1fr auto;align-items:baseline;gap:.1rem .6rem;font-size:var(--fs-2)}
.dz-i::before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:var(--i);transform:translateY(-.05em)}
.dz-i-pos{--i:var(--green-l)}
.dz-i-stag{--i:var(--orange)}
.dz-i-neg{--i:var(--red-l)}
.dz-l{color:var(--text-2)}
.dz-v{color:var(--text)}
.dz-s{grid-column:3;font-size:var(--fs-1);color:var(--muted)}
.dz-n{grid-column:4;grid-row:1;font-size:var(--fs-2);font-weight:600;color:var(--i);font-variant-numeric:tabular-nums}
.dz-pied{margin:.6rem 0 0;font-size:var(--fs-1);color:var(--muted)}
@media (max-width:600px){
  .dz-i{grid-template-columns:.5rem 1fr auto}
  .dz-l{grid-column:2}
  .dz-n{grid-column:3}
  .dz-v,.dz-s{grid-column:2 / 4}
}

/* Le nom « bornag » à côté du logo, même sur téléphone (19/09/2026) : ancrag.css le
   masque sous 400 px pour Ancrag ; la barre de Bornag a la place (vérifié à 360 px). */
@media (max-width:400px){
  .topbar .wm{display:inline;font-size:var(--fs-3)}
  .topbar .brand{gap:.35rem}
}

/* Carte : la sélection en accordéon, comme la « Base de calcul » de l'Analyse
   (19/09/2026). Fermé : une ligne. Ouvert : le département, les lieux, le budget. */
.carte-selection .c-pli{flex:1 1 100%;min-width:0;padding:.5rem .8rem}
.c-pli > .mk-resume{min-width:0}
.c-pli-txt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-2);color:var(--text-2)}
.c-pli-txt b{color:var(--text);font-weight:600}
.c-pli[open] > .mk-resume > .mk-chevron{transform:rotate(-135deg)}
.c-pli[open] > .mk-resume{margin-bottom:.55rem;padding-bottom:.5rem}
.c-pli-corps{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .5rem;
  max-height:min(40vh,15rem);overflow-y:auto;overscroll-behavior:contain}

/* Le bouton « Parrainer » bat avec des bleus écrits en dur dans ancrag.css (@keyframes
   appel) : la même pulsation, à la couleur choisie (19/09/2026). */
@keyframes appel{
  0%,100%{background-color:color-mix(in srgb,var(--blue) 82%,#fff);transform:scale(1.05);
    box-shadow:0 1px 2px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.16),0 7px 20px -7px color-mix(in srgb,var(--blue) 55%,transparent),0 0 0 0 color-mix(in srgb,var(--blue) 88%,transparent)}
  6.89%{transform:scale(1);box-shadow:0 1px 2px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.16),0 5px 14px -8px color-mix(in srgb,var(--blue) 35%,transparent),0 0 0 15px transparent}
  10.33%{box-shadow:0 1px 2px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.16),0 5px 14px -8px color-mix(in srgb,var(--blue) 35%,transparent),0 0 0 0 transparent}
  11.11%{background-color:var(--blue);transform:scale(1.05);
    box-shadow:0 1px 2px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.16),0 7px 20px -7px color-mix(in srgb,var(--blue) 55%,transparent),0 0 0 0 color-mix(in srgb,var(--blue) 88%,transparent)}
  18%{transform:scale(1);box-shadow:0 1px 2px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.16),0 5px 14px -8px color-mix(in srgb,var(--blue) 35%,transparent),0 0 0 15px transparent}
  21.44%{box-shadow:0 1px 2px rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.16),0 5px 14px -8px color-mix(in srgb,var(--blue) 35%,transparent),0 0 0 0 transparent}
}

/* Carte, téléphone : la recherche d'abord (où chercher), le bouton des critères collé à
   sa droite, en icône avec le nombre de critères posés — le modèle « recherche + filtres ».
   Le type de bien et les points clés passent sur la ligne suivante (19/09/2026). */
@media (max-width:600px){
  .carte-outils .c-recherche{flex:1 1 calc(100% - 3.2rem);max-width:none;order:-2}   /* la ligne à elle et au bouton */
  .carte-outils .c-criteres{order:-1;position:relative;overflow:visible;flex:none;max-width:none;
    width:2.75rem;align-self:stretch;min-height:2.6rem;padding:0;justify-content:center}
  .carte-outils .c-criteres span{display:none}
  .carte-outils .c-criteres svg{width:1.2rem;height:1.2rem}
  .carte-outils .c-criteres[data-n]::after{content:attr(data-n);position:absolute;top:-.35rem;right:-.2rem;
    min-width:1.15rem;height:1.15rem;padding:0 .25rem;border-radius:999px;display:flex;align-items:center;justify-content:center;
    font-size:.7rem;font-weight:700;line-height:1;background:var(--strong);color:var(--bg);box-shadow:0 0 0 2px var(--bg)}
  .carte-outils .segchoix{flex:1 1 auto}
  .carte-outils .segchoix .segopt{flex:1;display:inline-flex;align-items:center;justify-content:center}   /* l'icône au centre de sa case (elle restait à gauche : display:block) */
}

/* Analyse : « Et si… », sous le graphique des résultats (19/09/2026). Une ligne par cas :
   le cas, la nouvelle valeur, l'écart coloré comme les cartes (si-k-pos / neg / stag). */
.si-etsi{margin-top:.8rem;padding:.8rem 1rem .85rem;border:1px solid var(--border);border-radius:var(--r-2);background:var(--card)}
.si-etsi-tete{display:flex;align-items:baseline;flex-wrap:wrap;gap:.3rem .8rem;margin-bottom:.55rem}
.si-etsi-titre{font-size:var(--fs-1);font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.si-etsi-ref{font-size:var(--fs-2);color:var(--text-2)}
.si-etsi-cas{list-style:none;margin:0;padding:0;display:grid}
.si-etsi-l{display:grid;grid-template-columns:1fr auto 6.5rem;align-items:baseline;gap:.2rem .9rem;
  padding:.45rem 0;border-top:1px solid var(--border);font-size:var(--fs-2)}
.si-etsi-l:first-child{border-top:0}
.si-etsi-cas-l{color:var(--text)}
.si-etsi-v{font-weight:600;font-variant-numeric:tabular-nums;color:var(--text);text-align:right}
.si-etsi-e{font-variant-numeric:tabular-nums;text-align:right;font-weight:600;color:var(--k)}
.si-etsi-verdict{margin:.55rem 0 0;font-size:var(--fs-2);color:var(--text-2)}
.si-etsi-verdict.si-etsi-alerte{color:var(--red-l)}
.si-etsi-verdict.si-etsi-ok{color:var(--green-l)}
@media (max-width:600px){ .si-etsi-l{grid-template-columns:1fr auto auto} }

/* ---- Fenêtre d'une annonce, au dessin de la page Analyse (19/09/2026) ----
   Titres de section (.si-h), cartes qui décident (.si-carte-cle, couleur selon le sens),
   demande en accordéon (.pli), le bien en carte à onglets (.si-hyp-carte) et tuiles. */
.pjm-annonce .an-tete{margin-top:.9rem}
.pjm-annonce .an-titre{margin:.35rem 0 .35rem;font-size:var(--fs-4);font-weight:600;line-height:1.35;
  text-transform:none;letter-spacing:normal;color:var(--text)}
.pjm-annonce .si-h{margin:1.25rem 0 .55rem}
.an-cles{margin:0}
.an-cles .st-grille{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}
.an-cles .st-carte{justify-items:start;text-align:left;min-height:0;padding:.75rem .85rem .8rem}
.an-cles .st-n{font-size:var(--fs-6,1.25rem)}
.an-cles .st-s{display:block}
.an-manques{margin:.6rem 0 0;padding:.5rem .7rem;border-radius:var(--r-1);font-size:var(--fs-2);
  color:var(--orange);background:color-mix(in srgb,var(--orange) 10%,var(--card))}
.an-pli{border-left:3px solid var(--dz)}
.an-pli > .mk-resume{min-width:0}
/* plus précis que « .pli > .mk-resume > b » (titre de volet : petit, en capitales, gris) */
.an-pli > .mk-resume > .an-pli-n{flex:none;font-size:var(--fs-5);font-weight:700;text-transform:none;letter-spacing:normal;
  color:var(--dz);font-variant-numeric:tabular-nums}
.an-pli-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-2);color:var(--text-2)}
.an-pli[open] > .mk-resume > .mk-chevron{transform:rotate(-135deg)}
.an-pli[open] > .mk-resume{margin-bottom:.7rem;padding-bottom:.6rem}
.an-tuiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}
.an-tuile{display:grid;gap:.15rem;align-content:start;min-width:0;padding:.55rem .7rem;border:1px solid var(--border);
  border-radius:var(--r-1);background:color-mix(in srgb,var(--text) 2%,transparent)}
.an-tuile > span{font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.an-tuile > b{font-size:var(--fs-2);font-weight:500;color:var(--text);overflow-wrap:anywhere}
.an-tuile.an-vide > b{color:var(--muted)}
.an-actions{display:grid;gap:.55rem;margin-top:1.3rem}
.an-actions .btn{margin:0;justify-content:center;text-align:center}
.an-principal{width:100%}
.an-second{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:.5rem}
.an-second .btn{width:100%;padding-left:.4rem;padding-right:.4rem;background:var(--card);color:var(--text);
  border:1px solid var(--border-l);text-decoration:none}
.an-second .btn:hover{border-color:var(--blue-l);color:var(--blue-l)}
/* Pas de titre « L'annonce » (utilisateur, 19/09/2026) : la photo ouvre la fenêtre, la
   croix se pose sur son coin. Au téléphone, pas de croix : la poignée ferme. */
.pjm-annonce .pjm-title{display:none}
.pjm-annonce .pjm-card{position:relative}
.pjm-annonce .pjm-head{position:absolute;top:1.5rem;right:1.5rem;z-index:3;padding:0;border:0;background:none}
.pjm-annonce .pjm-close{width:34px;height:34px;border-radius:50%;border-color:transparent;color:#fff;
  background:rgba(10,12,16,.55);backdrop-filter:blur(6px)}
.pjm-annonce .pjm-close:hover{background:rgba(10,12,16,.75)}

/* ---- Toute la largeur de l'écran (20/09/2026) ----
   ancrag.css tient le contenu dans une colonne de lecture de 880 px : juste pour un texte,
   trop étroit pour un tableau de bord — sur un écran de 1920, 1 078 px restaient vides
   (utilisateur). Bornag s'étale ; la barre du haut suit, pour rester alignée sur le contenu. */
/* Largeur commune des trois applis (14/11/2026) : celle de Skorag, 75rem (--largeur-skorag). Le contenu ET la barre
   du haut tiennent dans cette colonne, centrée ; ancrag.css centre déjà body et .top (margin:0 auto). */
:root{--largeur-page:75rem}
body:not(.page-carte){max-width:var(--largeur-page);padding-left:clamp(.75rem,2vw,2rem);padding-right:clamp(.75rem,2vw,2rem)}
/* La barre du menu : LA MÊME sur toutes les pages, sur toute la largeur, avec les mêmes
   gouttières que le contenu (utilisateur, 20/09/2026 : « la barre n'est pas la même que
   sur la Carte »). */
.topbar .top{max-width:var(--largeur-page);padding-left:clamp(.75rem,2vw,2rem);padding-right:clamp(.75rem,2vw,2rem)}
/* Exception : la Carte (plan Leaflet) reste pleine largeur, barre comprise, pour rester alignée sur ses outils. */
.page-carte .topbar .top{max-width:none}
/* Un texte suivi garde une largeur de lecture : sur un écran large, une ligne de 2 000 px
   ne se lit pas. Les cartes, listes, tableaux et graphiques, eux, s'étalent. */
.md,.mr-aide,.si-etsi-verdict,.pdesc{max-width:80ch}

/* ---- La Carte respire comme les autres pages (20/09/2026) ----
   Elle était bord à bord, barres serrées, pendant que les autres pages ont des gouttières
   et des blocs arrondis : « ça choque avec les autres pages » (utilisateur). Et sa barre de
   menu s'arrêtait à 1 600 px alors que la page prend tout l'écran. */
.page-carte .carte-outils,.page-carte .carte-selection{
  padding-left:clamp(.75rem,2vw,2rem);padding-right:clamp(.75rem,2vw,2rem)}
.page-carte .carte-outils{padding-top:.7rem;padding-bottom:.7rem;gap:.6rem}
.page-carte .carte-selection{padding-top:.1rem;padding-bottom:.55rem;border-bottom:0}
/* Le plan devient un cadre, comme une carte de contenu : il ne touche plus les bords. */
.page-carte .carte-zone{margin:0 clamp(.75rem,2vw,2rem) clamp(.6rem,1vw,1rem);
  border:1px solid var(--border);border-radius:var(--r-2);overflow:hidden}
/* Téléphone : la hauteur est précieuse, la barre reste compacte. */
@media (max-width:600px){
  .page-carte .carte-outils{padding-top:.45rem;padding-bottom:.45rem;gap:.4rem}
  .page-carte .carte-selection{padding-bottom:.45rem}
  .page-carte .carte-zone{margin-bottom:.5rem}
}
/* Grand écran : les points clés à droite, la barre tient toute la largeur. */
@media (min-width:900px){
  .page-carte .carte-outils .c-points{margin-left:auto}
  .page-carte .c-recherche{flex:1 1 26rem;max-width:34rem}
}

/* ---- Les deux tons du logo (20/09/2026) ----
   Le logo d'Ancrag va du bleu au cyan ; Bornag garde ce dégradé à deux tons mais les
   DÉRIVE de la couleur choisie, ASSOMBRIE : --logo-1 (−10 %) pour la maison et le départ
   du dégradé, --logo-2 (−24 %, teinte voisine) pour son arrivée. Plus sombre tient sur les
   deux thèmes : en clair, la couleur vive se délavait (utilisateur : « des couleurs plus
   sombres qui s'adaptent au mode sombre et clair »). Repli en mélange avec du noir là où la
   syntaxe des couleurs relatives manque. */
:root{--logo-1:color-mix(in srgb,var(--blue-l) 86%,#000);--logo-2:color-mix(in srgb,var(--blue-l) 66%,#000)}
@supports (color:oklch(from #000 l c h)){
  :root{--logo-1:oklch(from var(--blue-l) calc(l - .08) c h);
        --logo-2:oklch(from var(--blue-l) calc(l - .19) c calc(h - 18))}
}

/* ---- Écran de démarrage de l'application installée (20/09/2026) ----
   Comme celui d'Ancrag — plein écran, logo au centre, nom en bas, une fois par session,
   puis fondu —, avec le logo qui ZOOME en arrivant (demande de l'utilisateur).
   Le script /splash.js (app/web/pwa.py) pose la classe et injecte le contenu. */
#bg-splash{display:none}
.bg-splash-on #bg-splash{display:flex;position:fixed;inset:0;z-index:2147483647;
  align-items:center;justify-content:center;background:var(--bg);color:var(--strong);
  opacity:1;transform:none;animation:none;transition:opacity .35s ease}
.bg-splash-fin #bg-splash{opacity:0}
.bg-splash-on{overflow:hidden}
#bg-splash svg{width:216px;height:216px;animation:bg-zoom .85s cubic-bezier(.22,.9,.3,1) both}
@keyframes bg-zoom{
  from{transform:scale(.55);opacity:0}
  55%{transform:scale(1.08);opacity:1}
  to{transform:scale(1);opacity:1}
}
#bg-splash .nom{position:absolute;left:0;right:0;bottom:calc(56px + env(safe-area-inset-bottom));
  text-align:center;font:700 20px/1 Inter,system-ui,sans-serif;letter-spacing:.06em;color:var(--strong);
  animation:bg-nom .5s ease .35s both}
#bg-splash .nom b{color:var(--blue-l)}
@keyframes bg-nom{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  #bg-splash svg,#bg-splash .nom{animation:none}
}

/* ---- page Projet (14/11/2026) : modèle de la page Projet d'Ancrag (app/projets.py), mêmes règles.
   Les couleurs passent par des jetons locaux, définis UNE fois ici sur les jetons de
   /ancrag-ui/ancrag.css, seuls présents au chargement (--blue suit la couleur du profil) ;
   à migrer vers --accent / --success quand ancrag-ui les définira. Aucune valeur en dur. ---- */
:root{--prj-accent:var(--blue);--prj-accent-clair:var(--blue-l);--prj-accent-fond:var(--blue-bg);
--prj-ok:var(--green-l);--prj-ok-fond:var(--green-bg)}
/* Jetons de la charte que ancrag-ui ne définit pas encore (valeurs de ~/charte/generes/bornag) :
   l'accent suit la couleur du profil (--prj-accent). À retirer quand ancrag-ui les définira. */
:root{--filet:1px;--cible-tactile:2.75rem;--t-court:.12s ease;--accent:var(--prj-accent);
--accent-soft:color-mix(in srgb,var(--accent) 16%,var(--card))}
/* Carte Pilotage modèle (14/11/2026) : trois cases, chacune est un lien ; la même carte sert de
   navigation sur les pages du Pilotage (case ouverte = .on). Jetons seulement. */
.pil{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);background:var(--surface);border:var(--filet) solid var(--border);
border-radius:var(--r-3);overflow:hidden;margin:0 0 var(--sp-3)}
.pil-t{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-1);min-height:var(--cible-tactile);
padding:var(--sp-4) var(--sp-5) var(--sp-4) var(--sp-4);color:var(--text);text-decoration:none;
border-left:var(--filet) solid var(--border);transition:background var(--t-court)}
.pil-t:first-child{border-left:0}
a.pil-t:hover{background:var(--elev);color:var(--text)}
.pil-t:focus-visible{outline:2px solid var(--accent);outline-offset:calc(var(--filet) * -2);border-radius:0}
.pil-t.on{background:var(--accent-soft);box-shadow:inset 0 calc(var(--filet) * -2) 0 var(--accent)}
.pil-lib{font-size:var(--fs-2);color:var(--text-2)}
.pil-num{font-size:var(--fs-6);font-weight:700;line-height:1.15;color:var(--strong);font-variant-numeric:tabular-nums}
.pil-note{font-size:var(--fs-2);color:var(--text-2);margin-bottom:var(--sp-1)}
.pil-chev{position:absolute;right:var(--sp-3);top:50%;width:var(--sp-4);height:var(--sp-4);transform:translateY(-50%);color:var(--muted)}
.pil-t:hover .pil-chev,.pil-t.on .pil-chev{color:var(--text)}
.pil-aux{display:inline-flex;align-items:center;min-height:var(--cible-tactile);padding:0 var(--sp-3);margin:0 0 var(--sp-4);
border-radius:var(--r-1);font-size:var(--fs-3);color:var(--text-2)}
.pil-aux:hover{color:var(--text);background:var(--elev)}
.pil-aux[aria-current=page]{color:var(--accent);background:var(--accent-soft)}
@media(max-width:40rem){.pil{grid-template-columns:1fr}.pil{grid-auto-flow:row}.pil-t{border-left:0;border-top:var(--filet) solid var(--border)}
.pil-t:first-child{border-top:0}}
.pil-tete{margin:var(--sp-5) 0 var(--sp-4)}
.pil-sur{margin:0;font-size:var(--fs-1);font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text-2)}
.pil-tete h1{margin:var(--sp-1) 0;font-size:var(--fs-6);color:var(--strong)}
.pil-sous{margin:0;font-size:var(--fs-2);color:var(--text-2)}
.pil-tuiles,.pil-resume{display:grid;gap:var(--sp-3);grid-template-columns:repeat(2,minmax(0,1fr));margin:0 0 var(--sp-5)}
@media(min-width:48rem){.pil-tuiles,.pil-resume{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:47.99rem){.pil-tuiles>.pil-tuile:last-child:nth-child(odd){grid-column:1/-1}}
.pil-tuile{background:var(--card);border:1px solid var(--border);border-radius:var(--r-3);padding:var(--sp-3) var(--sp-4);
display:flex;flex-direction:column;gap:var(--sp-1)}
.pil-tuile-lab{font-size:var(--fs-2);color:var(--text-2)}
.pil-tuile-val{font-size:var(--fs-7);font-weight:700;color:var(--strong);line-height:1.15;font-variant-numeric:tabular-nums}
.pil-tuile-sous{font-size:var(--fs-1);color:var(--muted)}
.pil-grille{display:grid;gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(19rem,1fr))}
.pil-carte{background:var(--card);border:1px solid var(--border);border-radius:var(--r-3);padding:var(--sp-4);
display:flex;flex-direction:column;gap:var(--sp-3);min-width:0}
.pil-carte h2{margin:0;font-size:var(--fs-4);font-weight:700;color:var(--strong)}
.pil-carte-sous{margin:calc(-1 * var(--sp-2)) 0 0;font-size:var(--fs-1);color:var(--muted)}
.pil-large{grid-column:1/-1}
.pil-vide{margin:0;font-size:var(--fs-2);color:var(--muted)}
.ind-tete{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3)}
.prj-bornes{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(14rem,1fr))}
.prj-borne{padding:var(--sp-3);border-radius:var(--r-2);background:var(--surface);border:1px solid var(--border)}
.prj-borne p{margin:var(--sp-1) 0 0;font-size:var(--fs-3);color:var(--text)}
.prj-etapes{list-style:none;margin:var(--sp-2) 0 0;padding:0}
.prj-pas{position:relative;display:flex;gap:var(--sp-3);padding:0 0 var(--sp-4)}
.prj-pas:not(:last-child)::before{content:"";position:absolute;left:calc(var(--sp-2) - 1px);top:var(--sp-4);bottom:0;
width:2px;background:var(--border-l)}
.prj-fait:not(:last-child)::before{background:var(--prj-ok)}
.prj-puce{flex:none;width:var(--sp-4);height:var(--sp-4);margin-top:var(--sp-1);border-radius:var(--r-pill);
border:2px solid var(--border-l);background:var(--card)}
.prj-fait .prj-puce{background:var(--prj-ok);border-color:var(--prj-ok)}
.prj-en_cours .prj-puce{border-color:var(--prj-accent);box-shadow:0 0 0 4px var(--prj-accent-fond)}
.prj-corps{min-width:0;flex:1}
.prj-ligne{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}
.prj-ligne b{font-size:var(--fs-3);font-weight:700;color:var(--strong)}
.prj-a_faire .prj-ligne b{color:var(--text-2);font-weight:400}
.prj-date{font-size:var(--fs-1);color:var(--muted)}
.prj-detail{margin:var(--sp-1) 0 0;font-size:var(--fs-2);color:var(--text-2)}
.prj-ici{display:inline-block;margin:0 0 var(--sp-1);font-size:var(--fs-1);font-weight:700;letter-spacing:.06em;
text-transform:uppercase;color:var(--prj-accent-clair)}
.prj-bornes{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:stretch}
.prj-fleche{align-self:center;font-size:var(--fs-6);color:var(--muted)}
.prj-borne-obj{border-color:var(--prj-accent);background:var(--prj-accent-fond)}
.prj-principe{margin:0;padding:var(--sp-3) var(--sp-4);border-left:3px solid var(--prj-accent);border-radius:var(--r-2);background:var(--surface)}
.prj-principe p{margin:var(--sp-1) 0 0;font-size:var(--fs-4);font-weight:700;line-height:1.35;color:var(--text)}
.prj-principe .prj-regle{margin-top:var(--sp-2);font-size:var(--fs-3);font-weight:400;color:var(--text-2)}
.prj-regle b{font-weight:700;color:var(--text)}
.rdm{list-style:none;margin:var(--sp-3) 0 0;padding:0;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:var(--sp-3);position:relative}
.rdm-jalon:not(:last-child)::after{content:"";position:absolute;top:calc(var(--sp-6) / 2);left:calc(50% + var(--sp-6) / 2);width:calc(100% + var(--sp-3) - var(--sp-6));border-top:2px dashed var(--border-l)}
.rdm-jalon{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--sp-1)}
.rdm-jalon .idee-ico{width:var(--sp-6);height:var(--sp-6);margin:0 0 var(--sp-1);padding:2px;border-radius:var(--r-pill);background:var(--bg)}
.rdm-jalon b{font-size:var(--fs-3);font-weight:700;color:var(--strong)}
.rdm-etat{font-size:var(--fs-1);color:var(--text-2)}
.rdm-jalon dl{margin:var(--sp-2) 0 0;font-size:var(--fs-2);color:var(--text-2)}
.rdm-jalon dt{font-size:var(--fs-1);font-weight:700;color:var(--muted)}
.rdm-jalon dd{margin:0 0 var(--sp-2)}
.idee-ico{flex:none;color:var(--muted)}
.idee-ico.prj-fait{color:var(--prj-ok)}
.idee-ico.prj-en_cours{color:var(--prj-accent)}
@media(max-width:48rem){.rdm{grid-auto-flow:row;grid-template-columns:1fr;gap:var(--sp-4)}.rdm-jalon::after{display:none}
.rdm::before{content:"";position:absolute;left:calc(var(--sp-6) / 2);top:var(--sp-3);bottom:var(--sp-3);border-left:2px dashed var(--border-l)}
.rdm-jalon{display:grid;grid-template-columns:var(--sp-6) 1fr;column-gap:var(--sp-3);align-items:start;text-align:left}
.rdm-jalon .idee-ico{grid-row:span 3}.rdm-jalon dl{grid-column:2;margin-top:var(--sp-1)}}
.prv-score{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));margin:var(--sp-3) 0}
.prv-tuile{padding:var(--sp-3);border-radius:var(--r-2);background:var(--surface);border:1px solid var(--border)}
.prv-tuile b{display:block;margin-top:var(--sp-1);font-size:var(--fs-4);font-weight:700;color:var(--strong)}
.prv-h{margin:var(--sp-4) 0 var(--sp-2);font-size:var(--fs-3);font-weight:700;color:var(--text)}
.prv-liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-3)}
.prv-liste li{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}
.prv-liste p{flex-basis:100%;margin:0;font-size:var(--fs-2);color:var(--text-2)}
@media(max-width:40rem){.prj-bornes{grid-template-columns:1fr}.prj-fleche{transform:rotate(90deg);justify-self:center}}
.prj-avance{display:flex;align-items:center;gap:var(--sp-5);flex-wrap:wrap}
.prj-anneau-cadre{position:relative;width:calc(var(--sp-6) * 3.5);flex:none}
.prj-anneau{display:block;width:100%;height:auto}
.prj-anneau-fond{fill:none;stroke:var(--elev);stroke-width:10}
.prj-anneau-val{fill:none;stroke:var(--prj-ok);stroke-width:10;stroke-linecap:round}
.prj-anneau-cadre b{position:absolute;inset:0;display:grid;place-items:center;font-size:var(--fs-6);font-weight:700;
color:var(--strong);font-variant-numeric:tabular-nums}
.prj-avance-txt{flex:1;min-width:14rem;display:flex;flex-direction:column;gap:var(--sp-3)}
.prj-avance-titre{margin:0;font-size:var(--fs-4);font-weight:700;color:var(--strong)}
.prj-segments{display:flex;gap:var(--sp-1)}
.prj-seg{flex:1;height:var(--sp-3);border-radius:var(--r-pill);background:var(--elev);border:1px dashed var(--border-l)}
.prj-seg-fait{background:var(--prj-ok);border:1px solid var(--prj-ok)}
.prj-seg-en_cours{background:var(--prj-accent-fond);border:1px dashed var(--prj-accent)}
.prj-comptes,.prj-legende{display:flex;flex-wrap:wrap;gap:var(--sp-4);font-size:var(--fs-2);color:var(--text-2)}
.prj-comptes span,.prj-legende span{display:inline-flex;align-items:center;gap:var(--sp-2)}
.prj-pastille{display:inline-block;width:var(--sp-3);height:var(--sp-3);border-radius:var(--r-1);border:1px dashed var(--border-l);background:var(--surface)}
.prj-pastille.prj-fait{background:var(--prj-ok);border:1px solid var(--prj-ok)}
.prj-pastille.prj-en_cours{background:var(--prj-accent-fond);border:1px dashed var(--prj-accent)}
.prj-bloc{display:flex;flex-direction:column;gap:var(--sp-3);padding-top:var(--sp-4);border-top:1px solid var(--border)}
.prj-h{margin:0;font-size:var(--fs-1);font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text-2)}
.prj-flux{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(10rem,1fr))}
.prj-etape-flux{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-3);
border-radius:var(--r-2);background:var(--surface);border:1px solid var(--border)}
.prj-etape-flux b{font-size:var(--fs-3);color:var(--strong)}
.prj-etape-flux p{margin:0;font-size:var(--fs-2);color:var(--text-2);flex:1}
.prj-num{display:grid;place-items:center;width:var(--sp-6);height:var(--sp-6);border-radius:var(--r-pill);
background:var(--prj-accent);color:var(--sur-accent,var(--card));font-weight:700;font-size:var(--fs-3)}
.prj-etape-flux.prj-a_faire .prj-num{background:var(--elev);color:var(--text-2)}
.prj-archi-cadre{overflow-x:auto;margin:0 calc(-1 * var(--sp-2));padding:0 var(--sp-2)}
.prj-archi{display:block;width:100%;min-width:40rem;max-width:56rem;height:auto;margin-inline:auto}
.prj-lien{stroke:var(--border-l);stroke-width:2}
.prj-lien-afaire{stroke-dasharray:5 5}
.prj-noeud rect{fill:var(--surface);stroke:var(--border-l);stroke-width:1.5;stroke-dasharray:5 4}
.prj-noeud.prj-fait rect{fill:var(--prj-ok-fond);stroke:var(--prj-ok);stroke-dasharray:none}
.prj-noeud.prj-en_cours rect{fill:var(--prj-accent-fond);stroke:var(--prj-accent);stroke-width:2;stroke-dasharray:none}
.prj-n-titre{fill:var(--strong);font-size:var(--fs-3);font-weight:700}
.prj-n-sous{fill:var(--text-2);font-size:var(--fs-1)}
.prj-noeud.prj-a_faire .prj-n-titre{fill:var(--text-2)}
.prj .prj-etapes{margin:0}
.prj-archi-liste{display:none;flex-direction:column;gap:var(--sp-4)}
.prj-groupe{display:flex;flex-direction:column;gap:var(--sp-2)}
.prj-groupe-titre{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-2);font-weight:700;color:var(--text)}
.prj-groupe ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}
.prj-piece{display:flex;flex-direction:column;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-2);
background:var(--surface);border:1.5px dashed var(--border-l)}
.prj-piece b{font-size:var(--fs-3);font-weight:700;color:var(--text-2)}
.prj-piece span{font-size:var(--fs-2);color:var(--text-2)}
.prj-piece.prj-fait{background:var(--prj-ok-fond);border:1.5px solid var(--prj-ok)}
.prj-piece.prj-en_cours{background:var(--prj-accent-fond);border:1.5px solid var(--prj-accent)}
.prj-piece.prj-fait b,.prj-piece.prj-en_cours b{color:var(--strong)}
@media(max-width:48rem){.prj-archi-cadre{display:none}.prj-archi-liste{display:flex}}

.pil-lien .pil-txt{flex:1}
/* ---- vues du profil (14/11/2026) : barre de boutons sous la carte Pilotage, À L'IDENTIQUE de celle d'Ancrag
   (a6cc0bf, app/ui.py, .sommaire / .profil-vues) : mêmes hauteur, padding, rayon, fond, sticky ; survol --elev,
   actif = texte --accent sur fond --accent-soft sans ombre, focus au clavier. Limité à .profil-vues : les autres
   .segchoix de Bornag (thème, carte) gardent leur rendu. Jetons seulement. ---- */
.sommaire{position:sticky;top:var(--h-nav);z-index:36;margin:0 0 var(--sp-3);padding:var(--sp-2) 0;background:var(--bg)}
.profil-vues{display:flex;width:100%;max-width:100%;overflow-x:auto;border-radius:var(--r-pill);scrollbar-width:none}
.profil-vues::-webkit-scrollbar{display:none}
.profil-vues .segopt{flex:1 0 auto;display:inline-flex;align-items:center;justify-content:center;min-height:var(--cible-tactile);white-space:nowrap;text-align:center;text-decoration:none}
.profil-vues .segopt:hover{color:var(--text);background:var(--elev)}
.profil-vues .segopt.on,.profil-vues .segopt.on:hover{color:var(--accent);background:var(--accent-soft);box-shadow:none}
.profil-vues .segopt.on svg{color:inherit}
.profil-vues .segopt:focus-visible{outline:2px solid var(--accent);outline-offset:calc(var(--filet) * -2)}
.profil-section{scroll-margin-top:calc(var(--h-nav) + var(--sp-6) + var(--cible-tactile))}
/* ---- fin vues du profil ---- */
