/* ==========================================================================
   SUNYA - dadesign Consent (da-consent) nel contenuto di pagina
   v1.13.0 - accodato solo col plugin attivo (functions.php).

   Qui: la tabella cookie (blocco dadesign/consent-cookie-table, shortcode
   [da_consent_cookie_table]), il link preferenze dentro il contenuto
   (blocco dadesign/consent-preferences) e, dalla v1.14.0, il testo della
   privacy Iubenda letto dall'API (blocco dadesign/consent-iubenda-policy,
   shortcode [da_consent_iubenda_policy]). NON la barra ne' il pannello:
   quelli seguono le variabili --da-consent-* e il brand del child.

   Tutto sotto .sunya-entry-content: specificita' 0,2,x, batte il CSS base
   del plugin (0,1,1) senza !important e non tocca la stessa classe fuori
   dal contenuto (la voce "Preferenze cookie" del footer ha la stessa
   classe .da-consent-open).

   Markup letto su da-consent 0.8.0 (src/Frontend/views/cookie-table.php):
   un <section> per categoria, un <tbody> unico, il servizio come
   th[scope=row] con fornitore in rowspan, poi tre td per cookie (nome in
   <code>, durata, finalita'). Nessuna classe sulle celle: la posizione si
   legge da destra (nth-last-child), che non cambia fra la prima riga del
   servizio (5 celle) e le successive (3).
   ========================================================================== */


/* --------------------------------------------------------------------------
   Gruppi
   -------------------------------------------------------------------------- */

/* overflow-x (v1.13.1): rete di sicurezza. Se un elenco futuro allarga la
   tabella oltre il contenitore, scorre il gruppo e non la pagina. */
.sunya-entry-content .da-consent-table__group {
    margin: 0;
    overflow-x: auto;
}

.sunya-entry-content .da-consent-table__group + .da-consent-table__group {
    margin-top: var(--sunya-spacing-2xl);
}

.sunya-entry-content .da-consent-table__title {
    margin: 0 0 var(--sunya-spacing-sm);
}

.sunya-entry-content .da-consent-table__description {
    margin: 0 0 var(--sunya-spacing-md);
    color: var(--sunya-color-text-light);
}


/* --------------------------------------------------------------------------
   Tabella (desktop)
   Stessa grammatica di .wp-block-table (css/blocks.css): testata su
   surface-dark-alt, corpo piccolo. Niente zebra: col rowspan una zebra a
   righe taglierebbe in due il servizio. Al suo posto un filetto piu'
   marcato fra un servizio e l'altro.
   -------------------------------------------------------------------------- */

.sunya-entry-content .da-consent-table__table {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
    font-size: var(--sunya-font-size-sm);
    line-height: 1.5;
}

.sunya-entry-content .da-consent-table__table th,
.sunya-entry-content .da-consent-table__table td {
    padding: var(--sunya-spacing-sm) var(--sunya-spacing-md);
    border: 0;
    border-bottom: 1px solid var(--sunya-color-border);
    text-align: start;
    vertical-align: top;
}

.sunya-entry-content .da-consent-table__table thead th {
    background-color: var(--sunya-color-surface-dark-alt, var(--sunya-color-surface-dark));
    color: var(--sunya-color-text-on-dark);
    font-weight: var(--sunya-font-weight-bold);
    border-bottom: 0;
    white-space: nowrap;
}

/* Servizio. Il colore va dichiarato: style.css ha `th { color:
   var(--sunya-color-primary) }`, che non segue la modalita' (1.16 sul
   fondo Scuro di roxzonemedia, misurato in locale il 17/10). */
.sunya-entry-content .da-consent-table__table tbody th[scope="row"] {
    color: var(--sunya-color-text);
    font-weight: var(--sunya-font-weight-bold);
}

/* Inizio di un servizio (escluso il primo): filetto fra servizi */
.sunya-entry-content .da-consent-table__table tbody tr:has(> th[scope="row"]):not(:first-child) > * {
    border-top: 2px solid color-mix(in oklab, var(--sunya-color-border) 40%, var(--sunya-color-text));
}

/* Durata: corta, non va a capo; la finalita' prende lo spazio */
.sunya-entry-content .da-consent-table__table td:nth-last-child(2) {
    white-space: nowrap;
}

