/* =============================================================================
   Onilli Bijoux — impianto di negozio
   -----------------------------------------------------------------------------
   Riferimenti misurati con il browser:
     sagapo.it            barra annunci, ricerca in evidenza, badge sulla scheda,
                          barra garanzie, pie' a quattro colonne, raggio 3px
     fabianigioiellerie   4 schede da 338px in un contenitore da 1400px,
                          immagine 1:1, filtri e ordinamento in testa, raggio 6px

   Identita' che resta di Onilli: Cormorant Garamond per i titoli, fondo caldo
   chiaro, fotografia in primo piano.

   Regola: si costruiscono componenti nuovi, non si sovrascrive l'impianto di
   layout del tema padre. Le uniche eccezioni sono dichiarate con il perche'.
   ========================================================================== */

:root {
  /* --- colore ---------------------------------------------------------- */
  --oni-carta:        #FFFFFF;
  --oni-carta-calda:  #FAF7F3;
  --oni-carta-scura:  #F1ECE5;
  --oni-inchiostro:   #1A1815;
  --oni-inchiostro-2: #6A635B;
  --oni-inchiostro-3: #97908A;
  --oni-linea:        #E5DED4;
  --oni-linea-forte:  #CFC5B8;
  --oni-accento:      #A57C3E;
  --oni-accento-cupo: #85632F;
  --oni-offerta:      #9B2C2C;
  --oni-buono:        #2F6B4F;

  /* --- tipografia ------------------------------------------------------ */
  --oni-display: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --oni-testo:   'Open Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

  --oni-t-xs: .6875rem;
  --oni-t-s:  .8125rem;
  --oni-t-m:  .9375rem;
  --oni-t-l:  1.0625rem;
  --oni-t-xl: clamp(1.4rem, 1.1rem + 1.2vw, 2rem);
  --oni-t-2xl: clamp(1.9rem, 1.3rem + 2.6vw, 3rem);

  /* --- geometria ------------------------------------------------------- */
  --oni-raggio:  4px;
  --oni-r-tondo: 999px;
  --oni-sp-1: .25rem;
  --oni-sp-2: .5rem;
  --oni-sp-3: .75rem;
  --oni-sp-4: 1rem;
  --oni-sp-5: 1.5rem;
  --oni-sp-6: 2rem;
  --oni-sp-7: 3rem;
  --oni-sp-8: 4.5rem;
  --oni-largo: 1400px;

  --oni-annunci-h: 40px;
  --oni-ombra: 0 1px 2px rgba(26,24,21,.05), 0 8px 24px rgba(26,24,21,.06);
}

/* Utilita' ----------------------------------------------------------------- */
.oni-visivamente-nascosto {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.oni-contenitore {
  width: min(92%, var(--oni-largo));
  margin-inline: auto;
}
.oni-icona { width: 22px; height: 22px; flex: none; }

/* =========================================================== barra annunci */
.oni-annunci {
  position: fixed;
  inset-block-start: 0;
  inset-inline: 0;
  z-index: 100000;                 /* l'intestazione di Divi sta a 9998 */
  background: var(--oni-inchiostro);
  color: #F4EDE3;
  font-family: var(--oni-testo);
  font-size: var(--oni-t-xs);
  letter-spacing: .12em;
  text-transform: uppercase;
}
.oni-annunci__pista {
  width: min(92%, var(--oni-largo));
  margin-inline: auto;
  min-height: var(--oni-annunci-h);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--oni-sp-3);
  flex-wrap: wrap;
  padding-block: .55rem;
}
.oni-annunci__sep { opacity: .4; }

/*
 * L'intestazione di Divi e' `position:fixed; top:0` e riceve `top` anche da
 * JavaScript: senza `!important` l'ancoraggio salta al primo scorrimento.
 */
#main-header,
.et-fixed-header #main-header { inset-block-start: var(--oni-annunci-h) !important; }
/*
 * `margin`, non `padding`: Divi calcola da solo il `padding-top` di
 * #page-container in base all'altezza dell'intestazione fissa. Sostituirlo
 * azzererebbe quello spazio e il contenuto finirebbe sotto l'intestazione.
 * Il margine si somma, lasciando intatto il calcolo del tema padre.
 */
