/* Gallery page only (linked from gallery.html; gallery.js also adds it if missing).
   Album cards, album thumbnail grid and the photo viewer. Uses the colour variables from style.css. */
#gallery{scroll-margin-top:96px}
.ga-visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
#gallery-years[hidden]{display:none}

/* Album cards */
.ga-albums{list-style:none;margin:0 0 36px;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:22px}
.ga-card{margin:0}
.ga-card-link{display:flex;flex-direction:column;height:100%;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;text-decoration:none;color:var(--ink);box-shadow:var(--shadow);transition:transform .2s,box-shadow .2s}
.ga-card-link:hover{transform:translateY(-3px);box-shadow:0 12px 32px rgba(21,28,48,.16)}
.ga-card-link:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.ga-cover{position:relative;display:block;aspect-ratio:4/3;background:var(--navy-2);overflow:hidden}
.ga-cover img{width:100%;height:100%;object-fit:cover;object-position:center 35%;transition:transform .35s}
.ga-card-link:hover .ga-cover img,.ga-card-link:focus-visible .ga-cover img{transform:scale(1.04)}
.ga-badge{position:absolute;right:10px;bottom:10px;background:rgba(21,28,48,.82);color:#fff;font-size:.8rem;font-weight:600;padding:3px 10px;border-radius:999px;letter-spacing:.02em}
.ga-card-body{display:flex;flex-direction:column;gap:4px;padding:14px 16px 18px;border-top:3px solid var(--gold)}
.ga-card-title{font-family:var(--serif);font-size:1.3rem;color:var(--navy);line-height:1.2}
.ga-card-date{font-size:.85rem;font-weight:600;color:var(--gold-dark);text-transform:uppercase;letter-spacing:.06em}
.ga-card-desc{font-size:.95rem;color:var(--muted);line-height:1.45}

/* One album */
.ga-album{margin:0 0 36px;padding:0}
.ga-back{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 16px;margin:0 0 14px;border:1px solid var(--line);border-radius:999px;background:#fff;font-weight:600;text-decoration:none}
.ga-back:hover,.ga-back:focus-visible{background:var(--navy);color:#fff;border-color:var(--navy)}
.ga-head h2{margin:0;font-size:clamp(1.6rem,4vw,2.1rem)}
.ga-head h2:focus{outline:none}
.ga-head p{margin:.25em 0 0}
.ga-desc{max-width:720px}
.ga-grid{list-style:none;margin:20px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
.ga-grid li{margin:0}
.ga-thumb{display:block;width:100%;padding:0;border:0;border-radius:10px;overflow:hidden;cursor:zoom-in;background:var(--line);box-shadow:var(--shadow)}
.ga-thumb img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;object-position:center 35%;transition:transform .25s}
.ga-thumb:hover img,.ga-thumb:focus-visible img{transform:scale(1.04)}
.ga-thumb:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.ga-cap{margin:7px 2px 0;font-size:.92rem;color:var(--muted);line-height:1.35}

/* Photo viewer */
html.ga-noscroll{overflow:hidden}
.ga-lb{border:0;padding:0;margin:0;background:transparent;width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;color:#fff;overscroll-behavior:contain}
.ga-lb::backdrop{background:rgba(10,13,22,.94)}
.ga-lb[open]{display:flex;align-items:center;justify-content:center}
.ga-lb-fig{margin:0;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 76px 20px;box-sizing:border-box}
.ga-lb-img{max-width:100%;max-height:calc(100% - 64px);object-fit:contain;border-radius:6px;box-shadow:0 10px 40px rgba(0,0,0,.5);opacity:0;transition:opacity .2s;touch-action:pan-y pinch-zoom}
.ga-lb-img.ga-in{opacity:1}
.ga-lb figcaption{text-align:center;margin-top:12px;display:flex;flex-direction:column;gap:2px;max-width:760px}
.ga-lb-cap{font-family:var(--serif);font-size:1.1rem}
.ga-lb-count{color:#b9bccb;font-size:.85rem}
.ga-lb-btn{position:fixed;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.14);color:#fff;border:0;border-radius:50%;width:52px;height:52px;font-size:2rem;line-height:1;cursor:pointer;transition:background .15s}
.ga-lb-btn:hover,.ga-lb-btn:focus-visible{background:var(--gold);color:var(--navy);outline:none}
.ga-lb-btn:focus-visible{box-shadow:0 0 0 3px #fff}
.ga-lb-prev{left:14px;top:50%;transform:translateY(-50%)}
.ga-lb-next{right:14px;top:50%;transform:translateY(-50%)}
.ga-lb-close{right:14px;top:14px;font-size:1.3rem}
.ga-lb.ga-single .ga-lb-prev,.ga-lb.ga-single .ga-lb-next{display:none}

@media (max-width:640px){
  .ga-albums{grid-template-columns:1fr;gap:16px}
  .ga-grid{grid-template-columns:1fr 1fr;gap:10px}
  .ga-cap{font-size:.82rem}
  .ga-lb-fig{padding:60px 8px 84px}
  .ga-lb-img{max-height:calc(100% - 56px);border-radius:0}
  .ga-lb-prev,.ga-lb-next{top:auto;bottom:16px;transform:none}
  .ga-lb-prev{left:calc(50% - 64px)}.ga-lb-next{right:calc(50% - 64px)}
}
@media (prefers-reduced-motion:reduce){.ga-card-link,.ga-cover img,.ga-thumb img,.ga-lb-img{transition:none}}
