/* WooCommerce screens: shop archive controls, cart, checkout, account. */

/* ---------- Notices ---------- */

.woocommerce-notices-wrapper:empty { display: none; }
.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  flex-wrap: wrap;
  max-width: var(--max);
  margin: 1.5rem auto;
  padding: 1rem 1.25rem;
  border-left: 3px solid var(--blue);
  background: var(--paper-deep);
  font-size: .88rem;
  list-style: none;
}
.woocommerce-error { border-left-color: var(--danger); }
.woocommerce-message { border-left-color: var(--success); }
.woocommerce-message a,
.woocommerce-info a { text-decoration: underline; text-underline-offset: 3px; }

/* ---------- Barra archivio ---------- */

.shop-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  flex-wrap: wrap;
  padding-bottom: clamp(2rem, 4vw, 3rem);
  border-bottom: 1px solid var(--line);
  margin-bottom: clamp(2.5rem, 5vw, 4rem);
}
.woocommerce-result-count { margin: 0; color: var(--ink-soft); font-size: .78rem; }
.woocommerce-ordering select {
  min-height: 44px;
  padding: 0 2.25rem 0 .85rem;
  border: 1px solid var(--line);
  background: transparent;
  font-family: var(--font-ui);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.shop-filters { display: flex; gap: .5rem; flex-wrap: wrap; }
.shop-filters a {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 0 1rem;
  border: 1px solid var(--line);
  font-family: var(--font-ui);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  transition: color .3s var(--ease-out), background-color .3s var(--ease-out);
}
.shop-filters a:hover,
.shop-filters a[aria-current="page"] { color: var(--paper); background: var(--ink); border-color: var(--ink); }

.load-more { display: grid; justify-items: center; gap: .9rem; margin-top: clamp(3rem, 6vw, 5rem); }
.load-more button[disabled] { opacity: .5; cursor: progress; }
.load-more-status { margin: 0; color: var(--ink-soft); font-size: .78rem; }
.load-more-status:empty { display: none; }

/* ---------- Tabelle ---------- */

.shop_table { width: 100%; border-collapse: collapse; }
.shop_table th,
.shop_table td { padding: 1rem .75rem; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.shop_table th {
  font-family: var(--font-ui);
  font-size: .7rem;
  font-weight: 750;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.shop_table .product-thumbnail img { width: 84px; height: 105px; object-fit: cover; }
.shop_table .product-remove a {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border: 1px solid var(--line);
  font-size: 1.1rem;
  line-height: 1;
}
.shop_table .product-remove a:hover { color: var(--paper); background: var(--danger); border-color: var(--danger); }

/* ---------- Carrello ---------- */

.cart-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(320px, .45fr);
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: start;
  max-width: var(--max);
  margin: 0 auto;
  padding: clamp(3rem, 6vw, 5rem) var(--gutter) clamp(5rem, 9vw, 8rem);
}
.cart-collaterals { position: sticky; top: 2rem; padding: 1.75rem; background: var(--paper-deep); }
.cart-collaterals h2 { margin-bottom: 1.25rem; font-size: 1.5rem; }
.cart_totals table { width: 100%; border-collapse: collapse; }
.cart_totals th,
.cart_totals td { padding: .7rem 0; border-bottom: 1px solid var(--line); text-align: left; font-size: .88rem; }
.cart_totals .order-total th,
.cart_totals .order-total td { border-bottom: 0; font-family: var(--font-display); font-size: 1.35rem; font-weight: 400; }
.cart_totals td { text-align: right; }

/* ---------- Prezzi ---------- */

/* Tre livelli, nessun quarto: il prezzo protagonista in serif (scheda prodotto, barra di
   acquisto, totale finale), il prezzo di riga in grassetto sans, il prezzo barrato in tono
   minore. Le misure restano quelle del contesto, a cambiare sono peso e colore. */

/* Instrument Serif ha solo il peso 400: ogni <strong> qui dentro produce un neretto finto,
   disegnato dal browser allargando le aste. */
.cart_totals .order-total strong,
.woocommerce-checkout-review-order-table .order-total strong,
.woocommerce-order-overview li strong { font-weight: 400; }

/* Nella riga del carrello il totale è il numero che decide, il prezzo unitario lo
   accompagna: prima erano l'opposto, con l'unitario in serif da 30px. */
.shop_table td.product-price { color: var(--ink-soft); }
.shop_table td.product-subtotal,
.shop_table td.product-total { font-weight: 700; }

/* Stessa regola nello storico ordini dell'area cliente. */
.woocommerce-orders-table__cell-order-total .amount { font-weight: 700; }

/* Colonna dei totali: stesso peso su tutte le voci, il totale finale resta serif. */
.cart_totals td .amount,
.woocommerce-checkout-review-order-table td .amount { font-weight: 700; }
.cart_totals .order-total td .amount,
.woocommerce-checkout-review-order-table .order-total td .amount { font-weight: 400; }

/* Il barrato è sempre lo stesso, ovunque compaia. */
.price del,
.product-price del,
.shop_table del,
.lasacca-sticky-buy__price del { color: var(--ink-soft); font-weight: 400; }
.price ins,
.product-price ins,
.shop_table ins,
.lasacca-sticky-buy__price ins { text-decoration: none; }

/* ---------- Spedizione ---------- */

/* Le altre righe dei totali sono coppie etichetta/numero, questa no: porta una scelta e,
   nel carrello, anche destinazione e form indirizzo. */
.woocommerce-shipping-totals td { text-align: left; }
/* La cella resta stretta in tutte e due le tabelle: 155px nella colonna del carrello,
   129px al checkout, dove la prima colonna è dimensionata sui nomi dei prodotti. In quello
   spazio "Tariffa unica" va a capo e un selettore di paese non ci sta proprio, quindi la
   riga si apre in verticale e si prende tutta la larghezza. */
.woocommerce-shipping-totals th,
.woocommerce-shipping-totals td { display: block; width: auto; }
.woocommerce-shipping-totals th { padding-bottom: .4rem; border-bottom: 0; }
.woocommerce-shipping-totals td { padding-top: 0; }
#shipping_method {
  display: grid;
  gap: .2rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
#shipping_method li {
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .3rem .45rem;
  border: 1px solid transparent;
}
#shipping_method input[type="radio"] { width: 16px; height: 16px; margin: 0; accent-color: var(--blue); }
#shipping_method label {
  display: flex;
  flex: 1;
  align-items: baseline;
  justify-content: space-between;
  gap: .75rem;
  margin: 0;
  font-family: var(--font-ui);
  font-size: .88rem;
}
/* Con una tariffa sola WooCommerce stampa un campo nascosto: è un'informazione, non una
   scelta, quindi niente mano sul cursore e niente riquadro di selezione. */
