/* ============================================================================
   account.css — ESTRATTO da style.css il 21 ott 2026 (split per area, misurato: 471 KB in un
   foglio solo, un quarto usato per pagina). MY ACCOUNT: login passwordless (.cgtv-pwl), dashboard, ordini, indirizzi, modifica account (.dvd-account), stati ordine, drill-down mobile. Caricato su is_account_page().
   Caricato DOPO dvd-style (dipendenza) solo dove serve: vedi functions.php.
   REGOLA MADRE invariata: solo token di theme.json.
   ========================================================================= */

/* ============================================================================
   MY ACCOUNT (WooCommerce) — LOGIN + REGISTRAZIONE come card compatte coerenti
   col dark del sito. Struttura WC: #customer_login.u-columns > .u-column1 (Login)
   + .u-column2 (Register). Card affiancate su desktop, impilate su mobile.
   Font a misura FORM (non i 20px del corpo → sembrava "gigantesco").
   ========================================================================== */
/* ============================================================================
   MY ACCOUNT — LOGIN OSPITE PASSWORDLESS (.cgtv-pwl).
   Sostituisce il vecchio form login/registrazione WooCommerce. Due schermate
   (email → codice) in UNA card centrata. Larghezza AUREA 26rem, estetica dark
   cinematic coerente col checkout (token --wp--preset--*, CTA rossa gradiente).
   La schermata attiva è pilotata da [data-step] sul contenitore.
   ========================================================================== */
.dvd-account .cgtv-pwl{
  max-width:26rem; margin-inline:auto;
}
/* mostra SOLO il pannello dello step corrente (niente flash: default = email) */
.dvd-account .cgtv-pwl .cgtv-pwl__panel--code{ display:none; }
.dvd-account .cgtv-pwl[data-step="code"] .cgtv-pwl__panel--email{ display:none; }
.dvd-account .cgtv-pwl[data-step="code"] .cgtv-pwl__panel--code{ display:block; }

/* honeypot: fuori dallo schermo per gli umani, presente per i bot */
.dvd-account .cgtv-pwl__hp{
  position:absolute!important; left:-9999px!important; width:1px; height:1px; overflow:hidden;
}

/* notice (esito richiesta/verifica) */
.dvd-account .cgtv-pwl__notice{
  max-width:26rem; margin:0 auto 1rem; padding:.7rem .9rem;
  border-radius:var(--r-control); font-family:var(--wp--preset--font-family--body);
  font-size:var(--wp--preset--font-size--x-small); line-height:1.45;
  border:1px solid transparent;
}
.dvd-account .cgtv-pwl__notice--ok{
  color:#d6f5e4; background:rgba(61,220,132,.08); border-color:rgba(61,220,132,.35);
}
.dvd-account .cgtv-pwl__notice--err{
  color:#ffd7d9; background:rgba(229,9,20,.08); border-color:rgba(229,9,20,.38);
}
/* campo email segnato dalla validazione nel browser (aria-invalid dal JS inline) */
.dvd-account .cgtv-pwl input[type="email"][aria-invalid="true"]{
  border-color:var(--wp--preset--color--accent)!important;
}

/* la CARD (il form/pannello) */
.dvd-account .cgtv-pwl__panel{
  background:var(--wp--preset--color--surface);
  border:1px solid var(--wp--preset--color--line);
  border-radius:var(--r-surface);
  padding:clamp(1.25rem, 3.5vw, 1.75rem); margin:0;
}
/* titolo — scala tipografica AUREA (medium ≈ 24px), centrato */
.dvd-account .cgtv-pwl__title{
  font-family:var(--wp--preset--font-family--heading);
  font-size:var(--wp--preset--font-size--medium); line-height:1.2;
  color:var(--wp--preset--color--contrast);
  margin:0 0 .35rem; padding:0; letter-spacing:-.01em; text-align:center;
}
.dvd-account .cgtv-pwl__subtitle{
  font-family:var(--wp--preset--font-family--body);
  font-size:var(--wp--preset--font-size--small); line-height:1.5;
  color:var(--wp--preset--color--muted);
  margin:0 0 1.25rem; text-align:center;
}
.dvd-account .cgtv-pwl__subtitle strong{ color:var(--wp--preset--color--contrast); }

/* label */
.dvd-account .cgtv-pwl__field label{
  font-family:var(--wp--preset--font-family--body);
  font-size:var(--wp--preset--font-size--x-small);
  font-weight:700; color:var(--wp--preset--color--muted);
  text-transform:uppercase; letter-spacing:.08em;
  margin-bottom:.4rem; display:block;
}
.dvd-account .cgtv-pwl__field{ margin:0 0 .9rem; }

/* input */
.dvd-account .cgtv-pwl input[type="email"],
.dvd-account .cgtv-pwl input[type="text"]{
  width:100%; box-sizing:border-box;
  background:var(--wp--custom--field--background);
  border:1px solid var(--wp--preset--color--line);
  border-radius:var(--r-control);
  color:var(--wp--preset--color--contrast);
  font-family:var(--wp--preset--font-family--body);
  font-size:var(--wp--preset--font-size--small);
  padding:.7rem .85rem; line-height:1.4;
  transition:border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}
.dvd-account .cgtv-pwl input::placeholder{
  color:var(--wp--preset--color--muted-2); opacity:1;
}
/* campo codice: cifre grandi, spaziate, centrate (leggibilità over-45) */
.dvd-account .cgtv-pwl .cgtv-pwl__code-input{
  text-align:center; letter-spacing:.5em; padding-left:calc(.85rem + .5em);
  font-size:var(--wp--preset--font-size--medium); font-weight:700; font-variant-numeric:tabular-nums;
}

/* CTA rossa gradiente + glow (identica al resto del sito) */
.dvd-account .cgtv-pwl__submit{
  width:100%; cursor:pointer; border:0; margin-top:.25rem;
  background:var(--wp--preset--color--primary);
  color:#fff; border-radius:var(--r-control);
  font-family:var(--wp--preset--font-family--heading); font-weight:700;
  font-size:var(--wp--preset--font-size--small);
  min-height:3rem; padding:0 1rem;
  box-shadow:0 8px 30px rgba(229,9,20,.22);
  transition:filter .18s ease, transform .12s ease;
}
@media (hover:hover){ .dvd-account .cgtv-pwl__submit:hover{ filter:brightness(1.06); } }
.dvd-account .cgtv-pwl__submit:active{ transform:scale(.99); }

/* INFORMATIVA sotto «Continua» (19 ott 2026, panel): stessa forma della nota «invia di
   nuovo» del passo 2 — centrata, x-small, muted — e il link come «Invia di nuovo»
   (testo contrast + filetto primary): il rosso pieno resta al pulsante. */
.dvd-account .cgtv-pwl__legal{
  margin:1rem 0 0; text-align:center; text-wrap:pretty;   /* larga quanto il pulsante, niente tetto: col 34ch andava su 3 righe */
  color:var(--wp--preset--color--muted);
  font-size:var(--wp--preset--font-size--x-small); line-height:1.5;
}
.dvd-account .cgtv-pwl__legal a{
  color:var(--wp--preset--color--contrast); font-weight:600; text-decoration:none;
  border-bottom:1px solid var(--wp--preset--color--primary);
  transition:color .2s ease;
}
@media (hover:hover){ .dvd-account .cgtv-pwl__legal a:hover{ color:var(--wp--preset--color--primary); } }
.dvd-account .cgtv-pwl__legal a:focus-visible{ outline:none; box-shadow:var(--wp--custom--focus--ring); border-radius:2px; }
/* "invia di nuovo" */
.dvd-account .cgtv-pwl__resend{
  margin:1rem 0 0; text-align:center;
  color:var(--wp--preset--color--muted);
  font-size:var(--wp--preset--font-size--x-small);
}
.dvd-account .cgtv-pwl__resend-btn{
  background:none; border:0; padding:0; cursor:pointer;
  color:var(--wp--preset--color--contrast); font-weight:600;
  font-size:inherit; font-family:inherit;
  border-bottom:1px solid var(--wp--preset--color--primary, var(--acc-red));
  transition:color .2s ease, opacity .2s ease;
}
.dvd-account .cgtv-pwl__resend-btn:disabled{ opacity:.5; cursor:default; border-bottom-color:transparent; }
@media (hover:hover){ .dvd-account .cgtv-pwl__resend-btn:not(:disabled):hover{ color:var(--wp--preset--color--primary, var(--acc-red)); } }

/* Stato CARICAMENTO sui submit del passwordless. I due form fanno POST + redirect
   e in mezzo c'e' una chiamata SMTP a Resend: senza feedback il click sembra non
   arrivato e si preme di nuovo, cosa che rigenera il codice e invalida quello gia'
   partito (due mail, la prima morta). Stesso pattern di `.dvd-filter__apply`
   (riusa @keyframes dvd-spin).
   GOTCHA di specificita', identico a quello gia' documentato per i filtri: la
   regola `:disabled` sta PRIMA nel foglio ma ha pari peso, quindi `.is-loading`
   va DOPO per vincere. Qui il bottone e' disabilitato per non premerlo due volte,
   non perche' inattivo: deve restare ROSSO e vivo. */
.dvd-account .cgtv-pwl__submit.is-loading,
.dvd-account .cgtv-pwl__submit.is-loading:disabled{
  background:var(--wp--preset--color--primary);
  color:transparent; position:relative; cursor:wait;
}
.dvd-account .cgtv-pwl__submit.is-loading::after{
  content:""; position:absolute; top:50%; left:50%;
  width:1.15rem; height:1.15rem; margin:-.575rem 0 0 -.575rem;
  border:2px solid rgba(255,255,255,.4); border-top-color:#fff;
  border-radius:50%; animation:dvd-spin .7s linear infinite;
}
/* Il resend e' un link testuale, non un bottone pieno: lo spinner prende il
   colore del testo e resta piccolo, altrimenti sfonderebbe la riga. */
.dvd-account .cgtv-pwl__resend-btn.is-loading,
.dvd-account .cgtv-pwl__resend-btn.is-loading:disabled{
  color:transparent; position:relative; cursor:wait; opacity:1;
  border-bottom-color:transparent;
}
.dvd-account .cgtv-pwl__resend-btn.is-loading::after{
  content:""; position:absolute; top:50%; left:50%;
  width:.9rem; height:.9rem; margin:-.45rem 0 0 -.45rem;
  border:2px solid var(--wp--preset--color--muted-2);
  border-top-color:var(--wp--preset--color--contrast);
  border-radius:50%; animation:dvd-spin .7s linear infinite;
}
@media (prefers-reduced-motion:reduce){
  .dvd-account .cgtv-pwl__submit.is-loading::after,
  .dvd-account .cgtv-pwl__resend-btn.is-loading::after{
    animation:none; border-top-color:rgba(255,255,255,.4);
  }
}

/* ============================================================================
   EDIT-ACCOUNT — campo Data di nascita + popover calendario custom (.cgtv-dob).
   Dark brand-coherent (token --cgo-*/preset). Dropdown mese/anno + griglia
   giorni: selezione rapida di date lontane (nascita), ideale over-45.
   ========================================================================== */
.dvd-account .cgtv-dob-row .cgtv-dob-optional{
  color:var(--wp--preset--color--muted-2); font-weight:400; text-transform:none;
  letter-spacing:0; font-size:.85em;
}
.dvd-account .cgtv-dob{ position:relative; display:block; }

/* il "bottone display" (mostra la data scelta / placeholder) — campo scavato,
   coerente con input anno/mese e con tutti i campi del sito (token field). */
.dvd-account .cgtv-dob__display{
  width:100%; box-sizing:border-box; cursor:pointer; text-align:left;
  display:flex; align-items:center; justify-content:space-between; gap:.5rem;
  background:var(--wp--custom--field--background);
  border:1px solid var(--wp--preset--color--line);
  border-radius:var(--r-control);
  box-shadow:var(--wp--custom--field--shadow);
  color:var(--wp--preset--color--contrast);
  font-family:var(--wp--preset--font-family--body); font-size:var(--wp--preset--font-size--small);
  padding:.7rem .85rem; line-height:1.4; min-height:3rem;
  transition:border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}
/* valore selezionato = testo primario (bianco); solo il PLACEHOLDER è muted. */
.dvd-account .cgtv-dob__value{ color:var(--wp--preset--color--contrast); }
.dvd-account .cgtv-dob:not(.has-value) .cgtv-dob__value{ color:var(--wp--preset--color--muted-2); }
/* Solo quando il popover è APERTO il bottone si schiarisce (segnala lo stato
   attivo). Al semplice focus resta scavato: il glow vinaccia è già il segnale. */
.dvd-account .cgtv-dob__display[aria-expanded="true"]{
  background:var(--wp--preset--color--surface-3);
}
.dvd-account .cgtv-dob__icon{
  flex:none; width:1.1em; height:1.1em;
  /* chevron Lucide caret-down (coerente col resto dei select dell'area account) */
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239a9a9a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:center; background-size:contain;
}

/* ---- Popover / bottom-sheet: base (desktop = popover ancorato) ---- */
.dvd-account .cgtv-dob__pop{
  position:absolute; z-index:1000; top:calc(100% + .4rem); left:0; width:min(20rem, 92vw);
  background:var(--wp--preset--color--surface);
  border:1px solid var(--wp--preset--color--line-2);
  border-radius:var(--r-surface);
  box-shadow:0 18px 50px rgba(0,0,0,.55); padding:.85rem;
}
/* handle + titolo: nascosti su desktop (servono solo come sheet mobile) */
.dvd-account .cgtv-dob__handle,
.dvd-account .cgtv-dob__title,
.dvd-account .cgtv-dob__foot{ display:none; }

/* overlay del bottom-sheet (solo mobile) */
.dvd-account .cgtv-dob__overlay{
  position:fixed; inset:0; z-index:999; background:rgba(0,0,0,.6);
  opacity:0; transition:opacity .25s ease;
}
.dvd-account .cgtv-dob__overlay.is-open{ opacity:1; }

