/**
 * ==========================================================================
 * MAIN.CSS — Mécena
 * ==========================================================================
 * Foglio di stile principale del sito.
 * Nessun framework, nessuna dipendenza esterna.
 *
 * INDICE:
 * 1. Font (Jost self-hosted)
 * 2. Reset CSS minimale
 * 3. Variabili CSS custom (colori, font, spacing)
 * 4. Tipografia base
 * 5. Layout e contenitore
 * 6. Navbar (categorie centrate, extra a destra, lingua verticale)
 * 7. Sotto-menu Works
 * 8. Hero Showreel (video calamitato a tutto schermo)
 * 9. Footer (micro-footer sotto il video)
 * 10. Utility
 * 11. Animazioni
 * 12. Responsive (mobile-first)
 * ==========================================================================
 */


/* ==========================================================================
   1. FONT — Jost self-hosted (nessuna chiamata esterna a Google Fonts)
   ==========================================================================
   Jost è un font geometrico sans-serif, molto vicino a Futura.
   Variabile: un solo file woff2 copre tutti i pesi (300-700).
   ========================================================================== */

/* Latin — copre italiano, inglese e la maggior parte delle lingue europee */
@font-face {
    font-family: 'Jost';
    font-style: normal;
    font-weight: 300 700; /* Font variabile: dal Light (300) al Bold (700) */
    font-display: swap;   /* Mostra subito il testo con font di sistema, poi sostituisce con Jost */
    src: url('../fonts/jost/jost-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
                   U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122,
                   U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Latin Extended — caratteri accentati extra (é, è, ñ, ecc.) */
@font-face {
    font-family: 'Jost';
    font-style: normal;
    font-weight: 300 700;
    font-display: swap;
    src: url('../fonts/jost/jost-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
                   U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF,
                   U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}


/* ==========================================================================
   2. RESET CSS — Minimale, solo quello che serve
   ========================================================================== */

*,
*::before,
*::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    /* ISOLAMENTO NAVBAR: riserva lo spazio per la scrollbar sempre */
    scrollbar-gutter: stable;
}

body {
    overflow-x: hidden;
}

a {
    text-decoration: none;
    color: inherit;
}

ul, ol {
    list-style: none;
}

img, video {
    display: block;
    max-width: 100%;
    height: auto;
}

button {
    background: none;
    border: none;
    cursor: pointer;
    color: inherit;
    font: inherit;
}


/* ==========================================================================
   3. VARIABILI CSS — Colori, font, spacing
   ==========================================================================
   PERSONALIZZARE: Modificare questi valori per cambiare l'aspetto globale.
   ========================================================================== */

:root {
    /* --- Colori principali --- */
    --colore-sfondo:       #000000;  /* Nero — sfondo principale */
    --colore-testo:        #ffffff;  /* Bianco — testo principale */
    --colore-muted:        #888888;  /* Grigio — testi secondari, metadati, footer */
    --colore-accento:      #ffffff;  /* Bianco — hover, bordi, separatori */
    --colore-overlay:      rgba(0, 0, 0, 0.45); /* Overlay semi-trasparente su immagini/video */

    /* --- Tipografia --- */
    --font-principale:     'Jost', 'Futura', 'Century Gothic', sans-serif;
    --font-peso-light:     300;
    --font-peso-regular:   400;
    --font-peso-medium:    500;
    --font-peso-semibold:  600;

    /* --- Dimensioni testo ---
       REGOLA: nessun testo nel sito deve essere più piccolo delle voci
       della navbar (--testo-sm). Su monitor grandi tutto deve essere leggibile.
       Il vw component scala con la larghezza dello schermo.
       ------------------------------------------------------------------- */
    --testo-xs:            clamp(0.78rem, 0.9vw, 0.92rem);    /* Label, tag, micro-dati — MIN ~12.5px */
    --testo-sm:            clamp(0.88rem, 1vw, 1.05rem);      /* Link navbar, metadati — MIN ~14px */
    --testo-base:          clamp(1rem, 1.12vw, 1.18rem);      /* Testo corpo — MIN 16px */
    --testo-md:            clamp(1.1rem, 1.22vw, 1.28rem);    /* Titoli medi — MIN ~17.6px */

    /* --- Spaziature --- */
    --spazio-xs:           0.5rem;
    --spazio-sm:           1rem;
    --spazio-md:           2rem;
    --spazio-lg:           4rem;

    /* --- Layout --- */
    --larghezza-max:       1400px;
    --padding-contenitore: clamp(1.25rem, 3vw, 3rem);

    /* --- Navbar --- */
    --navbar-altezza:      68px;
    --navbar-padding-x:    clamp(1.5rem, 3vw, 3.5rem); /* Padding laterale fisso vicino ai bordi */
    --navbar-sfondo:       transparent; /* Trasparente sulla hero, poi opaco allo scroll */

    /* --- Animazioni --- */
    --transizione:         0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    --transizione-lenta:   0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);

    /* --- Z-index (scala ordinata) --- */
    --z-sfondo:            -1;
    --z-contenuto:         1;
    --z-navbar:            100;
    --z-overlay:           200;
    --z-modale:            300;
}


/* ==========================================================================
   4. TIPOGRAFIA BASE
   ========================================================================== */

body {
    font-family: var(--font-principale);
    font-weight: var(--font-peso-regular);
    font-size: var(--testo-base);
    line-height: 1.6;
    color: var(--colore-testo);
    background-color: var(--colore-sfondo);
}

h1, h2, h3, h4 {
    font-weight: var(--font-peso-medium);
    line-height: 1.15;
    letter-spacing: 0.02em;
}


/* ==========================================================================
   5. LAYOUT E CONTENITORE
   ========================================================================== */

.contenitore {
    width: 100%;
    max-width: var(--larghezza-max);
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--padding-contenitore);
    padding-right: var(--padding-contenitore);
}

.contenitore--empty {
    padding: 4rem 0;
}

/* Il main non ha padding top perché il video parte sotto la navbar */
.sito__contenuto {
    min-height: 0;
    margin-bottom: 0;
}


/* ==========================================================================
   5bis. RESET — Navbar e Footer (HERO = sempre uguali indipendentemente dalla pagina)
   ==========================================================================
   Navbar e footer sono HERO: non si interessano del contenuto, non cambiano
   dimensione o composizione a seconda della pagina.

   Regola: resetta TUTTI gli elementi dentro navbar e footer con specificity
   altissima (body-scoped selectors + !important). Indipendentemente da CSS
   specifico delle pagine, navbar e footer mantengono le loro proprietà.

   Ereditarietà: gli elementi inside navbar/footer ereditano dalla loro base
   (font-size: 1rem), non da body. Questo isola completamente gli elementi
   strutturali.
   ========================================================================== */

/* Base per tutti gli elementi inside navbar/footer */
body .navbar {
    font-size: 1rem !important;
    line-height: 1 !important;
    font-family: 'Jost', sans-serif !important;
    color: var(--colore-testo) !important;
}
body .footer {
    font-size: clamp(0.72rem, 0.82vw, 0.85rem) !important;
    line-height: 1.5 !important;
    font-family: 'Jost', sans-serif !important;
    color: var(--colore-testo) !important;
}

/* Footer: z-index basso per permettere il reveal-on-scroll nelle pagine istituzionali e homepage */
body .footer {
    z-index: 1;
}

/* Reset wildcard per figli direct/nested — solo tipografia, box-sizing */
body .navbar *,
body .footer * {
    font-size: inherit !important;
    line-height: inherit !important;
    font-family: inherit !important;
    box-sizing: border-box !important;
}

/* ==========================================================================
   6. NAVBAR
   ==========================================================================
   Tre zone:
   - Logo a sinistra (flex-start)
   - 4 categorie centrate (grid desktop, overlay su mobile)
   - About/Manifesto/Contact + ITA/ENG a destra (flex-end)

   La navbar è trasparente e sovrapposta al video hero.
   Diventa opaca (con blur) dopo lo scroll (classe .navbar--scrolled via JS).
   ========================================================================== */

.navbar {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: var(--navbar-altezza);
    background: var(--navbar-sfondo);
    z-index: var(--z-navbar);
    transition: background var(--transizione);
    /* ISOLAMENTO: Font-size base indipendente da body */
    font-size: 1rem !important;
    line-height: 1;
}

/* Navbar opaca dopo lo scroll (classe aggiunta da main.js) */
.navbar--scrolled {
    background: rgba(0, 0, 0, 0.92);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.navbar__inner {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 100%;
    max-width: var(--larghezza-max);
    margin: 0 auto;
    /* Padding ridotto rispetto al contenitore generico:
       logo e extra non stanno ai bordi, c'è respiro su schermi grandi */
    padding: 0 var(--navbar-padding-x);
    /* ISOLAMENTO: overflow visible per permettere al submenu di uscire */
    overflow: visible !important;
    line-height: 1 !important;
}

/* --- Logo (sinistra) --- */
.navbar__logo {
    display: flex;
    align-items: center;
    flex-shrink: 0;
    z-index: calc(var(--z-overlay) + 2);
    /* ISOLAMENTO: blocca altura e spacing */
    height: var(--navbar-altezza) !important;
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1 !important;
    opacity: 1 !important;
    filter: none !important;
}

.navbar__logo-text {
    font-size: 1.5rem !important;
    font-weight: var(--font-peso-medium) !important;
    letter-spacing: 0.18em !important;
    text-transform: uppercase !important;
    color: var(--colore-testo) !important;
}

.navbar__logo img {
    height: auto !important;
    width: auto !important;
    object-fit: contain !important;
    font-weight: 400 !important;
    font-style: normal !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
}

.navbar__logo-img {
    height: auto !important;
    width: auto !important;
    object-fit: contain !important;
    font-weight: 400 !important;
    font-style: normal !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
}

/* --- Menu centrale (le 4 categorie) — CENTRATO nella navbar --- */
.navbar__menu {
    display: none; /* Nascosto su mobile, visibile da 1200px */
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

.navbar__lista {
    display: flex;
    align-items: center;
    gap: clamp(1.5rem, 2.2vw, 2.5rem);
    /* ISOLAMENTO: line-height e spacing bloccati */
    line-height: 1 !important;
    margin: 0 !important;
    padding: 0 !important;
}

.navbar__link {
    font-size: 0.93rem !important;
    font-weight: var(--font-peso-regular) !important;
    letter-spacing: 0.12em !important;
    text-transform: uppercase !important;
    color: var(--colore-muted) !important;
    transition: color var(--transizione);
    position: relative;
    white-space: nowrap;
    /* ISOLAMENTO */
    line-height: 1 !important;
    margin: 0 !important;
    padding: 0 !important;
}

.navbar__link:hover,
.navbar__link:focus {
    color: var(--colore-testo);
}

/* Link attivo — pagina corrente illuminata (solo bianco, senza grassetto) */
.navbar__link.is-active {
    color: var(--colore-testo) !important;
}

.navbar__link.is-active::after {
    content: '';
    position: absolute;
    bottom: -4px;
    left: 0;
    width: 100%;
    height: 1px;
    background: var(--colore-testo);
}

/* Linea sotto il link all'hover */
.navbar__link::after {
    content: '';
    position: absolute;
    bottom: -4px;
    left: 0;
    width: 0;
    height: 1px;
    background: var(--colore-testo);
    transition: width var(--transizione);
}

.navbar__link:hover::after {
    width: 100%;
}

/* --- Area destra (About, Manifesto, Contact + Lingua) --- */
.navbar__extra {
    display: none; /* Nascosto su mobile, visibile da 1200px */
    align-items: center;
    gap: clamp(1rem, 1.8vw, 2rem);
    flex-shrink: 0;
    /* ISOLAMENTO */
    height: var(--navbar-altezza) !important;
    line-height: 1 !important;
    margin: 0 !important;
    padding: 0 !important;
}

.navbar__lista--extra {
    gap: clamp(1rem, 1.5vw, 1.8rem);
}

/* --- Toggle lingua — ITA sopra ENG, verticale, con lineetta --- */
.navbar__lingua {
    display: flex;
    flex-direction: column;  /* Impilati verticalmente */
    align-items: center;
    justify-content: center;
    gap: 0.3rem;
    margin-left: clamp(0.8rem, 1.2vw, 1.2rem) !important;
    margin-top: 8px !important;
    margin-bottom: 0 !important;
    padding-left: clamp(0.8rem, 1.2vw, 1.2rem) !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    padding-right: 0 !important;
    border-left: 1px solid rgba(255, 255, 255, 0.12);
    line-height: 1 !important;
    height: 50px !important;
}

.navbar__lingua-link {
    font-size: 0.85rem !important;
    font-weight: var(--font-peso-regular) !important;
    letter-spacing: 0.12em !important;
    text-transform: uppercase !important;
    color: rgba(255, 255, 255, 0.25) !important; /* Spento di default */
    transition: color var(--transizione);
    padding: 0 !important;
    margin: 0 !important;
    line-height: 1 !important;
}

/* Lingua attiva: illuminata (solo bianco, senza grassetto, senza linea) */
.navbar__lingua-link.is-active {
    color: var(--colore-testo) !important;
}

.navbar__lingua-link:hover {
    color: var(--colore-testo);
}

/* Lineetta orizzontale tra ITA e ENG */
.navbar__lingua-sep {
    display: block;
    width: 14px;
    height: 1px;
    background: rgba(255, 255, 255, 0.2);
    margin: 0 !important;
    line-height: 1 !important;
}

/* --- Hamburger (solo mobile) --- */
.navbar__burger {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 6px;
    width: 26px;
    height: 28px;
    z-index: calc(var(--z-overlay) + 2);
    padding: 0;
}

.navbar__burger-line {
    display: block;
    width: 24px;
    height: 2px;
    border-radius: 2px;
    background: var(--colore-testo);
    transition: transform var(--transizione), opacity var(--transizione);
    transform-origin: center;
}

/* Animazione hamburger → X quando il menu è aperto */
.navbar__burger.is-open .navbar__burger-line:nth-child(1) {
    transform: translateY(8px) rotate(45deg);
}

.navbar__burger.is-open .navbar__burger-line:nth-child(2) {
    opacity: 0;
}

.navbar__burger.is-open .navbar__burger-line:nth-child(3) {
    transform: translateY(-8px) rotate(-45deg);
}

/* --- Menu mobile overlay (a schermo intero) --- */

/* Overlay sempre nel DOM ma nascosto via clip-path:
   quando .is-open viene aggiunto, scende con animazione slide-down */
.navbar__mobile-overlay {
    display: none; /* Il blocco esiste solo su mobile, gestito dal media query */
}

/* Alza il contesto di stacking del navbar quando il menu è aperto,
   e disabilita backdrop-filter (crea un containing block per position:fixed).
   !important necessario per vincere le regole per-pagina (.page-categoria .navbar ecc.) */
.navbar.is-open {
    z-index: var(--z-overlay);
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

.navbar.is-open .navbar__menu,
.navbar.is-open .navbar__extra {
    display: flex;
}

.navbar.is-open .navbar__menu {
    position: fixed;
    inset: 0;
    width: 100vw;
    height: 100vh;
    height: 100dvh;             /* Progressive: iOS dynamic viewport */
    background: var(--colore-sfondo);
    flex-direction: column;
    justify-content: center;
    align-items: center;        /* Centra tutto orizzontalmente */
    text-align: center;
    padding-bottom: 12vh;       /* Spinge le voci verso l'alto per bilanciare la sezione extra in basso */
    z-index: var(--z-overlay);
    transform: none;            /* Annulla il translate(-50%,-50%) desktop */

    /* Animazione entrata — scende dall'alto */
    animation: menuSlideDown 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

@keyframes menuSlideDown {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.navbar.is-open .navbar__menu .navbar__lista {
    flex-direction: column;
    align-items: center;        /* Voci centrate */
    gap: clamp(1.8rem, 4vh, 3rem);
}

.navbar.is-open .navbar__menu .navbar__link {
    /* Più grande del desktop ma proporzionato allo schermo mobile */
    font-size: clamp(1.08rem, 3.8vw, 1.55rem);
    letter-spacing: 0.15em;
    color: var(--colore-testo);
    font-weight: var(--font-peso-light);
}

/* Voci extra in fondo allo schermo */
.navbar.is-open .navbar__extra {
    position: fixed;
    bottom: clamp(2.5rem, 6vh, 4.5rem);
    left: 0;
    width: 100%;
    flex-direction: column;
    align-items: center;
    gap: var(--spazio-sm);
    z-index: calc(var(--z-overlay) + 1);

    /* Animazione leggermente ritardata rispetto al menu */
    animation: menuSlideDown 0.45s 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

.navbar.is-open .navbar__lista--extra {
    flex-direction: row;
    justify-content: center;
    gap: clamp(1.2rem, 4vw, 2rem);
}

.navbar.is-open .navbar__lista--extra .navbar__link {
    font-size: clamp(0.84rem, 2.2vw, 0.96rem);
    color: var(--colore-muted);
    letter-spacing: 0.12em;
}

.navbar.is-open .navbar__lingua {
    flex-direction: row;
    margin-left: 0;
    padding-left: 0;
    border-left: none;
    gap: 0.5rem;
    align-items: center;
}

.navbar.is-open .navbar__lingua-sep {
    width: 1px;
    height: 10px;
    margin: 0;
}

/* Social — nascosti di default, visibili solo nel menu mobile */
.navbar__social {
    display: none;
}

.navbar.is-open .navbar__social {
    display: flex;
    justify-content: center;
    gap: clamp(1rem, 3vw, 1.5rem);
    margin-top: var(--spazio-xs);
}

.navbar__social-link {
    color: var(--colore-muted);
    transition: color var(--transizione);
}

.navbar__social-link:hover {
    color: var(--colore-testo);
}

.navbar__social-link svg {
    width: 18px;
    height: 18px;
    display: block;
}


/* ==========================================================================
   7. SOTTO-MENU WORKS
   ==========================================================================
   Dropdown che appare all'hover su desktop.
   Posizionato sotto la voce Works, allineato a sinistra.
   ========================================================================== */

.navbar__item--has-sub {
    position: relative;
}

/* Sotto-menu nascosto di default */
.navbar__submenu {
    display: none;
    position: absolute;
    top: calc(100% + 12px);
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.95);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(255, 255, 255, 0.08);
    padding: 0.8rem 0;
    min-width: 200px;
    z-index: calc(var(--z-navbar) + 2);
}

/* Mostra sotto-menu all'hover (desktop) */
.navbar__item--has-sub:hover .navbar__submenu {
    display: block;
}

/* Area di hover estesa per evitare che il menu sparisca muovendosi verso il sotto-menu */
.navbar__item--has-sub::after {
    content: '';
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    height: 16px;
}

.navbar__sublink {
    display: block;
    padding: 0.5rem 1.2rem;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--colore-muted);
    transition: color var(--transizione), padding-left var(--transizione);
    white-space: nowrap;
}

.navbar__sublink:hover {
    color: var(--colore-testo);
    padding-left: 1.5rem;
}

/* Sotto-menu nel mobile overlay — si espande inline, centrato */
.navbar.is-open .navbar__submenu {
    display: block;
    position: static;
    transform: none;
    background: transparent;
    backdrop-filter: none;
    border: none;
    padding: 0.8rem 0 0;
    min-width: auto;
    text-align: center;
}

.navbar.is-open .navbar__sublink {
    font-size: clamp(0.82rem, 2.1vw, 0.94rem);
    letter-spacing: 0.1em;
    color: rgba(255, 255, 255, 0.4);
    padding: 0.35rem 0;
    transition: color var(--transizione);
}

.navbar.is-open .navbar__sublink:hover {
    color: var(--colore-muted);
    padding-left: 0; /* Annulla lo shift desktop */
}


/* ==========================================================================
   8. HERO SHOWREEL — Video a tutto schermo
   ==========================================================================
   Il video occupa tutto lo spazio disponibile nel viewport
   (100vh = altezza finestra intera, il navbar è sovrapposto in trasparenza).

   COMPORTAMENTO:
   - Il video è sempre centrato
   - object-fit: cover aggancia il lato più largo: se la finestra è
     più larga del rapporto del video, si allarga; se è più alta, si alza.
   - Non si crea MAI vuoto nero ai bordi
   - Il footer è subito sotto, visibile scrollando poco
   ========================================================================== */

.hero {
    position: relative;
    width: 100%;
    height: 100vh;       /* Occupa esattamente tutta la finestra */
    overflow: hidden;    /* Nasconde le parti del video che escono */
    background: #000;   /* Sfondo nero in attesa del video */
}

.hero__video {
    position: absolute;
    top: 50%;             /* Centra verticalmente */
    left: 50%;            /* Centra orizzontalmente */
    transform: translate(-50%, -50%);
    min-width: 100%;      /* Almeno largo quanto il contenitore */
    min-height: 100%;     /* Almeno alto quanto il contenitore */
    width: auto;
    height: auto;
    object-fit: cover;    /* Copre tutto, taglia il surplus, MAI vuoto */
}


/* --- Splashscreen (logo su nero, sfuma) --- */
.splash {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 9999;           /* Sopra tutto, inclusa la navbar */
    background: #000;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 1;
    transition: opacity 0.8s ease;
    pointer-events: auto;
}

.splash.is-fading {
    opacity: 0;
    pointer-events: none;
}

.splash.is-hidden {
    display: none;
}

.splash__inner {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px;
}

.splash__logo {
    max-width: min(300px, 60vw);  /* Responsive: mai piu largo del 60% dello schermo */
    max-height: 120px;
    height: auto;
    width: auto;
    object-fit: contain;
    opacity: 0;
    animation: splashFadeIn 1s ease forwards;
}

@keyframes splashFadeIn {
    from { opacity: 0; transform: scale(0.95); }
    to   { opacity: 1; transform: scale(1); }
}


/* ==========================================================================
   9. FOOTER — Micro-footer sotto il video
   ==========================================================================
   Visibile scrollando appena sotto il video hero.
   Minimo, quasi invisibile, ma presente con i dati legali obbligatori.
   ========================================================================== */

.footer {
    padding: var(--spazio-lg, 2.5rem) var(--padding-contenitore);
    padding-bottom: var(--spazio-md, 2rem);
    background: var(--colore-sfondo);
    margin-left: calc(-1 * var(--padding-contenitore));
    margin-right: calc(-1 * var(--padding-contenitore));
    width: calc(100% + 2 * var(--padding-contenitore));
    box-sizing: border-box;
}

.footer__inner {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.35rem;
}

.footer__copy {
    display: flex;
    align-items: center;
    gap: 0.15rem 0.6rem;
    font-size: inherit !important;
    color: var(--colore-muted) !important;
    letter-spacing: 0.05em !important;
    flex-wrap: wrap;
    justify-content: center;
    text-align: center;
}

.footer__copy-item {
    white-space: normal;
}

.footer__copy-item::after {
    content: '\2022';
    margin-left: 0.7rem;
    opacity: 0.3;
}

.footer__copy-item:last-child::after {
    content: '';
    margin-left: 0;
}

.footer__policies {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    font-size: inherit !important;
    color: var(--colore-muted) !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase !important;
}

.footer__policy-link {
    color: var(--colore-muted) !important;
    transition: color var(--transizione);
}

.footer__policy-link:hover,
.footer__policy-link:focus {
    color: var(--colore-testo);
}

.footer__sep {
    opacity: 0.3;
}

/* Righe strutturate del footer */
.footer__row {
    display: flex;
    align-items: center;
    gap: 0.3rem 0.8rem;
    font-size: inherit !important;
    color: var(--colore-muted) !important;
    letter-spacing: 0.05em !important;
    flex-wrap: wrap;
    justify-content: center;
    text-align: center;
}

.footer__company {
    font-weight: var(--font-peso-medium) !important;
    color: var(--colore-testo) !important;
}

.footer__sep-dot {
    opacity: 0.3;
}

.footer__row--contact {
    font-size: calc(0.95em) !important;
}

.footer__contact-link {
    color: var(--colore-muted) !important;
    transition: color var(--transizione);
}

.footer__contact-link:hover,
.footer__contact-link:focus {
    color: var(--colore-testo);
}

.footer__row--social {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.8rem;
    margin-top: 0.15rem;
}

.footer__social-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--colore-muted);
    transition: color var(--transizione);
}

.footer__social-link:hover,
.footer__social-link:focus {
    color: var(--colore-testo);
}

.footer__social-link svg {
    fill: currentColor;
}

.footer__row--bottom {
    margin-top: 0;
    padding-top: 0.35rem;
    border-top: 1px solid rgba(255, 255, 255, 0.06);
}

.footer__row--bottom .footer__social-link {
    margin-left: 8px;
}

.footer__bottom-line {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    font-size: calc(0.9em);
    color: var(--colore-muted);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    flex-wrap: wrap;
}

.footer__copyright-text {
    opacity: 0.7;
}


/* ==========================================================================
   9b. HOMEPAGE — Footer che si rivela da sotto
   ==========================================================================
   Il video hero occupa 100vh. Il footer e' fissato in basso allo schermo.
   Il contenuto principale (hero) ha un z-index superiore e gli scorre sopra.
   Scrollando oltre il video, il footer si rivela.
   Il padding-bottom sul body homepage garantisce lo spazio di scroll
   necessario perche' il footer sia raggiungibile.
   ========================================================================== */

/* Il body homepage ha un padding-bottom pari all'altezza del footer,
   cosi' c'e' lo spazio per scrollare e rivelarlo. */
.home .sito__contenuto {
    position: relative;
    z-index: 2;
    background: var(--colore-sfondo);
}

/* Footer: statico sotto il contenuto, z-index basso — il contenuto lo copre */
.home .footer {
    position: static;
    z-index: 1;
}



/* ==========================================================================
   10. UTILITY
   ========================================================================== */

/* Classe per nascondere visivamente (accessibilità) */
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}


/* ==========================================================================
   11. ANIMAZIONI
   ========================================================================== */

/* Animazione fade-in-up per elementi che appaiono allo scroll */
.anima-entrata {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity var(--transizione-lenta), transform var(--transizione-lenta);
}

.anima-entrata.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Stagger: il contenitore ha data-stagger, i figli hanno .anima-entrata */
[data-stagger] > .anima-entrata {
    transition-delay: calc(var(--stagger-i, 0) * 0.08s);
}

/* Page transitions — fade-in al caricamento, fade-out alla navigazione */
.sito__contenuto {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.4s ease-out, transform 0.4s ease-out;
}

.sito__contenuto.is-entering {
    opacity: 0;
    transform: translateY(12px);
}

.sito__contenuto.is-leaving {
    opacity: 0;
    transform: translateY(-6px);
    pointer-events: none;
}

/* Rispetta le preferenze utente per le animazioni ridotte */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
    html {
        scroll-behavior: auto;
    }

    .sito__contenuto,
    .sito__contenuto.is-entering,
    .sito__contenuto.is-leaving {
        transition-duration: 0.01ms !important;
        transform: none !important;
    }

    [data-stagger] > .anima-entrata {
        transition-delay: 0s !important;
    }
}


