:root {
  --ink: #14343d;
  --teal: #103d47;
  --teal-light: #11766b;
  --leaf: #dff2a6;
  --muted: #4d666a;
  --canvas: #fbfaf6;
  --mint: #e6f2eb;
  --line: #d9e5df;
  --radius: 22px;
  --shadow: 0 17px 50px #16374010;
}
[hidden] { display: none !important; }
.wrap { width: min(100% - 84px, 1240px); }
.narrow { width: min(100% - 84px, 820px); }
main:focus { outline: none; }
body { background: var(--canvas); }
:where(h2[id], section[id], #formulaire) { scroll-margin-top: 100px; }
.kicker {
  display: flex;
  align-items: center;
  gap: 9px;
  color: #286860;
  font-size: .73rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .14em;
  line-height: 1.45;
}
.utility { background: #e6f2ed; color: #27554d; }
.utility-inner { min-height: 31px; }
.utility a:hover { color: #10493f; }
.site-header { position: sticky; top: 0; border-color: #dfe8e2; }
.header-inner { min-height: 72px; gap: clamp(12px, 2.5vw, 34px); }
.main-nav { gap: clamp(12px, 1.65vw, 26px); }
.main-nav a[aria-current], .main-nav a:hover { color: #0b6b60; }
.nav-button { color: var(--teal); background: #edf5f0; border-color: #d5e6dc; }
.button { border-radius: 10px; }
.button.dark { background: #113e47; }
.button.dark:hover { background: #0b5b55; }
.button.lime { background: var(--leaf); }
.button.lime:hover { background: #effad0; }
.button .icon, .text-link .icon { transition: transform .2s ease; }
.button:hover .icon, .text-link:hover .icon { transform: translateX(3px); }
[data-reveal] { transition: opacity .5s ease, transform .5s ease, border-color .2s ease, box-shadow .2s ease; }
.reveal-pending { opacity: .16; transform: translateY(13px); }
.reveal-pending:focus-within { opacity: 1; transform: none; }
.welcome { position: relative; overflow: hidden; background: linear-gradient(113deg, #fcfcf7 20%, #ebf5ef 66%, #deeee9 100%); border-bottom: 1px solid var(--line); }
.welcome::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: repeating-radial-gradient(ellipse at 97% 100%, transparent 0 35px, #5a9a891a 36px 37px, transparent 38px 50px);
  mask-image: linear-gradient(90deg, transparent 49%, #000 85%);
}
.welcome-layout { position: relative; z-index: 1; display: grid; grid-template-columns: .91fr 1.09fr; gap: clamp(22px, 4vw, 62px); align-items: center; padding-block: clamp(39px, 5.6vw, 82px) clamp(54px, 7.1vw, 101px); }
.welcome-copy { min-width: 0; }
.pulse-dot { width: 8px; height: 8px; border-radius: 50%; background: #1b8b7a; box-shadow: 0 0 0 4px #1b8b7a20; flex: none; }
.welcome h1 { color: #153b46; margin-top: 16px; font-size: clamp(2.9rem, 5vw, 4.95rem); line-height: .99; letter-spacing: -.067em; }
.welcome h1 em { color: #116f65; display: block; font-style: normal; }
.welcome-deck { margin: 19px 0 23px; color: #3b5d60; font-size: clamp(.98rem, 1.25vw, 1.12rem); max-width: 50ch; }
.welcome-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 13px 20px; }
.welcome-image { min-width: 0; position: relative; border: 6px solid white; border-radius: 22px; box-shadow: 0 19px 50px #15394025; background: #deeee8; }
.welcome-image picture { display: block; }
.welcome-image img { width: 100%; height: auto; aspect-ratio: 1.43; object-fit: cover; object-position: 64% 50%; border-radius: 16px; }
.photo-daylight { filter: saturate(1.07) contrast(1.04) brightness(1.025); }
.photo-indoor { filter: saturate(.95) contrast(1.025) brightness(1.045); }
.editorial-photo { filter: saturate(1.035) contrast(1.025); }
.welcome-image figcaption { position: absolute; inset: auto 11px 11px auto; display: flex; align-items: center; gap: 8px; padding: 8px 9px; background: #fffefb; border-radius: 11px; box-shadow: 0 7px 20px #163b4335; color: #133e45; }
.welcome-image figcaption strong, .welcome-image figcaption span { display: block; }
.welcome-image figcaption strong { font-size: .83rem; line-height: 1.3; }
.welcome-image figcaption span:not(.welcome-marker) { font-size: .7rem; color: #4c6869; }
.welcome-image figcaption .welcome-marker { display: grid; place-items: center; width: 29px; height: 29px; background: var(--mint); border-radius: 8px; color: #0e6d61; }
.welcome-image figcaption a { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; margin-left: 3px; }
.welcome-image figcaption a:hover { background: var(--mint); }
.pathways { position: relative; z-index: 2; display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: -33px; }
.pathway { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 14px; padding: 18px 20px; color: #123c45; border: 1px solid var(--line); background: white; border-radius: 17px; text-decoration: none; box-shadow: var(--shadow); transition: transform .2s ease, border-color .2s ease; }
.pathway-pro { background: #e4f3ec; }
.pathway:hover { color: #113e47; border-color: #77b5a6; transform: translateY(-3px); }
.pathway small { display: block; color: #32675f; font-weight: 800; font-size: .73rem; }
.pathway strong { display: block; line-height: 1.28; letter-spacing: -.02em; font-size: clamp(1rem, 1.7vw, 1.25rem); }
.section-intro .kicker { margin-bottom: 8px; }
.section-intro h2, .map-intro h2 { font-size: clamp(2rem, 4.3vw, 3.7rem); line-height: 1.03; }
.section-intro > div p:not(.kicker) { margin-top: 10px; max-width: 56ch; }
.mission, .resource, .article-card, .panel, .event { box-shadow: 0 5px 24px #203d4209; }
.mission-link { position: relative; min-height: 250px; }
.mission-link:nth-child(2) .entry-icon { background: #e4f1fb; color: #235d80; }
.mission-link:nth-child(3) .entry-icon { background: #f0f5d8; color: #466d39; }
.mission-link:hover, .resource:hover, .article-card:hover { box-shadow: 0 12px 35px #16374015; }
.map-section { padding-block: clamp(48px, 7.3vw, 100px); background: #eaf2ed; border-block: 1px solid var(--line); }
.map-layout { display: grid; grid-template-columns: .58fr 1.42fr; align-items: center; gap: clamp(23px, 5vw, 80px); }
.map-intro h2 { margin: 11px 0 14px; }
.map-intro p:not(.kicker) { color: #45615e; margin-bottom: 18px; max-width: 37ch; }
.map-card { min-width: 0; overflow: hidden; background: #fff; border: 1px solid #d1e2d8; border-radius: 19px; box-shadow: 0 14px 36px #17423b11; }
.map-card-head { padding: 11px 15px; display: flex; align-items: center; justify-content: space-between; gap: 6px 12px; flex-wrap: wrap; font-size: .73rem; font-weight: 800; color: #365e59; }
.map-card-head div { display: flex; align-items: center; gap: 8px; }
.map-led { width: 8px; height: 8px; border-radius: 50%; background: #268c79; }
.map-card-head > span { color: #5b6f6f; }
.map-canvas { border-block: 1px solid var(--line); overflow: hidden; background: #eef3ef; }
.territory-svg { width: 100%; height: auto; display: block; }
.map-key { display: flex; flex-wrap: wrap; gap: 6px; padding: 3px 12px 10px; }
.town-tag, .map-control { display: inline-flex; align-items: center; gap: 6px; font-size: .76rem; font-weight: 800; line-height: 1.25; }
.map-control { padding: 7px 10px; color: #1f4d49; background: #f8faf7; border: 1px solid #d1e0d8; border-radius: 99px; text-decoration: none; }
.map-control:hover { border-color: #2d796e; }
.town-tag::before, .map-control::before { content: ""; width: 11px; height: 11px; border: 1px solid #275d5780; border-radius: 3px; background: var(--town); flex: none; }
.town-croix { --town: #a9cff2; }
.town-wasquehal { --town: #70c9ba; }
.town-vda { --town: #d9ec9e; }
.map-commune { cursor: pointer; }
.map-commune:focus-visible { outline: none; }
.map-commune:is(:hover,:focus-visible) .map-shape { stroke: #4c3568; stroke-width: 3px; }
.map-attribution { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 5px 12px; padding: 5px 14px 10px; color: #506561; font-size: .71rem; }
.map-attribution a { text-underline-offset: 2px; }
.territory-page-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(240px, .5fr); align-items: start; gap: clamp(20px, 4vw, 50px); padding-top: clamp(25px, 4vw, 55px); }
.territory-page .mast { padding-block: clamp(26px, 4.3vw, 58px); }
.territory-aside { padding: 18px; border: 1px solid var(--line); border-radius: 16px; background: #f7faf5; }
.territory-aside h2 { margin: 5px 0 10px; font-size: 1.8rem; }
.territory-aside > p:not(.kicker) { margin: 16px 0; font-size: .87rem; color: var(--muted); }
.territory-aside > a { margin-top: 8px; }
.town-list { list-style: none; margin: 0; padding: 0; }
.town-list li { padding: 8px 0; border-bottom: 1px solid var(--line); }
.town-list small { display: block; color: var(--muted); margin-left: 17px; font-size: .76rem; }
.town-list .town-tag { font-size: .91rem; }
.callout .kicker, .pro-mast .kicker, .mast-journal .kicker { color: #def19f; }
.callout p:not(.kicker) { color: #dfeee7; margin-top: 12px; }
.article-card { border-radius: 17px; }
.card-excerpt { font-size: .88rem; color: #52676b; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; }
.article-card-text { padding: 19px; }
.mast { background: linear-gradient(125deg, #eff6ef, #e7f2eb); }
.mast .kicker { margin-bottom: 10px; }
.mast .crumbs { font-size: .78rem; }
.mast-resources { background: linear-gradient(126deg,#f1f6ef,#e8f0f3); }
.mast-territory { background: linear-gradient(118deg,#e5f1e9,#e0edf1); }
.mast-journal, .pro-mast { background: radial-gradient(ellipse at 85% 25%, #246c63, #123d47 62%); color: #fff; }
.mast-journal :is(p:not(.eyebrow):not(.kicker), .crumbs, .byline), .pro-mast .text-link { color: #e6f1ec; }
.mast-journal .crumbs a:hover, .pro-mast .text-link:hover { color: var(--leaf); }
.editorial-mast { padding-block: clamp(28px, 5.2vw, 69px); }
.editorial-mast h1 { max-width: 28ch; }
.editorial-mast p.editorial-deck { max-width: 68ch; margin-top: 15px; font-size: clamp(1rem, 1.55vw, 1.22rem); }
.byline { display: flex; flex-wrap: wrap; gap: 5px 12px; align-items: center; font-size: .82rem; font-weight: 750; color: #42605b; margin-top: 17px; }
.byline-icon { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: #ecf4ef; color: #0e695e; }
.byline time + span { border-left: 1px solid #b4cbc0; padding-left: 10px; }
.reading-track { position: absolute; inset: auto 0 -2px; width: 100%; height: 3px; border: 0; appearance: none; color: #329b89; background: #d9e8e1; }
.reading-track::-webkit-progress-bar { background: #d9e8e1; }
.reading-track::-webkit-progress-value { background: #329b89; }
.reading-track::-moz-progress-bar { background: #329b89; }
.story-lead { margin-top: 24px; }
.story-lead img { width: 100%; height: auto; max-height: 510px; object-fit: cover; object-position: 62% 55%; border-radius: 21px; }
.article-visual { margin: 24px auto 0; }
.article-visual img { width: 100%; height: auto; max-height: 520px; object-fit: contain; background: #edf3ed; border-radius: 18px; }
.reading-layout { display: grid; grid-template-columns: minmax(175px, 240px) minmax(0, 820px); gap: clamp(17px, 4.1vw, 60px); padding-block: clamp(27px, 4vw, 54px) clamp(46px, 7vw, 90px); }
.reading-layout.reading-single { display: block; max-width: 850px; }
.reading-index { align-self: start; position: sticky; top: 95px; padding: 15px 14px; border: 1px solid var(--line); background: #f4f8f3; border-radius: 13px; max-height: calc(100vh - 120px); overflow: auto; }
.reading-index ol { margin: 10px 0 0; padding-left: 17px; }
.reading-index li { margin: 6px 0; color: #416963; font-size: .78rem; }
.reading-index a { color: #2a514e; text-decoration: none; }
.reading-index a:hover { text-decoration: underline; }
.reading-copy { min-width: 0; }
.story-gallery { color: #25474b; line-height: 1.73; }
.story-gallery h2 { color: #123d47; font-size: clamp(1.49rem, 3vw, 2.08rem); line-height: 1.18; }
.story-gallery h3 { color: #164852; line-height: 1.27; }
.story-gallery h2:first-child, .story-gallery > div > :first-child { margin-top: 0; }
.story-gallery a[href$=".pdf"] { display: inline-block; padding: .49em .85em; background: #e8f3ed; border-radius: 7px; font-size: .9em; font-weight: 800; }
.story-gallery img { height: auto; margin-block: 0; }
.story-gallery details { padding: 11px 14px; background: #f1f6ef; border: 1px solid var(--line); border-radius: 10px; }
.story-gallery summary { font-weight: 800; color: #20564e; cursor: pointer; }
.editorial-links a { background: #eaf3ed; border: 1px solid #d5e7dc; }
.photo-enlarge { display: block; position: relative; padding: 0; margin: .7em 0; max-width: 100%; background: none; border: 0; border-radius: 12px; cursor: zoom-in; }
.article-visual .photo-enlarge { width: 100%; margin: 0; }
.photo-enlarge::after { content: "+"; position: absolute; right: 8px; bottom: 8px; width: 26px; height: 26px; border-radius: 50%; background: #143d46e8; color: white; line-height: 25px; font-size: 19px; }
.photo-viewer { width: min(92vw, 1120px); max-height: 90vh; padding: 13px; border: 1px solid var(--line); border-radius: 16px; color: var(--ink); background: white; }
.photo-viewer::backdrop { background: #0d2734cf; }
.photo-viewer form { display: flex; justify-content: flex-end; }
.photo-viewer img { max-height: 73vh; width: 100%; height: auto; object-fit: contain; margin-block: 8px; }
.photo-viewer figcaption { color: var(--muted); font-size: .8rem; }
.related-section { background: #edf4ee; border-top: 1px solid var(--line); }
.journal-feature { display: grid; grid-template-columns: 1.13fr .87fr; margin: 0 0 40px; overflow: hidden; border-radius: 19px; background: #143f48; color: white; }
.journal-feature-photo, .journal-feature-photo img { width: 100%; height: 100%; min-height: 270px; object-fit: cover; object-position: 62% 49%; }
.journal-feature-copy { min-width: 0; padding: clamp(20px, 3.6vw, 46px); }
.journal-feature-copy .kicker { color: #e0f0ab; margin-bottom: 8px; }
.journal-feature-copy .article-meta { color: #e6f0ec; margin: 0 0 12px; }
.journal-feature-copy h2 { font-size: clamp(1.7rem, 3.7vw, 3.04rem); }
.journal-feature-copy h2 a { text-decoration: none; }
.journal-feature-copy h2 a:hover { color: var(--leaf); }
.journal-feature-copy p:not(.kicker):not(.article-meta) { color: #e2eeeb; margin: 10px 0 14px; }
.resource-search { max-width: min(100%, 760px); padding: 14px; border-radius: 13px; border: 1px solid var(--line); background: white; box-shadow: var(--shadow); }
.resource-search input { min-height: 49px; }
.resource-heading, .resource-group { margin-top: clamp(26px, 4.5vw, 55px); }
.resource-jumps { margin-top: 18px; }
.resource-grid { margin-top: 0; }
.resource { gap: 9px; }
.resource p { font-size: .87rem; color: var(--muted); }
.resource h3 { font-size: clamp(1.04rem, 2vw, 1.36rem); }
.event { padding: 12px 15px; border-radius: 12px; transition: border-color .18s ease, background .18s ease; }
.event:hover { background: #f3f9f5; border-color: #8db5a6; }
.agenda-empty { display: flex; align-items: start; gap: 13px; }
.agenda-empty .text-link { margin-top: 8px; }
.pro-layout { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(20px, 4.2vw, 50px); align-items: center; }
.pro-layout img { width: 100%; height: auto; aspect-ratio: 1.45; object-fit: cover; border-radius: 15px; border: 1px solid #83a9a0; }
.pro-mast h1 { font-size: clamp(2.18rem, 4.5vw, 4.05rem); }
.pro-mast .welcome-actions { margin-top: 19px; }
.pro-mast .welcome-actions .button { margin-top: 0; }
.contact-aside { padding: 17px; background: #ecf4ed; border: 1px solid var(--line); border-radius: 16px; }
.contact-aside .text-link { display: flex; overflow-wrap: anywhere; }
.contact-page .panel .kicker { margin: 0 0 5px; }
.access-bg { background: linear-gradient(128deg, #123d47, #1c6b60); }
.access-panel { border-radius: 18px; box-shadow: 0 20px 64px #0e343e32; }
.member-shell .panel, .console-main .panel { border-radius: 14px; }
.member-grid > section:first-child { border-top: 3px solid #3c8c80; }
.member-grid > section:nth-child(2) { border-top: 3px solid #95b661; }
.console-bg { background: #edf4ef; }
.console-sidebar { background: #133d47; }
.console-sidebar nav a[aria-current], .console-sidebar nav a:hover { background: #27595c; }
.console-main .stats > * { border-left: 3px solid #82b8aa; }
.console-main .stats > a:hover { border-color: #73aa9a; background: #f4faf5; }
.footer { background: #eaf1ed; }
.footer-brand .text-link { margin-top: 7px; }
@media (min-width: 780px) {
  .welcome-copy { animation: welcome-enter .46s ease-out both; }
  .welcome-image { animation: welcome-enter .54s ease-out both; }
}
@keyframes welcome-enter { from { opacity: .1; transform: translateY(9px); } to { opacity: 1; transform: none; } }
@media (max-width: 1050px) {
  .wrap { width: min(100% - 48px, 1240px); }
  .narrow { width: min(100% - 48px, 820px); }
  .main-nav { gap: 10px; font-size: .78rem; }
}
@media (max-width: 779px) {
  .wrap, .narrow { width: calc(100% - 32px); }
  .header-inner { min-height: 61px; }
  .utility-inner > .utility-territory { display: inline-flex; }
  .site-header .mobile-menu nav .button { margin: 6px 0 0; padding: 9px 12px; color: white; }
  .welcome-layout { grid-template-columns: 1fr; gap: 19px; padding-block: 32px 46px; }
  .welcome h1 { font-size: clamp(2.8rem, 9.6vw, 4.3rem); margin-top: 11px; }
  .welcome-deck { margin-block: 13px 15px; }
  .welcome-image img { aspect-ratio: 1.68; object-position: 61% 50%; }
  .welcome-image { border-width: 4px; border-radius: 18px; }
  .welcome-image img { border-radius: 14px; }
  .pathways { margin-top: -22px; }
  .map-layout, .territory-page-grid, .pro-layout { grid-template-columns: 1fr; }
  .map-layout { gap: 18px; }
  .map-intro h2 br { display: none; }
  .map-intro p:not(.kicker) { max-width: 62ch; }
  .reading-layout { grid-template-columns: 1fr; }
  .reading-index { position: static; max-height: none; }
  .reading-index ol { column-count: 2; column-gap: 21px; }
  .journal-feature { grid-template-columns: 1fr; }
  .journal-feature-photo, .journal-feature-photo img { min-height: 0; height: auto; aspect-ratio: 1.7; }
  .pro-layout img { aspect-ratio: 1.7; }
}
@media (max-width: 500px) {
  .pathways { grid-template-columns: 1fr; gap: 8px; }
  .pathway { padding: 13px; }
  .mission-link { min-height: auto; }
  .map-card:not(.care-map) .map-city-label text { font-size: 25px; }
  .map-neighbor { font-size: 18px; }
  .map-card-head { padding: 9px 10px; font-size: .68rem; }
  .map-key { padding-inline: 8px; }
  .map-control { padding: 6px 7px; font-size: .68rem; }
  .map-attribution { padding-inline: 0; margin-inline: 10px; }
  .reading-index ol { column-count: 1; }
  .welcome-actions .button { min-height: 44px; }
  .welcome-actions .text-link { font-size: .8rem; }
  .journal-feature { margin-bottom: 28px; }
  .article-visual { margin-top: 14px; }
}
@media (prefers-reduced-motion: reduce) {
  .welcome-copy, .welcome-image { animation: none; }
  .reveal-pending { opacity: 1; transform: none; }
}

