/* =========================================================================
   Stile dei widget WooCommerce dei Template (categoria "WooCommerce"
   nell'editor). Caricato sia sul FRONTEND (solo sulle pagine WC con un
   Template assegnato, vedi env_gjs_enqueue_single_product_template_assets)
   sia dentro il CANVAS dell'editor (vedi canvas.styles in builder.js), così
   l'anteprima coincide col pubblicato.

   Sono stili di BASE, senza !important e con selettori a bassa specificità:
   qualunque cosa si imposti dal tab Stile su un singolo widget continua a
   vincere. Le variabili in :root permettono di ritoccare accento e raggi in
   un punto solo.
   ========================================================================= */

:root {
  /* Accento del brand (magenta), condiviso da TUTTE le pagine WooCommerce -
     prodotto, catalogo, carrello, checkout - così l'intero flusso d'acquisto e'
     visivamente coerente col mini-carrello a scomparsa (widgets.css). */
  --env-wc-accent: #9d2782;
  --env-wc-accent-contrast: #ffffff;
  --env-wc-ink: #14161a;
  --env-wc-radius: 14px;
  --env-wc-radius-sm: 10px;
  --env-wc-border: rgba(17, 24, 39, 0.1);
  --env-wc-muted: #6b7280;
  --env-wc-surface: #ffffff;
  --env-wc-surface-2: #f7f8fa;
  --env-wc-shadow: 0 18px 44px -28px rgba(17, 24, 39, 0.4);
  --env-wc-focus: 0 0 0 3px rgba(157, 39, 130, 0.18);
}

/* --- Galleria prodotto -------------------------------------------------
   Galleria completa di WooCommerce (immagine principale + miniature + lightbox).
   Scelte: niente tasto con la lente (lo nascondiamo ma resta nel DOM, così
   WooCommerce ci aggancia comunque la lightbox), la lightbox si apre cliccando
   l'immagine grande (vedi initProductGallery in frontend.js). */
.env-wc-image .woocommerce-product-gallery {
  position: relative;
  margin: 0;
}

/* Immagine principale: angoli arrotondati, ombra tenue, cursore che invita al
   clic (apre la lightbox). */
.env-wc-image .woocommerce-product-gallery__image,
.env-wc-image .woocommerce-product-gallery__wrapper {
  margin: 0;
}

/* Immagine a piena larghezza della colonna, angoli arrotondati, nessuna ombra. */
.env-wc-image,
.env-wc-image .woocommerce-product-gallery,
.env-wc-image .flex-viewport,
.env-wc-image .woocommerce-product-gallery__wrapper,
.env-wc-image .woocommerce-product-gallery__image {
  width: 100%;
}

.env-wc-image .woocommerce-product-gallery__image img,
.env-wc-image img.wp-post-image {
  width: 100%;
  border-radius: var(--env-wc-radius);
  cursor: zoom-in;
}

/* Angoli arrotondati del riquadro immagine (il fallback su __wrapper serve se
   lo slider non è attivo). Nessun box-shadow. */
.env-wc-image .flex-viewport,
.env-wc-image .woocommerce-product-gallery--with-images .woocommerce-product-gallery__wrapper {
  border-radius: var(--env-wc-radius);
}

/* Via il tasto con la lente d'ingrandimento (resta nel DOM per la lightbox). */
.env-wc-image .woocommerce-product-gallery__trigger {
  display: none !important;
}

/* Spazio tra la colonna della galleria e quella del testo prodotto. Lo mettiamo
   sul lato del TESTO (padding a sinistra della cella col titolo), così
   l'immagine resta a piena larghezza della sua colonna. Su mobile le colonne si
   impilano, quindi niente gap. */
@media (min-width: 769px) {
  .gjs-cell:has(.env-wc-title) {
    padding-left: 40px;
  }
}

/* Le miniature sotto l'immagine principale, quando la galleria ne ha più. */
.env-wc-image .flex-control-thumbs {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 14px 0 0;
  padding: 0;
  list-style: none;
}

.env-wc-image .flex-control-thumbs li {
  width: 72px;
  margin: 0;
}

.env-wc-image .flex-control-thumbs img {
  display: block;
  width: 100%;
  border-radius: var(--env-wc-radius-sm);
  border: 2px solid transparent;
  opacity: 0.55;
  cursor: pointer;
  transition: opacity 0.15s ease, border-color 0.15s ease;
}

.env-wc-image .flex-control-thumbs img:hover {
  opacity: 1;
}

/* Miniatura attiva: piena opacità e contorno d'accento. */
.env-wc-image .flex-control-thumbs img.flex-active {
  opacity: 1;
  border-color: var(--env-wc-accent);
}

/* --- Titolo ------------------------------------------------------------ */

.env-wc-title {
  margin: 0 0 0.4em;
  font-size: clamp(1.9rem, 1.3rem + 1.8vw, 2.75rem);
  font-weight: 700;
  line-height: 1.12;
  letter-spacing: -0.02em;
}

