.home-footer{margin:0;background:#000}
.home-footer .container.padding-top{position:relative;isolation:isolate;display:block!important;padding:64px var(--side) 20px!important;min-height:0;overflow:hidden}
.home-footer .home-footer-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-1;pointer-events:none}
.home-footer-content{position:relative;z-index:1;max-width:640px;margin:0 auto}
.home-footer h2{max-width:10ch;margin:0 0 22px;font:600 clamp(44px,12vw,72px)/.98 var(--font-display);letter-spacing:-.025em;color:#e6e6e6}
.home-footer h2 em{font:.95em var(--font-accent);font-style:italic;white-space:nowrap}
.home-footer .home-row-link:hover{color:#c8dfe9}
.home-footer .home-row-link{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:54px;padding:15px 0;border-bottom:1px solid rgba(230,230,230,.32);color:#e6e6e6;text-decoration:none!important;font:500 16px/1.15 "neue-haas-grotesk-text",Arial,sans-serif;letter-spacing:.01em;text-transform:uppercase}
.home-footer .home-footer-action>span:last-child{display:flex;align-items:center;width:29px;height:18px}
.home-footer .home-footer-action{display:inline-flex;align-items:center;justify-content:center;gap:18px;width:auto;min-height:50px;padding:13px 16px;border:1px solid rgba(230,230,230,.65);border-radius:4px;background:#0b0b0b}
.home-footer-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:76px;padding:0 0 14px}
.home-footer-nav .home-row-link{display:inline-flex;min-height:0;padding:0;border:0;gap:0;font-size:clamp(16px,5vw,20px);white-space:nowrap}
.home-footer-bottom{display:flex;justify-content:space-between;gap:16px;margin-top:0;padding-top:14px;border-top:1px solid rgba(230,230,230,.32);font:500 12px/1.2 "neue-haas-grotesk-text",Arial,sans-serif;text-transform:uppercase;letter-spacing:.01em;color:#d5dce0}
.home-footer .footer-logo{font-size:clamp(170px,76vw,300px);width:1.175em;height:1em;margin:8px auto 0}

/* Home footer photo (Gabriel 2026-11-04, his mockups). Layers, bottom to top: the blue light image, a blue gradient that
   climbs up the footer getting darker, then the black-and-white shot, whose ragged top and bottom edges are baked into
   the file as transparency (tools/build_footer_photo.py), so it melts into the blue instead of ending on a straight line.
   The headline never sits on the photo: the small script after the footer sets --fp-s (headline bottom, in photo
   coordinates) and the mask keeps everything above it clear. It eases in out of a blur the first time the footer scrolls
   into view (.fp-in). EN + FR home only. */
.home-footer:has(.home-footer-photo) .home-footer-bg{z-index:-3}
.home-footer .home-footer-shade{position:absolute;inset:0;z-index:-2;pointer-events:none;
  background:linear-gradient(to bottom,transparent 0,transparent var(--fp-ny,55%),rgba(14,29,38,.55) calc(var(--fp-ny,55%) + 50px),rgba(26,54,70,.6) calc(var(--fp-ny,55%) + 150px),rgba(40,78,100,.3) calc(var(--fp-ny,55%) + 260px),rgba(36,70,90,0) 100%)}
.home-footer .home-footer-photo{position:absolute;left:var(--fp-left,-4%);top:var(--fp-top,calc(184px - 67.5vw));width:var(--fp-w,120%);height:auto;max-width:none;z-index:-1;pointer-events:none;
  opacity:0;transform:scale(1.04);transform-origin:60% 40%;
  filter:contrast(.96) brightness(.86) blur(10px);
  -webkit-mask-image:url(/assets/footer/footer-edge.png?v=3),linear-gradient(#000,#000);
          mask-image:url(/assets/footer/footer-edge.png?v=3),linear-gradient(#000,#000);
  -webkit-mask-size:100% 120px,100% 100%;mask-size:100% 120px,100% 100%;
  -webkit-mask-position:0 var(--fp-s,0px),0 calc(var(--fp-s,0px) + 119px);mask-position:0 var(--fp-s,0px),0 calc(var(--fp-s,0px) + 119px);
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  transition:opacity 2.2s ease,filter 2.4s ease,transform 3s cubic-bezier(.22,.7,.2,1)}
.home-footer.fp-in .home-footer-photo{opacity:1;transform:none;filter:contrast(.96) brightness(.86) blur(0)}
@media(prefers-reduced-motion:reduce){.home-footer .home-footer-photo{transition:none;opacity:1;transform:none;filter:contrast(.96) brightness(.86)}}
.home-footer:has(.home-footer-photo) .container.padding-top{padding-top:60px!important}
/* the footer links sit under the photo: the script pushes them down so the gimbal stays above them (Gabriel 2026-11-04) */
.home-footer:has(.home-footer-photo) .home-footer-nav{margin-top:var(--fp-nav,150px)}
/* dark only where the links and the name line sit, never above them (Gabriel 2026-11-04) */
.home-footer .home-footer-dim{position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(to bottom,transparent 0,transparent calc(var(--fp-ny,55%) - 26px),rgba(0,0,0,.78) calc(var(--fp-ny,55%) + 10px),rgba(0,0,0,.92) calc(var(--fp-ny,55%) + 45px),rgba(2,5,7,.94) calc(var(--fp-ny,55%) + 100px),rgba(6,14,19,.7) calc(var(--fp-ny,55%) + 150px),transparent calc(var(--fp-ny,55%) + 230px))}