#page-container { margin-block-start: var(--oni-annunci-h); }
body.admin-bar .oni-annunci { inset-block-start: 32px; }

@media (max-width: 640px) {
  :root { --oni-annunci-h: 34px; }
  .oni-annunci__pista {
    flex-wrap: nowrap; overflow-x: auto; justify-content: flex-start;
    scrollbar-width: none; gap: var(--oni-sp-2);
  }
  .oni-annunci__pista::-webkit-scrollbar { display: none; }
  .oni-annunci__voce { white-space: nowrap; }
  body.admin-bar .oni-annunci { inset-block-start: 46px; }
}

/* ==================================================== azioni intestazione */
.oni-azioni {
  position: absolute;
  inset-block-start: 50%;
  inset-inline-end: 0;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  gap: var(--oni-sp-2);
  z-index: 5;
}
.oni-azione {
  display: inline-flex;
  align-items: center;
  gap: var(--oni-sp-2);
  min-height: 44px;
  padding-inline: var(--oni-sp-3);
  border: 0;
  background: none;
  color: var(--oni-inchiostro);
  font-family: var(--oni-testo);
  font-size: var(--oni-t-s);
  cursor: pointer;
  border-radius: var(--oni-raggio);
  position: relative;
  text-decoration: none;
  transition: color .18s ease;
}
.oni-azione:hover { color: var(--oni-accento); }
.oni-azione:focus-visible { outline: 2px solid var(--oni-accento); outline-offset: 2px; }
.oni-azione__testo { display: none; }
.oni-azione__conteggio {
  position: absolute;
  inset-block-start: 4px;
  inset-inline-end: 2px;
  min-width: 18px;
  height: 18px;
  padding-inline: 4px;
  border-radius: var(--oni-r-tondo);
  background: var(--oni-accento);
  color: #fff;
  font-size: .625rem;
  font-weight: 700;
  line-height: 18px;
  text-align: center;
}
@media (min-width: 1100px) {
  .oni-azione--cerca .oni-azione__testo { display: inline; }
}
/* Divi stampa un proprio blocco carrello: uno solo basta. */
#et-secondary-menu .et-cart-info,
#et-top-navigation .et-cart-info { display: none !important; }

/* ======================================================= pannello ricerca */
.oni-ricerca[hidden] { display: none; }
.oni-ricerca {
  position: fixed; inset: 0; z-index: 100001;
  display: flex; align-items: flex-start; justify-content: center;
}
.oni-ricerca__velo {
  position: absolute; inset: 0;
  background: rgba(26,24,21,.45);
  backdrop-filter: blur(2px);
}
.oni-ricerca__pannello {
  position: relative;
  width: min(92%, 720px);
  margin-block-start: clamp(4rem, 12vh, 9rem);
  background: var(--oni-carta);
  border-radius: var(--oni-raggio);
  box-shadow: var(--oni-ombra);
  padding: var(--oni-sp-5);
}
.oni-ricerca__form {
  display: flex; align-items: center; gap: var(--oni-sp-3);
  border-bottom: 1px solid var(--oni-linea-forte);
  padding-block-end: var(--oni-sp-3);
}
.oni-ricerca__form .oni-icona { color: var(--oni-inchiostro-2); }
.oni-ricerca__form input[type="search"] {
  flex: 1; min-width: 0; border: 0; background: none;
  font-family: var(--oni-display);
  font-size: clamp(1.25rem, 1rem + 1.4vw, 1.75rem);
  color: var(--oni-inchiostro);
  min-height: 44px;
}
.oni-ricerca__form input[type="search"]:focus { outline: none; }
.oni-ricerca__invia {
  border: 0; background: var(--oni-inchiostro); color: #fff;
  font-family: var(--oni-testo); font-size: var(--oni-t-s);
  letter-spacing: .08em; text-transform: uppercase;
  padding: .8rem 1.4rem; min-height: 44px;
  border-radius: var(--oni-raggio); cursor: pointer;
}
.oni-ricerca__chiudi {
  border: 0; background: none; cursor: pointer; color: var(--oni-inchiostro-2);
  min-width: 44px; min-height: 44px;
}
.oni-ricerca__scorciatoie { margin-block-start: var(--oni-sp-4); }
.oni-ricerca__etichetta {
  font-family: var(--oni-testo); font-size: var(--oni-t-xs);
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--oni-inchiostro-2); margin: 0 0 var(--oni-sp-2);
}
.oni-ricerca__scorciatoie ul {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: var(--oni-sp-2);
}
.oni-ricerca__scorciatoie a {
  display: inline-block; padding: .45rem .9rem;
  border: 1px solid var(--oni-linea); border-radius: var(--oni-r-tondo);
  font-family: var(--oni-testo); font-size: var(--oni-t-s);
  color: var(--oni-inchiostro); text-decoration: none;
}
.oni-ricerca__scorciatoie a:hover {
  border-color: var(--oni-inchiostro); background: var(--oni-carta-calda);
}
@media (max-width: 560px) {
  .oni-ricerca__invia { display: none; }
}