/* --- Prezzo ------------------------------------------------------------ */

.env-wc-price {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin: 0 0 1em;
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--env-wc-accent);
}

.env-wc-price .amount {
  font-size: inherit;
}

/* In offerta WooCommerce stampa <del> (prezzo pieno) + <ins> (scontato). */
.env-wc-price del {
  font-size: 1.05rem;
  font-weight: 500;
  color: var(--env-wc-muted);
  text-decoration: line-through;
  opacity: 0.85;
}

.env-wc-price ins {
  text-decoration: none;
}

/* --- Descrizione breve ------------------------------------------------- */

.env-wc-excerpt {
  margin: 0 0 1.6em;
  max-width: 60ch;
  color: var(--env-wc-muted);
  line-height: 1.7;
}

.env-wc-excerpt p:last-child {
  margin-bottom: 0;
}

/* --- Aggiungi al carrello (form + quantità + pulsante) ----------------- */

.env-wc-add_to_cart .quantity {
  display: inline-flex;
  align-items: center;
  margin-right: 12px;
}

.env-wc-add_to_cart .quantity input.qty {
  width: 72px;
  height: 52px;
  padding: 0 10px;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius-sm);
  background: #fff;
  font-size: 1rem;
  text-align: center;
}

.env-wc-add_to_cart .quantity input.qty:focus {
  outline: none;
  border-color: var(--env-wc-accent);
  box-shadow: var(--env-wc-focus);
}

/* Il pulsante principale, comune a scheda prodotto e griglia archivio. */
.env-wc-add_to_cart button.button,
.env-wc-add_to_cart .single_add_to_cart_button,
.env-wc-product_loop .products a.button.add_to_cart_button,
.env-wc-product_loop .products a.button.product_type_variable {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 45px;
  padding: 0 10px;
  border: 0;
  border-radius: var(--env-wc-radius-sm);
  background: var(--env-wc-accent) !important;
  color: var(--env-wc-accent-contrast) !important;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.01em;
  cursor: pointer;
  transition: transform 0.12s ease, box-shadow 0.12s ease, opacity 0.12s ease;
}

.env-wc-add_to_cart button.button:hover,
.env-wc-add_to_cart .single_add_to_cart_button:hover,
.env-wc-product_loop .products a.button.add_to_cart_button:hover {
  transform: translateY(-1px);
  filter: brightness(1.08);
  box-shadow: 0 16px 30px -12px var(--env-wc-accent) !important;
  color: var(--env-wc-accent-contrast);
}

.env-wc-add_to_cart button.button:active,
.env-wc-add_to_cart .single_add_to_cart_button:active {
  transform: translateY(0);
}

/* La CTA principale della scheda prodotto porta un'ombra colorata già a riposo,
   come "Cassa"/"Effettua ordine": è il pulsante-eroe della pagina. */
.env-wc-add_to_cart .single_add_to_cart_button {
  box-shadow: 0 12px 24px -14px var(--env-wc-accent) !important;
}

/* Selettori delle varianti (prodotti variabili). */
.env-wc-add_to_cart .variations {
  margin: 0 0 1em;
  border-collapse: collapse;
}

.env-wc-add_to_cart .variations td,
.env-wc-add_to_cart .variations th {
  padding: 6px 10px 6px 0;
  vertical-align: middle;
}

.env-wc-add_to_cart .variations select {
  min-height: 46px;
  padding: 0 12px;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius-sm);
  background: #fff;
}

/* --- Breadcrumb -------------------------------------------------------- */

.env-wc-breadcrumb,
.env-wc-breadcrumb .woocommerce-breadcrumb {
  margin: 0 0 0.4em;
  color: var(--env-wc-muted);
  font-size: 0.85rem;
}

.env-wc-breadcrumb a {
  color: var(--env-wc-muted);
  text-decoration: none;
}

.env-wc-breadcrumb a:hover {
  color: var(--env-wc-accent);
  text-decoration: underline;
}

/* =========================================================================
   ARCHIVIO PRODOTTI
   ========================================================================= */

.env-wc-archive_title {
  margin: 0 0 0.3em;
  font-size: clamp(1.7rem, 1.2rem + 1.5vw, 2.4rem);
  font-weight: 700;
  letter-spacing: -0.015em;
}

.env-wc-archive_description {
  margin: 0 0 1.2em;
  max-width: 70ch;
  color: var(--env-wc-muted);
  line-height: 1.7;
}

.env-wc-result_count {
  margin: 0;
  color: var(--env-wc-muted);
  font-size: 0.9rem;
}

/* WooCommerce avvolge il conteggio in un proprio <p>: ne azzeriamo il margine
   di default così resta allineato all'ordinamento accanto. */
.env-wc-result_count p.woocommerce-result-count {
  margin: 0;
}

.env-wc-catalog_ordering,
.env-wc-catalog_ordering form.woocommerce-ordering {
  margin: 0;
}

.env-wc-catalog_ordering select {
  min-height: 46px;
  padding: 0 36px 0 14px;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius-sm);
  background: #fff;
  font-size: 0.95rem;
  cursor: pointer;
}

