*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;font-family:Arial,Helvetica,sans-serif;background:#191268;color:white}body{overflow:hidden}.layout{height:calc(100dvh - 78px);display:flex;min-height:400px}.advertising{width:18.8%;background:#080d62;flex:none;position:relative;overflow:hidden;border-right:1px solid #202484}.ad-scroll{position:absolute;inset:20px 12px 17px 18px;overflow:hidden;display:flex;flex-direction:column;gap:11px}.advert{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.advert h3{font-size:clamp(10px,1.12vw,17px);line-height:1;margin:0;font-weight:800;white-space:nowrap}.advert p{font-size:clamp(9px,.82vw,12px);margin:1px 0 4px;color:#c0caee}.advert img{width:100%;height:100%;min-height:0;object-fit:cover;border:1px solid #44647e}.ads-tag{position:absolute;left:10px;bottom:2px;font-size:8px;letter-spacing:.06em;opacity:.5}.center{width:81.2%;position:relative;overflow:hidden;background:#1f1766}.sponsor-line{background:#08105f;min-height:36px;text-align:center;display:flex;align-items:center;justify-content:center;font-size:clamp(10px,1.02vw,15px);padding:4px 12px;white-space:normal}.hero{position:relative;display:flex;justify-content:space-between;gap:20px;padding:17px 33px 5px 16px;z-index:2;pointer-events:none}.intro{max-width:75%}.intro h1{font-size:clamp(20px,2.25vw,34px);line-height:1.28;letter-spacing:.005em;margin:0 0 10px;font-weight:800}.intro h1 span{color:#f9d500}.intro p{font-size:clamp(12px,1.25vw,18px);line-height:1.38;margin:0;max-width:790px}.founder{flex:none;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;width:180px;margin-top:6px;font-size:clamp(10px,1.1vw,16px);gap:3px}.founder img{width:98px;height:100px;object-fit:contain;margin-bottom:5px}.founder strong{font-size:1.03em}.content-area{position:absolute;inset:225px 0 0;overflow:hidden}.map-scroll{position:absolute;top:0;bottom:0;left:6%;width:76%;overflow-y:auto;scrollbar-color:rgba(255,255,255,.32) transparent;scrollbar-width:thin;overscroll-behavior:contain}.map-sheet{width:100%;min-height:1240px;display:flex;justify-content:center;align-items:flex-start;padding:0 0 60px}.map-sheet>img{width:100%;max-width:970px;display:block;height:auto;user-select:none}.right-status{position:absolute;z-index:2;right:3.7%;top:1px;width:40%;max-width:480px;min-width:330px;text-align:center;pointer-events:none}.right-status h2{font-size:clamp(21px,2.4vw,35px);white-space:nowrap;margin:4px 0 10px}.color-strip{display:flex;height:16px}.color-strip i{flex:1}.color-strip i:nth-child(1){background:#bbbcc5}.color-strip i:nth-child(2){background:#ffd500}.color-strip i:nth-child(3){background:#f29405}.color-strip i:nth-child(4){background:#33ab11}.color-strip i:nth-child(5){background:#2448a2}.color-strip i:nth-child(6){background:#62248d}.color-strip i:nth-child(7){background:#e70e0e}.ticks{display:flex;justify-content:space-between;margin-top:7px;font-size:clamp(11px,1.3vw,19px);font-weight:700}.opened{display:inline-block;margin:26px 7px 0 auto;float:right;border-radius:16px;background:#34b400;padding:3px 12px;font-size:clamp(30px,3.2vw,48px);line-height:1.1;font-weight:800}.demo-note{clear:both;padding-top:12px;text-align:right;font-size:10px;letter-spacing:.1em;text-transform:uppercase;opacity:.6}.watermark{position:absolute;right:22px;bottom:9px;font-size:30px;font-weight:300;opacity:.45;line-height:.85;color:#dedafa}.watermark span{font-weight:200}.watermark small{display:block;font-size:9px;text-align:right}.bottom-bar{height:78px;position:fixed;z-index:10;left:0;right:0;bottom:0;display:flex;box-shadow:0 -3px 10px #0b0a24b0}.footer-left{width:53.4%;display:flex;flex-direction:column;min-width:0}.footer-alert{height:38px;background:#b73337;display:flex;align-items:center;justify-content:center;text-align:center;font-size:clamp(13px,1.35vw,21px);white-space:nowrap;padding:0 7px}.footer-info{height:40px;background:#fff;color:#292929;text-align:center;display:flex;align-items:center;justify-content:center;padding:0 12px;font-size:clamp(10px,.85vw,14px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.footer-right{width:46.6%;background:#282829;padding:6px 11px 3px 12px;display:flex;flex-direction:column;gap:4px}.progress-line{display:flex;align-items:center;height:20px;gap:12px}.progress-line.compact{height:13px}.territory{color:#f18f32;font-size:clamp(10px,1vw,17px);font-weight:700;text-align:right;width:110px;flex:none;white-space:nowrap}.compact .territory{font-size:clamp(9px,.85vw,13px)}.step-track{height:7px;background:#8b8d8e;position:relative;flex:1;margin:0 7px 0 0;min-width:0}.fill{height:100%;position:absolute;top:0;left:0}.fill.orange{background:#fb8e2f}.step{position:absolute;top:50%;transform:translate(-50%,-50%);border-radius:50%;width:25px;height:25px;background:#666b77;color:#fff;display:grid;place-items:center;font-weight:800;font-size:15px}.step.active{background:#f79232}@media(max-height:760px){.ad-scroll{gap:7px;inset:8px 9px 14px 12px}.advert p{margin-bottom:2px}.hero{padding-top:11px}.content-area{top:210px}.founder img{width:75px;height:72px}}@media(max-width:950px){.advertising{width:22%}.center{width:78%}.hero{padding:12px 15px 0}.intro{max-width:79%}.founder{width:105px}.founder img{width:69px;height:75px}.content-area{top:190px}.right-status{top:5px;right:2%;min-width:0;width:44%}.map-scroll{left:0;width:85%}.footer-left{width:55%}.footer-right{width:45%}.territory{width:83px}.footer-alert{white-space:normal}.footer-info{white-space:normal}}@media(max-width:650px){.layout{height:calc(100dvh - 102px)}.advertising{width:25%}.center{width:75%}.sponsor-line{font-size:9px}.hero{padding:10px}.intro{max-width:100%}.intro h1{font-size:15px}.intro p{font-size:11px}.founder{display:none}.content-area{top:230px}.map-scroll{left:0;width:100%}.right-status{left:5%;right:5%;top:-6px;width:90%;max-width:none}.right-status h2{font-size:16px}.opened{font-size:22px;margin-top:12px}.ticks{font-size:9px}.bottom-bar{height:102px;flex-direction:column}.footer-left,.footer-right{width:100%}.footer-left{height:51px}.footer-alert{height:26px;font-size:12px}.footer-info{height:25px;font-size:10px}.footer-right{height:51px;padding:3px 8px;gap:1px}.progress-line{height:15px}.progress-line.compact{height:10px}.territory{width:68px;font-size:9px}.step{width:18px;height:18px;font-size:11px}.advert h3{font-size:9px}.advert p{font-size:8px}}/* V2 — En-tête compact : davantage d'espace visible pour la carte. */
.sponsor-line{min-height:27px;font-size:clamp(9px,.82vw,12px);padding:3px 10px}
.hero{padding:9px 23px 0 16px;gap:12px}
.intro{max-width:calc(100% - 135px)}
.intro h1{font-size:clamp(16px,1.63vw,25px);line-height:1.13;margin:0 0 7px;letter-spacing:0}
.intro p{font-size:clamp(11px,.95vw,14px);line-height:1.25;max-width:750px}
.founder{width:130px;margin-top:0;gap:1px;font-size:clamp(9px,.88vw,13px)}
.founder img{width:67px;height:66px;margin-bottom:2px}
.content-area{top:166px}
.right-status{top:2px;right:3%;width:37%;min-width:280px;max-width:420px}
.right-status h2{font-size:clamp(17px,1.85vw,27px);margin:2px 0 6px}
.color-strip{height:11px}
.ticks{font-size:clamp(9px,1vw,14px);margin-top:4px}
.opened{font-size:clamp(23px,2.3vw,35px);margin-top:11px;border-radius:11px;padding:2px 9px}
.demo-note{font-size:8px;padding-top:6px}
/* Cacher totalement l'ascenseur, sans supprimer le défilement de la carte. */
.map-scroll{scrollbar-width:none;-ms-overflow-style:none}
.map-scroll::-webkit-scrollbar{display:none;width:0;height:0}
@media(max-height:760px){.hero{padding-top:6px}.content-area{top:151px}.founder img{width:54px;height:53px}.intro h1{font-size:clamp(15px,1.5vw,22px)}.intro p{font-size:clamp(10px,.89vw,13px)}.right-status h2{font-size:clamp(16px,1.7vw,24px)}}
@media(max-width:950px){.hero{padding:8px 12px 0}.intro{max-width:calc(100% - 92px)}.intro h1{font-size:clamp(15px,1.8vw,21px)}.intro p{font-size:clamp(10px,1.15vw,13px)}.founder{width:90px;font-size:10px}.founder img{width:49px;height:48px}.content-area{top:150px}.right-status{min-width:0;width:43%}}
@media(max-width:650px){.hero{padding:6px 8px 0}.intro{max-width:100%}.intro h1{font-size:clamp(12px,2.7vw,16px);line-height:1.12}.intro p{font-size:10px;line-height:1.2}.content-area{top:173px}.right-status h2{font-size:15px}.opened{font-size:20px;margin-top:8px}.color-strip{height:8px}}

