/* Finitions premium des interfaces illustrées — sans dépendance JS. */
.hero-visual{padding:16px;border-color:rgba(197,214,255,.9);box-shadow:0 30px 80px rgba(16,24,40,.13),0 8px 24px rgba(21,94,239,.07)}
.hero-svg-wrap{border-color:#d8e3f5;background:linear-gradient(160deg,#f9fbff 0%,#edf4ff 58%,#f4fff9 100%)}
.hero-svg text{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;text-rendering:geometricPrecision}
.hero-svg g[filter="url(#shadowSmall)"]{animation:dashboardCardIn .65s cubic-bezier(.2,.8,.2,1) both}
.hero-svg g[filter="url(#shadowSmall)"]:nth-of-type(5){animation-delay:.08s}
.hero-svg g[filter="url(#shadowSmall)"]:nth-of-type(6){animation-delay:.14s}
.hero-svg g[filter="url(#shadowSmall)"]:nth-of-type(7){animation-delay:.20s}
.hero-svg g[filter="url(#shadowSmall)"]:nth-of-type(8){animation-delay:.26s}
.hero-svg .screen-status{animation:statusBlink 3.2s ease-in-out infinite}
.hero-svg .chart-guide{stroke:#dce6f5;stroke-width:1}
.hero-svg .detail-chip{fill:#eef4ff;stroke:#d8e4ff;stroke-width:1}
@keyframes dashboardCardIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes statusBlink{0%,100%{opacity:1}50%{opacity:.55}}

.france-map-layout{grid-template-columns:minmax(0,1.18fr) minmax(330px,.82fr);gap:20px;padding:24px}
.france-map-card,.france-map-detail{border-color:rgba(255,255,255,.18);box-shadow:0 20px 48px rgba(0,0,0,.16)}
.france-map-card{min-height:500px;padding:28px;background:linear-gradient(150deg,rgba(255,255,255,.10),rgba(255,255,255,.045))}
.france-map-heading{max-width:610px}
.france-map-heading strong{font-size:34px;letter-spacing:-.035em}
.france-map-heading span{max-width:610px;line-height:1.65}
.cities-constellation{aspect-ratio:1.18 / 1;max-height:450px;margin-top:16px;border:1px solid rgba(255,255,255,.10);background:rgba(4,19,48,.24);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.constellation-bg::after{content:"";position:absolute;inset:8% 19% 5%;background:linear-gradient(155deg,rgba(120,164,255,.16),rgba(26,188,156,.10));clip-path:polygon(47% 0,61% 8%,72% 23%,91% 30%,87% 46%,98% 62%,82% 69%,72% 88%,54% 100%,39% 90%,25% 75%,7% 63%,16% 45%,6% 29%,27% 20%);border-radius:32%;filter:drop-shadow(0 18px 30px rgba(0,0,0,.18));opacity:.9}
.city-node{font-size:12px;padding:7px 12px 7px 8px;border:1px solid rgba(255,255,255,.78);box-shadow:0 12px 26px rgba(4,15,38,.26),0 1px 3px rgba(16,24,40,.16)}
.city-node::after{content:"";position:absolute;left:50%;top:100%;width:1px;height:9px;background:linear-gradient(rgba(143,183,255,.7),transparent);transform-origin:top}
.city-node.is-active{box-shadow:0 18px 44px rgba(18,183,106,.25),0 0 0 2px rgba(18,183,106,.38)}
.france-map-detail{padding:24px;gap:14px;background:linear-gradient(180deg,rgba(255,255,255,.99),rgba(247,250,255,.97))}
.france-map-detail h2{font-size:36px;letter-spacing:-.04em}
.france-map-detail p{font-size:15px;line-height:1.58}
.detail-stat{padding:13px;border-color:#dfe5ef;border-radius:14px;box-shadow:0 6px 18px rgba(16,24,40,.035)}
.detail-stat strong{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#344054}
.city-shortcuts{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.city-shortcuts a{padding:9px 10px;border-radius:12px;font-size:12px;text-align:center;background:rgba(255,255,255,.9)}
.city-method{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:12px;border:1px solid #e1e8f2;border-radius:16px;background:#fff}
.city-method span{position:relative;padding-top:20px;color:#667085;font-size:11px;line-height:1.35;font-weight:750}
.city-method span::before{content:attr(data-step);position:absolute;top:0;left:0;width:16px;height:16px;display:grid;place-items:center;border-radius:50%;background:#eaf1ff;color:#155eef;font-size:9px;font-weight:950}
@media(max-width:980px){.france-map-layout{grid-template-columns:1fr}.cities-constellation{max-height:none}.city-shortcuts{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:680px){.france-map-layout{padding:14px}.france-map-card{padding:18px;min-height:auto}.cities-constellation{aspect-ratio:1 / 1.06}.city-shortcuts{grid-template-columns:repeat(2,minmax(0,1fr))}.city-method{grid-template-columns:1fr}.hero-visual{padding:10px}}
@media(prefers-reduced-motion:reduce){.hero-svg g[filter="url(#shadowSmall)"],.hero-svg .screen-status{animation:none!important}}

/* Annuaire territorial : compréhension immédiate, sans carte décorative. */
.city-directory{padding:32px!important;background:linear-gradient(145deg,#071a3d 0%,#0b244d 68%,#0b303b 100%)!important;border-radius:30px!important}
.city-directory-header{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(300px,.95fr);gap:32px;align-items:end;margin-bottom:24px}
.city-directory-header h2{max-width:650px;margin:7px 0 0;color:#fff;font-size:36px;line-height:1.08;letter-spacing:-.04em}
.city-directory-header>p{margin:0;color:#cdd7e8;font-size:15px;line-height:1.65}
.directory-kicker{margin:0;color:#8fb7ff;font-size:12px;font-weight:950;letter-spacing:.09em;text-transform:uppercase}
.city-directory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.directory-city-card{position:relative;display:grid;grid-template-columns:38px minmax(0,1fr) 30px;gap:12px;align-items:center;min-height:104px;padding:16px 16px;border:1px solid rgba(255,255,255,.14);border-radius:18px;background:rgba(255,255,255,.075);color:#fff;text-decoration:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.06);transition:border-color .2s ease,background .2s ease,transform .2s ease,box-shadow .2s ease}
.directory-city-card:hover,.directory-city-card:focus-visible{transform:translateY(-2px);border-color:rgba(126,164,255,.7);background:rgba(255,255,255,.125);box-shadow:0 16px 30px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.10);outline:none}
.directory-number{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:rgba(79,124,255,.16);color:#9fc0ff;font-size:11px;font-weight:950}
.directory-copy{display:block;min-width:0}
.directory-copy strong{display:block;color:#fff;font-size:18px;letter-spacing:-.02em}
.directory-copy small{display:block;margin-top:2px;color:#91b7ff;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.045em}
.directory-copy>span{display:block;margin-top:7px;color:#cdd7e8;font-size:13px;line-height:1.35}
.directory-arrow{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.10);color:#fff;font-size:17px;transition:transform .2s ease,background .2s ease}
.directory-city-card:hover .directory-arrow,.directory-city-card:focus-visible .directory-arrow{transform:translateX(3px);background:#2970ff}
.city-directory-footer{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-top:14px;padding:18px 20px;border:1px solid rgba(255,255,255,.12);border-radius:18px;background:rgba(0,0,0,.12)}
.city-directory-footer strong,.city-directory-footer span{display:block}
.city-directory-footer strong{color:#fff;font-size:15px}
.city-directory-footer span{margin-top:3px;color:#aebcd0;font-size:13px}
.city-directory-footer a{flex:0 0 auto;padding:11px 15px;border-radius:999px;background:#fff;color:#0b1f42;font-size:13px;font-weight:900;text-decoration:none}
@media(max-width:820px){.city-directory-header{grid-template-columns:1fr;gap:12px}.city-directory-grid{grid-template-columns:1fr}.city-directory-header h2{font-size:29px}}
@media(max-width:540px){.city-directory{padding:18px!important}.directory-city-card{grid-template-columns:34px minmax(0,1fr) 28px;padding:14px 12px}.city-directory-footer{align-items:flex-start;flex-direction:column}.city-directory-footer a{width:100%;text-align:center}}