/* --- Griglia prodotti -------------------------------------------------- */

.env-wc-product_loop ul.products {
  display: grid;
  /* Il numero di colonne lo imposta WooCommerce come classe columns-N; qui
     diamo comunque un fallback fluido, così la griglia respira su ogni
     larghezza anche senza quella classe. */
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 28px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.env-wc-product_loop ul.products::before,
.env-wc-product_loop ul.products::after {
  content: none;
}

.env-wc-product_loop ul.products li.product {
  display: flex;
  flex-direction: column;
  width: auto !important;
  margin: 0 !important;
  padding: 14px;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius);
  background: #fff;
  text-align: left;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.env-wc-product_loop ul.products li.product:hover {
  transform: translateY(-3px);
  box-shadow: 0 22px 44px -28px rgba(17, 24, 39, 0.5);
}

.env-wc-product_loop ul.products li.product a {
  text-decoration: none;
  color: inherit;
}

.env-wc-product_loop ul.products li.product img {
  margin: 0 0 14px;
  border-radius: var(--env-wc-radius-sm);
  aspect-ratio: 1 / 1;
  object-fit: cover;
}

.env-wc-product_loop ul.products li.product .woocommerce-loop-product__title {
  padding: 0;
  font-size: 1.02rem;
  font-weight: 600;
  line-height: 1.35;
  transition: color 0.18s ease;
}

/* All'hover sulla card il titolo vira sull'accento, come feedback che è un link. */
.env-wc-product_loop ul.products li.product:hover .woocommerce-loop-product__title {
  color: var(--env-wc-accent);
}

.env-wc-product_loop ul.products li.product .price {
  display: block;
  margin: 8px 0 14px;
  color: var(--env-wc-accent);
  font-weight: 700;
}
.woocommerce ul.products li.product .price ins {
	text-decoration: none;
}

.env-wc-product_loop ul.products li.product .price del {
  margin-right: 6px;
  color: var(--env-wc-muted);
  font-weight: 500;
}

/* Il pulsante della griglia sta in fondo alla card, allineato in basso. */
.env-wc-product_loop ul.products li.product .button {
	margin-top: auto;
	align-self: flex-start;
	width: 100%;
	text-align: center;
	align-content: center;
  border-radius: var(--env-wc-radius-sm);
  min-height: 45px;
}

body .env-wc-product_loop .onsale {
  position: absolute;
  top: 25px !important;
  left: 20px !important;
  z-index: 1;
  min-height: 0;
  padding: 4px 12px;
  border-radius: 999px;
  background: var(--env-wc-accent);
  color: var(--env-wc-accent-contrast);
  font-size: 0.72rem;
  font-weight: 600;
  line-height: 1.6;
  max-width: 85px;
}

.env-wc-product_loop ul.products li.product {
  position: relative;
}

/* --- Paginazione ------------------------------------------------------- */

.env-wc-product_loop .woocommerce-pagination ul {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: center;
  margin: 32px 0 0;
  padding: 0;
  border: 0;
  list-style: none;
}

.env-wc-product_loop .woocommerce-pagination ul li {
  margin: 0;
  border: 0;
}

.env-wc-product_loop .woocommerce-pagination a,
.env-wc-product_loop .woocommerce-pagination span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  height: 42px;
  padding: 0 10px;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius-sm);
  background: #fff;
  text-decoration: none;
}

.env-wc-product_loop .woocommerce-pagination span.current {
  background: var(--env-wc-accent);
  color: var(--env-wc-accent-contrast);
  border-color: var(--env-wc-accent);
}

/* =========================================================================
   AVVISI / MESSAGGI WooCommerce (info, successo, errore)
   Riquadri moderni con bordo di accento a sinistra invece dei box datati.
   Il CSS è caricato solo sulle pagine WC con un Template, quindi i selettori
   sulle classi native di WooCommerce non toccano altro.
   ========================================================================= */
.woocommerce-notices-wrapper .woocommerce-message,
.woocommerce-notices-wrapper .woocommerce-info,
.woocommerce-notices-wrapper .woocommerce-error,
.env-wc .woocommerce-message,
.env-wc .woocommerce-info,
.env-wc .woocommerce-error {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 20px;
  padding: 14px 18px;
  border: 1px solid var(--env-wc-border);
  border-left-width: 4px;
  border-radius: var(--env-wc-radius-sm);
  background: var(--env-wc-surface-2);
  list-style: none;
  font-size: 0.95rem;
  line-height: 1.5;
}

.woocommerce-notices-wrapper .woocommerce-message,
.env-wc .woocommerce-message {
  border-left-color: #16a34a;
}

.woocommerce-notices-wrapper .woocommerce-info,
.env-wc .woocommerce-info {
  border-left-color: #2563eb;
}

.woocommerce-notices-wrapper .woocommerce-error,
.env-wc .woocommerce-error {
  flex-direction: column;
  align-items: flex-start;
  border-left-color: #dc2626;
}