#shipping_method li:has(input[type="radio"]) label { cursor: pointer; }
#shipping_method li:has(input:checked) { border-color: var(--line); background: var(--paper); }
.shipping-method-name { color: var(--ink-soft); }
.shipping-method-cost { color: var(--ink); font-weight: 700; white-space: nowrap; }

.woocommerce-shipping-destination { margin: .65rem 0 0; color: var(--ink-soft); font-size: .78rem; }
.woocommerce-shipping-destination strong { color: var(--ink); }
.shipping-calculator-button {
  display: inline-block;
  margin-top: .35rem;
  font-family: var(--font-ui);
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  text-decoration: underline;
  text-underline-offset: 4px;
}
.shipping-calculator-form { margin-top: 1rem; }
.shipping-calculator-form .form-row { margin-bottom: .75rem; }
.shipping-calculator-form .button { width: 100%; }
.wc-proceed-to-checkout { margin-top: 1.5rem; }
.wc-proceed-to-checkout .checkout-button { width: 100%; }

.coupon { display: flex; gap: .5rem; margin-bottom: 1.5rem; }
.coupon input { min-height: 50px; padding: 0 .85rem; border: 1px solid var(--line); background: transparent; }
.actions { padding-top: 1.5rem; }

/* ---------- Checkout ---------- */