/* ==========================================================================
   12. RESPONSIVE — Mobile first
   ==========================================================================
   Breakpoint:
   - Default:  mobile (< 768px)
   - 768px:    tablet
   - 1200px:   desktop (navbar completa)
   - 1600px:   desktop grande
   ========================================================================== */

/* ==========================================================================
   13. PAGINA DOCUMENTARY
   ==========================================================================
   Sezioni:
   - doc-header        → Category label + frase introduttiva
   - doc-editorial     → Editorial Note a due colonne
   - doc-featured      → Documentario in evidenza (grande, 21:9)
   - doc-selected      → Selected Documentaries (card con immagini, alternati)
   - doc-method        → Dichiarazione di metodo (cerniera narrativa)
   - doc-other         → Other Works (lista tipografica con hover)
   - doc-collab        → Collaborations (call co-produttori)
   - doc-archive-link  → Rimando all'archivio

   VARIABILI SPECIFICHE (estendono le variabili globali):
   - Max-width contenuto: 1140px (più stretto della navbar per respiro)
   - Spaziatura tra sezioni: clamp(6rem, 10vw, 10rem)
   ========================================================================== */


/* --- Contenitore interno Documentary (più stretto) --- */
.doc-header .contenitore,
.doc-editorial .contenitore,
.doc-featured,
.doc-method .contenitore,
.doc-other .contenitore,
.doc-collab .contenitore,
.doc-archive-link .contenitore {
    max-width: 1140px;
}

/* Selected Documentaries — colonna più raccolta rispetto al Featured.
   La differenza di ~120px crea una gerarchia visiva percepibile. */
.doc-selected .contenitore {
    max-width: 960px;
}


/* --- 13.1 HEADER — Category / Documentary --- */

.doc-header {
    padding-top: calc(var(--navbar-altezza) + clamp(4rem, 8vw, 8rem));
    padding-bottom: clamp(2rem, 4vw, 4rem);
}

.doc-header__label {
    display: block;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--colore-muted);
    margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

.doc-header__intro {
    font-size: clamp(1rem, 1.4vw, 1.2rem);
    font-weight: var(--font-peso-light);
    line-height: 1.7;
    color: var(--colore-testo);
    max-width: 480px;
    opacity: 0.85;
}


/* --- 13.2 EDITORIAL NOTE --- */

.doc-editorial {
    padding-bottom: clamp(4rem, 8vw, 8rem);
}

.doc-editorial__label {
    display: block;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--colore-muted);
    margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

.doc-editorial__columns {
    display: flex;
    flex-direction: column;
    gap: clamp(1.5rem, 3vw, 2.5rem);
}

.doc-editorial__main p {
    font-size: clamp(1.3rem, 2.2vw, 1.9rem);
    font-weight: var(--font-peso-light);
    line-height: 1.35;
    color: var(--colore-testo);
}

.doc-editorial__aside p {
    font-size: clamp(0.85rem, 1vw, 0.95rem);
    font-weight: var(--font-peso-regular);
    line-height: 1.65;
    color: var(--colore-muted);
}


/* --- 13.3 FEATURED DOCUMENTARY --- */

.doc-featured {
    padding-bottom: clamp(4rem, 8vw, 8rem);
    max-width: 1140px;
    margin: 0 auto;
}

.doc-featured__label {
    display: block;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--colore-muted);
    margin-bottom: clamp(1.5rem, 2vw, 2rem);
}

.doc-featured__layout {
    display: flex;
    flex-direction: column;
    gap: clamp(1.5rem, 3vw, 2.5rem);
}

/* --- Contenitore media (immagine + video sovrapposto) --- */
.doc-featured__media {
    position: relative;
    width: 100%;
    aspect-ratio: 21 / 9;
    overflow: hidden;
    background: #111;
    cursor: pointer;
}

/* Poster (immagine statica) */
.doc-featured__poster {
    position: absolute;
    top: 0; left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: opacity 0.6s ease, transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    z-index: 1;
}

.doc-featured__poster.is-hidden {
    opacity: 0;
}

/* Video trailer — nascosto finché non parte */
.doc-featured__video {
    position: absolute;
    top: 0; left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    z-index: 0;
    transition: opacity 0.5s ease;
}

.doc-featured__video.is-playing {
    opacity: 1;
    z-index: 2;
}

/* Leggero scale su hover del media */
.doc-featured__media:hover .doc-featured__poster {
    transform: scale(1.03);
}

/* Gradient overlay in basso per leggibilità del testo */
.doc-featured__overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: clamp(1.5rem, 3vw, 3rem);
    background: linear-gradient(
        to top,
        rgba(0, 0, 0, 0.85) 0%,
        rgba(0, 0, 0, 0.4) 60%,
        transparent 100%
    );
    z-index: 3;
    pointer-events: none;
}

.doc-featured__title {
    font-size: clamp(1.6rem, 3vw, 2.8rem);
    font-weight: var(--font-peso-medium);
    letter-spacing: 0.02em;
    line-height: 1.1;
    margin-bottom: 0.5rem;
}

.doc-featured__desc {
    font-size: clamp(0.85rem, 1.1vw, 1rem);
    font-weight: var(--font-peso-light);
    color: rgba(255, 255, 255, 0.75);
    max-width: 500px;
}

/* Scheda progetto affiancata */
.doc-featured__info {
    display: flex;
    flex-direction: column;
    gap: clamp(0.7rem, 1.2vw, 1rem);
}

.doc-featured__info-label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--colore-muted);
}

.doc-featured__info-title {
    font-size: clamp(1.2rem, 1.8vw, 1.6rem);
    font-weight: var(--font-peso-medium);
    line-height: 1.2;
}

.doc-featured__info-desc {
    font-size: clamp(0.85rem, 1vw, 0.95rem);
    font-weight: var(--font-peso-light);
    line-height: 1.65;
    color: rgba(255, 255, 255, 0.7);
}

/* Linea separatrice sottilissima tra sinossi e meta */
.doc-featured__divider {
    border: none;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    margin: 0;
}

/* Meta (formato, anno, regia) — griglia a due colonne allineata */
.doc-featured__meta {
    display: grid;
    grid-template-columns: auto 1fr;
    row-gap: 0.35rem;
    column-gap: 0;
    margin: 0;
    padding: 0;
}

.doc-featured__meta-item {
    display: contents; /* ogni item contribuisce con dt + dd alla griglia */
}

.doc-featured__meta-label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--colore-muted);
    padding-right: 1.2rem;
    align-self: baseline;
    white-space: nowrap;
}

.doc-featured__meta-value {
    font-size: clamp(0.85rem, 1vw, 0.95rem);
    font-weight: var(--font-peso-regular);
    color: var(--colore-testo);
    align-self: baseline;
    margin: 0;
}

/* Tag — usato ovunque nella pagina Documentary */
.doc-featured__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.doc-tag {
    display: inline-block;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-medium);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--colore-muted);
    border: 1px solid rgba(255, 255, 255, 0.12);
    padding: 0.25em 0.7em;
    white-space: nowrap;
}

.doc-tag--sm {
    font-size: var(--testo-xs);
    padding: 0.2em 0.6em;
}

/* Azioni (pulsanti) */
.doc-featured__actions {
    display: flex;
    flex-wrap: wrap;
    gap: clamp(0.8rem, 1.5vw, 1.2rem);
    padding-top: 0.5rem;
}

/* Pulsanti Documentary — stile sobrio, editoriale */
.doc-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-medium);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--colore-testo);
    transition: color var(--transizione), opacity var(--transizione);
    position: relative;
}

.doc-btn:hover {
    opacity: 0.7;
}

.doc-btn--sm {
    font-size: var(--testo-xs);
}

.doc-btn--xs {
    font-size: var(--testo-xs);
}

.doc-btn__icon {
    font-size: 0.65em;
    opacity: 0.8;
}

.doc-btn__arrow {
    font-size: 1.1em;
    transition: transform var(--transizione);
}

.doc-btn:hover .doc-btn__arrow {
    transform: translate(2px, -2px);
}

.doc-btn--project {
    color: var(--colore-muted);
}

.doc-btn--project:hover {
    color: var(--colore-testo);
    opacity: 1;
}


/* --- 13.4 SELECTED DOCUMENTARIES (Card con immagine) --- */

.doc-selected {
    padding-bottom: clamp(4rem, 8vw, 8rem);
}

.doc-selected__header {
    margin-bottom: clamp(3rem, 5vw, 5rem);
}

.doc-selected__label {
    display: block;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--colore-muted);
    margin-bottom: clamp(0.5rem, 1vw, 0.8rem);
}

.doc-selected__desc {
    font-size: clamp(0.85rem, 1vw, 0.95rem);
    font-weight: var(--font-peso-regular);
    color: var(--colore-muted);
    max-width: 500px;
}

/* Card singola — più compatta senza sinossi */
.doc-card {
    display: flex;
    flex-direction: column;
    gap: clamp(1rem, 2vw, 1.6rem);
    padding-bottom: clamp(2.5rem, 4vw, 4rem);
    margin-bottom: clamp(2.5rem, 4vw, 4rem);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.doc-card:last-child {
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0;
}

/* Contenitore media — 3:2 fisso, senza bordi.
   Poster e video sono position:absolute e coprono l'intera area con cover.
   Funziona sia su mobile (colonna singola) che su desktop (2/3 del layout).  */
.doc-card__media {
    position: relative;
    overflow: hidden;
    background: #111;
    cursor: pointer;
    aspect-ratio: 3 / 2;   /* Il contenitore detta la proporzione */
    width: 100%;
}

/* Link trasparente sopra il media */
.doc-card__media-link {
    position: absolute;
    inset: 0;
    z-index: 3;
}

/* Poster — riempie tutto il contenitore 3:2, nessun bordo */
.doc-card__poster {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: opacity 0.6s ease, transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    z-index: 1;
}

.doc-card__poster.is-hidden {
    opacity: 0;
}

/* Video trailer — stessa area del poster, viene sopra con z-index */
.doc-card__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    z-index: 0;
    transition: opacity 0.5s ease;
}

.doc-card__video.is-playing {
    opacity: 1;
    z-index: 2;
}

.doc-card__media:hover .doc-card__poster {
    transform: scale(1.03);
}

/* Contenuto testo */
.doc-card__content {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    justify-content: center;
}

.doc-card__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.doc-card__year {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--colore-muted);
}

.doc-card__title {
    font-size: clamp(1.05rem, 1.5vw, 1.35rem);
    font-weight: var(--font-peso-medium);
    line-height: 1.2;
    letter-spacing: 0.01em;
}

.doc-card__title a {
    transition: opacity var(--transizione);
}

.doc-card__title a:hover {
    opacity: 0.7;
}

.doc-card__director {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--colore-muted);
}

.doc-card__actions {
    display: flex;
    flex-wrap: wrap;
    gap: clamp(0.8rem, 1.5vw, 1.2rem);
    margin-top: 0.5rem;
}


/* --- 13.5 METHOD --- */

.doc-method {
    padding: clamp(5rem, 10vw, 10rem) 0;
    border-top: 1px solid rgba(255, 255, 255, 0.06);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.doc-method__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.doc-method__label {
    display: block;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--colore-muted);
    margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

.doc-method__text {
    max-width: 700px;
    margin: 0;
    padding: 0;
    border: none;
}

.doc-method__text p {
    font-size: clamp(1.15rem, 1.8vw, 1.5rem);
    font-weight: var(--font-peso-light);
    line-height: 1.5;
    color: rgba(255, 255, 255, 0.85);
}


/* --- 13.6 OTHER WORKS (Lista tipografica) --- */

.doc-other {
    padding: clamp(4rem, 8vw, 8rem) 0;
}

.doc-other__label {
    display: block;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--colore-muted);
    margin-bottom: clamp(2rem, 4vw, 3rem);
}

/* Singola riga lista */
.doc-list-item {
    position: relative;
    overflow: hidden;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    padding: clamp(1.2rem, 2vw, 1.8rem) 0;
    transition: background var(--transizione);
}

.doc-list-item:last-child {
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

/* Contenitore frame di sfondo — nascosto di default, appare su hover */
.doc-list-item__bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    z-index: 0;
    pointer-events: none;
    transition: opacity 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    will-change: opacity, transform;
    transform-origin: center;
}

/* Classe aggiunta da JS su mouseenter */
.doc-list-item__bg.is-visible {
    opacity: 0.4;
}

/* Ogni frame è sovrapposto — solo quello .is-active è visibile.
   Transizione breve (0.18s) per crossfade fluido senza ritardo percepibile. */
.doc-list-item__bg-img {
    position: absolute;
    top: 0; left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: brightness(0.55) saturate(0.7);
    opacity: 0;
    transition: opacity 0.18s ease;
    will-change: opacity;
}

/* Frame attivo (gestito da JS al mousemove X) */
.doc-list-item__bg-img.is-active {
    opacity: 0.15;
}

/* Contenuto testuale — sempre sopra l'immagine */
.doc-list-item__content {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* Riga principale: titolo + anno */
.doc-list-item__row-main {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
}

.doc-list-item__title {
    font-size: clamp(1.1rem, 1.6vw, 1.45rem);
    font-weight: var(--font-peso-medium);
    line-height: 1.2;
    letter-spacing: 0.01em;
    transition: opacity var(--transizione);
}

.doc-list-item__title a {
    transition: opacity var(--transizione);
}

.doc-list-item:hover .doc-list-item__title a {
    opacity: 0.9;
}

.doc-list-item__year {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--colore-muted);
    white-space: nowrap;
    flex-shrink: 0;
}

/* Riga secondaria: tag + regista + azioni */
.doc-list-item__row-meta {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.doc-list-item__left {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}

.doc-list-item__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.doc-list-item__director {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--colore-muted);
}

.doc-list-item__actions {
    display: flex;
    flex-wrap: wrap;
    gap: clamp(0.8rem, 1.5vw, 1.2rem);
}


/* --- 13.7 COLLABORATIONS --- */

.doc-collab {
    padding: clamp(4rem, 8vw, 7rem) 0;
    border-top: 1px solid rgba(255, 255, 255, 0.06);
}

.doc-collab__label {
    display: block;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--colore-muted);
    margin-bottom: clamp(1.5rem, 3vw, 2rem);
}

.doc-collab__layout {
    display: flex;
    flex-direction: column;
    gap: clamp(1.5rem, 3vw, 2rem);
}

.doc-collab__layout.doc-collab--reversed {
    flex-direction: row-reverse;
}

.doc-collab__text {
    font-size: clamp(1rem, 1.4vw, 1.2rem);
    font-weight: var(--font-peso-light);
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.75);
    max-width: 600px;
}

.doc-collab__cta {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-size: clamp(0.8rem, 0.9vw, 0.9rem);
    font-weight: var(--font-peso-medium);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--colore-testo);
    transition: opacity var(--transizione);
}