.env-wc .woocommerce-message .button,
.env-wc .woocommerce-info .button {
  margin-left: auto;
}

/* =========================================================================
   VALUTAZIONI A STELLE (scheda prodotto, griglia, recensioni)
   ========================================================================= */
.env-wc .star-rating,
.env-wc-product_loop .star-rating {
  overflow: hidden;
  position: relative;
  height: 1.1em;
  width: 5.6em;
  margin: 6px 0;
  font-size: 0.9rem;
  line-height: 1.1;
  color: #f5a623;
}

.env-wc .star-rating::before,
.env-wc-product_loop .star-rating::before {
  content: "\73\73\73\73\73";
  color: rgba(17, 24, 39, 0.18);
  float: left;
  top: 0;
  left: 0;
  position: absolute;
  font-family: star;
}

.env-wc .star-rating span,
.env-wc-product_loop .star-rating span {
  overflow: hidden;
  float: left;
  top: 0;
  left: 0;
  position: absolute;
  padding-top: 1.5em;
}

.env-wc .star-rating span::before,
.env-wc-product_loop .star-rating span::before {
  content: "\53\53\53\53\53";
  top: 0;
  position: absolute;
  left: 0;
  font-family: star;
}

/* =========================================================================
   CARRELLO (widget "Carrello" -> shortcode [woocommerce_cart])
   Stesso linguaggio visivo del mini-carrello a scomparsa (vedi widgets.css):
   accento magenta del brand, etichette maiuscoletto, totale grande, pulsante
   primario pieno con ombra colorata. L'accento del brand arriva dal :root
   globale, condiviso con prodotto, catalogo e checkout.
   ========================================================================= */
.env-wc-cart .woocommerce-cart-form table.shop_table {
  width: 100%;
  margin: 0 0 28px;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius);
  border-collapse: separate;
  border-spacing: 0;
  overflow: hidden;
  background: var(--env-wc-surface);
}

.env-wc-cart .shop_table thead th {
  padding: 15px 16px;
  background: var(--env-wc-surface-2);
  color: var(--env-wc-muted);
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  text-align: left;
  border-bottom: 1px solid var(--env-wc-border);
}

.env-wc-cart .shop_table td {
  padding: 16px;
  vertical-align: middle;
  border-bottom: 1px solid var(--env-wc-border);
}

.env-wc-cart .shop_table tr:last-child td {
  border-bottom: 0;
}

.env-wc-cart .shop_table td.product-thumbnail img {
  width: 68px;
  height: 68px;
  border-radius: var(--env-wc-radius-sm);
  border: 1px solid var(--env-wc-border);
  background: var(--env-wc-surface-2);
  object-fit: cover;
}

.env-wc-cart .shop_table td.product-name a {
  font-weight: 600;
  color: inherit;
  text-decoration: none;
  transition: color 0.18s ease;
}

.env-wc-cart .shop_table td.product-name a:hover {
  color: var(--env-wc-accent);
}

/* Prezzi e subtotali: cifre allineate in colonna. */
.env-wc-cart .shop_table td.product-price,
.env-wc-cart .shop_table td.product-subtotal {
  font-variant-numeric: tabular-nums;
}

.env-wc-cart .shop_table td.product-subtotal {
  font-weight: 700;
}

/* "×" per rimuovere: pallino discreto che si accende sull'accento (come il
   mini-carrello), invece del classico rosso. */
.env-wc-cart .shop_table td.product-remove a.remove {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--env-wc-surface-2);
  color: var(--env-wc-muted) !important;
  font-size: 18px;
  line-height: 1;
  text-decoration: none;
  transition: background 0.18s ease, color 0.18s ease;
}

.env-wc-cart .shop_table td.product-remove a.remove:hover {
  background: var(--env-wc-accent);
  color: var(--env-wc-accent-contrast) !important;
}

.env-wc-cart .quantity input.qty {
  width: 74px;
  height: 46px;
  padding: 0 8px;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius-sm);
  text-align: center;
  font-variant-numeric: tabular-nums;
}

.env-wc-cart .quantity input.qty:focus {
  outline: none;
  border-color: var(--env-wc-accent);
  box-shadow: var(--env-wc-focus);
}

/* Riga azioni: coupon a sinistra, "aggiorna carrello" a destra. */
.env-wc-cart .shop_table td.actions {
  padding: 16px;
  background: var(--env-wc-surface-2);
}

.env-wc-cart .shop_table td.actions .coupon {
  display: inline-flex;
  gap: 8px;
}

.env-wc-cart .shop_table td.actions .coupon input.input-text {
  height: 46px;
  min-width: 180px;
  padding: 0 14px;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius-sm);
  background: var(--env-wc-surface);
}

.env-wc-cart .shop_table td.actions .coupon input.input-text:focus {
  outline: none;
  border-color: var(--env-wc-accent);
  box-shadow: var(--env-wc-focus);
}

