/* Gallery page: 3D tilt cards, skeleton shimmer, filter pills, lightbox */
.g-hero{background:var(--gradient-navy);min-height:340px;display:flex;align-items:center;}
.g-hero-orb{position:absolute;border-radius:50%;filter:blur(60px);opacity:.45;pointer-events:none;}
.g-hero-orb--a{width:360px;height:360px;background:#1d5a9e;top:-120px;right:8%;}
.g-hero-orb--b{width:260px;height:260px;background:#d62b2b;bottom:-110px;left:4%;opacity:.28;}
.g-kicker{color:rgba(255,255,255,.7);font-size:.8rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;margin:0 0 .5rem;}
.g-title{font-size:clamp(2rem,4.6vw,3.2rem);margin-bottom:1rem;color:#fff;}
.g-title .accent{color:#5aa2ff;}
.g-lead{color:rgba(255,255,255,.82);font-size:1.05rem;max-width:620px;line-height:1.7;margin-bottom:1.4rem;}
.g-stats{display:flex;flex-wrap:wrap;gap:.75rem;margin:0;padding:0;}
.g-stats li{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(8px);border-radius:14px;padding:.6rem 1rem;display:flex;flex-direction:column;min-width:96px;}
.g-stats strong{color:#fff;font-family:'Montserrat',sans-serif;font-size:1.15rem;line-height:1.2;}
.g-stats span{color:rgba(255,255,255,.65);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;}

.g-section{background:var(--gray-50);padding:2rem 0 4.5rem;}

/* filter pills */
.g-filters{display:flex;gap:.55rem;overflow-x:auto;padding:.9rem 0 1rem;margin-bottom:1.1rem;position:sticky;top:var(--nav-h,76px);z-index:20;
  background:linear-gradient(var(--gray-50) 70%,rgba(244,246,250,0));-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.g-filters::-webkit-scrollbar{display:none;}
.g-pill{flex:0 0 auto;border:1px solid #d9e0ea;background:#fff;color:var(--brand-navy);font-weight:600;font-size:.86rem;padding:.55rem 1rem;border-radius:999px;cursor:pointer;
  transition:transform .25s ease,box-shadow .25s ease,background .25s ease,color .25s ease;box-shadow:0 2px 6px rgba(15,30,60,.05);}
.g-pill em{font-style:normal;font-size:.72rem;opacity:.6;margin-left:.25rem;}
.g-pill:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(15,30,60,.12);}
.g-pill.is-active{background:var(--gradient-navy);color:#fff;border-color:transparent;box-shadow:0 10px 22px rgba(2,51,111,.35);}
.g-pill:focus-visible,.g-card:focus-visible,.glb-btn:focus-visible{outline:3px solid #5aa2ff;outline-offset:3px;}

/* grid: every tile has the same 4:5 frame so mixed photo shapes read evenly */
.g-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1.35rem;margin:0;padding:0;}
.g-item{}
.g-item.is-hidden{display:none;}
.g-card{position:relative;display:block;width:100%;aspect-ratio:4/5;padding:0;border:0;border-radius:20px;overflow:hidden;cursor:zoom-in;background:#0e1b33;
  box-shadow:0 10px 24px rgba(10,25,55,.18),0 2px 4px rgba(10,25,55,.12);transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s ease;}
.g-card:hover,.g-card.is-tilting{transform-style:preserve-3d;transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));}
.g-card.is-tilting{will-change:transform;transition:transform .08s linear,box-shadow .35s ease;box-shadow:0 28px 46px rgba(10,25,55,.35),0 6px 12px rgba(10,25,55,.2);}
.g-bg{position:absolute;inset:0;background-size:cover;background-position:center;}
.g-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,18,40,.25),rgba(8,18,40,.55));}
.g-img{position:absolute;left:50%;top:46%;width:auto;height:auto;max-width:88%;max-height:80%;border-radius:10px;opacity:0;transform:translate(-50%,-50%) scale(.96);
  box-shadow:0 14px 26px rgba(0,0,0,.5);transition:opacity .5s ease,transform .5s cubic-bezier(.2,.8,.2,1);}
.g-card.is-loaded .g-img{opacity:1;transform:translate(-50%,-50%) scale(1);}
.g-card:hover .g-img,.g-card.is-tilting .g-img{transform:translate(-50%,-50%) translateZ(60px) scale(1.03);}
.g-sk{position:absolute;inset:0;background:linear-gradient(100deg,#16264a 30%,#25396b 50%,#16264a 70%);background-size:2000px 100%;animation:gShimmer 1.4s infinite linear;transition:opacity .5s ease;}
.g-card.is-loaded .g-sk{opacity:0;pointer-events:none;}
.g-glare{position:absolute;inset:0;background:radial-gradient(circle at var(--gx,50%) var(--gy,0%),rgba(255,255,255,.34),transparent 55%);opacity:0;transition:opacity .3s ease;pointer-events:none;mix-blend-mode:soft-light;}
.g-card.is-tilting .g-glare{opacity:1;}
.g-chip{position:absolute;left:12px;bottom:12px;background:rgba(255,255,255,.92);color:var(--brand-navy);font-size:.7rem;font-weight:700;
  padding:.38rem .7rem;border-radius:999px;letter-spacing:.02em;box-shadow:0 6px 14px rgba(0,0,0,.25);opacity:0;translate:0 8px;transition:opacity .3s ease,translate .3s ease;}
.g-card:hover .g-chip,.g-card:focus-visible .g-chip{opacity:1;translate:0 0;transform:translateZ(70px);}
@keyframes gShimmer{0%{background-position:-1000px 0}100%{background-position:1000px 0}}

/* reveal on scroll (only when JS is present) */
.g-js .g-item{opacity:0;transform:translateY(26px) scale(.98);transition:opacity .6s ease var(--d,0ms),transform .7s cubic-bezier(.2,.8,.2,1) var(--d,0ms);}
.g-js .g-item.in{opacity:1;transform:none;}

/* CTA */
.g-cta{margin-top:3.5rem;border-radius:24px;padding:2.4rem 1.6rem;text-align:center;background:var(--gradient-navy);color:#fff;box-shadow:0 20px 40px rgba(2,51,111,.28);}
.g-cta h2{color:#fff;font-size:clamp(1.3rem,3vw,1.8rem);margin-bottom:.6rem;}
.g-cta p{color:rgba(255,255,255,.8);margin:0 0 1.2rem;}

/* lightbox */
.glb{position:fixed;inset:0;z-index:10050;display:flex;align-items:center;justify-content:center;}
.glb[hidden]{display:none;}
.glb-backdrop{position:absolute;inset:0;background:#060c1a;animation:glbFade .2s ease;}
.glb-stage{position:relative;margin:0;max-width:min(92vw,1100px);width:100%;display:flex;flex-direction:column;align-items:center;gap:.9rem;perspective:1400px;}
.glb-frame{position:relative;width:100%;height:min(74vh,820px);display:flex;align-items:center;justify-content:center;}
.glb-img{display:block;flex:0 0 auto;border-radius:10px;box-shadow:0 24px 60px rgba(0,0,0,.55);opacity:0;backface-visibility:hidden;}
.glb-img.is-in{opacity:1;}
.glb-img.dir-next{animation:glbNext .42s cubic-bezier(.2,.8,.2,1);}
.glb-img.dir-prev{animation:glbPrev .42s cubic-bezier(.2,.8,.2,1);}
.glb-sk{position:absolute;width:min(60vw,420px);aspect-ratio:4/5;max-height:70vh;border-radius:16px;background:linear-gradient(100deg,#16264a 30%,#25396b 50%,#16264a 70%);background-size:2000px 100%;animation:gShimmer 1.4s infinite linear;}
.glb-sk.is-done{display:none;}
.glb-cap{opacity:0;transform:translateY(10px);transition:opacity .35s ease .15s,transform .35s ease .15s;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.6rem .9rem;color:#fff;text-align:center;max-width:100%;}
.glb-pill{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);padding:.28rem .75rem;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;}
.glb-text{font-size:.98rem;color:rgba(255,255,255,.92);}
.glb-count{font-size:.8rem;color:rgba(255,255,255,.6);}
.glb-btn{opacity:0;transition:opacity .3s ease .1s,transform .25s ease,background .25s ease;position:absolute;z-index:3;width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.14);color:#fff;display:flex;align-items:center;justify-content:center;
  font-size:1.15rem;cursor:pointer;transition:transform .25s ease,background .25s ease;}
.glb-btn:hover{background:rgba(255,255,255,.26);transform:scale(1.08);}
.glb-close{top:18px;right:18px;}
.glb-prev{left:18px;top:50%;margin-top:-24px;}
.glb-next{right:18px;top:50%;margin-top:-24px;}
@keyframes glbFade{from{opacity:0}to{opacity:1}}
@keyframes glbOpen{from{opacity:0;transform:perspective(1400px) rotateX(14deg) translateY(30px) scale(.9)}to{opacity:1;transform:none}}
@keyframes glbNext{from{opacity:0;transform:translateX(70px) scale(.94)}to{opacity:1;transform:none}}
@keyframes glbPrev{from{opacity:0;transform:translateX(-70px) scale(.94)}to{opacity:1;transform:none}}
.glb.is-ready .glb-cap{opacity:1;transform:none;}
.glb.is-ready .glb-btn{opacity:1;}
.glb-backdrop{transition:opacity .3s ease;}
.glb.is-closing .glb-backdrop{opacity:0;}
.glb.is-closing .glb-cap,.glb.is-closing .glb-btn{opacity:0;transition-duration:.15s;transition-delay:0s;}

@media (max-width:575px){
  .g-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;}
  .g-card{border-radius:14px;}
  .g-chip{display:none;}
  .glb-prev{left:8px}.glb-next{right:8px}.glb-btn{width:42px;height:42px;}
  .glb-frame{height:68vh;}
}
@media (prefers-reduced-motion:reduce){
  .g-card,.g-img,.g-chip,.g-pill,.glb-btn{transition:none!important;}
  .g-sk,.glb-sk{animation:none;}
  .g-js .g-item{opacity:1;transform:none;transition:none;}
  .glb-img.dir-next,.glb-img.dir-prev{animation:none;}
  .glb-cap,.glb-btn,.glb-backdrop{transition:none!important;}
}
