:root{--gallery-ink:#0a1426;--gallery-purple:#a95791;--gallery-mist:#eef1f4;--gallery-line:rgba(255,255,255,.16)}
*{box-sizing:border-box}
.project-gallery-draft{margin:0;background:#f7f8fa;color:var(--gallery-ink)}
.gallery-topbar{position:relative;height:92px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(24px,5vw,78px);background:#fff;border-bottom:1px solid #e2e5e9}
.gallery-brand{display:flex;align-items:center;gap:13px;color:var(--gallery-ink);text-decoration:none;font:600 .8rem "Space Grotesk",sans-serif;letter-spacing:.04em}
.gallery-brand img{width:132px;height:58px;object-fit:contain}
.gallery-back{position:absolute;z-index:5;top:116px;left:clamp(32px,7vw,110px);display:inline-flex;align-items:center;width:max-content;padding:9px 13px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(10,20,38,.74);color:#fff;text-decoration:none;font-size:.72rem;letter-spacing:.02em;backdrop-filter:blur(8px)}.gallery-back span{color:#d18aba;margin-left:8px}
.gallery-hero{min-height:720px;display:grid;grid-template-columns:minmax(0,1.06fr) minmax(420px,.94fr);background:var(--gallery-ink);color:#fff;overflow:hidden}
.gallery-hero__copy{display:flex;flex-direction:column;justify-content:center;padding:clamp(70px,8vw,130px) clamp(32px,7vw,110px)}
.gallery-eyebrow{display:flex;align-items:center;gap:18px;margin:0 0 34px;font:600 .68rem "Space Grotesk",sans-serif;letter-spacing:.2em}
.gallery-eyebrow span{display:flex;align-items:center;gap:16px}.gallery-eyebrow span:before{content:"";width:34px;height:1px;background:var(--gallery-purple)}
.gallery-eyebrow b{color:#778195;font-weight:500}
.gallery-hero h1{max-width:900px;margin:0;font:500 clamp(2.7rem,5vw,5.6rem)/.98 "Space Grotesk",sans-serif;letter-spacing:-.055em}
.gallery-hero h1 em{display:block;margin-top:16px;color:#d18aba;font-style:normal}
.gallery-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:70px;padding-top:24px;border-top:1px solid var(--gallery-line)}
.gallery-facts div{display:grid;gap:7px}.gallery-facts small{color:#8993a5;font-size:.58rem;letter-spacing:.16em}.gallery-facts strong{font:500 .92rem "Space Grotesk",sans-serif}
.gallery-hero__visual{position:relative;margin:0;min-height:720px;display:grid;place-items:center;padding:22px;background:#141e2e;overflow:hidden}
.gallery-hero__visual:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(10,20,38,.28),transparent 35%),linear-gradient(0deg,rgba(10,20,38,.68),transparent 45%)}
.gallery-hero__visual img{display:block;width:auto;height:auto;max-width:100%;max-height:676px;object-fit:contain}
.gallery-hero__visual figcaption{position:absolute;z-index:1;right:34px;bottom:32px;font-size:.65rem;letter-spacing:.18em}.gallery-hero__visual figcaption span{color:#d18aba;margin-right:15px}
.gallery-content{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(50px,9vw,150px);padding:clamp(90px,11vw,160px) clamp(28px,8vw,130px);background:#fff}
.gallery-content .gallery-eyebrow{color:#4e5663}.gallery-intro h2{max-width:660px;margin:0 0 26px;font:500 clamp(2.2rem,4vw,4.5rem)/1.03 "Space Grotesk",sans-serif;letter-spacing:-.045em}.gallery-intro>p:last-child{max-width:570px;color:#747c88;line-height:1.8}
.gallery-scope{margin:0;padding:0;list-style:none;border-top:1px solid #dfe3e8}.gallery-scope li{display:grid;grid-template-columns:54px 1fr;gap:20px;align-items:center;min-height:78px;border-bottom:1px solid #dfe3e8}.gallery-scope span{color:var(--gallery-purple);font-size:.64rem}.gallery-scope p{margin:0;font:500 clamp(.86rem,1.25vw,1.05rem) "Space Grotesk",sans-serif}
.gallery-visuals{padding:clamp(80px,10vw,145px) clamp(28px,6vw,96px);background:var(--gallery-mist)}
.gallery-visuals>header{display:flex;justify-content:space-between;align-items:start;margin-bottom:45px}.gallery-visuals>header .gallery-eyebrow{margin:0}.gallery-visuals>header>p:last-child{margin:0;color:#737c89;font-size:.8rem}
.gallery-visuals__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;align-items:stretch}
.gallery-visuals__grid--three{grid-template-columns:repeat(3,minmax(0,1fr))}
.gallery-visuals__grid--river{grid-template-columns:repeat(2,minmax(0,1fr))}
.gallery-visuals__grid--river .gallery-shot--wide{grid-column:1/-1;height:clamp(300px,34vw,440px)}
.gallery-visuals__grid--feature .gallery-shot--wide{grid-column:1/-1;height:clamp(300px,34vw,440px)}
.gallery-shot{position:relative;margin:0;display:grid;place-items:center;height:clamp(520px,52vw,660px);padding:18px;background:#0c1728;overflow:hidden}
.gallery-shot img{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}
.gallery-shot:after{content:"";position:absolute;inset:auto 0 0;height:42%;background:linear-gradient(transparent,rgba(4,10,20,.84))}
.gallery-shot figcaption{position:absolute;z-index:1;left:28px;right:28px;bottom:26px;display:flex;justify-content:space-between;align-items:center;color:#fff}.gallery-shot figcaption span{color:#d18aba;font-size:.65rem}.gallery-shot figcaption strong{font:500 .85rem "Space Grotesk",sans-serif}
.gallery-video-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:24px}
.gallery-video{margin:0;display:grid;grid-template-rows:minmax(260px,360px) auto;background:#0c1728;overflow:hidden}
.gallery-video video{display:block;width:100%;height:100%;background:#050a12;object-fit:contain}
.gallery-video figcaption{display:flex;justify-content:space-between;align-items:center;min-height:64px;padding:16px 20px;color:#fff;border-top:1px solid rgba(255,255,255,.12)}
.gallery-video figcaption span{color:#d18aba;font-size:.65rem}.gallery-video figcaption strong{font:500 .82rem "Space Grotesk",sans-serif}
.gallery-footer{display:flex;align-items:center;justify-content:space-between;min-height:150px;padding:30px clamp(28px,6vw,96px);background:#070e1b;color:#fff}.gallery-footer div{display:flex;align-items:center;gap:14px;font-size:.74rem}.gallery-footer img{width:66px}.gallery-footer p{margin:0;color:#8993a5;font-size:.72rem}
@media(max-width:980px){
 .gallery-hero{grid-template-columns:1fr}.gallery-hero__visual{min-height:540px;max-height:650px}.gallery-content{grid-template-columns:1fr}.gallery-visuals__grid,.gallery-visuals__grid--three,.gallery-visuals__grid--river,.gallery-video-grid{grid-template-columns:1fr}.gallery-visuals__grid--river .gallery-shot--wide,.gallery-visuals__grid--feature .gallery-shot--wide{grid-column:auto}.gallery-shot--primary,.gallery-shot--secondary{height:min(70vh,640px)}
}
@media(max-width:640px){
 html,body{width:100%;max-width:100%;overflow-x:hidden;-webkit-text-size-adjust:100%}.gallery-topbar{height:76px;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}.gallery-brand img{width:100px;height:46px}.gallery-brand span{display:none}.gallery-back{top:88px;left:max(16px,env(safe-area-inset-left));max-width:calc(100% - 32px);font-size:.64rem}.gallery-hero{min-height:0}.gallery-hero__copy{min-width:0;padding:90px 18px 62px}.gallery-hero h1{font-size:clamp(2.35rem,12vw,3.7rem);overflow-wrap:anywhere}.gallery-eyebrow{gap:10px;letter-spacing:.14em}.gallery-hero__visual{min-height:340px;padding:12px}.gallery-facts{grid-template-columns:1fr;gap:18px;margin-top:42px}.gallery-content{min-width:0;padding:72px 18px;gap:42px}.gallery-scope li{grid-template-columns:42px minmax(0,1fr);gap:10px}.gallery-scope p{overflow-wrap:anywhere}.gallery-visuals{padding:68px 12px}.gallery-visuals>header{display:block}.gallery-visuals>header>p:last-child{margin-top:18px}.gallery-visuals__grid,.gallery-video-grid{gap:14px}.gallery-shot,.gallery-shot--primary,.gallery-shot--secondary,.gallery-shot--fit-frame{width:100%;height:min(118vw,520px);padding:10px}.gallery-shot figcaption{left:15px;right:15px;bottom:15px;gap:12px}.gallery-shot figcaption strong{font-size:.72rem;text-align:right}.gallery-video{grid-template-rows:minmax(210px,70vw) auto}.gallery-footer{display:grid;gap:18px;padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right));padding-bottom:max(28px,env(safe-area-inset-bottom))}
}
.gallery-visuals__grid--final-site{margin-top:24px}.gallery-visuals__grid--final-site .gallery-shot--raw{display:block;height:auto;padding:18px;background:#0c1728}.gallery-visuals__grid--final-site .gallery-shot--raw img{display:block;width:auto;height:auto;max-width:100%;max-height:none;margin:0 auto;object-fit:initial;object-position:initial;background:none}
.gallery-visuals__grid>.gallery-shot--raw{display:block;height:auto;padding:0;align-self:start}.gallery-visuals__grid>.gallery-shot--raw img{display:block;width:100%;height:auto;max-width:none;max-height:none;object-fit:initial;object-position:initial;background:none}
.gallery-shot:has(img[src="assets/project-gallery/btc-dwdm-upgrade/06.png"]),.gallery-shot:has(img[src="assets/project-gallery/btc-dwdm-upgrade/07.png"]){padding:18px}.gallery-shot img[src="assets/project-gallery/btc-dwdm-upgrade/06.png"],.gallery-shot img[src="assets/project-gallery/btc-dwdm-upgrade/07.png"]{width:auto;height:auto;max-width:92%;max-height:92%;object-fit:contain}.gallery-shot--fit-frame{height:clamp(520px,52vw,660px);padding:18px;background:#0c1728}.gallery-shot--fit-frame img{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;object-position:center}
.gallery-visuals__grid--final-site>.gallery-shot--raw{display:block;height:auto;padding:18px;background:#0c1728}.gallery-visuals__grid--final-site>.gallery-shot--raw img{display:block;width:auto;height:auto;max-width:100%;max-height:none;margin:0 auto;object-fit:initial;object-position:initial;background:none}
/* Project photography opens at its natural aspect ratio; hero images remain static. */
.gallery-visuals .gallery-shot img{cursor:zoom-in}
.project-lightbox{position:fixed;z-index:10000;inset:0;display:grid;grid-template-rows:1fr auto;place-items:center;padding:38px;background:rgba(5,11,23,.94);opacity:0;visibility:hidden;transition:opacity .25s ease,visibility .25s ease}
.project-lightbox.is-open{opacity:1;visibility:visible}
.project-lightbox img{display:block;max-width:min(94vw,1500px);max-height:84vh;width:auto;height:auto;object-fit:contain;box-shadow:0 24px 70px rgba(0,0,0,.38)}
.project-lightbox p{margin:16px 0 0;color:#fff;font-size:.72rem;letter-spacing:.08em;text-align:center}
.project-lightbox__close{position:absolute;top:20px;right:24px;width:46px;height:46px;border:1px solid rgba(255,255,255,.35);background:rgba(10,19,35,.72);color:#fff;font-size:28px;line-height:1;cursor:pointer}
body.lightbox-open{overflow:hidden}
.page-scroll-hint{position:fixed;z-index:9000;left:50%;bottom:18px;width:28px;height:38px;border:1px solid rgba(255,255,255,.25);border-radius:18px;background:rgba(12,20,35,.18);transform:translateX(-50%);opacity:.48;transition:opacity .3s ease,visibility .3s ease;pointer-events:none;backdrop-filter:blur(4px)}
.page-scroll-hint span{position:absolute;left:50%;top:9px;width:5px;height:5px;border-right:1px solid #fff;border-bottom:1px solid #fff;transform:translateX(-50%) rotate(45deg);animation:scrollHint 1.8s ease-in-out infinite}
.page-scroll-hint.is-hidden{opacity:0;visibility:hidden}
@keyframes scrollHint{0%,100%{transform:translate(-50%,0) rotate(45deg);opacity:.25}50%{transform:translate(-50%,10px) rotate(45deg);opacity:.8}}
@media(max-width:600px){.project-lightbox{padding:18px}.project-lightbox img{max-width:96vw;max-height:80vh}.project-lightbox__close{top:12px;right:12px}.page-scroll-hint{bottom:12px}}
@media(prefers-reduced-motion:reduce){.page-scroll-hint span{animation:none}}