/* Nome del cookie */
.sunya-entry-content .da-consent-table__table code {
    padding: 0.1em 0.4em;
    border-radius: var(--sunya-radius-sm);
    background-color: color-mix(in oklab, var(--sunya-color-bg) 90%, var(--sunya-color-text));
    color: var(--sunya-color-text);
    font-size: 0.95em;
    /* nowrap a desktop: con overflow-wrap:anywhere il layout automatico della
       tabella prende il min-content a un carattere e spezza i nomi
       ("wordpress_t / est_cookie", provato in locale il 17/10). */
    white-space: nowrap;
}


/* --------------------------------------------------------------------------
   Mobile e tablet in verticale (<= 899px): una scheda per servizio.
   v1.13.1: era 640, la soglia del plugin. Con i 12 servizi di dadesign.it la
   tabella ha un min-content di ~672px: fra 641 e ~730 usciva dallo schermo
   (a 700 finiva a x 711, misurato sul servito il 17/10). Fra 768 e 899 non
   usciva piu', ma la Finalita' restava a 175-195px e le righe a 165px di
   altezza; da 900 la colonna e' a 279px e le righe a 102.

   Servizio in testa, fornitore sotto, poi per ogni cookie "nome · durata"
   e la finalita' in grigio. Nessuna etichetta ripetuta: niente testo nel
   CSS da tradurre. La testata resta nel DOM, nascosta a schermo.
   ⚠️ display:block toglie la semantica di tabella in Safari: i ruoli ARIA
   espliciti li chiede la NOTA a da-consent del 2026-10-17.
   -------------------------------------------------------------------------- */

@media (max-width: 899px) {

    .sunya-entry-content .da-consent-table__table,
    .sunya-entry-content .da-consent-table__table tbody,
    .sunya-entry-content .da-consent-table__table tr {
        display: block;
        overflow: visible;
    }

    .sunya-entry-content .da-consent-table__table thead {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip-path: inset(50%);
        white-space: nowrap;
    }

    .sunya-entry-content .da-consent-table__table tbody tr {
        display: grid;
        grid-template-columns: auto 1fr;
        column-gap: var(--sunya-spacing-sm);
        padding: var(--sunya-spacing-sm) 0;
        border-top: 1px dashed var(--sunya-color-border);
    }

    .sunya-entry-content .da-consent-table__table tbody tr:has(> th[scope="row"]) {
        padding-top: var(--sunya-spacing-md);
        border-top: 2px solid color-mix(in oklab, var(--sunya-color-border) 40%, var(--sunya-color-text));
    }

    .sunya-entry-content .da-consent-table__table tbody tr:last-child {
        border-bottom: 2px solid color-mix(in oklab, var(--sunya-color-border) 40%, var(--sunya-color-text));
    }

    .sunya-entry-content .da-consent-table__table th,
    .sunya-entry-content .da-consent-table__table td {
        display: block;
        padding: 0;
        border: 0;
        white-space: normal;
    }

    /* Il filetto fra servizi a desktop sta sulle celle: qui sta sulla riga.
       Solo il bordo: un display qui (0,4,3) batterebbe il display:none
       del servizio senza cookie, piu' sotto. */
    .sunya-entry-content .da-consent-table__table tbody tr:has(> th[scope="row"]):not(:first-child) > * {
        border-top: 0;
    }

    /* Servizio e fornitore a tutta riga */
    .sunya-entry-content .da-consent-table__table th[scope="row"],
    .sunya-entry-content .da-consent-table__table th[scope="row"] + td {
        grid-column: 1 / -1;
    }

    .sunya-entry-content .da-consent-table__table th[scope="row"] {
        font-size: var(--sunya-font-size-base);
    }

    .sunya-entry-content .da-consent-table__table th[scope="row"] + td {
        margin-bottom: var(--sunya-spacing-sm);
    }

    /* Cookie e durata sulla stessa riga */
    .sunya-entry-content .da-consent-table__table td:nth-last-child(2) {
        color: var(--sunya-color-text-light);
        white-space: normal;
    }

    .sunya-entry-content .da-consent-table__table td:nth-last-child(2)::before {
        content: "\00B7\00A0";
        content: "\00B7\00A0" / "";
    }

    /* Finalita' a tutta riga, sotto */
    .sunya-entry-content .da-consent-table__table td:last-child {
        grid-column: 1 / -1;
        margin-top: var(--sunya-spacing-xs);
        color: var(--sunya-color-text-light);
    }

    .sunya-entry-content .da-consent-table__table code {
        white-space: normal;
        overflow-wrap: anywhere;
    }

    /* Servizio senza cookie: la cella cookie non ha <code> (esce "—").
       Via il "— · —", resta il testo "Nessun cookie: solo richieste di rete". */
    .sunya-entry-content .da-consent-table__table td:nth-last-child(3):not(:has(code)),
    .sunya-entry-content .da-consent-table__table td:nth-last-child(3):not(:has(code)) + td {
        display: none;
    }

    .sunya-entry-content .da-consent-table__table td:nth-last-child(3):not(:has(code)) ~ td:last-child {
        margin-top: 0;
    }
}