/* testata: mese (select) + anno (input tra due frecce) */
.dvd-account .cgtv-dob__head{ display:flex; gap:.5rem; margin-bottom:.7rem; align-items:stretch; }
.dvd-account .cgtv-dob__head select,
.dvd-account .cgtv-dob__year{
  box-sizing:border-box;
  background-color:var(--wp--custom--field--background);
  border:1px solid var(--wp--preset--color--line);
  border-radius:var(--r-control);
  box-shadow:var(--wp--custom--field--shadow);
  color:var(--wp--preset--color--contrast);
  font-family:var(--wp--preset--font-family--body); font-size:var(--wp--preset--font-size--small);
  padding:.5rem .6rem;
}
.dvd-account .cgtv-dob__head select{
  flex:1; cursor:pointer; min-height:2.5rem;
  /* chevron Lucide caret-down (stroke-only → via background-image, non mask) */
  appearance:none; -webkit-appearance:none; -moz-appearance:none;
  padding-right:2rem;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239a9a9a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 0.6rem center; background-size:1em;
}
/* anno: input al centro, frecce (caret Lucide) ai lati */
.dvd-account .cgtv-dob__year-wrap{ display:flex; align-items:stretch; gap:.35rem; flex:none; }
.dvd-account .cgtv-dob__year{
  width:4rem; text-align:center; -moz-appearance:textfield;
  font-variant-numeric:tabular-nums; min-height:2.5rem;
}
.dvd-account .cgtv-dob__year::-webkit-outer-spin-button,
.dvd-account .cgtv-dob__year::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.dvd-account .cgtv-dob__yr-btn{
  flex:none; width:2.5rem; min-height:2.5rem; padding:0; cursor:pointer;
  background-color:var(--wp--preset--color--surface-2);
  border:1px solid var(--wp--preset--color--line); border-radius:var(--r-control);
  /* caret Lucide (stroke-only → background-image, non mask). Il singolo caret è
     impostato per direzione sotto (down/up = prev/next anno). */
  background-repeat:no-repeat; background-position:center; background-size:1.1em;
  transition:border-color .15s ease, background-color .15s ease;
}
/* "prev anno" = caret-left */
.dvd-account .cgtv-dob__yr-down{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239a9a9a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E");
}
/* "next anno" = caret-right */
.dvd-account .cgtv-dob__yr-up{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239a9a9a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E");
}
@media (hover:hover){
  .dvd-account .cgtv-dob__yr-btn:hover{ border-color:var(--wp--preset--color--primary, var(--acc-red)); }
}
.dvd-account .cgtv-dob__yr-btn:active{ background-color:var(--wp--preset--color--surface-3); }

/* intestazione giorni settimana */
.dvd-account .cgtv-dob__wd{
  display:grid; grid-template-columns:repeat(7, 1fr); gap:2px; margin-bottom:.3rem;
}
.dvd-account .cgtv-dob__wd span{
  text-align:center; font-size:var(--wp--preset--font-size--x-small); font-weight:700; text-transform:uppercase;
  letter-spacing:.04em; color:var(--wp--preset--color--muted-2); padding:.2rem 0;
}
/* griglia giorni */
.dvd-account .cgtv-dob__grid{ display:grid; grid-template-columns:repeat(7, 1fr); gap:2px; }
.dvd-account .cgtv-dob__empty{ aspect-ratio:1; }
.dvd-account .cgtv-dob__day{
  aspect-ratio:1; display:flex; align-items:center; justify-content:center;
  cursor:pointer; border:0; border-radius:8px;
  background:transparent; color:var(--wp--preset--color--contrast);
  font-family:var(--wp--preset--font-family--body); font-size:var(--wp--preset--font-size--small);
  -webkit-tap-highlight-color:rgba(229,9,20,.25);
  transition:background .15s ease, color .15s ease;
}
@media (hover:hover){ .dvd-account .cgtv-dob__day:not([disabled]):hover{ background:var(--wp--preset--color--surface-3); } }
.dvd-account .cgtv-dob__day[disabled]{ opacity:.3; cursor:default; }
.dvd-account .cgtv-dob__day:active{ background:var(--wp--preset--color--surface-2); }
.dvd-account .cgtv-dob__day.is-selected{
  background:var(--wp--preset--color--primary);
  color:#fff; font-weight:700;
}

/* ============================================================================
   MOBILE (≤640px): il popover diventa un BOTTOM-SHEET a tutta larghezza, tap
   grandi (≥48px), handle + titolo + pulsante Fatto, safe-area insets. Per
   vincere il contest mobile-friendly.
   ========================================================================== */
@media (max-width: 640px){
  .dvd-account .cgtv-dob__pop{
    position:fixed; z-index:1000; left:0; right:0; bottom:0; top:auto; width:auto;
    max-height:88vh; overflow-y:auto;
    border-radius:var(--r-surface) var(--r-surface) 0 0;
    border:0; border-top:1px solid var(--wp--preset--color--line-2);
    padding:.5rem 1rem calc(1rem + env(safe-area-inset-bottom, 0px));
    box-shadow:0 -10px 40px rgba(0,0,0,.6);
    transform:translateY(100%); transition:transform .28s cubic-bezier(.32,.72,0,1);
  }
  .dvd-account .cgtv-dob__pop.is-open{ transform:translateY(0); }

  .dvd-account .cgtv-dob__handle{
    display:block; width:2.5rem; height:4px; border-radius:var(--r-pill);
    background:var(--wp--preset--color--line-2); margin:.4rem auto .7rem;
  }
  .dvd-account .cgtv-dob__title{
    display:block; text-align:center; margin:0 0 .9rem;
    font-family:var(--wp--preset--font-family--heading);
    font-size:var(--wp--preset--font-size--medium);
    color:var(--wp--preset--color--contrast);
  }

  /* controlli testata grandi (≥48px) */
  .dvd-account .cgtv-dob__head{ gap:.6rem; margin-bottom:1rem; }
  .dvd-account .cgtv-dob__head select,
  .dvd-account .cgtv-dob__year{
    min-height:52px; font-size:var(--wp--preset--font-size--small);
  }
  .dvd-account .cgtv-dob__year{ width:5rem; font-size:var(--wp--preset--font-size--base); font-weight:700; }
  .dvd-account .cgtv-dob__yr-btn{ width:52px; min-height:52px; font-size:var(--wp--preset--font-size--small); }

  /* giorni grandi, comodi al pollice */
  .dvd-account .cgtv-dob__wd span{ font-size:var(--wp--preset--font-size--x-small); padding:.35rem 0; }
  .dvd-account .cgtv-dob__grid{ gap:4px; }
  .dvd-account .cgtv-dob__day{ font-size:var(--wp--preset--font-size--base); border-radius:var(--r-control); min-height:44px; }

  /* footer con pulsante Fatto full-width */
  .dvd-account .cgtv-dob__foot{ display:block; margin-top:1rem; }
  .dvd-account .cgtv-dob__done{
    width:100%; min-height:52px; cursor:pointer; border:0;
    background:var(--wp--preset--color--primary);
    color:#fff; border-radius:var(--r-control);
    font-family:var(--wp--preset--font-family--heading); font-weight:700;
    font-size:var(--wp--preset--font-size--small);
  }
  .dvd-account .cgtv-dob__done:active{ filter:brightness(.95); }
}

/* blocca lo scroll del body mentre il sheet è aperto (mobile) */
body.cgtv-dob-lock{ overflow:hidden; }

@media (prefers-reduced-motion: reduce){
  .dvd-account .cgtv-dob__pop,
  .dvd-account .cgtv-dob__overlay{ transition:none; }
}
/* ============================================================================
   MY ACCOUNT — AREA LOGGATA "premium" (stile Netflix editoriale).
   Sidebar-pannello elevato + contenuto ricco con profondità, gerarchia forte,
   micro-interazioni. Coerente col dark cinematic del sito (token globali).
   ========================================================================== */
:root{
  /* SINGLE SOURCE OF TRUTH: questi alias puntano AI PRESET di theme.json (vedi
     DESIGN.md "REGOLA MADRE"). NON sono più valori a sé: sono nomi comodi per la
     palette canonica del tema. Cambiare un colore = cambiarlo in theme.json.
     Riconciliati 2026-07-10: la scala neri "orfana" (#141414/#191919/#262626) e il
     muted #8f8f8f sono stati allineati alla scala canonica (surface/surface-2/line/
     muted) per eliminare il drift segnalato dalla theme review. */
  --acc-paper:var(--wp--preset--color--surface);      /* card/pannello */
  --acc-paper2:var(--wp--preset--color--surface-2);   /* elevata/hover */
  --acc-surface3:var(--wp--preset--color--surface-3); /* selezione/hover forte */
  --acc-line:var(--wp--preset--color--line);          /* bordo (card usa custom.card.border=line-2) */
  --acc-ink:var(--wp--preset--color--contrast);       /* testo primario off-white */
  --acc-muted:var(--wp--preset--color--muted);        /* label/secondario */
  --acc-red:var(--wp--preset--color--primary);        /* #e50914 */
  --acc-red-dark:var(--wp--preset--color--primary-dark); /* #b20710 */
  /* NB: il bordo card NON è più un token locale. È stato promosso a theme.json
     (custom.card.border = 1px solid line-2) e vale per TUTTO il sistema (account +
     checkout, che ora lo eredita). Motivo: line invisibile all'aperto per over-45
     (ΔL* 16.9 sotto soglia); line-2 = +68% stacco. Un solo posto (REGOLA MADRE). */
}
/* larghezza area loggata: FULL-WIDTH come la pagina "Acquista film" (nessun cap,
   usa tutto lo spazio dentro il padding fluido clamp(1.5rem,6vw,8rem) del main).
   Sovrascrive il 26rem del login. */
.dvd-account:has(.woocommerce-MyAccount-navigation) .entry-content,
.dvd-account:has(.woocommerce-MyAccount-navigation) .woocommerce-account,
.dvd-account:has(.woocommerce-MyAccount-navigation) .woocommerce{
  max-width:none!important; width:100%!important; margin-inline:0!important;
}
/* Pagina LOGIN (sloggato): NON c'è la navigation → il form pwl va CENTRATO nella
   pagina (non allineato a sinistra come l'area loggata full-width). */
.dvd-account:not(:has(.woocommerce-MyAccount-navigation)) .woocommerce{
  max-width:30rem; margin-inline:auto;
}
/* layout: sidebar-pannello + contenuto affiancati.
   NB: la pagina usa lo shortcode [woocommerce_my_account] → wrapper .woocommerce
   SENZA antenato .woocommerce-account. Il grid va messo sul .woocommerce che
   CONTIENE la navigation (:has), non su .woocommerce-account .woocommerce
   (selettore che non matchava → colonne impilate). */
.dvd-account .woocommerce:has(> .woocommerce-MyAccount-navigation){
  display:grid!important; grid-template-columns:264px 1fr!important;
  gap:clamp(28px,3.5vw,56px)!important; align-items:start!important;
}
/* WooCommerce applica float:left alla nav e float:right al contenuto (CSS storico
   pre-grid). I float escono dalle celle grid e i due elementi finiscono nelle celle
   sbagliate (nav in col2, content in col1 riga2). FIX BLINDATO: azzerare i float E
   piazzare ESPLICITAMENTE ciascuno nella sua colonna grid, così non c'è ambiguità. */