.doc-collab__cta:hover {
    opacity: 0.7;
}

.doc-collab__cta .doc-btn__arrow {
    transition: transform var(--transizione);
}

.doc-collab__cta:hover .doc-btn__arrow {
    transform: translate(2px, -2px);
}


/* --- 13.8 ARCHIVE LINK --- */

.doc-archive-link {
    padding: clamp(3rem, 5vw, 5rem) 0 clamp(5rem, 8vw, 8rem);
}

.doc-archive-link__link {
    display: inline-flex;
    align-items: center;
    gap: 0.8rem;
    font-size: clamp(0.85rem, 1vw, 1rem);
    font-weight: var(--font-peso-medium);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--colore-muted);
    transition: color var(--transizione);
}

.doc-archive-link__link:hover {
    color: var(--colore-testo);
}

.doc-archive-link__arrow {
    font-size: 1.3em;
    transition: transform var(--transizione);
}

.doc-archive-link__link:hover .doc-archive-link__arrow {
    transform: translateX(5px);
}


/* ==========================================================================
   END PAGINA DOCUMENTARY
   ========================================================================== */


/* --- DESKTOP (1200px+) — Navbar completa visibile --- */
@media (min-width: 1200px) {

    .navbar__inner {
        display: grid;
        grid-template-columns: minmax(max-content, 1fr) auto minmax(max-content, 1fr);
        align-items: center;
        column-gap: clamp(2rem, 4vw, 5rem);
        max-width: none;
        width: 100%;
    }

    .navbar__logo {
        grid-column: 1;
        justify-self: start;
    }

    .navbar__menu {
        grid-column: 2;
        position: static;
        top: auto;
        left: auto;
        transform: none;
        justify-self: center;
    }

    .navbar__extra {
        grid-column: 3;
        justify-self: end;
    }

    /* Mostra menu centrale e area destra */
    .navbar__menu {
        display: flex;
    }

    .navbar__extra {
        display: flex;
    }

    /* Nascondi hamburger */
    .navbar__burger {
        display: none;
    }
}


/* ==========================================================================
   14. RESPONSIVE — Pagina Documentary
   ==========================================================================
   Breakpoint:
   - 768px:   Tablet — Editorial Note a due colonne, card orizzontali
   - 1024px:  Desktop — Featured layout orizzontale, lista hover attivo
   ========================================================================== */

/* --- TABLET (768px+) — Documentary --- */
@media (min-width: 768px) {

    /* Editorial Note: due colonne 60/40 */
    .doc-editorial__columns {
        flex-direction: row;
        gap: clamp(2rem, 5vw, 4rem);
    }

    .doc-editorial__main {
        flex: 3;
    }

    .doc-editorial__aside {
        flex: 2;
    }

    /* Card Selected: layout orizzontale 2/3 + 1/3.
       align-items: flex-start — il media detta l'altezza con il suo 3:2,
       il testo si posiziona in alto senza essere costretto ad allungarsi. */
    .doc-card {
        flex-direction: row;
        align-items: flex-start;
    }

    .doc-card__media {
        flex: 2;           /* ~2/3 della larghezza */
        min-width: 0;
        /* aspect-ratio 3:2 già definito nel CSS base — viene rispettato */
    }

    .doc-card__content {
        flex: 1;           /* ~1/3 della larghezza */
        min-width: 0;
        padding: clamp(0.8rem, 1.5vw, 1.2rem) 0 clamp(0.8rem, 1.5vw, 1.2rem) clamp(1.2rem, 2vw, 2rem);
    }

    /* Card reverse: immagine a destra, padding invertito */
    .doc-card--reverse {
        flex-direction: row-reverse;
    }

    .doc-card--reverse .doc-card__content {
        padding: clamp(0.8rem, 1.5vw, 1.2rem) clamp(1.2rem, 2vw, 2rem) clamp(0.8rem, 1.5vw, 1.2rem) 0;
    }

    /* Other Works: meta row orizzontale */
    .doc-list-item__row-meta {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }

    /* Collaborations: layout orizzontale */
    .doc-collab__layout {
        flex-direction: row;
        align-items: flex-end;
        justify-content: space-between;
    }
}


/* --- DESKTOP (1024px+) — Documentary con Featured affiancato --- */
@media (min-width: 1024px) {

    /* Featured: layout orizzontale (media + info affiancati) */
    .doc-featured__layout {
        flex-direction: row;
        align-items: stretch;
    }

    .doc-featured__media {
        flex: 3;       /* ~60% */
        min-width: 0;
        aspect-ratio: auto;
        min-height: 360px;
    }

    .doc-featured__info {
        flex: 2;       /* ~40% */
        padding: clamp(1rem, 2vw, 1.5rem) 0 clamp(1rem, 2vw, 1.5rem) clamp(1.5rem, 3vw, 2.5rem);
        justify-content: center;
    }

    /* Other Works: padding orizzontale su desktop */
    .doc-list-item {
        padding-left: clamp(0.8rem, 1.5vw, 1.5rem);
        padding-right: clamp(0.8rem, 1.5vw, 1.5rem);
    }
}


/* --- Disabilita hover video e frame su touch device --- */
@media (hover: none) {
    .doc-list-item__bg {
        display: none;
    }
    .doc-featured__video,
    .doc-card__video {
        display: none;
    }
}


/* ==========================================================================
   15. PAGINA OPERA — Scroll orizzontale con snap
   ==========================================================================
   Struttura:
   - .opera            → contenitore full-viewport
   - .opera__track     → flex row, overflow-x: auto, scroll-snap
   - .opera__slide     → ogni sezione, 100vw × altezza disponibile
   - .opera__nav       → barra fissa in basso con punti navigazione
   ========================================================================== */

/* Variabili specifiche per la pagina opera */
.opera {
    --opera-nav-h: 56px;        /* Altezza barra navigazione in basso */
    /* Area utile per il contenuto: viewport meno navbar e dots (entrambi overlay) */
    --opera-slide-h: calc(100vh - var(--navbar-altezza) - var(--opera-nav-h));

    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    overflow: hidden;
    background: var(--colore-sfondo);
}

/* Track — scroll-snap nativo. Il JS gestisce solo i dot e la protezione
   anti-salto per l'inerzia trackpad Mac. */
.opera__track {
    display: flex;
    width: 100%;
    height: 100%;                   /* Occupa tutta l'altezza di .opera */
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
.opera__track::-webkit-scrollbar { display: none; }

/* Singola slide — occupa l'intera viewport, la nav dots e overlay sopra */
.opera__slide {
    flex: 0 0 100vw;
    width: 100vw;
    height: 100%;
    scroll-snap-align: start;
    scroll-snap-stop: always;   /* Impedisce di saltare slide — il fix chiave */
    overflow: hidden;
    position: relative;
}



/* Contenuto interno slide. NON usa align-items:center (bug con overflow scroll).
   Ogni slide gestisce il proprio centraggio internamente.
   Padding-top: compensa la navbar trasparente (overlay sopra).
   Padding-bottom: compensa la barra dots (overlay sotto). */
.opera__slide-inner {
    width: 100%;
    height: 100%;
    padding-top: var(--navbar-altezza);
    padding-bottom: var(--opera-nav-h);
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
.opera__slide-inner::-webkit-scrollbar {
    display: none;
}


/* --- 15.0b NAVBAR TRASPARENTE SULLA PAGINA OPERA ---
   Lo sfondo di tutte le slide e nero, quindi la navbar puo restare
   sempre trasparente. Il contenitore .opera parte da top:0 e occupa
   l'intera viewport. La navbar e i dots sono overlay sopra le slide. */
body.single-opera .navbar {
    background: transparent !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    border-bottom-color: transparent !important;
}

/* Dots nav: completamente trasparente (la slide sotto traspare) */
.opera .opera__nav {
    background: transparent;
}

/* --- 15.1 BARRA NAVIGAZIONE IN BASSO --- */

.opera__nav {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: var(--opera-nav-h);
    display: flex;
    align-items: flex-start;       /* Pallini nella parte alta della nav */
    padding: 10px var(--padding-contenitore) 0;  /* Spazio sotto per le label */
    z-index: 10;
    gap: clamp(1rem, 2vw, 2rem);
}

.opera__nav-inner {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1;   /* Prende tutto lo spazio a destra del tasto Archivio */
    min-width: 0;
}

/* Linea orizzontale che attraversa TUTTO lo schermo, passando nel centro
   esatto dei pallini. Va da bordo a bordo (left:0 width:100% sulla nav). */
.opera__nav-line {
    position: absolute;
    left: 0;
    width: 100%;
    height: 1px;
    background: rgba(255, 255, 255, 0.1);
    top: 50%;
    transform: translateY(-50%);
    z-index: 0;
    /* Sfuma la linea ai bordi per eleganza */
    mask-image: linear-gradient(to right, transparent 0%, white 3%, white 97%, transparent 100%);
    -webkit-mask-image: linear-gradient(to right, transparent 0%, white 3%, white 97%, transparent 100%);
}

/* Contenitore punti — sopra la linea */
.opera__nav-dots {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    position: relative;
    z-index: 1;
}

/* Singolo punto — i pallini sono SEMPRE equidistanti.
   La label è posizionata assolutamente sotto, non influenza il layout. */
.opera__nav-dot {
    display: flex;
    flex-direction: column;
    align-items: center;
    background: none;
    border: none;
    cursor: pointer;
    padding: 4px 2px;
    position: relative;
}

/* Pallino spento — piccolo (5px), discreto, la linea lo attraversa.
   Nessun box-shadow: la linea passa ATTRAVERSO il pallino, visibile dietro. */
.opera__nav-dot-point {
    display: block;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.18);
    border: 1px solid rgba(255, 255, 255, 0.12);
    transition: all 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    position: relative;
    z-index: 2;
}

/* Pallino attivo — più grande, bianco pieno, con anello nero per bucare la linea */
.opera__nav-dot.is-active .opera__nav-dot-point {
    width: 9px;
    height: 9px;
    background: var(--colore-testo);
    border-color: var(--colore-testo);
    box-shadow: 0 0 0 3px var(--colore-sfondo);
}

.opera__nav-dot:hover .opera__nav-dot-point {
    width: 7px;
    height: 7px;
    background: rgba(255, 255, 255, 0.45);
    border-color: rgba(255, 255, 255, 0.35);
}

/* Label del punto — POSIZIONATA ASSOLUTAMENTE sotto il pallino.
   Non influenza il layout dei pallini = equidistanti SEMPRE.
   Il gap tra linea e label è controllato da top. */
.opera__nav-dot-label {
    position: absolute;
    top: calc(100% + 3px);  /* Staccata dal pallino, ma non troppo in basso */
    left: 50%;
    transform: translateX(-50%);
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.2);
    white-space: nowrap;
    transition: color 0.3s ease, opacity 0.3s ease;
    opacity: 0;
    pointer-events: none;
}

.opera__nav-dot.is-active .opera__nav-dot-label {
    color: rgba(255, 255, 255, 0.7);
}

/* Modalità label — gestite da JS in base a overlap detection.
   I pallini NON si muovono mai. Solo la visibilità delle label cambia. */

/* Tutte visibili */
.opera__nav--labels-all .opera__nav-dot-label {
    opacity: 1;
}

/* Solo label attiva visibile */
.opera__nav--labels-active .opera__nav-dot-label {
    opacity: 0;
}
.opera__nav--labels-active .opera__nav-dot.is-active .opera__nav-dot-label {
    opacity: 1;
}

/* Tasto ritorno archivio — a sinistra, alzato rispetto ai pallini
   per evitare sovrapposizione con le label delle slide. */
.opera__nav-back {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--colore-muted);
    transition: color var(--transizione);
    flex-shrink: 0;
    white-space: nowrap;
    margin-top: -6px;  /* Alza sopra la linea dei pallini */
}

.opera__nav-back:hover {
    color: var(--colore-testo);
}

.opera__nav-back-arrow {
    font-size: 1.2em;
    transition: transform var(--transizione);
}

.opera__nav-back:hover .opera__nav-back-arrow {
    transform: translateX(-3px);
}

/* Spacer destro — stessa larghezza del tasto Archivio per bilanciare */
.opera__nav-spacer {
    flex-shrink: 0;
    width: 100px; /* Approssima la larghezza di "← ARCHIVIO" */
}


/* --- 15.2 SLIDE: COVER --- */

/* Mobile: colonna verticale (locandina sopra, testo sotto con scroll).
   Desktop: locandina a sinistra, testo + scheda tecnica a destra. */
.slide-cover {
    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: clamp(1.5rem, 3vw, 3rem);
    gap: clamp(1.5rem, 3vw, 2.5rem);
}

/* Con locandina → layout orizzontale su desktop */
.slide-cover--with-poster {
    flex-direction: column;
}

/* Locandina */
.slide-cover__poster {
    flex-shrink: 0;
    max-height: 60vh;
    display: flex;
    align-items: center;
}

.slide-cover__poster-img {
    max-height: 55vh;
    max-width: min(280px, 40vw);
    width: auto;
    height: auto;
    object-fit: contain;
    box-shadow: 0 8px 40px rgba(0, 0, 0, 0.5);
}

/* Contenuto testo */
.slide-cover__content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
    gap: clamp(0.5rem, 1vw, 0.8rem);
    max-width: 500px;
    overflow-y: auto;
    max-height: 80vh;
    scrollbar-width: none;
}
.slide-cover__content::-webkit-scrollbar { display: none; }

/* Se non c'è locandina → centrare */
.slide-cover:not(.slide-cover--with-poster) .slide-cover__content {
    align-items: center;
    text-align: center;
    max-width: 700px;
}

.slide-cover__title {
    font-size: clamp(1.8rem, 3.5vw, 3.2rem);
    font-weight: var(--font-peso-medium);
    letter-spacing: 0.02em;
    line-height: 1.05;
}

.slide-cover__title-img {
    max-width: min(350px, 50vw);
    height: auto;
}

.slide-cover__logline {
    font-size: clamp(0.88rem, 1.1vw, 1.05rem);
    font-weight: var(--font-peso-light);
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.65);
}

.slide-cover__meta {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--colore-muted);
}

.slide-cover__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.slide-cover__tag {
    display: inline-block;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-medium);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--colore-muted);
    border: 1px solid rgba(255, 255, 255, 0.12);
    padding: 0.25em 0.7em;
    white-space: nowrap;
}

.slide-cover__director {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--colore-muted);
}

/* Scheda tecnica rimossa dalla cover — ora sta nella slide Sinossi */


/* --- 15.3 SLIDE: VIDEO / PLAYER ---
 *
 * Variabili di spacing (area utile = viewport meno navbar e nav bar):
 * --sv-pad-top:    spazio minimo dal bordo superiore (rispetta navbar)
 * --sv-pad-bottom: spazio minimo dal bordo inferiore (rispetta nav dots)
 * --sv-pad-x:     spazio laterale (ridotto su mobile, generoso su desktop)
 * --sv-max-w:     larghezza massima del content (limita su schermi enormi)
 * ------------------------------------------------------------------- */

.slide-video {
    --sv-pad-top:    clamp(0.75rem, 1.8vh, 1.8rem);
    --sv-pad-bottom: clamp(0.75rem, 1.5vh, 1.5rem);
    --sv-pad-x:      clamp(1rem, 3vw, 2.5rem);
    --sv-max-w:      min(80vw, 1280px);

    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    /* Padding asimmetrico leggero: centro ottico ~45/55 */
    padding: var(--sv-pad-top) var(--sv-pad-x) calc(var(--sv-pad-bottom) + 3vh);
    box-sizing: border-box;
    overflow: hidden;
}

/* ---- Background hero ----
   Copre l'intera slide con object-fit:cover.
   Croppa dinamicamente qualsiasi aspect ratio (16:9, 2.39:1, ecc.). */
.slide-video__bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    opacity: 0.25;
    filter: blur(4px);
    z-index: 0;
    pointer-events: none;
}

/* ---- Slide con background: estende il bg edge-to-edge (dietro navbar + dots) ----
   Margin negativo annulla il padding di .opera__slide-inner in entrambe
   le direzioni, l'altezza compensa.
   Il padding-top/bottom proprio riaggiunge lo spazio per il contenuto.
   Risultato: il bg copre l'intera viewport, il contenuto resta confinato. */
.slide-video--has-bg {
    margin-top: calc(-1 * var(--navbar-altezza));
    margin-bottom: calc(-1 * var(--opera-nav-h));
    padding-top: calc(var(--navbar-altezza) + var(--sv-pad-top));
    padding-bottom: calc(var(--opera-nav-h) + var(--sv-pad-bottom) + 3vh);
    height: calc(100% + var(--navbar-altezza) + var(--opera-nav-h));
}

/* ---- Contenuto centrato ----
   Centro ottico (40/60): margin-top:auto spinge dal top-padding,
   margin-bottom:auto con peso 1.5x spinge piu dal basso.
   Risultato: il blocco sta leggermente sopra il centro geometrico. */
.slide-video__content {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    max-width: var(--sv-max-w);
    gap: clamp(0.4rem, 0.8vw, 0.65rem);
}

/* Label slide — visibile solo su mobile */
.slide-video__label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--colore-muted);
}

@media (min-width: 768px) {
    .slide-video__label {
        display: none;
    }
}

/* ---- Gruppo player: wrapper che contiene top-row + player ----
   La larghezza e guidata dal player (aspect-ratio 16:9 + max-width 900px).
   La top-row prende width:100% del gruppo, quindi si allinea automaticamente
   ai bordi del video a qualsiasi dimensione di finestra. */
/* Il player-group contiene top-row + player. La larghezza e ~80% della slide
   (stessa logica del vecchio fullwidth). Il player determina l'aspect-ratio. */
.slide-video__player-group {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    width: min(100%, 80vw);
    max-width: 1280px;
    max-height: 100%;
    gap: clamp(0.3rem, 0.6vw, 0.5rem);
}

/* ---- Riga superiore: titolo sx | icone dx ----
   Desktop (>=1200px): vincolata al player-group (allineata ai bordi del video).
   Mobile  (<1200px):  si svincola e si allarga quasi ai margini dello schermo. */
.slide-video__top-row {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 1rem;
}

/* La top-row ha una min-width per non rimpicciolirsi troppo su video stretti
   (9:16, 4:3). Quando il player-group e piu stretto della min-width, la top-row
   sborda e overflow:visible la rende visibile. */
.slide-video__player-group {
    overflow: visible;
}

.slide-video__top-row {
    min-width: min(480px, calc(100vw - 2 * var(--sv-pad-x)));
    align-self: center;
    flex-shrink: 0;
}

/* Mobile (<1200px, hamburger): top-row occupa quasi tutta la larghezza schermo */
@media (max-width: 1199px) {
    .slide-video__top-row {
        width: calc(100vw - 2 * var(--sv-pad-x));
    }
}

/* Titolo PNG — proporzionato al player e alle icone */
.slide-video__title-side {
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: center;
}

.slide-video__title-img {
    display: block;
    width: clamp(140px, 50%, 450px);
    height: auto;
    max-height: clamp(60px, 8vw, 100px);
    object-fit: contain;
    object-position: left bottom;
}

/* Titolo testuale (non immagine) */
.slide-video__title-text {
    display: block;
    font-size: clamp(1.4rem, 3vw, 2.4rem);
    font-weight: var(--font-peso-semibold, 600);
    letter-spacing: 0.04em;
    color: var(--colore-testo);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.1;
}

/* Icone distribuzione — a destra, con label sopra */
.slide-video__icons-wrap {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.3em;
}

.slide-video__icons-label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.08em;
    color: var(--colore-muted);
    text-transform: uppercase;
}

.slide-video__icons {
    display: flex;
    align-items: center;
    gap: clamp(0.4rem, 0.8vw, 0.7rem);
}

.slide-video__icon-link {
    display: inline-flex;
    color: var(--colore-testo);
    opacity: 0.55;
    transition: opacity 0.3s ease, transform 0.2s ease;
    text-decoration: none;
}

.slide-video__icon-link:hover {
    opacity: 1;
    transform: scale(1.1);
}

.slide-video__icon {
    width: clamp(28px, 4vw, 42px);
    height: clamp(28px, 4vw, 42px);
}

.slide-video__icon svg {
    width: 100%;
    height: 100%;
}

.slide-video__icon img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

/* ---- Player dentro la slide ----
   width:100% del gruppo. L'aspect-ratio (default 16:9, aggiornato dal JS
   dopo loadedmetadata) determina l'altezza. max-height limita i video alti. */
.slide-video .opera-player {
    width: 100%;
    max-width: none;
    max-height: calc(var(--opera-slide-h, 70vh) - 4rem);
}

/* ---- Responsive: mobile verticale ----
   Margini laterali ridotti, il player sfrutta piu larghezza */
@media (max-width: 600px) {
    .slide-video {
        --sv-pad-x: 0.75rem;
        --sv-max-w: 100%;
    }

    .slide-video__title-img {
        width: clamp(120px, 50%, 300px);
        max-height: 60px;
    }

    .slide-video__icon {
        width: 26px;
        height: 26px;
    }
}