/* --------------------------------------------------------------------------
   Link preferenze nel contenuto: pulsante secondario
   Il wrapper .wp-block-dadesign-consent-preferences lo aggiunge il tema
   (inc/consent.php) finche' il plugin rende il blocco come <a> nudo.
   Token e stati di .sunya-btn--outline (css/buttons.css).
   -------------------------------------------------------------------------- */

.sunya-entry-content .wp-block-dadesign-consent-preferences {
    margin-top: var(--sunya-spacing-lg);
    margin-bottom: var(--sunya-spacing-lg);
}

.sunya-entry-content .wp-block-dadesign-consent-preferences > .da-consent-open {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.75em 1.75em;
    font-family: var(--sunya-font-body);
    font-size: var(--sunya-font-size-base);
    font-weight: var(--sunya-font-weight-medium);
    line-height: 1.4;
    text-decoration: none;
    background-color: transparent;
    color: var(--sunya-color-accent-ink, var(--sunya-color-accent));
    border: 2px solid var(--sunya-color-accent-ink, var(--sunya-color-accent));
    border-radius: var(--sunya-radius-md);
    cursor: pointer;
    transition: color var(--sunya-transition-base),
                background-color var(--sunya-transition-base),
                border-color var(--sunya-transition-base),
                box-shadow var(--sunya-transition-base),
                transform var(--sunya-transition-fast);
}

.sunya-entry-content .wp-block-dadesign-consent-preferences > .da-consent-open:hover {
    background-color: var(--sunya-color-accent);
    color: var(--sunya-color-on-accent, #ffffff);
    border-color: var(--sunya-color-accent);
    text-decoration: none;
    transform: translateY(-2px);
    box-shadow: 0 4px 12px color-mix(in oklab, var(--sunya-color-accent) 25%, transparent);
}

.sunya-entry-content .wp-block-dadesign-consent-preferences > .da-consent-open:active {
    transform: translateY(0);
}

.sunya-entry-content .wp-block-dadesign-consent-preferences > .da-consent-open:focus-visible {
    outline: 2px solid var(--sunya-color-accent-ink, var(--sunya-color-accent));
    outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
    .sunya-entry-content .wp-block-dadesign-consent-preferences > .da-consent-open,
    .sunya-entry-content .wp-block-dadesign-consent-preferences > .da-consent-open:hover {
        transition: none;
        transform: none;
    }
}


/* --------------------------------------------------------------------------
   Privacy policy Iubenda (v1.14.0)
   Blocco dadesign/consent-iubenda-policy e shortcode, da-consent >= 0.9.0.

   Markup letto sulle tre policy vere il 18/10 (dadesign, davidearduini,
   laviadelghiaccio, identico): radice div.da-consent-iubenda, due <p> di
   testa (benvenuto, "Ultima modifica"), poi un <section> per H2 (10).
   Dentro: H3 di sottosezione; ogni servizio e' un <details> con
   summary > div > (h4 nome + div > p con span.sr-only); nel corpo h5 come
   etichette ("Dati Personali trattati:") seguiti da <ul>, a volte da nulla.
   Un <hr> prima di "Riferimenti legali" (H4) nell'ultima sezione.

   Selettori solo su elementi e struttura: le classi dentro il testo
   (main__section, section__...) sono di Iubenda e cambiano senza avviso.
   Le classi garantite dal plugin: .da-consent-iubenda (radice),
   .da-consent-iubenda__cookie-notice (rimando alla cookie policy).

   Scopato a .sunya-page--legal (0,2,x e oltre) come le altre regole del
   template: fuori dal template il testo resta con la tipografia base. Fa
   eccezione .sr-only: va nascosto ovunque il blocco compaia, o le
   etichette per i lettori di schermo escono a schermo ("Azienda:",
   "Dati Personali trattati:" davanti a ogni servizio, 33 sulla policy
   di dadesign).
   -------------------------------------------------------------------------- */

.da-consent-iubenda .sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}