/* Pulsanti della riga azioni ("Applica coupon", "Aggiorna carrello"):
   secondari, contornati; si accendono sull'accento all'hover. */
.env-wc-cart .shop_table td.actions button.button {
  height: 46px;
  padding: 0 20px;
  border: 1.5px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius-sm);
  background: transparent;
  color: inherit;
  font-weight: 700;
  cursor: pointer;
  transition: border-color 0.18s ease, color 0.18s ease;
}

.env-wc-cart .shop_table td.actions button.button:hover {
  border-color: var(--env-wc-accent);
  color: var(--env-wc-accent);
}

/* Totali carrello come "card". */
.env-wc-cart .cart-collaterals .cart_totals {
  padding: 24px;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius);
  background: var(--env-wc-surface);
  box-shadow: var(--env-wc-shadow);
}

/* Titolo con il filetto colorato del brand (come l'intestazione del pannello). */
.env-wc-cart .cart_totals h2 {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 16px;
  font-size: 1.2rem;
  letter-spacing: -0.01em;
}

.env-wc-cart .cart_totals h2::before {
  content: "";
  width: 4px;
  height: 20px;
  border-radius: 999px;
  background: var(--env-wc-accent);
}

.env-wc-cart .cart_totals table {
  width: 100%;
  border-collapse: collapse;
}

.env-wc-cart .cart_totals table th,
.env-wc-cart .cart_totals table td {
  padding: 12px 0;
  border-bottom: 1px solid var(--env-wc-border);
  text-align: left;
  font-variant-numeric: tabular-nums;
}

/* Etichette di riga (Subtotale, Spedizione) in maiuscoletto attenuato. */
.env-wc-cart .cart_totals table th {
  color: var(--env-wc-muted);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.env-wc-cart .cart_totals td {
  text-align: right;
  font-weight: 600;
}

.env-wc-cart .cart_totals .order-total th,
.env-wc-cart .cart_totals .order-total td {
  border-bottom: 0;
  padding-top: 16px;
}

.env-wc-cart .cart_totals .order-total th {
  font-size: 0.8rem;
}

.env-wc-cart .cart_totals .order-total td {
  font-size: 1.4rem;
  font-weight: 800;
  color: var(--env-wc-accent);
}

.env-wc-cart .wc-proceed-to-checkout {
  margin-top: 20px;
}

.env-wc-cart .wc-proceed-to-checkout a.checkout-button {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 54px;
  border-radius: var(--env-wc-radius-sm);
  background: var(--env-wc-accent);
  color: var(--env-wc-accent-contrast);
  font-size: 1.02rem;
  font-weight: 700;
  text-decoration: none;
  box-shadow: 0 12px 24px -12px var(--env-wc-accent);
  transition: filter 0.18s ease, box-shadow 0.18s ease, transform 0.15s ease;
}

.env-wc-cart .wc-proceed-to-checkout a.checkout-button:hover {
  filter: brightness(1.08);
  box-shadow: 0 16px 30px -12px var(--env-wc-accent);
}

.env-wc-cart .wc-proceed-to-checkout a.checkout-button:active {
  transform: translateY(1px);
}

/* =========================================================================
   CHECKOUT (widget "Checkout" -> shortcode [woocommerce_checkout])
   Due colonne su desktop: dati cliente a sinistra, riepilogo/pagamento a
   destra; una colonna su mobile. Stesso linguaggio visivo del carrello e del
   mini-carrello: l'accento magenta del brand arriva dal :root globale.
   ========================================================================= */
.env-wc-checkout .woocommerce-checkout {
  display: grid;
  grid-template-columns: 1.2fr 0.8fr;
  /* Riga 1 = titolo "Il tuo ordine" (auto), riga 2 = riepilogo (1fr assorbe lo
     spazio). La colonna sinistra, più alta, spinge la sua eccedenza nella riga
     2, ma il riepilogo resta allineato in alto (align-items:start), quindi
     incollato sotto al titolo invece di finire a metà pagina. */
  grid-template-rows: auto 1fr;
  gap: 8px 32px;
  align-items: start;
}

/* La colonna dei dati cliente occupa entrambe le righe della griglia; il titolo
   "Il tuo ordine" (riga 1) e il riquadro riepilogo (riga 2) restano incolonnati
   in alto a destra. Senza questa assegnazione esplicita, l'auto-posizionamento
   della griglia spingeva il riepilogo nella riga sotto - sotto la colonna
   sinistra alta - lasciando un enorme vuoto (vedi checkout reale). */
.env-wc-checkout #customer_details {
  grid-column: 1;
  grid-row: 1 / span 2;
  padding: 22px;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius);
  background: var(--env-wc-surface);
  box-shadow: var(--env-wc-shadow);
  position: sticky;
  top: 24px;
}

.env-wc-checkout #order_review_heading {
  grid-column: 2;
  grid-row: 1;
}

.env-wc-checkout #order_review {
  grid-column: 2;
  grid-row: 2;
}

.env-wc-checkout h3,
.env-wc-checkout #order_review_heading {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 14px;
  color: var(--env-wc-ink);
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: -0.01em;
}

