/*
 * Theme Name:   Sunya Child — davidearduini
 * Theme URI:    https://dadesign.it
 * Description:  Child theme di Sunya — personalizzazioni per davidearduini.com. Il brand e' dichiarato via filtro sunya_brand_colors in functions.php.
 * Author:       Davide Arduini
 * Author URI:   https://dadesign.it
 * Template:     sunya
 * Version:      2.1.5
 * License:      GPL-2.0-or-later
 * License URI:  https://www.gnu.org/licenses/gpl-2.0.html
 * Text Domain:  sunya-child
 * Tags:         custom, photography, portfolio
 * Requires at least: 6.0
 * Tested up to: 7.1
 * Requires PHP: 7.4
 *
 * Richiede parent Sunya >= 1.9.6 (ponte heading che rispetta il
 * Customizer: senza, i titoli si appiattiscono sul colore del corpo).
 * Dalla 2.1.3 richiede >= 1.11.1 per la larghezza di pagina: con un
 * parent precedente il max-width della 11.1 non rende (resta 1200) e la
 * 11.11 nemmeno, quindi la pagina e' coerente comunque, solo piu' larga.
 *
 * v2.1.5 (2026-09-21) — FINE DEL TRANSITO. Il prefisso di sito e' `dav-`.
 * Tolte le 40 righe di selettore legacy `.dea-*` introdotte dalla 2.1.4.
 * Nessun valore CSS cambiato in tutto il giro 2.1.3 -> 2.1.5: i tre passi
 * hanno toccato solo nomi. La pagina `/contatti/` era gia' passata a `dav-`
 * nel `post_content` prima di questa versione (blocco 4.788 B,
 * sha256 c76bc3630adbab68), quindi qui non resta niente da reggere.
 * Le occorrenze di `dea-` ancora presenti nel foglio sono SOLO note di
 * cronologia: descrivono cosa conteneva il file allora e restano com'erano
 * scritte. Nessun selettore le usa.
 *
 * v2.1.4 (2026-09-21) — VERSIONE DI TRANSITO, non uno stato finale.
 * Rinomina del prefisso di sito da `dea-` a `dav-` (decisa il 21/09).
 * Ogni selettore della sezione 11 e' DOPPIO: la riga legacy `.dea-*`
 * resta e sopra di essa ne compare una gemella `.dav-*`, per reggere
 * contemporaneamente la pagina live (ancora `dea-`) e il duplicato in
 * bozza (gia' `dav-`). Nessun valore CSS cambiato: solo selettori.
 * Forma: legacy PRIMA, `dav-` per ULTIMO con la graffa, cosi' la 2.1.5
 * e' una cancellazione delle righe che iniziano per `.dea-` e non
 * lascia virgole pendenti.
 * NON serve il prodotto cartesiano (`.dea-page .dav-btn`): una pagina
 * in transito e' o tutta vecchia o tutta nuova, mai mista.
 * L'ancora `#dea-form` NON passa di qui: nessuna regola del foglio e'
 * agganciata a quell'id (lo scroll-margin-top sta su `.dea-page h2`
 * generico, 11.1). `id` e `href` cambiano insieme dentro lo stesso
 * blocco al passo successivo.
 *
 * v2.1.3 (2026-09-19) — larghezza del form allineata a quella del testo.
 * Aggiunta la 11.11: `div.wpforms-container-full { max-width: 820px }`.
 * Il blocco WPForms e' FRATELLO di .dea-page, non figlio (misurato il
 * 19/09 su /contatti/). Rettificata la nota della 11.1 che dava la catena
 * del parent per 0,2,0: era 0,7,0, ed e' il motivo per cui l'820 non
 * rendeva. Nessun valore CSS cambiato oltre all'aggiunta.
 */


/* ==========================================================================
   BRAND — dichiarato in functions.php, non qui

   I sei colori vivono nel filtro sunya_brand_colors:

     surface_dark    #0d0e10   nero brand (footer, hero, sezioni scure)
     surface_light   #ffffff   carta chiara
     accent          #d4b07e   oro decorativo
     accent_contrast #8c6e3a   oro accessibile (4.75:1 su bianco)
     text_on_dark    #e5e7eb   inchiostro su scuro (15.6:1 su #0d0e10)
     text_on_light   #595e67   inchiostro su chiaro (6.56:1 su bianco)

   Da questi il parent deriva tutto il resto: on-accent, accent-ink,
   accent-hover, text-light, bg-alt, border, surface-dark-alt. Nessuno
   di quei token va ridichiarato qui: il ponte del parent li emette in
   un secondo :root che esce DOPO questo file e vincerebbe comunque.

   I titoli restano #0d0e10 dal Customizer (sunya_color_heading),
   rispettato dal parent 1.9.6.
   ========================================================================== */