/* ============================================================== bottoni */
.oni-bottone {
  display: inline-flex; align-items: center; justify-content: center;
  gap: var(--oni-sp-2);
  min-height: 46px; padding: .8rem 1.5rem;
  font-family: var(--oni-testo); font-size: var(--oni-t-s);
  letter-spacing: .08em; text-transform: uppercase;
  border-radius: var(--oni-raggio); cursor: pointer;
  text-decoration: none; border: 1px solid transparent;
  transition: background-color .18s ease, color .18s ease, border-color .18s ease;
}
.oni-bottone--pieno { background: var(--oni-inchiostro); color: #fff; }
.oni-bottone--pieno:hover { background: var(--oni-accento-cupo); color: #fff; }
.oni-bottone--fantasma {
  background: none; color: var(--oni-inchiostro); border-color: var(--oni-linea-forte);
}
.oni-bottone--fantasma:hover { border-color: var(--oni-inchiostro); background: var(--oni-carta-calda); }
.oni-bottone:focus-visible { outline: 2px solid var(--oni-accento); outline-offset: 2px; }

/* ==================================================== testata di catalogo */
.oni-catalogo-testata {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--oni-sp-4); flex-wrap: wrap;
  padding-block-end: var(--oni-sp-4);
  margin-block-end: var(--oni-sp-6);
  border-block-end: 1px solid var(--oni-linea);
}
.oni-catalogo-testata__conteggio {
  margin: 0; font-family: var(--oni-testo); font-size: var(--oni-t-s);
  letter-spacing: .1em; text-transform: uppercase; color: var(--oni-inchiostro-2);
}
.oni-catalogo-testata__comandi { display: flex; align-items: center; gap: var(--oni-sp-3); }
.oni-ordina { display: flex; align-items: center; gap: var(--oni-sp-2); margin: 0; }
.oni-ordina label {
  font-family: var(--oni-testo); font-size: var(--oni-t-s);
  letter-spacing: .1em; text-transform: uppercase; color: var(--oni-inchiostro-2);
}
.oni-ordina select {
  font-family: var(--oni-testo); font-size: var(--oni-t-m);
  padding: .55rem 2rem .55rem .75rem; min-height: 44px;
  border: 1px solid var(--oni-linea-forte); border-radius: var(--oni-raggio);
  background: var(--oni-carta); color: var(--oni-inchiostro); cursor: pointer;
}
@media (max-width: 560px) {
  .oni-ordina label { display: none; }
  .oni-catalogo-testata__comandi { width: 100%; }
  .oni-ordina { flex: 1; }
  .oni-ordina select { width: 100%; }
}

/* ============================================================== filtri */
.oni-filtri[hidden] { display: none; }
.oni-filtri { position: fixed; inset: 0; z-index: 100001; display: flex; }
.oni-filtri__velo { position: absolute; inset: 0; background: rgba(26,24,21,.45); }
.oni-filtri__pannello {
  position: relative; z-index: 1;
  width: min(92%, 380px); height: 100%;
  background: var(--oni-carta);
  padding: var(--oni-sp-5);
  overflow-y: auto;
  box-shadow: var(--oni-ombra);
}
.oni-filtri__testa {
  display: flex; align-items: center; justify-content: space-between;
  margin-block-end: var(--oni-sp-5);
}
.oni-filtri__titolo {
  margin: 0; font-family: var(--oni-display); font-size: var(--oni-t-xl);
}
.oni-filtri__chiudi {
  border: 0; background: none; cursor: pointer; color: var(--oni-inchiostro-2);
  min-width: 44px; min-height: 44px;
}
.oni-filtri__gruppo { margin-block-end: var(--oni-sp-6); }
.oni-filtri__gruppo h3 {
  font-family: var(--oni-testo); font-size: var(--oni-t-xs);
  letter-spacing: .13em; text-transform: uppercase;
  color: var(--oni-inchiostro-2); margin: 0 0 var(--oni-sp-3);
}
.oni-filtri__gruppo ul { list-style: none; margin: 0; padding: 0; }
.oni-filtri__gruppo li a {
  display: flex; justify-content: space-between; align-items: center;
  padding: .6rem 0; min-height: 44px;
  font-family: var(--oni-testo); font-size: var(--oni-t-m);
  color: var(--oni-inchiostro); text-decoration: none;
  border-block-end: 1px solid var(--oni-linea);
}
.oni-filtri__gruppo li a:hover { color: var(--oni-accento); }
.oni-filtri__gruppo li a.e-attivo { font-weight: 600; color: var(--oni-accento-cupo); }
.oni-filtri__n { font-size: var(--oni-t-xs); color: var(--oni-inchiostro-2); }
.oni-scelta {
  display: flex; align-items: center; gap: var(--oni-sp-3);
  padding: .55rem 0; min-height: 44px; cursor: pointer;
  font-family: var(--oni-testo); font-size: var(--oni-t-m);
}
.oni-scelta input { width: 18px; height: 18px; accent-color: var(--oni-accento); }
.oni-filtri__prezzo { display: flex; align-items: center; gap: var(--oni-sp-3); }
.oni-filtri__prezzo input {
  width: 100%; min-height: 44px; padding: .5rem .7rem;
  font-family: var(--oni-testo); font-size: 16px;
  border: 1px solid var(--oni-linea-forte); border-radius: var(--oni-raggio);
}
.oni-filtri__azioni { display: flex; gap: var(--oni-sp-3); }
.oni-filtri__azioni .oni-bottone { flex: 1; }

/* ================================================== pagina di negozio */
/*
 * L'intestazione di Divi e' fissa e alta 80px, ma Divi non riserva spazio in
 * cima: nel vecchio impianto ogni pagina si apriva con un'immagine a tutta
 * larghezza che passava sotto l'intestazione di proposito. Le pagine di
 * negozio non hanno quell'immagine, quindi lo spazio va riservato qui.
 * La regola e' limitata al nostro contenitore: le pagine costruite con Divi
 * conservano il comportamento originale.
 */
.oni-pagina-negozio {
  padding-block: calc(80px + var(--oni-sp-6)) var(--oni-sp-8);
}
@media (max-width: 980px) {
  .oni-pagina-negozio { padding-block-start: calc(80px + var(--oni-sp-4)); }
}
.oni-pagina-negozio .woocommerce-products-header { margin-block-end: var(--oni-sp-5); }
.oni-pagina-negozio .woocommerce-products-header__title,
.oni-pagina-negozio h1.entry-title,
.oni-pagina-negozio .product_title {
  font-family: var(--oni-display);
  font-size: var(--oni-t-2xl);
  font-weight: 500;
  line-height: 1.1;
  margin: 0 0 var(--oni-sp-3);
  color: var(--oni-inchiostro);
}
.oni-pagina-negozio .term-description {
  max-width: 68ch;
  font-family: var(--oni-testo);
  color: var(--oni-inchiostro-2);
}

/* ================================================= griglia e schede prodotto
   La griglia e' costruita qui, non ereditata: i template di WooCommerce sono
   sotto il nostro controllo, quindi non c'e' impianto altrui da rispettare. */
.woocommerce ul.products,
.woocommerce-page ul.products {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--oni-sp-7) var(--oni-sp-5);
  margin: 0; padding: 0; list-style: none;
}
.woocommerce ul.products::before,
.woocommerce ul.products::after { content: none; display: none; }