/* V3 — carte administrative réelle, sans fonds de tuiles, routage, étiquettes ni marqueurs. */
.map-sheet{min-height:1400px;padding:0 0 70px;align-items:flex-start}
.real-map-wrap{width:100%;max-width:1100px;position:relative;display:flex;justify-content:center;align-items:flex-start}
#real-map{display:block;width:100%;height:auto;overflow:visible;user-select:none}
#communes-layer path{fill:#fff;stroke:#8f8f8f;stroke-width:.7;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round;shape-rendering:geometricPrecision;pointer-events:visiblePainted;cursor:pointer}
#departements-layer path{fill:none;stroke:#383838;stroke-width:2.1;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round;shape-rendering:geometricPrecision;pointer-events:none}
.map-loading{position:absolute;left:50%;top:160px;transform:translateX(-50%);color:#404040;background:#fff;border:1px solid #ddd;padding:12px 18px;border-radius:5px;font-size:13px;text-align:center;width:max-content;max-width:90%;z-index:2}
.map-loading[hidden]{display:none}

/* V4 — Sélecteur postal/commune local, sans changement du scroll cartographique. */
.commune-search{position:absolute;top:5px;left:2.5%;width:min(405px,49%);z-index:7;pointer-events:auto}
.commune-search form{background:rgba(21,18,88,.95);border:1px solid #5555b2;border-radius:8px;padding:10px 12px;box-shadow:0 4px 16px #100d4640}
.commune-search label{display:block;font-size:11px;font-weight:800;letter-spacing:.07em;margin-bottom:7px}
.commune-search-fields{display:flex;gap:6px;align-items:stretch}
.commune-search input,.commune-search select{height:34px;border:1px solid #a6add6;background:#fff;color:#18204a;border-radius:4px;padding:0 8px;font-size:13px;min-width:0}
.commune-search input{width:105px;flex:none}
.commune-search select{flex:1}
.commune-search input:focus-visible,.commune-search select:focus-visible,.commune-search button:focus-visible{outline:2px solid #ffd900;outline-offset:2px}
.commune-search input:disabled,.commune-search select:disabled{background:#e5e5ed;color:#6a6b75}
.commune-search button{border:0;border-radius:4px;padding:0 10px;font-size:12px;font-weight:800;background:#f8d000;color:#161458;cursor:pointer}
.commune-search button:disabled{background:#969bc0;color:#e4e5f2;cursor:not-allowed}
.commune-search-message{font-size:11px;margin:7px 0 0;color:#e5e6fa;min-height:1em}
#selected-commune-layer path{fill:#ffbb3d;fill-opacity:.72;stroke:#aa470b;stroke-width:2.7;vector-effect:non-scaling-stroke;pointer-events:none}
@media(max-width:1100px){.commune-search{width:55%;left:2%}.commune-search-fields{flex-wrap:wrap}.commune-search input{width:100px}.commune-search select{width:calc(100% - 110px)}.commune-search button{height:30px;flex:1}}
@media(max-width:650px){.commune-search{left:3%;top:0;width:94%}.commune-search form{padding:5px 6px}.commune-search label{font-size:9px;margin-bottom:4px}.commune-search-fields{gap:4px}.commune-search input,.commune-search select{height:27px;font-size:11px}.commune-search input{width:83px}.commune-search select{flex:1}.commune-search button{height:27px;font-size:10px}.commune-search-message{font-size:9px;margin:3px 0 0}}

/* V6 — Contour sélectionné bleu pastel, trait mince et intérieur transparent. */
#selected-commune-layer path{fill:none!important;fill-opacity:0!important;stroke:#79c8ec!important;stroke-width:1.15!important;vector-effect:non-scaling-stroke;pointer-events:visibleStroke;cursor:pointer;stroke-linejoin:round}
#selected-commune-layer path:hover,#selected-commune-layer path:focus-visible{stroke:#2b9ccf!important;stroke-width:1.9!important;outline:none}
#commune-labels-layer text{paint-order:stroke;stroke:rgba(255,255,255,.92);stroke-width:.85;stroke-linejoin:round;shape-rendering:geometricPrecision;letter-spacing:.01em}
#communes-layer path{pointer-events:visiblePainted;cursor:pointer}
#communes-layer path:hover,#communes-layer path:focus-visible{fill:#eef8ff;stroke:#2e9ed0;stroke-width:1.15;outline:none}
/* Fiche de commune à deux colonnes, par-dessus la carte ; bande inférieure et pubs inchangées. */
.commune-panel[hidden]{display:none!important}
.commune-panel{position:absolute;z-index:8;inset:0 0 0 0;overflow-y:auto;background:#fff;color:#0a155e;padding:20px 20px 26px 24px;scrollbar-width:none}
.commune-panel::-webkit-scrollbar{display:none}
.commune-panel-top{display:flex;align-items:start;justify-content:space-between;gap:14px;margin-bottom:8px}
.commune-panel-lede{font-size:clamp(12px,1.12vw,16px);line-height:1.45;font-weight:700;margin:0;max-width:900px}
.panel-close{background:#151166;color:#fff;border:0;border-radius:20px;padding:8px 15px;font-size:13px;font-weight:700;cursor:pointer;flex:none}
.commune-panel-body{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(250px,.85fr);gap:16px;align-items:stretch;margin-top:16px}
.commune-data{min-width:0}
.commune-data h2{font-size:clamp(22px,2.45vw,38px);line-height:1.1;margin:0 0 15px;color:#0e1265}
.commune-stats{display:grid;grid-template-columns:minmax(85px,26%) 1fr minmax(125px,29%);gap:15px}
.commune-shape{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:4px}
#commune-mini-map{display:block;width:100%;max-width:175px;height:150px;overflow:visible}
.mini-progress{width:72%;height:12px;margin-top:8px;background:#ededed}
.mini-progress>span{display:block;height:100%;background:#f5a800}
.shape-rate{font-size:clamp(20px,2vw,29px);font-weight:900;padding:8px;color:#13176e}
.commune-stat-text{font-size:clamp(13px,1.2vw,17px);line-height:1.38}
.commune-stat-text p{margin:0 0 15px}.commune-stat-text strong{font-size:1.05em}
.commune-stat-text small{display:block;font-size:11px;color:#646b80;margin-top:10px}
.take-photo{text-align:center;align-self:center}
.take-photo .handnote{font-family:Georgia,serif;font-style:italic;color:#de9000;font-size:clamp(18px,2.1vw,33px);margin-bottom:12px}
.take-photo strong{display:block;font-size:clamp(13px,1.55vw,23px);margin-bottom:12px}
.camera-button{border:0;border-radius:38px;background:#ffae08;color:#07135a;padding:12px 20px;font-weight:900;font-size:23px;cursor:pointer}
.camera-button svg{vertical-align:middle;width:32px;height:32px}
.photo-upload-note{font-size:11px;color:#4e5365;line-height:1.4}
.commune-gallery-col{background:#070b70;color:#fff;border-radius:0 22px 22px 0;padding:18px;min-width:0}
.commune-gallery-col h3{font-size:clamp(22px,2.3vw,34px);line-height:1.06;font-weight:500;margin:0 0 16px}
.commune-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
.gallery-thumb{background:#252278;border:0;padding:0;position:relative;cursor:zoom-in;color:#fff;aspect-ratio:1.2;min-width:0;overflow:hidden}
.gallery-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.gallery-thumb span{position:absolute;inset:auto 0 0;background:#070a56b8;color:#fff;font-size:10px;padding:4px;text-align:left}
.gallery-thumb:focus-visible{outline:3px solid #ffb300;outline-offset:2px}
.gallery-empty{grid-column:1/-1;padding:22px 12px;min-height:180px;border:1px dashed #a0a9e0;font-size:13px;line-height:1.5}
.demo-data-note{font-size:11px;color:#646b80;margin-top:14px}
#photo-lightbox{border:0;padding:15px;background:#fff;border-radius:10px;color:#152056;max-width:min(95vw,960px);max-height:95vh;box-shadow:0 15px 75px #0008}
#photo-lightbox::backdrop{background:rgba(0,0,0,.88)}
#photo-large{display:block;max-width:100%;max-height:75vh;object-fit:contain;margin:12px auto}
.lightbox-top{display:flex;justify-content:space-between;gap:20px;align-items:center}
#photo-source{color:#174ca9}
@media(max-width:1150px){.commune-panel{padding:14px}.commune-panel-body{grid-template-columns:1.45fr 1fr}.commune-stats{grid-template-columns:100px 1fr;gap:10px}.take-photo{grid-column:1/-1}.commune-gallery-col{padding:12px}}
@media(max-width:700px){.commune-panel-lede{font-size:12px}.commune-panel-body{grid-template-columns:1fr}.commune-stats{grid-template-columns:100px 1fr}.commune-gallery-col{border-radius:16px}.commune-gallery-col h3{font-size:24px}}

/* V7 — fiche flottante sur la carte, jamais une page entière. */
.commune-panel{
  position:absolute;inset:auto;z-index:30;
  left:clamp(12px,5%,65px);top:clamp(125px,21%,195px);
  width:min(900px,90%);height:auto;max-height:min(65dvh,590px);
  overflow-y:auto;border:1px solid #cfd7e8;border-radius:15px;
  background:#fff;color:#0a155e;padding:17px 19px 19px;
  box-shadow:0 20px 65px rgba(0,0,30,.47);
  scrollbar-width:thin;scrollbar-color:#b3bfd8 transparent;
}
.commune-panel::-webkit-scrollbar{display:block;width:6px}
.commune-panel::-webkit-scrollbar-thumb{background:#b3bfd8;border-radius:10px}
.commune-panel-lede{font-size:clamp(10px,.91vw,13px);line-height:1.35}
.commune-panel-top{align-items:flex-start}
.commune-panel-body{grid-template-columns:minmax(0,1.48fr) minmax(195px,.92fr);gap:13px;margin-top:12px}
.commune-data h2{font-size:clamp(18px,1.8vw,27px);margin-bottom:11px}
.commune-stats{grid-template-columns:minmax(70px,23%) 1fr;gap:10px}
#commune-mini-map{height:108px;max-width:130px}
.commune-stat-text{font-size:clamp(11px,1vw,14px)}
.commune-stat-text p{margin-bottom:8px}
.take-photo{grid-column:1/-1;display:flex;justify-content:center;align-items:center;gap:14px;text-align:left}
.take-photo .handnote{font-size:18px;margin:0}.take-photo strong{font-size:15px;margin:0}
.camera-button{font-size:18px;padding:7px 15px}
.commune-gallery-col{border-radius:12px;padding:12px}
.commune-gallery-col h3{font-size:clamp(18px,1.8vw,25px);margin-bottom:10px}
.gallery-thumb{aspect-ratio:1.45}
.gallery-empty{min-height:90px}
.demo-data-note{font-size:10px;margin:9px 0 11px}
/* Le nom apparaît à proximité du curseur ; chefs-lieux volontairement plus lisibles. */
.commune-hover-label{
  position:fixed;z-index:110;pointer-events:none;
  background:#fff;color:#18245b;border:1px solid #80b9d8;
  border-radius:5px;padding:4px 8px;font-size:12px;font-weight:600;
  white-space:nowrap;box-shadow:0 2px 11px #0003;max-width:65vw;
}
.commune-hover-label.chief-town{
  font-size:18px;font-weight:850;color:#07176d;
  border-width:2px;border-color:#1688c2;padding:6px 10px;
}
.commune-hover-label[hidden]{display:none!important}
@media(max-width:950px){
 .commune-panel{top:23%;left:3%;width:94%;max-height:61dvh;padding:12px}
 .commune-panel-body{grid-template-columns:1fr 200px}
 .commune-stats{grid-template-columns:90px 1fr}
}
@media(max-width:700px){
 .commune-panel{top:21%;left:2.5%;width:95%;max-height:67dvh;padding:11px}
 .commune-panel-body{grid-template-columns:1fr}
 .commune-gallery-col{padding:9px}
 .commune-gallery-col h3{font-size:18px}
 .commune-stats{grid-template-columns:90px 1fr}
 .commune-hover-label{font-size:11px}.commune-hover-label.chief-town{font-size:15px}
}
/* Fenêtre volontairement compacte ; la carte reste visible autour. */
@media(min-width:701px){.commune-panel{width:min(760px,84%);max-height:min(57dvh,500px)}}

/* V8 — carreau millésime et carte du Grand Ouest, sans modifier les panneaux fixes. */
.edition-card{position:absolute;z-index:6;top:117px;left:2.5%;width:clamp(138px,17vw,214px);padding:12px 14px 11px;text-align:left;text-decoration:none;color:#fff;background:linear-gradient(145deg,#173c9c,#071255 70%);border:1px solid rgba(249,213,72,.9);border-radius:12px;box-shadow:0 8px 26px rgba(5,5,35,.36);display:flex;flex-direction:column;gap:3px;transition:transform .16s,box-shadow .16s}
.edition-card:hover,.edition-card:focus-visible{transform:translateY(-3px);box-shadow:0 11px 30px rgba(5,5,35,.55);outline:2px solid #ffdf5f;outline-offset:2px}
.edition-directions{position:absolute;right:10px;top:8px;color:#f5d34c;font-size:29px;font-weight:700;line-height:1}
.edition-year{font-size:clamp(27px,3vw,44px);font-weight:900;letter-spacing:-.045em;line-height:1.1;color:#ffdf64}
.edition-caption{font-size:clamp(8px,.65vw,10px);font-weight:700;line-height:1.35;letter-spacing:.015em;opacity:.95}
.edition-cta{margin-top:6px;color:#f6d859;font-size:10px;font-weight:900;letter-spacing:.07em}
.edition-2028 .edition-card{border-color:rgba(123,202,248,.85);background:linear-gradient(145deg,#385fb6,#11115f 85%)}
.edition-2028 .edition-year,.edition-2028 .edition-directions,.edition-2028 .edition-cta{color:#addefc}
.edition-2028 .founder img{filter:hue-rotate(20deg)}
@media(max-width:950px){.edition-card{top:117px;left:2%;padding:8px 10px}.edition-year{font-size:27px}.edition-caption{font-size:8px}}
@media(max-width:650px){.edition-card{top:105px;left:3%;width:110px;padding:7px}.edition-year{font-size:23px}.edition-caption{font-size:7px;line-height:1.2}.edition-directions{font-size:18px}}

/* V9 — Navigation des campagnes par voisinage géographique et zoom de carte. */
.edition-navigation{position:absolute;z-index:6;inset:0;pointer-events:none}
.edition-navigation .edition-card{pointer-events:auto;position:absolute;top:auto;right:auto;bottom:auto;left:auto;display:flex;gap:3px;
  width:clamp(100px,12vw,156px);min-height:68px;padding:9px 11px 8px;
  border:1px solid rgba(242,204,87,.8);border-radius:10px;
  box-shadow:0 6px 20px rgba(0,0,35,.4);background:linear-gradient(145deg,#1a46a0,#0c1560);
  text-decoration:none;color:#fff;transition:transform .15s,box-shadow .15s}
.edition-navigation .edition-card:hover,.edition-navigation .edition-card:focus-visible{
  transform:scale(1.04);box-shadow:0 9px 24px rgba(0,0,0,.55);outline:2px solid #ffdc62;outline-offset:2px}
.edition-navigation .edition-year{font-size:clamp(23px,2vw,30px);line-height:1;color:#ffdd66}
.edition-navigation .edition-caption{font-size:clamp(8px,.7vw,10px);line-height:1.15;white-space:normal}
.edition-navigation .edition-cta{font-size:9px;margin-top:4px;color:#ffe68c}
.edition-navigation .edition-nord-ouest{top:116px;left:1.8%}
.edition-navigation .edition-nord-est{top:118px;right:2.4%}
.edition-navigation .edition-sud-est{bottom:75px;right:2.4%}
.edition-navigation .edition-sud-ouest{bottom:75px;left:1.8%}
.edition-navigation .edition-nord{top:15px;left:52%;transform:translateX(-50%)}
.edition-navigation .edition-nord:hover,.edition-navigation .edition-nord:focus-visible{transform:translateX(-50%) scale(1.04)}
.edition-navigation .edition-ouest{top:46%;left:1.8%}
/* Map scroll: horizontal and vertical with hidden scrollbars, even at x7 zoom. */
.map-scroll{overflow:auto;scrollbar-width:none;overscroll-behavior:contain;touch-action:pan-x pan-y}
.map-sheet{justify-content:center;min-width:100%;min-height:0;display:block;padding:0 0 55px}
.real-map-wrap{margin:0 auto;max-width:none}
.zoom-controls{position:absolute;z-index:9;left:1.8%;top:13px;display:flex;align-items:center;gap:4px;
  border:1px solid #8394c8;background:#08115ce8;border-radius:9px;padding:5px;box-shadow:0 5px 17px #0a073a80}
.zoom-controls button{width:30px;height:30px;border-radius:5px;color:#fff;background:#314b9b;border:1px solid #7390d0;
  font-size:19px;font-weight:700;cursor:pointer}
.zoom-controls button:hover,.zoom-controls button:focus-visible{background:#536dc2;outline:2px solid #ffdf64}
.zoom-controls span{min-width:51px;text-align:center;color:#fff;font-size:11px;font-weight:800;font-variant-numeric:tabular-nums}
/* avoid obstructing the postcode/commune search */
.zoom-controls{top:90px}
@media(max-width:1000px){
 .edition-navigation .edition-card{width:102px;min-height:57px;padding:7px}
 .edition-navigation .edition-year{font-size:22px}
 .edition-navigation .edition-caption{font-size:8px}
 .edition-navigation .edition-cta{font-size:8px}
 .edition-navigation .edition-nord-ouest,.edition-navigation .edition-nord-est{top:157px}
 .edition-navigation .edition-sud-est,.edition-navigation .edition-sud-ouest{bottom:22px}
}
@media(max-width:650px){
 .zoom-controls{top:107px;left:3%;padding:3px}
 .zoom-controls button{width:24px;height:25px;font-size:16px}
 .zoom-controls span{min-width:40px;font-size:9px}
 .edition-navigation .edition-card{width:83px;min-height:48px;padding:5px;gap:2px;border-radius:7px}
 .edition-navigation .edition-year{font-size:19px}
 .edition-navigation .edition-caption{font-size:7px}
 .edition-navigation .edition-cta{font-size:7px}
 .edition-navigation .edition-nord-ouest,.edition-navigation .edition-nord-est{top:159px}
 .edition-navigation .edition-sud-est,.edition-navigation .edition-sud-ouest{bottom:8px}
 .edition-navigation .edition-nord{top:108px;left:63%}
}

/* Huit directions possibles, calculées par rapport à l'édition courante. */
.edition-navigation .edition-est{top:47%;right:1.8%}
.edition-navigation .edition-sud{bottom:8px;left:50%;transform:translateX(-50%)}
.edition-navigation .edition-sud:hover,.edition-navigation .edition-sud:focus-visible{transform:translateX(-50%) scale(1.04)}
/* Rare collision de deux cartes voisines : décale le deuxième carreau. */
.edition-navigation .edition-card[style*="--neighbor-rank: 1"]{margin-top:82px}
@media(max-width:1000px){.edition-navigation .edition-card[style*="--neighbor-rank: 1"]{margin-top:62px}}

/* V10 — cartes des campagnes SOLIDAIRES de la géographie (scroll + zoom). */
.map-sheet{position:relative;isolation:isolate;}
.map-sheet>.edition-navigation{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:visible;}
.map-sheet>.edition-navigation .edition-card{
  position:absolute;bottom:auto;right:auto;margin:0!important;
  transform:none!important;max-width:17%;width:clamp(94px,11vw,148px);
  pointer-events:auto;
}
.map-sheet>.edition-navigation .edition-card:hover,
.map-sheet>.edition-navigation .edition-card:focus-visible{
  transform:scale(1.045)!important;
}
/* V10 — 12 espaces au format panoramique, défilement autonome, sans scrollbar. */
.ad-scroll{display:block;overflow:hidden;inset:12px 11px 12px 13px;}
.ad-track{display:flex;flex-direction:column;width:100%;animation:arcavium-ad-marquee 72s linear infinite;will-change:transform;}
.ad-set{display:flex;flex-direction:column;gap:12px;padding-bottom:12px;flex:none;}
.advert{flex:none;height:118px;min-height:0;display:flex;flex-direction:column;gap:0;overflow:hidden;}
.advert h3{flex:none;line-height:1.07;font-size:clamp(10px,1.04vw,15px);text-overflow:ellipsis;overflow:hidden;}
.advert p{flex:none;margin:2px 0 4px;font-size:clamp(9px,.75vw,12px);line-height:1.1;}
.advert img{height:auto;aspect-ratio:3.12/1;min-height:0;max-height:77px;object-fit:cover;flex:none;}
@keyframes arcavium-ad-marquee{from{transform:translateY(0)}to{transform:translateY(-50%)}}
.ad-scroll:hover .ad-track,.ad-scroll:focus-within .ad-track{animation-play-state:paused;}
@media(prefers-reduced-motion:reduce){.ad-track{animation:none}.ad-scroll{overflow-y:auto;scrollbar-width:none}.ad-scroll::-webkit-scrollbar{display:none}}
@media(max-height:760px){.ad-scroll{inset:7px 9px 9px 10px}.advert{height:107px}.ad-set{gap:8px;padding-bottom:8px}.advert img{max-height:68px}}
@media(max-width:650px){.advert{height:87px}.ad-set{gap:8px;padding-bottom:8px}.advert img{max-height:52px}.advert h3{font-size:9px}.advert p{font-size:8px}.map-sheet>.edition-navigation .edition-card{width:82px;max-width:19%;}}


/* V11 — corrections de positionnement des carreaux et proportions de la colonne gauche. */
.map-sheet{padding:0 0 65px;}
.map-sheet>.edition-navigation{position:absolute;inset:0;z-index:5;overflow:visible;}
.map-sheet>.edition-navigation .edition-card{width:clamp(116px,12.6vw,172px);max-width:none;min-height:72px;padding:10px 12px 9px;border-radius:11px;}
.map-sheet>.edition-navigation .edition-year{white-space:nowrap;letter-spacing:-.03em;font-size:clamp(24px,2.1vw,31px)}
.map-sheet>.edition-navigation .edition-caption{font-size:clamp(8px,.68vw,10px);line-height:1.1}
.map-sheet>.edition-navigation .edition-card[data-year="2032-2033"]{width:clamp(144px,15.5vw,210px)}
.map-sheet>.edition-navigation .edition-card[data-year="2032-2033"] .edition-caption{font-size:clamp(8px,.65vw,10px)}
.map-sheet>.edition-navigation .edition-card[data-year="2032-2033"] .edition-year{font-size:clamp(22px,1.95vw,29px)}
.ad-scroll{inset:10px 10px 12px 14px;}
.ad-set{gap:10px;padding-bottom:10px;}
.advert{height:auto;gap:0}
.advert h3{font-size:clamp(10px,1.02vw,16px);line-height:1.04;margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.advert p{font-size:clamp(8px,.74vw,11px);line-height:1.08;margin:0 0 4px;color:#d8dbf0}
.advert img{display:block;width:100%;height:auto;aspect-ratio:2.18/1;max-height:none;border:1px solid #36537b}
@media(max-height:760px){.ad-scroll{inset:8px 9px 10px 11px;}.ad-set{gap:8px;padding-bottom:8px;}.advert img{aspect-ratio:2.18/1;}}
@media(max-width:650px){.map-sheet>.edition-navigation .edition-card{width:90px;min-height:54px;padding:6px 7px;}.map-sheet>.edition-navigation .edition-card[data-year="2032-2033"]{width:108px}.advert img{aspect-ratio:2.18/1;}}


/* V12 */
.map-sheet>.edition-navigation .edition-card{z-index:6;box-shadow:0 10px 24px rgba(3,8,42,.38);}
.map-sheet>.edition-navigation .edition-card[data-year="2032-2033"]{width:clamp(154px,16.2vw,224px)}
.hover-label{z-index:20;}

/* V13 — la carte 2027 utilise les emprises départementales pour dégager les carreaux.
   Les autres cartes conservent strictement la position V12. */
.map-sheet>.edition-navigation .edition-card[hidden]{display:none!important}

/* V16 — une seule surface pour la carte et les carreaux ; aucun chevauchement toléré. */
.real-map-wrap{position:relative;isolation:isolate;}
.real-map-wrap > .edition-navigation{position:absolute;inset:0;z-index:5;pointer-events:none;overflow:visible;}
.real-map-wrap > .edition-navigation > .edition-card{
  position:absolute;left:0;top:0;right:auto;bottom:auto;
  margin:0!important;transform:none!important;max-width:none;
  width:clamp(112px,12vw,160px);min-height:72px;
  pointer-events:auto;
}
.real-map-wrap > .edition-navigation > .edition-card[data-year="2032-2033"]{
  width:clamp(148px,16vw,205px);
}
.real-map-wrap > .edition-navigation > .edition-card[hidden]{display:none!important;}
.real-map-wrap > .edition-navigation > .edition-card:hover,
.real-map-wrap > .edition-navigation > .edition-card:focus-visible{transform:scale(1.035)!important;}
@media(max-width:650px){
.real-map-wrap > .edition-navigation > .edition-card{width:86px;min-height:53px;padding:6px;}
.real-map-wrap > .edition-navigation > .edition-card[data-year="2032-2033"]{width:112px;}
}

.real-map-wrap > .edition-navigation[hidden]{display:none!important;}


/* V19 — Navigation directionnelle sans les anciens carreaux bleus.
   Elle occupe exclusivement la marge droite de la carte (hors map-scroll). */
.regional-arrows{position:absolute;z-index:8;right:1.15%;top:clamp(176px,32%,270px);width:clamp(112px,16.5%,204px);display:flex;flex-direction:column;gap:7px;pointer-events:auto;}
.regional-arrows[hidden]{display:none!important;}
.regional-arrows-heading{margin:0 0 4px;color:#d8ddff;font-size:clamp(8px,.7vw,10px);font-weight:800;letter-spacing:.12em;text-align:center;}
.regional-arrow{display:flex;align-items:center;gap:9px;padding:7px 9px;min-height:49px;color:#fff;text-decoration:none;border:1px solid #8c9ad0;border-radius:10px;background:linear-gradient(115deg,#101957eb,#182b75d9);box-shadow:0 3px 11px #07083c4d;transition:background .16s,border-color .16s,transform .16s;}
.regional-arrow:hover,.regional-arrow:focus-visible{background:#2f4ca3;border-color:#ffe18a;outline:2px solid #ffe18a;outline-offset:2px;transform:translateX(-3px);}
.regional-arrow-icon{flex:none;display:grid;place-items:center;width:31px;height:31px;background:#e5bd51;color:#141958;border-radius:50%;font-size:25px;font-weight:900;line-height:1;}
.regional-arrow-label{min-width:0;display:flex;flex-direction:column;gap:2px;}
.regional-arrow-label strong{font-size:clamp(12px,1.03vw,16px);font-weight:900;line-height:1.1;white-space:nowrap;font-variant-numeric:tabular-nums;}
.regional-arrow-label small{font-size:clamp(8px,.66vw,10px);font-weight:700;line-height:1.2;color:#e1e7ff;overflow-wrap:anywhere;}
@media(max-width:1050px){.regional-arrows{width:clamp(94px,15.5%,155px);right:.5%;top:clamp(175px,33%,240px);gap:5px}.regional-arrow{min-height:39px;gap:5px;padding:5px}.regional-arrow-icon{width:25px;height:25px;font-size:20px}.regional-arrow-label small{font-size:8px}.regional-arrows-heading{font-size:8px}}
@media(max-width:700px){.regional-arrows{right:1%;top:clamp(170px,35%,260px);width:clamp(70px,19%,110px);gap:4px}.regional-arrow{border-radius:7px;padding:4px;gap:4px;min-height:32px}.regional-arrow-icon{width:20px;height:20px;font-size:16px}.regional-arrow-label strong{font-size:10px}.regional-arrow-label small{font-size:7px}.regional-arrows-heading{font-size:7px}}
@media(prefers-reduced-motion:reduce){.regional-arrow{transition:none}}

/* V21/V22 — titre visible au-dessus de la carte, sans chevauchement avec la recherche. */
.campaign-map-heading{position:absolute;z-index:9;left:46%;top:10px;width:clamp(280px,34%,450px);max-width:none;pointer-events:none;display:flex;justify-content:center;align-items:baseline;flex-wrap:wrap;gap:4px 8px;transform:translateX(-4%);
 background:rgba(14,28,102,.94);border:1px solid rgba(238,206,94,.72);border-radius:10px;padding:7px 12px;text-align:center;
 box-shadow:0 5px 16px rgba(9,20,68,.24);font-weight:800;color:#fff;letter-spacing:.025em;}
.campaign-map-heading strong{font-size:clamp(15px,1.75vw,24px);color:#ffe06c;white-space:nowrap;}
.campaign-map-heading span{font-size:clamp(10px,1.02vw,15px);line-height:1.18;}
#overseas-background{pointer-events:none;}
@media(max-width:900px){.campaign-map-heading{left:49%;width:clamp(250px,38%,400px);transform:translateX(-8%);}}
@media(max-width:700px){.campaign-map-heading{left:50%;width:56%;gap:4px;padding:5px 7px;top:8px;border-radius:6px;transform:translateX(-10%)}.campaign-map-heading strong{font-size:12px}.campaign-map-heading span{font-size:8px}}


/* Intégration Arcavium V1 — module autonome « Regard des habitants ». */
/* La colonne publicitaire a été retirée du DOM : 100 % d'espace pour la carte. */
html,body{width:100%;height:100%;}
.layout{display:flex;width:100%;min-height:0;}
.center{display:flex;flex-direction:column;width:100%;min-width:0;height:100%;overflow:hidden;}
.sponsor-line{flex:0 0 auto;}
.hero{flex:0 0 auto;min-width:0;}
.region-toolbar{
  flex:0 0 auto;z-index:12;display:flex;align-items:center;justify-content:space-between;
  gap:15px;min-height:71px;padding:8px clamp(12px,2.8%,32px);
  background:linear-gradient(95deg,#0f175b,#1d286d);border-block:1px solid #46528f;
}
.region-title{min-width:0;display:flex;flex-direction:column;gap:4px;}
.region-title small{font-size:11px;letter-spacing:.075em;font-weight:700;color:#d4dbff;}
.region-toolbar .campaign-map-heading{
  position:static!important;inset:auto!important;display:block!important;
  margin:0!important;padding:0!important;transform:none!important;
  width:auto!important;max-width:none!important;min-height:auto;
  background:transparent!important;border:0!important;box-shadow:none!important;
  color:#ffdf72;font-size:clamp(20px,2.5vw,32px);font-weight:850;
  line-height:1.15;text-align:left;letter-spacing:.01em;white-space:normal;
}
.region-toolbar .campaign-map-heading span{font-size:inherit;color:inherit;line-height:inherit;}
.region-picker{display:flex;flex-direction:column;flex:0 1 330px;gap:5px;min-width:180px;}
.region-picker label{font-size:12px;font-weight:800;letter-spacing:.04em;color:#f5f6ff;}
.region-picker select{
  width:100%;height:38px;max-width:100%;padding:0 12px;border:1px solid #b9c6fa;
  border-radius:8px;color:#13205b;background:#fff;font:700 14px/1.2 Arial,Helvetica,sans-serif;
  cursor:pointer;
}
.region-picker select:focus-visible{outline:3px solid #ffdf72;outline-offset:2px;}
.content-area{position:relative;inset:auto!important;top:auto!important;left:auto!important;right:auto!important;bottom:auto!important;flex:1 1 auto;min-height:0;overflow:hidden;}
.map-scroll{left:0;width:84%;}
.right-status{right:1.5%;width:29%;max-width:410px;min-width:255px;}
.regional-arrows{right:.7%;}
/* Les outils ne doivent plus chevaucher le nom de la région, désormais hors carte. */
.zoom-controls{top:100px;}
.footer-alert{white-space:normal;overflow-wrap:anywhere;line-height:1.15;}
@media(max-width:1050px){
 .map-scroll{width:100%;}
 .right-status{right:2%;min-width:210px;width:35%;}
}
@media(max-width:700px){
 .region-toolbar{min-height:0;gap:9px;align-items:stretch;flex-direction:column;padding:7px 10px 9px;}
 .region-title small{font-size:9px;}
 .region-toolbar .campaign-map-heading{font-size:clamp(16px,5vw,23px);}
 .region-picker{min-width:0;flex:0 0 auto;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:7px;}
 .region-picker label{font-size:10px;}
 .region-picker select{height:33px;font-size:12px;min-width:0;}
 .map-scroll{left:0;width:100%;}
 .right-status{min-width:0;width:42%;left:auto;right:2%;top:120px;}
 .right-status h2{font-size:13px;}
 .zoom-controls{top:108px;}
 .commune-search{top:0;}
}
@media(max-width:400px){
 .region-picker{grid-template-columns:1fr;gap:4px;}
 .right-status{top:142px;}
}

/* Adaptation légère : chiffres visibles sans recouvrir les noms de communes sur petit écran. */
@media(max-width:700px){
  .right-status{padding:7px 8px;background:rgba(14,20,81,.92);border:1px solid rgba(177,188,240,.42);border-radius:9px;}
  .right-status h2{white-space:normal;line-height:1.12;margin:0 0 5px;}
  .right-status .ticks{font-size:8px;}
  .right-status .opened{font-size:clamp(16px,5vw,23px);margin-top:6px;}
  .right-status .demo-note{font-size:8px;}
}


/* Regard des habitants V2 — pas de second bandeau territorial. */
.layout{height:100dvh!important;min-height:0;}
body{overflow:hidden;}
/* Regard des habitants V4 : taille évolutive, collisions écartées par grille spatiale JS. */
#commune-labels-layer .commune-label{
  font-family:Arial,Helvetica,sans-serif;
  font-size:calc(var(--map-ordinary-label-size, 3.333333px) * var(--map-label-scale, 1));
  font-weight:650;
  fill:#454b5d;
  letter-spacing:0;
  paint-order:stroke fill;
  stroke:rgba(255,255,255,.94);
  stroke-width:calc(0.6px * var(--map-label-scale, 1));
  stroke-linejoin:round;
  text-rendering:geometricPrecision;
  user-select:none;
}
#commune-labels-layer .prefecture-label{
  font-size:calc(13px * var(--map-label-scale, 1));
  font-weight:850;
  fill:#252c48;
  stroke-width:calc(2.2px * var(--map-label-scale, 1));
}

/* Regard des habitants V5 — arrondissements municipaux Paris, Lyon, Marseille.
   La géographie est chargée seulement dans les trois régions concernées. */
#arrondissements-municipaux-layer{opacity:0;pointer-events:none;}
#real-map:not(.municipal-boundaries-visible) #arrondissements-municipaux-layer path{pointer-events:none;}
#real-map.municipal-boundaries-visible #arrondissements-municipaux-layer{opacity:1;pointer-events:auto;}
#arrondissements-municipaux-layer path{
  fill:#fff;stroke:#6c7d99;stroke-width:.85;vector-effect:non-scaling-stroke;
  stroke-linecap:round;stroke-linejoin:round;shape-rendering:geometricPrecision;
  pointer-events:visiblePainted;cursor:pointer;
}
#arrondissements-municipaux-layer path:hover,
#arrondissements-municipaux-layer path:focus-visible{
  fill:#e9f5ff;stroke:#2187b9;stroke-width:1.4;outline:none;
}
#commune-labels-layer .arrondissement-label{
  fill:#304566;font-weight:750;
}
