/* Self-hosted fonts (variable, latin subset) — preloaded in each page's <head>. */
@font-face{font-family:'DM Sans';font-style:normal;font-weight:400 700;font-display:swap;src:url('fonts/dm-sans-latin.woff2') format('woff2')}
@font-face{font-family:'Nunito Sans';font-style:normal;font-weight:400 800;font-display:swap;src:url('fonts/nunito-sans-latin.woff2') format('woff2')}

:root{--ink:#184890;--teal:#4d8ba4;--leaf:#86dc5b;--sun:#f5bb43;--clay:#985f55;--paper:#fffdfa;--cream:#ffebc5;--line:#e9dcc5;--charcoal:#26333c;--serif:Georgia,serif;--sans:'Nunito Sans',sans-serif;--display:'DM Sans',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--charcoal);font-family:var(--sans);font-size:17px;line-height:1.55}::selection{background:var(--leaf);color:#123}a{color:inherit;text-decoration:none}.shell{width:min(1180px,calc(100% - 48px));margin:auto}.topline{height:8px;background:var(--teal)}
.nav{height:88px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{display:flex;align-items:center;gap:12px;font-weight:800;color:var(--ink);line-height:1.05}.mark{width:43px;height:43px;border:4px solid var(--leaf);border-radius:50% 43% 50% 45%;position:relative;transform:rotate(-12deg)}.mark:before,.mark:after{content:'';position:absolute;background:var(--clay);border-radius:50%}.mark:before{width:12px;height:18px;left:7px;bottom:7px}.mark:after{width:10px;height:14px;right:7px;bottom:7px;background:var(--teal)}.navlinks{display:flex;align-items:center;gap:25px;font-size:14px;font-weight:700}.navlinks a{position:relative}.navlinks a:not(.button):after{content:'';position:absolute;left:0;right:0;bottom:-6px;height:2px;transform:scaleX(0);background:var(--leaf);transition:transform .25s}.navlinks a:hover:after,.navlinks a.active:after{transform:scaleX(1)}.button{display:inline-flex;align-items:center;justify-content:center;background:var(--ink);color:white;padding:13px 20px;border-radius:999px;font-weight:800;font-size:14px;transition:transform .2s,background .2s}.button:hover{background:#0d3471;transform:translateY(-2px)}.button.alt{background:var(--leaf);color:#154515}.button.ghost{background:transparent;color:var(--ink);border:2px solid var(--ink)}
.hero{position:relative;overflow:hidden;padding:80px 0 76px;background:linear-gradient(118deg,#fffdf8 56%,#ffedce 56%)}.hero-grid{display:grid;grid-template-columns:1.02fr .98fr;align-items:center;gap:40px;min-height:500px}.hero h1,.page-title h1{font-family:var(--display);font-size:clamp(3rem,6vw,5.8rem);line-height:.94;letter-spacing:-.055em;color:var(--ink);margin:0 0 24px;max-width:9ch}.hero h1 em{font-family:var(--serif);font-weight:400;color:var(--clay);letter-spacing:-.06em}.lead{font-size:20px;max-width:51ch;margin:0 0 28px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap}.hero-art{height:450px;position:relative}.arc{position:absolute;border-radius:50%;transform-origin:center}.a1{width:270px;height:270px;background:var(--leaf);right:62px;bottom:27px;border-radius:50% 50% 10px 50%}.a2{width:192px;height:192px;background:var(--ink);right:0;bottom:27px;border-radius:100% 0 0 0}.a3{width:192px;height:192px;background:var(--teal);right:254px;bottom:27px;border-radius:0 0 0 100%}.a4{width:140px;height:140px;background:var(--clay);right:160px;top:56px;border-radius:100% 0 0 0}.a5{width:140px;height:140px;background:var(--sun);right:20px;top:56px;border-radius:0 100% 0 0}.a6{width:100px;height:100px;border:11px solid var(--ink);right:104px;top:175px;border-radius:50%}.hero-photo{position:absolute;z-index:2;width:185px;height:235px;object-fit:cover;left:68px;top:98px;border-radius:96px 96px 20px 20px;box-shadow:0 18px 28px #4d493b33}.spark{position:absolute;background:var(--sun);width:20px;height:20px;border-radius:50%;left:32px;bottom:79px}.sunline{height:11px;background:var(--sun);position:absolute;top:0;left:0;right:0}
.trust{padding:25px 0;border-bottom:1px solid var(--line);font-size:14px;font-weight:700;color:#5b6670}.trust .shell{display:flex;gap:20px;align-items:center;justify-content:space-between}.trust strong{color:var(--ink);font-size:18px}.section{padding:100px 0}.section.tint{background:#f5faf4}.section.cream{background:var(--cream)}.section-head{display:flex;align-items:end;justify-content:space-between;gap:28px;margin-bottom:42px}.section h2{font-family:var(--display);font-size:clamp(2.25rem,4vw,4rem);letter-spacing:-.05em;line-height:1;margin:0;color:var(--ink);max-width:12ch}.section-head p{max-width:48ch;margin:0}.numbers{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.number{padding:28px 20px 26px 0;border-right:1px solid var(--line)}.number+ .number{padding-left:28px}.number:last-child{border:0}.number b{font:700 clamp(2.9rem,5vw,5rem)/1 var(--display);letter-spacing:-.07em;color:var(--clay);display:block}.number span{font-weight:700;font-size:14px}.mosaic{display:grid;grid-template-columns:1.1fr .9fr;gap:60px;align-items:center}.mosaic-photo{height:460px;width:100%;object-fit:cover;border-radius:170px 18px 170px 18px;box-shadow:0 25px 44px #344a3a24}.copy h2{font-family:var(--display);color:var(--ink);font-size:clamp(2.4rem,4vw,4rem);line-height:1;letter-spacing:-.05em;margin:0 0 22px}.copy p{max-width:53ch}.principles{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:25px}.principle{padding:13px 0;border-bottom:1px solid var(--line);font-weight:700}.principle i{font-style:normal;color:var(--clay);margin-right:9px}.programs{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.program{min-height:310px;padding:24px;display:flex;flex-direction:column;justify-content:space-between;border-radius:16px;transition:transform .25s;overflow:hidden}.program:hover{transform:translateY(-6px)}.program:nth-child(1){background:var(--leaf)}.program:nth-child(2){background:#cce5e2}.program:nth-child(3){background:#cbd7f2}.program:nth-child(4){background:#f3d2c4}.program span{font-family:var(--serif);font-size:42px;color:#ffffffba;line-height:1}.program h3{font:700 26px/1.05 var(--display);letter-spacing:-.04em;margin:0;color:#153c62}.program p{font-size:14px;margin:12px 0 0}.program a{font-size:14px;font-weight:800;color:var(--ink);margin-top:18px}.video{padding:64px;background:var(--ink);color:white;display:grid;grid-template-columns:1fr 1.05fr;gap:60px;align-items:center}.video h2{font:700 clamp(2.5rem,4vw,4rem)/.98 var(--display);letter-spacing:-.06em;margin:0 0 20px}.video p{color:#e4ecff}.video-frame{aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;border:1px solid #ffffff5e;border-radius:16px;background:linear-gradient(135deg,#397196,#133d80)}.play{width:74px;height:74px;border-radius:50%;background:var(--sun);display:grid;place-items:center;color:var(--ink);font-size:23px;padding-left:4px}.actions{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.action{padding:10px 0 20px;border-top:4px solid var(--leaf)}.action:nth-child(2){border-color:var(--sun)}.action:nth-child(3){border-color:var(--clay)}.action h3{font:700 28px/1 var(--display);letter-spacing:-.04em;color:var(--ink);margin:18px 0 10px}.action p{margin:0 0 16px}.cta{padding:88px 0;background:var(--clay);color:white;overflow:hidden;position:relative}.cta:after{content:'';position:absolute;width:420px;height:420px;border:60px solid var(--leaf);border-radius:50%;right:-175px;bottom:-265px}.cta h2{font:700 clamp(3rem,6vw,5.8rem)/.94 var(--display);letter-spacing:-.06em;max-width:10ch;margin:0 0 22px;position:relative;z-index:1}.cta p{max-width:46ch;position:relative;z-index:1}.cta .button{background:white;color:var(--clay);position:relative;z-index:1}.footer{background:#1c2730;color:#dde6e4;padding:52px 0 20px}.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:30px}.footer h3{color:white;margin:0 0 12px;font-size:16px}.footer a{display:block;margin:7px 0;font-size:14px}.footer small{display:block;border-top:1px solid #ffffff2e;margin-top:38px;padding-top:18px}.page-title{padding:78px 0;background:var(--cream);position:relative;overflow:hidden}.page-title h1{max-width:12ch}.page-title p{max-width:56ch;font-size:19px}.page-title .orb{position:absolute;width:230px;height:230px;border-radius:50%;background:var(--leaf);right:10%;bottom:-125px}.content-grid{display:grid;grid-template-columns:260px 1fr;gap:64px}.side{position:sticky;top:20px;align-self:start}.side a{display:block;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px;font-weight:800;color:var(--ink)}.prose h2{font:700 38px/1 var(--display);letter-spacing:-.05em;color:var(--ink);margin:0 0 18px}.prose h3{font:700 25px/1.1 var(--display);color:var(--clay);margin:40px 0 12px}.prose ul{padding-left:20px}.prose li{margin:7px 0}.impact-list{display:grid;gap:32px}.impact-row{display:grid;grid-template-columns:110px 1fr;gap:28px;border-top:1px solid var(--line);padding-top:27px}.impact-row b{font:700 45px/1 var(--display);color:var(--clay);letter-spacing:-.07em}.sponsor{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center}.donut{width:min(380px,100%);aspect-ratio:1;border-radius:50%;background:conic-gradient(var(--ink) 0 40%,var(--teal) 40% 80%,var(--sun) 80% 90%,var(--leaf) 90% 96%,var(--clay) 96% 99%,#eee 99%);position:relative;margin:auto}.donut:after{content:'100 000\A FCFA / an';white-space:pre;position:absolute;inset:31%;border-radius:50%;background:var(--paper);display:grid;place-content:center;text-align:center;font:800 18px/1.15 var(--display);color:var(--ink)}
@media(max-width:850px){.navlinks{display:none}.hero{padding-top:48px}.hero-grid,.mosaic,.video,.sponsor{grid-template-columns:1fr}.hero-art{height:340px}.hero-photo{left:17%;top:43px}.a3{right:45%;bottom:8px}.a1{right:23%;bottom:8px}.a2{bottom:8px}.a4{right:43%;top:10px}.a5{top:10px}.a6{top:128px}.section{padding:68px 0}.programs{grid-template-columns:repeat(2,1fr)}.section-head{display:block}.section-head p{margin-top:15px}.content-grid{grid-template-columns:1fr;gap:28px}.side{position:static}.side a{display:inline-block;margin-right:14px;border:0}.footer-grid{grid-template-columns:1fr 1fr}.trust .shell{display:block}.numbers{grid-template-columns:1fr}.number,.number+.number{padding:20px 0;border-right:0;border-bottom:1px solid var(--line)}.number:last-child{border-bottom:0}.impact-row{grid-template-columns:1fr;gap:8px}}@media(max-width:560px){.shell{width:min(100% - 32px,1180px)}.programs,.actions,.principles,.footer-grid{grid-template-columns:1fr}.hero h1{font-size:3.5rem}.hero-art{height:300px}.hero-photo{height:188px;width:150px}.a1,.a2,.a3{transform:scale(.78);transform-origin:bottom right}.a4,.a5{transform:scale(.8)}.video{padding:37px 25px}.page-title{padding:56px 0}.page-title h1{font-size:3.4rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* --- logo.css --- */
/* Official association lockup supplied by the client. */
.brand{gap:0}
.brand .mark{width:172px;height:88px;border:0;border-radius:0;transform:none;background:center/contain no-repeat url('logo.webp')}
.brand .mark:before,.brand .mark:after{display:none}
.brand > span:last-child{display:none}
@media(max-width:560px){.brand .mark{width:145px;height:74px}}

/* --- governance.css --- */
.welcome{background:#fff8ec}.welcome-grid{display:grid;grid-template-columns:.72fr 1.28fr;gap:68px;align-items:center}.welcome-portrait{position:relative}.welcome-portrait:before{content:'';position:absolute;width:150px;height:150px;background:var(--leaf);border-radius:50% 50% 0 50%;left:-28px;bottom:-28px}.welcome-portrait img{position:relative;z-index:1;width:100%;height:420px;object-fit:cover;border-radius:150px 150px 18px 18px}.welcome-copy{max-width:630px}.signature-label{font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--clay);font-size:12px}.welcome-copy h2{font:700 clamp(2.5rem,4vw,4.2rem)/.98 var(--display);letter-spacing:-.04em;color:var(--ink);margin:0 0 20px;max-width:11ch}.signature{font:700 22px/1.1 var(--display);color:var(--ink);margin-top:28px}.signature span{font:400 15px/1.2 var(--sans);color:var(--clay)}
.governance{background:#f4faf2}.org-chart{max-width:1000px;margin:0 auto}.org-card{min-height:110px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:19px;border-radius:16px;background:var(--paper);box-shadow:0 12px 24px #38574514;font-weight:800;color:var(--ink)}.org-card span{max-width:18ch;line-height:1.15}.org-card.president{width:min(340px,100%);margin:auto;background:var(--ink);color:white}.org-card.president span{font-size:14px;color:#d8ebff}.org-card.president strong{font:700 30px/1 var(--display);letter-spacing:-.04em;margin-top:7px}.org-line{width:2px;height:45px;margin:auto;background:var(--teal)}.org-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;position:relative}.org-grid:before{content:'';position:absolute;top:-22px;left:16.66%;right:16.66%;height:2px;background:var(--teal)}.org-note{text-align:center;font-size:14px;color:#66736e;margin:25px 0 0}
@media(max-width:850px){.welcome-grid{grid-template-columns:1fr;gap:35px}.welcome-portrait img{height:330px}.org-grid{grid-template-columns:repeat(2,1fr)}.org-grid:before{left:25%;right:25%}}@media(max-width:560px){.org-grid{grid-template-columns:1fr}.org-grid:before{display:none}.org-line{height:28px}.org-card{min-height:82px}}

/* --- contact.css --- */
.location{padding:68px 0;background:var(--cream)}.location-inner{display:flex;align-items:center;justify-content:space-between;gap:32px}.location h2{font:700 clamp(2.3rem,4vw,4rem)/1 var(--display);letter-spacing:-.04em;color:var(--ink);margin:0 0 12px}.location p{margin:0}.location .button{text-align:center;line-height:1.35}@media(max-width:650px){.location-inner{display:block}.location .button{margin-top:22px}}

/* --- footer-refresh.css --- */
.footer-new{padding:68px 0 20px;background:#15222a}.footer-new-grid{display:grid;grid-template-columns:1.45fr .8fr .95fr;gap:58px}.footer-new .brand{display:inline-flex;margin-bottom:16px}.footer-new .brand .mark{width:200px;height:102px;filter:brightness(0) invert(1)}.footer-new p{max-width:31ch;margin:0 0 20px;color:#c4d2d0}.footer-new h3{font:800 15px/1 var(--sans);letter-spacing:.02em;color:var(--sun);margin:15px 0}.footer-new a{display:block;color:#f4f8f5;font-size:15px;margin:10px 0;transition:color .18s}.footer-new a:hover{color:var(--leaf)}.footer-new .address{color:#c4d2d0;line-height:1.55}.footer-bottom{display:flex;justify-content:space-between;gap:20px;border-top:1px solid #ffffff2d;margin-top:45px;padding-top:18px;color:#aabbb7;font-size:13px}@media(max-width:700px){.footer-new-grid{grid-template-columns:1fr;gap:20px}.footer-new .brand .mark{width:180px;height:90px}.footer-bottom{display:block}.footer-bottom span{display:block;margin:5px 0}}

/* --- contact-details.css --- */
.footer-new .contact-link{color:#c4d2d0;font-size:14px;overflow-wrap:anywhere}

/* --- logo-official.css --- */
/* Preserve the supplied official logo colors in every placement. */
.footer-new .brand .mark{filter:none}

/* --- social-footer.css --- */
.footer-new-grid{grid-template-columns:1.25fr .7fr 1.05fr}.footer-fund{display:inline-flex!important;margin-top:22px!important;padding:11px 16px;border-radius:999px;background:var(--leaf);color:#163d1d!important;font-weight:800}.footer-socials{padding-left:32px;border-left:1px solid #ffffff2e}.footer-socials h3{margin-top:15px}.footer-socials a{display:flex;flex-direction:column;gap:2px;padding:10px 0;margin:0;border-bottom:1px solid #ffffff1f}.footer-socials a:last-child{border-bottom:0}.footer-socials b{color:var(--sun);font-size:12px;letter-spacing:.06em;text-transform:uppercase}.footer-socials span{font-size:14px;color:#eff4ef;overflow-wrap:anywhere}@media(max-width:700px){.footer-socials{padding-left:0;border-left:0;margin-top:10px}.footer-new-grid{grid-template-columns:1fr}}

/* --- footer-final.css --- */
.site-footer{background:#17252d;color:#edf3f0;padding:62px 0 20px}.site-footer-grid{display:grid;grid-template-columns:1.2fr .72fr 1.08fr;gap:72px;padding-bottom:52px}.footer-logo-link{display:block;width:205px;margin-bottom:20px}.footer-logo{display:block;width:100%;height:auto}.footer-about p{max-width:33ch;color:#c9d7d2;margin:0 0 21px}.footer-address{display:inline-block!important;color:#d9e4df!important;line-height:1.5;font-size:14px}.footer-address span{color:var(--leaf)}.site-footer h3{font:800 13px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--sun);margin:16px 0 20px}.footer-nav{display:flex;flex-direction:column;align-items:flex-start}.footer-nav a{font-weight:700;font-size:15px;color:#edf3f0;margin:0 0 13px;transition:color .18s}.footer-nav a:hover{color:var(--leaf)}.footer-connect{padding-left:34px;border-left:1px solid #ffffff2c}.social-item{display:block;padding:0 0 13px;margin:0 0 13px;border-bottom:1px solid #ffffff1f}.social-item span{display:block;color:#9fb4ae;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;margin-bottom:3px}.social-item b{display:block;color:#fff;font-size:14px;overflow-wrap:anywhere}.footer-donate{display:flex!important;align-items:center;justify-content:space-between;gap:16px;margin-top:24px;padding:13px 17px;border-radius:12px;background:var(--leaf);color:#123a1c!important;font-weight:800}.footer-donate span{font-size:17px}.site-footer-bottom{display:flex;justify-content:space-between;gap:20px;padding-top:20px;border-top:1px solid #ffffff2a;color:#9eb2ac;font-size:13px}@media(max-width:760px){.site-footer{padding-top:45px}.site-footer-grid{grid-template-columns:1fr;gap:31px;padding-bottom:36px}.footer-connect{padding:0;border:0}.footer-logo-link{width:185px}.site-footer-bottom{display:block}.site-footer-bottom span{display:block;margin:5px 0}}

/* --- scroll-reveal.css --- */
/* Motion is opt-in: content remains visible if JavaScript is unavailable. */
.motion-ready .reveal-section{opacity:0;transform:translateY(28px);transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1)}
.motion-ready .reveal-section.is-visible{opacity:1;transform:none}
.motion-ready .motion-item{opacity:0;transform:translateY(22px);transition:opacity .6s cubic-bezier(.16,1,.3,1) calc(var(--motion-index,0)*85ms + 120ms),transform .6s cubic-bezier(.16,1,.3,1) calc(var(--motion-index,0)*85ms + 120ms)}
.motion-ready .is-visible .motion-item{opacity:1;transform:none}
/* Once revealed, hover effects respond instantly again. */
.motion-ready .is-done .motion-item{transition-delay:0s}

/* Footer: a lighter fade so the dark band doesn't jump. */
.motion-ready .site-footer.reveal-section{transform:none}

/* Hero and page titles: text rises in sequence on arrival. Titles only move (never start invisible) so they paint immediately. */
.motion-ready .hero h1,.motion-ready .page-title h1{animation:intro-slide .9s cubic-bezier(.16,1,.3,1) both}
.motion-ready .hero .lead,.motion-ready .page-title p{animation:intro-rise .8s cubic-bezier(.16,1,.3,1) .15s both}
.motion-ready .hero-actions > *{animation:intro-rise .8s cubic-bezier(.16,1,.3,1) .27s both}
.motion-ready .hero-actions > * + *{animation-delay:.37s}

/* Counters get a small pop when they land. */
.motion-ready .number b{font-variant-numeric:tabular-nums;transform-origin:left center}
.motion-ready .number b[data-counted]{animation:count-pop .5s cubic-bezier(.16,1,.3,1) 1.55s both}

/* The home illustration assembles once on arrival, then rests. */
.motion-ready .hero .arc,.motion-ready .hero .spark{animation:hero-assemble .86s cubic-bezier(.16,1,.3,1) both}
.motion-ready .hero .a1{animation-delay:.06s}.motion-ready .hero .a2{animation-delay:.14s}.motion-ready .hero .a3{animation-delay:.22s}.motion-ready .hero .a4{animation-delay:.3s}.motion-ready .hero .a5{animation-delay:.38s}.motion-ready .hero .a6{animation-delay:.46s}.motion-ready .hero .spark{animation-delay:.58s}
.motion-ready .hero .sunline{animation:line-grow 1.1s cubic-bezier(.16,1,.3,1) .2s both;transform-origin:left}
.motion-ready .page-title .orb{animation:orb-rise .8s cubic-bezier(.16,1,.3,1) .12s both}
.motion-ready .cta:after{animation:cta-drift 7s ease-in-out .8s infinite alternate}

.button{transition:transform .22s cubic-bezier(.16,1,.3,1),background .22s ease,box-shadow .22s ease}
.button:hover{box-shadow:0 10px 20px rgba(24,72,144,.16)}
.program,.org-card,.social-item{transition:transform .28s cubic-bezier(.16,1,.3,1),box-shadow .28s ease,background .28s ease}
.org-card:hover,.social-item:hover{transform:translateY(-4px)}

@keyframes intro-slide{from{transform:translateY(22px)}to{transform:none}}
@keyframes intro-rise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes hero-assemble{from{opacity:0;transform:translate3d(-22px,24px,0) scale(.82) rotate(-6deg)}to{opacity:1;transform:translate3d(0,0,0) scale(1) rotate(0)}}
@keyframes orb-rise{from{opacity:0;transform:translateY(48px) scale(.86)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes cta-drift{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(-20px,-16px,0) scale(1.05)}}
@keyframes line-grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes count-pop{0%{transform:scale(1)}40%{transform:scale(1.08)}100%{transform:scale(1)}}

@media(prefers-reduced-motion:reduce){.motion-ready .reveal-section,.motion-ready .motion-item,.motion-ready .hero *,.motion-ready .page-title *{animation:none}.motion-ready .hero .arc,.motion-ready .hero .spark,.motion-ready .hero .sunline,.motion-ready .page-title .orb,.motion-ready .cta:after,.motion-ready .number b{animation:none}}

/* --- media-cleanup.css --- */
.mosaic-text-only{grid-template-columns:1fr}.mosaic-text-only .copy{max-width:720px}.hero-art .hero-photo{display:none}

/* --- overrides.css --- */
/* Detector refinements */
.hero h1,.page-title h1,.hero h1 em,.section h2,.copy h2,.video h2,.cta h2,.prose h2,.number b,.impact-row b{letter-spacing:-.04em}
.number{padding:28px 24px}
.action{padding:18px 0 20px;border-top:0;position:relative}
.action:before{content:'';position:absolute;top:0;left:0;width:34px;height:7px;border-radius:99px;background:var(--leaf)}
.action:nth-child(2):before{background:var(--sun)}
.action:nth-child(3):before{background:var(--clay)}

/* Mobile: stack the trust banner lines. */
@media(max-width:850px){.trust .shell{display:flex;flex-direction:column;align-items:flex-start;gap:6px}}

/* --- Nos partenaires: logo band scrolling horizontally under the hero --- */
.partners{padding:56px 0 60px;border-bottom:1px solid var(--line);overflow:hidden}
.partners-head{display:flex;align-items:baseline;justify-content:space-between;gap:24px;margin-bottom:30px}
.partners-head h2{font:700 clamp(1.8rem,3vw,2.6rem)/1 var(--display);letter-spacing:-.04em;color:var(--ink);margin:0}
.partners-head p{margin:0;max-width:44ch;color:#5b6670}
.partners-marquee{position:relative;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.partners-track{display:flex;width:max-content;animation:partners-scroll 48s linear infinite}
.partners-marquee:hover .partners-track{animation-play-state:paused}
.partners-set{display:flex;align-items:center;gap:88px;margin:0;padding:0 44px;list-style:none}
.partner{display:flex;align-items:center;justify-content:center;flex:none;height:120px;transition:transform .28s cubic-bezier(.16,1,.3,1)}
.partner:hover{transform:translateY(-4px) scale(1.04)}
.partner img{display:block;max-height:104px;width:auto;height:auto;object-fit:contain}
.partner.wide img{max-height:54px}
@keyframes partners-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(max-width:850px){.partners{padding:42px 0 46px}.partners-head{display:block}.partners-head p{margin-top:10px}.partner{height:90px}.partner img{max-height:76px}.partner.wide img{max-height:40px}.partners-set{gap:48px;padding:0 24px}.partners-track{animation-duration:30s}}
/* Reduced motion: no auto-scroll; the logos can be swiped/scrolled by hand instead. */
@media(prefers-reduced-motion:reduce){.partners-marquee{overflow-x:auto;-webkit-mask-image:none;mask-image:none}.partners-track{animation:none}.partners-set[aria-hidden]{display:none}}

/* --- Shape illustrations: the hero's vocabulary reused where a section needs an image --- */
.mosaic-art{grid-template-columns:1.1fr .9fr}
.shape-art{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;width:min(440px,100%);margin-left:auto}
.shape-art span{aspect-ratio:1;background:var(--c);transform-origin:center}
.shape-art .c-ink{--c:var(--ink)}.shape-art .c-teal{--c:var(--teal)}.shape-art .c-leaf{--c:var(--leaf)}.shape-art .c-sun{--c:var(--sun)}.shape-art .c-clay{--c:var(--clay)}
.shape-art span:not([class]){background:none}
.shape-art .q-tl{border-radius:100% 0 0 0}.shape-art .q-tr{border-radius:0 100% 0 0}.shape-art .q-bl{border-radius:0 0 0 100%}.shape-art .q-br{border-radius:0 0 100% 0}
.shape-art .leaf{border-radius:50% 50% 10px 50%}
.shape-art .circle{border-radius:50%}
.shape-art .ring{border-radius:50%;background:radial-gradient(circle closest-side,transparent 64%,var(--c) 65%)}
.shape-art .half{border-radius:100% 100% 0 0/200% 200% 0 0;align-self:end;aspect-ratio:2/1}
.shape-art .dot{border-radius:50%;background:radial-gradient(circle closest-side,var(--c) 34%,transparent 36%)}
/* Assembles piece by piece when its section scrolls into view. */
.motion-ready .reveal-section .shape-art span{opacity:0;transform:translate3d(-14px,18px,0) scale(.8) rotate(-6deg);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}
.motion-ready .reveal-section.is-visible .shape-art span{opacity:1;transform:none}
.motion-ready .reveal-section.is-visible .shape-art span:nth-child(1){transition-delay:0.27s}.motion-ready .reveal-section.is-visible .shape-art span:nth-child(2){transition-delay:0.34s}.motion-ready .reveal-section.is-visible .shape-art span:nth-child(3){transition-delay:0.41s}.motion-ready .reveal-section.is-visible .shape-art span:nth-child(4){transition-delay:0.48s}.motion-ready .reveal-section.is-visible .shape-art span:nth-child(5){transition-delay:0.55s}.motion-ready .reveal-section.is-visible .shape-art span:nth-child(6){transition-delay:0.62s}.motion-ready .reveal-section.is-visible .shape-art span:nth-child(7){transition-delay:0.69s}.motion-ready .reveal-section.is-visible .shape-art span:nth-child(8){transition-delay:0.76s}.motion-ready .reveal-section.is-visible .shape-art span:nth-child(9){transition-delay:0.83s}
@media(max-width:850px){.mosaic-art{grid-template-columns:1fr;gap:40px}.shape-art{width:min(320px,82%);margin:0 auto 0 0;gap:10px}}
@media(prefers-reduced-motion:reduce){.motion-ready .reveal-section .shape-art span{opacity:1;transform:none;transition:none}}

/* --- mobile.css: phone layout --- */
.nav{position:relative}
.nav-toggle{display:none}
@media(max-width:850px){
  /* Menu: a toggle in the bar opens the links as a full-width panel. */
  .nav{height:76px}
  /* The bar stays on screen while scrolling, on a paper background that spans the full width. */
  .nav{position:sticky;top:0;z-index:30}
  .nav:before{content:'';position:absolute;z-index:-1;inset:0 calc(50% - 50vw);background:var(--paper);border-bottom:1px solid var(--line)}
  html{scroll-padding-top:76px}
  .navlinks{max-height:calc(100dvh - 76px);overflow-y:auto}
  .brand .mark{width:130px;height:66px}
  .nav-toggle{display:grid;place-items:center;width:48px;height:48px;margin-right:-8px;padding:0;border:0;border-radius:12px;background:transparent;color:var(--ink);cursor:pointer}
  .nav-toggle span,.nav-toggle span:before,.nav-toggle span:after{display:block;width:24px;height:2.5px;border-radius:2px;background:currentColor;transition:transform .25s cubic-bezier(.16,1,.3,1),opacity .2s}
  .nav-toggle span{position:relative}
  .nav-toggle span:before,.nav-toggle span:after{content:'';position:absolute;left:0}
  .nav-toggle span:before{top:-7px}.nav-toggle span:after{top:7px}
  .nav-open .nav-toggle span{background:transparent}
  .nav-open .nav-toggle span:before{transform:translateY(7px) rotate(45deg);background:var(--ink)}
  .nav-open .nav-toggle span:after{transform:translateY(-7px) rotate(-45deg);background:var(--ink)}
  .nav-toggle:focus-visible{outline:3px solid var(--leaf);outline-offset:2px}
  .navlinks{display:none;position:absolute;z-index:20;top:100%;left:calc(50% - 50vw);width:100vw;flex-direction:column;align-items:stretch;gap:0;padding:8px 16px 20px;background:var(--paper);border-bottom:1px solid var(--line);box-shadow:0 18px 30px #26333c1f;font-size:18px}
  .nav-open .navlinks{display:flex}
  .navlinks a:not(.button){padding:15px 4px;border-bottom:1px solid var(--line)}
  .navlinks a:not(.button):after{display:none}
  .navlinks a.active{color:var(--ink)}
  .navlinks a.active:before{content:'';display:inline-block;width:8px;height:8px;margin-right:10px;border-radius:50%;background:var(--leaf);vertical-align:middle}
  .navlinks .button{align-self:flex-start;margin-top:18px;padding:15px 20px;font-size:16px}

  /* Hero fills exactly one screen under the 84px header (8px line + 76px bar).
     Type and spacing scale with screen height; the illustration takes what is left (capped), never more. */
  .hero{display:flex;flex-direction:column;min-height:calc(100vh - 84px);min-height:calc(100svh - 84px);padding:clamp(14px,3svh,28px) 0 clamp(14px,2.5svh,24px)}
  .hero-grid{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:stretch;gap:clamp(12px,2.6svh,24px);min-height:0}
  .hero h1{font-size:clamp(2.1rem,min(11.6vw,6.2svh),3.5rem);margin-bottom:clamp(10px,2svh,16px)}
  .hero .lead{font-size:clamp(15px,2.3svh,17px);line-height:1.5;margin-bottom:clamp(14px,2.6svh,22px)}
  .hero-actions .button{padding-top:clamp(11px,1.7svh,14px);padding-bottom:clamp(11px,1.7svh,14px)}
  .hero-art{flex:1 1 0;height:auto;min-height:0;max-height:250px;container-type:size;
    --u:min(calc(100cqw / 446),calc(100cqh / 367),.68px);
    --x:calc((100cqw - 446 * var(--u)) / 2);
    --y:calc((100cqh - 367 * var(--u)) / 2)}
  /* The illustration is drawn in a 446×367 box and scaled to whatever height is left. */
  .hero-art .arc,.hero-art .spark{transform:none;top:auto;bottom:auto;left:auto}
  .hero-art .a1{width:calc(270 * var(--u));height:calc(270 * var(--u));right:calc(var(--x) + 62 * var(--u));bottom:var(--y)}
  .hero-art .a2{width:calc(192 * var(--u));height:calc(192 * var(--u));right:var(--x);bottom:var(--y)}
  .hero-art .a3{width:calc(192 * var(--u));height:calc(192 * var(--u));right:calc(var(--x) + 254 * var(--u));bottom:var(--y)}
  .hero-art .a4{width:calc(140 * var(--u));height:calc(140 * var(--u));right:calc(var(--x) + 160 * var(--u));top:var(--y)}
  .hero-art .a5{width:calc(140 * var(--u));height:calc(140 * var(--u));right:calc(var(--x) + 20 * var(--u));top:var(--y)}
  .hero-art .a6{width:calc(100 * var(--u));height:calc(100 * var(--u));border-width:calc(11 * var(--u));right:calc(var(--x) + 104 * var(--u));top:calc(var(--y) + 119 * var(--u))}
  .hero-art .spark{width:calc(20 * var(--u));height:calc(20 * var(--u));right:calc(var(--x) + 440 * var(--u));bottom:calc(var(--y) + 60 * var(--u))}

  /* Page titles: keep the decorative orb clear of the intro text. */
  .page-title{padding:44px 0 64px}
  .page-title h1,.page-title p{position:relative;z-index:1}
  .page-title .orb{width:150px;height:150px;right:-30px;bottom:-95px}

  /* CTA ring: smaller and pushed into the corner so it doesn't cross the text. */
  .cta{padding:64px 0 96px}
  .cta:after{width:240px;height:240px;border-width:36px;right:-110px;bottom:-150px}

  .program{min-height:0;gap:28px}
  .shape-art{width:min(260px,70%)}
}
@media(max-width:560px){
  .hero-actions{gap:10px}
  .hero-actions .button{padding-left:16px;padding-right:16px}
  .page-title h1{font-size:clamp(2.4rem,10.5vw,3.4rem)}
  .page-title p{font-size:17px}
  .section{padding:56px 0}
  .section-head{margin-bottom:30px}
  /* Key figures sit side by side instead of three tall rows. */
  .numbers{grid-template-columns:repeat(3,1fr)}
  .number,.number+.number{padding:20px 6px 18px;border-bottom:0;border-right:1px solid var(--line);text-align:center}
  .number:last-child{border-right:0}
  .motion-ready .number b{transform-origin:center}
  .number b{font-size:clamp(2.2rem,10vw,2.9rem)}
  .number span{display:block;margin-top:6px;font-size:13px;line-height:1.3}
  .impact-row{gap:6px}
}
/* Phones held sideways: too short for text and illustration, so keep the text only. */
@media(max-width:850px) and (max-height:500px) and (orientation:landscape){
  .hero{min-height:0}
  .hero-art{display:none}
}
@media(prefers-reduced-motion:reduce){.nav-toggle span,.nav-toggle span:before,.nav-toggle span:after{transition:none}}

/* Buttons hug their label: the footer donate link no longer stretches across the column. */
.footer-donate{display:inline-flex!important}

/* --- Actualités: news cards, listing page and article pages --- */
.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px 28px}
.news-card a{display:flex;flex-direction:column;height:100%}
.news-cover{position:relative;overflow:hidden;aspect-ratio:4/3;border-radius:16px;background:var(--c);transition:transform .28s cubic-bezier(.16,1,.3,1)}
.news-card a:hover .news-cover{transform:translateY(-4px)}
.news-cover img{display:block;width:100%;height:100%;object-fit:cover}
/* Placeholder covers: the hero's shapes in each category's colour, until real visuals are added. */
.news-cover:before,.news-cover:after{content:'';position:absolute}
.news-cover:before{width:46%;aspect-ratio:1;right:-6%;bottom:-8%;border-radius:100% 0 0 0;background:var(--s1)}
.news-cover:after{width:15%;aspect-ratio:1;left:9%;top:12%;border-radius:50%;background:var(--s2)}
.news-cover b{position:absolute;left:9%;bottom:10%;z-index:1;font:700 clamp(2.6rem,5vw,4.4rem)/1 var(--display);letter-spacing:-.04em;color:var(--t)}
.tone-teal{--c:#cce5e2;--s1:var(--teal);--s2:var(--sun);--t:var(--ink)}
.tone-teal b{font-family:var(--serif);font-weight:400;font-size:clamp(4rem,8vw,7rem)}
.tone-clay{--c:var(--clay);--s1:transparent;--s2:var(--sun);--t:#fff}
.tone-clay:before{border:clamp(18px,3vw,30px) solid var(--leaf);border-radius:50%;width:58%;right:-16%;bottom:-24%}
.tone-sun{--c:var(--sun);--s1:var(--ink);--s2:#fff;--t:var(--ink)}
.tone-sun:before{border-radius:50% 50% 10px 50%}
.tone-leaf{--c:var(--leaf);--s1:#fffdfa;--s2:var(--clay);--t:#153c62}
.tone-leaf:before{border-radius:0 0 0 100%;right:0;bottom:0}
.tone-ink{--c:var(--ink);--s1:var(--sun);--s2:var(--leaf);--t:#fff}
.tone-ink:before{border-radius:100% 100% 0 0/200% 200% 0 0;aspect-ratio:2/1;width:56%;bottom:0}
.tone-cream{--c:var(--cream);--s1:var(--leaf);--s2:var(--teal);--t:var(--clay)}
.news-card-body{display:flex;flex-direction:column;flex:1;padding-top:18px}
.news-meta{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0 0 10px;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#66736e}
.news-meta span{color:var(--clay)}
.news-card h3{font:700 23px/1.12 var(--display);letter-spacing:-.03em;color:var(--ink);margin:0 0 10px}
.news-card p:not(.news-meta){margin:0 0 16px;font-size:15px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.news-more{margin-top:auto;font-size:14px;font-weight:800;color:var(--ink)}
.news-more:after{content:' →';transition:margin .2s}
.news-card a:hover .news-more:after{margin-left:4px}
.news-all{display:inline-block;margin-top:10px;font-weight:800;color:var(--ink);border-bottom:2px solid var(--leaf)}
/* Listing: the latest article gets a wide card on top. */
.news-featured{margin-bottom:56px;padding-bottom:56px;border-bottom:1px solid var(--line)}
.news-card.featured a{display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center}
.news-card.featured .news-cover{aspect-ratio:16/10}
.news-card.featured h3{font-size:clamp(1.9rem,3vw,2.7rem);line-height:1.05}
.news-card.featured p:not(.news-meta){font-size:17px;-webkit-line-clamp:5}
/* Article pages */
.article-head{padding-bottom:84px}
.article-head h1{font-size:clamp(2.3rem,4.4vw,4rem);line-height:1.02;max-width:20ch}
.article-head p:not(.news-meta){font-size:20px;max-width:58ch}
.back-link{display:inline-block;margin-bottom:26px;font-size:14px;font-weight:800;color:var(--ink)}
.back-link:hover{color:var(--clay)}
.article-section{padding-top:64px}
.article-layout{max-width:780px}
.article-layout > .news-cover{aspect-ratio:16/8;margin-bottom:48px}
.article-layout > .news-cover b{font-size:clamp(3.5rem,9vw,7rem)}
.article-layout > .tone-teal b{font-size:clamp(6rem,14vw,11rem)}
.article-body{font-size:18px;line-height:1.7}
.article-body p{margin:0 0 20px}
.article-body h2{font-size:28px;margin:44px 0 14px}
.article-body ul{margin:0 0 22px}
.article-body blockquote{margin:34px 0;padding:6px 0 6px 26px;border-left:5px solid var(--leaf);font:400 clamp(1.35rem,2.4vw,1.7rem)/1.4 var(--serif);color:var(--ink)}
.article-body a:not(.button){color:var(--ink);font-weight:700;text-decoration:underline;text-decoration-color:var(--leaf);text-decoration-thickness:2px;text-underline-offset:3px}
.article-links{display:flex;flex-wrap:wrap;gap:12px}
.donate-box{margin:40px 0 0;padding:32px;border-radius:16px;background:var(--cream)}
.donate-box h2{margin-top:0}
.donate-box ul{margin-bottom:24px}
@media(max-width:850px){
  .news-grid{grid-template-columns:repeat(2,1fr)}
  .news-card.featured a{grid-template-columns:1fr;gap:0}
  .news-featured{margin-bottom:40px;padding-bottom:40px}
  .article-head{padding-bottom:64px}
  .article-section{padding-top:44px}
  .article-layout > .news-cover{margin-bottom:34px}
}
@media(max-width:560px){
  .news-grid{grid-template-columns:1fr;gap:36px}
  .article-head h1{font-size:clamp(2rem,8.6vw,2.6rem)}
  .article-head p:not(.news-meta){font-size:17px}
  .article-body{font-size:17px}
  .donate-box{padding:24px 20px}
}
.article-body h2{max-width:none}
.page-title .news-meta{font-size:13px}
.tone-clay:before{right:-24%}

/* --- Real covers: photos fill the frame, posters are shown whole on their own background --- */
.news-cover.has-image{background:var(--bg,#eef0ec)}
.news-cover.has-image:before,.news-cover.has-image:after{display:none}
.news-cover.fit-contain img{object-fit:contain;padding:6% 0}
.bg-coly{--bg:#f1f0ec}.bg-campagne{--bg:#f6e4d6}.bg-rentree{--bg:#f4f3ef}.bg-daara{--bg:#1f3864}.bg-bilan{--bg:#f8f6f2}.bg-ohw{--bg:#ece2de}.bg-culture{--bg:#33525c}
/* Article page: a poster keeps its full height (capped), a photo spans the column. */
.article-layout > .article-cover.has-image{aspect-ratio:auto}
.article-layout > .article-cover.has-image img{height:auto;max-height:min(78vh,760px);margin:auto}
.article-layout > .article-cover.fit-contain img{width:auto;max-width:100%;padding:28px 0}
/* Category as a pill, as in the client's mock-ups. */
.news-meta{align-items:center}
.news-meta span{padding:5px 11px;border-radius:999px;background:#e6edf7;color:var(--ink);letter-spacing:.07em}
/* Hand-drawn underline under page titles (news, testimonials). */
.swoosh{display:block;width:min(320px,70%);height:auto;margin:-6px 0 22px;color:var(--ink);position:relative;z-index:1}
/* Videos: vertical (9:16) clips, side by side. */
.video-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:0 0 28px}
.video-pair.single{grid-template-columns:minmax(0,340px)}
.video-card{margin:0}
.video-card video{display:block;width:100%;aspect-ratio:9/16;object-fit:cover;border-radius:16px;background:#17252d}
.video-card figcaption{margin-top:10px;font-size:14px;font-weight:800;color:var(--ink)}

/* --- Témoignages page --- */
.testi-feature{display:grid;grid-template-columns:.9fr 1.1fr;gap:60px;align-items:center}
.testi-feature.flip .testi-media{order:2}
.testi-media img{display:block;width:100%;height:auto;border-radius:18px;box-shadow:0 22px 40px #344a3a1f}
.testi-media.poster{max-width:420px}
.testi-copy blockquote{margin:12px 0 22px;font:400 clamp(1.6rem,2.8vw,2.4rem)/1.25 var(--serif);color:var(--ink)}
.testi-copy h2{font:700 clamp(2rem,3.4vw,3rem)/1 var(--display);letter-spacing:-.04em;color:var(--ink);margin:12px 0 18px;max-width:none}
.testi-who{margin:0 0 18px;color:#5b6670}
.testi-who strong{color:var(--charcoal)}
.testi-copy .news-more{display:inline-block}
.testi-quotes{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:56px 0 0;padding:0;list-style:none}
.testi-quotes li{padding:22px 0 0;border-top:4px solid var(--leaf);font:400 20px/1.4 var(--serif);color:var(--ink)}
.testi-quotes li:nth-child(2){border-color:var(--sun)}.testi-quotes li:nth-child(3){border-color:var(--clay)}
.testi-videos{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.testi-video h3{font:700 22px/1.1 var(--display);letter-spacing:-.03em;color:var(--ink);margin:14px 0 4px}
.testi-video p{margin:0;font-size:14px;color:#5b6670}
.testi-video .video-card figcaption{position:absolute;opacity:0;pointer-events:none}

/* --- Impact: results year by year --- */
.years{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.year{padding:30px 28px;border-radius:18px;background:#fff;box-shadow:0 14px 30px #38574512;display:flex;flex-direction:column}
.year.latest{background:var(--ink);color:#fff}
.year h3{font:800 13px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--clay);margin:0 0 20px}
.year.latest h3{color:var(--sun)}
.year-main{display:flex;align-items:baseline;gap:12px;margin:0 0 6px}
.year-main b{font:700 clamp(3rem,5vw,4.4rem)/1 var(--display);letter-spacing:-.05em;color:var(--ink)}
.year.latest .year-main b{color:#fff}
.year-main span{font-weight:800}
.year ul{list-style:none;margin:18px 0 0;padding:16px 0 0;border-top:1px solid var(--line);font-size:15px}
.year.latest ul{border-color:#ffffff33}
.year li{padding:5px 0}
.year li b{color:var(--clay)}
.year.latest li b{color:var(--leaf)}
.year a{margin-top:auto;padding-top:20px;font-size:14px;font-weight:800;color:inherit}
.numbers-more{margin:26px 0 0;font-weight:800}
.numbers-more a{color:var(--ink);border-bottom:2px solid var(--leaf)}

@media(max-width:850px){
  .testi-feature{grid-template-columns:1fr;gap:30px}
  .testi-feature.flip .testi-media{order:0}
  .testi-quotes,.testi-videos{grid-template-columns:repeat(2,1fr)}
  /* One year per row: the lists are too long to share a line. */
  .years{grid-template-columns:1fr;gap:28px}
  }
@media(max-width:560px){
  .testi-videos{grid-template-columns:1fr;gap:36px}
  .video-pair{gap:12px}
  .testi-video video{max-width:340px}
  }
/* Seven links in the bar: tighten spacing before the menu switches to the phone panel. */
@media(min-width:851px) and (max-width:1180px){.navlinks{gap:16px;font-size:13px}.navlinks .button{padding:11px 15px}}
.news-cover.is-poster img{object-position:center top}
.news-cover.focus-mid img{object-position:center 38%}
.testi-feature.solo{grid-template-columns:1fr;max-width:900px}
.testi-feature.solo blockquote{font-size:clamp(2rem,4vw,3.4rem);line-height:1.15}
@media(min-width:851px) and (max-width:1180px){.navlinks a{white-space:nowrap}}
@media(min-width:851px) and (max-width:1000px){.brand .mark{width:120px;height:62px}.navlinks{gap:13px}.navlinks a[href$="index.html"]{display:none}}
.testi-video .news-more{display:inline-block;margin-top:10px}
.year-col{display:flex;flex-direction:column}
.year-col .year{flex:1}
.year-caption{margin:14px 0 0;font-size:14px;font-weight:800;color:var(--ink)}
.bg-white{--bg:#fff}
/* Cover drawn with the hero's shapes (articles without a picture). */
.news-cover.cover-art{display:grid;place-items:center;background:var(--cream)}
.news-cover.cover-art:before,.news-cover.cover-art:after{display:none}
.cover-art .shape-art{width:56%;margin:0;gap:7%}
.article-layout > .article-cover.cover-art .shape-art{width:min(40%,300px)}
.testi-media .cover-art{border-radius:18px}
.section.cream .news-cover.cover-art{background:var(--paper)}

/* --- Programme cards: hover / keyboard focus --- */
.program{position:relative;isolation:isolate}
/* A soft disc grows from the corner behind the content. */
.program:before{content:'';position:absolute;z-index:-1;width:220px;height:220px;right:-90px;bottom:-90px;border-radius:50%;background:#ffffff59;transform:scale(.45);opacity:0;transition:transform .5s cubic-bezier(.16,1,.3,1),opacity .4s ease}
.program > span{transition:transform .45s cubic-bezier(.16,1,.3,1),color .3s ease;transform-origin:left top}
.program h3{transition:transform .4s cubic-bezier(.16,1,.3,1)}
.program a i{display:inline-block;font-style:normal;transition:transform .3s cubic-bezier(.16,1,.3,1)}
.program:hover,.program:focus-within{transform:translateY(-8px);box-shadow:0 22px 36px #26333c24}
.program:hover:before,.program:focus-within:before{transform:scale(1);opacity:1}
.program:hover > span,.program:focus-within > span{transform:scale(1.25) rotate(-4deg);color:#fff}
.program:hover h3,.program:focus-within h3{transform:translateX(4px)}
.program:hover a i,.program:focus-within a i{transform:translateX(6px)}
/* The scroll-reveal sets its own transition on revealed items; once it has finished, hand hover back. */
.program,.motion-ready .is-done .programs .program{transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s ease}

/* --- Same hover as the programme cards, on every box of the site --- */
.org-card,.year,.donate-box,.news-cover.cover-art{position:relative;overflow:hidden;isolation:isolate;--disc:#86dc5b38}
.org-card.president,.year.latest{--disc:#ffffff2e}
.org-card:before,.year:before,.donate-box:before,.news-cover.cover-art:before{content:'';display:block;position:absolute;z-index:-1;width:220px;height:220px;right:-90px;bottom:-90px;border-radius:50%;background:var(--disc);transform:scale(.45);opacity:0;transition:transform .5s cubic-bezier(.16,1,.3,1),opacity .4s ease}
.org-card:hover,.year:hover,.donate-box:hover,.donate-box:focus-within{transform:translateY(-8px);box-shadow:0 22px 36px #26333c24}
.org-card:hover:before,.year:hover:before,.donate-box:hover:before,.donate-box:focus-within:before,
.news-card a:hover .cover-art:before,.news-card a:focus-visible .cover-art:before,.testi-media:hover .cover-art:before{transform:scale(1);opacity:1}
.year,.donate-box{transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s ease}
/* Big figures react like the programme numbers. */
.year-main b,.org-card.president strong{display:inline-block;transform-origin:left bottom;transition:transform .45s cubic-bezier(.16,1,.3,1)}
.year:hover .year-main b{transform:scale(1.08) rotate(-3deg)}
.org-card.president:hover strong{transform:scale(1.05)}
.donate-box h2{transition:transform .4s cubic-bezier(.16,1,.3,1)}
.donate-box:hover h2,.donate-box:focus-within h2{transform:translateX(4px)}
/* Arrows slide forward. */
.year a{display:inline-block;transition:transform .3s cubic-bezier(.16,1,.3,1)}
.year:hover a{transform:translateX(6px)}
.news-more:after{display:inline-block;transition:transform .3s cubic-bezier(.16,1,.3,1)}
.news-card a:hover .news-more:after,.news-card a:focus-visible .news-more:after,.testi-copy .news-more:hover:after,.testi-video .news-more:hover:after{margin-left:0;transform:translateX(6px)}
/* News and testimonial covers: lift with a shadow; photos zoom in slightly. */
.news-cover{transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s ease}
.news-cover img{transition:transform .6s cubic-bezier(.16,1,.3,1)}
.news-card a:hover .news-cover,.news-card a:focus-visible .news-cover,.testi-media:hover .news-cover{transform:translateY(-8px);box-shadow:0 22px 36px #26333c24}
.news-card a:hover .news-cover img,.news-card a:focus-visible .news-cover img{transform:scale(1.05)}
.news-card a:hover h3,.news-card a:focus-visible h3{transform:translateX(4px)}
.news-card h3{transition:transform .4s cubic-bezier(.16,1,.3,1)}
/* Témoignages: photos and videos lift too. */
.testi-media img,.video-card video{transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s ease}
.testi-media:hover img,.video-card:hover video{transform:translateY(-8px);box-shadow:0 22px 36px #26333c2e}
/* The scroll-reveal sets its own transition on revealed items; once it has finished, hand hover back. */
.motion-ready .is-done .org-grid .org-card,.motion-ready .is-done .prose > .donate-box,.motion-ready .is-done .testi-feature > .testi-media{transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s ease}
/* Témoignages, "Les jeunes témoignent": the shapes sit straight on the section, no card behind them. */
.testi-media .news-cover.cover-art,.section.cream .testi-media .news-cover.cover-art{background:none;border-radius:0;box-shadow:none}
.testi-media:hover .news-cover.cover-art{box-shadow:none}
.testi-media .news-cover.cover-art:before{display:none}
/* The arrow is an inline-block (so it can slide), which drops the leading space: use a margin instead. */
.news-more:after,.news-card a:hover .news-more:after,.news-card a:focus-visible .news-more:after,.testi-copy .news-more:hover:after,.testi-video .news-more:hover:after{content:'→';margin-left:.3em}
/* Six partners instead of four: longer loop, same scrolling speed. */
.partners-track{animation-duration:72s}
@media(max-width:850px){.partners-track{animation-duration:45s}}

/* --- Notre impact: annual reports to download --- */
.reports{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,520px),1fr));gap:24px}
.report{display:grid;grid-template-columns:150px 1fr;gap:28px;align-items:center;padding:24px;border-radius:18px;background:var(--paper);box-shadow:0 14px 30px #38574512;position:relative;overflow:hidden;isolation:isolate;--disc:#86dc5b38;transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s ease}
.report:before{content:'';position:absolute;z-index:-1;width:220px;height:220px;right:-90px;bottom:-90px;border-radius:50%;background:var(--disc);transform:scale(.45);opacity:0;transition:transform .5s cubic-bezier(.16,1,.3,1),opacity .4s ease}
.report:hover,.report:focus-within{transform:translateY(-8px);box-shadow:0 22px 36px #26333c24}
.report:hover:before,.report:focus-within:before{transform:scale(1);opacity:1}
.report-cover img{display:block;width:100%;height:auto;border-radius:6px;box-shadow:0 10px 20px #26333c2e;transition:transform .45s cubic-bezier(.16,1,.3,1)}
.report:hover .report-cover img,.report:focus-within .report-cover img{transform:rotate(-3deg) scale(1.04)}
.report h3{font:700 26px/1.05 var(--display);letter-spacing:-.03em;color:var(--ink);margin:0 0 6px}
.report-meta{margin:0 0 12px;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--clay)}
.report-body > p:not(.report-meta){margin:0 0 18px;font-size:15px}
.report .button span{display:inline-block;margin-left:8px;transition:transform .3s cubic-bezier(.16,1,.3,1)}
.report:hover .button span,.report:focus-within .button span{transform:translateY(3px)}
@media(max-width:560px){.report{grid-template-columns:96px 1fr;gap:18px;padding:18px}.report h3{font-size:22px}}
.motion-ready .is-done .reports .report{transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s ease}
/* Parent testimonial: a vertical clip beside the quote. */
.testi-feature:has(.testi-clip){grid-template-columns:minmax(0,340px) 1fr}
.testi-clip .video-card figcaption{color:#5b6670;font-weight:700}
@media(max-width:850px){.testi-feature:has(.testi-clip){grid-template-columns:1fr}.testi-clip{max-width:340px}}

/* --- Footer credit and back-to-top button --- */
.site-footer-bottom a{color:#edf3f0;border-bottom:1px solid #ffffff55;transition:border-color .2s ease}
.site-footer-bottom a:hover,.site-footer-bottom a:focus-visible{border-color:var(--leaf)}
.to-top{position:fixed;z-index:25;right:20px;bottom:20px;display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--ink);color:#fff;border:2px solid #ffffffd9;box-shadow:0 10px 24px #26333c40;opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity .3s ease,transform .3s ease,visibility .3s,background .2s ease}
.to-top.show{opacity:1;visibility:visible;transform:none}
.to-top:hover{background:var(--teal)}
.to-top:focus-visible{outline:3px solid var(--leaf);outline-offset:3px}
@media(max-width:560px){.to-top{right:16px;bottom:16px;width:44px;height:44px}}