/* Filetto colorato del brand accanto ai titoli di sezione. */
.env-wc-checkout h3::before,
.env-wc-checkout #order_review_heading::before {
  content: "";
  flex: 0 0 auto;
  width: 4px;
  height: 18px;
  border-radius: 999px;
  background: var(--env-wc-accent);
}

/* Il titolo "Spedire a un indirizzo diverso?" è una label con checkbox: niente
   filetto lì, altrimenti si spezza l'allineamento della casella. */
.env-wc-checkout h3 label {
  display: inline;
  margin: 0;
  font: inherit;
  color: inherit;
}

/* Campi del form moderni. */
.env-wc-checkout .form-row {
  margin: 0 0 16px;
}

.env-wc-checkout .form-row label {
  display: block;
  margin-bottom: 6px;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--env-wc-muted);
}

.env-wc-checkout .form-row input.input-text,
.env-wc-checkout .form-row textarea,
.env-wc-checkout .select2-container .select2-selection,
.env-wc-checkout .form-row select {
  width: 100%;
  min-height: 45px;
  padding: 0 14px;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius-sm);
  background: var(--env-wc-surface);
  font-size: 0.98rem;
}

.woocommerce .col2-set .col-1, .woocommerce-page .col2-set .col-1,
.woocommerce .col2-set .col-2, .woocommerce-page .col2-set .col-2 {
	float: unset;
	width: 100%;
}

.env-wc-checkout .form-row textarea {
  min-height: 96px;
  padding: 12px 14px;
}

.env-wc-checkout .form-row input.input-text:focus,
.env-wc-checkout .form-row textarea:focus,
.env-wc-checkout .form-row select:focus {
  outline: none;
  border-color: var(--env-wc-accent);
  box-shadow: var(--env-wc-focus);
}

/* Riepilogo ordine + pagamento come card impilate. */
.env-wc-checkout #order_review {
  padding: 22px;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius);
  background: var(--env-wc-surface);
  box-shadow: var(--env-wc-shadow);
  position: sticky;
  top: 24px;
}

.env-wc-checkout .woocommerce-checkout-review-order-table {
  width: 100%;
  margin: 0 0 18px;
  border-collapse: collapse;
}

.env-wc-checkout .woocommerce-checkout-review-order-table th,
.env-wc-checkout .woocommerce-checkout-review-order-table td {
  padding: 12px 0;
  border-bottom: 1px solid var(--env-wc-border);
  text-align: left;
  font-variant-numeric: tabular-nums;
}

/* Etichette (Prodotto, Subtotale, Spedizione...) in maiuscoletto attenuato. */
.env-wc-checkout .woocommerce-checkout-review-order-table th {
  color: var(--env-wc-muted);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* Importi allineati a destra. */
.env-wc-checkout .woocommerce-checkout-review-order-table td {
  text-align: right;
  font-weight: 600;
}

/* Nome del prodotto: leggibile, a sinistra, non maiuscoletto. */
.env-wc-checkout .woocommerce-checkout-review-order-table td.product-name {
  text-align: left;
  font-weight: 500;
}

.env-wc-checkout .woocommerce-checkout-review-order-table .product-quantity {
  color: var(--env-wc-muted);
  font-weight: 600;
}

/* Riga del totale: importo grande in accento. */
.env-wc-checkout .woocommerce-checkout-review-order-table .order-total th,
.env-wc-checkout .woocommerce-checkout-review-order-table .order-total td {
  border-bottom: 0;
  padding-top: 16px;
}

.env-wc-checkout .woocommerce-checkout-review-order-table .order-total td {
  font-size: 1.3rem;
  font-weight: 800;
  color: var(--env-wc-accent);
}

.env-wc-checkout #payment {
  margin-top: 4px;
  border-radius: var(--env-wc-radius-sm);
  background: var(--env-wc-surface-2);
}

.env-wc-checkout #payment ul.wc_payment_methods {
  margin: 0;
  padding: 8px 14px;
  list-style: none;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius-sm);
}

.env-wc-checkout #payment ul.wc_payment_methods li {
  padding: 10px 2px;
  border-bottom: 1px solid var(--env-wc-border);
}

.env-wc-checkout #payment ul.wc_payment_methods li:last-child {
  border-bottom: 0;
}

.env-wc-checkout #payment ul.wc_payment_methods li label {
  font-weight: 600;
  cursor: pointer;
}

/* Radio e checkbox nativi tinti col colore del brand (metodo di pagamento,
   "spedire a indirizzo diverso", accettazione condizioni). */
.env-wc-checkout input[type="radio"],
.env-wc-checkout input[type="checkbox"] {
  accent-color: var(--env-wc-accent);
}

.env-wc-checkout #payment .place-order {
  padding: 14px 0 4px;
}