.checkout-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(340px, .9fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
  max-width: var(--max);
  margin: 0 auto;
  padding: clamp(3rem, 6vw, 5rem) var(--gutter) clamp(5rem, 9vw, 8rem);
}
#order_review_heading { margin-top: 0; font-size: 1.6rem; }
.checkout-summary { position: sticky; top: 2rem; padding: 1.75rem; background: var(--paper-deep); }

.woocommerce-billing-fields h3,
.woocommerce-shipping-fields h3,
.woocommerce-additional-fields h3 { margin: 2.5rem 0 1.25rem; font-size: 1.5rem; }
.form-row { display: flex; flex-direction: column; gap: .35rem; margin-bottom: 1rem; }
.form-row label { font-size: .74rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.form-row .required { color: var(--danger); text-decoration: none; }
.form-row input[type="text"],
.form-row input[type="email"],
.form-row input[type="tel"],
.form-row input[type="password"],
.form-row input[type="number"],
.form-row textarea,
.form-row select,
.select2-container .select2-selection--single {
  width: 100%;
  min-height: 50px;
  padding: .6rem .85rem;
  border: 1px solid var(--line);
  background: var(--paper);
  color: var(--ink);
}
.form-row textarea { min-height: 7rem; resize: vertical; }
.form-row input:focus-visible,
.form-row textarea:focus-visible,
.form-row select:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.form-row-first, .form-row-last { display: inline-flex; width: calc(50% - .5rem); }
.form-row-first { margin-right: 1rem; }

.woocommerce-checkout-review-order-table { margin-bottom: 1.5rem; }
.woocommerce-checkout-review-order-table th,
.woocommerce-checkout-review-order-table td { padding: .7rem 0; font-size: .88rem; }
.woocommerce-checkout-review-order-table .order-total th,
.woocommerce-checkout-review-order-table .order-total td { font-family: var(--font-display); font-size: 1.35rem; font-weight: 400; }

/* Elenco dei pagamenti: non è testo da leggere ma una scelta da fare, quindi ogni voce è
   una riga intera da cliccare, con lo stato selezionato evidente e la descrizione del
   metodo che si apre sotto senza spostare le altre. */
.wc_payment_methods {
  margin: 0 0 1.5rem;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--line);
}
.wc_payment_method {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .7rem;
  padding: 0 .75rem;
  border-bottom: 1px solid var(--line);
  transition: background-color .25s var(--ease-out);
}
.wc_payment_method:has(input:checked) { background: color-mix(in oklch, var(--paper-deep) 55%, transparent); }
.wc_payment_method > input[type="radio"] { width: 18px; height: 18px; margin: 0; accent-color: var(--blue); }
.wc_payment_method > label {
  flex: 1;
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: 1.05rem 0;
  margin: 0;
  font-family: var(--font-ui);
  font-size: .88rem;
  font-weight: 700;
  cursor: pointer;
}
/* I gateway infilano il proprio logo dentro l'etichetta: va in fondo alla riga. */
.wc_payment_method > label img { max-height: 24px; width: auto; margin-left: auto; }
.payment_box {
  flex-basis: 100%;
  margin: 0 0 1rem;
  padding: .85rem 1rem;
  border-left: 2px solid var(--clay);
  background: var(--paper);
  color: var(--ink-soft);
  font-size: .82rem;
}
.payment_box p:last-child { margin-bottom: 0; }
#place_order { width: 100%; }
.woocommerce-terms-and-conditions-wrapper { margin-bottom: 1.25rem; font-size: .82rem; }

/* ---------- Ordine ricevuto ---------- */