/* ---- Responsive: tablet ---- */
@media (min-width: 601px) and (max-width: 1024px) {
    .slide-video {
        --sv-pad-x: 1.25rem;
        --sv-max-w: 90vw;
    }
}

/* ---- Schermi enormi (>2000px): limita il player, non farlo gigantesco ---- */
@media (min-width: 2000px) {
    .slide-video {
        --sv-max-w: 1400px;
    }
}

/* Player custom — aspect-ratio determinato dal contenuto.
   Per video nativi (.mp4): il tag <video> determina le proporzioni.
   Per embed (iframe): aspect-ratio 16:9 sull'iframe.
   Il player non forza nessun aspect-ratio, lascia che il contenuto lo definisca. */
.opera-player {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;  /* Default 16:9, sovrascrivibile via JS dopo loadedmetadata */
    background: #0a0a0a;
    overflow: hidden;
    cursor: pointer;
    outline: none;
}

.opera-player__poster {
    position: absolute;
    inset: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: opacity 0.5s ease;
}

.opera-player__poster.is-hidden {
    opacity: 0;
    pointer-events: none;
}

.opera-player__poster-img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

/* Grande bottone play centrato */
.opera-player__play {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 3;
    background: none;
    border: none;
    cursor: pointer;
    transition: transform 0.3s ease, opacity 0.3s ease;
}

.opera-player__play:hover {
    transform: translate(-50%, -50%) scale(1.08);
}

.opera-player__play-icon {
    width: clamp(60px, 8vw, 80px);
    height: clamp(60px, 8vw, 80px);
}

/* Video — object-fit:contain per non tagliare video non-16:9 */
.opera-player__video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    z-index: 1;
}

/* Iframe embed — copre l'intero player */
.opera-player__iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 5;
    border: none;
}

/* Contenitore embed */
.opera-player__embed-wrap {
    position: absolute;
    inset: 0;
    z-index: 5;
}

/* Spinner di caricamento (buffering) */
.opera-player__loader {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 6;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.3s ease;
}

.opera-player.is-loading .opera-player__loader {
    opacity: 1;
}

.opera-player__spinner {
    width: 40px;
    height: 40px;
    border: 2px solid rgba(255, 255, 255, 0.2);
    border-top-color: rgba(255, 255, 255, 0.8);
    border-radius: 50%;
    animation: operaSpinner 0.8s linear infinite;
}

@keyframes operaSpinner {
    to { transform: rotate(360deg); }
}

/* Controlli minimali — barra progresso sottile + mute */
.opera-player__controls {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    z-index: 4;
    opacity: 0;
    transition: opacity 0.3s ease;
    background: linear-gradient(to top, rgba(0,0,0,0.4), transparent);
}

/* Controlli appaiono SOLO quando il video è in play — non su hover del poster */
.opera-player.is-playing .opera-player__controls {
    opacity: 1;
}

.opera-player.is-playing:not(:hover) .opera-player__controls {
    opacity: 0;
    transition: opacity 1.5s ease 2s; /* sfuma dopo 2s se non muovi il mouse */
}

.opera-player__progress-wrap {
    flex: 1;
    height: 3px;
    background: rgba(255, 255, 255, 0.15);
    cursor: pointer;
    border-radius: 2px;
    overflow: hidden;
}

.opera-player__progress {
    width: 0%;
    height: 100%;
    background: var(--colore-testo);
    transition: width 0.15s linear;
}

.opera-player__mute {
    flex-shrink: 0;
    background: none;
    border: none;
    cursor: pointer;
    padding: 4px;
    opacity: 0.7;
    transition: opacity 0.2s ease;
}

.opera-player__mute:hover {
    opacity: 1;
}

.opera-player__mute-icon {
    width: 20px;
    height: 20px;
}

/* Fullscreen button */
.opera-player__fullscreen {
    flex-shrink: 0;
    background: none;
    border: none;
    cursor: pointer;
    padding: 4px;
    opacity: 0.7;
    transition: opacity 0.2s ease;
}

.opera-player__fullscreen:hover {
    opacity: 1;
}

.opera-player__fullscreen-icon {
    width: 20px;
    height: 20px;
}

/* Quando il video è muted, nasconde le onde sonore nell'icona */
.opera-player.is-muted .opera-player__mute-waves {
    display: none;
}

/* Fullscreen mode: player occupa tutto lo schermo, sfondo nero */
.opera-player:fullscreen,
.opera-player:-webkit-full-screen {
    width: 100vw;
    height: 100vh;
    max-width: none;
    max-height: none;
    background: #000;
}

.opera-player:fullscreen .opera-player__video,
.opera-player:-webkit-full-screen .opera-player__video {
    object-fit: contain;
}


/* --- 15.4 SLIDE: SYNOPSIS / STATEMENT --- */

/* Centrato verticalmente E orizzontalmente nella slide.
   Con scheda: sinossi a sx + scheda a dx, il centro visivo è la colonna vuota. */
.slide-synopsis {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: clamp(2rem, 4vw, 4rem) clamp(3rem, 6vw, 6rem);
    gap: clamp(2rem, 5vw, 5rem);
}

.slide-synopsis__main {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: clamp(1rem, 2vw, 1.5rem);
    max-width: 650px;
    overflow-y: auto;
    max-height: 75vh;
    scrollbar-width: none;
}
.slide-synopsis__main::-webkit-scrollbar { display: none; }

/* Con foto → testo allineato a sinistra */
.slide-synopsis--with-photo .slide-synopsis__main {
    align-items: flex-start;
    text-align: left;
    max-width: 550px;
}

.slide-synopsis__label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--colore-muted);
}

.slide-synopsis__text {
    font-size: clamp(1rem, 1.4vw, 1.25rem);
    font-weight: var(--font-peso-light);
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.85);
}

.slide-synopsis__text p {
    margin-bottom: 1em;
}

.slide-synopsis__text p:last-child {
    margin-bottom: 0;
}

.slide-synopsis__author {
    font-size: var(--testo-sm);
    font-weight: var(--font-peso-regular);
    color: var(--colore-muted);
    letter-spacing: 0.05em;
}

/* Scheda tecnica integrata nella sinossi */
.slide-synopsis__scheda {
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
    min-width: 240px;
    max-width: 320px;
    padding-left: clamp(1.5rem, 3vw, 3rem);
    border-left: 1px solid rgba(255, 255, 255, 0.08);
    align-self: center;
}

.slide-synopsis__scheda-title {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-medium);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.4);
}

.slide-synopsis__scheda-grid {
    display: grid;
    grid-template-columns: auto 1fr;
    row-gap: 0.3rem;
}

.slide-synopsis__scheda-item {
    display: contents;
}

.slide-synopsis__scheda-item dt {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--colore-muted);
    padding-right: 1.5rem;
    white-space: nowrap;
    text-align: right;   /* Colonna sinistra giustificata a destra */
}

.slide-synopsis__scheda-item dd {
    font-size: var(--testo-base);
    font-weight: var(--font-peso-regular);
    color: rgba(255, 255, 255, 0.75);
    margin: 0;
}

.slide-synopsis__download {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-medium);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--colore-muted);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 0.5em 1em;
    transition: color var(--transizione), border-color var(--transizione);
    margin-top: 0.5rem;
}

.slide-synopsis__download:hover {
    color: var(--colore-testo);
    border-color: rgba(255, 255, 255, 0.3);
}

/* Foto regista */
.slide-synopsis__photo {
    flex-shrink: 0;
    display: none; /* Nascosta su mobile, visibile su desktop */
}

.slide-synopsis__photo-img {
    max-height: 50vh;
    max-width: 300px;
    width: auto;
    object-fit: cover;
    opacity: 0.85;
    filter: saturate(0.8);
}


/* --- 15.5 SLIDE: TECHNICAL --- */

.slide-technical {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--spazio-lg) var(--spazio-md);
    gap: clamp(1.5rem, 3vw, 2.5rem);
}

.slide-technical__label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--colore-muted);
}

.slide-technical__grid {
    display: grid;
    grid-template-columns: auto 1fr;
    row-gap: 0.5rem;
    column-gap: 0;
    max-width: 500px;
    width: 100%;
}

.slide-technical__item {
    display: contents;
}

.slide-technical__key {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--colore-muted);
    padding-right: 1.5rem;
    white-space: nowrap;
    align-self: baseline;
}

.slide-technical__val {
    font-size: clamp(0.9rem, 1vw, 1rem);
    font-weight: var(--font-peso-regular);
    color: var(--colore-testo);
    margin: 0;
    align-self: baseline;
}

.slide-technical__download {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-size: var(--testo-sm);
    font-weight: var(--font-peso-medium);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--colore-muted);
    border: 1px solid rgba(255, 255, 255, 0.12);
    padding: 0.6em 1.2em;
    transition: color var(--transizione), border-color var(--transizione);
}

.slide-technical__download:hover {
    color: var(--colore-testo);
    border-color: rgba(255, 255, 255, 0.4);
}


/* --- 15.6 SLIDE: GALLERY (v3.0) ---
   3 layout: showcase | masonry | filmstrip + lightbox condiviso.
   Prefisso classi: .sgal- (slide gallery).
   ------------------------------------------------------------ */

/* --- Contenitore base --- */
.slide-gallery {
    width: 100%;
    height: 100%;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Masonry ha bisogno di scroll verticale per le molte foto */
.slide-gallery--masonry {
    height: auto;
    max-height: 80vh;
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: thin;
    scrollbar-color: rgba(255, 255, 255, 0.1) transparent;
    align-items: flex-start;
    justify-content: flex-start;
    padding: 1rem 0;
}
.slide-gallery--masonry::-webkit-scrollbar {
    width: 4px;
}
.slide-gallery--masonry::-webkit-scrollbar-track {
    background: transparent;
}
.slide-gallery--masonry::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.1);
    border-radius: 2px;
}

.sgal-empty {
    color: var(--colore-muted);
    font-size: var(--testo-sm);
    text-align: center;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}


/* =============== SHOWCASE GALLERY ===============
   Central block with:
   - Large image on top (proportional, responsive)
   - Thumbnails below (scrollable, full width)
   Dynamically resizes to fit available space
   ============================================== */

/* Container wrapper */
.slide-gallery--showcase {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 1rem 0;
}

.showcase {
    width: 100%;
    max-width: 1200px;
    max-height: 100%;
    padding: 0 1rem;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
}

/* ========== HEADER ========== */
.showcase__header {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    padding: 0.75rem 0;
    margin-bottom: 0.5rem;
}

.showcase__info-btn {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    background: none;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 4px;
    color: rgba(255, 255, 255, 0.35);
    font-size: var(--testo-xs);
    font-family: inherit;
    letter-spacing: 0.05em;
    cursor: pointer;
    transition: all 0.25s ease;
}

.showcase__info-btn:hover {
    border-color: rgba(255, 255, 255, 0.4);
    color: rgba(255, 255, 255, 0.7);
}

.showcase__info-btn[aria-expanded="true"] {
    border-color: rgba(255, 255, 255, 0.5);
    color: rgba(255, 255, 255, 0.9);
}

.showcase__info-btn svg {
    width: 14px;
    height: 14px;
    display: block;
}

/* ========== VIEWER ========== */
.showcase__viewer {
    position: relative;
    width: 100%;
    aspect-ratio: 4 / 3;
    flex: 1 1 auto;
    min-height: 0;
    margin-bottom: 0.75rem;
    cursor: pointer;
    background: rgba(0, 0, 0, 0.3);
    overflow: hidden; /* sicurezza: isola le img absolute dal layout esterno */
}

.showcase__image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
    opacity: 0;
    transition: opacity 0.4s ease;
    pointer-events: none;
}

.showcase__image.is-active {
    opacity: 1;
    pointer-events: auto;
}

/* ========== THUMBNAILS STRIP ========== */
.showcase__strip {
    display: flex;
    gap: 8px;
    width: 100%;
    flex-shrink: 0;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: thin;
    scrollbar-color: rgba(255, 255, 255, 0.2) transparent;
    padding: 0;
    margin: 0;
}

.showcase__thumb {
    flex: 0 0 auto;
    width: 100px;
    aspect-ratio: 4 / 3;
    padding: 0;
    border: 2px solid rgba(255, 255, 255, 0.1);
    background: none;
    cursor: pointer;
    opacity: 0.5;
    transition: opacity 0.3s ease, border-color 0.3s ease;
}

.showcase__thumb:hover {
    opacity: 0.8;
    border-color: rgba(255, 255, 255, 0.3);
}

.showcase__thumb.is-active {
    opacity: 1;
    border-color: rgba(255, 255, 255, 0.8);
}

.showcase__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}

/* ========== INFO PANEL ========== */
.showcase {
    position: relative;
}

/* Desktop (768px+): laterale a destra */
.showcase__info-panel {
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    width: clamp(220px, 28vw, 420px);
    background: linear-gradient(135deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.5) 100%);
    backdrop-filter: blur(10px);
    border-left: 1px solid rgba(255,255,255,0.08);
    display: flex;
    flex-direction: column;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1),
                transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    transform: translateX(100%);
    z-index: 5;
}

.showcase.has-info .showcase__info-panel {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(0);
}

/* Content wrapper con scroll interno */
.showcase__info-content {
    flex: 1;
    overflow-y: auto;
    padding: clamp(1.5rem, 3vh, 2rem);
    display: flex;
    flex-direction: column;
}

/* Info item (uno visibile alla volta) */
.showcase__info-item {
    display: none;
}

.showcase__info-item.is-active {
    display: flex;
    flex-direction: column;
}

.showcase__info-title {
    font-size: clamp(16px, 3vw, 20px);
    font-weight: 600;
    color: rgba(255,255,255,0.9);
    margin: 0 0 1rem 0;
    line-height: 1.3;
}

.showcase__info-desc {
    font-size: var(--testo-sm);
    color: rgba(255,255,255,0.65);
    margin: 0 0 1.5rem 0;
    line-height: 1.6;
}

.showcase__info-meta {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin-top: auto;
}

.showcase__info-author,
.showcase__info-year,
.showcase__info-people {
    font-size: var(--testo-xs);
    color: rgba(255,255,255,0.4);
    letter-spacing: 0.05em;
    font-family: inherit;
}

/* ========== MOBILE / TABLET (<768px) ========== */
@media (max-width: 767px) {
    /* Info panel diventa overlay fullscreen */
    .showcase__info-panel {
        position: fixed;
        inset: 0;
        width: 100%;
        height: 100%;
        border-left: none;
        border-radius: 0;
        opacity: 0;
        pointer-events: none;
        transform: translateY(100%);
        transition: opacity 0.3s ease,
                    transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
        z-index: 100;
        background: rgba(0,0,0,0.9);
        backdrop-filter: blur(8px);
    }

    .showcase.has-info .showcase__info-panel {
        opacity: 1;
        pointer-events: auto;
        transform: translateY(0);
    }

    .showcase__info-content {
        padding: clamp(1rem, 4vh, 1.5rem);
        justify-content: flex-start;
        padding-top: clamp(2rem, 6vh, 3rem);
    }

    .showcase__info-title {
        font-size: clamp(18px, 5vw, 24px);
    }
}

/* =============== MASONRY ===============
   Griglia Pinterest: colonne con altezze libere.
   Scroll verticale dentro la slide.
   ======================================== */
.sgal-masonry {
    columns: 3;
    column-gap: clamp(8px, 1vw, 14px);
    padding: clamp(1rem, 2vw, 2rem);
    max-width: 1200px;
    margin: 0 auto;
}

.sgal-masonry__item {
    break-inside: avoid;
    margin-bottom: clamp(8px, 1vw, 14px);
    position: relative;
    cursor: pointer;
    overflow: hidden;
    border-radius: 3px;
}

.sgal-masonry__img {
    width: 100%;
    height: auto;
    display: block;
    transition: transform 0.4s ease;
}

.sgal-masonry__item:hover .sgal-masonry__img {
    transform: scale(1.03);
}

/* Titolo sotto l'immagine (opzionale, attivato dal backend) */
.sgal-masonry__title {
    display: block;
    padding: 6px 2px 0;
    font-size: var(--testo-xs);
    color: rgba(255,255,255,0.45);
    line-height: 1.3;
}

/* Responsive colonne */
@media (max-width: 1023px) {
    .sgal-masonry { columns: 2; }
}
@media (max-width: 600px) {
    .sgal-masonry { columns: 2; column-gap: 6px; padding: 0.5rem; }
    .sgal-masonry__item { margin-bottom: 6px; }
    .sgal-masonry__title { display: none; }
}

/* Griglia uniforme (opzione backend): foto allineate in CSS grid,
   ognuna mantiene le proprie proporzioni (nessun crop). */
.sgal-masonry--grid {
    columns: unset;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: clamp(8px, 1vw, 14px);
    align-items: center;
}