/* Stacco di sezione: gli H2 qui stanno dentro un <section>, non sono figli
   di primo livello del contenuto, quindi lo stacco del template
   (> h2:not(:first-child), page-templates.css) non li prende. Stessa
   misura, sul contenitore. */
.sunya-page--legal .da-consent-iubenda > * + section {
    margin-top: var(--sunya-spacing-2xl);
}

/* Sottosezioni. Il parent da' all'H3 il 2xl (24px, 32 su dadesign): accanto
   all'H2 della colonna non si distingueva. */
.sunya-page--legal .da-consent-iubenda h3 {
    font-size: var(--sunya-font-size-xl);
}

.sunya-page--legal .da-consent-iubenda :not(h2) + h3 {
    margin-top: var(--sunya-spacing-xl);
}

/* H4 fuori dai servizi: voci di "Definizioni e riferimenti legali" */
.sunya-page--legal .da-consent-iubenda section > h4 {
    font-size: var(--sunya-font-size-base);
    margin-top: var(--sunya-spacing-lg);
    margin-bottom: var(--sunya-spacing-xs);
}

.sunya-page--legal .da-consent-iubenda hr + h4 {
    margin-top: 0;
}

/* Link nel testo: sottolineati. Nel corpo di una policy il solo colore non
   basta a distinguerli (WCAG 1.4.1): su dadesign il teal sul testo quasi
   nero non arriva a 3:1. */
.sunya-page--legal .da-consent-iubenda :is(p, li) a {
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 0.15em;
}

.sunya-page--legal .da-consent-iubenda :is(p, li) a:hover {
    text-decoration-thickness: 2px;
}


/* Servizi: una riga per servizio, filetto sopra e sotto il gruppo.
   Il parent non ha regole su details (verificato anche nei child: lvg e
   kinesis stilano solo .wp-block-details e le loro classi). */

.sunya-page--legal .da-consent-iubenda details {
    border-top: 1px solid var(--sunya-color-border);
}

.sunya-page--legal .da-consent-iubenda :not(details) + details {
    margin-top: var(--sunya-spacing-md);
}

.sunya-page--legal .da-consent-iubenda details:not(:has(+ details)) {
    border-bottom: 1px solid var(--sunya-color-border);
    margin-bottom: var(--sunya-spacing-lg);
}

.sunya-page--legal .da-consent-iubenda details:last-child {
    margin-bottom: 0;
}

.sunya-page--legal .da-consent-iubenda summary {
    display: flex;
    align-items: flex-start;
    gap: var(--sunya-spacing-md);
    padding: var(--sunya-spacing-md) 0;
    list-style: none;
    cursor: pointer;
}

.sunya-page--legal .da-consent-iubenda summary::-webkit-details-marker {
    display: none;
}

.sunya-page--legal .da-consent-iubenda summary > * {
    flex: 1 1 auto;
    min-width: 0;
}

/* Chevron disegnato coi bordi: nessun glifo, nessun testo da tradurre */
.sunya-page--legal .da-consent-iubenda summary::after {
    content: "";
    flex: 0 0 auto;
    width: 0.55em;
    height: 0.55em;
    margin: 0.3em 0.25em 0 0;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    color: var(--sunya-color-accent-ink, var(--sunya-color-link, var(--sunya-color-accent)));
    transform: rotate(45deg);
    transition: transform var(--sunya-transition-fast);
}

.sunya-page--legal .da-consent-iubenda details[open] > summary::after {
    margin-top: 0.55em;
    transform: rotate(-135deg);
}