/* ==========================================================================
   FONT LOCALI — Dubai Family
   Self-hosted (nessuna chiamata esterna). I DubaiW23-*.woff2 presenti
   nella cartella locale NON sono referenziati e non vanno deployati.
   ========================================================================== */

@font-face {
    font-family: 'Dubai';
    src: url('fonts/Dubai-Light.woff2') format('woff2');
    font-weight: 300;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Dubai';
    src: url('fonts/Dubai-Regular.woff2') format('woff2');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Dubai';
    src: url('fonts/Dubai-Medium.woff2') format('woff2');
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Dubai';
    src: url('fonts/Dubai-Bold.woff2') format('woff2');
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}


/* ==========================================================================
   APPLICAZIONE FONT
   ========================================================================== */

:root {
    --sunya-font-body:    'Dubai', sans-serif;
    --sunya-font-heading: 'Dubai', sans-serif;
}

body {
    font-family: var(--sunya-font-body);
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--sunya-font-heading);
}


/* ==========================================================================
   FALLBACK ITALIC — Dubai non ha varianti italic

   font-synthesis: none (parent) impedisce il faux-italic del browser.
   Dubai Medium (500) fa da distinzione visiva per l'enfasi.
   ========================================================================== */

em, i, cite, dfn, var,
.wp-block-quote cite,
blockquote cite {
    font-style: normal;
    font-weight: 500;
}


/* ==========================================================================
   SEZIONI RIMOSSE NELLA v2.0.0 — e perche'

   1. BODY TEXT (#595E67) e META (#6B7280)
      Ora arrivano dai token: text_on_light nel filtro alimenta
      --sunya-color-text via il ponte del parent, e --sunya-color-text-light
      e' derivato (62% di inchiostro su carta). Ridichiararli qui li
      congelava a un esadecimale che la modalita' Scuro non poteva
      invertire.

   2. LINK (#8C6E3A -> hover #B8965A)
      Duplicavano la base `a` del parent con una catena peggiore, e
      soprattutto l'hover stava SOTTO il riposo: 4.75 -> 3.4. Ora
      accent_contrast fa il riposo e il parent deriva l'hover
      conservando il lato (inchiostro scuro -> l'hover non schiarisce
      fino a perdere contrasto).

   3. NAVIGAZIONE — la sezione che ha rotto dadesign
      `.sunya-header--transparent .sunya-nav__menu > li > a { color: #FAFAF8 }`
      e' una reliquia pre-1.7.x. La classe elemento --transparent RESTA
      anche dove le body class (no-hero, force-solid, scrolled)
      convertono l'header a SOLIDO: "transparent" non significa
      "visivamente trasparente". Fino alla 1.4.3 il parent aveva regole
      (0,4,2) che facevano involontariamente da scudo; la v1.8.3 le ha
      rimosse. Misurato su questo sito prima del salto: nav #0d0e10 su
      header bianco = 19.31; con questa sezione attiva sarebbe scesa a
      1.05. Gli STATI dell'header li possiede il parent, via token con
      guardie body-class mutuamente esclusive: il child non deve saperli.

   4. PULSANTI OUTLINE (#8C6E3A fisso)
      Ridichiaravano l'inchiostro da carta chiara battendo per ordine
      sorgente le regole superficie-aware del parent 1.7.8+. Il colore
      di primo piano si decide sulla CARTA EFFETTIVA, non sulla
      modalita' del sito.

   5. FOOTER (.sunya-footer, .sunya-footer__bottom)
      Servivano a rimediare al `body { color }` della sezione 1: caduta
      quella, il parent 1.9.x chiude gia' su text_on_dark con la catena
      corretta. La barra copyright torna al derivato del parent — se
      risultasse troppo accesa, si smorza con color-mix su
      --sunya-footer-bottom-color, non con un esadecimale nudo.

   6. CORE BUTTONS (wp-block-button)
      L'override nasceva perche' il testo del pulsante primario
      ereditava l'oro scuro da `.sunya-entry-content a` (sezione 2):
      oro su oro, ~2.6:1. Rimossa la causa, il parent calcola da solo
      --sunya-color-on-accent (inchiostro leggibile sull'accent, alzato
      a 4.5 se serve). Da misurare in verifica: se il pulsante core
      esce sotto AA, il posto giusto e' il token, non la regola.
   ========================================================================== */