.sgal-masonry--grid .sgal-masonry__item {
    break-inside: auto;
    margin-bottom: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.sgal-masonry--grid .sgal-masonry__img {
    width: 100%;
    height: auto;
    object-fit: contain;
}


/* =============== FILMSTRIP ===============
   Carousel: shows prev/current/next with smooth transitions
   Preview laterali sempre visibili (prev 25%, current 50%, next 25%)
   Click navigation, NO scroll interference
   Info panel: right sidebar (desktop) or full overlay (mobile)
   ========================================== */

.sgal-filmstrip {
    height: 100%;
    display: flex;
    flex-direction: column;
    position: relative;
}

/* Header: info button area */
.sgal-filmstrip__header {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    padding: clamp(0.75rem, 2vh, 1.25rem) 0;
    z-index: 10;
}

/* Info toggle button */
.sgal-filmstrip__info-toggle {
    background: none;
    border: 1px solid rgba(255,255,255,0.18);
    border-radius: 4px;
    cursor: pointer;
    color: rgba(255,255,255,0.35);
    padding: 6px 12px;
    font-size: var(--testo-xs);
    font-family: inherit;
    letter-spacing: 0.05em;
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.sgal-filmstrip__info-toggle:hover {
    color: rgba(255,255,255,0.85);
    border-color: rgba(255,255,255,0.4);
}
.sgal-filmstrip__info-toggle[aria-expanded="true"] {
    color: rgba(255,255,255,0.9);
    border-color: rgba(255,255,255,0.5);
}
.sgal-filmstrip__info-toggle svg { display: block; width: 14px; height: 14px; }

/* Viewer: carousel container */
.sgal-filmstrip__viewer {
    flex: 1;
    min-height: 0;
    min-width: 0;
    display: flex;
    position: relative;
    overflow: hidden;
    align-items: center;
    justify-content: center;
}

/* Track: horizontal carousel */
.sgal-filmstrip__track {
    display: flex;
    flex-direction: row;
    height: 100%;
    width: auto;
    min-width: 100%;
    align-items: center;
    transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* Frame: full viewport width */
.sgal-filmstrip__frame {
    flex: 0 0 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.sgal-filmstrip__img {
    display: block;
    height: 100%;
    width: auto;
    max-height: 100%;
    object-fit: contain;
    margin: auto;
}

/* Footer: counter + navigation buttons */
.sgal-filmstrip__footer {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(1rem, 3vw, 2.5rem);
    flex-shrink: 0;
    padding: clamp(0.5rem, 1vh, 1rem) 0;
    z-index: 10;
}

.sgal-filmstrip__nav-btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(0, 0, 0, 0.3);
    border: none;
    cursor: pointer;
    color: rgba(255,255,255,0.5);
    padding: clamp(0.8rem, 2vw, 1.5rem);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
    flex-shrink: 0;
    z-index: 20;
    border-radius: 4px;
}
.sgal-filmstrip__nav-btn:hover {
    color: rgba(255,255,255,0.9);
    background: rgba(0, 0, 0, 0.5);
}
.sgal-filmstrip__nav-btn--prev {
    left: clamp(0.5rem, 2vw, 1.5rem);
}
.sgal-filmstrip__nav-btn--next {
    right: clamp(0.5rem, 2vw, 1.5rem);
}
.sgal-filmstrip__nav-btn svg {
    display: block;
    width: clamp(24px, 4vw, 48px);
    height: clamp(24px, 4vw, 48px);
}

.sgal-filmstrip__counter {
    font-size: var(--testo-xs);
    color: rgba(255,255,255,0.3);
    letter-spacing: 0.05em;
    font-family: inherit;
    white-space: nowrap;
}

/* ========== INFO PANEL ========== */

/* Desktop (768px+): laterale a destra */
.sgal-filmstrip__info-panel {
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    width: clamp(220px, 28vw, 420px);
    background: linear-gradient(135deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.5) 100%);
    backdrop-filter: blur(10px);
    border-left: 1px solid rgba(255,255,255,0.08);
    display: flex;
    flex-direction: column;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1),
                transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    transform: translateX(100%);
    z-index: 5;
}

.sgal-filmstrip.has-info .sgal-filmstrip__info-panel {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(0);
}

/* Content wrapper con scroll interno */
.sgal-filmstrip__info-content {
    flex: 1;
    overflow-y: auto;
    padding: clamp(1.5rem, 3vh, 2rem);
    display: flex;
    flex-direction: column;
}

/* Info item (uno visibile alla volta) */
.sgal-filmstrip__info-item {
    display: none;
    flex-direction: column;
    gap: clamp(0.6rem, 1.2vh, 1rem);
    animation: fadeIn 0.3s ease;
}
.sgal-filmstrip__info-item.is-active {
    display: flex;
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* Titolo */
.sgal-filmstrip__info-title {
    font-size: clamp(16px, 2.5vw, 20px);
    font-weight: var(--font-peso-semibold, 600);
    color: var(--colore-testo, #fff);
    margin: 0 0 0.5rem 0;
    line-height: 1.3;
}

/* Descrizione */
.sgal-filmstrip__info-desc {
    font-size: var(--testo-sm);
    color: rgba(255,255,255,0.65);
    line-height: 1.6;
    margin: 0 0 1rem 0;
}

/* Meta info (author, year, people) */
.sgal-filmstrip__info-meta {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding-top: 0.8rem;
    border-top: 1px solid rgba(255,255,255,0.1);
}

.sgal-filmstrip__info-author,
.sgal-filmstrip__info-year,
.sgal-filmstrip__info-people {
    font-size: var(--testo-xs);
    color: rgba(255,255,255,0.4);
    font-style: italic;
    margin: 0;
}

.sgal-filmstrip__info-year {
    font-size: var(--testo-xs);
    color: rgba(255,255,255,0.25);
    letter-spacing: 0.05em;
    font-style: normal;
}

/* ========== MOBILE / TABLET (<768px) ========== */

@media (max-width: 767px) {
    .sgal-filmstrip {
        flex-direction: column;
    }

    /* Info panel diventa overlay fullscreen */
    .sgal-filmstrip__info-panel {
        position: fixed;
        inset: 0;
        width: 100%;
        height: 100%;
        border-left: none;
        border-radius: 0;
        opacity: 0;
        pointer-events: none;
        transform: translateY(100%);
        transition: opacity 0.3s ease,
                    transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
        z-index: 100;
        background: rgba(0,0,0,0.9);
        backdrop-filter: blur(8px);
    }

    .sgal-filmstrip.has-info .sgal-filmstrip__info-panel {
        opacity: 1;
        pointer-events: auto;
        transform: translateY(0);
    }

    .sgal-filmstrip__info-content {
        padding: clamp(1rem, 4vh, 1.5rem);
        justify-content: flex-start;
        padding-top: clamp(2rem, 6vh, 3rem);
    }

    .sgal-filmstrip__info-title {
        font-size: clamp(18px, 5vw, 24px);
    }

    .sgal-filmstrip__info-desc {
        font-size: 14px;
    }
}

/* =============== LIGHTBOX ===============
   Overlay fullscreen con navigazione.
   Pannello info laterale (toggle con icona i).
   ========================================= */
.sgal-lightbox {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    visibility: hidden;             /* Nascosto ma mantiene il layout per la transizione */
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease, visibility 0s 0.3s;
}

.sgal-lightbox.is-open {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transition: opacity 0.3s ease, visibility 0s;
}

.sgal-lightbox__backdrop {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.92);
}

.sgal-lightbox__content {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    max-width: 90vw;
    max-height: 80vh;
    width: 100%;
    gap: 0;
    transition: gap 0.3s ease;
}

/* Quando info è attivo: gap per il pannello laterale */
.sgal-lightbox.has-info .sgal-lightbox__content {
    gap: 2rem;
}

/* Foto nel lightbox — centrata, si restringe quando info è attivo */
.sgal-lightbox__viewer {
    position: relative;
    flex: 1 1 auto;
    min-width: 0;
    max-height: 80vh;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: flex 0.3s ease;
}

.sgal-lightbox__img {
    max-width: 100%;
    max-height: 80vh;
    object-fit: contain;
    position: absolute;
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
}

.sgal-lightbox__img.is-active {
    opacity: 1;
    pointer-events: auto;
    position: relative;
}

/* Frecce lightbox — aree cliccabili su tutto il lato (sotto i bottoni top) */
.sgal-lightbox__arrow {
    position: absolute;
    top: calc(var(--navbar-altezza, 68px) + 50px);
    bottom: 3rem;
    z-index: 5;
    background: none;
    border: none;
    cursor: pointer;
    color: rgba(255,255,255,0.25);
    padding: 0 clamp(1rem, 3vw, 3rem);
    transition: color 0.2s ease;
    display: flex;
    align-items: center;
}
.sgal-lightbox__arrow:hover { color: #fff; }
.sgal-lightbox__arrow svg { width: 36px; height: 36px; }
.sgal-lightbox__arrow--prev { left: 0; }
.sgal-lightbox__arrow--next { right: 0; }

/* Chiudi — posizionato sotto la navbar, z-index sopra le frecce */
.sgal-lightbox__close {
    position: absolute;
    top: calc(var(--navbar-altezza, 68px) + 12px);
    right: clamp(1rem, 2vw, 2rem);
    z-index: 10;
    background: none;
    border: none;
    cursor: pointer;
    color: rgba(255,255,255,0.5);
    font-size: clamp(1.8rem, 3vw, 2.2rem);
    transition: color 0.2s ease;
    line-height: 1;
    padding: 6px;
}
.sgal-lightbox__close:hover { color: #fff; }

/* Contatore lightbox */
.sgal-lightbox__counter {
    position: absolute;
    bottom: clamp(0.8rem, 2vh, 1.5rem);
    left: 50%;
    transform: translateX(-50%);
    z-index: 3;
    font-size: var(--testo-xs);
    color: rgba(255,255,255,0.3);
    letter-spacing: 0.1em;
}

/* Toggle info nel lightbox — allineato con il counter in basso a destra */
.sgal-lightbox__info-toggle {
    position: absolute;
    bottom: clamp(0.8rem, 2vh, 1.5rem);
    right: clamp(0.8rem, 2vw, 1.5rem);
    z-index: 10;
    background: none;
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: 4px;
    cursor: pointer;
    color: rgba(255,255,255,0.5);
    transition: color 0.2s ease, border-color 0.2s ease;
    padding: 6px 12px;
    font-size: var(--testo-xs);
    font-family: inherit;
    display: flex;
    align-items: center;
    gap: 5px;
    letter-spacing: 0.05em;
}
.sgal-lightbox__info-toggle:hover { color: #fff; border-color: rgba(255,255,255,0.4); }
.sgal-lightbox__info-toggle.is-active { color: #fff; border-color: rgba(255,255,255,0.5); }

/* Pannello info — nascosto di default, appare a destra */
.sgal-lightbox__info {
    flex: 0 0 0;
    max-height: 80vh;
    overflow-y: auto;
    overflow-x: hidden;
    opacity: 0;
    transition: opacity 0.3s ease, flex-basis 0.3s ease;
    pointer-events: none;
    scrollbar-width: none;
}
.sgal-lightbox__info::-webkit-scrollbar { display: none; }

.sgal-lightbox.has-info .sgal-lightbox__info {
    flex: 0 0 260px;
    opacity: 1;
    pointer-events: auto;
}

.sgal-lightbox__info-item {
    display: none;
    flex-direction: column;
    gap: 0.6rem;
}

.sgal-lightbox__info-item.is-active {
    display: flex;
}

.sgal-lightbox__info-title {
    font-size: var(--testo-lg);
    font-weight: var(--font-peso-semibold, 600);
    color: var(--colore-testo);
}

.sgal-lightbox__info-desc {
    font-size: var(--testo-base);
    color: rgba(255,255,255,0.6);
    line-height: 1.6;
}

.sgal-lightbox__info-author {
    font-size: var(--testo-sm);
    color: rgba(255,255,255,0.35);
    font-style: italic;
}

.sgal-lightbox__info-year,
.sgal-lightbox__info-people {
    font-size: var(--testo-xs);
    color: rgba(255,255,255,0.25);
}

/* Lightbox mobile: info sotto la foto */
@media (max-width: 767px) {
    .sgal-lightbox__content {
        flex-direction: column;
        max-width: 95vw;
    }
    .sgal-lightbox.has-info .sgal-lightbox__info {
        width: 100%;
        flex-basis: auto;
        max-height: 30vh;
    }
    .sgal-lightbox__arrow {
        font-size: 2rem;
        padding: 0.5rem;
    }
}

.slide-gallery__label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--colore-muted);
    flex-shrink: 0;
}

/* Wrap: frecce + blocco galleria — una riga */
.slide-gallery__wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(0.8rem, 1.5vw, 1.5rem);
    flex: 1;
    min-height: 0;
    width: 100%;
    max-width: 1000px;
    padding: 0 clamp(2.5rem, 4vw, 4rem);  /* spazio per le frecce */
}

/* Blocco galleria: foto + miniature + caption — colonna unica */
.slide-gallery__block {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(0.5rem, 0.8vw, 0.7rem);
    flex: 1;
    min-height: 0;
    min-width: 0;
}

/* Viewer — dimensione FISSA. Non cambia con il contenuto.
   Le immagini si adattano dentro questo box con object-fit: contain. */
.slide-gallery__viewer {
    position: relative;
    width: 100%;
    height: calc(var(--opera-slide-h) - 11rem);
    max-height: 65vh;
    background: transparent;   /* Nessun contorno visibile */
    flex-shrink: 0;
}

/* Tutte le foto impilate nello stesso viewer */
.slide-gallery__big {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
}

.slide-gallery__big.is-active {
    opacity: 1;
    pointer-events: auto;
}

/* Frecce — fuori dal blocco, ai lati */
.slide-gallery__arrow {
    flex-shrink: 0;
    background: none;
    border: none;
    cursor: pointer;
    color: rgba(255, 255, 255, 0.3);
    font-size: clamp(1.6rem, 2.5vw, 2.2rem);
    padding: 0.8rem 0.3rem;
    transition: color 0.2s ease;
    line-height: 1;
    align-self: center;
}

.slide-gallery__arrow:hover {
    color: var(--colore-testo);
}

/* Miniature — strip orizzontale, la selezione è SEMPRE al centro.
   Overflow nascosto: il JS gestisce la posizione translateX.
   Le miniature scorrono all'infinito (il JS duplica se necessario). */
.slide-gallery__thumbs {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(0.3rem, 0.5vw, 0.45rem);
    flex-shrink: 0;
    overflow: hidden;
    width: 100%;
    max-width: 100%;
    position: relative;
}

.slide-gallery__thumb {
    flex: 0 0 auto;
    width: clamp(48px, 5.5vw, 68px);
    height: clamp(32px, 3.8vw, 45px);
    border: none;
    background: none;
    cursor: pointer;
    padding: 0;
    opacity: 0.3;
    transition: opacity 0.25s ease, outline-color 0.25s ease;
    outline: 1.5px solid transparent;
    outline-offset: 2px;
}

.slide-gallery__thumb.is-active {
    opacity: 1;
    outline-color: rgba(255, 255, 255, 0.45);
}

.slide-gallery__thumb:hover {
    opacity: 0.6;
}

.slide-gallery__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* Caption sotto le miniature — altezza fissa per non spostare il layout.
   Mostra solo la caption della foto attiva. */
.slide-gallery__caption-area {
    height: 3.2em;       /* Altezza fissa per testo più grande */
    flex-shrink: 0;
    text-align: center;
    position: relative;
    width: 100%;
}

.slide-gallery__caption {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: 0.1rem;
    opacity: 0;
    transition: opacity 0.25s ease;
    pointer-events: none;
}

.slide-gallery__caption.is-active {
    opacity: 1;
    pointer-events: auto;
}

.slide-gallery__caption-title {
    font-size: var(--testo-md);    /* Stessa dimensione di "← Archivio" o più grande */
    font-weight: var(--font-peso-medium);
    color: rgba(255, 255, 255, 0.65);
}

.slide-gallery__caption-desc {
    font-size: var(--testo-base);
    font-weight: var(--font-peso-regular);
    color: rgba(255, 255, 255, 0.35);
}

/* v2.0: Autore/fotografo nelle didascalie */
.slide-gallery__caption-author {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    color: rgba(255, 255, 255, 0.25);
    font-style: italic;
}

.slide-gallery__empty {
    color: var(--colore-muted);
    font-size: var(--testo-sm);
    text-align: center;
    margin: auto;
}

/* Mobile: nascondi description e author. Se molto piccolo, nascondi anche titolo */
@media (max-width: 767px) {
    .slide-gallery__caption-desc,
    .slide-gallery__caption-author {
        display: none;
    }
    .slide-gallery__caption-area {
        height: 2em;
    }
}

@media (max-height: 600px) {
    .slide-gallery__caption-area {
        display: none;
    }
}

/* Header: label a sinistra, hint "Scorri" a destra — fuori dalle immagini */
.slide-gallery__header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    padding: 0 var(--padding-contenitore);
    flex-shrink: 0;
}

.slide-gallery__label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--colore-muted);
}

.slide-gallery__hint-text {
    font-size: var(--testo-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.2);
}

/* Track — scroll orizzontale indipendente, NON propaga alle slide */
.slide-gallery__track {
    display: flex;
    gap: clamp(1rem, 2vw, 1.5rem);
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x proximity;
    padding: 0 var(--padding-contenitore);
    flex: 1;
    align-items: flex-end;
    /* Lo snap delle slide non deve catturare lo scroll interno */
    overscroll-behavior-x: contain;

    scrollbar-width: none;
    -ms-overflow-style: none;
}
.slide-gallery__track::-webkit-scrollbar {
    display: none;
}

/* Singola foto con caption */
.slide-gallery__item {
    flex: 0 0 auto;
    scroll-snap-align: start;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    max-height: calc(var(--opera-slide-h) - 7rem);
    margin: 0;
}

.slide-gallery__img {
    max-height: calc(var(--opera-slide-h) - 10rem);
    max-width: 85vw;   /* Mai più larga della finestra */
    width: auto;
    object-fit: contain;
    display: block;
}

/* Vecchio blocco gallery rimosso — le caption ora sono gestite nella sezione 15.6 */

.slide-gallery__empty {
    color: var(--colore-muted);
    font-size: var(--testo-sm);
    text-align: center;
    margin: auto;
}


/* --- 15.6b SLIDE: MOODBOARD (layout verticale tipo blog) --- */

.slide-moodboard {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: clamp(1.5rem, 3vw, 2.5rem) var(--padding-contenitore);
    gap: clamp(0.8rem, 1.5vw, 1.2rem);
}

.slide-moodboard__label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--colore-muted);
    flex-shrink: 0;
}

.slide-moodboard__scroll {
    flex: 1;
    width: 100%;
    max-width: 800px;
    overflow-y: auto;
    scrollbar-width: none;
    overscroll-behavior-y: contain;
}
.slide-moodboard__scroll::-webkit-scrollbar { display: none; }

.slide-moodboard__content {
    display: flex;
    flex-direction: column;
    gap: clamp(1.5rem, 3vw, 2rem);
    padding-bottom: 2rem;
}

/* Testo formattato */
.slide-moodboard__text {
    font-size: var(--testo-base);
    font-weight: var(--font-peso-light);
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.75);
}

.slide-moodboard__text p {
    margin-bottom: 1em;
}

.slide-moodboard__text p:last-child {
    margin-bottom: 0;
}

/* Galleria immagini */
.slide-moodboard__gallery {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(0.5rem, 1vw, 0.8rem);
}

.slide-moodboard__gallery-item {
    margin: 0;
    aspect-ratio: 1;
}

.slide-moodboard__gallery-item:nth-child(3n+1) {
    grid-column: 1 / -1;
    aspect-ratio: auto / 0.5;
}

.slide-moodboard__gallery-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.slide-moodboard__empty {
    color: var(--colore-muted);
    font-size: var(--testo-sm);
    text-align: center;
}


/* --- 15.7 SLIDE: CREDITS --- */

.slide-credits {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--spazio-lg) clamp(2rem, 5vw, 5rem);
    gap: clamp(1.5rem, 2.5vw, 2rem);
}

.slide-credits__label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--colore-muted);
}

/* Due colonne: Cast + Troupe (se entrambi presenti) */
.slide-credits__columns {
    display: flex;
    flex-direction: column;
    gap: clamp(2rem, 4vw, 3rem);
    max-width: 750px;
    width: 100%;
    overflow-y: auto;
    max-height: 65vh;
    scrollbar-width: none;
}
.slide-credits__columns::-webkit-scrollbar { display: none; }

.slide-credits__col-title {
    display: block;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-medium);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.5);
    margin-bottom: 0.8rem;
    padding-bottom: 0.4rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.slide-credits__grid {
    display: grid;
    grid-template-columns: auto 1fr;
    row-gap: 0.35rem;
    width: 100%;
}

.slide-credits__item {
    display: contents;
}

.slide-credits__role {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--colore-muted);
    padding-right: 1.5rem;
    white-space: nowrap;
    align-self: baseline;
    text-align: right;    /* Colonna ruoli giustificata a destra */
}

.slide-credits__name {
    font-size: var(--testo-base);
    font-weight: var(--font-peso-regular);
    color: var(--colore-testo);
    margin: 0;
    align-self: baseline;
    text-align: left;     /* Colonna nomi giustificata a sinistra */
}

.slide-credits__name a {
    transition: opacity var(--transizione);
}

.slide-credits__name a:hover {
    opacity: 0.6;
}

/* Loghi partner / co-produttori in fondo ai credits.
   Possono essere divisi per ruolo (Produzione, In associazione con, ecc.).
   I loghi devono essere PNG bianchi su trasparente.
   Dimensione suggerita: max 36px di altezza. */
.slide-credits__partners {
    display: flex;
    align-items: flex-end;
    justify-content: center;
    gap: clamp(2rem, 4vw, 3.5rem);
    flex-wrap: wrap;
    margin-top: auto;
    padding-top: 1.2rem;
    border-top: 1px solid rgba(255, 255, 255, 0.05);
    width: 100%;
    max-width: 750px;
}

.slide-credits__partner-group {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    padding: 0 clamp(0.5rem, 1vw, 1rem);
}

.slide-credits__partner-label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.3);
}

.slide-credits__partner-logos {
    position: relative;
    width: 100%;
    max-width: 600px;
    height: 80px;
    margin: 0 auto;
    background: transparent;
}

/* Loghi: posizionati assoluti con larghezza e margine definiti */
.slide-credits__partner-logo {
    position: absolute;
    top: 0;
    height: 100%;
    object-fit: contain;
    object-position: center;
    opacity: 0.45;
    filter: brightness(0) invert(1);
    transition: opacity var(--transizione);
}

.slide-credits__partner-logo:hover {
    opacity: 0.8;
}


/* --- 15.8 SLIDE: FESTIVALS --- */

.slide-festivals {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--spazio-lg) var(--spazio-md);
    gap: clamp(1.5rem, 3vw, 2.5rem);
    overflow-y: auto;
}

.slide-festivals__label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--colore-muted);
}

/* Laurel — premi importanti, griglia 3x2 (max 6) oppure centrato se singolo */
.slide-festivals__laurels {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: clamp(0.8rem, 1.5vw, 1.5rem);
    max-width: 550px;
    width: 100%;
    justify-items: center;
}

.slide-festivals__laurels--centered {
    max-width: 220px;
    grid-template-columns: 1fr;
    justify-items: center;
}