/*
 * Neutralizzazione dell'impianto a `float` di WooCommerce e di Divi.
 *
 * Non basta `width:auto !important` sul selettore piano: Divi dichiara
 *   @media (min-width:768px) and (max-width:980px) {
 *     .woocommerce-page ul.products li.product:nth-child(n) { width:28.333% !important }
 *   }
 * dove `:nth-child(n)` alza la specificita' a (0,4,2) e vince anche contro
 * un `!important` di pari livello. Qui si sale a (0,4,3) qualificando con
 * `body.woocommerce-page` e con il contenitore del tema, e si ripete il
 * `:nth-child(n)` per non perdere nella fascia in cui Divi lo usa.
 */
.woocommerce ul.products li.product,
body.woocommerce-page .oni-pagina-negozio ul.products li.product:nth-child(n),
body.woocommerce .oni-pagina-negozio ul.products li.product:nth-child(n),
body.woocommerce-page .oni-pagina-negozio ul.products[class*="columns-"] li.product:nth-child(n) {
  width: auto !important;
  max-width: none !important;
  margin: 0 !important;
  float: none !important;
  clear: none !important;
  display: flex;
  flex-direction: column;
  position: relative;
}

@media (max-width: 1100px) {
  .woocommerce ul.products, .woocommerce-page ul.products { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 820px) {
  .woocommerce ul.products, .woocommerce-page ul.products {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--oni-sp-6) var(--oni-sp-3);
  }
}