/* --------------------------------------------------------------------------
   11.1 Contenitore pagina editoriale

   Base condivisa da ogni pagina costruita con blocco HTML. Una pagina nuova
   aggiunge .dav-page e parte già vestita.

   ⚠️ IL max-width È QUALIFICATO CON .sunya-entry-content > — E DEVE ESSERLO.
   Il parent ha `.sunya-entry-content > :not(.alignwide):not(.alignfull):not(…)`,
   una catena di sei :not() di classe.

   2026-09-19 — RETTIFICA. Qui c'era scritto «il selettore pareggia a 0,2,0
   e vince per ordine sorgente»: era falso. La catena del parent pesava
   0,7,0, non 0,2,0, quindi questa regola PERDEVA — misurato: il contenitore
   (allora `.dea-page`) a 1200px su /contatti/, non 820. La qualificazione con
   `.sunya-entry-content >` non bastava, e nessuna specificità raggiungibile
   sarebbe bastata senza !important.
   Dal parent 1.11.1 quella catena sta dentro :where() e pesa 0,1,0: questa
   regola a 0,2,0 vince, e l'820 rende davvero. La forma qualificata resta
   quella raccomandata dalla guida. Non alzarla oltre.
   -------------------------------------------------------------------------- */

.sunya-entry-content > .dav-page {
    max-width: 820px;
    margin-inline: auto;
}

/* 2.1.2 (2026-09-16): ritirato il VERTICALE della shorthand (era xl/2xl,
   32/48px). Dal parent 1.10.4+ l'aria di testa la dà la barra breadcrumb e
   quella di coda l'ultimo blocco (changelog-v1.10.3 §3.2-3.3): se restasse
   qui si sommerebbe. Conservato solo l'orizzontale (4px desktop, 0 mobile),
   che in pratica non arriva a schermo — vince il fallback del parent. */
.dav-page {
    padding: 0 4px;
    font-family: var(--sunya-font-body);
    font-size: 1rem;
    line-height: 1.65;
    -webkit-font-smoothing: antialiased;
}

.dav-page h1,
.dav-page h2,
.dav-page h3 {
    font-family: var(--sunya-font-heading);
}

.dav-page h1 {
    font-size: 1.9rem;
    line-height: 1.25;
    margin: .2em 0 .15em;
    font-weight: 700;
}

/* scroll-margin-top su TUTTI gli h2: qualunque ancora futura di pagina
   editoriale è già coperta, senza una classe dedicata.

   ⚠️ VALORE DA MISURARE, non dedotto. --sunya-header-height NON è
   dichiarata da nessuna parte nel parent (verificato sul codice il
   2026-08-25): questa regola gira sul fallback, come sidebar.css, blog.css
   e woocommerce.css. Su dadesign l'header misura 110px e l'ancora #dd-form
   si ferma corta di 30 — difetto noto, aperto per tutti i siti. Qui il
   fallback resta 80px in attesa della misura sull'header reale (Davide,
   2026-08-26). Il giorno in cui il parent dichiarerà il token, la regola
   inizia a seguirlo senza modifiche. */
.dav-page h2 {
    font-size: 1.4rem;
    margin: 2.4em 0 .5em;
    padding-bottom: .3em;
    border-bottom: 2px solid var(--sunya-color-border);
    font-weight: 600;
    scroll-margin-top: calc(var(--sunya-header-height, 80px) + var(--sunya-spacing-lg));
}

.dav-page h3 {
    font-size: 1.1rem;
    margin: 1.4em 0 .4em;
    font-weight: 600;
}

.dav-page p {
    margin: .6em 0;
}

@media (max-width: 600px) {
    .dav-page    { font-size: .9375rem; padding: 0; }
    .dav-page h1 { font-size: 1.55rem; }
    .dav-page h2 { font-size: 1.25rem; }
}


/* --------------------------------------------------------------------------
   11.2 Lead — variante di pagina

   Non è .sunya-lead del parent (1.15rem, max-width 620, centrato con margin
   auto): quello è il lead delle sezioni full-width. Dentro una pagina
   editoriale serve allineato a sinistra e in grigio.
   -------------------------------------------------------------------------- */

.dav-page .dav-lead {
    margin-bottom: 1.4em;
    font-size: 1.02rem;
    color: var(--sunya-color-text-light);
}


/* --------------------------------------------------------------------------
   11.3 Callout — .dav-note
   -------------------------------------------------------------------------- */