.slide-festivals__laurel {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.slide-festivals__laurel-img {
    height: clamp(60px, 8vw, 90px);
    width: auto;
    filter: brightness(0) invert(1);
    opacity: 0.85;
}

.slide-festivals__laurel-text {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.2rem;
    text-align: center;
    font-size: var(--testo-sm);
    color: var(--colore-testo);
}

.slide-festivals__laurel-text span {
    font-size: var(--testo-xs);
    color: var(--colore-muted);
}

/* Lista selezioni — scrollabile verticale, responsive */
.slide-festivals__list {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    max-width: 500px;
    width: 100%;
    max-height: clamp(180px, 20vh, 250px);
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: rgba(255,255,255,0.15) transparent;
    mask-image: linear-gradient(to bottom, white 80%, transparent 100%);
    -webkit-mask-image: linear-gradient(to bottom, white 80%, transparent 100%);
}

.slide-festivals__list-item {
    display: flex;
    align-items: baseline;
    gap: 0.8rem;
    padding: 0.3rem 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.slide-festivals__list-name {
    font-size: clamp(0.85rem, 1vw, 0.95rem);
    font-weight: var(--font-peso-regular);
    color: var(--colore-testo);
    flex: 1;
}

.slide-festivals__list-award {
    font-size: var(--testo-xs);
    color: var(--colore-muted);
    letter-spacing: 0.05em;
}

.slide-festivals__list-year {
    font-size: var(--testo-xs);
    color: rgba(255, 255, 255, 0.3);
    flex-shrink: 0;
}

/* Gallery — Toggle e Showcase compatto */
.slide-festivals__gallery-toggle {
    width: 100%;
    max-width: 500px;
    margin-top: clamp(1rem, 3vw, 2rem);
}

.slide-festivals__gallery-btn {
    width: 100%;
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.1);
    color: var(--colore-testo);
    padding: 0.8rem 1rem;
    border-radius: 3px;
    cursor: pointer;
    font-size: var(--testo-sm);
    display: flex;
    align-items: center;
    gap: 0.5rem;
    transition: all 0.3s;
}

.slide-festivals__gallery-btn:hover {
    border-color: rgba(255, 255, 255, 0.2);
    background: rgba(255, 255, 255, 0.05);
}

.slide-festivals__gallery-icon {
    display: inline-block;
    font-size: 0.7rem;
    transition: transform 0.3s;
}

/* Striscia di thumbnail foto in basso — max 5 visibili */
.slide-festivals__gallery-strip {
    margin-top: 2rem;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
}

.slide-festivals__gallery-thumbnails {
    display: flex;
    gap: 0.5rem;
    padding: 0.5rem 0;
    scroll-behavior: smooth;
    width: 530px;
    overflow: hidden;
}

.slide-festivals__gallery-thumbnail {
    height: 80px;
    width: 100px;
    min-width: 100px;
    object-fit: cover;
    border-radius: 3px;
    cursor: pointer;
    opacity: 0.7;
    transition: opacity 0.3s;
    border: 1px solid rgba(255, 255, 255, 0.2);
}

.slide-festivals__gallery-thumbnail:hover {
    opacity: 1;
}

/* Frecce di navigazione striscia */
.slide-festivals__gallery-nav {
    background: none;
    border: none;
    color: rgba(255, 255, 255, 0.5);
    font-size: 20px;
    padding: 0;
    cursor: pointer;
    opacity: 0.5;
    transition: all 0.3s;
}

.slide-festivals__gallery-nav:hover {
    opacity: 1;
    color: #fff;
}

.slide-festivals__photo {
    cursor: pointer;
}

/* v2.0: Dettagli premiato sotto la laurel */
.slide-festivals__laurel-awarded {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.1rem;
    margin-top: 0.3rem;
    font-size: var(--testo-xs);
    color: var(--colore-muted);
}

.slide-festivals__laurel-awarded-role {
    font-style: italic;
    opacity: 0.7;
}

.slide-festivals__laurel-awarded-names {
    font-weight: var(--font-peso-medium);
}

/* v2.0: Premi nella lista (medium importance) evidenziati */
.slide-festivals__list-item--award {
    border-bottom-color: rgba(255, 255, 255, 0.1);
}

.slide-festivals__list-item--award .slide-festivals__list-name {
    font-weight: var(--font-peso-medium);
}

/* v2.0: Elenco compatto (low importance) */
.slide-festivals__compact {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem 1rem;
    max-width: 600px;
    justify-content: center;
}

.slide-festivals__compact-item {
    font-size: var(--testo-xs);
    color: rgba(255, 255, 255, 0.4);
    white-space: nowrap;
}


/* --- 15.9 SLIDE: TEXT (generico) --- */

.slide-text {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--spazio-lg) var(--spazio-md);
    gap: clamp(1rem, 2vw, 1.5rem);
}

.slide-text__label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--colore-muted);
}

.slide-text__content {
    max-width: 650px;
    font-size: clamp(0.9rem, 1.1vw, 1.05rem);
    font-weight: var(--font-peso-light);
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.8);
    overflow-y: auto;
    max-height: 60vh;
    padding-right: 0.5rem;
}

.slide-text__content p {
    margin-bottom: 1em;
}

.slide-text__content a {
    color: var(--colore-testo);
    text-decoration: underline;
    text-underline-offset: 3px;
}

.slide-text__empty {
    color: var(--colore-muted);
    font-size: var(--testo-sm);
}


/* --- 15.9b SLIDE: PRESS (rassegna stampa con scorrimento) --- */

.slide-press {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    padding: var(--spazio-lg) var(--spazio-md) var(--spazio-md);
    gap: clamp(1rem, 2vw, 1.5rem);
}

.slide-press__label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--colore-muted);
    flex-shrink: 0;
}

/* Contenitore scrollabile */
.slide-press__scroll {
    max-width: 650px;
    width: 100%;
    overflow-y: auto;
    flex: 1;
    scrollbar-width: none;
    /* Niente mask-image: gli elementi in fondo devono essere raggiungibili e cliccabili */
    padding-bottom: 2rem;  /* Spazio extra per scrollare oltre l'ultimo elemento */
}
.slide-press__scroll::-webkit-scrollbar { display: none; }

.slide-press__content {
    font-size: var(--testo-base);
    font-weight: var(--font-peso-light);
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.8);
}

/* Articoli strutturati */
.slide-press__articles {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.slide-press__year-separator {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-medium);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.35);
    margin: 3em 0 2em 0;
    padding-bottom: 0.5em;
}

.slide-press__year-separator:first-child {
    margin-top: 0;
}

.slide-press__article {
    padding-bottom: 0.5em;
}

.slide-press__article:last-child {
    padding-bottom: 0;
}

.slide-press__citation {
    font-size: var(--testo-base);
    font-weight: var(--font-peso-light);
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.8);
    margin: 0 0 0.3em 0;
    word-break: break-word;
}

.slide-press__footer {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 2em;
}

.slide-press__link {
    color: rgba(255, 255, 255, 0.4);
    font-size: var(--testo-sm);
    text-decoration: none;
    transition: color var(--transizione);
    line-height: 1.3;
    white-space: nowrap;
}

.slide-press__link:hover {
    color: var(--colore-testo);
}

.slide-press__meta {
    text-align: right;
}

.slide-press__publication {
    color: rgba(255, 255, 255, 0.5);
    font-size: var(--testo-sm);
    line-height: 1.4;
}

.slide-press__empty {
    color: var(--colore-muted);
    font-size: var(--testo-sm);
}

/* Actions container (link + view button side by side) */
.slide-press__actions {
    display: flex;
    gap: 0.8em;
    align-items: center;
    flex-wrap: wrap;
}

/* View button — opens lightbox for image/PDF */
.slide-press__view-btn {
    background: none;
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: 3px;
    color: rgba(255,255,255,0.4);
    font-size: var(--testo-sm);
    cursor: pointer;
    padding: 2px 10px;
    transition: color var(--transizione), border-color var(--transizione);
    font-family: inherit;
    line-height: 1.3;
    white-space: nowrap;
}
.slide-press__view-btn:hover {
    color: var(--colore-testo);
    border-color: rgba(255,255,255,0.4);
}

/* PDF iframe in sgal-lightbox (shared across all lightboxes) */
.sgal-lightbox__pdf {
    width: min(90vw, 800px);
    height: 80vh;
    border: none;
    background: #fff;
    border-radius: 4px;
    position: absolute;
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
}
.sgal-lightbox__pdf.is-active {
    opacity: 1;
    pointer-events: auto;
    position: relative;
}


/* --- 15.9c SLIDE: EDITORIAL (impaginazione libera con scroll verticale) --- */

.slide-editorial {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    padding: var(--spazio-lg) var(--spazio-md) var(--spazio-md);
    gap: clamp(1rem, 2vw, 1.5rem);
}

.slide-editorial__label {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--colore-muted);
    flex-shrink: 0;
}

/* Contenitore scrollabile */
.slide-editorial__scroll {
    max-width: 800px;
    width: 100%;
    overflow-y: auto;
    flex: 1;
    scrollbar-width: none;
    padding-bottom: 2rem;
}
.slide-editorial__scroll::-webkit-scrollbar { display: none; }

.slide-editorial__content {
    display: flex;
    flex-direction: column;
    gap: clamp(1.5rem, 3vw, 2.5rem);
}

/* --- Blocchi individuali --- */

.slide-editorial__block {
    width: 100%;
}

/* Heading */
.slide-editorial__heading {
    font-weight: var(--font-peso-medium);
    color: var(--colore-testo);
    line-height: 1.2;
}
.slide-editorial__block--heading h2 { font-size: clamp(1.4rem, 3vw, 2rem); }
.slide-editorial__block--heading h3 { font-size: clamp(1.1rem, 2.5vw, 1.5rem); }
.slide-editorial__block--heading h4 { font-size: clamp(0.95rem, 2vw, 1.2rem); }

/* Testo */
.slide-editorial__block--text {
    font-size: var(--testo-base);
    font-weight: var(--font-peso-light);
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.85);
}
.slide-editorial__block--text p { margin-bottom: 1em; }
.slide-editorial__block--text p:last-child { margin-bottom: 0; }
.slide-editorial__block--text a { color: var(--colore-testo); text-decoration: underline; text-underline-offset: 3px; }

/* Immagine singola */
.slide-editorial__block--image {
    margin: 0;
}
.slide-editorial__img {
    width: 100%;
    height: auto;
    max-height: 60vh;
    object-fit: cover;
    border-radius: 2px;
    display: block;
}
.slide-editorial__caption {
    font-size: var(--testo-sm);
    color: var(--colore-muted);
    margin-top: 0.5rem;
    font-style: italic;
}

/* Immagine doppia */
.slide-editorial__block--image-duo {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(0.5rem, 1vw, 1rem);
}
.slide-editorial__duo-item {
    margin: 0;
}
.slide-editorial__duo-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 2px;
    display: block;
    max-height: 45vh;
}

/* Citazione */
.slide-editorial__block--quote {
    border-left: 2px solid rgba(255, 255, 255, 0.15);
    padding: 1.5rem 0 1.5rem 2rem;
    margin: 0;
}
.slide-editorial__quote-text {
    font-size: clamp(1.1rem, 2vw, 1.4rem);
    font-weight: var(--font-peso-light);
    font-style: italic;
    color: var(--colore-testo);
    line-height: 1.6;
    margin: 0;
}
.slide-editorial__quote-attr {
    display: block;
    font-size: var(--testo-sm);
    color: var(--colore-muted);
    font-style: normal;
    margin-top: 0.75rem;
}

/* Video embed */
.slide-editorial__block--video { width: 100%; }
.slide-editorial__video-wrap {
    position: relative;
    width: 100%;
    padding-bottom: 56.25%; /* 16:9 */
    height: 0;
    overflow: hidden;
    border-radius: 2px;
}
.slide-editorial__video-wrap iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

/* Separatore */
.slide-editorial__block--separator { padding: 0.5rem 0; }
.slide-editorial__separator {
    border: none;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    margin: 0;
}

/* Empty state */
.slide-editorial__empty {
    color: var(--colore-muted);
    font-size: var(--testo-sm);
}


/* --- 15.10 RESPONSIVE OPERA --- */

/* --- DESKTOP (768px+) — Cover e Statement layout orizzontale --- */
@media (min-width: 768px) {

    /* Cover: locandina sx + contenuto dx */
    .slide-cover--with-poster {
        flex-direction: row;
        align-items: center;
        justify-content: center;
    }

    .slide-cover__poster-img {
        max-height: 65vh;
        max-width: 320px;
    }

    /* Sinossi + scheda tecnica: testo a sx, scheda a dx, centrati verticalmente */
    .slide-synopsis--with-scheda {
        flex-direction: row;
        align-items: center;    /* Centrato verticalmente */
    }

    /* Statement: testo + foto affiancati */
    .slide-synopsis__photo {
        display: block;
    }

    .slide-synopsis--with-photo {
        flex-direction: row;
    }

    /* Credits: due colonne affiancate */
    .slide-credits--two-col .slide-credits__columns {
        flex-direction: row;
    }

    .slide-credits__col {
        flex: 1;
        min-width: 0;
    }
}


/* Label: il JS gestisce dinamicamente 'all', 'active' o 'none' in base
   all'overlap. I media query sotto gestiscono solo mobile (nascondi tutto). */

/* Tablet e mobile (<1024px) — niente label, solo punti */
@media (max-width: 1023px) {
    .opera__nav-dot-label {
        display: none !important;
    }

    .opera__nav-back-label {
        display: none;
    }

    .opera__nav-spacer {
        display: none;
    }

    .opera__nav-dot-point {
        width: 4px;
        height: 4px;
    }

    .opera__nav-dot.is-active .opera__nav-dot-point {
        width: 7px;
        height: 7px;
    }

}

/* Mobile piccolo (<768px) */
@media (max-width: 767px) {
    .opera {
        --opera-nav-h: 40px;
    }

    .slide-cover__title {
        font-size: clamp(1.6rem, 7vw, 2.2rem);
    }

    .slide-cover__poster-img {
        max-height: 35vh;
        max-width: 180px;
    }

    /* Synopsis + scheda: stack verticale su mobile */
    .slide-synopsis {
        flex-direction: column;
        padding: clamp(1.5rem, 3vw, 2.5rem) clamp(1.5rem, 4vw, 2rem);
        gap: clamp(1.5rem, 3vw, 2rem);
        align-items: center;
        justify-content: flex-start;
        overflow-y: auto;
        scrollbar-width: thin;
        scrollbar-color: rgba(255,255,255,0.12) transparent;
    }

    .slide-synopsis::-webkit-scrollbar {
        width: 3px;
    }
    .slide-synopsis::-webkit-scrollbar-thumb {
        background: rgba(255,255,255,0.12);
        border-radius: 3px;
    }

    /* Fade hint: indica contenuto sotto il fold (solo con scheda tecnica) */
    .slide-synopsis--with-scheda::after {
        content: '';
        position: sticky;
        bottom: 0;
        display: block;
        width: 100%;
        height: 2rem;
        margin-top: -2rem;
        background: linear-gradient(to bottom, transparent, var(--colore-sfondo));
        pointer-events: none;
        flex-shrink: 0;
        z-index: 1;
    }

    .slide-synopsis__main {
        max-width: 100%;
        max-height: none;
        overflow-y: visible;
        flex-shrink: 0;
    }

    .slide-synopsis__scheda {
        min-width: 0;
        max-width: 100%;
        width: 100%;
        padding-left: 0;
        border-left: none;
        border-top: 1px solid rgba(255, 255, 255, 0.08);
        padding-top: 1.2rem;
    }

    .slide-synopsis__scheda-grid {
        width: 100%;
    }

    .slide-synopsis__scheda-item dt {
        text-align: left;
    }

    /* Text slides: padding ridotto e max-height esteso su mobile */
    .slide-text {
        padding: var(--spazio-md) var(--padding-contenitore);
    }

    .slide-text__content {
        max-height: 70vh;
        max-width: 100%;
    }

    /* Gallery masonry: altezza piena su mobile */
    .slide-gallery--masonry {
        max-height: 100%;
        height: 100%;
        padding: 0;
    }
}


/* ==========================================================================
   END PAGINA OPERA
   ========================================================================== */


/* ==========================================================================
   16. PAGINA ARCHIVIO
   ==========================================================================
   Archivio minimal. Dropdown custom, lista card compatte.
   ========================================================================== */


/* --- 16.0 LAYOUT PAGINA — navbar opaca + offset contenuto --- */

.page-archivio .navbar {
    background: rgba(0, 0, 0, 0.96);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.page-archivio .sito__contenuto {
    padding-top: var(--navbar-altezza);
}


/* --- 16.1 BARRA FILTRI (sticky) --- */

.archive-bar {
    position: sticky;
    top: var(--navbar-altezza);
    z-index: calc(var(--z-navbar) - 1);
    background: rgba(0, 0, 0, 0.96);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
    padding: 0.5rem 0;
}

.archive-bar__inner {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    flex-wrap: wrap;
}

.archive-bar__title {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-medium);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.35);
    white-space: nowrap;
    flex-shrink: 0;
}

/* Gruppo filtri */
.archive-bar__filters {
    display: flex;
    align-items: center;
    gap: 0.15rem;
    flex-wrap: wrap;
}


/* --- 16.1b DROPDOWN CUSTOM --- */

.archive-dropdown {
    position: relative;
}

.archive-dropdown__trigger {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.3rem 0.55rem;
    font-family: var(--font-principale);
    font-size: clamp(0.7rem, 0.82vw, 0.8rem);
    font-weight: var(--font-peso-light);
    color: var(--colore-muted);
    letter-spacing: 0.02em;
    cursor: pointer;
    border-radius: 2px;
    transition: color var(--transizione);
    white-space: nowrap;
}

.archive-dropdown__trigger:hover {
    color: var(--colore-testo);
}

/* Freccia */
.archive-dropdown__arrow {
    width: 7px;
    height: 5px;
    opacity: 0.4;
    transition: transform var(--transizione), opacity var(--transizione);
    flex-shrink: 0;
}

.archive-dropdown.is-open .archive-dropdown__arrow {
    transform: rotate(180deg);
    opacity: 0.7;
}

/* Stato attivo (filtro selezionato diverso da "tutti") */
.archive-dropdown.has-filter .archive-dropdown__trigger {
    color: var(--colore-testo);
}

/* Menu a tendina */
.archive-dropdown__menu {
    position: absolute;
    top: 100%;
    left: 0;
    margin-top: 0.3rem;
    min-width: 140px;
    background: rgba(12, 12, 12, 0.95);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 3px;
    padding: 0.35rem 0;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-4px);
    transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
    z-index: 50;
}

.archive-dropdown.is-open .archive-dropdown__menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.archive-dropdown__option {
    display: block;
    width: 100%;
    text-align: left;
    padding: 0.3rem 0.8rem;
    font-family: var(--font-principale);
    font-size: clamp(0.68rem, 0.78vw, 0.76rem);
    font-weight: var(--font-peso-light);
    color: var(--colore-muted);
    cursor: pointer;
    transition: color 0.15s ease, background 0.15s ease;
    white-space: nowrap;
}

.archive-dropdown__option:hover {
    color: var(--colore-testo);
    background: rgba(255, 255, 255, 0.04);
}

.archive-dropdown__option.is-active {
    color: var(--colore-testo);
}


/* --- 16.1c RICERCA --- */

.archive-bar__search {
    margin-left: auto;
    flex-shrink: 0;
}

.archive-bar__search-input {
    width: 130px;
    background: transparent;
    border: none;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    padding: 0.25rem 0;
    font-family: var(--font-principale);
    font-size: clamp(0.7rem, 0.8vw, 0.78rem);
    font-weight: var(--font-peso-light);
    color: var(--colore-testo);
    letter-spacing: 0.03em;
    outline: none;
    transition: border-color var(--transizione), width var(--transizione);
}

.archive-bar__search-input::placeholder {
    color: var(--colore-muted);
    opacity: 0.35;
}

.archive-bar__search-input:focus {
    border-bottom-color: rgba(255, 255, 255, 0.35);
    width: 180px;
}

.archive-bar__count {
    font-size: clamp(0.68rem, 0.76vw, 0.74rem);
    color: var(--colore-muted);
    font-weight: var(--font-peso-light);
    white-space: nowrap;
    flex-shrink: 0;
    opacity: 0.5;
}

/* Reset */
.archive-bar__reset {
    font-family: var(--font-principale);
    font-size: clamp(0.65rem, 0.75vw, 0.73rem);
    font-weight: var(--font-peso-light);
    color: var(--colore-muted);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    cursor: pointer;
    padding: 0.2rem 0.5rem;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 2px;
    transition: color var(--transizione), border-color var(--transizione);
    white-space: nowrap;
    flex-shrink: 0;
}

.archive-bar__reset:hover {
    color: var(--colore-testo);
    border-color: rgba(255, 255, 255, 0.2);
}


/* --- 16.2 GRIGLIA ARCHIVIO --- */

.archive-grid {
    padding: clamp(0.8rem, 1.5vw, 1.5rem) 0 clamp(2rem, 4vw, 4rem);
}

.archive-grid__inner {
    display: flex;
    flex-direction: column;
    max-width: 960px;
}

.archive-year {
    padding: clamp(1.2rem, 2vw, 2rem) 0 clamp(0.3rem, 0.6vw, 0.5rem);
    border-top: 1px solid rgba(255, 255, 255, 0.04);
}

.archive-year:first-child {
    border-top: none;
    padding-top: 0;
}

.archive-year__title {
    font-size: clamp(0.72rem, 0.85vw, 0.82rem);
    font-weight: var(--font-peso-medium);
    color: rgba(255, 255, 255, 0.25);
    letter-spacing: 0.12em;
    text-transform: uppercase;
}


/* --- 16.2b CARD OVERRIDE (dimensioni ridotte) --- */

.archive-item {
    margin-bottom: 0;
    transition: opacity 0.3s ease;
}

/* List */
.archive-item--list .doc-list-item {
    padding: clamp(0.6rem, 1vw, 0.9rem) 0;
    border-top-color: rgba(255, 255, 255, 0.04);
}

.archive-item--list .doc-list-item__title {
    font-size: clamp(0.88rem, 1.1vw, 1.05rem);
    font-weight: var(--font-peso-regular);
}