/* --- media della scheda --- */
.oni-scheda__media,
.woocommerce ul.products li.product > a:first-of-type {
  position: relative;
  display: block;
  overflow: hidden;
  border-radius: var(--oni-raggio);
  background: var(--oni-carta-calda);
}
.woocommerce ul.products li.product img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  margin: 0;
  transition: transform .55s cubic-bezier(.2,.6,.2,1);
}
.woocommerce ul.products li.product:hover img { transform: scale(1.05); }
/* Divi sovrappone un velo scuro con un'icona: su un gioiello copre il pezzo. */
.woocommerce ul.products li.product .et_overlay { display: none !important; }

/* --- etichette --- */
.oni-etichetta {
  position: absolute; z-index: 2;
  inset-block-start: var(--oni-sp-3);
  inset-inline-start: var(--oni-sp-3);
  padding: .25rem .55rem;
  font-family: var(--oni-testo); font-size: .625rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase;
  border-radius: 2px; background: var(--oni-inchiostro); color: #fff;
}
.oni-etichetta--offerta { background: var(--oni-offerta); }
.oni-etichetta--novita  { background: var(--oni-inchiostro); }
.oni-etichetta--esaurito { background: var(--oni-inchiostro-2); inset-block-start: auto; inset-block-end: var(--oni-sp-3); }

/* --- testo della scheda --- */
.oni-scheda__testo { padding-block-start: var(--oni-sp-3); display: flex; flex-direction: column; gap: 2px; }
.oni-scheda__marchio {
  margin: 0; font-family: var(--oni-testo); font-size: var(--oni-t-xs);
  letter-spacing: .12em; text-transform: uppercase; color: var(--oni-inchiostro-2);
}
.oni-scheda__nome {
  margin: 0;
  font-family: var(--oni-display);
  font-size: var(--oni-t-l);
  font-weight: 500;
  line-height: 1.3;
  color: var(--oni-inchiostro);
  /* Due righe esatte: il padding NON entra nel calcolo perche' e' sul
     contenitore, non sul titolo. */
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; max-height: 2.6em;
}
.oni-scheda__prezzo {
  margin: var(--oni-sp-1) 0 0;
  font-family: var(--oni-testo); font-size: var(--oni-t-m);
  color: var(--oni-inchiostro);
}
.oni-scheda__prezzo del { opacity: .45; margin-inline-end: .4rem; font-size: .9em; }
.oni-scheda__prezzo ins { text-decoration: none; color: var(--oni-offerta); font-weight: 600; }