.sunya-page--legal .da-consent-iubenda summary:focus-visible {
    outline: 2px solid var(--sunya-color-link, var(--sunya-color-accent));
    outline-offset: 2px;
}

.sunya-page--legal .da-consent-iubenda summary h4 {
    margin: 0;
    font-size: var(--sunya-font-size-base);
    line-height: 1.4;
    transition: color var(--sunya-transition-fast);
}

.sunya-page--legal .da-consent-iubenda summary:hover h4 {
    color: var(--sunya-color-link, var(--sunya-color-accent));
}

/* Riga sotto il nome: azienda, luogo, dati, separati da un punto. Le
   etichette restano nel DOM per i lettori di schermo.
   Il punto sta DAVANTI a ogni voce e la riga parte 1em a sinistra, fuori
   dal contenitore che taglia: cosi' sparisce il punto della prima voce e
   quello di ogni riga che va a capo (a 375px "· Dati di utilizzo" apriva
   la seconda riga). */
.sunya-page--legal .da-consent-iubenda summary > div {
    overflow: hidden;
}

.sunya-page--legal .da-consent-iubenda summary h4 + div {
    display: flex;
    flex-wrap: wrap;
    margin-top: var(--sunya-spacing-xs);
    margin-left: -1em;
    font-size: var(--sunya-font-size-sm);
    line-height: 1.5;
    color: var(--sunya-color-text-light);
}

.sunya-page--legal .da-consent-iubenda summary h4 + div > p {
    margin: 0;
}

.sunya-page--legal .da-consent-iubenda summary h4 + div > p::before {
    content: "\00B7";
    content: "\00B7" / "";
    /* float e non inline-block: Iubenda mette uno spazio dopo l'etichetta
       ("<span class=sr-only>...</span> Dati di utilizzo"); accanto a un
       inline-block lo spazio restava e la voce partiva rientrata, accanto
       a un float e' inizio riga e collassa. */
    float: left;
    width: 1em;
    text-align: center;
}

/* Corpo del servizio */
.sunya-page--legal .da-consent-iubenda summary + div {
    padding: 0 0 var(--sunya-spacing-lg);
}

.sunya-page--legal .da-consent-iubenda summary + div > div {
    margin-top: var(--sunya-spacing-md);
    font-size: var(--sunya-font-size-sm);
}

.sunya-page--legal .da-consent-iubenda h5 {
    margin: var(--sunya-spacing-md) 0 var(--sunya-spacing-xs);
    font-size: var(--sunya-font-size-sm);
    line-height: 1.4;
}

.sunya-page--legal .da-consent-iubenda h5:first-child {
    margin-top: 0;
}

.sunya-page--legal .da-consent-iubenda h5 + ul {
    margin-bottom: 0;
}

/* Etichette senza contenuto. La variante no-markup dell'API stampa sempre
   cinque h5 per servizio, anche vuoti ("Base giuridica per il
   trattamento:" seguito da nulla, "Servizio fornito da:" con un <ul>
   senza voci); la variante con markup, cioe' la resa di Iubenda stessa,
   quegli h5 non li stampa (confrontate il 18/10 sulla policy 43016245).
   Si nascondono qui finche' non li toglie la pulizia del plugin (NOTA a
   da-consent del 2026-10-18): h5 seguito da un altro h5, h5 in coda,
   h5 seguito da un elenco vuoto, e l'elenco vuoto.
   ⚠️ Regole separate e nessun :has() dentro un :has(): non e' valido, e un
   selettore non valido fa scartare in silenzio tutta la lista (successo
   alla prima stesura, misurato nel CSSOM). "+ ul li" e' un solo :has(). */
.sunya-page--legal .da-consent-iubenda h5:has(+ h5) {
    display: none;
}

.sunya-page--legal .da-consent-iubenda h5:last-child {
    display: none;
}

.sunya-page--legal .da-consent-iubenda h5:has(+ ul):not(:has(+ ul li)) {
    display: none;
}

.sunya-page--legal .da-consent-iubenda ul:not(:has(li)) {
    display: none;
}

@media (prefers-reduced-motion: reduce) {
    .sunya-page--legal .da-consent-iubenda summary::after,
    .sunya-page--legal .da-consent-iubenda summary h4 {
        transition: none;
    }
}
