/* ClubPortal — Galleria foto (/gallery). Usa i token del tema di site.css. */

/* ── Elenco album ───────────────────────────────────────── */
.gal-albums { display:grid; gap:clamp(1.75rem, 3vw, 2.5rem) 1.5rem; grid-template-columns:repeat(auto-fill, minmax(min(100%, 320px), 1fr)); }
.gal-albums-sm { grid-template-columns:repeat(auto-fill, minmax(min(100%, 260px), 1fr)); }
.gal-album { position:relative; display:flex; flex-direction:column; min-width:0; }
.gal-album-img { position:relative; aspect-ratio:4/3; border-radius:var(--r-lg); overflow:hidden; background:var(--tint); box-shadow:var(--shadow-sm); isolation:isolate; }
.gal-album-img img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .7s var(--ease); }
.gal-album-img::after { content:""; position:absolute; inset:auto 0 0; height:45%; background:linear-gradient(to top, rgba(8,14,26,.45), transparent); pointer-events:none; }
.gal-album:hover .gal-album-img img { transform:scale(1.05); }
.gal-album-ph { width:100%; height:100%; display:grid; place-items:center; font-size:2.6rem; color:color-mix(in srgb, var(--club-primary) 40%, #fff); background:radial-gradient(circle at 30% 20%, #fff, var(--tint-2)); }
.gal-count { position:absolute; left:.85rem; bottom:.85rem; z-index:1; display:inline-flex; align-items:center; gap:.4rem; padding:.3rem .75rem; border-radius:999px;
  background:rgba(255,255,255,.92); color:var(--ink); font-size:.8rem; font-weight:700; box-shadow:0 2px 10px rgba(0,0,0,.12); backdrop-filter:blur(6px); }
.gal-count i { color:var(--club-primary); }
.gal-album-body { padding:1.05rem .15rem 0; display:flex; flex-direction:column; flex:1; }
.gal-album-meta { font-size:.76rem; font-weight:800; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); margin-bottom:.4rem; }
.gal-album-title { font-size:1.2rem; font-weight:700; line-height:1.3; letter-spacing:-.012em; margin:0; text-wrap:balance; }
.gal-album-title a { color:var(--ink); text-decoration:none; }
.gal-album-title a::after { content:""; position:absolute; inset:0; }
.gal-album-title a:focus-visible { outline:none; }
.gal-album:has(a:focus-visible) .gal-album-img { outline:3px solid color-mix(in srgb, var(--club-accent) 85%, #000); outline-offset:3px; }
.gal-album:hover .gal-album-title a { color:var(--club-primary); }
.gal-album-text { color:var(--ink-soft); margin:.75rem 0 0; max-width:52ch; text-wrap:pretty; }
.gal-album-go { display:none; margin-top:1.25rem; font-weight:700; font-size:.95rem; color:var(--club-primary); align-items:center; gap:.45rem; }
.gal-album-go i { transition:transform .25s var(--ease); }
.gal-album:hover .gal-album-go i { transform:translateX(4px); }

/* il primo album, in cima all'elenco: grande */
.gal-album.is-lead { grid-column:1 / -1; }
.gal-album.is-lead .gal-album-img { aspect-ratio:16/9; border-radius:var(--r-xl); }
.gal-album.is-lead .gal-album-title { font-size:clamp(1.5rem, 3vw, 2.3rem); font-weight:800; letter-spacing:-.03em; line-height:1.12; }
.gal-album.is-lead .gal-album-go { display:inline-flex; }
@media (min-width: 992px) {
  .gal-album.is-lead { display:grid; grid-template-columns:minmax(0, 1.75fr) minmax(0, 1fr); align-items:center; gap:3rem; }
  .gal-album.is-lead .gal-album-img { aspect-ratio:3/2; }
  .gal-album.is-lead .gal-album-body { padding:0; }
  .gal-album.is-lead .gal-count { left:1.1rem; bottom:1.1rem; font-size:.88rem; padding:.4rem .9rem; }
}
.gal-empty i { font-size:3rem; }

/* ── Album: intestazione e griglia di foto ──────────────── */
.gal-head .ph-lead { white-space:pre-line; }
.gal-wrap { padding-top:clamp(1rem, 3vw, 2rem); }

/* righe giustificate: ogni foto cresce in proporzione al suo rapporto larghezza/altezza (--r), così tutte le foto
   di una riga hanno la stessa altezza e nessuna viene tagliata; l'ultima riga non si allarga */
.gal-grid { --row:clamp(140px, 17vw, 230px); list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:clamp(6px, 1vw, 12px); }
.gal-grid::after { content:""; flex:999 1 0; }
.gal-item { flex:var(--r) 1 calc(var(--r) * var(--row)); min-width:0; max-width:min(100%, calc(var(--r) * var(--row) * 1.7)); }   /* tetto: righe con poche foto non diventano enormi */
.gal-link { position:relative; display:block; aspect-ratio:var(--r); border-radius:var(--r-sm); overflow:hidden; background:var(--tint); }
.gal-link img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .6s var(--ease), filter .3s; }
.gal-link:hover img { transform:scale(1.035); }
.gal-cap { position:absolute; inset:auto 0 0; padding:2.25rem .9rem .75rem; color:#fff; font-size:.86rem; font-weight:600; line-height:1.35;
  background:linear-gradient(to top, rgba(8,14,26,.82), rgba(8,14,26,0)); opacity:0; transform:translateY(6px); transition:opacity .3s, transform .3s var(--ease);
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.gal-link:hover .gal-cap, .gal-link:focus-visible .gal-cap { opacity:1; transform:none; }
.gal-link:focus-visible { outline-offset:3px; }
@media (hover: none) { .gal-cap { display:none; } }
@media (max-width: 575.98px) { .gal-grid { --row:120px; } }

.gal-foot { margin-top:clamp(2rem, 5vw, 3rem); }
.gal-others .gal-album-img { border-radius:var(--r); }

/* ── Visualizzatore a schermo intero ────────────────────── */
.gal-viewer { position:fixed; inset:0; width:100vw; height:100vh; height:100dvh; max-width:none; max-height:none; margin:0; padding:0; border:0;
  background:rgba(7,11,19,.97); color:#fff; overflow:hidden; }
.gal-viewer[open] { display:grid; grid-template-rows:auto minmax(0, 1fr); animation:gal-in .25s var(--ease); }
.gal-viewer::backdrop { background:rgba(7,11,19,.9); }
@keyframes gal-in { from { opacity:0; } to { opacity:1; } }
.gal-v-top { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:max(.75rem, env(safe-area-inset-top)) 1rem .5rem; }
.gal-v-count { font-size:.9rem; font-weight:700; letter-spacing:.04em; color:rgba(255,255,255,.75); font-variant-numeric:tabular-nums; padding-left:.35rem; }
.gal-v-actions { display:flex; gap:.5rem; }
.gal-v-btn { width:48px; height:48px; border-radius:999px; border:0; display:inline-grid; place-items:center; flex:none; font-size:1.25rem; line-height:1;
  color:#fff; background:rgba(255,255,255,.1); text-decoration:none; transition:background .2s, transform .2s var(--ease); cursor:pointer; }
.gal-v-btn:hover { background:rgba(255,255,255,.22); color:#fff; }
.gal-v-btn:active { transform:scale(.94); }
.gal-v-btn:focus-visible { outline:3px solid var(--club-accent); outline-offset:2px; }
.gal-v-orig { font-size:1.05rem; }
.gal-v-stage { position:relative; display:grid; grid-template-columns:auto minmax(0, 1fr) auto; align-items:center; gap:1rem; padding:0 1rem max(1rem, env(safe-area-inset-bottom)); min-height:0; touch-action:pan-y pinch-zoom; }
.gal-v-figure { margin:0; height:100%; min-height:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.9rem; }
.gal-v-img { display:block; max-width:100%; max-height:calc(100% - 3.5rem); width:auto; height:auto; object-fit:contain; border-radius:6px; user-select:none; -webkit-user-drag:none;
  box-shadow:0 20px 60px rgba(0,0,0,.45); transition:opacity .25s ease; will-change:transform; }
.gal-v-img.is-loading { opacity:0; }
.gal-v-figure.no-cap .gal-v-img { max-height:100%; }
.gal-v-cap { max-width:70ch; text-align:center; font-size:.98rem; line-height:1.5; color:rgba(255,255,255,.88); text-wrap:balance; }
.gal-v-cap:empty { display:none; }
.gal-v-nav { width:56px; height:56px; font-size:1.4rem; }
.gal-viewer.is-single .gal-v-nav { visibility:hidden; }
@media (max-width: 767.98px) {
  .gal-v-stage { grid-template-columns:minmax(0, 1fr); padding:0 0 max(.75rem, env(safe-area-inset-bottom)); }
  .gal-v-nav { position:absolute; top:50%; z-index:2; width:42px; height:42px; font-size:1.1rem; transform:translateY(-50%); background:rgba(0,0,0,.35); }
  .gal-v-nav:active { transform:translateY(-50%) scale(.94); }
  .gal-v-prev { left:.5rem; }
  .gal-v-next { right:.5rem; }
  .gal-v-figure { grid-column:1; grid-row:1; }
  .gal-v-img { border-radius:0; box-shadow:none; }
  .gal-v-cap { padding:0 1rem; font-size:.92rem; }
}

@media (prefers-reduced-motion: reduce) {
  .gal-album-img img, .gal-link img, .gal-cap, .gal-v-img, .gal-v-btn { transition:none; }
  .gal-album:hover .gal-album-img img, .gal-link:hover img { transform:none; }
  .gal-viewer[open] { animation:none; }
}

/* "Altri album" in fondo all'album: sezione più raccolta */
.gal-others.section { padding:clamp(3rem, 6vw, 4.5rem) 0; }
.gal-others .display-h { font-size:clamp(1.5rem, 3vw, 2.1rem); }
.gal-others .sec-head { align-items:center; }