.archive-item--list .doc-list-item__content {
    gap: 0.25rem;
}

.archive-item--list .doc-list-item__row-main {
    gap: 0.6rem;
}

.archive-item--list .doc-list-item__row-meta {
    gap: 0.3rem;
}

.archive-item--list .doc-list-item__year,
.archive-item--list .doc-list-item__director {
    font-size: clamp(0.68rem, 0.78vw, 0.76rem);
}

.archive-item--list .doc-tag--sm {
    font-size: clamp(0.62rem, 0.72vw, 0.7rem);
    padding: 0.15rem 0.4rem;
}

.archive-item--list .doc-btn--xs {
    font-size: clamp(0.62rem, 0.72vw, 0.7rem);
    padding: 0.2rem 0.5rem;
}

/* Selected */
.archive-item--selected {
    margin-bottom: clamp(0.6rem, 1.2vw, 1.2rem);
}

.archive-item--selected .doc-card {
    padding-bottom: clamp(0.8rem, 1.5vw, 1.2rem);
    margin-bottom: 0;
    gap: clamp(0.6rem, 1.2vw, 1rem);
}

.archive-item--selected .doc-card__media {
    aspect-ratio: 16 / 9;
}

.archive-item--selected .doc-card__title {
    font-size: clamp(0.88rem, 1.1vw, 1.05rem);
}

.archive-item--selected .doc-card__year,
.archive-item--selected .doc-card__director {
    font-size: clamp(0.68rem, 0.78vw, 0.76rem);
}

.archive-item--selected .doc-card__actions {
    margin-top: 0.3rem;
    gap: 0.6rem;
}

.archive-item--selected .doc-btn--sm {
    font-size: clamp(0.65rem, 0.75vw, 0.73rem);
    padding: 0.2rem 0.5rem;
}

.archive-item--selected .doc-card__tags .doc-tag {
    font-size: clamp(0.62rem, 0.72vw, 0.7rem);
    padding: 0.15rem 0.4rem;
}

/* Nascosto / vuoto */
.archive-item.is-hidden {
    opacity: 0;
    position: absolute;
    pointer-events: none;
    height: 0;
    margin: 0;
    overflow: hidden;
}

.archive-year.is-hidden {
    display: none;
}

.archive-grid__no-results,
.archive-grid__empty {
    font-size: var(--testo-xs);
    color: var(--colore-muted);
    font-weight: var(--font-peso-light);
    text-align: center;
    padding: clamp(2rem, 4vw, 4rem) 0;
}


/* --- 16.3 RESPONSIVE ARCHIVIO --- */

@media (min-width: 768px) {
    .archive-item--selected .doc-card__media {
        flex: 1;
    }

    .archive-item--selected .doc-card__content {
        flex: 1;
        padding: clamp(0.4rem, 0.8vw, 0.6rem) 0 clamp(0.4rem, 0.8vw, 0.6rem) clamp(0.8rem, 1.2vw, 1.2rem);
    }
}

@media (max-width: 767px) {
    .archive-bar__inner {
        gap: 0.5rem;
    }

    .archive-bar__title {
        flex: 0 0 100%;
    }

    .archive-bar__search {
        margin-left: 0;
        flex: 1;
    }

    .archive-bar__search-input,
    .archive-bar__search-input:focus {
        width: 100%;
    }

    .archive-dropdown__menu {
        position: fixed;
        left: var(--padding-contenitore);
        right: var(--padding-contenitore);
        top: auto;
        min-width: auto;
    }
}


/* ==========================================================================
   END PAGINA ARCHIVIO
   ========================================================================== */


/* ==========================================================================
   17. PAGINE ISTITUZIONALI (About, Manifesto, Contact)
   ========================================================================== */

/* --- Layout comune: navbar opaca + offset contenuto --- */
.page-categoria .navbar,
.page-about .navbar,
.page-manifesto .navbar,
.page-contact .navbar,
.page-works-sub .navbar {
    background: rgba(0, 0, 0, 0.96);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.page-works-sub .sito__contenuto {
    padding-top: var(--navbar-altezza);
}

.page-manifesto .sito__contenuto {
    position: relative;
    z-index: 2;
    min-height: 100vh;
    min-height: 100dvh;
    padding-top: 0;
    background: var(--colore-sfondo);
}

.page-manifesto .footer {
    position: static;
    z-index: 1;
}

/* About: padding gestito da about__header */
.page-about .sito__contenuto {
    padding-top: 0;
}

/* Contact: gestito in sezione 17.3 */


/* --- 17.1 ABOUT ---
   Compatto, una schermata su laptop.
   Header → colonne allineate → team orizzontale → CTA a destra.
   --------------------------------------------------------------------- */

.ab__label {
    display: block;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--colore-muted);
    margin-bottom: clamp(0.8rem, 1.5vw, 1.2rem);
}

.ab {
    padding-top: calc(var(--navbar-altezza) + 2.5rem);
    padding-bottom: 0;
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
}

.ab__inner {
    max-width: 1140px;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: clamp(2rem, 3.5vw, 2.5rem);
}

/* Footer — si scopre scrollando come in homepage */
.page-about .footer {
    position: static;
    z-index: 1;
}

.page-about .sito__contenuto {
    position: relative;
    z-index: 2;
    min-height: 100vh;
    min-height: 100dvh;
    padding-top: 0;
    background: var(--colore-sfondo);
}

/* Subtitle */
.ab__subtitle {
    font-size: clamp(1.2rem, 2vw, 1.7rem);
    font-weight: var(--font-peso-light);
    line-height: 1.4;
    color: rgba(255, 255, 255, 0.95);
    max-width: 80%;
}

/* Reset <p> da wp_editor */
.ab__subtitle p,
.ab__intro-text p,
.ab__col-text p {
    margin: 0 0 0.6em;
}

.ab__subtitle p:last-child,
.ab__intro-text p:last-child,
.ab__col-text p:last-child {
    margin-bottom: 0;
}


/* --- Due colonne: storia sx + cosa facciamo dx --- */

.ab__colonne {
    display: flex;
    flex-direction: column;
    gap: clamp(1.5rem, 3vw, 2rem);
}

.ab__intro-text {
    font-size: clamp(1.05rem, 1.3vw, 1.2rem);
    font-weight: var(--font-peso-light);
    line-height: 1.65;
    color: rgba(255, 255, 255, 0.8);
    margin-bottom: clamp(1rem, 2vw, 1.5rem);
}

.ab__col-title {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--colore-muted);
    margin-bottom: clamp(0.3rem, 0.5vw, 0.4rem);
}

.ab__col-text {
    font-size: var(--testo-base);
    font-weight: var(--font-peso-light);
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.6);
}

@media (min-width: 768px) {
    .ab__colonne {
        flex-direction: row;
        gap: clamp(3rem, 6vw, 5rem);
    }
    .ab__col-sx { flex: 3; }
    .ab__col-dx { flex: 2; }
}


/* --- Team orizzontale --- */

.ab__team-label {
    display: block;
    font-size: var(--testo-sm);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--colore-muted);
    margin-bottom: clamp(1rem, 2vw, 1.5rem);
}

.ab__team-grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: clamp(2rem, 4vw, 3.5rem);
}

a.ab__membro {
    display: flex;
    align-items: center;
    gap: clamp(0.6rem, 1vw, 0.8rem);
    color: var(--colore-testo);
    transition: opacity var(--transizione);
}

a.ab__membro:hover {
    opacity: 0.6;
}

.ab__membro-foto {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.06);
    flex-shrink: 0;
}

.ab__membro-foto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.ab__membro-info {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.ab__membro-nome {
    font-size: var(--testo-base);
    font-weight: var(--font-peso-medium);
    line-height: 1.3;
}

.ab__membro-ruolo {
    font-size: var(--testo-sm);
    color: var(--colore-muted);
    letter-spacing: 0.03em;
}


/* --- CTA a destra, spinto in fondo --- */

.ab__cta {
    display: flex;
    justify-content: flex-end;
    margin-top: auto;
    padding: clamp(1rem, 2vw, 1.5rem) 0 clamp(1.5rem, 2.5vw, 2rem);
}

.ab__cta-blocco {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: clamp(0.4rem, 0.7vw, 0.6rem);
    text-align: right;
}

.ab__cta-text {
    font-size: var(--testo-sm);
    font-weight: var(--font-peso-light);
    color: rgba(255, 255, 255, 0.4);
    max-width: 340px;
}

.ab__cta-btn {
    font-size: var(--testo-sm);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--colore-testo);
    transition: opacity var(--transizione);
}

.ab__cta-btn:hover { opacity: 0.5; }


/* Responsive */
@media (max-width: 767px) {
    .ab {
        min-height: auto;
        padding-top: calc(var(--navbar-altezza) + clamp(1.5rem, 4vw, 2.5rem));
    }

    .page-about .footer {
        position: static;
    }

    .page-about .sito__contenuto {
        margin-bottom: 0;
    }

    .ab__cta {
        justify-content: flex-start;
    }

    .ab__cta-blocco {
        align-items: flex-start;
        text-align: left;
    }
}


/* --- 17.2 MANIFESTO --- */

.manifesto__statement {
    padding: clamp(2.5rem, 5vw, 5rem) 0 clamp(2rem, 4vw, 4rem);
    text-align: center;
}

.manifesto__statement-text {
    font-size: clamp(1.3rem, 2.4vw, 2rem);
    font-weight: var(--font-peso-light);
    line-height: 1.4;
    color: rgba(255, 255, 255, 0.9);
    max-width: 920px;
    margin: 0 auto;
}

.manifesto__body {
    padding: 0 0 clamp(4rem, 8vw, 8rem);
    max-width: 650px;
    margin: 0 auto;
}

.manifesto__testo {
    font-size: clamp(1.05rem, 1.3vw, 1.2rem);
    font-weight: var(--font-peso-light);
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.7);
    text-align: center;
}

/* Neutralizza i margini dei <p> generati da wp_editor */
.manifesto__statement-text p,
.manifesto__testo p,
.ct__frase p,
.ct__finale-testo p {
    margin: 0 0 0.8em;
}

.manifesto__statement-text p:last-child,
.manifesto__testo p:last-child,
.ct__frase p:last-child,
.ct__finale-testo p:last-child {
    margin-bottom: 0;
}


/* --- 17.3 CONTACT ---
   ┌─────────────────────────┬──────────────────────┐
   │ CONTATTI                │                      │
   │ Frase grande (3/5)     │ Dove trovarci        │
   │                        │ indirizzo            │
   │ Scrivi direttamente a  │                      │
   │ email / tel            │ Segui                │
   │ persona 1              │ Instagram, Vimeo...  │
   │ persona 2              │                      │
   ├────────────────────────┴──────────────────────┤
   │      frase finale centrata                    │
   └───────────────────────────────────────────────┘
   Footer nascosto sotto il fold come homepage.
   --------------------------------------------------------------------- */

/* Label "CONTATTI" */
.ct__label {
    display: block;
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--colore-muted);
    margin-bottom: clamp(0.8rem, 1.5vw, 1.2rem);
}

/* Titoletti sezione: "Scrivi direttamente a", "Dove trovarci", "Segui" */
.ct__titoletto {
    display: block;
    font-size: var(--testo-sm);
    font-weight: var(--font-peso-regular);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--colore-muted);
    margin-bottom: clamp(0.5rem, 0.8vw, 0.7rem);
}


/* --- 17.3.1 PAGINA --- */

.ct {
    padding-top: calc(var(--navbar-altezza) + clamp(2rem, 4vw, 3rem));
    padding-bottom: 0;
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
}

.ct__inner {
    max-width: 1140px;
    flex: 1;
    display: grid;
    grid-template-columns: 1fr;
    gap: clamp(2rem, 3vw, 2.5rem);
}

/* Footer sotto il fold — si scopre scrollando come in homepage */
.page-contact .footer {
    position: static;
    z-index: 1;
}

.page-contact .sito__contenuto {
    position: relative;
    z-index: 2;
    min-height: 100vh;
    min-height: 100dvh;
    margin-bottom: 0;
    padding-top: 0;
    background: var(--colore-sfondo);
}

/* DESKTOP: griglia 3 righe — intro larga, contatti e dove allineati, finale in fondo */
@media (min-width: 768px) {
    .ct__inner {
        grid-template-columns: 3fr 2fr;
        grid-template-rows: auto auto 1fr;
        column-gap: clamp(3rem, 6vw, 6rem);
        row-gap: clamp(2rem, 3.5vw, 2.5rem);
    }

    /* Riga 1: intro occupa 4/5 */
    .ct__intro {
        grid-column: 1 / -1;
        grid-row: 1;
        max-width: 80%;
    }

    /* Riga 2: contatti sx, dove+social dx — allineati in alto */
    .ct__contatti {
        grid-column: 1;
        grid-row: 2;
        align-self: start;
    }

    .ct__dx {
        grid-column: 2;
        grid-row: 2;
        align-self: start;
    }

    /* Riga 3: frase finale centrata nello spazio restante */
    .ct__finale {
        grid-column: 1 / -1;
        grid-row: 3;
        display: flex;
        align-items: center;
        justify-content: center;
    }
}


/* --- 17.3.2 COLONNA SX — Frase + contatti --- */

.ct__intro {
    margin-bottom: clamp(1.5rem, 3vw, 2.5rem);
}

.ct__frase {
    font-size: clamp(1.4rem, 2.6vw, 2.2rem);
    font-weight: var(--font-peso-light);
    line-height: 1.35;
    color: rgba(255, 255, 255, 0.95);
}

/* Contatti sotto la frase */
.ct__contatti {
    display: flex;
    flex-direction: column;
}

.ct__link-email {
    display: block;
    font-size: clamp(1.1rem, 1.5vw, 1.35rem);
    font-weight: var(--font-peso-light);
    transition: opacity var(--transizione);
    word-break: break-all;
    margin-bottom: 0.15rem;
}

.ct__link-email:hover { opacity: 0.5; }

.ct__link-tel {
    display: block;
    font-size: var(--testo-base);
    font-weight: var(--font-peso-light);
    color: var(--colore-muted);
    transition: opacity var(--transizione);
    margin-bottom: clamp(0.5rem, 0.8vw, 0.7rem);
}

.ct__link-tel:hover { opacity: 0.5; }

.ct__persona {
    padding: clamp(0.35rem, 0.5vw, 0.45rem) 0;
}

.ct__persona + .ct__persona {
    border-top: 1px solid rgba(255, 255, 255, 0.05);
}

.ct__persona-nome {
    font-size: var(--testo-base);
    font-weight: var(--font-peso-medium);
    line-height: 1.3;
}

.ct__persona-ruolo {
    font-size: var(--testo-sm);
    color: var(--colore-muted);
    letter-spacing: 0.03em;
    margin-left: 0.4rem;
}

.ct__persona-link {
    display: block;
    font-size: var(--testo-sm);
    font-weight: var(--font-peso-light);
    color: rgba(255, 255, 255, 0.4);
    transition: color var(--transizione);
    margin-top: 0.1rem;
}

.ct__persona-link:hover { color: var(--colore-testo); }


/* --- 17.3.3 COLONNA DX — Dove trovarci + Social --- */

.ct__dx {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: clamp(2rem, 3.5vw, 3rem);
}

.ct__dove-nome {
    display: block;
    font-size: var(--testo-sm);
    font-weight: var(--font-peso-medium);
    line-height: 1.3;
    margin-bottom: 0.15rem;
}

.ct__dove-addr {
    font-style: normal;
    font-size: var(--testo-sm);
    font-weight: var(--font-peso-light);
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.35);
}

.ct__dove-addr span { display: block; }

.ct__social-lista {
    display: flex;
    flex-wrap: wrap;
    gap: clamp(0.6rem, 1vw, 0.9rem);
}

.ct__social-link {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    color: var(--colore-testo);
    transition: opacity var(--transizione);
}

.ct__social-link svg {
    width: 15px;
    height: 15px;
    flex-shrink: 0;
}

.ct__social-link span {
    font-size: var(--testo-sm);
    font-weight: var(--font-peso-light);
}

.ct__social-link:hover { opacity: 0.4; }


/* --- 17.3.4 FRASE FINALE — Centrata sotto le colonne --- */

.ct__finale {
    text-align: center;
    padding: clamp(1rem, 2vw, 1.5rem) 0 clamp(2rem, 3vw, 2.5rem);
}

.ct__finale-testo {
    font-size: clamp(1.05rem, 1.5vw, 1.3rem);
    font-weight: var(--font-peso-light);
    line-height: 1.55;
    color: rgba(255, 255, 255, 0.45);
    max-width: 560px;
    margin: 0 auto;
}


/* --- 17.3.5 RESPONSIVE --- */

@media (max-width: 767px) {
    .ct {
        min-height: auto;
        padding-top: calc(var(--navbar-altezza) + clamp(2rem, 4vw, 2.5rem));
    }

    .page-contact .footer {
        position: static;
    }

    .page-contact .sito__contenuto {
        margin-bottom: 0;
    }
}


/* ==========================================================================
   18. PAGINE LEGALI (Privacy Policy, Cookie Policy)
   ========================================================================== */

.page-legal .navbar {
    background: rgba(0, 0, 0, 0.96);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.page-legal .sito__contenuto {
    padding-top: var(--navbar-altezza);
}

.legal__header {
    padding: clamp(2rem, 4vw, 4rem) 0 clamp(1rem, 2vw, 2rem);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.legal__title {
    font-size: clamp(1.4rem, 2.5vw, 2rem);
    font-weight: var(--font-peso-light);
    letter-spacing: 0.03em;
    margin-bottom: 0.3rem;
}

.legal__updated {
    font-size: var(--testo-xs);
    color: var(--colore-muted);
}

/* Indice */
.legal__toc {
    padding: clamp(1rem, 2vw, 1.5rem) 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.04);
}

.legal__toc-title {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-medium);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--colore-muted);
    margin-bottom: 0.6rem;
}

.legal__toc-list {
    list-style: none;
}

.legal__toc-list li {
    padding: 0.15rem 0;
}

.legal__toc-list a {
    font-size: var(--testo-xs);
    font-weight: var(--font-peso-light);
    color: var(--colore-muted);
    transition: color var(--transizione);
}

.legal__toc-list a:hover {
    color: var(--colore-testo);
}

/* Sezioni */
.legal__section {
    padding: clamp(1.5rem, 2.5vw, 2rem) 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.03);
}

.legal__heading {
    font-size: clamp(1rem, 1.2vw, 1.15rem);
    font-weight: var(--font-peso-medium);
    margin-bottom: 0.8rem;
}

.legal__subheading {
    font-size: var(--testo-sm);
    font-weight: var(--font-peso-medium);
    margin-top: 1rem;
    margin-bottom: 0.4rem;
}

.legal__section p {
    font-size: var(--testo-sm);
    font-weight: var(--font-peso-light);
    line-height: 1.7;
    color: rgba(255, 255, 255, 0.7);
    margin-bottom: 0.6rem;
}

.legal__list {
    list-style: none;
    padding-left: 0;
    margin-bottom: 0.6rem;
}

.legal__list li {
    font-size: var(--testo-sm);
    font-weight: var(--font-peso-light);
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.7);
    padding: 0.15rem 0;
    padding-left: 1rem;
    position: relative;
}

.legal__list li::before {
    content: '—';
    position: absolute;
    left: 0;
    color: var(--colore-muted);
}

/* Tabelle cookie */
.legal__table {
    width: 100%;
    border-collapse: collapse;
    margin: 0.8rem 0;
    font-size: var(--testo-xs);
}