.woocommerce-order { max-width: var(--max); margin: 0 auto; padding: clamp(3rem, 6vw, 5rem) var(--gutter) clamp(5rem, 9vw, 8rem); }
.woocommerce-thankyou-order-received { font-family: var(--font-display); font-size: clamp(1.8rem, 3.2vw, 2.7rem); font-weight: 400; letter-spacing: -.015em; }
.woocommerce-order-overview {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 1.5rem;
  margin: 2.5rem 0;
  padding: 1.5rem 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  list-style: none;
}
.woocommerce-order-overview li { font-family: var(--font-display); font-size: 1.2rem; font-weight: 400; }
.woocommerce-order-overview li strong { display: block; }
.woocommerce-order-overview li::first-line { font-size: .68rem; }

/* ---------- Area account ---------- */

.account-layout {
  display: grid;
  grid-template-columns: minmax(220px, .28fr) minmax(0, 1fr);
  gap: clamp(2rem, 5vw, 4rem);
  align-items: start;
  max-width: var(--max);
  margin: 0 auto;
  padding: clamp(3rem, 6vw, 5rem) var(--gutter) clamp(5rem, 9vw, 8rem);
}
.woocommerce-MyAccount-navigation ul { margin: 0; padding: 0; list-style: none; }
.woocommerce-MyAccount-navigation li { border-bottom: 1px solid var(--line); }
.woocommerce-MyAccount-navigation a {
  display: block;
  padding: .9rem 0;
  font-family: var(--font-ui);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.woocommerce-MyAccount-navigation .is-active a { color: var(--blue); }

.woocommerce-form-login,
.woocommerce-form-register,
.woocommerce-EditAccountForm,
.woocommerce-address-fields { max-width: 34rem; }
.woocommerce-form-login__rememberme { display: inline-flex; align-items: center; gap: .5rem; }
.woocommerce-Addresses { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 2rem; }

/* ---------- Acquisto: variazioni, quantità, CTA ---------- */

/* WooCommerce stampa le variazioni in una <table>: la riporto a una griglia
   etichetta/controllo coerente col resto della scheda. */
.variations { width: 100%; margin: 0 0 1.25rem; border-collapse: collapse; }
.variations,
.variations tbody,
.variations tr,
.variations th,
.variations td { display: block; padding: 0; border: 0; text-align: left; }
.variations tr + tr { margin-top: 1rem; }
.variations .label label {
  display: block;
  margin-bottom: .45rem;
  font-size: .75rem;
  font-weight: 750;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.variations .value {
  display: flex;
  align-items: center;
  gap: .75rem;
  flex-wrap: wrap;
}
.variations select {
  flex: 1 1 12rem;
  min-height: 52px;
  padding: 0 2.5rem 0 .9rem;
  border: 1px solid var(--line);
  background:
    linear-gradient(45deg, transparent 50%, var(--ink) 50%) calc(100% - 1.15rem) 55% / 6px 6px no-repeat,
    linear-gradient(135deg, var(--ink) 50%, transparent 50%) calc(100% - .75rem) 55% / 6px 6px no-repeat,
    transparent;
  color: var(--ink);
  font-size: .92rem;
  appearance: none;
  cursor: pointer;
}
.variations select:hover { border-color: var(--ink); }
.variations select:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }

/* Swatch: sostituiscono il select solo quando il JS è riuscito a costruirli, così senza
   JavaScript resta il controllo nativo funzionante. */
.variations select.lasacca-select-enhanced { display: none; }

.lasacca-swatches {
  display: flex;
  gap: .5rem;
  flex-wrap: wrap;
  flex: 1 1 100%;
}
.lasacca-swatch {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 52px;
  min-height: 52px;
  padding: 0 1rem;
  border: 1px solid var(--line);
  background: transparent;
  color: var(--ink);
  font-size: .84rem;
  font-weight: 700;
  letter-spacing: .02em;
  cursor: pointer;
  transition: color .25s var(--ease-out), background-color .25s var(--ease-out), border-color .25s var(--ease-out);
}
.lasacca-swatch:hover:not(:disabled) { border-color: var(--ink); }
.lasacca-swatch.is-selected {
  color: var(--paper);
  background: var(--ink);
  border-color: var(--ink);
}
.lasacca-swatch:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }

