/* Service gallery + lightbox. Shared by every service page; uses the site's tokens. */
.gg-gal{padding-block:var(--section)}
.gg-gal__grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gutter)}
.gg-gal__grid>li{margin:0}
.gg-gal__grid>li:first-child{grid-column:span 2;grid-row:span 2}
.gg-gal__item{display:block;width:100%;height:100%;min-height:0;aspect-ratio:4 / 3;padding:0;border:0;border-radius:4px;cursor:zoom-in;color:inherit;font:inherit}
.gg-gal__grid>li:first-child .gg-gal__item{aspect-ratio:auto}
.gg-gal__item img{transition:transform .9s var(--ease-out),opacity .4s}
.gg-gal__item:hover img{transform:scale(1.035)}
.gg-gal__item:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.gg-gal__foot{display:flex;justify-content:space-between;align-items:center;margin-top:1.2rem}
@media (max-width:900px){
  .gg-gal__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gg-gal__grid>li:first-child{grid-column:1 / -1;grid-row:auto}
  .gg-gal__grid>li:first-child .gg-gal__item{aspect-ratio:16 / 10}
}
@media (prefers-reduced-motion:reduce){.gg-gal__item img{transition:none}.gg-gal__item:hover img{transform:none}}

.gg-lb{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:rgba(0,1,76,.96);color:var(--on-dark)}
.gg-lb::backdrop{background:rgba(0,1,76,.6)}
.gg-lb[open]{display:grid;grid-template-rows:auto 1fr auto}
.gg-lb__bar{display:flex;align-items:center;justify-content:space-between;padding:1rem var(--pad)}
.gg-lb__bar .micro,.gg-lb__cap{color:var(--on-dark-2)}
.gg-lb__stage{position:relative;display:grid;place-items:center;min-height:0;padding:0 var(--pad);touch-action:pan-y}
.gg-lb__img{max-width:calc(100vw - 2 * var(--pad) - 6.5rem);max-height:calc(100vh - 9.5rem);max-height:calc(100dvh - 9.5rem);width:auto;height:auto;object-fit:contain;border-radius:4px;user-select:none;-webkit-user-drag:none}
.gg-lb__cap{padding:1rem var(--pad) 1.4rem;text-align:center;font-size:var(--t-small);min-height:3.4rem}
.gg-lb__btn{width:2.9rem;height:2.9rem;border-radius:50%;display:grid;place-items:center;border:0;cursor:pointer;color:var(--white);background:rgba(255,255,255,.08);box-shadow:inset 0 0 0 1px var(--line-dark);transition:background .3s;font:400 1.1rem/1 var(--f-body)}
.gg-lb__btn:hover{background:rgba(255,255,255,.18)}
.gg-lb__btn:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.gg-lb__nav{position:absolute;top:50%;transform:translateY(-50%)}
.gg-lb__nav--prev{left:calc(var(--pad) * .5)}
.gg-lb__nav--next{right:calc(var(--pad) * .5)}
@media (max-width:700px){.gg-lb__nav{top:auto;bottom:-3.9rem;transform:none}.gg-lb__stage{margin-bottom:3.6rem}.gg-lb__img{max-width:calc(100vw - 2 * var(--pad));max-height:calc(100dvh - 13rem)}}

/* v2: preview + "view all" dropdown grouped by project */
.gg-gal__more{margin-top:clamp(1.6rem,3vw,2.4rem)}
.gg-gal__more>summary{list-style:none;display:inline-flex;align-items:center;gap:.7rem;cursor:pointer;user-select:none}
.gg-gal__more>summary::-webkit-details-marker{display:none}
.gg-gal__more>summary:focus-visible{outline:2px solid var(--gold);outline-offset:4px;border-radius:999px}
.gg-gal__more .gg-less,.gg-gal__more[open] .gg-more{display:none}
.gg-gal__more[open] .gg-less{display:inline}
.gg-gal__chev{display:inline-block;width:.55rem;height:.55rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .3s var(--ease-out)}
.gg-gal__more[open] .gg-gal__chev{transform:translateY(2px) rotate(-135deg)}
.gg-gal__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 2rem}
.gg-gal__src{font-size:var(--t-small)}
.gg-gal__src a{color:var(--heading);text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:.25em}
.gg-gal__group{margin-top:clamp(2rem,4vw,3rem)}
.gg-gal__set{display:flex;align-items:center;gap:.8rem;margin:0 0 1rem}
.gg-gal__set::before{content:"";width:1.6rem;height:1px;background:var(--gold)}
.gg-gal__grid--all{grid-template-columns:repeat(4,minmax(0,1fr))}
.gg-gal__grid--all>li:first-child{grid-column:auto;grid-row:auto}
.gg-gal__grid--all>li:first-child .gg-gal__item{aspect-ratio:4 / 3}
@media (max-width:900px){.gg-gal__grid--all{grid-template-columns:repeat(3,minmax(0,1fr))}.gg-gal__grid--all>li:first-child{grid-column:auto}}
@media (max-width:560px){.gg-gal__grid--all{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:900px){.gg-gal__grid:not(.gg-gal__grid--all)>li:nth-child(n+6){display:none}}

/* "You may also consider" rows with fewer than three cards: fill the row instead of leaving gaps */
@media (min-width:701px){
  .cards-wrap .cards.cards--n2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cards-wrap .cards.cards--n1{grid-template-columns:minmax(0,1fr)}
  .cards-wrap .cards.cards--n1 .card{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);column-gap:clamp(1.5rem,4vw,4rem);align-items:center}
  .cards-wrap .cards.cards--n1 .card__media{grid-row:1 / span 2}
  .cards-wrap .cards.cards--n1 .card__t{align-self:end;margin-top:0}
  .cards-wrap .cards.cards--n1 .card__d{align-self:start;font-size:var(--t-lead);max-width:28ch}
  .cards-wrap .cards.cards--n1 .card__t{font-size:clamp(1.7rem,2.6vw,2.6rem)}
}
@media (max-width:700px){
  .cards-wrap.is-rail .cards.cards--n1{grid-auto-flow:row;grid-template-columns:minmax(0,1fr);grid-auto-columns:auto;overflow:visible}
  .cards-wrap.is-rail .cards.cards--n1 ~ .rail-ui{display:none}
}