.env-wc-checkout #place_order {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 56px;
  border: 0;
  border-radius: var(--env-wc-radius-sm);
  background: var(--env-wc-accent);
  color: var(--env-wc-accent-contrast);
  font-size: 1.05rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: 0 12px 24px -12px var(--env-wc-accent);
  transition: filter 0.18s ease, transform 0.15s ease, box-shadow 0.18s ease;
}

.env-wc-checkout #place_order:hover {
  filter: brightness(1.08);
  transform: translateY(-1px);
  box-shadow: 0 16px 30px -12px var(--env-wc-accent);
}

.env-wc-checkout #place_order:active {
  transform: translateY(0);
}

/* Una colonna su tablet/mobile. */
@media (max-width: 900px) {
  .env-wc-checkout .woocommerce-checkout {
    grid-template-columns: 1fr;
    /* A colonna unica gli elementi si impilano nell'ordine del DOM: azzeriamo
       le righe esplicite, altrimenti titolo e riepilogo si sovrapporrebbero
       alla colonna dati cliente (che spanava due righe). */
    grid-template-rows: none;
  }

  .env-wc-checkout #customer_details,
  .env-wc-checkout #order_review_heading,
  .env-wc-checkout #order_review {
    grid-column: 1;
    grid-row: auto;
  }

  .env-wc-checkout #order_review {
    position: static;
  }

  /* Riga azioni del carrello: coupon e pulsanti vanno a capo senza traboccare. */
  .env-wc-cart .shop_table td.actions .coupon {
    flex-wrap: wrap;
  }

  .env-wc-cart .shop_table td.actions .coupon input.input-text {
    flex: 1 1 auto;
    min-width: 0;
  }
}

/* Focus visibile su tutti i comandi WC (accessibilità da tastiera). */
.env-wc a.button:focus-visible,
.env-wc button:focus-visible,
.env-wc input:focus-visible,
.env-wc-product_loop a.button:focus-visible {
  outline: none;
  box-shadow: var(--env-wc-focus);
}

/* =========================================================================
   ARCHIVIO CON SIDEBAR DI FILTRI (categoria prodotti)
   -------------------------------------------------------------------------
   Layout a due colonne: sidebar filtri (celle del builder con la classe
   env-wc-sidebar-cell) + contenuto (env-wc-main-cell). Le celle vanno a capo
   sotto i 768px (vedi .gjs-row-inner in widgets.css); da lì la sidebar diventa
   un pannello a scomparsa aperto da un pulsante "Filtri".
   ========================================================================= */

/* Larghezze delle colonne su desktop (la cella base è flex-basis:100%). */
@media (min-width: 769px) {
  .gjs-cell.env-wc-sidebar-cell {
    flex: 0 0 288px;
    max-width: 288px;
    margin-right: 50px;
  }

  .gjs-cell.env-wc-main-cell {
    flex: 1 1 auto;
  }
}

/* Barra sopra la griglia: conteggio a sinistra, ordinamento a destra. */
.env-wc-archive-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin: 0 0 20px;
}

/* --- Contenitore sidebar --- */
.env-wc-filters {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 20px;
  border: 1px solid var(--env-wc-border);
  border-radius: var(--env-wc-radius);
  background: var(--env-wc-surface);
  color: var(--env-wc-ink);
}

/* Ogni blocco filtro è separato da un filetto, tranne il primo. */
.env-wc-filters > .env-wc {
  padding: 18px 0;
  border-top: 1px solid var(--env-wc-border);
}
.env-wc.env-wc-active_filters {
	border-top: 0;
	padding-top: 10px;
}

.env-wc-filters > .env-wc:first-child {
  padding-top: 0;
  border-top: 0;
}

.env-wc-filters > .env-wc:last-child {
  padding-bottom: 0;
}

@media (min-width: 769px) {
  .env-wc-filters {
    position: sticky;
    top: 24px;
  }
}

/* Titolo di ogni filtro (before_title in env_gjs_wc_render_filter_widget). */
.env-wc-filter-title {
  margin: 0 0 12px;
  color: var(--env-wc-ink);
  font-size: 0.8rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

/* --- Liste (categorie + filtro per attributo) --- */
.env-wc-filters ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.env-wc-filters li {
  margin: 0;
  padding: 5px 0;
  line-height: 1.4;
}

.env-wc-filters li a {
  color: var(--env-wc-ink);
  text-decoration: none;
  transition: color 0.15s ease;
}

.env-wc-filters li a:hover {
  color: var(--env-wc-accent);
}

.env-wc-filters .count {
  margin-left: 4px;
  color: var(--env-wc-muted);
  font-size: 0.85em;
}

/* Sotto-categorie: rientrate con un filetto guida. */
.env-wc-filters .children {
  margin: 4px 0 4px 6px;
  padding-left: 12px;
  border-left: 1px solid var(--env-wc-border);
}

.env-wc-filters .current-cat > a,
.env-wc-filters .chosen > a {
  color: var(--env-wc-accent);
  font-weight: 700;
}

/* Pallino di stato per il filtro attributo (voci selezionate). */
.env-wc-filters .woocommerce-widget-layered-nav-list__item--chosen > a {
  color: var(--env-wc-accent);
  font-weight: 700;
}

/* --- Filtri attivi: chip removibili --- */
.env-wc-active_filters ul {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.env-wc-active_filters li {
  padding: 0;
}

.env-wc-active_filters li a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 11px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--env-wc-accent) 12%, transparent);
  color: var(--env-wc-accent);
  font-size: 0.85rem;
  font-weight: 600;
}