/* Combinazione non acquistabile: resta leggibile ma dichiaratamente esclusa. */
.lasacca-swatch.is-unavailable {
  position: relative;
  color: var(--ink-soft);
  border-color: color-mix(in oklch, var(--line) 60%, transparent);
  cursor: not-allowed;
  opacity: .55;
}
.lasacca-swatch.is-unavailable::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top left, transparent calc(50% - .5px), currentColor calc(50% - .5px), currentColor calc(50% + .5px), transparent calc(50% + .5px));
  opacity: .45;
}

.single_add_to_cart_button.is-waiting { opacity: .55; }

/* ---------- Barra d'acquisto fissa ---------- */

.lasacca-sticky-buy {
  position: fixed;
  z-index: 90;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: .75rem clamp(1rem, 4vw, 4rem);
  padding-bottom: max(.75rem, env(safe-area-inset-bottom));
  border-top: 1px solid var(--line);
  background: color-mix(in oklch, var(--paper) 92%, transparent);
  backdrop-filter: blur(10px);
  box-shadow: 0 -10px 30px oklch(22% 0.018 62 / 0.08);
  animation: lasacca-slide-up .35s var(--ease-out);
}
.lasacca-sticky-buy[hidden] { display: none; }
.lasacca-sticky-buy__info { min-width: 0; }
.lasacca-sticky-buy__title {
  margin: 0;
  overflow: hidden;
  font-size: .82rem;
  font-weight: 700;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* Stesso trattamento del prezzo nella scheda: la barra mostra quel prezzo, non un altro. */
.lasacca-sticky-buy__price {
  margin: .1rem 0 0;
  font-family: var(--font-body);
  font-size: 1rem;
  font-weight: 700;
}
.lasacca-sticky-buy__price del { margin-right: .35rem; color: var(--ink-soft); font-size: .9rem; font-weight: 400; }
.lasacca-sticky-buy__price ins { text-decoration: none; }
.lasacca-sticky-buy .button { flex: 0 0 auto; min-height: 46px; }

@keyframes lasacca-slide-up {
  from { transform: translateY(100%); }
  to   { transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  .lasacca-sticky-buy { animation: none; }
}

.reset_variations {
  font-size: .72rem;
  letter-spacing: .04em;
  text-decoration: underline;
  text-underline-offset: 3px;
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s var(--ease-out);
}
.reset_variations[style*="visible"],
.variations select:valid ~ .reset_variations { opacity: 1; pointer-events: auto; }

.woocommerce-variation { margin-bottom: 1rem; }
/* Il carattere del prezzo di variante è dichiarato in style.css insieme a quello in cima
   alla scheda: è lo stesso prezzo, non due. */
.woocommerce-variation-price { margin-bottom: .5rem; }
.woocommerce-variation-availability { font-size: .8rem; }
.woocommerce-variation-description { color: var(--ink-soft); font-size: .88rem; }
.wc-no-matching-variations { color: var(--danger); font-size: .84rem; }

/* Riga d'acquisto: stepper (se il prodotto lo consente) + CTA a piena larghezza. */
.woocommerce-variation-add-to-cart,
form.cart:not(.variations_form) {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .75rem;
  align-items: stretch;
}
form.cart.grouped_form { display: block; }

/* Il filtro woocommerce_quantity_input_classes agisce sull'<input>, non sul wrapper:
   il wrapper si riconosce dal tipo dell'input che contiene. */
.quantity:has(input.qty:not([type="hidden"])) {
  display: grid;
  grid-template-columns: 44px 56px 44px;
  min-height: 56px;
  border: 1px solid var(--line);
}
.quantity button {
  border: 0;
  background: transparent;
  font-size: 1.1rem;
  cursor: pointer;
}
.quantity button:hover { background: var(--paper-deep); }
.quantity input.qty {
  width: 100%;
  border: 0;
  background: transparent;
  text-align: center;
  font-weight: 700;
  -moz-appearance: textfield;
}
.quantity input.qty::-webkit-outer-spin-button,
.quantity input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* Pezzo unico: l'input è nascosto, il wrapper non deve occupare una cella. */
.quantity:has(input.qty[type="hidden"]) { display: contents; }

/* WooCommerce marca con .alt l'azione primaria di ogni schermata: aggiungi al carrello,
   vai al checkout, concludi l'ordine. Ricevono tutte il pieno blu del design system. */
.button.alt,
.single_add_to_cart_button,
.checkout-button,
#place_order {
  color: var(--paper);
  background: var(--blue-deep);
  border-color: var(--blue-deep);
}
.button.alt:hover,
.single_add_to_cart_button:hover,
.checkout-button:hover,
#place_order:hover {
  color: var(--paper);
  background: var(--blue);
  border-color: var(--blue);
}

