:root{--bg:#f7f4ec;--surface:#fffdf8;--ink:#1e2b27;--muted:#58635e;--line:rgba(30,43,39,.13);--green:#173d34;--terra:#b46e4a;--green-soft:#e8efec;--shadow:0 18px 50px rgba(23,61,52,.08)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:"Instrument Sans",sans-serif}[hidden]{display:none!important}
.explorer-shell{width:min(1440px,calc(100% - 2rem));margin:0 auto 4rem}.topbar{min-height:84px;display:flex;justify-content:space-between;align-items:center;gap:1rem}.topnav{display:flex;gap:.5rem;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:.7rem;text-decoration:none;color:var(--green)}.brand img{width:46px;height:46px}.brand span{display:grid}.brand small{color:var(--muted)}
.button,.primary{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border-radius:999px;padding:.68rem .95rem;font-weight:650}.ghost{background:var(--surface);border:1px solid var(--line);color:var(--green)}.primary{background:var(--green);border:1px solid var(--green);color:#fff;cursor:pointer}
.state-card,.intro,.filters-card,.map-results-card,.offers-card,.result-kpis article{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}.state-card{margin:4rem auto;padding:2rem;max-width:760px;text-align:center;border-radius:24px}
.intro{padding:1.6rem 2rem;border-radius:24px;margin-bottom:1.2rem}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;font-weight:700;color:var(--terra);margin:0 0 .4rem}h1,h2{font-family:"Cormorant Garamond",serif;color:var(--green);margin:.1rem 0}h1{font-size:clamp(2.6rem,5vw,4.6rem);line-height:.95}h2{font-size:1.7rem}.method-note,.small,.muted,.footer-note{color:var(--muted)}.method-note{font-size:.84rem}
.workspace{display:grid;grid-template-columns:320px minmax(0,1fr);gap:1.2rem;align-items:start}.filters-card{border-radius:22px;padding:1.15rem;position:static;max-height:none;overflow:visible;scrollbar-gutter:auto}.filters-head,.section-head,.map-head,.program-list-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.8rem;margin-bottom:.8rem}.link-button{border:0;background:transparent;color:var(--terra);font-weight:650;cursor:pointer}
.filters{display:grid;gap:.9rem}.filters label,.field-group{display:grid;gap:.35rem;font-size:.82rem;color:var(--muted)}select,input{width:100%;min-height:42px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:.55rem .65rem;color:var(--ink)}.range-grid{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.field-label{font-size:.82rem}.checkbox-row{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;gap:.55rem!important}.checkbox-row input{width:auto;min-height:auto}
.results-area{min-width:0}.result-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:.8rem;margin-bottom:1.2rem}.result-kpis article{border-radius:18px;padding:1rem;display:grid;gap:.25rem}.result-kpis span{font-size:.76rem;color:var(--muted)}.result-kpis strong{font-size:1.18rem;color:var(--green)}
.map-results-card{border-radius:24px;padding:1rem;display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:1rem}.search-map{height:600px;border:1px solid var(--line);border-radius:16px;overflow:hidden}.program-list{border-left:1px solid var(--line);padding-left:1rem;min-width:0}.program-list-body{display:grid;gap:.65rem;max-height:none;overflow:visible;padding-right:.25rem}.program-item{border:1px solid var(--line);border-radius:14px;padding:.8rem;background:var(--bg)}.program-item h3{font-size:1rem;margin:0 0 .25rem;color:var(--green)}.program-item p{margin:.18rem 0;font-size:.8rem;color:var(--muted)}.program-actions{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.5rem}.program-actions a{font-size:.75rem;font-weight:650;color:var(--green)}
.offers-card{border-radius:24px;padding:1.1rem;margin-top:1.2rem}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:16px}table{width:100%;border-collapse:collapse;min-width:1000px}th,td{text-align:left;padding:.72rem .78rem;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:#f5f2ea}tbody tr:last-child td{border-bottom:0}.footer-note{text-align:center;font-size:.78rem;margin-top:1rem}
@media(max-width:1100px){.workspace{grid-template-columns:1fr}.filters-card{position:static}.map-results-card{grid-template-columns:1fr}.program-list{border-left:0;border-top:1px solid var(--line);padding-left:0;padding-top:1rem}.result-kpis{grid-template-columns:1fr 1fr}}@media(max-width:640px){.explorer-shell{width:min(100% - 1rem,1440px)}.topbar{align-items:flex-start;padding:1rem 0}.brand small{display:none}.result-kpis{grid-template-columns:1fr 1fr}.search-map{height:420px}}

/* Indicateurs descriptifs dans les bulles de la carte des quartiers */
.district-popup{display:grid;gap:.55rem;min-width:min(265px,65vw);color:var(--ink);font-family:"Instrument Sans",sans-serif}
.district-popup-title{font-size:1.05rem;color:var(--green)}
.district-popup>small,.district-popup-stats small{color:var(--muted);font-size:.75rem;line-height:1.35}
.district-popup-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
.district-popup-stats span{display:grid;align-content:start;gap:.2rem;padding:.55rem;background:var(--bg);border-radius:10px;font-size:.75rem;color:var(--muted)}
.district-popup-stats b{font-size:.83rem;color:var(--green);overflow-wrap:anywhere}
.district-popup-links{display:flex;flex-wrap:wrap;gap:.65rem;border-top:1px solid var(--line);padding-top:.6rem}
.district-popup-links a{color:var(--green);font-weight:700;font-size:.81rem}

/* Lecture cartographique immédiate : effectifs et qualité de documentation */
.map-display-controls{display:flex;align-items:center;justify-content:space-between;gap:.7rem;flex-wrap:wrap;margin:.5rem 0 .8rem}
.map-display-controls label{display:flex;align-items:center;gap:.55rem;font-size:.8rem;font-weight:650;color:var(--green)}
.map-display-controls select{border:1px solid var(--line);border-radius:10px;background:var(--surface);padding:.5rem;max-width:100%}
.map-legend{font-size:.77rem;color:var(--muted);line-height:1.5;max-width:560px;margin:.2rem 0}
.leaflet-tooltip.map-count-label{border:0;box-shadow:none;background:transparent;color:#fff;font-family:"Instrument Sans",sans-serif;font-size:.81rem;font-weight:800;padding:0;min-width:16px;text-align:center;pointer-events:none}
.leaflet-tooltip.map-count-label::before{display:none}
@media(max-width:640px){.map-display-controls{align-items:flex-start;flex-direction:column}}

/* Regroupements cartographiques : un groupe compte des quartiers, jamais des logements. */
.district-map-icon{background:transparent;border:0}
.district-map-dot{display:flex;align-items:center;justify-content:center;box-sizing:border-box;background:var(--district-color,#173d34);color:#fff;border:2px solid #fffdf8;border-radius:50%;font-size:.8rem;font-weight:800;font-family:"Instrument Sans",sans-serif;box-shadow:0 2px 8px rgba(0,0,0,.22);text-align:center}
.territory-cluster-icon{display:flex!important;align-items:center;justify-content:center;background:rgba(180,110,74,.24);border:2px solid #fffdf8;border-radius:50%;box-shadow:0 2px 10px rgba(0,0,0,.22)}
.territory-cluster-count{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:#a35935;color:white;font-family:"Instrument Sans",sans-serif;font-size:.86rem;font-weight:800}


/* Aperçu compact : éviter que la liste de programmes étire la carte au chargement. */
.map-results-card{align-items:start}
.program-extra{margin-top:.7rem;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.program-extra summary{cursor:pointer;padding:.85rem;font-size:.82rem;font-weight:700;color:var(--green)}
.program-extra summary:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.program-extra-content{display:grid;gap:.65rem;padding:.65rem}

/* Explorer : carte prioritaire et panneaux superposés, sans toucher aux autres pages. */
.explorer-shell{width:min(1800px,calc(100% - 1.5rem))}
.workspace{display:block}
.map-results-card{position:relative;display:block;padding:0;min-height:680px;isolation:isolate;overflow:hidden}
.map-wrap{min-width:0}
.map-head,.map-display-controls,.map-wrap>.method-note{padding-left:1.2rem;padding-right:1.2rem}
.map-head{padding-top:1.05rem;padding-right:1.2rem}
.search-map{height:clamp(560px,75vh,950px);border:0;border-radius:0}
.map-overlay-controls{position:absolute;top:1rem;left:1rem;right:1rem;display:flex;justify-content:space-between;z-index:810;pointer-events:none}
.map-panel-toggle{pointer-events:auto;cursor:pointer;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:.65rem 1rem;color:var(--green);font-weight:750;box-shadow:var(--shadow)}
.map-side-panel{position:absolute;z-index:805;top:4.7rem;bottom:1rem;width:min(320px,calc(50% - 2.5rem));max-height:none;overflow-y:auto;overscroll-behavior:contain;background:var(--surface);box-shadow:var(--shadow);border:1px solid var(--line);border-radius:20px;padding:1rem;min-width:0;transition:transform .2s ease,opacity .2s ease}
#filtersPanel{left:1rem}
#programsPanel{right:1rem}
#mapWorkspace:not(.show-filters) #filtersPanel{transform:translateX(calc(-100% - 2rem));opacity:0;pointer-events:none;visibility:hidden}
#mapWorkspace:not(.show-programs) #programsPanel{transform:translateX(calc(100% + 2rem));opacity:0;pointer-events:none;visibility:hidden}
.program-list{border:1px solid var(--line);padding:1rem}
.map-wrap>.method-note{padding-top:1rem;padding-bottom:1rem}
.map-results-card .map-head{padding-left:1.2rem;padding-right:1.2rem}
@media(max-width:1100px){.map-results-card{display:block;grid-template-columns:none}.map-side-panel{width:min(340px,calc(50% - 1.5rem));border:1px solid var(--line);padding:1rem}.program-list{border:1px solid var(--line)}}
@media(max-width:700px){.explorer-shell{width:calc(100% - 1rem)}.map-head{padding-top:4.8rem}.map-side-panel{top:4.5rem;bottom:.7rem;width:calc(100% - 1.4rem);left:.7rem!important;right:.7rem!important}.map-results-card.show-filters.show-programs #programsPanel{visibility:hidden;pointer-events:none}.search-map{height:70vh;min-height:480px}.map-overlay-controls{left:.6rem;right:.6rem;top:.7rem}.map-panel-toggle{font-size:.8rem;padding:.55rem .65rem}}

/* Panneaux ancrés dans la zone géographique, sous les titres et légendes. */
.map-canvas{position:relative;min-width:0}
.map-canvas .map-overlay-controls{top:.8rem;left:.8rem;right:.8rem}
.map-canvas .map-side-panel{top:4.4rem;bottom:.8rem}
@media(max-width:700px){.map-head{padding-top:1.05rem}.map-canvas .map-side-panel{top:4rem;bottom:.6rem}.map-canvas .map-overlay-controls{top:.5rem;left:.5rem;right:.5rem}}

/* Mode plein écran de la carte Explorer : filtre et résultats conservés. */
#toggleFullscreen{margin-left:auto}
#mapWorkspace.is-fullscreen{position:fixed;inset:0;z-index:1200;width:100vw;height:100dvh;max-width:none;margin:0;border-radius:0;overflow:auto;background:var(--surface)}
#mapWorkspace.is-fullscreen .search-map{height:calc(100dvh - 145px);min-height:350px}
#mapWorkspace.is-fullscreen .map-side-panel{bottom:.75rem}
body.explorer-map-fullscreen{overflow:hidden}
@media(max-width:700px){#mapWorkspace.is-fullscreen .search-map{height:calc(100dvh - 155px);min-height:300px}#toggleFullscreen{margin-left:0}}

/* Commandes Explorer : laisser le zoom Leaflet libre à gauche. */
.map-canvas .map-overlay-controls{left:5rem;right:.8rem;gap:.5rem;justify-content:flex-start;align-items:flex-start;flex-wrap:wrap}
.map-canvas .map-overlay-controls #togglePrograms{margin-right:auto}
.map-canvas .map-overlay-controls #toggleFullscreen{margin-left:0}
@media(max-width:700px){
 .map-canvas .map-overlay-controls{left:4.4rem;right:.5rem;top:.5rem;gap:.35rem}
 .map-canvas .map-panel-toggle{padding:.45rem .6rem;font-size:.76rem;min-height:38px}
 .map-canvas .map-overlay-controls #togglePrograms{margin-right:0}
 .map-canvas .map-overlay-controls #toggleFullscreen{margin-left:auto}
}