/* --- acquisto rapido --- */
.oni-scheda__azione { margin-block-start: auto; padding-block-start: var(--oni-sp-3); }
.woocommerce ul.products li.product .oni-scheda__azione .button {
  display: block; width: 100%; text-align: center;
  min-height: 44px; padding: .75rem 1rem;
  font-family: var(--oni-testo); font-size: var(--oni-t-s);
  letter-spacing: .08em; text-transform: uppercase;
  background: none; color: var(--oni-inchiostro);
  border: 1px solid var(--oni-linea-forte); border-radius: var(--oni-raggio);
  transition: background-color .18s ease, color .18s ease, border-color .18s ease;
}
.woocommerce ul.products li.product .oni-scheda__azione .button:hover {
  background: var(--oni-inchiostro); color: #fff; border-color: var(--oni-inchiostro);
}
.woocommerce ul.products li.product .oni-scheda__azione .added_to_cart { display: none; }
@media (hover: hover) and (min-width: 900px) {
  .oni-scheda__azione { opacity: 0; transform: translateY(4px); transition: opacity .2s ease, transform .2s ease; }
  li.product:hover .oni-scheda__azione,
  li.product:focus-within .oni-scheda__azione { opacity: 1; transform: none; }
}

/* ============================================================ briciole */
.oni-briciole, .woocommerce-breadcrumb {
  font-family: var(--oni-testo); font-size: var(--oni-t-s);
  color: var(--oni-inchiostro-2); margin-block-end: var(--oni-sp-4);
}
.oni-briciole a, .woocommerce-breadcrumb a { color: inherit; text-decoration: none; }
.oni-briciole a:hover, .woocommerce-breadcrumb a:hover { color: var(--oni-accento); text-decoration: underline; }
.oni-briciole__sep { margin-inline: .45rem; opacity: .5; }

/* ======================================================= scheda prodotto */
.oni-pagina-negozio div.product { display: grid; gap: var(--oni-sp-7); }
@media (min-width: 900px) {
  .oni-pagina-negozio div.product {
    grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr);
    align-items: start;
  }
  .oni-pagina-negozio div.product .woocommerce-product-gallery { grid-column: 1; }
  .oni-pagina-negozio div.product .summary { grid-column: 2; margin: 0; width: auto; float: none; }
  .oni-pagina-negozio div.product .woocommerce-tabs,
  .oni-pagina-negozio div.product .related,
  .oni-pagina-negozio div.product .upsells { grid-column: 1 / -1; }
}
.oni-pagina-negozio div.product .woocommerce-product-gallery {
  width: auto !important; float: none !important; margin: 0 !important;
}
.oni-pagina-negozio div.product .woocommerce-product-gallery__wrapper { margin: 0; }
.oni-pagina-negozio div.product .woocommerce-product-gallery img {
  width: 100%; height: auto; display: block;
  aspect-ratio: 1 / 1; object-fit: cover;
  border-radius: var(--oni-raggio); background: var(--oni-carta-calda);
}
/* Con una sola foto la striscia di miniature non serve. */
.oni-pagina-negozio div.product .flex-control-thumbs:only-child,
.oni-pagina-negozio div.product .flex-control-thumbs li:only-child { display: none; }

.oni-pagina-negozio div.product .summary > .price {
  font-family: var(--oni-testo);
  font-size: var(--oni-t-xl);
  color: var(--oni-inchiostro);
  margin-block: var(--oni-sp-3) var(--oni-sp-4);
}
.oni-pagina-negozio div.product .summary > .price del { opacity: .45; font-size: .7em; margin-inline-end: .5rem; }
.oni-pagina-negozio div.product .summary > .price ins { text-decoration: none; color: var(--oni-offerta); }
.oni-pagina-negozio div.product .woocommerce-product-details__short-description {
  font-family: var(--oni-testo); color: var(--oni-inchiostro-2); line-height: 1.7;
  max-width: 60ch;
}
.oni-pagina-negozio div.product form.cart { margin-block: var(--oni-sp-5); }
.oni-pagina-negozio div.product .single_add_to_cart_button {
  width: 100%; max-width: 22rem; min-height: 52px;
  background: var(--oni-inchiostro); color: #fff; border: 0;
  font-family: var(--oni-testo); font-size: var(--oni-t-s);
  letter-spacing: .1em; text-transform: uppercase;
  border-radius: var(--oni-raggio); cursor: pointer;
  transition: background-color .18s ease;
}
.oni-pagina-negozio div.product .single_add_to_cart_button:hover { background: var(--oni-accento-cupo); }
.oni-pagina-negozio div.product .product_meta {
  font-family: var(--oni-testo); font-size: var(--oni-t-s);
  color: var(--oni-inchiostro-2); padding-block-start: var(--oni-sp-4);
  border-block-start: 1px solid var(--oni-linea);
}
.oni-pagina-negozio div.product .product_meta a { color: var(--oni-accento-cupo); }
.oni-pagina-negozio .related > h2,
.oni-pagina-negozio .upsells > h2 {
  font-family: var(--oni-display); font-size: var(--oni-t-xl);
  font-weight: 500; margin-block-end: var(--oni-sp-5);
}