.dav-note {
    background: var(--sunya-color-bg-alt);
    border-left: 3px solid var(--sunya-color-accent);
    border-radius: 0 var(--sunya-radius-md) var(--sunya-radius-md) 0;
    padding: 12px 18px;
    margin: .8em 0;
    font-size: .94rem;
}


/* --------------------------------------------------------------------------
   11.4 — vuota
   Su dadesign: .dd-nav, indice ad ancore delle pagine lunghe.
   Qui non serve: la pagina ha due soli h2. Il numero resta libero.
   -------------------------------------------------------------------------- */


/* --------------------------------------------------------------------------
   11.5 Avviso con icona — .dav-promise
   -------------------------------------------------------------------------- */

.dav-promise {
    display: flex;
    align-items: center;
    gap: 10px;
    background: var(--sunya-color-bg-alt);
    border: 1px solid var(--sunya-color-border);
    border-left: 3px solid var(--sunya-color-accent);
    border-radius: 0 var(--sunya-radius-md) var(--sunya-radius-md) 0;
    padding: 12px 18px;
    margin: 0 0 1.4em;
    font-size: .98rem;
    font-weight: 600;
}

/* L'icona è decorativa ma sta su carta chiara: accent-ink, non accent.
   L'oro decorativo #d4b07e su bianco misura ~1.9 — regola permanente di
   DECISIONI-TECNICHE §6. Il bordo sinistro resta accent perché è una
   superficie, non un segno da leggere. */
.dav-promise svg {
    width: 20px;
    height: 20px;
    flex: none;
    fill: var(--sunya-color-accent-ink);
}


/* --------------------------------------------------------------------------
   11.6 Bottoni delle pagine editoriali

   Sono <a> scritti a mano, non blocchi Bottone: non ereditano niente da
   css/blocks.css del parent, quindi la base sta qui ed è autonoma.
   Scopati sotto .dav-page così non toccano mai i wrapper Gutenberg.

       <a class="dav-btn">                    chiaro, bordo oro scuro
       <a class="dav-btn dav-btn--invert">    nero brand + oro

   HOVER = INVERSIONE, mai una variazione impercettibile. È la regola di
   sito nata su dadesign il 2026-08-10: #0D1117 → #161B22 era
   indistinguibile e l'hover sembrava rotto.
   :focus-visible = hover + anello outline, su ogni pulsante.

   Contrasti attesi — DA VERIFICARE in preview sull'elemento reale, non
   stimati (il 24/08 una stima presentata come misura ha prodotto due
   previsioni sbagliate):
     invert   oro #d4b07e su nero #0d0e10 ....... ~9.5:1
     base     oro scuro #8c6e3a su bianco ....... 4.75:1
   -------------------------------------------------------------------------- */

.dav-page .dav-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 13px 22px;
    min-height: 48px;
    border: 1.5px solid var(--sunya-color-accent-ink);
    border-radius: var(--sunya-radius-md);
    background: transparent;
    color: var(--sunya-color-accent-ink);
    font-size: 1rem;
    font-weight: 600;
    line-height: 1;
    text-decoration: none;
    transition: background var(--sunya-transition-fast),
                color var(--sunya-transition-fast),
                border-color var(--sunya-transition-fast),
                box-shadow var(--sunya-transition-fast);
}

.dav-page .dav-btn:hover,
.dav-page .dav-btn:focus-visible {
    background: var(--sunya-color-bg-alt);
    border-color: var(--sunya-color-accent-ink-hover);
    color: var(--sunya-color-accent-ink-hover);
}

.dav-page .dav-btn--invert {
    background: var(--sunya-color-surface-dark);
    border-color: var(--sunya-color-surface-dark);
    color: var(--sunya-color-accent);
}

.dav-page .dav-btn--invert:hover,
.dav-page .dav-btn--invert:focus-visible {
    background: var(--sunya-color-accent);
    border-color: var(--sunya-color-accent);
    color: var(--sunya-color-surface-dark);
    box-shadow: 0 4px 20px color-mix(in srgb, var(--sunya-color-accent) 35%, transparent);
}

.dav-page .dav-btn:focus-visible {
    outline: 2px solid var(--sunya-color-accent-ink);
    outline-offset: 2px;
}

.dav-page .dav-btn svg {
    width: 19px;
    height: 19px;
    flex: none;
    fill: currentColor;
}

@media (prefers-reduced-motion: reduce) {
    .dav-page .dav-btn {
        transition: none;
    }
}