.dvd-account .woocommerce:has(> .woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-navigation{
  float:none!important; width:auto!important;
  grid-column:1!important; grid-row:1!important;
}
.dvd-account .woocommerce:has(> .woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-content{
  float:none!important; width:auto!important; min-width:0!important;
  grid-column:2!important; grid-row:1!important;
}

/* ---- SIDEBAR come pannello scuro elevato ---- */
.dvd-account .woocommerce-MyAccount-navigation{
  position:sticky; top:96px;
  background:var(--wp--custom--card--background)!important;
  border:var(--wp--custom--card--border)!important; border-radius:var(--wp--custom--card--radius)!important;
  padding:10px!important;
  box-shadow:0 20px 50px -24px rgba(0,0,0,.8);
}
.dvd-account .woocommerce-MyAccount-navigation ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:3px; }
.dvd-account .woocommerce-MyAccount-navigation li{ border:0!important; }
/* GOTCHA (6 set 2026): `woocommerce-blocktheme.css` mette
   `.woocommerce-account .woocommerce-MyAccount-navigation li{padding:1em 0}` (e
   `.35em` sotto i 768px, `padding-top:0` sul primo). Noi non dichiaravamo MAI il
   padding del li → su desktop ogni voce portava 20+20px di vuoto in piu' oltre
   ai 12px del link, e la prima era piu' corta delle altre; su mobile il core dava
   solo 7px e non si notava. Azzerato dai 700px in su (desktop + rail); sotto, le
   righe drill-down restano come sono. */
@media (min-width:700px){
  .dvd-account .woocommerce-MyAccount-navigation li{ padding:0!important; }
}
.dvd-account .woocommerce-MyAccount-navigation li a{
  display:flex; align-items:center; gap:12px;
  padding:12px 14px; border-radius:var(--r-control);
  color:var(--acc-muted)!important;
  font-family:var(--wp--preset--font-family--body); font-size:var(--wp--preset--font-size--small); font-weight:500;
  text-decoration:none!important; /* la grafica (sfondo + barra active) basta: niente underline */
  position:relative; transition:color .2s ease, background .25s ease, transform .12s ease;
}
/* nessuna sottolineatura su hover/focus/active: c'è già lo sfondo + la barra rossa */
.dvd-account .woocommerce-MyAccount-navigation li a:hover,
.dvd-account .woocommerce-MyAccount-navigation li a:focus,
.dvd-account .woocommerce-MyAccount-navigation li.is-active a{ text-decoration:none!important; }
@media (hover:hover){ .dvd-account .woocommerce-MyAccount-navigation li a:hover{ color:var(--acc-ink)!important; background:var(--acc-surface3); } }
.dvd-account .woocommerce-MyAccount-navigation li.is-active a{
  color:var(--acc-ink)!important;
  background:var(--wp--preset--color--surface-3);
  /* NIENTE glow rosso diffuso: il design system l'ha bandito ("rosso brand = RING
     NETTO, non glow"). L'attivo è già segnalato da fill surface-3 + barra accent. */
  box-shadow:inset 0 1px 0 0 rgba(255,255,255,.05);
}
/* barra rossa a sinistra della voce attiva */
.dvd-account .woocommerce-MyAccount-navigation li.is-active a::after{
  content:""; position:absolute; left:0; top:8px; bottom:8px; width:3px; border-radius:var(--r-pill);
  background:var(--wp--preset--color--primary);
}
/* icone (background-image, colore muted → bianco su hover/attivo via filter) */
.dvd-account .woocommerce-MyAccount-navigation li a::before{
  content:""; width:18px; height:18px; flex:0 0 auto;
  background-repeat:no-repeat; background-position:center; background-size:contain; opacity:.85;
  transition:opacity .2s ease;
}
.dvd-account .woocommerce-MyAccount-navigation li a:hover::before,
.dvd-account .woocommerce-MyAccount-navigation li.is-active a::before{ opacity:1; }
.dvd-account .woocommerce-MyAccount-navigation-link--dashboard a::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b9b9b9' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3Cpath d='M9 22V12h6v10'/%3E%3C/svg%3E"); }
.dvd-account .woocommerce-MyAccount-navigation-link--orders a::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b9b9b9' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 16h6M19 13v6M11 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v3'/%3E%3C/svg%3E"); }
.dvd-account .woocommerce-MyAccount-navigation-link--edit-address a::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b9b9b9' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E"); }
.dvd-account .woocommerce-MyAccount-navigation-link--edit-account a::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b9b9b9' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='4'/%3E%3Cpath d='M6 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2'/%3E%3C/svg%3E"); }
.dvd-account .woocommerce-MyAccount-navigation-link--customer-logout a::before{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b9b9b9' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9'/%3E%3C/svg%3E"); }

/* ---- CONTENUTO ---- */
.dvd-account .woocommerce-MyAccount-content{ min-width:0; }

/* titolo dashboard (dal nostro override dashboard.php) */
.dvd-account .cgtv-dash__head{ margin:0; }
.dvd-account .cgtv-dash__hello{
  font-family:var(--wp--preset--font-family--heading)!important; color:var(--acc-ink)!important;
  font-size:var(--wp--preset--font-size--medium)!important; font-weight:600!important; line-height:1.15!important; margin:0!important; letter-spacing:-.02em;
}
.dvd-account .cgtv-dash__hello span{ color:var(--acc-ink); }
/* pulsante "Esci" nel titolo rimosso (ridondante: c'è gia' nella sidebar) */
.dvd-account .cgtv-dash__intro{ color:var(--acc-muted); font-size:var(--wp--preset--font-size--small); line-height:1.55; margin:.4rem 0 0!important; max-width:52ch; }

/* ---- WIDGET IDENTITÀ (solo mobile) — "RIGA ZERO" della lista (soluzione team Revolut).
   È la prima riga della lista drill-down, non un box separato: stessa grammatica delle
   voci-link (badge a sx + testo), ma statica (no chevron, no <a>). Badge NEUTRO con
   icona id-card. UN SOLO bordo sotto (line, più marcato = confine header/nav); il
   border-top del <ul> è rimosso nel blocco nav mobile → niente doppio bordo. ---- */
.dvd-account .cgtv-dash__ident{ display:none; } /* default: solo mobile lo mostra */
@media (max-width:699px){
  .dvd-account .cgtv-dash__ident{
    display:flex; align-items:center; gap:14px;
    padding:2px 4px 16px; /* stesso padding-x delle voci lista (4px) */
    border-bottom:1px solid var(--wp--preset--color--line); /* UNICA linea header→nav */
  }
}
/* badge NEUTRO (muted su surface-2), quadrato con raggio control — come i badge
   decorativi del sito. NON cerchio, NON iniziale → non imita un avatar. */
.dvd-account .cgtv-dash__ident-badge{
  flex:0 0 auto; width:40px; height:40px;
  display:flex; align-items:center; justify-content:center;
  border-radius:var(--r-control);
  background:var(--wp--preset--color--surface-2);
  color:var(--wp--preset--color--muted);
}
.dvd-account .cgtv-dash__ident-badge svg{ width:22px; height:22px; }
.dvd-account .cgtv-dash__ident-text{ display:flex; flex-direction:column; min-width:0; gap:2px; }
.dvd-account .cgtv-dash__ident-hello{
  font-family:var(--wp--preset--font-family--heading);
  font-size:var(--wp--preset--font-size--medium); font-weight:600;
  color:var(--wp--preset--color--contrast); line-height:1.2;
}
.dvd-account .cgtv-dash__ident-email{
  font-size:var(--wp--preset--font-size--x-small); color:var(--wp--preset--color--muted);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}

/* ============================================================================
   FOCUS-VISIBLE (accessibilità WCAG 2.4.7) — ring NETTO coerente col checkout su
   TUTTI gli elementi cliccabili dell'area account (card/hero/bottoni/voci nav).
   Prima mancava del tutto: chi naviga da tastiera non vedeva nulla (gli hover sono
   dentro @media hover:hover). Token condiviso --wp--custom--focus--ring.
   ========================================================================== */
.dvd-account .cgtv-dash-hero:focus-visible,
.dvd-account .cgtv-dash-card:focus-visible,
.dvd-account .cgtv-dash-empty__cta:focus-visible,
.dvd-account .cgtv-order-card__number:focus-visible,
.dvd-account .cgtv-order-card__btn:focus-visible,
.dvd-account .woocommerce-MyAccount-navigation li a:focus-visible,
.dvd-account .cgtv-acc-mobilebar__back:focus-visible,
.dvd-account .woocommerce-Address-title .edit:focus-visible{
  outline:none!important;
  box-shadow:var(--wp--custom--focus--ring)!important;
  border-radius:var(--r-control);
}

/* ============================================================================
   DASHBOARD-HUB — HERO ULTIMO ORDINE (mockup approvato). Card a riposo su surface
   (come i pannelli checkout) con cover + stato + meta + "Vedi dettagli". È un <a>:
   tutta la card è cliccabile. Niente tracking né riordina (per progetto).
   ========================================================================== */
.dvd-account .cgtv-dash-hero{
  display:flex; align-items:center; gap:clamp(14px,2vw,20px);
  margin-top:clamp(1.5rem,3vw,2.25rem); padding:clamp(16px,2vw,22px);
  /* a riposo su surface come i pannelli checkout e le altre card (surface-2 = stato
     ELEVATO/hover, non a riposo). La gerarchia dell'hero la danno cover+badge+CTA. */
  background:var(--wp--preset--color--surface);
  border:var(--wp--custom--card--border); border-radius:var(--r-surface);
  box-shadow:var(--wp--custom--card--shadow);
  text-decoration:none!important; color:inherit;
  transition:border-color .18s ease, transform .18s ease, box-shadow .25s ease;
}
@media (hover:hover){
  .dvd-account .cgtv-dash-hero:hover{
    transform:translateY(-2px);
    border-color:color-mix(in srgb, var(--wp--preset--color--primary) 45%, transparent);
    box-shadow:var(--wp--custom--card--shadow-hover);
  }
}
/* cover del film (thumbnail primo articolo). Proporzione locandina, non quadrata. */
.dvd-account .cgtv-dash-hero__cover{
  flex:none; width:clamp(56px,9vw,72px); aspect-ratio:5/7; border-radius:var(--wp--custom--radius--micro);
  overflow:hidden; background:var(--wp--preset--color--surface-3);
  border:1px solid var(--wp--preset--color--line-2); display:block;
}
.dvd-account .cgtv-dash-hero__cover img,
.dvd-account .cgtv-dash-hero__img{ width:100%; height:100%; object-fit:cover; display:block; }
.dvd-account .cgtv-dash-hero__body{ flex:1; min-width:0; display:flex; flex-direction:column; gap:5px; }
/* badge stato: colore + icona + testo (mai solo colore). Colore da TOKEN semantico. */
.dvd-account .cgtv-dash-hero__status{
  display:inline-flex; align-items:center; gap:7px; align-self:flex-start;
  font-family:var(--wp--preset--font-family--body);
  font-size:var(--wp--preset--font-size--small); font-weight:600;
  padding:4px 11px; border-radius:var(--r-pill);
  color:var(--acc-muted); border:1px solid var(--wp--preset--color--line-2);
}
.dvd-account .cgtv-dash-hero__status svg{ width:17px; height:17px; }
/* colori stato = stessi token delle card ordini */
.dvd-account .cgtv-dash-hero--status-processing .cgtv-dash-hero__status{ color:var(--wp--preset--color--info); border-color:color-mix(in srgb,var(--wp--preset--color--info) 45%,transparent); background:color-mix(in srgb,var(--wp--preset--color--info) 12%,transparent); }
.dvd-account .cgtv-dash-hero--status-completed .cgtv-dash-hero__status{ color:var(--wp--preset--color--success); border-color:color-mix(in srgb,var(--wp--preset--color--success) 45%,transparent); background:color-mix(in srgb,var(--wp--preset--color--success) 12%,transparent); }
/* pending/on-hold = neutro (in attesa), distinto dal blu di processing */
.dvd-account .cgtv-dash-hero--status-on-hold .cgtv-dash-hero__status,
.dvd-account .cgtv-dash-hero--status-pending .cgtv-dash-hero__status{ color:var(--acc-muted); }
.dvd-account .cgtv-dash-hero--status-cancelled .cgtv-dash-hero__status,
.dvd-account .cgtv-dash-hero--status-failed .cgtv-dash-hero__status,
.dvd-account .cgtv-dash-hero--status-refunded .cgtv-dash-hero__status{ color:var(--wp--preset--color--error); border-color:color-mix(in srgb,var(--wp--preset--color--error) 45%,transparent); background:color-mix(in srgb,var(--wp--preset--color--error) 12%,transparent); }
.dvd-account .cgtv-dash-hero__title{
  font-family:var(--wp--preset--font-family--heading); font-weight:600;
  color:var(--acc-ink); font-size:var(--wp--preset--font-size--base); line-height:1.25;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.dvd-account .cgtv-dash-hero__meta{
  color:var(--acc-muted); font-size:var(--wp--preset--font-size--small);
  font-variant-numeric:tabular-nums;
}
/* CTA a destra — ghost pill neutro, è il segnale "entra". Peso allineato ai bottoni
   secondari (small, tap ≥48px). È l'azione #1 della dashboard: non deve essere debole. */
.dvd-account .cgtv-dash-hero__cta{
  flex:none; display:inline-flex; align-items:center; gap:7px;
  padding:0 clamp(14px,1.6vw,18px); min-height:48px; border-radius:var(--r-control);
  background:var(--wp--preset--color--surface-3);
  border:1px solid var(--wp--preset--color--line-2);
  color:var(--acc-ink); font-family:var(--wp--preset--font-family--heading);
  font-weight:600; font-size:var(--wp--preset--font-size--small); white-space:nowrap;
  transition:border-color .18s ease, background .18s ease;
}
.dvd-account .cgtv-dash-hero__cta svg{ width:18px; height:18px; }
@media (hover:hover){
  .dvd-account .cgtv-dash-hero:hover .cgtv-dash-hero__cta{
    border-color:var(--wp--preset--color--primary); background:var(--wp--preset--color--surface-2);
  }
}
/* mobile stretto: NON sparisce (perderebbe l'affordance "entra"). Diventa un target
   quadrato con la sola icona-lente, sempre ≥48px. Il testo va agli screen reader. */
@media (max-width:520px){
  .dvd-account .cgtv-dash-hero__cta{
    padding:0; width:48px; min-height:48px; justify-content:center; gap:0;
    font-size:0; /* nasconde il testo visivo, l'icona resta */
  }
  .dvd-account .cgtv-dash-hero__cta svg{ width:20px; height:20px; }
}

/* ---- EMPTY STATE (nessun ordine) — mai schermata vuota ---- */
.dvd-account .cgtv-dash-empty{
  margin-top:clamp(1.5rem,3vw,2.25rem); padding:clamp(28px,4vw,44px) clamp(20px,3vw,32px);
  background:var(--wp--preset--color--surface); border:var(--wp--custom--card--border);
  border-radius:var(--r-surface); box-shadow:var(--wp--custom--card--shadow);
  display:flex; flex-direction:column; align-items:center; text-align:center; gap:10px;
}
.dvd-account .cgtv-dash-empty__ico{
  width:56px; height:56px; display:flex; align-items:center; justify-content:center;
  border-radius:var(--r-control); margin-bottom:4px; /* come gli altri icon-badge */
  /* icona-badge NEUTRA (come le icone-step del checkout, stroke muted su surface-2):
     il rosso è riservato alle CTA/link. Un solo accento vince lo sguardo. */
  background:var(--wp--preset--color--surface-2);
  color:var(--wp--preset--color--muted);
}
.dvd-account .cgtv-dash-empty__ico svg{ width:26px; height:26px; }
.dvd-account .cgtv-dash-empty__title{
  font-family:var(--wp--preset--font-family--heading); font-weight:600;
  color:var(--acc-ink); font-size:var(--wp--preset--font-size--medium);
}
.dvd-account .cgtv-dash-empty__sub{ color:var(--acc-muted); font-size:var(--wp--preset--font-size--small); max-width:42ch; }
.dvd-account .cgtv-dash-empty__cta{
  margin-top:8px; display:inline-flex; align-items:center; justify-content:center;
  min-height:48px; padding:0 1.6rem; border-radius:var(--r-control);
  background:var(--wp--preset--color--primary); color:#fff!important;
  font-family:var(--wp--preset--font-family--heading); font-weight:700;
  font-size:var(--wp--preset--font-size--small); text-decoration:none!important;
  box-shadow:0 8px 30px color-mix(in srgb, var(--wp--preset--color--primary) 22%, transparent);
  transition:filter .18s ease, transform .12s ease;
}
@media (hover:hover){ .dvd-account .cgtv-dash-empty__cta:hover{ filter:brightness(1.06); } }
.dvd-account .cgtv-dash-empty__cta:active{ transform:scale(.99); }

/* ============================================================================
   BACHECA — GRIGLIA 2 COLONNE (mockup approvato). SINISTRA = ordini recenti;
   DESTRA "In breve" = card indirizzo spedizione + account. Su MOBILE <700px la
   griglia SPARISCE: là la nav È la bacheca (lista drill-down) → resta solo l'hero.
   ========================================================================== */
.dvd-account .cgtv-dash-grid{
  display:grid; grid-template-columns:1fr clamp(260px,26%,320px);
  gap:clamp(20px,2.5vw,36px); align-items:start;
  margin-top:clamp(1.75rem,3vw,2.5rem);
}
/* NESSUN ORDINE: stessa struttura di quando CI SONO ordini (empty a SINISTRA nel main,
   card Indirizzo+Account impilate a DESTRA nella side, sulla STESSA riga). Prima l'empty
   stava full-width SOPRA e la side sotto; ora entra nel grid → affiancati. L'empty riempie
   la sua colonna (non più una card centrata piccola). */
.dvd-account .cgtv-dash-grid--no-orders .cgtv-dash-grid__main{ display:flex; }
.dvd-account .cgtv-dash-grid--no-orders .cgtv-dash-grid__main .cgtv-dash-empty{ width:100%; margin:0; }
/* titoletto sezione ("Ordini recenti" / "In breve") */
.dvd-account .cgtv-dash-section-title{
  font-family:var(--wp--preset--font-family--heading); font-weight:600;
  color:var(--acc-muted); font-size:var(--wp--preset--font-size--x-small);
  text-transform:uppercase; letter-spacing:.06em; margin:0 0 .9rem;
}
.dvd-account .cgtv-dash-grid__side .cgtv-dash-section-title{ margin-top:0; }

/* --- ordini recenti (riusa .cgtv-order-card, variante link compatta) --- */
.dvd-account .cgtv-orders--compact{ display:flex; flex-direction:column; gap:12px; }
.dvd-account .cgtv-order-card--link{
  text-decoration:none!important; color:inherit; cursor:pointer;
}
.dvd-account .cgtv-order-card__total-inline{
  font-family:var(--wp--preset--font-family--heading); font-weight:600;
  color:var(--acc-ink); font-variant-numeric:tabular-nums;
}
/* "Vedi tutti gli ordini" */
.dvd-account .cgtv-dash-seeall{
  display:inline-flex; align-items:center; gap:6px; margin-top:14px; min-height:44px;
  color:var(--wp--preset--color--accent)!important; text-decoration:none!important;
  font-family:var(--wp--preset--font-family--body); font-weight:600;
  font-size:var(--wp--preset--font-size--small);
}
.dvd-account .cgtv-dash-seeall svg{ width:16px; height:16px; }
@media (hover:hover){ .dvd-account .cgtv-dash-seeall:hover{ gap:9px; } }

/* --- card "In breve" (indirizzo / account) --- */
.dvd-account .cgtv-info-card{
  background:var(--wp--preset--color--surface);
  border:var(--wp--custom--card--border); border-radius:var(--r-surface);
  box-shadow:var(--wp--custom--card--shadow);
  padding:clamp(16px,2vw,20px); margin-bottom:14px;
}
.dvd-account .cgtv-info-card:last-child{ margin-bottom:0; }
.dvd-account .cgtv-info-card__label{
  font-family:var(--wp--preset--font-family--body); font-weight:700;
  color:var(--acc-muted); font-size:var(--wp--preset--font-size--x-small);
  text-transform:uppercase; letter-spacing:.05em; margin-bottom:8px;
}
.dvd-account .cgtv-info-card__value{
  color:var(--acc-ink); font-size:var(--wp--preset--font-size--small);
  line-height:1.55; font-style:normal;
  overflow-wrap:anywhere; /* un'email lunga senza spazi usciva dalla card */
}
.dvd-account .cgtv-info-card{ min-width:0; }
/* UN ORDINE SOLO: l'hero lo mostra già, la colonna sinistra sarebbe vuota con le due
   card impilate a destra → "In breve" a tutta larghezza, card affiancate. */
.dvd-account .cgtv-dash-grid--solo{ grid-template-columns:1fr; }
.dvd-account .cgtv-dash-grid--solo .cgtv-dash-grid__main{ display:none; }
.dvd-account .cgtv-dash-grid--solo .cgtv-dash-grid__side{
  display:grid; grid-template-columns:1fr 1fr;
  gap:clamp(14px,1.6vw,20px); align-items:stretch;
}
.dvd-account .cgtv-dash-grid--solo .cgtv-dash-section-title{ grid-column:1 / -1; margin-bottom:0; }
.dvd-account .cgtv-dash-grid--solo .cgtv-info-card{ margin-bottom:0; }
.dvd-account .cgtv-info-card__value--empty{ color:var(--acc-muted); }
.dvd-account .cgtv-info-card__edit{
  display:inline-flex; align-items:center; gap:6px; margin-top:12px; min-height:44px;
  color:var(--wp--preset--color--accent)!important; text-decoration:none!important;
  font-family:var(--wp--preset--font-family--body); font-weight:600;
  font-size:var(--wp--preset--font-size--small);
}
.dvd-account .cgtv-info-card__edit svg{ width:16px; height:16px; }
.dvd-account .cgtv-info-card__edit:focus-visible{
  outline:none!important; box-shadow:var(--wp--custom--focus--ring)!important; border-radius:var(--r-control);
}

/* TABLET/iPad: la griglia diventa una colonna (poco spazio per la side) */
@media (max-width:1024px){
  .dvd-account .cgtv-dash-grid{ grid-template-columns:1fr; gap:clamp(20px,3vw,28px); }
}
/* MOBILE <700px: la bacheca = WIDGET IDENTITÀ (in cima) + lista-nav drill-down. Tutto
   il resto del contenuto dashboard (hero/griglia/intro/titolo) è nascosto: si raggiunge
   dai link. Il content (che contiene il widget) va SOPRA la lista-nav. */
@media (max-width:699px){
  /* del content dashboard tengo SOLO il widget identità: nascondo il resto */
  .dvd-account .cgtv-dash-grid,
  .dvd-account .cgtv-dash-hero,
  .dvd-account .cgtv-dash-empty,
  .dvd-account .cgtv-dash__intro,
  .dvd-account .cgtv-dash__head{ display:none!important; }
  /* il content dashboard NON è più nascosto (contiene il widget); azzero solo il suo
     margine e lo metto SOPRA la lista-nav. */
  .dvd-account .woocommerce:has(> .woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-content:has(.cgtv-dash){
    grid-row:1!important; grid-column:1!important; min-width:0!important;
  }
  .dvd-account .woocommerce:has(> .woocommerce-MyAccount-navigation):has(.cgtv-dash) > .woocommerce-MyAccount-navigation{
    grid-row:2!important; grid-column:1!important;
  }
}

/* ============================================================================
   NOTICE ACCOUNT (.woocommerce-notices-wrapper) — success/error/warning/info.
   Forma BANNER pieno (più prominente della pill del checkout: qui sono conferme
   importanti tipo "dettagli account salvati"). Superficie scura tinta + accento
   laterale colorato + icona colorata. Palette semantica coerente col checkout.
   Struttura reale: .wc-block-components-notice-banner.is-* > svg + .__content.
   ========================================================================== */
/* Costruito SULLO schema ufficiale WooCommerce (da wc-blocks.css), non contro:
   - il banner è già flex; noi cambiamo solo colori/bordo/radius (dark);
   - l'icona è un BADGE (cerchio pieno colorato, fill:#fff, height:100%) → teniamo
     quel design, cambiamo solo il colore del cerchio per stato;
   - il .__content ha già align-self:center (testo centrato); non lo tocchiamo;
   - il CTA .wc-forward ha float:right di default (link sottolineato) → lo rendiamo
     un pulsante brand compatto a destra.
   Regole GLOBALI (.woocommerce): su alcune pagine account il banner sta fuori da
   .dvd-account. Scope .woocommerce per non toccare l'admin. */
.woocommerce .wc-block-components-notice-banner{
  background:var(--wp--preset--color--surface-2)!important;
  border:1px solid var(--wp--preset--color--line-2)!important;
  border-radius:var(--r-control)!important;
  padding:14px 16px!important; gap:12px!important; margin:0 0 20px!important;
  color:var(--wp--preset--color--contrast)!important;
  font-family:var(--wp--preset--font-family--body)!important;
  font-size:var(--wp--preset--font-size--x-small)!important;
  line-height:1.5!important; box-shadow:none!important;
}
/* icona-badge + testo CENTRATI VERTICALMENTE insieme. Il problema: il pulsante
   "Sfoglia prodotti" è float:right DENTRO il .__content → lo rende ALTO, e "centro
   del content" finiva sotto la riga di testo. Soluzione: togliamo il pulsante dal
   flusso (position:absolute a destra) → il content torna alto quanto la sola riga
   di testo, e align-items:center centra perfettamente badge e testo.
   NB: specificità DOPPIA per battere wc-blocks.css (caricato dopo il tema). */
.woocommerce .wc-block-components-notice-banner.wc-block-components-notice-banner{
  align-items:center!important; position:relative!important;
  padding-right:150px!important; /* spazio riservato al pulsante absolute a destra */
}
.woocommerce .wc-block-components-notice-banner.wc-block-components-notice-banner>svg{
  width:22px!important; height:22px!important; min-height:0!important; padding:4px!important;
  align-self:center!important; margin:0!important;
  fill:#fff!important; box-sizing:border-box!important;
}
.woocommerce .wc-block-components-notice-banner.wc-block-components-notice-banner>.wc-block-components-notice-banner__content{
  align-self:center!important;
}
/* il contenuto: colore chiaro. */
.woocommerce .wc-block-components-notice-banner>.wc-block-components-notice-banner__content{
  color:var(--wp--preset--color--contrast)!important;
}
/* CTA "Sfoglia prodotti": WooCommerce lo fa .wc-forward float:right sottolineato →
   lo rendiamo PULSANTE brand compatto, POSIZIONATO ABSOLUTE a destra centrato
   verticalmente → così NON gonfia l'altezza del content (che quindi resta alto
   quanto una riga, e badge+testo si centrano insieme). Una sola regola, no float. */
.woocommerce .wc-block-components-notice-banner .wc-forward,
.woocommerce .wc-block-components-notice-banner__content a.wp-element-button{
  position:absolute!important; right:14px!important; top:50%!important;
  transform:translateY(-50%)!important; float:none!important;
  appearance:none!important; opacity:1!important;
  display:inline-flex!important; align-items:center!important; justify-content:center!important;
  min-height:1.7rem!important; padding:0 .8rem!important; margin:0!important;
  /* NEUTRO SOFT: superficie scura + bordo sottile, integrato nel banner (niente
     rosso brand né ombra, che bucavano il notice). Coerente coi pulsanti secondari. */
  background:var(--wp--preset--color--surface-3)!important;
  color:var(--wp--preset--color--contrast)!important;
  border:1px solid var(--wp--preset--color--line-2)!important; border-radius:var(--wp--custom--radius--micro)!important;
  box-shadow:none!important;
  font-family:var(--wp--preset--font-family--body)!important; font-weight:600!important;
  font-size:var(--wp--preset--font-size--x-small)!important; line-height:1!important;
  text-decoration:none!important; white-space:nowrap!important;
  transition:border-color .18s ease, background .18s ease!important;
}
@media (hover:hover){
  .woocommerce .wc-block-components-notice-banner .wc-forward:hover,
  .woocommerce .wc-block-components-notice-banner__content a.wp-element-button:hover{
    background:var(--wp--preset--color--surface-2)!important; border-color:var(--wp--preset--color--line-2)!important; text-decoration:none!important;
  }
}
.woocommerce .wc-block-components-notice-banner .wc-forward:active,
.woocommerce .wc-block-components-notice-banner__content a.wp-element-button:active{
  transform:translateY(-50%) scale(.98)!important;
}
/* STATI: coloriamo il BADGE (cerchio) e il bordo. WooCommerce mette il colore su
   background-color del svg → lo sovrascriviamo con la nostra palette dark. */
/* STATI: BADGE (cerchio) + bordo tinto. Colore = TOKEN palette semantica; il fondo
   e il bordo usano color-mix sul token stesso (niente rgba con hex parallelo). */
.woocommerce .wc-block-components-notice-banner.is-success{
  background:color-mix(in srgb, var(--wp--preset--color--success) 8%, transparent)!important;
  border-color:color-mix(in srgb, var(--wp--preset--color--success) 32%, transparent)!important;
}
.woocommerce .wc-block-components-notice-banner.is-success>svg{ background-color:var(--wp--preset--color--success)!important; }
.woocommerce .wc-block-components-notice-banner.is-error{
  background:color-mix(in srgb, var(--wp--preset--color--error) 8%, transparent)!important;
  border-color:color-mix(in srgb, var(--wp--preset--color--error) 32%, transparent)!important;
}
.woocommerce .wc-block-components-notice-banner.is-error>svg{ background-color:var(--wp--preset--color--error)!important; }
.woocommerce .wc-block-components-notice-banner.is-warning{
  background:color-mix(in srgb, var(--wp--preset--color--warning) 10%, transparent)!important;
  border-color:color-mix(in srgb, var(--wp--preset--color--warning) 32%, transparent)!important;
}
.woocommerce .wc-block-components-notice-banner.is-warning>svg{ background-color:var(--wp--preset--color--warning)!important; }
.woocommerce .wc-block-components-notice-banner.is-info{
  background:color-mix(in srgb, var(--wp--preset--color--info) 9%, transparent)!important;
  border-color:color-mix(in srgb, var(--wp--preset--color--info) 32%, transparent)!important;
}
.woocommerce .wc-block-components-notice-banner.is-info>svg{ background-color:var(--wp--preset--color--info)!important; }
/* dismiss (X): WooCommerce lo mette a destra con .wc-block-components-button.
   Lo rendiamo muted, hover chiaro. */
.woocommerce .wc-block-components-notice-banner>.wc-block-components-button{
  color:var(--wp--preset--color--muted)!important; opacity:.7!important;
}
@media (hover:hover){
  .woocommerce .wc-block-components-notice-banner>.wc-block-components-button:hover{ opacity:1!important; }
}

/* (le vecchie .cgtv-dash-card scorciatoia sono state RIMOSSE: la bacheca ora ha
   hero + ordini-recenti + "In breve", vedi blocco BACHECA-GRIGLIA sopra.) */

/* headings di sezione (Ordini, Indirizzi...) — forti */
.dvd-account .woocommerce-MyAccount-content h2,
.dvd-account .woocommerce-MyAccount-content h3{
  font-family:var(--wp--preset--font-family--heading); color:var(--acc-ink);
  font-size:clamp(1.3rem,3vw,1.6rem); font-weight:600; margin:0 0 1.25rem; letter-spacing:-.01em;
}
.dvd-account .woocommerce-MyAccount-content p{ color:var(--wp--preset--color--muted); line-height:1.65; }
/* Link testuali nei contenuti account → ACCENT (#ff2b3a), NON primary (che è SOLO per
   le CTA piene). Regola generica di fallback per i link "nudi" del markup WooCommerce.
   ESCLUDE ogni pulsante/CTA/link già stilato: senza queste esclusioni la regola (con
   !important) sovrascriveva il loro colore — es. "Paga ora" (.cgtv-vieworder__pay, testo
   bianco su fondo primary) diventava rosso su rosso = INVISIBILE. Da qui il bug. */
.dvd-account .woocommerce-MyAccount-content a:not(.button):not(.cgtv-dash-card):not(.cgtv-order-card__number):not(.cgtv-order-card__btn):not([class*="cgtv-vieworder__"]):not([class*="__edit"]):not([class*="__cta"]):not(.cgtv-dash-seeall):not(.cgtv-vieworder__item-name a){
  color:var(--wp--preset--color--accent)!important; text-decoration:none!important; font-weight:600; transition:color .2s ease;
}
@media (hover:hover){ .dvd-account .woocommerce-MyAccount-content a:not(.button):not(.cgtv-dash-card):not(.cgtv-order-card__number):not(.cgtv-order-card__btn):not([class*="cgtv-vieworder__"]):not([class*="__edit"]):not([class*="__cta"]):not(.cgtv-dash-seeall):hover{ color:var(--wp--preset--color--primary-dark)!important; } }

/* ============================================================================
   LISTA ORDINI — card per ordine (override orders.php), dark cinematic coerente
   con le card Bacheca. Stato = puntino colorato + testo (semantico).
   ========================================================================== */
.dvd-account .cgtv-orders{ display:flex; flex-direction:column; gap:14px; }
.dvd-account .cgtv-order-card{
  background:var(--wp--custom--card--background);
  border:var(--wp--custom--card--border); border-radius:var(--wp--custom--card--radius);
  padding:clamp(16px,2vw,22px);
  box-shadow:var(--wp--custom--card--shadow);
  display:grid; gap:12px;
  transition:border-color .2s ease, transform .12s ease, box-shadow .25s ease;
}
@media (hover:hover){
  .dvd-account .cgtv-order-card:hover{
    border-color:color-mix(in srgb, var(--wp--preset--color--primary) 50%, transparent); transform:translateY(-2px);
    box-shadow:0 22px 44px -22px rgba(0,0,0,.95);
  }
}
/* riga 1: numero ordine + stato.
   flex-wrap:wrap = valvola di sicurezza: su card strette (colonna sx bacheca, o mobile
   con numero lungo) la pill scende SOTTO il numero invece di schiacciarlo/andare in
   overflow. Su desktop resta tutto in riga (numero a sx / pill a dx). */
.dvd-account .cgtv-order-card__head{
  display:flex; align-items:center; justify-content:space-between;
  flex-wrap:wrap; gap:8px 12px;
}
.dvd-account .cgtv-order-card__number{
  font-family:var(--wp--preset--font-family--heading); font-weight:700;
  font-size:var(--wp--preset--font-size--base);
  color:var(--acc-ink)!important; text-decoration:none!important;
  transition:color .2s ease;
  min-width:0; /* il numero è la parte che cede: può accorciarsi, non la pill */
}
@media (hover:hover){ .dvd-account .cgtv-order-card__number:hover{ color:var(--wp--preset--color--accent)!important; } }
/* stato = PILL TINTA (stesso linguaggio dell'hero: fondo color-mix + bordo + dot +
   testo). Un solo componente-stato in tutta l'area. Testo small (over-45). */
.dvd-account .cgtv-order-card__status{
  display:inline-flex; align-items:center; gap:7px; flex:none;
  font-family:var(--wp--preset--font-family--body);
  font-size:var(--wp--preset--font-size--small); font-weight:600;
  color:var(--acc-muted);
  padding:4px 11px; border-radius:var(--r-pill);
  border:1px solid var(--wp--preset--color--line-2);
  white-space:nowrap; /* stato = informazione atomica: MAI a capo dentro la pill */
}
.dvd-account .cgtv-order-card__dot{
  width:9px; height:9px; border-radius:50%; flex:none;
  background:var(--acc-muted); /* default; sovrascritto per stato sotto */
}
/* colori semantici per stato (WooCommerce mette la classe --status-* sulla card).
   TOKEN palette canonica (theme.json): warning/success/info/error — NON hex a sé.
   NB: lo stato è SEMPRE puntino+testo (mai solo colore) → daltonici/over-45 ok. */
/* processing = "In lavorazione" (pagato, in preparazione) → INFO (blu, neutro-attivo,
   NON warning-giallo che suggerisce un problema). Decisione utente 2026-07-12. */
.dvd-account .cgtv-order-card__status--processing .cgtv-order-card__dot{ background:var(--wp--preset--color--info); }
.dvd-account .cgtv-order-card__status--processing{ color:var(--wp--preset--color--info); border-color:color-mix(in srgb,var(--wp--preset--color--info) 45%,transparent); background:color-mix(in srgb,var(--wp--preset--color--info) 12%,transparent); }
/* "Confermato" e' definitivo quanto "Completato": stesso trattamento VERDE.
   Senza una regola propria cadeva sul grigio di default, che nella scala di
   questo componente significa "in attesa" — il contrario di quello che e'. */
.dvd-account .cgtv-order-card__status--cgtv-confermato .cgtv-order-card__dot,
.dvd-account .cgtv-order-card__status--completed .cgtv-order-card__dot{ background:var(--wp--preset--color--success); }
.dvd-account .cgtv-order-card__status--cgtv-confermato{ color:var(--wp--preset--color--success); border-color:color-mix(in srgb,var(--wp--preset--color--success) 45%,transparent); background:color-mix(in srgb,var(--wp--preset--color--success) 12%,transparent); }
.dvd-account .cgtv-order-card__status--completed{ color:var(--wp--preset--color--success); border-color:color-mix(in srgb,var(--wp--preset--color--success) 45%,transparent); background:color-mix(in srgb,var(--wp--preset--color--success) 12%,transparent); }
/* pending/on-hold = "in attesa" (di pagamento/conferma) → NEUTRO grigio, distinto dal
   blu di processing per non confondersi (sono stati diversi). */
.dvd-account .cgtv-order-card__status--on-hold .cgtv-order-card__dot,
.dvd-account .cgtv-order-card__status--pending .cgtv-order-card__dot{ background:var(--wp--preset--color--muted-2); }
.dvd-account .cgtv-order-card__status--on-hold,
.dvd-account .cgtv-order-card__status--pending{ color:var(--acc-muted); }
.dvd-account .cgtv-order-card__status--cancelled .cgtv-order-card__dot,
.dvd-account .cgtv-order-card__status--failed .cgtv-order-card__dot,
.dvd-account .cgtv-order-card__status--refunded .cgtv-order-card__dot{ background:var(--wp--preset--color--error); }
.dvd-account .cgtv-order-card__status--cancelled,
.dvd-account .cgtv-order-card__status--failed,
.dvd-account .cgtv-order-card__status--refunded{ color:var(--wp--preset--color--error); border-color:color-mix(in srgb,var(--wp--preset--color--error) 45%,transparent); background:color-mix(in srgb,var(--wp--preset--color--error) 12%,transparent); }
/* riga 2: data · articoli */
.dvd-account .cgtv-order-card__meta{
  display:flex; align-items:center; gap:8px;
  color:var(--acc-muted); font-size:var(--wp--preset--font-size--small);
}
.dvd-account .cgtv-order-card__sep{ opacity:.5; }
/* riga 3: totale + pulsante Vedi */
.dvd-account .cgtv-order-card__foot{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding-top:12px; border-top:1px solid var(--acc-line);
}
.dvd-account .cgtv-order-card__total{
  font-family:var(--wp--preset--font-family--heading); font-weight:700;
  font-size:var(--wp--preset--font-size--small); color:var(--acc-ink);
}
.dvd-account .cgtv-order-card__actions{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
/* ============================================================================
   PULSANTI AZIONE ORDINE — GERARCHIA a 3 livelli (audit team Revolut/Stripe):
   in una lista con N ordini pending il rosso PIENO griderebbe → il primario è GHOST
   (bordo+testo rosso) che al hover si riempie, anticipando la CTA piena del dettaglio.
   · Paga (primary ghost) · Dettagli (neutro) · Annulla (distruttivo, de-enfatizzato+isolato).
   ========================================================================== */
.dvd-account .cgtv-order-card__btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  min-height:48px; padding:0 1.1rem; border-radius:var(--r-control)!important;
  font-family:var(--wp--preset--font-family--heading); font-weight:600;
  font-size:var(--wp--preset--font-size--small); text-decoration:none!important;
  /* base NEUTRA (usata anche dalla paginazione senza variante) */
  background:var(--acc-surface3)!important; color:var(--acc-ink)!important;
  border:1px solid var(--wp--preset--color--line-2)!important;
  transition:background .2s ease, border-color .2s ease, color .2s ease, transform .12s ease;
}
.dvd-account .cgtv-order-card__btn svg{ width:17px; height:17px; flex:none; }
.dvd-account .cgtv-order-card__btn:active{ transform:scale(.98); }

/* PAGA — primario GHOST: bordo+testo rosso; hover = CTA PIENA (anticipa il dettaglio) */
.dvd-account .cgtv-order-card__btn--pay{
  background:transparent!important; color:var(--wp--preset--color--accent)!important;
  border:1.5px solid var(--wp--preset--color--primary)!important;
}
@media (hover:hover){
  .dvd-account .cgtv-order-card__btn--pay:hover{
    background:var(--wp--preset--color--primary)!important; color:#fff!important;
    border-color:var(--wp--preset--color--primary)!important;
  }
}
/* DETTAGLI — secondario neutro quieto (un gradino sotto: surface-2 + bordo line) */
.dvd-account .cgtv-order-card__btn--view{
  background:var(--wp--preset--color--surface-2)!important; color:var(--acc-ink)!important;
  border:1px solid var(--wp--preset--color--line)!important;
}
.dvd-account .cgtv-order-card__btn--view svg{ color:var(--acc-muted); }
@media (hover:hover){
  .dvd-account .cgtv-order-card__btn--view:hover{
    background:var(--wp--preset--color--surface-3)!important; border-color:var(--wp--preset--color--line-2)!important;
  }
}
/* ANNULLA — distruttivo DE-ENFATIZZATO: testo-only muted-2, ISOLATO a destra; il rosso
   error si rivela solo all'hover (segnala il pericolo al momento giusto). */
.dvd-account .cgtv-order-card__btn--cancel{
  background:transparent!important; border:1px solid transparent!important;
  color:var(--wp--preset--color--muted-2)!important; margin-left:auto;
  padding:0 .7rem;
}
@media (hover:hover){
  .dvd-account .cgtv-order-card__btn--cancel:hover{
    color:var(--wp--preset--color--error)!important; background:transparent!important;
  }
}
/* focus-visible su tutte le varianti (accessibilità) */
.dvd-account .cgtv-order-card__btn:focus-visible{
  outline:none!important; box-shadow:var(--wp--custom--focus--ring)!important;
}
/* paginazione ordini */
.dvd-account .cgtv-orders-pagination{ display:flex; gap:10px; margin-top:18px; }


/* ============================================================================
   DETTAGLIO ORDINE (view-order) — "DOSSIER ORDINE" (audit team Revolut + top designer,
   2026-07-12). Stesso mondo di bacheca+checkout: pill stato TINTA, card bordo line-2,
   lista articoli con COVER locandina, totali col totale dominante, "Paga ora" = CTA
   primaria, metodo pagamento. Un solo componente-stato in tutta l'area.
   ========================================================================== */
.dvd-account .cgtv-vieworder{ display:flex; flex-direction:column; gap:clamp(20px,2.5vw,28px); }

/* --- back-link "‹ Ordini" --- */
.dvd-account .cgtv-vieworder__back{
  display:inline-flex; align-items:center; gap:6px; align-self:flex-start; min-height:44px;
  color:var(--wp--preset--color--accent)!important; text-decoration:none!important;
  font-family:var(--wp--preset--font-family--body); font-weight:600;
  font-size:var(--wp--preset--font-size--small);
}
.dvd-account .cgtv-vieworder__back svg{ width:18px; height:18px; }
@media (hover:hover){ .dvd-account .cgtv-vieworder__back:hover{ gap:9px; } }
.dvd-account .cgtv-vieworder__back:focus-visible{
  outline:none!important; box-shadow:var(--wp--custom--focus--ring)!important; border-radius:var(--r-control);
}

/* --- header ordine: numero+meta a sx, pill stato + totale a dx --- */
.dvd-account .cgtv-vieworder__head{
  display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap;
  padding-bottom:clamp(18px,2.5vw,24px); border-bottom:1px solid var(--wp--preset--color--line);
}
.dvd-account .cgtv-vieworder__id{ display:flex; flex-direction:column; gap:4px; min-width:0; }
.dvd-account .cgtv-vieworder__eyebrow{
  font-family:var(--wp--preset--font-family--body);
  font-size:var(--wp--preset--font-size--x-small); font-weight:700;
  letter-spacing:.14em; text-transform:uppercase; color:var(--wp--preset--color--muted-2);
}
.dvd-account .cgtv-vieworder__number{
  font-family:var(--wp--preset--font-family--heading); font-weight:700;
  font-size:var(--wp--preset--font-size--large); color:var(--wp--preset--color--contrast); line-height:1;
}
.dvd-account .cgtv-vieworder__submeta{
  color:var(--wp--preset--color--muted); font-size:var(--wp--preset--font-size--small);
  font-variant-numeric:tabular-nums;
}
.dvd-account .cgtv-vieworder__meta{
  display:flex; flex-direction:column; align-items:flex-end; gap:10px; flex:none;
  margin-left:auto; text-align:right; /* ancorata a destra anche quando l'header wrappa */
}
/* TOTALE dominante nell'header, allineato a destra come la pill (non centrato) */
.dvd-account .cgtv-vieworder__grandtotal{
  align-self:flex-end; text-align:right;
  font-family:var(--wp--preset--font-family--heading); font-weight:700;
  font-size:var(--wp--preset--font-size--medium); color:var(--wp--preset--color--contrast);
  font-variant-numeric:tabular-nums; line-height:1;
}
/* MOBILE: quando l'header va a capo, __meta diventa una RIGA piena (pill a sx, totale
   a dx) invece che colonna — così il totale non penzola centrato sotto la pill. */
@media (max-width:560px){
  .dvd-account .cgtv-vieworder__meta{
    flex-direction:row; align-items:center; justify-content:space-between;
    width:100%; gap:12px;
  }
}

/* --- PILL STATO TINTA — IDENTICA a .cgtv-order-card__status (un solo linguaggio) --- */
.dvd-account .cgtv-vieworder__status{
  display:inline-flex; align-items:center; gap:7px; flex:none;
  font-family:var(--wp--preset--font-family--body);
  font-size:var(--wp--preset--font-size--small); font-weight:600;
  color:var(--wp--preset--color--muted);
  padding:4px 11px; border-radius:var(--r-pill);
  border:1px solid var(--wp--preset--color--line-2);
  white-space:nowrap;
}
.dvd-account .cgtv-vieworder__status-ico{ display:inline-flex; }
.dvd-account .cgtv-vieworder__status-ico svg{ width:16px; height:16px; }
/* colori stato = TOKEN semantici (stessa mappa della lista ordini). BUG FIX: prima qui
   processing=giallo e pending=blu, ORA processing=info(blu), pending/on-hold=neutro. */
.dvd-account .cgtv-vieworder__status--processing{ color:var(--wp--preset--color--info); border-color:color-mix(in srgb,var(--wp--preset--color--info) 45%,transparent); background:color-mix(in srgb,var(--wp--preset--color--info) 12%,transparent); }
/* «Confermato» (cgtv-confermato, lo stato che gli ordini pagati hanno DAVVERO qui:
   vedi cgtv-order-status.php) = verde come «completed» e come la pill della lista
   ordini. Mancava: il dettaglio lo mostrava grigio, la lista verde. */
.dvd-account .cgtv-vieworder__status--completed,
.dvd-account .cgtv-vieworder__status--cgtv-confermato{ color:var(--wp--preset--color--success); border-color:color-mix(in srgb,var(--wp--preset--color--success) 45%,transparent); background:color-mix(in srgb,var(--wp--preset--color--success) 12%,transparent); }
.dvd-account .cgtv-vieworder__status--on-hold,
.dvd-account .cgtv-vieworder__status--pending{ color:var(--wp--preset--color--muted); }
/* «Prenotato» (Startup): stato INFO come «In lavorazione» — e' attivo, non e' un'attesa
   ne' un incasso; il verde resta al pagato */
.dvd-account .cgtv-vieworder__status--cgtv-pledge,
.dvd-account .cgtv-order-card__status--cgtv-pledge{ color:var(--wp--preset--color--info); border-color:color-mix(in srgb,var(--wp--preset--color--info) 45%,transparent); background:color-mix(in srgb,var(--wp--preset--color--info) 12%,transparent); }
.dvd-account .cgtv-vieworder__status--cancelled,
.dvd-account .cgtv-vieworder__status--failed,
.dvd-account .cgtv-vieworder__status--refunded{ color:var(--wp--preset--color--error); border-color:color-mix(in srgb,var(--wp--preset--color--error) 45%,transparent); background:color-mix(in srgb,var(--wp--preset--color--error) 12%,transparent); }

/* --- BARRA AZIONE: Paga ora (CTA primaria) + Annulla (secondario) --- */
.dvd-account .cgtv-vieworder__actions{
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  padding:clamp(14px,2vw,18px);
  background:var(--wp--preset--color--surface);
  border:var(--wp--custom--card--border); border-radius:var(--r-surface);
  box-shadow:var(--wp--custom--card--shadow);
}
.dvd-account .cgtv-vieworder__actions-note{
  color:var(--wp--preset--color--muted); font-size:var(--wp--preset--font-size--small);
}
.dvd-account .cgtv-vieworder__actions-btns{ display:flex; gap:10px; flex-wrap:wrap; margin-left:auto; }
/* Paga ora = UNICA CTA primaria della pagina (stile .cgtv-dash-empty__cta) */
.dvd-account .cgtv-vieworder__pay{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  min-height:48px; padding:0 1.6rem; border-radius:var(--r-control);
  background:var(--wp--preset--color--primary); color:#fff!important;
  font-family:var(--wp--preset--font-family--heading); font-weight:700;
  font-size:var(--wp--preset--font-size--small); text-decoration:none!important;
  box-shadow:0 8px 30px color-mix(in srgb, var(--wp--preset--color--primary) 22%, transparent);
  transition:filter .18s ease, transform .12s ease;
}
.dvd-account .cgtv-vieworder__pay svg{ width:18px; height:18px; }
@media (hover:hover){ .dvd-account .cgtv-vieworder__pay:hover{ filter:brightness(1.06); } }
.dvd-account .cgtv-vieworder__pay:active{ transform:scale(.99); }
.dvd-account .cgtv-vieworder__pay:focus-visible{ outline:none!important; box-shadow:var(--wp--custom--focus--ring)!important; }
/* Annulla = secondario neutro (come .cgtv-order-card__btn) */
.dvd-account .cgtv-vieworder__action-btn{
  display:inline-flex; align-items:center; justify-content:center;
  min-height:48px; padding:0 1.1rem;
  background:var(--wp--preset--color--surface-3)!important; color:var(--wp--preset--color--contrast)!important;
  border:1px solid var(--wp--preset--color--line-2)!important; border-radius:var(--r-control)!important;
  font-family:var(--wp--preset--font-family--heading); font-weight:600;
  font-size:var(--wp--preset--font-size--small); text-decoration:none!important;
  transition:background .2s ease, border-color .2s ease, transform .12s ease;
}
@media (hover:hover){ .dvd-account .cgtv-vieworder__action-btn:hover{ background:var(--wp--preset--color--surface-2)!important; border-color:var(--acc-red)!important; } }
.dvd-account .cgtv-vieworder__action-btn:focus-visible{ outline:none!important; box-shadow:var(--wp--custom--focus--ring)!important; }

/* --- titoli sezione (Articoli, Informazioni ordine, Aggiornamenti) --- */
.dvd-account .cgtv-vieworder__section-title{
  font-family:var(--wp--preset--font-family--heading); font-weight:600;
  color:var(--wp--preset--color--muted); font-size:var(--wp--preset--font-size--x-small);
  text-transform:uppercase; letter-spacing:.06em; margin:0 0 .9rem;
}

/* --- card contenitore (articoli+totali) --- */
.dvd-account .cgtv-vieworder__card{
  background:var(--wp--preset--color--surface);
  border:var(--wp--custom--card--border); border-radius:var(--r-surface);
  box-shadow:var(--wp--custom--card--shadow); overflow:hidden;
}

/* --- LISTA ARTICOLI con COVER locandina --- */
.dvd-account .cgtv-vieworder__items{ list-style:none; margin:0; padding:0; }
.dvd-account .cgtv-vieworder__item{
  display:flex; align-items:center; gap:clamp(12px,1.6vw,16px);
  padding:clamp(14px,1.8vw,18px);
  border-bottom:1px solid var(--wp--preset--color--line);
}
.dvd-account .cgtv-vieworder__item:last-child{ border-bottom:0; }
/* cover locandina 5:7 (come l'hero bacheca) */
.dvd-account .cgtv-vieworder__item-cover{
  flex:none; width:clamp(48px,10vw,60px); aspect-ratio:5/7;
  border-radius:var(--wp--custom--radius--micro); overflow:hidden;
  background:var(--wp--preset--color--surface-3);
  border:1px solid var(--wp--preset--color--line-2);
  display:flex; align-items:center; justify-content:center;
}
.dvd-account .cgtv-vieworder__item-cover img,
.dvd-account .cgtv-vieworder__item-img{ width:100%; height:100%; object-fit:cover; display:block; }
.dvd-account .cgtv-vieworder__item-ph{ width:40%; height:40%; color:var(--wp--preset--color--muted-2); }
.dvd-account .cgtv-vieworder__item-body{ flex:1; min-width:0; display:flex; flex-direction:column; gap:4px; }
.dvd-account .cgtv-vieworder__item-name{
  font-family:var(--wp--preset--font-family--heading); font-weight:600;
  color:var(--wp--preset--color--contrast); font-size:var(--wp--preset--font-size--small); line-height:1.3;
}
.dvd-account .cgtv-vieworder__item-name a{ color:var(--wp--preset--color--contrast)!important; text-decoration:none!important; }
@media (hover:hover){ .dvd-account .cgtv-vieworder__item-name a:hover{ color:var(--wp--preset--color--accent)!important; } }
.dvd-account .cgtv-vieworder__item-name a:focus-visible{ outline:none!important; box-shadow:var(--wp--custom--focus--ring)!important; border-radius:var(--wp--custom--radius--micro); }
.dvd-account .cgtv-vieworder__item-meta{
  display:flex; flex-wrap:wrap; gap:4px 10px; color:var(--wp--preset--color--muted);
  font-size:var(--wp--preset--font-size--x-small);
}
.dvd-account .cgtv-vieworder__item-meta .wc-item-meta{ list-style:none; margin:0; padding:0; display:flex; gap:10px; flex-wrap:wrap; }
.dvd-account .cgtv-vieworder__item-meta .wc-item-meta li{ display:flex; gap:4px; }
.dvd-account .cgtv-vieworder__item-meta strong{ font-weight:600; color:var(--wp--preset--color--muted); }
.dvd-account .cgtv-vieworder__item-meta p{ margin:0; }
.dvd-account .cgtv-vieworder__item-qty{ color:var(--wp--preset--color--muted); }
.dvd-account .cgtv-vieworder__item-price{
  flex:none; font-family:var(--wp--preset--font-family--heading); font-weight:600;
  color:var(--wp--preset--color--contrast); font-size:var(--wp--preset--font-size--small);
  font-variant-numeric:tabular-nums;
}
.dvd-account .cgtv-vieworder__item-note{
  padding:12px clamp(14px,1.8vw,18px); border-bottom:1px solid var(--wp--preset--color--line);
  color:var(--wp--preset--color--muted); font-size:var(--wp--preset--font-size--x-small);
}
.dvd-account .cgtv-vieworder__item-note p{ margin:0; }

/* --- TOTALI: griglia label→valore, totale dominante (come il checkout) --- */
.dvd-account .cgtv-vieworder__totals{
  padding:clamp(14px,1.8vw,18px);
  border-top:1px solid var(--wp--preset--color--line-2);
  background:color-mix(in srgb, var(--wp--preset--color--surface-2) 40%, transparent);
  display:flex; flex-direction:column; gap:9px;
}
.dvd-account .cgtv-vieworder__total-row{
  display:flex; align-items:baseline; justify-content:space-between; gap:16px;
  font-size:var(--wp--preset--font-size--small);
}
.dvd-account .cgtv-vieworder__total-label{ color:var(--wp--preset--color--muted); }
.dvd-account .cgtv-vieworder__total-value{ color:var(--wp--preset--color--contrast); font-variant-numeric:tabular-nums; }
.dvd-account .cgtv-vieworder__total-row--grand{
  margin-top:5px; padding-top:12px; border-top:1px solid var(--wp--preset--color--line);
}
.dvd-account .cgtv-vieworder__total-row--grand .cgtv-vieworder__total-label,
.dvd-account .cgtv-vieworder__total-row--grand .cgtv-vieworder__total-value{
  font-family:var(--wp--preset--font-family--heading); font-weight:700;
  color:var(--wp--preset--color--contrast); font-size:var(--wp--preset--font-size--medium);
}

/* --- nota cliente (se presente) --- */
.dvd-account .cgtv-vieworder__customer-note{
  margin-top:14px; padding:clamp(14px,1.8vw,18px);
  background:var(--wp--preset--color--surface);
  border:var(--wp--custom--card--border); border-radius:var(--r-surface);
  box-shadow:var(--wp--custom--card--shadow);
}
.dvd-account .cgtv-vieworder__customer-note-label{
  display:block; font-family:var(--wp--preset--font-family--body); font-weight:700;
  color:var(--wp--preset--color--muted); font-size:var(--wp--preset--font-size--x-small);
  text-transform:uppercase; letter-spacing:.05em; margin-bottom:6px;
}
.dvd-account .cgtv-vieworder__customer-note p{ margin:0; color:var(--wp--preset--color--contrast); font-size:var(--wp--preset--font-size--small); }

/* --- INFO ORDINE: 3 card (spedizione/fatturazione/pagamento) --- */
.dvd-account .cgtv-vieworder__info-grid{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
  gap:clamp(14px,1.6vw,20px);
}
.dvd-account .cgtv-vieworder__info-card{
  background:var(--wp--preset--color--surface);
  border:var(--wp--custom--card--border); border-radius:var(--r-surface);
  box-shadow:var(--wp--custom--card--shadow);
  padding:clamp(16px,2vw,20px);
  display:flex; flex-direction:column; gap:12px;
  min-width:0; overflow-wrap:anywhere; /* email lunga: va a capo dentro la card */
}
.dvd-account .cgtv-vieworder__info-head{ display:flex; align-items:center; gap:12px; }
.dvd-account .cgtv-vieworder__info-ico{
  flex:none; width:40px; height:40px; display:flex; align-items:center; justify-content:center;
  border-radius:var(--r-control);
  /* icona-badge NEUTRA come il checkout (muted su surface-2), non rossa */
  background:var(--wp--preset--color--surface-2);
  color:var(--wp--preset--color--muted);
}
.dvd-account .cgtv-vieworder__info-ico svg{ width:20px; height:20px; }
.dvd-account .cgtv-vieworder__info-title{
  margin:0; font-family:var(--wp--preset--font-family--heading); font-weight:600;
  color:var(--wp--preset--color--contrast); font-size:var(--wp--preset--font-size--base);
}
.dvd-account .cgtv-vieworder__info-body address{
  font-style:normal; color:var(--wp--preset--color--muted); line-height:1.6;
  font-size:var(--wp--preset--font-size--small); margin:0;
  display:flex; flex-direction:column; gap:2px;
}
.dvd-account .cgtv-vieworder__info-line{ color:var(--wp--preset--color--muted); }
/* righe DIRETTE nel corpo della card (card Pagamento del pledge, Informazioni
   aggiuntive): senza <address> intorno restavano inline e si incollavano —
   misurato sul 9303. Stesso registro delle righe dentro <address>. */
.dvd-account .cgtv-vieworder__info-body > .cgtv-vieworder__info-line{
  display:block; font-size:var(--wp--preset--font-size--small); line-height:1.6;
}
.dvd-account .cgtv-vieworder__info-body > .cgtv-vieworder__info-line + .cgtv-vieworder__info-line{ margin-top:2px; }
.dvd-account .cgtv-vieworder__info-line--strong{ color:var(--wp--preset--color--contrast); font-weight:600; }

/* --- AGGIORNAMENTI ORDINE (note) — in fondo --- */
.dvd-account .cgtv-vieworder__updates .notes{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:12px; }
.dvd-account .cgtv-vieworder__updates .note{
  background:var(--wp--preset--color--surface); border:var(--wp--custom--card--border);
  border-radius:var(--r-surface); box-shadow:var(--wp--custom--card--shadow); padding:14px 16px;
}
.dvd-account .cgtv-vieworder__updates .woocommerce-OrderUpdate-meta{
  color:var(--wp--preset--color--muted-2); font-size:var(--wp--preset--font-size--x-small); margin:0 0 6px;
}
.dvd-account .cgtv-vieworder__updates .woocommerce-OrderUpdate-description{
  color:var(--wp--preset--color--contrast); font-size:var(--wp--preset--font-size--small);
}
.dvd-account .cgtv-vieworder__updates .woocommerce-OrderUpdate-description p{ margin:0; }

/* ---- FORM interni (indirizzi, dettagli): input coerenti ---- */
.dvd-account .woocommerce-MyAccount-content form .woocommerce-input-wrapper input,
.dvd-account .woocommerce-MyAccount-content input.input-text,
.dvd-account .woocommerce-MyAccount-content select,
.dvd-account .woocommerce-MyAccount-content textarea{
  width:100%; box-sizing:border-box;
  /* campo "scavato" (theme.json custom.field): stesso pattern del checkout */
  background:var(--wp--custom--field--background)!important; border:var(--wp--custom--field--border)!important;
  border-radius:var(--wp--custom--field--radius)!important; box-shadow:var(--wp--custom--field--shadow)!important;
  color:var(--acc-ink)!important; font-family:var(--wp--preset--font-family--body);
  font-size:var(--wp--preset--font-size--small)!important; padding:.75rem .9rem!important;
  transition:border-color .2s ease, box-shadow .2s ease;
}
/* select NATIVO (Provincia/Paese senza Select2): chevron Phosphor del tema,
   niente freccia default del browser. */
.dvd-account .woocommerce-MyAccount-content select{
  appearance:none!important; -webkit-appearance:none!important; -moz-appearance:none!important;
  padding-right:2.4rem!important; cursor:pointer;
  /* chevron Lucide caret-down (coerente col date picker e col resto del sito) */
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239a9a9a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important; background-position:right 0.85rem center!important; background-size:1em!important;
}
/* le opzioni del menu nativo: su alcuni OS il colore è ereditato → forziamo scuro
   dove il browser lo consente (Windows/Linux; su macOS il menu è di sistema). */
.dvd-account .woocommerce-MyAccount-content select option{
  background:var(--acc-paper2); color:var(--acc-ink);
}
.dvd-account .woocommerce-MyAccount-content label{
  color:var(--acc-muted); font-size:var(--wp--preset--font-size--x-small);
  font-weight:700; text-transform:uppercase; letter-spacing:.06em; margin-bottom:.4rem; display:block;
}
.dvd-account .woocommerce-MyAccount-content form button[type="submit"]{
  background:var(--wp--preset--color--primary)!important; color:#fff!important;
  border:0!important; border-radius:var(--r-control)!important; font-family:var(--wp--preset--font-family--heading); font-weight:700;
  font-size:var(--wp--preset--font-size--small)!important; min-height:3rem; padding:0 1.6rem!important; cursor:pointer;
  box-shadow:0 8px 30px color-mix(in srgb, var(--wp--preset--color--primary) 22%, transparent); transition:filter .18s ease, transform .12s ease;
}
@media (hover:hover){ .dvd-account .woocommerce-MyAccount-content form button[type="submit"]:hover{ filter:brightness(1.06); } }
.dvd-account .woocommerce-MyAccount-content form button[type="submit"]:active{ transform:scale(.99); }

/* indirizzi: due card affiancate elevate */
/* ============================================================================
   SELECT2 dark (campo Provincia nel form indirizzo). WooCommerce trasforma il
   <select> Provincia in un widget Select2 (SPAN che rimpiazza il select nativo):
   il <select> vero è nascosto, e il box VISIBILE è .select2-selection--single,
   che di default è BIANCO. Lo stilizziamo dark come gli altri campi.
   Verificato via console: SPAN.select2-selection--single bg era rgb(255,255,255).
   ========================================================================== */
.dvd-account .select2-container--default .select2-selection--single{
  height:auto!important; box-sizing:border-box!important;
  background-color:var(--wp--custom--field--background)!important;
  border:1px solid var(--wp--preset--color--line)!important;
  border-radius:var(--r-control)!important;
  padding:.7rem .85rem!important; min-height:3rem!important;
  display:flex!important; align-items:center!important;
  transition:border-color .2s ease, box-shadow .2s ease, background-color .2s ease!important;
}
.dvd-account .select2-container--default .select2-selection--single .select2-selection__rendered{
  color:var(--wp--preset--color--contrast)!important;
  font-family:var(--wp--preset--font-family--body)!important;
  font-size:var(--wp--preset--font-size--small)!important;
  line-height:1.4!important; padding:0!important;
}
.dvd-account .select2-container--default .select2-selection--single .select2-selection__placeholder{
  color:var(--wp--preset--color--muted-2)!important;
}
/* la freccia */
/* freccia: il triangolo CSS nativo di Select2 è brutto → lo NASCONDO e uso il
   chevron Lucide caret-down (coerente col select nativo e col date picker).
   Spazio a destra per il chevron via padding-right. */
.dvd-account .select2-container--default .select2-selection--single{
  padding-right:2.2rem!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239a9a9a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important;
  background-position:right 0.85rem center!important;
  background-size:0.9em!important;
}
.dvd-account .select2-container--default .select2-selection--single .select2-selection__arrow{
  display:none!important;
}
/* FOCUS (chiuso): glow soft identico alle input del form. */
.dvd-account .select2-container--default .select2-selection--single:focus{
  /* Select2 è un <div> con :focus (non :focus-visible): la regola FOCUS GLOBALE
     non lo intercetta affidabilmente → qui replichiamo il MEDESIMO ring coi token
     condivisi. !important per battere il CSS inline di Select2. */
  outline:none!important;
  box-shadow:var(--wp--custom--focus--ring)!important;
}
/* APERTO — "blocco unico continuo": il box è la META' SUPERIORE del pannello.
   Bordo rosso NETTO su top/left/right, NIENTE bordo sotto (continua nel dropdown),
   angoli arrotondati solo in alto, niente glow (il bordo netto È l'affordance,
   come da design system: rosso brand = RING NETTO non glow diffuso). */
/* box aperto: bordo rosso, superficie scura. Gli ANGOLI e il lato saldato
   dipendono dalla direzione di apertura (Select2 mette --below o --above). */
.dvd-account .select2-container--default.select2-container--open .select2-selection--single{
  /* aperto: bordo NEUTRO (line) come a riposo — niente bordo rosso acceso. Il box
     si salda col dropdown (bordo continuo neutro). Lo stato "attivo" è dato dal
     dropdown aperto stesso, non da un bordo colorato. */
  border:1px solid var(--wp--preset--color--line-2)!important;
  background-color:var(--wp--custom--field--background)!important;
  box-shadow:none!important;
}
/* apre SOTTO: box senza bordo/angoli in BASSO (si salda col dropdown sotto) */
.dvd-account .select2-container--default.select2-container--open.select2-container--below .select2-selection--single{
  border-bottom:0!important;
  border-radius:var(--r-control) var(--r-control) 0 0!important;
}
/* apre SOPRA: box senza bordo/angoli in ALTO (si salda col dropdown sopra) */
.dvd-account .select2-container--default.select2-container--open.select2-container--above .select2-selection--single{
  border-top:0!important;
  border-radius:0 0 var(--r-control) var(--r-control)!important;
}
/* NB: la freccia nativa è display:none (usiamo il chevron background). */
/* il DROPDOWN si salda al box. Select2 lo appende a <body>, FUORI da .dvd-account
   → scope globale. Le classi --below/--above (Select2) dicono la direzione. */
.select2-container--default .select2-dropdown{
  background:var(--wp--preset--color--surface-2)!important;
  border:1px solid var(--wp--preset--color--line-2)!important;
  box-shadow:0 18px 50px rgba(0,0,0,.55)!important; overflow:hidden!important;
}
/* dropdown SOTTO il box: no bordo/angoli in alto (si salda col box sopra) */
.select2-container--default .select2-dropdown.select2-dropdown--below{
  border-top:0!important;
  border-radius:0 0 var(--r-control) var(--r-control)!important;
  margin-top:0!important;
}
/* dropdown SOPRA il box: no bordo/angoli in basso (si salda col box sotto) */
.select2-container--default .select2-dropdown.select2-dropdown--above{
  border-bottom:0!important;
  border-radius:var(--r-control) var(--r-control) 0 0!important;
  margin-bottom:0!important;
}
/* la ricerca dentro il dropdown */
/* ricerca: integrata nel dropdown (stessa superficie) ma DISTINTA via hairline
   inferiore che la separa dalla lista, invece di un box a sé. */
.select2-container--default .select2-search--dropdown{
  padding:10px 12px!important;
  border-bottom:1px solid var(--wp--preset--color--line-2)!important;
  background:transparent!important;
}
.select2-container--default .select2-search--dropdown .select2-search__field{
  background:var(--wp--preset--color--surface-2)!important;
  border:1px solid var(--wp--preset--color--line-2)!important;
  border-radius:var(--r-control)!important; color:var(--wp--preset--color--contrast)!important;
  font-family:var(--wp--preset--font-family--body)!important;
  font-size:var(--wp--preset--font-size--small)!important;
  padding:.6rem .75rem!important; outline:none!important; box-shadow:none!important;
  transition:border-color .18s ease, box-shadow .18s ease!important;
}
.select2-container--default .select2-search--dropdown .select2-search__field::placeholder{
  color:var(--wp--preset--color--muted-2)!important;
}
.select2-container--default .select2-search--dropdown .select2-search__field:focus{
  /* campo ricerca dentro il dropdown Select2: token condivisi, !important per Select2 */
  outline:none!important;
  box-shadow:var(--wp--custom--focus--ring)!important;
}
/* lista risultati: SCROLLBAR NASCOSTA del tutto (si scrolla comunque) */
.select2-container--default .select2-results__options{
  max-height:240px!important;
  scrollbar-width:none!important;            /* Firefox */
  -ms-overflow-style:none!important;         /* IE/Edge legacy */
}
.select2-container--default .select2-results__options::-webkit-scrollbar{
  width:0!important; height:0!important; display:none!important;  /* Chrome/Safari */
}
.select2-container--default .select2-results__option{
  color:var(--wp--preset--color--contrast)!important; background:transparent!important;
  font-family:var(--wp--preset--font-family--body)!important;
  font-size:var(--wp--preset--font-size--small)!important;
  padding:.6rem .8rem!important;
}
/* opzione evidenziata (hover/tastiera) → rosso brand tenue */
.select2-container--default .select2-results__option--highlighted[aria-selected]{
  background:color-mix(in srgb, var(--wp--preset--color--primary) 18%, transparent)!important; color:#fff!important;
}
/* opzione già selezionata */
.select2-container--default .select2-results__option[aria-selected="true"]{
  background:var(--wp--preset--color--surface-3)!important;
  color:var(--wp--preset--color--contrast)!important;
}

/* CAP LARGHEZZA FORM (desktop): un form full-width è illeggibile/sgraziato. Cappo
   a ~720px (misura aurea per form a 2 colonne) allineato a sinistra tutti i form
   dell'area account (Dettagli account, Modifica indirizzo). Lo spazio a destra
   diventa respiro voluto. Il form indirizzo (.woocommerce-address-fields) e quello
   dettagli (.woocommerce-EditAccountForm) sono entrambi dentro MyAccount-content. */
.dvd-account .woocommerce-MyAccount-content form.woocommerce-EditAccountForm,
.dvd-account .woocommerce-MyAccount-content .woocommerce-address-fields,
.dvd-account .woocommerce-MyAccount-content form.edit-account{
  max-width:720px!important; margin-right:auto!important;
  /* form dentro una CARD (pattern condiviso theme.json): i controlli si integrano
     con dashboard/ordini/indirizzi invece di galleggiare nudi sulla pagina. */
  background:var(--wp--custom--card--background);
  border:var(--wp--custom--card--border);
  border-radius:var(--wp--custom--card--radius);
  box-shadow:var(--wp--custom--card--shadow);
  padding:clamp(20px,2.5vw,32px)!important;
}

/* Pagina INDIRIZZI. Struttura reale WooCommerce: div.u-columns > div.u-column1 +
   div.u-column2 (NON .woocommerce-Addresses). Le colonne hanno float:left/right di
   default → sfalsate in diagonale. FIX: grid su .u-columns + float:none (come il
   layout principale). Card affiancate, gap aureo, "Modifica" reso come pulsante. */
.dvd-account .u-columns:has(.woocommerce-Address){
  display:grid!important; grid-template-columns:repeat(2, minmax(0,1fr))!important;
  gap:clamp(16px,1.6vw,24px)!important; align-items:start!important;
}
/* Float rimossi E colonna grid ESPLICITA su ciascuna. Ordine VOLUTO: spedizione
   a SINISTRA, fatturazione a destra. Nel DOM u-column1=fatturazione,
   u-column2=spedizione → li incrociamo: spedizione(col2)→1, fatturazione(col1)→2. */
.dvd-account .u-columns:has(.woocommerce-Address) > .u-column2{
  float:none!important; width:auto!important; margin:0!important;
  grid-column:1!important; grid-row:1!important;
}
.dvd-account .u-columns:has(.woocommerce-Address) > .u-column1{
  float:none!important; width:auto!important; margin:0!important;
  grid-column:2!important; grid-row:1!important;
}
/* la card indirizzo */
.dvd-account .woocommerce-Address{
  background:var(--wp--custom--card--background); border:var(--wp--custom--card--border);
  border-radius:var(--wp--custom--card--radius); padding:clamp(20px,2vw,28px); box-shadow:var(--wp--custom--card--shadow);
  height:100%; box-sizing:border-box;
  display:flex; flex-direction:column; gap:14px;
}
.dvd-account .woocommerce-Address address{ font-style:normal; color:var(--wp--preset--color--muted); line-height:1.65; font-size:var(--wp--preset--font-size--small); margin:0; }
/* header: [icona + titolo] a sinistra, pulsante Modifica/Aggiungi a destra */
.dvd-account .woocommerce-Address-title{
  display:flex!important; align-items:center; justify-content:space-between; gap:12px;
  margin:0!important;
}
.dvd-account .woocommerce-Address-title h2,
.dvd-account .woocommerce-Address-title h3{
  margin:0!important;
  font-family:var(--wp--preset--font-family--heading);
  font-size:var(--wp--preset--font-size--base)!important; line-height:1.15;
}
/* gruppo icona + titolo */
.dvd-account .cgtv-addr-head{ display:flex; align-items:center; gap:12px; min-width:0; }
/* icona-badge NEUTRA (muted su surface-2), come il checkout — non rossa */
.dvd-account .cgtv-addr-ico{
  flex:none; width:44px; height:44px; display:flex; align-items:center; justify-content:center;
  border-radius:var(--r-control); background:var(--wp--preset--color--surface-2); color:var(--wp--preset--color--muted);
}
.dvd-account .cgtv-addr-ico svg{ width:22px; height:22px; }
/* "Modifica"/"Aggiungi" (a.edit) → LINK-ACCENT come la bacheca (.cgtv-info-card__edit):
   testo accent + icona, niente pill/fondo. Coerente con tutti i link dell'area.
   !important per battere il link generico WooCommerce. */
.dvd-account .woocommerce-Address-title .edit{
  flex:none; display:inline-flex!important; align-items:center; gap:6px;
  cursor:pointer; text-decoration:none!important; min-height:44px;
  background:none!important; border:0!important; padding:0!important;
  color:var(--wp--preset--color--accent)!important;
  font-family:var(--wp--preset--font-family--body)!important;
  font-size:var(--wp--preset--font-size--small)!important; font-weight:600!important;
  line-height:1!important; white-space:nowrap;
  transition:color .18s ease;
}
@media (hover:hover){
  .dvd-account .woocommerce-Address-title .edit:hover{
    color:var(--wp--preset--color--primary-dark)!important;
  }
}
.dvd-account .woocommerce-Address-title .edit svg{ width:16px; height:16px; }
.dvd-account .woocommerce-Address-title .edit:focus-visible{
  outline:none!important; box-shadow:var(--wp--custom--focus--ring)!important; border-radius:var(--r-control);
}

/* ============================================================================
   NAV RESPONSIVE A 3 COMPORTAMENTI (mockup approvato 2026-07-12):
   · Desktop ≥1024px = sidebar sticky (regole sopra, default).
   · Tablet/iPad 700–1024px = NAVIGATION RAIL (colonna stretta icone+label, sticky).
   · Mobile <700px = DRILL-DOWN stile app Impostazioni: la dashboard è la LISTA
     delle sezioni; ogni endpoint è una schermata con "← Account" in alto.
   Fonti: bocciati tab orizzontali (spariscono allo scroll) e hamburger (-20%
   discoverability). Breakpoint canonici 700/1024. La mobile-bar è stampata dal
   mu-plugin cgtv-account-fields (woocommerce_before_account_navigation).
   ========================================================================== */

/* mobile-bar: nascosta di default (desktop + tablet non la vedono) */
.dvd-account .cgtv-acc-mobilebar{ display:none; }

/* ---------- TABLET / iPad (700–1024px) = NAVIGATION RAIL ---------- */
@media (min-width:700px) and (max-width:1024px){
  /* griglia: rail stretto + contenuto. Il rail resta sticky come il desktop. */
  .dvd-account .woocommerce:has(> .woocommerce-MyAccount-navigation){
    grid-template-columns:96px 1fr!important;
    gap:clamp(20px,2.5vw,32px)!important;
  }
  .dvd-account .woocommerce:has(> .woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-navigation{
    grid-column:1!important; grid-row:1!important;
  }
  .dvd-account .woocommerce:has(> .woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-content{
    grid-column:2!important; grid-row:1!important; min-width:0!important;
  }
  /* pannello rail: più stretto, padding ridotto, resta sticky */
  .dvd-account .woocommerce-MyAccount-navigation{ padding:8px!important; }
  .dvd-account .woocommerce-MyAccount-navigation ul{ gap:6px; }
  /* voce = icona SOPRA label piccola, centrata, tap ≥ generoso. Icona non più
     ::before inline ma sopra il testo → colonna. La label resta (mai icona sola). */
  .dvd-account .woocommerce-MyAccount-navigation li a{
    flex-direction:column; gap:6px; padding:12px 4px; text-align:center;
    font-size:var(--wp--preset--font-size--x-small); line-height:1.15;
  }
  .dvd-account .woocommerce-MyAccount-navigation li a::before{ width:22px; height:22px; }
  /* barra attiva: nel rail la metto a sinistra del pannello (come desktop) */
  .dvd-account .woocommerce-MyAccount-navigation li.is-active a::after{
    left:0; top:6px; bottom:6px;
  }
  /* indirizzi restano a 2 colonne se c'è spazio, 1 se stretto */
  .dvd-account .u-columns:has(.woocommerce-Address){ grid-template-columns:1fr!important; }
  .dvd-account .u-columns:has(.woocommerce-Address) > .u-column1,
  .dvd-account .u-columns:has(.woocommerce-Address) > .u-column2{ grid-column:1!important; }
  .dvd-account .u-columns:has(.woocommerce-Address) > .u-column2{ grid-row:1!important; }
  .dvd-account .u-columns:has(.woocommerce-Address) > .u-column1{ grid-row:2!important; }
}

/* ---------- MOBILE (<700px) = DRILL-DOWN ---------- */
@media (max-width:699px){
  /* collasso a una colonna: nav (riga 1) sopra, contenuto (riga 2) sotto. */
  .dvd-account .woocommerce:has(> .woocommerce-MyAccount-navigation){
    grid-template-columns:1fr!important;
  }
  .dvd-account .woocommerce:has(> .woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-navigation{
    grid-column:1!important; grid-row:1!important;
  }
  .dvd-account .woocommerce:has(> .woocommerce-MyAccount-navigation) > .woocommerce-MyAccount-content{
    grid-column:1!important; grid-row:2!important; min-width:0!important;
  }
  /* nav non più sticky (è la lista-home, scrolla con la pagina) */
  .dvd-account .woocommerce-MyAccount-navigation{
    position:static!important; top:auto!important; padding:0!important;
    background:transparent!important; border:0!important; box-shadow:none!important;
  }
  /* su mobile la BACHECA È la lista di link → la voce "Bacheca" punterebbe a sé stessa:
     la nascondiamo dalla lista. (Sugli endpoint interni il back "‹ Account" torna qui.) */
  .dvd-account .woocommerce-MyAccount-navigation-link--dashboard{ display:none!important; }
  /* le voci = RIGHE full-width con chevron a destra (lista drill-down).
     NIENTE border-top sul <ul>: la linea di apertura della lista la dà GIÀ il
     border-bottom del widget identità (riga zero, colore line). Metterne un altro
     qui = il DOPPIO BORDO segnalato. Una linea sola. */
  .dvd-account .woocommerce-MyAccount-navigation ul{ gap:0; }
  .dvd-account .woocommerce-MyAccount-navigation li{
    border-bottom:1px solid var(--wp--preset--color--surface-2)!important;
  }
  .dvd-account .woocommerce-MyAccount-navigation li a{
    padding:16px 4px; border-radius:0; font-size:var(--wp--preset--font-size--small);
    min-height:48px;
  }
  /* chevron-right a destra su ogni riga (affordance "entra") */
  .dvd-account .woocommerce-MyAccount-navigation li a{ position:relative; }
  .dvd-account .woocommerce-MyAccount-navigation li a::after{
    content:""!important; position:absolute!important; right:4px; top:50%;
    transform:translateY(-50%); left:auto!important; width:18px; height:18px;
    background:none!important; border-radius:0!important;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239498a3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")!important;
    background-repeat:no-repeat!important; background-position:center!important; background-size:contain!important;
  }
  /* la voce attiva NON ha più la barra rossa in lista (è tutta lista, non "attivo").
     La barra usa li.is-active a::after (più specifico) → qui il ::after diventa il
     chevron anche sulla voce attiva. Forziamo il chevron pure su is-active. */
  .dvd-account .woocommerce-MyAccount-navigation li.is-active a::after{
    content:""!important; right:4px; left:auto!important; top:50%!important; bottom:auto!important;
    transform:translateY(-50%)!important; width:18px!important; height:18px!important;
    border-radius:0!important;
    background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239498a3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E") no-repeat center / contain!important;
  }
  /* voce attiva in lista: niente fill/box, è una riga come le altre */
  .dvd-account .woocommerce-MyAccount-navigation li.is-active a{
    background:transparent!important; box-shadow:none!important; color:var(--acc-ink)!important;
  }

  /* ENDPOINT INTERNO (orders/view-order/edit-address/...): il mu-plugin stampa la
     mobile-bar (hook woocommerce_before_account_navigation) come FRATELLO dentro il
     wrapper .woocommerce, PRIMA del <nav> — NON dentro il <nav>. Quindi il wrapper
     contiene 3 grid-item: [mobile-bar] [nav] [content]. Su un endpoint interno:
     · la mobile-bar va in ALTO (grid-row 1),
     · la NAV (con la lista link) va NASCOSTA del tutto (la topbar la sostituisce),
     · il content sotto (grid-row 2).
     Il selettore aggancia il WRAPPER che HA la mobile-bar (non la nav, che non la contiene). */
  .dvd-account .woocommerce:has(.cgtv-acc-mobilebar){
    display:grid!important; grid-template-columns:1fr!important;
  }
  .dvd-account .woocommerce:has(.cgtv-acc-mobilebar) > .cgtv-acc-mobilebar{
    grid-row:1!important; grid-column:1!important;
  }
  .dvd-account .woocommerce:has(.cgtv-acc-mobilebar) > .woocommerce-MyAccount-navigation{
    display:none!important; /* niente lista link nelle sottopagine: c'è la topbar */
  }
  .dvd-account .woocommerce:has(.cgtv-acc-mobilebar) > .woocommerce-MyAccount-content{
    grid-row:2!important; grid-column:1!important; min-width:0!important;
  }
  /* il back "‹ Ordini" del template view-order è per DESKTOP: su mobile c'è già la
     mobile-bar (back gerarchico) → evita il doppio back, lo nascondiamo. */
  .dvd-account .cgtv-vieworder__back{ display:none!important; }
  /* layout a 3 zone: back a sx, titolo centrato REALE, zona destra vuota che bilancia
     il back (grid, non padding-hack) → il titolo resta centrato con qualsiasi lunghezza. */
  .dvd-account .cgtv-acc-mobilebar{
    display:grid!important; grid-template-columns:1fr auto 1fr; align-items:center; gap:8px;
    padding:6px 0 14px; margin-bottom:6px;
    border-bottom:1px solid var(--wp--preset--color--line)!important;
  }
  .dvd-account .cgtv-acc-mobilebar__back{
    display:inline-flex; align-items:center; gap:4px; flex:none;
    color:var(--wp--preset--color--accent)!important; text-decoration:none!important;
    font-family:var(--wp--preset--font-family--body); font-weight:600;
    font-size:var(--wp--preset--font-size--small); min-height:48px;
  }
  .dvd-account .cgtv-acc-mobilebar__back svg{ width:20px; height:20px; }
  .dvd-account .cgtv-acc-mobilebar__title{
    grid-column:2; text-align:center; white-space:nowrap;
    font-family:var(--wp--preset--font-family--heading); font-weight:600;
    color:var(--acc-ink); font-size:var(--wp--preset--font-size--base);
  }

  /* indirizzi: una colonna */
  .dvd-account .u-columns:has(.woocommerce-Address){ grid-template-columns:1fr!important; }
  .dvd-account .u-columns:has(.woocommerce-Address) > .u-column1,
  .dvd-account .u-columns:has(.woocommerce-Address) > .u-column2{ grid-column:1!important; }
  .dvd-account .u-columns:has(.woocommerce-Address) > .u-column2{ grid-row:1!important; }
  .dvd-account .u-columns:has(.woocommerce-Address) > .u-column1{ grid-row:2!important; }
}

/* ORDINI DEL VECCHIO SITO (25 ott 2026, cgtv-vecchio-store.php): stesse card e stesso dettaglio
   degli ordini nuovi. «Campagna non partita · nessun addebito» = pastiglia NEUTRA: non è un
   errore del cliente, il rosso di «Annullato» lo allarmerebbe per un addebito mai avvenuto. */
.dvd-account .cgtv-order-card__status--old-np,
.dvd-account .cgtv-vieworder__status--old-np{ color:var(--wp--preset--color--muted); border-color:var(--wp--preset--color--line-2); background:transparent; }
.dvd-account .cgtv-order-card__status--old-np .cgtv-order-card__dot{ background:var(--wp--preset--color--muted-2); }
.dvd-account .cgtv-vieworder__oldnote{ margin:var(--wp--preset--spacing--40, 2rem) 0 0; color:var(--wp--preset--color--muted-2); font-size:var(--wp--preset--font-size--small); }
.dvd-account .cgtv-vieworder__oldnote a{ color:var(--wp--preset--color--muted); text-decoration:underline dotted; text-decoration-color:var(--wp--preset--color--line-2); text-underline-offset:3px; }
.dvd-account .cgtv-order-card__total del{ color:var(--wp--preset--color--muted-2); font-weight:500; margin-right:.4em; }
.dvd-account .cgtv-vieworder__item-fmt::after{ content:" ·"; }  /* «Blu-ray · Quantità: 1» (ordini del vecchio sito) */