/* ====================================================== garanzie prodotto */
.oni-garanzie {
  list-style: none; margin: var(--oni-sp-5) 0 0; padding: var(--oni-sp-4) 0 0;
  border-block-start: 1px solid var(--oni-linea);
  display: grid; gap: var(--oni-sp-3);
}
.oni-garanzie li {
  display: flex; align-items: flex-start; gap: var(--oni-sp-3);
  font-family: var(--oni-testo); font-size: var(--oni-t-m);
  color: var(--oni-inchiostro-2);
}
.oni-garanzie .oni-icona { width: 18px; height: 18px; color: var(--oni-accento); margin-block-start: 2px; }
.oni-garanzie a { color: inherit; text-decoration: underline; }

/* ============================================== acquisto fisso su mobile */
.oni-acquisto-fisso[hidden] { display: none; }
.oni-acquisto-fisso {
  position: fixed; inset-inline: 0; inset-block-end: 0; z-index: 9999;
  display: flex; align-items: center; gap: var(--oni-sp-4);
  padding: var(--oni-sp-3) var(--oni-sp-4);
  padding-block-end: calc(var(--oni-sp-3) + env(safe-area-inset-bottom, 0px));
  background: var(--oni-carta);
  border-block-start: 1px solid var(--oni-linea);
  box-shadow: 0 -6px 20px rgba(26,24,21,.08);
}
.oni-acquisto-fisso__info { flex: 1; min-width: 0; }
.oni-acquisto-fisso__nome {
  margin: 0; font-family: var(--oni-display); font-size: var(--oni-t-m);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.oni-acquisto-fisso__prezzo {
  margin: 0; font-family: var(--oni-testo); font-size: var(--oni-t-s);
  color: var(--oni-inchiostro-2);
}
.oni-acquisto-fisso .oni-bottone { flex: none; }
@media (min-width: 900px) { .oni-acquisto-fisso { display: none !important; } }

/* ========================================================= barra garanzie */
.oni-garanzie-barra {
  background: var(--oni-carta-calda);
  border-block: 1px solid var(--oni-linea);
  padding-block: var(--oni-sp-6);
}
.oni-garanzie-barra__elenco {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--oni-sp-5);
}
.oni-garanzie-barra__titolo {
  margin: 0 0 var(--oni-sp-1);
  font-family: var(--oni-testo); font-size: var(--oni-t-xs);
  letter-spacing: .12em; text-transform: uppercase; color: var(--oni-inchiostro);
}
.oni-garanzie-barra__testo {
  margin: 0; font-family: var(--oni-testo); font-size: var(--oni-t-s);
  color: var(--oni-inchiostro-2); line-height: 1.5;
}
@media (max-width: 900px) {
  .oni-garanzie-barra__elenco { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--oni-sp-4); }
}