/* --------------------------------------------------------------------------
   11.7 — vuota
   Su dadesign: .dd-social, i tre pulsanti quadrati LinkedIn/Facebook/
   Instagram nella seconda card. Qui i social non sono un canale di
   ingaggio commerciale e la card è occupata dalla zona operativa.
   -------------------------------------------------------------------------- */


/* --------------------------------------------------------------------------
   11.8 Box informativo — .dav-info-card

   NON è .sunya-info-card del parent: quella è la card dei pattern servizi,
   con hover lift, barra accent e ancoraggio alla coppia chiara. Questa è un
   contenitore di dati fermi, senza affordance — un hover qui direbbe
   "cliccami" a un box che non è cliccabile.
   Nome allineato a dadesign, dove .dd-card è la card della home: stessa
   collisione, stessa soluzione.
   -------------------------------------------------------------------------- */

.dav-info-card {
    background: var(--sunya-color-bg-alt);
    border: 1px solid var(--sunya-color-border);
    border-radius: var(--sunya-radius-md);
    padding: 18px 22px;
}

.dav-info-card strong {
    display: block;
    margin-bottom: .5em;
    font-size: 1.05rem;
    font-family: var(--sunya-font-heading);
}

.dav-info-card ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.dav-info-card li {
    margin: .35em 0;
}

.dav-small {
    font-size: .92rem;
    color: var(--sunya-color-text-light);
}


/* --------------------------------------------------------------------------
   11.9 — vuota
   Su dadesign: specifico pagina Servizi (.dd-services). Qui non esiste una
   pagina servizi in blocco HTML: le quattro pagine servizio sono Gutenberg.
   -------------------------------------------------------------------------- */


/* --------------------------------------------------------------------------
   11.10 Specifico pagina Contatti
   -------------------------------------------------------------------------- */

.dav-contact .dav-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin: 1.2em 0 .8em;
}

.dav-contact .dav-info {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sunya-spacing-md);
    margin: 1.4em 0;
}

.dav-contact .dav-maps {
    display: inline-block;
    margin-top: .7em;
    font-size: .95rem;
}

/* Lista puntata di pagina: la 11.8 azzera i margini delle ul solo dentro
   le card, qui serve il rientro. */
.dav-contact .dav-ask {
    margin: 1em 0 1.4em;
    padding-left: 1.2em;
}

.dav-contact .dav-ask li {
    margin: .45em 0;
}

.dav-contact .dav-ask li::marker {
    color: var(--sunya-color-accent-ink);
}

/* Riga di chiusura: staccata dal blocco form con un filetto e padding-top,
   non con un margin — contro il pre-footer il margin collassa (regola 4 di
   STATO-PROGETTO dadesign). */
.dav-contact .dav-clients {
    margin-top: 2.4em;
    padding-top: 1.2em;
    border-top: 1px solid var(--sunya-color-border);
}

@media (max-width: 600px) {
    .dav-contact .dav-info    { grid-template-columns: 1fr; }
    .dav-contact .dav-actions { flex-direction: column; }
    .dav-page .dav-btn        { justify-content: center; }
}


/* --------------------------------------------------------------------------
   11.11 WPForms — larghezza

   La SKIN dei campi resta al PARENT (css/forms.css dalla v1.8.7): se in
   preview il form esce fuori palette, la skin si aggiunge DOPO averlo
   constatato — non prima. Qui c'è solo la LARGHEZZA.

   2026-09-19 — Il blocco WPForms non sta dentro il contenitore di pagina:
   WordPress lo rende come FRATELLO, perché un blocco non può annidarsi in
   un blocco HTML. Misurato il 19/09 su /contatti/: i figli diretti di
   .sunya-entry-content sono il contenitore di pagina, uno <style> del
   plugin e div.wpforms-container-full.
   Fino al parent 1.11.0 non si vedeva — il fallback a 0,7,0 dava 1200 a
   tutti e due. Dalla 1.11.1 la 11.1 porta il testo a 820 e senza questa
   regola il form resterebbe a 1200 sotto una colonna di 820.
   Stessa regola nei child dadesign e kinesis, stesso slot.
   -------------------------------------------------------------------------- */

div.wpforms-container-full {
    max-width: 820px;
    margin: 0 auto;
}




/* ==========================================================================
   IUBENDA — barra superiore dei documenti legali (privacy/cookie policy)
   ========================================================================== */

#iub-legalDoc {
    border-top: 16px solid #eedc94 !important;
}