.single_add_to_cart_button {
  grid-column: 1 / -1;
  width: 100%;
  min-height: 56px;
}
.quantity:has(input.qty:not([type="hidden"])) ~ .single_add_to_cart_button { grid-column: 2; }

/* In attesa di una scelta: il pieno blu è riservato all'azione realmente disponibile,
   così il colore dice qualcosa invece di essere decorazione. */
.single_add_to_cart_button.is-waiting {
  color: var(--ink-soft);
  background: transparent;
  border-color: var(--line);
  opacity: 1;
}
.single_add_to_cart_button.is-waiting:hover {
  color: var(--ink);
  background: transparent;
  border-color: var(--ink);
  transform: none;
}

.single_add_to_cart_button.disabled,
.single_add_to_cart_button:disabled,
.button.alt:disabled {
  color: var(--ink-soft);
  background: color-mix(in oklch, var(--line) 45%, transparent);
  border-color: transparent;
  cursor: not-allowed;
  transform: none;
}

/* Riga meta sotto la CTA (categoria, codice). */
.lasacca-product-meta {
  display: flex;
  gap: 1.25rem;
  flex-wrap: wrap;
  margin: 1.25rem 0 0;
  color: var(--ink-soft);
  font-size: .74rem;
}
.lasacca-product-meta .lasacca-meta-item::first-letter { text-transform: uppercase; }
.lasacca-product-meta a { text-decoration: underline; text-underline-offset: 3px; }

/* Nota pezzo unico sotto la CTA. */
.lasacca-single-piece {
  margin: .85rem 0 0;
  color: var(--ink-soft);
  font-size: .74rem;
  letter-spacing: .02em;
}
.lasacca-single-piece span { color: var(--clay); font-weight: 750; }

@media (max-width: 680px) {
  .woocommerce-variation-add-to-cart,
  form.cart:not(.variations_form) { grid-template-columns: 1fr; }
  .quantity.lasacca-qty { grid-template-columns: 1fr 1fr 1fr; }
  .quantity.lasacca-qty ~ .single_add_to_cart_button { grid-column: 1; }
}

/* ---------- Responsive ---------- */

@media (max-width: 1000px) {
  .cart-layout,
  .checkout-layout,
  .account-layout { grid-template-columns: 1fr; }
  .cart-collaterals,
  .checkout-summary { position: static; }
}

@media (max-width: 680px) {
  .shop_table thead { display: none; }
  .shop_table tr { display: grid; grid-template-columns: 84px 1fr; gap: .25rem 1rem; padding: 1.25rem 0; border-bottom: 1px solid var(--line); }
  .shop_table td { padding: 0; border: 0; }
  .shop_table .product-thumbnail { grid-row: span 4; }
  .shop_table .product-remove { justify-self: end; }
  .form-row-first, .form-row-last { display: flex; width: 100%; margin-right: 0; }
}