/* ============================================================ pie' negozio */
.oni-pie {
  background: var(--oni-carta);
  border-block-start: 1px solid var(--oni-linea);
  padding-block: var(--oni-sp-7);
}
.oni-pie__colonne {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--oni-sp-6);
}
.oni-pie__titolo {
  margin: 0 0 var(--oni-sp-3);
  font-family: var(--oni-testo); font-size: var(--oni-t-xs);
  letter-spacing: .13em; text-transform: uppercase; color: var(--oni-inchiostro);
}
.oni-pie__colonna ul { list-style: none; margin: 0; padding: 0; }
.oni-pie__colonna li { margin-block-end: var(--oni-sp-2); }
.oni-pie__colonna a {
  font-family: var(--oni-testo); font-size: var(--oni-t-m);
  color: var(--oni-inchiostro-2); text-decoration: none;
  display: inline-block; min-height: 24px; padding-block: 2px;
}
.oni-pie__colonna a:hover { color: var(--oni-accento); }
.oni-pie__testo {
  font-family: var(--oni-testo); font-size: var(--oni-t-m);
  color: var(--oni-inchiostro-2); line-height: 1.7; margin: 0 0 var(--oni-sp-3);
}
.oni-pie__pagamenti {
  list-style: none; margin: var(--oni-sp-4) 0 0; padding: 0;
  display: flex; flex-wrap: wrap; gap: var(--oni-sp-2);
}
.oni-pie__pagamenti li {
  font-family: var(--oni-testo); font-size: var(--oni-t-xs);
  padding: .3rem .6rem; border: 1px solid var(--oni-linea);
  border-radius: var(--oni-raggio); color: var(--oni-inchiostro-2);
}
@media (max-width: 900px) {
  .oni-pie__colonne { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--oni-sp-5); }
}
@media (max-width: 520px) {
  .oni-pie__colonne { grid-template-columns: 1fr; }
}

/* ================================================= paginazione WooCommerce */
.woocommerce nav.woocommerce-pagination { margin-block: var(--oni-sp-7); }
.woocommerce nav.woocommerce-pagination ul {
  border: 0; display: flex; justify-content: center; gap: var(--oni-sp-2);
}
.woocommerce nav.woocommerce-pagination ul li { border: 0; margin: 0; }
.woocommerce nav.woocommerce-pagination ul li a,
.woocommerce nav.woocommerce-pagination ul li span {
  min-width: 44px; min-height: 44px;
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--oni-testo); font-size: var(--oni-t-m);
  border: 1px solid var(--oni-linea); border-radius: var(--oni-raggio);
  color: var(--oni-inchiostro); background: var(--oni-carta); padding: 0 .6rem;
}
.woocommerce nav.woocommerce-pagination ul li span.current {
  background: var(--oni-inchiostro); color: #fff; border-color: var(--oni-inchiostro);
}
.woocommerce nav.woocommerce-pagination ul li a:hover { border-color: var(--oni-inchiostro); background: var(--oni-carta-calda); }

/* =========================================== moduli: leggibilita' su iOS */
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.wpcf7 input:not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.wpcf7 textarea, .wpcf7 select {
  box-sizing: border-box; width: 100%; max-width: 100%;
  min-height: 46px; padding: .7rem .85rem;
  font-family: var(--oni-testo);
  font-size: 16px;                 /* sotto i 16px Safari iOS zooma da solo */
  border: 1px solid var(--oni-linea-forte); border-radius: var(--oni-raggio);
  background: var(--oni-carta); color: var(--oni-inchiostro);
}
.woocommerce form .form-row input.input-text:focus,
.wpcf7 input:focus, .wpcf7 textarea:focus, .wpcf7 select:focus {
  border-color: var(--oni-accento);
  outline: 2px solid color-mix(in srgb, var(--oni-accento) 32%, transparent);
  outline-offset: 1px;
}
.wpcf7 textarea { min-height: 140px; resize: vertical; }
.wpcf7 label {
  display: block; font-family: var(--oni-testo); font-size: var(--oni-t-s);
  letter-spacing: .06em; text-transform: uppercase; color: var(--oni-inchiostro-2);
}
.wpcf7 input[type="submit"] {
  width: auto; min-height: 46px; padding: .8rem 2rem;
  background: var(--oni-inchiostro); color: #fff; border: 0;
  font-family: var(--oni-testo); font-size: var(--oni-t-s);
  letter-spacing: .08em; text-transform: uppercase;
  border-radius: var(--oni-raggio); cursor: pointer;
}
.wpcf7 input[type="submit"]:hover { background: var(--oni-accento-cupo); }

/* ================================================= accessibilita' globale */
a:focus-visible, button:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible {
  outline: 2px solid var(--oni-accento); outline-offset: 2px;
}
html, body { overflow-x: clip; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important; animation-iteration-count: 1 !important;
    transition-duration: .01ms !important; scroll-behavior: auto !important;
  }
}

/* Blocca lo scorrimento del corpo quando un pannello e' aperto. */
body.oni-bloccato { overflow: hidden; }