.legal__table th,
.legal__table td {
    text-align: left;
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.legal__table th {
    font-weight: var(--font-peso-medium);
    color: var(--colore-muted);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: clamp(0.65rem, 0.75vw, 0.72rem);
}

.legal__table td {
    font-weight: var(--font-peso-light);
    color: rgba(255, 255, 255, 0.7);
}

.legal__section a {
    color: var(--colore-testo);
    text-decoration: underline;
    text-decoration-color: rgba(255, 255, 255, 0.2);
    text-underline-offset: 2px;
    transition: text-decoration-color var(--transizione);
}

.legal__section a:hover {
    text-decoration-color: var(--colore-testo);
}


/* ==========================================================================
   19. PAGINA PERSONA
   ========================================================================== */

.page-persona .navbar {
    background: rgba(0, 0, 0, 0.96);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.page-persona .sito__contenuto {
    padding-top: 0;
}


/* --- Colonna centrale stretta per tutta la pagina persona --- */

.page-persona .contenitore {
    max-width: 720px;
}

/* --- 19.1 PAGE-HEADER PERSONA — standard come tutte le altre pagine --- */

/* Replica esatta di .page-header da documentary-v2.css (non caricato qui):
   stessi padding e stesso grid del componente condiviso, max-width 960px
   come da override in documentary-v2.css */
.page-header--persona {
    max-width: 960px;
    margin: 0 auto;
    padding: 5.1rem 2.5rem 3.5rem;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0;
    align-items: flex-start;
}

.page-header--persona .page-cat {
    font-family: 'Barlow Condensed', sans-serif;
    font-size: var(--testo-xs);
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: rgba(234, 228, 219, 0.70);
    margin-bottom: 0.15rem;
    font-weight: 400;
    display: flex;
    align-items: center;
    gap: 0.8rem;
}

.page-header--persona .page-cat::before {
    content: '';
    display: block;
    width: 1.4rem;
    height: 0.5px;
    background: rgba(234, 228, 219, 0.70);
}

.page-header--persona .page-title {
    font-family: 'Playfair Display', serif;
    font-size: clamp(3rem, 5.5vw, 4.8rem);
    font-weight: 400;
    line-height: 1;
    color: var(--colore-testo);
    white-space: nowrap;
}

.page-header--persona .page-title .dim {
    color: rgba(234, 228, 219, 0.28);
    font-style: italic;
}

/* Blocco ruoli sotto l'header */
.persona__ruoli {
    max-width: 960px;
    margin: 0 auto;
    padding: 0 40px 2.5rem;
}

/* Funzione aziendale (riga 1) */
.persona__funzione {
    font-size: var(--testo-base);
    line-height: 1.5;
    color: rgba(234, 228, 219, 0.80);
    font-weight: 300;
}

/* Ruolo cinematografico (riga 2) */
.persona__ruolo-label {
    font-family: 'Barlow Condensed', sans-serif;
    font-size: var(--testo-xs);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: rgba(234, 228, 219, 0.50);
    font-weight: 400;
    margin-top: 0.35rem;
}


/* --- 19.2 PROFILO SECTION (due colonne: scheda | bio) --- */

.persona__profilo {
    border-top: 0.5px solid rgba(234, 228, 219, 0.14);
}

.persona__profilo-grid {
    display: grid;
    grid-template-columns: 1fr 1.4fr;
    gap: 0 clamp(2.5rem, 4vw, 4.5rem);
    align-items: start;
}

/* Scheda tecnica (colonna sinistra) */
.persona__scheda-grid {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.55rem 1.4rem;
    margin: 0;
}

.persona__scheda-item {
    display: contents;
}

.persona__scheda-key {
    font-family: 'Barlow Condensed', sans-serif;
    font-size: var(--testo-xs);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(234, 228, 219, 0.42);
    font-weight: 400;
    padding: 0.3rem 0;
    white-space: nowrap;
}

.persona__scheda-val {
    font-size: var(--testo-sm);
    color: rgba(234, 228, 219, 0.80);
    font-weight: 300;
    padding: 0.3rem 0;
    margin: 0;
}

.persona__scheda-link {
    color: rgba(234, 228, 219, 0.80);
    text-decoration: none;
    transition: color 0.28s ease;
}

.persona__scheda-link:hover {
    color: #ffffff;
}

/* Bio (colonna destra) */
.persona__bio-col {
    padding-left: clamp(2rem, 3vw, 3rem);
    border-left: 0.5px solid rgba(234, 228, 219, 0.14);
}

.persona__bio {
    font-size: var(--testo-base);
    line-height: 1.75;
    color: rgba(234, 228, 219, 0.75);
    font-weight: 300;
}

/* Caso bio-only: nessuna scheda, bio a tutta larghezza */
.persona__profilo-grid--bio-only {
    grid-template-columns: 1fr;
}

.persona__profilo-grid--bio-only .persona__bio-col {
    padding-left: 0;
    border-left: none;
    max-width: 640px;
}


/* --- 19.3 GENERIC SECTION WRAP --- */

.persona__section-wrap {
    max-width: 960px;
    margin: 0 auto;
    padding: 2.5rem;
}


/* --- 19.4 SHOWREEL --- */

.persona__showreel {
    border-top: 0.5px solid rgba(234, 228, 219, 0.14);
}

/* Forma 16:9, sfondo e adattamento arrivano dal modulo video (.m-video):
   lo showreel non ha bisogno di stili propri. */


/* --- 19.5 FILMOGRAFIA --- */

.persona__filmografia {
    border-top: 0.5px solid rgba(234, 228, 219, 0.14);
}

.persona__section-label {
    display: block;
    font-family: 'Barlow Condensed', sans-serif;
    font-size: var(--testo-xs);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: rgba(234, 228, 219, 0.70);
    margin-bottom: 1.5rem;
    font-weight: 400;
}

.persona__filmografia-scroll {
    max-height: calc(2.2rem * 8);
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: rgba(234, 228, 219, 0.15) transparent;
}

.persona__filmografia-scroll::-webkit-scrollbar {
    width: 3px;
}

.persona__filmografia-scroll::-webkit-scrollbar-track {
    background: transparent;
}

.persona__filmografia-scroll::-webkit-scrollbar-thumb {
    background: rgba(234, 228, 219, 0.15);
    border-radius: 2px;
}

.persona__film-row {
    display: flex;
    align-items: baseline;
    gap: clamp(0.5rem, 1vw, 0.8rem);
    padding: 0.45rem 0;
    border-bottom: 0.5px solid rgba(234, 228, 219, 0.14);
}

.persona__film-anno {
    font-size: var(--testo-xs);
    color: rgba(234, 228, 219, 0.70);
    letter-spacing: 0.06em;
    flex-shrink: 0;
    min-width: 3em;
    font-weight: 400;
}

.persona__film-titolo {
    font-size: var(--testo-sm);
    font-weight: 400;
    flex: 1;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    color: rgba(234, 228, 219, 0.80);
}

.persona__film-titolo a {
    color: rgba(234, 228, 219, 0.80);
    transition: opacity 0.28s ease;
}

.persona__film-titolo a:hover {
    opacity: 0.7;
}

.persona__film-ruolo {
    font-size: var(--testo-xs);
    color: rgba(234, 228, 219, 0.70);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    flex-shrink: 0;
    white-space: nowrap;
    font-weight: 400;
}


/* --- 19.6 GALLERIA SECTION --- */

.persona__galleria {
    max-width: 960px;
    margin: 0 auto;
    padding: 2.5rem;
    border-top: 0.5px solid rgba(234, 228, 219, 0.14);
}

/* La galleria persona riusa il template showcase delle opere.
   Override per adattare il layout fullscreen al contenitore 960px. */
.persona__gallery-wrap .slide-gallery {
    height: auto;
    min-height: 0;
}

.persona__gallery-wrap .showcase {
    max-width: 100%;
}

.persona__gallery-wrap .showcase__viewer {
    aspect-ratio: 16 / 9;
    max-height: 55vh;
}

.persona__gallery-wrap .showcase__strip {
    margin-top: clamp(0.4rem, 0.8vw, 0.6rem);
}


/* --- 19.7 PREMI SECTION --- */

.persona__premi {
    max-width: 960px;
    margin: 0 auto;
    padding: 2.5rem;
    border-top: 0.5px solid rgba(234, 228, 219, 0.14);
}

.persona__premio-row {
    display: flex;
    align-items: baseline;
    gap: clamp(0.5rem, 1vw, 0.8rem);
    padding: 0.45rem 0;
    border-bottom: 0.5px solid rgba(234, 228, 219, 0.14);
    flex-wrap: wrap;
}

.persona__premio-nome {
    font-size: var(--testo-sm);
    font-weight: 400;
    color: rgba(234, 228, 219, 0.80);
}

.persona__premio-evento {
    font-size: var(--testo-xs);
    font-weight: 300;
    color: rgba(234, 228, 219, 0.70);
    flex: 1;
}

.persona__premio-anno {
    font-size: var(--testo-xs);
    font-weight: 400;
    color: rgba(234, 228, 219, 0.70);
    letter-spacing: 0.06em;
    flex-shrink: 0;
}

.persona__premio-opera {
    font-size: var(--testo-xs);
    font-weight: 300;
    color: rgba(234, 228, 219, 0.35);
    font-style: italic;
}


/* --- 19.8 LINK PERSONA (nei credits opera) --- */

.persona-link {
    color: inherit;
    text-decoration: underline;
    text-decoration-color: rgba(255, 255, 255, 0.35);
    text-underline-offset: 2px;
    transition: text-decoration-color var(--transizione), color var(--transizione);
    cursor: pointer;
}

.persona-link:hover {
    text-decoration-color: var(--colore-testo);
    color: var(--colore-testo);
}


/* --- 19.9 RESPONSIVE PERSONA --- */

@media (max-width: 767px) {
    .page-header--persona {
        grid-template-columns: 1fr;
        padding: calc(var(--navbar-altezza) + 0.6rem) 1.5rem 1.5rem;
    }

    .page-header--persona .page-title {
        white-space: normal;
    }

    .persona__ruoli {
        padding: 0 1.5rem 2rem;
    }

    .persona__profilo-grid {
        grid-template-columns: 1fr;
        gap: 2rem 0;
    }

    .persona__bio-col {
        padding-left: 0;
        border-left: none;
        border-top: 0.5px solid rgba(234, 228, 219, 0.14);
        padding-top: 1.5rem;
    }

    .persona__section-wrap {
        padding: 2rem 1.5rem;
    }
}

@media (max-width: 600px) {
    .page-header--persona {
        padding: calc(var(--navbar-altezza) + 0.6rem) 1.5rem;
    }

    .page-header--persona .page-title {
        font-size: clamp(2rem, 7vw, 3rem);
    }

    .persona__filmografia,
    .persona__galleria,
    .persona__premi,
    .persona__showreel {
        padding-left: 1.5rem;
        padding-right: 1.5rem;
    }
}


/* --- 19.10 CTA PERSONA (documentary-v2.css non caricato qui) --- */

.page-header--persona ~ .cta-row {
    background: #000000;
    max-width: 1100px;
    margin: 0 auto;
    padding: 2.5rem 2.5rem 4rem;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 3rem;
    border-top: 0.5px solid rgba(234, 228, 219, 0.14);
    border-bottom: 0.5px solid rgba(234, 228, 219, 0.14);
}

.page-header--persona ~ .cta-row .cta-label {
    font-family: 'Barlow Condensed', sans-serif;
    font-size: clamp(0.78rem, 0.9vw, 0.92rem);
    letter-spacing: 0.26em;
    text-transform: uppercase;
    color: rgba(234, 228, 219, 0.80);
    margin-bottom: 0.65rem;
    font-weight: 400;
}

.page-header--persona ~ .cta-row .cta-statement {
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: clamp(1.02rem, 1.35vw, 1.2rem);
    color: rgba(234, 228, 219, 0.55);
    line-height: 1.6;
}

.page-header--persona ~ .cta-row .cta-action {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 1rem;
}

.page-header--persona ~ .cta-row .cta-sub {
    font-size: clamp(0.88rem, 1vw, 1.05rem);
    color: rgba(234, 228, 219, 0.80);
    text-align: right;
    line-height: 1.6;
}

.page-header--persona ~ .cta-row .btn-cta {
    display: inline-block;
    font-family: 'Barlow Condensed', sans-serif;
    font-size: clamp(0.78rem, 0.9vw, 0.92rem);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: #ffffff;
    background: transparent;
    border: 0.5px solid rgba(234, 228, 219, 0.22);
    padding: 0.75em 2em;
    text-decoration: none;
    cursor: pointer;
    transition: border-color 0.28s ease, background 0.28s ease;
}

.page-header--persona ~ .cta-row .btn-cta:hover {
    border-color: rgba(234, 228, 219, 0.5);
    background: rgba(234, 228, 219, 0.04);
}

@media (max-width: 767px) {
    .page-header--persona ~ .cta-row {
        flex-direction: column;
        gap: 2rem;
        padding-left: 1.5rem;
        padding-right: 1.5rem;
    }

    .page-header--persona ~ .cta-row .cta-action {
        align-items: flex-start;
    }

    .page-header--persona ~ .cta-row .cta-sub {
        text-align: left;
    }
}


/* ==========================================================================
   20. FIX MOBILE GLOBALI
   ==========================================================================
   Correzioni per dispositivi mobili (< 768px) e iOS Safari.
   Coprono: font-size minimi, touch target, viewport iOS, safe-area,
   overflow, padding eccessivi, tabelle legali.
   ========================================================================== */


/* --- 20.1 iOS: viewport dinamico + safe-area --- */

/* Altezza dinamica per iOS Safari (address bar) */
@supports (height: 100dvh) {
    .hero {
        height: 100dvh;
    }
    .opera {
        height: 100dvh;
    }
}

/* Safe-area per iPhone con notch/Dynamic Island */
@supports (padding: env(safe-area-inset-top)) {
    .navbar {
        padding-top: env(safe-area-inset-top, 0);
    }
    .home .footer {
        padding-bottom: max(var(--spazio-md, 2rem), env(safe-area-inset-bottom, 0));
    }
    .opera__nav {
        padding-bottom: env(safe-area-inset-bottom, 0);
    }
}

/* Impedisci che lo swipe orizzontale dell'opera confligga col gesto "indietro" del browser */
.opera__track {
    overscroll-behavior-x: contain;
}


/* --- 20.2 Font-size minimi: niente sotto 11px --- */

@media (max-width: 767px) {

    /* Archivio: tag e bottoni piccoli */
    .archive-item--list .doc-tag--sm,
    .archive-item--list .doc-btn--xs,
    .archive-item--selected .doc-card__tags .doc-tag,
    .archive-item--selected .doc-btn--sm {
        font-size: 0.69rem; /* 11px minimo */
    }

    /* Archivio: reset, contatore, dropdown */
    .archive-bar__reset {
        font-size: 0.69rem;
    }

    .archive-bar__count {
        font-size: 0.69rem;
    }

    .archive-dropdown__option {
        font-size: 0.69rem;
    }

    /* Legale: tabelle */
    .legal__table th {
        font-size: 0.69rem;
    }

    /* Persona: filmografia e premi */
    .persona__film-ruolo {
        font-size: 0.69rem;
    }

    .persona__film-anno,
    .persona__premio-anno,
    .persona__premio-opera {
        font-size: 0.69rem;
    }
}


/* --- 20.3 Touch target: minimo 44px per elementi cliccabili --- */

@media (max-width: 767px) {

    /* Hamburger: area tap 44x44 */
    .navbar__burger {
        min-width: 44px;
        min-height: 44px;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    /* Toggle lingua: area tap adeguata */
    .navbar__lingua-link {
        padding: 10px 6px;
    }

    /* Archivio: dropdown trigger */
    .archive-dropdown__trigger {
        min-height: 40px;
        padding: 0.4rem 0.55rem;
    }

    /* Archivio: opzioni dropdown */
    .archive-dropdown__option {
        padding: 0.55rem 0.8rem;
        min-height: 40px;
        display: flex;
        align-items: center;
    }

    /* Archivio: tasto reset */
    .archive-bar__reset {
        padding: 0.4rem 0.7rem;
        min-height: 40px;
    }

    /* Opera: dot navigazione */
    .opera__nav-dot {
        padding: 14px 10px;
    }

    /* Footer: link legali */
    .footer__policy-link {
        padding: 0.4rem 0.2rem;
    }

    /* Persona: link sociali */
    .persona__link {
        padding: 0.35rem 0;
    }

    /* Bottoni documentari */
    .doc-btn {
        min-height: 40px;
        display: inline-flex;
        align-items: center;
    }

    /* TOC legale */
    .legal__toc-list li {
        padding: 0.35rem 0;
    }
}


/* --- 20.4 Layout mobile: overflow, padding, wrap --- */

@media (max-width: 767px) {

    /* Featured: immagine meno stretta su mobile */
    .doc-featured__media {
        aspect-ratio: 16 / 9;
    }

    /* Synopsis: meno padding laterale */
    .slide-synopsis {
        padding: 1.5rem var(--padding-contenitore);
    }

    /* Scheda tecnica nella synopsis: rimuovi min-width e bordo */
    .slide-synopsis__scheda {
        min-width: 0;
        padding-left: 0;
        border-left: none;
        margin-top: 1rem;
    }

    /* Credits: meno padding */
    .slide-credits {
        padding: 2rem var(--padding-contenitore);
    }

    /* Credits: ruoli lunghi possono andare a capo */
    .slide-credits__role {
        white-space: normal;
    }

    /* Scheda tecnica: chiavi lunghe possono andare a capo */
    .slide-synopsis__scheda-item dt,
    .slide-technical__key {
        white-space: normal;
    }

    /* Lista item: titolo con ellipsis per evitare overflow */
    .doc-list-item__title {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        min-width: 0;
    }

    /* Persona filmografia: righe che vanno a capo su mobile */
    .persona__film-row {
        flex-wrap: wrap;
    }

    .persona__film-titolo {
        white-space: normal;
        flex: 1 1 100%;
        order: 1;
    }

    .persona__film-anno {
        order: 0;
    }

    .persona__film-ruolo {
        order: 2;
        white-space: normal;
    }

    /* Tabelle legali: scroll orizzontale */
    .legal__table {
        display: block;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    /* Festival: 2 colonne invece di 3 (esclusi i laurel singoli centrati) */
    .slide-festivals__laurels:not(.slide-festivals__laurels--centered) {
        grid-template-columns: repeat(2, 1fr);
    }

    /* Festival lista: righe che vanno a capo */
    .slide-festivals__list-item {
        flex-wrap: wrap;
    }

    /* Dropdown archivio: posizione corretta su mobile */
    .archive-dropdown__menu {
        position: absolute;
        left: 0;
        right: auto;
        min-width: 200px;
        max-width: calc(100vw - 2 * var(--padding-contenitore));
    }

    /* Press: footer impilato, dividers tra articoli */
    .slide-press__footer {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5em;
    }
    .slide-press__meta {
        align-self: flex-end;
    }
    .slide-press__article {
        padding-bottom: 1.2em;
        border-bottom: 1px solid rgba(255,255,255,0.06);
        margin-bottom: 0.2em;
    }
    .slide-press__article:last-child {
        border-bottom: none;
    }
    /* PDF lightbox: pieno schermo su mobile */
    .sgal-lightbox__pdf {
        width: 95vw;
        height: 85vh;
    }
}

/* Link wrapper per loghi partner */
.slide-credits__partner-link {
    position: absolute;
    top: 0;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
}

.slide-credits__partner-link:hover .slide-credits__partner-logo {
    opacity: 0.6;
}


/* ==========================================================================
   MODULO VIDEO — .m-video
   ==========================================================================
   Stili del blocco video riusabile (template-parts/media/video.php).
   Sta in main.css perche' e' l'unico foglio caricato su TUTTE le pagine:
   il modulo deve funzionare anche dove documentary-v2.css non arriva
   (pagina Persona, Archivio, Opera).

   Tre modalita', scelte dal parametro `ratio` del modulo:
     .m-video--fixed     proporzione fissa (--m-video-ratio), es. 16/9, 9/16
     .m-video--auto      il video decide l'altezza (mostrato intero, no tagli)
     .m-video--viewport  riempie la finestra (hero a tutto schermo)

   Personalizzabili per istanza via variabili CSS, senza toccare questo file:
     --m-video-ratio  proporzione (solo in modalita' fixed)
     --m-video-fit    cover | contain
     --m-video-bg     colore di sfondo del contenitore
   ========================================================================== */

.m-video {
    position: relative;
    width: 100%;
    overflow: hidden;
    background: var(--m-video-bg, #000);
    line-height: 0; /* elimina lo spazio fantasma sotto il video inline */
}

/* --- Modalita' 1: proporzione fissa --------------------------------------- */
.m-video--fixed {
    aspect-ratio: var(--m-video-ratio, 16 / 9);
}

/* Su telefono un formato molto panoramico (es. 50/9) diventerebbe una fessura:
   il modulo accetta una proporzione dedicata al mobile. */
@media (max-width: 767px) {
    .m-video--fixed {
        aspect-ratio: var(--m-video-ratio-mobile, var(--m-video-ratio, 16 / 9));
    }
}

.m-video--fixed .m-video__el,
.m-video--viewport .m-video__el {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: var(--m-video-fit, cover);
}

/* --- Modalita' 2: altezza dal contenuto ----------------------------------- */
/* Il video mantiene le sue proporzioni native: usala per 4:3 o 9:16 quando
   il fotogramma va visto per intero. Nessun aspect-ratio sul contenitore. */
.m-video--auto .m-video__el {
    position: static;
    display: block;
    width: 100%;
    height: auto;
}

/* --- Modalita' 3: a tutto schermo ----------------------------------------- */
.m-video--viewport {
    height: 100vh;
    height: 100dvh; /* su mobile esclude le barre del browser: niente tagli */
}

/* --- Comportamenti comuni -------------------------------------------------- */
/* Il video apre il player modale al click */
.m-video__el[data-modal-url] {
    cursor: pointer;
}

/* Con i controlli nativi visibili il ritaglio 'cover' nasconderebbe parte
   dell'immagine sotto la barra: manteniamo comunque il riempimento, ma
   assicuriamo che i controlli restino raggiungibili. */
.m-video__el[controls] {
    z-index: 1;
}
