/* =============================================================================
   Blocco «Galleria» (page builder, galleria, dalla 1.3.125).
   Partial: views/partials/_galleria.twig; filtri e foto grande: galleria.js.
   Colori del tema (--color-primary, --color-accent, --color-text),
   larghezza --container-max-width, titolo col carattere dei titoli. Classi gal-.
   ============================================================================= */
.gal {
    --gal-testo: var(--color-text, #1f2937);
    --gal-tenue: var(--color-text-light, #6b7280);
    --gal-primario: var(--color-primary, #1b2a57);
    --gal-acc: var(--color-accent, #b0804a);
    --gal-spazio: 14px;
    padding: clamp(40px, 6vw, 72px) 0;
    color: var(--gal-testo);
}
.gal [hidden], .gal-luce[hidden], .gal-luce [hidden] { display: none !important; }
.gal-dentro { max-width: var(--container-max-width, 1280px); margin: 0 auto; padding: 0 16px; }

/* ── Titolo centrato e filtri ─────────────────────────────────────────── */
.gal-testa { max-width: 760px; margin: 0 auto clamp(22px, 3vw, 34px); text-align: center; }
.gal .gal-occhiello { display: inline-flex; align-items: center; gap: 10px; margin: 0 0 10px; color: var(--gal-primario); font-size: .76rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; }
.gal .gal-occhiello::before { content: ""; width: 7px; height: 7px; border-radius: 999px; background: var(--gal-acc); }
.gal .gal-titolo { margin: 0; color: var(--gal-primario); font-family: var(--font-heading, inherit); font-size: clamp(2.2rem, 3.4vw + 1rem, 4rem); font-weight: 500; line-height: 1.05; }
.gal .gal-sotto { margin: 14px 0 0; color: var(--gal-tenue); font-size: clamp(1rem, .4vw + .9rem, 1.2rem); }

.gal-filtri { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 30px; margin: 0 0 clamp(22px, 3vw, 34px); }
.gal-filtro {
    position: relative; margin: 0; padding: 8px 2px; border: 0; background: transparent;
    color: var(--gal-tenue); font: inherit; font-size: .98rem; cursor: pointer;
}
.gal-filtro::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: currentColor; transform: scaleX(0); transition: transform .2s ease; }
.gal-filtro:hover { color: var(--gal-testo); }
.gal-filtro.is-attivo { color: var(--gal-testo); font-weight: 600; }
.gal-filtro.is-attivo::after { transform: scaleX(1); }
.gal-filtro:focus-visible { outline: 2px solid var(--gal-primario); outline-offset: 4px; border-radius: 2px; }

/* ── Le foto ──────────────────────────────────────────────────────────── */
.gal-griglia { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gal-spazio); margin: 0; padding: 0; list-style: none; }
.gal--col-4 .gal-griglia { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.gal-voce { min-width: 0; margin: 0; }
.gal-link { position: relative; display: block; width: 100%; height: 100%; overflow: hidden; border-radius: 2px; background: #e9e4dc; }
.gal-link img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
a.gal-link { cursor: zoom-in; }
a.gal-link:hover img { transform: scale(1.04); }
a.gal-link:focus-visible { outline: 3px solid var(--gal-primario); outline-offset: 3px; }

/* Griglia: tutte uguali (4:3) */
.gal--griglia .gal-voce { aspect-ratio: 4 / 3; }

/* Mosaico: una grande (2×2) e quattro piccole, poi di nuovo */
.gal--mosaico .gal-griglia { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: clamp(140px, 15vw, 230px); grid-auto-flow: dense; }
.gal--mosaico .gal-voce.is-grande { grid-column: span 2; grid-row: span 2; }

/* Colonne: ogni foto con la sua forma */
.gal--colonne .gal-griglia { display: block; columns: 3; column-gap: var(--gal-spazio); }
.gal--colonne.gal--col-4 .gal-griglia { columns: 4; }
.gal--colonne .gal-voce { break-inside: avoid; margin-bottom: var(--gal-spazio); }
.gal--colonne .gal-link, .gal--colonne .gal-link img { height: auto; }

/* ── La foto grande (galleria.js) ─────────────────────────────────────── */
html.gal-luce-aperta { overflow: hidden; }
.gal-luce {
    position: fixed; inset: 0; z-index: 10000; display: flex; align-items: center; justify-content: center;
    padding: 56px 72px; background: rgba(22, 19, 15, .94); color: #f5f1ea;
}
.gal-luce-foto { display: flex; flex-direction: column; align-items: center; gap: 12px; max-width: 100%; max-height: 100%; margin: 0; }
.gal-luce-foto img { display: block; max-width: min(1400px, 100%); max-height: calc(100vh - 150px); width: auto; height: auto; object-fit: contain; border-radius: 2px; box-shadow: 0 30px 80px rgba(0, 0, 0, .45); }
.gal-luce-testo { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 16px; max-width: 900px; font-size: .92rem; text-align: center; }
.gal-luce-conta { color: rgba(245, 241, 234, .65); white-space: nowrap; }
.gal-luce-chiudi, .gal-luce-freccia {
    position: absolute; display: inline-flex; align-items: center; justify-content: center; padding: 0;
    border: 1px solid rgba(255, 255, 255, .22); border-radius: 999px; background: rgba(255, 255, 255, .08); color: #fff; cursor: pointer;
}
.gal-luce-chiudi { top: 14px; right: 14px; width: 46px; height: 46px; }
.gal-luce-freccia { top: 50%; width: 52px; height: 52px; transform: translateY(-50%); }
.gal-luce-freccia.is-prima { left: 14px; }
.gal-luce-freccia.is-dopo { right: 14px; }
.gal-luce-chiudi:hover, .gal-luce-freccia:hover { background: rgba(255, 255, 255, .2); }
.gal-luce-chiudi:focus-visible, .gal-luce-freccia:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }

/* ── Tablet e telefono ────────────────────────────────────────────────── */
@media (max-width: 860px) {
    .gal-griglia, .gal--col-4 .gal-griglia { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .gal--mosaico .gal-griglia { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: clamp(120px, 34vw, 220px); }
    .gal--colonne .gal-griglia, .gal--colonne.gal--col-4 .gal-griglia { columns: 2; }
    .gal { --gal-spazio: 10px; }
}
@media (max-width: 640px) {
    .gal-luce { padding: 56px 12px 72px; }
    .gal-luce-freccia { top: auto; bottom: 14px; transform: none; width: 48px; height: 48px; }
    .gal-luce-freccia.is-prima { left: calc(50% - 60px); }
    .gal-luce-freccia.is-dopo { right: calc(50% - 60px); }
    .gal-luce-foto img { max-height: calc(100vh - 190px); }
    .gal-filtri { gap: 4px 20px; }
}
@media (prefers-reduced-motion: reduce) {
    .gal-link img, .gal-filtro::after { transition: none; }
    a.gal-link:hover img { transform: none; }
}
