.project-gallery{--gallery-width:54vw;--gallery-height:53svh;--gallery-radius:7px;--gallery-spread:0;--gallery-surround-opacity:1;--gallery-caption-opacity:0;position:relative;z-index:2;height:340svh;padding-top:130px;background:#121212;color:#f6f3ec;isolation:isolate}
.gallery-heading{position:absolute;top:65px;left:4.4%;right:4.4%;pointer-events:none}
.gallery-heading h2{font-size:clamp(44px,4.2vw,72px);line-height:1;letter-spacing:-.05em;font-weight:400}
.gallery-stage{position:sticky;top:0;height:100svh;overflow:hidden;background:#121212}
.gallery-composition{position:absolute;inset:0;touch-action:pan-y}
.gallery-feature{position:absolute;inset:0;z-index:2;pointer-events:none;outline-offset:-6px}
.gallery-image-frame{position:absolute;left:50%;top:var(--gallery-center-y,50.6%);width:var(--gallery-width);height:var(--gallery-height);transform:translate(-50%,-50%);border-radius:var(--gallery-radius);overflow:hidden;background:#222;pointer-events:auto;will-change:width,height}
.gallery-images,.gallery-image{position:absolute;inset:0;width:100%;height:100%}
.gallery-image{object-fit:cover;opacity:0;transform:scale(1);transition:clip-path 1.05s cubic-bezier(.76,0,.24,1),transform 1.4s cubic-bezier(.22,1,.36,1)}
.gallery-image.is-current,.gallery-image.is-outgoing{opacity:1}
.gallery-image-frame::after{content:"";position:absolute;z-index:3;inset:45% 0 0;background:linear-gradient(transparent,rgba(0,0,0,.22));pointer-events:none}
.gallery-caption{position:absolute;z-index:4;left:27.5%;right:27.5%;bottom:var(--gallery-caption-bottom,24%);display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:auto auto;align-items:center;gap:18px 20px;color:#f6f3ec;opacity:var(--gallery-caption-opacity);pointer-events:none}
.gallery-name{grid-column:1/-1;margin:0;font-family:Georgia,serif;font-size:clamp(24px,1.9vw,36px);line-height:1.2;letter-spacing:-.035em;font-weight:400}
.gallery-controls{grid-column:2;display:flex;gap:2.6vw;pointer-events:auto}
.gallery-controls button,.gallery-lightbox-prev,.gallery-lightbox-next{display:grid;place-items:center;width:clamp(56px,5.4vw,104px);height:clamp(56px,5.4vw,104px);padding:0;border:1px solid #ffffff30;border-radius:50%;background:#151515;color:#f6f3ec;transition:background .35s,color .35s}
.gallery-controls button:hover,.gallery-controls button:focus-visible{background:#f6f3ec;color:#151515}
.gallery-controls svg,.gallery-lightbox svg{width:56%;height:auto;fill:none;stroke:currentColor;stroke-width:1.5}.gallery-prev svg,.gallery-lightbox-prev svg{transform:rotate(180deg)}
.gallery-count{grid-column:3;justify-self:end;margin:0;font-family:Georgia,serif;font-size:clamp(24px,1.9vw,36px);letter-spacing:-.035em;font-weight:400;white-space:nowrap}
.gallery-expand{position:absolute;z-index:4;inset:0;width:100%;height:100%;padding:0;border:0;border-radius:0;background:transparent;color:#fff;opacity:var(--gallery-surround-opacity)}
.gallery-expand svg{display:none}.gallery-expand:focus-visible{outline:2px solid #f6f3ec;outline-offset:-5px}
.gallery-satellite{position:absolute;z-index:1;display:block;padding:0;border:0;border-radius:6px;overflow:hidden;background:#222;will-change:transform;opacity:var(--gallery-surround-opacity);transform:translate(calc(var(--gallery-spread)*var(--spread-x)),calc(var(--gallery-spread)*var(--spread-y)))}
.gallery-satellite img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.22,1,.36,1)}.gallery-satellite:hover img{transform:scale(1.04)}.gallery-satellite:focus-visible{outline-color:#fff}
.gallery-satellite--1{width:14.8vw;height:18svh;left:63%;top:6%;--spread-x:34vw;--spread-y:-24svh}
.gallery-satellite--2{width:22vw;height:28.5svh;left:79%;top:19.3%;--spread-x:35vw;--spread-y:-10svh}
.gallery-satellite--3{width:22vw;height:38.7svh;left:79.7%;top:53.4%;--spread-x:38vw;--spread-y:15svh}
.gallery-satellite--4{width:22.8vw;height:23svh;left:23.4%;top:77.1%;--spread-x:-9vw;--spread-y:28svh}
.gallery-satellite--5{width:22.7vw;height:23.2svh;left:-2%;top:63.7%;--spread-x:-36vw;--spread-y:15svh}
.gallery-satellite--6{width:22vw;height:38.7svh;left:-2.1%;top:16.2%;--spread-x:-36vw;--spread-y:-12svh}
.gallery-bottom-label{position:absolute;z-index:4;bottom:13px;left:0;right:0;margin:0;text-align:center;font-size:9px;font-weight:500;letter-spacing:.12em;pointer-events:none;opacity:calc(var(--gallery-caption-opacity)*.55)}
.gallery-lightbox{position:fixed;inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:30px 90px 85px;border:0;border-radius:0;background:#121212;color:#f6f3ec;overflow:hidden;box-sizing:border-box}
.gallery-lightbox::backdrop{background:#121212}.gallery-lightbox>img{display:block;width:100%;height:100%;object-fit:contain}.gallery-lightbox-close{position:absolute;right:25px;top:20px;width:45px;height:45px;border:1px solid #ffffff55;border-radius:50%;background:#151515;color:#fff;font-size:30px;font-weight:300;line-height:1}
.gallery-lightbox-prev,.gallery-lightbox-next{position:absolute;top:50%;transform:translateY(-50%);width:58px;height:58px}.gallery-lightbox-prev{left:16px}.gallery-lightbox-next{right:16px}.gallery-lightbox-prev:hover,.gallery-lightbox-next:hover{background:#f6f3ec;color:#151515}
.gallery-lightbox-caption{position:absolute;bottom:26px;left:90px;right:90px;display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:17px}.gallery-lightbox-caption p{margin:0;line-height:1.2}.gallery-lightbox-caption span{white-space:nowrap}
@media(max-width:850px){.project-gallery{height:290svh;padding-top:100px}.gallery-heading{top:50px;left:6%;right:6%}.gallery-heading h2{font-size:46px}.gallery-caption{left:12%;right:12%;bottom:var(--gallery-caption-bottom,24%);gap:16px}.gallery-name{font-size:20px}.gallery-controls button{width:54px;height:54px}.gallery-count{font-size:18px}.gallery-satellite--1{left:64%;top:8%;width:25vw;height:16svh}.gallery-satellite--2{left:83%;top:27%;width:27vw;height:23svh}.gallery-satellite--3{left:80%;top:70%;width:25vw;height:26svh}.gallery-satellite--4{left:25%;top:81%;width:30vw;height:20svh}.gallery-satellite--5{left:-6%;top:71%;width:28vw;height:20svh}.gallery-satellite--6{left:-12%;top:27%;width:27vw;height:28svh}}
@media(max-width:600px){.gallery-caption{left:8%;right:8%;bottom:var(--gallery-caption-bottom,26%);column-gap:10px}.gallery-name{font-size:18px}.gallery-controls{gap:8px}.gallery-controls button{width:46px;height:46px}.gallery-count{font-size:16px}.gallery-lightbox{padding:70px 12px 110px}.gallery-lightbox-prev,.gallery-lightbox-next{top:auto;bottom:25px;transform:none;width:46px;height:46px}.gallery-lightbox-prev{left:16px}.gallery-lightbox-next{right:16px}.gallery-lightbox-caption{left:75px;right:75px;bottom:30px;flex-direction:column;gap:4px;font-size:13px;text-align:center}.gallery-lightbox-close{right:16px;top:16px}}
@media(prefers-reduced-motion:reduce){.project-gallery{height:auto;padding-top:150px}.gallery-stage{position:relative;height:100svh;min-height:600px}.gallery-image,.gallery-satellite,.gallery-satellite img{transition:none;will-change:auto}.gallery-image-frame{will-change:auto}}

/* Keep gallery controls anchored to the photograph at every zoom level. */
.gallery-caption{inset:0;display:block;bottom:0;left:0;right:0}
.gallery-name{position:absolute;top:clamp(20px,2.2vw,42px);left:clamp(20px,2.2vw,42px);right:90px;text-shadow:0 1px 12px #0008}
.gallery-controls{position:absolute;right:clamp(20px,2.2vw,42px);bottom:clamp(20px,2.2vw,42px);gap:clamp(12px,1.4vw,28px)}
.gallery-count{position:absolute;left:clamp(20px,2.2vw,42px);bottom:clamp(20px,2.2vw,42px);text-shadow:0 1px 12px #0008}
.gallery-expand{inset:auto;top:clamp(20px,2.2vw,42px);right:clamp(20px,2.2vw,42px);width:44px;height:44px;display:grid;place-items:center;border:1px solid #ffffff60;border-radius:50%;background:#15151570;opacity:var(--gallery-caption-opacity);z-index:5}
.gallery-expand svg{display:block;width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.5}
.gallery-expand:hover{background:#151515}
@media(max-width:600px){.gallery-name{top:16px;left:16px;right:65px}.gallery-count{left:16px;bottom:20px}.gallery-controls{right:16px;bottom:16px;gap:8px}.gallery-expand{top:14px;right:14px;width:36px;height:36px}}

.project-gallery,.gallery-stage{background:#fff}
.gallery-bottom-label{color:#555}
.gallery-satellite--7{width:19vw;height:24svh;left:32.3%;top:1%;--spread-x:-15vw;--spread-y:-32svh}
.gallery-satellite--8{width:17vw;height:24svh;left:57%;top:83%;--spread-x:17vw;--spread-y:32svh}
@media(max-width:850px){.gallery-satellite--7{width:28vw;height:20svh;left:27%;top:3%}.gallery-satellite--8{width:26vw;height:20svh;left:60%;top:84%}}

.gallery-caption{opacity:1}.gallery-name,.gallery-count{opacity:var(--gallery-caption-opacity)}.gallery-controls{opacity:var(--gallery-navigation-opacity,1)}

/* Air above and below the central image, with controls proportional to its size. */
.gallery-satellite--1{top:3%}
.gallery-satellite--7{height:19svh}
.gallery-satellite--4{top:81%}
.gallery-controls button{width:var(--gallery-control-size,58px);height:var(--gallery-control-size,58px)}
@media(max-width:850px){.gallery-satellite--1{top:4%;height:16svh}.gallery-satellite--7{top:2%;height:18svh}.gallery-satellite--4{top:82%}}

.gallery-label-text{display:inline-block;vertical-align:top}

.gallery-title-layer{display:block}.gallery-title-layer.is-leaving{position:absolute;top:0;left:0;pointer-events:none}.gallery-title-char{display:inline-block}.gallery-current-number{display:inline-block;min-width:2ch;font-variant-numeric:tabular-nums}

.gallery-controls button,.gallery-controls button:hover,.gallery-controls button:focus-visible,.gallery-lightbox-prev,.gallery-lightbox-next,.gallery-lightbox-prev:hover,.gallery-lightbox-next:hover{background:#fff;color:#3262a5;border-color:#3262a526}

.gallery-controls button:hover,.gallery-controls button:focus-visible,.gallery-lightbox-prev:hover,.gallery-lightbox-prev:focus-visible,.gallery-lightbox-next:hover,.gallery-lightbox-next:focus-visible{background:#3262a5;color:#fff;border-color:#3262a5}
.gallery-lightbox-stage{position:relative;width:100%;height:100%;overflow:hidden}
.gallery-lightbox-stage img{display:block;width:100%;height:100%;object-fit:contain}
.gallery-lightbox-stage .lightbox-outgoing{position:absolute;inset:0;pointer-events:none}
.gallery-lightbox-prev,.gallery-lightbox-next,.gallery-lightbox-prev:hover,.gallery-lightbox-next:hover,.gallery-lightbox-prev:focus-visible,.gallery-lightbox-next:focus-visible{background:#f1f4f8;color:#3262a5;border-color:#d0d0d026}
/* White lightbox and a larger, clean SVG close control. */
.gallery-lightbox,.gallery-lightbox::backdrop{background:#fff;color:#3262a5}
.gallery-lightbox-close{z-index:5;display:grid;place-items:center;width:64px;height:64px;padding:0;border:1px solid #d0d0d026;border-radius:50%;background:#f1f4f8;color:#3262a5;transition:background .3s,color .3s}
.gallery-lightbox-close svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.gallery-lightbox-close:hover,.gallery-lightbox-close:focus-visible{background:#3262a5;color:#fff}
@media(max-width:600px){.gallery-lightbox-close{width:56px;height:56px;top:12px;right:12px}.gallery-lightbox-close svg{width:24px;height:24px}}

.gallery-contact-exit{right:clamp(20px,2.2vw,42px);transition:background .25s ease}
button.gallery-expand{right:calc(clamp(20px,2.2vw,42px) + 54px)}
.gallery-contact-exit svg{stroke-linecap:round}
@media(max-width:600px){.gallery-contact-exit{right:14px}button.gallery-expand{right:60px}}

/* Brand names emerge beside the closing gallery image. */
.gallery-brand-sides{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:var(--gallery-brand-opacity,0);color:#006ca6}
.gallery-brand-sides span{text-transform:uppercase;position:absolute;top:var(--gallery-center-y,50%);width:calc((100vw - var(--gallery-width))/2 - 5vw);transform:translateY(-50%);font-size:clamp(28px,7.1vw,160px);font-weight:600;line-height:1;letter-spacing:-.055em;text-align:center}
.gallery-brand-sides span:first-child{left:2.5vw}
.gallery-brand-sides span:last-child{right:2.5vw}
@media(max-width:600px){.gallery-brand-sides span{font-size:6.5vw;letter-spacing:-.06em;width:calc((100vw - var(--gallery-width))/2 - 3vw)}.gallery-brand-sides span:first-child{left:1.5vw}.gallery-brand-sides span:last-child{right:1.5vw}}

/* Extend only the upper photographs behind the blue wave, keeping their lower edges. */
.gallery-stage{overflow:visible;overflow-x:clip}
.gallery-satellite--1{top:-35svh;height:56svh}
.gallery-satellite--7{top:-35svh;height:55svh}
@media(max-width:850px){
 .gallery-satellite--1{top:-30svh;height:50svh}
 .gallery-satellite--7{top:-30svh;height:50svh}
}

/* Extra technical photographs fill the upper side gaps beneath the wave. */
.gallery-satellite--1 img{object-position:50% 58%}
.gallery-satellite--7 img{object-position:50% 35%}
.gallery-satellite--9{left:7%;top:-35svh;width:19vw;height:43svh;--spread-x:-34vw;--spread-y:-30svh}
.gallery-satellite--10{left:91.5%;top:-35svh;width:18vw;height:45svh;--spread-x:38vw;--spread-y:-28svh}
@media(max-width:850px){
 .gallery-satellite--9{left:-5%;top:-30svh;width:25vw;height:43svh}
 .gallery-satellite--10{left:88%;top:-30svh;width:25vw;height:45svh}
}