.env-wc-active_filters li a::before {
  content: "\00d7";
  font-size: 1.05em;
  line-height: 1;
}

.env-wc-active_filters li a:hover {
  background: var(--env-wc-accent);
  color: var(--env-wc-accent-contrast);
}

/* Nessun filtro attivo: messaggio attenuato (fallback quando il widget nativo
   non stamperebbe nulla). */
.env-wc-filters .env-wc-no-filters {
  margin: 0;
  color: var(--env-wc-muted);
  font-size: 0.9rem;
}

/* --- Filtra per prezzo: cursore --- */
.env-wc-filters .price_slider_wrapper {
  margin-top: 4px;
}

.env-wc-filters .ui-slider {
  position: relative;
  height: 6px;
  margin: 12px 4px 18px;
  border-radius: 999px;
  background: var(--env-wc-border);
}

.env-wc-filters .ui-slider .ui-slider-range {
  position: absolute;
  z-index: 1;
  display: block;
  height: 100%;
  border-radius: 999px;
  background: var(--env-wc-accent);
}

.env-wc-filters .ui-slider .ui-slider-handle {
  position: absolute;
  z-index: 2;
  top: 50%;
  width: 18px;
  height: 18px;
  margin-left: -9px;
  transform: translateY(-50%);
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--env-wc-accent);
  box-shadow: 0 2px 6px rgba(17, 24, 39, 0.25);
  cursor: grab;
}

.env-wc-filters .price_slider_amount {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
}

/* WooCommerce usa lo slider: i campi numerici testuali restano nel DOM (li
   legge lo script) ma non vanno mostrati. */
.env-wc-filters .price_slider_amount input[type="text"] {
  display: none;
}

.env-wc-filters .price_slider_amount .price_label {
  width: 100%;
  color: var(--env-wc-muted);
  font-size: 0.9rem;
  font-variant-numeric: tabular-nums;
}

.env-wc-filters .price_slider_amount .button {
  padding: 9px 18px;
  border: 0;
  border-radius: var(--env-wc-radius-sm);
  background: var(--env-wc-accent);
  color: var(--env-wc-accent-contrast);
  font-weight: 700;
  cursor: pointer;
  transition: filter 0.18s ease;
}

.env-wc-filters .price_slider_amount .button:hover {
  filter: brightness(1.08);
}

/* --- Pannello a scomparsa su mobile --- */
/* Da desktop questi elementi (iniettati via JS) non esistono visivamente:
   la sidebar è inline nella sua colonna. */
.env-wc-filters-toggle,
.env-wc-filters-close,
.env-wc-filters-backdrop {
  display: none;
}

@media (max-width: 768px) {
  /* Pulsante "Filtri" iniettato in cima alla colonna sidebar (vedi
     initProductFilters). Su mobile la cella sidebar è a piena larghezza. */
  .env-wc-filters-toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 11px 18px;
    border: 1.5px solid var(--env-wc-border);
    border-radius: var(--env-wc-radius-sm);
    background: var(--env-wc-surface);
    color: var(--env-wc-ink);
    font-weight: 700;
    cursor: pointer;
  }

  /* La sidebar diventa un cassetto che entra da sinistra. */
  .env-wc-filters {
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    z-index: 1000;
    width: min(340px, 88vw);
    height: 100dvh;
    margin: 0;
    border: 0;
    border-radius: 0;
    overflow-y: auto;
    transform: translateX(-100%);
    transition: transform 0.32s cubic-bezier(0.22, 0.61, 0.36, 1);
    box-shadow: 24px 0 60px rgba(2, 6, 23, 0.28);
  }

  .env-wc-filters.is-open {
    transform: translateX(0);
  }

  /* Pulsante × in cima al cassetto. */
  .env-wc-filters-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: flex-end;
    width: 36px;
    height: 36px;
    margin: -4px -4px 4px 0;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: var(--env-wc-surface-2);
    color: var(--env-wc-ink);
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
  }

  .env-wc-filters-backdrop {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 999;
    background: rgba(9, 12, 20, 0.48);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.28s ease, visibility 0.28s ease;
  }

  .env-wc-filters-backdrop.is-open {
    opacity: 1;
    visibility: visible;
  }

  body.env-wc-filters-open {
    overflow: hidden;
  }
}

@media (prefers-reduced-motion: reduce) {
  .env-wc-filters,
  .env-wc-filters-backdrop {
    transition: none;
  }
}


.woocommerce-error::before, .woocommerce-info::before, .woocommerce-message::before {
	content: "\e028";
	content: "\e028"/"";
	position: relative;
	top: 0;
	left: 0;
}