/*
 * Panservice — foglio di stile del tema.
 * Portato 1:1 dai design token del frontend Next.js (src/app/globals.css),
 * riscritto come CSS statico: nessun build step, nessun framework a runtime.
 */

/* ============================================================
   1. DESIGN TOKENS
   ============================================================ */
:root {
  /* Brand — calibrato sul logo ufficiale (rosso mattone). Accento, non fondo. */
  --brand-50: #fcf4f3;
  --brand-100: #fae5e4;
  --brand-200: #f3c7c6;
  --brand-300: #e89a99;
  --brand-400: #d96460;
  --brand-500: #c43c39;
  --brand-600: #a51f1f;
  --brand-700: #891b1b;
  --brand-800: #721a1a;
  --brand-900: #5f1919;

  --cream: #faf7f2;
  --ink: #1c1917;

  /* Banda "sand" calda usata nella hero. */
  --sand-50: #f6efe4;
  --sand-100: #f0e7d8;
  --sand-200: #e8dcc8;
  --sand-300: #d9c9af;

  /* Neutri (scala stone) */
  --stone-50: #fafaf9;
  --stone-100: #f5f5f4;
  --stone-200: #e7e5e4;
  --stone-300: #d6d3d1;
  --stone-400: #a8a29e;
  --stone-500: #78716c;
  --stone-600: #57534e;
  --stone-700: #44403c;
  --stone-800: #292524;
  --stone-900: #1c1917;

  --amber-50: #fffbeb;
  --amber-200: #fde68a;
  --amber-500: #f59e0b;
  --amber-700: #b45309;
  --amber-800: #92400e;
  --amber-900: #78350f;
  --green-50: #f0fdf4;
  --green-600: #16a34a;
  --green-700: #15803d;
  --red-600: #dc2626;
  --whatsapp: #25d366;

  --background: var(--cream);
  --foreground: var(--ink);

  /* Font di sistema: zero richieste esterne (niente Google Fonts → niente
     trasferimento IP verso terzi, cfr. Garante privacy) e zero FOUT. */
  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    "Helvetica Neue", Arial, "Noto Sans", ui-sans-serif, system-ui, sans-serif;

  --radius-card: 0.9rem;
  --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);

  /* Scala z-index semantica — mai 999/9999 arbitrari. */
  --z-dropdown: 30;
  --z-sticky: 40;
  --z-overlay: 50;
  --z-drawer: 60;
  --z-cookie: 65;
  --z-toast: 70;

  --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
}

/* ============================================================
   2. RESET + BASE
   ============================================================ */
*,
*::before,
*::after { box-sizing: border-box; }

/* Il bordo "2px groove" che i browser danno di serie ai fieldset: sul checkout
   Stripe avvolge il modulo della carta proprio in un <fieldset>, e quel bordo
   si vedeva come un riquadro vuoto dentro il metodo di pagamento. */
fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
legend { padding: 0; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  margin: 0;
  min-height: 100%;
  background: var(--background);
  color: var(--foreground);
  font-family: var(--font-sans);
  font-size: 16px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

body.ps-no-scroll { overflow: hidden; }

img, svg, video { max-width: 100%; height: auto; display: block; }

a { color: inherit; text-decoration: none; }
a:hover { color: inherit; }

button { font: inherit; color: inherit; cursor: pointer; }

h1, h2, h3 { text-wrap: balance; margin: 0; line-height: 1.15; }
h4, h5, h6, p, ul, ol, dl, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }

:focus-visible {
  outline: 2px solid var(--brand-600);
  outline-offset: 2px;
}

.ps-sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.ps-skip-link {
  position: absolute; left: -9999px; top: 0; z-index: var(--z-toast);
  background: var(--ink); color: #fff; padding: .75rem 1.25rem;
  border-radius: 0 0 .75rem 0; font-weight: 600;
}
.ps-skip-link:focus { left: 0; }

/* ============================================================
   3. LAYOUT
   ============================================================ */
.ps-container {
  width: 100%;
  margin-inline: auto;
  max-width: 80rem; /* 1280px */
  padding-inline: 1rem;
}
@media (min-width: 640px) { .ps-container { padding-inline: 1.5rem; } }
@media (min-width: 1024px) { .ps-container { padding-inline: 2rem; } }

.ps-main { flex: 1 1 auto; }

.ps-section { padding-block: 3.5rem; }
@media (min-width: 1024px) { .ps-section { padding-block: 4rem; } }
.ps-section--white { background: #fff; }
.ps-section--tight { padding-block: 2rem; }
@media (min-width: 1024px) { .ps-section--tight { padding-block: 3rem; } }

.ps-grid-products {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}
@media (min-width: 640px) { .ps-grid-products { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .ps-grid-products { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.ps-grid-cats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}
@media (min-width: 640px) { .ps-grid-cats { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* ============================================================
   4. ANIMAZIONI
   ============================================================ */
@keyframes ps-rise-in {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: none; }
}
.ps-rise { animation: ps-rise-in .6s var(--ease-out-quart) both; }
.ps-rise-1 { animation-delay: 60ms; }
.ps-rise-2 { animation-delay: 120ms; }
.ps-rise-3 { animation-delay: 160ms; }

@keyframes ps-drawer-in { from { transform: translateX(-100%); } to { transform: none; } }
@keyframes ps-overlay-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes ps-spin { to { transform: rotate(360deg); } }
@keyframes ps-pulse { 50% { opacity: .4; } }

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

/* ============================================================
   5. BOTTONI / PILL
   ============================================================ */
.ps-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  border: 0; border-radius: 9999px; font-weight: 600; line-height: 1;
  transition: background-color .2s, color .2s, border-color .2s, box-shadow .2s, transform .2s;
  text-align: center; white-space: nowrap;
}
.ps-btn--primary { background: var(--brand-600); color: #fff; box-shadow: var(--shadow-sm); }
.ps-btn--primary:hover { background: var(--brand-700); color: #fff; }
.ps-btn--dark { background: var(--brand-700); color: #fff; }
.ps-btn--dark:hover { background: var(--brand-800); color: #fff; }
.ps-btn--ghost { background: rgb(255 255 255 / .6); color: var(--stone-800); border: 1px solid var(--stone-300); }
.ps-btn--ghost:hover { background: #fff; border-color: var(--stone-400); color: var(--stone-800); }
.ps-btn--outline { background: transparent; color: var(--brand-700); border: 2px solid var(--brand-600); }
.ps-btn--outline:hover { background: var(--brand-50); color: var(--brand-700); }
.ps-btn--neutral { background: var(--stone-800); color: #fff; }
.ps-btn--neutral:hover { background: var(--stone-900); color: #fff; }
.ps-btn--success { background: var(--green-600); color: #fff; }
.ps-btn--sm { padding: .625rem 1.25rem; font-size: .875rem; min-height: 2.5rem; }
.ps-btn--md { padding: .75rem 1.5rem; font-size: 1rem; min-height: 2.75rem; }
.ps-btn--lg { padding: .875rem 1.5rem; font-size: 1rem; min-height: 3rem; }
.ps-btn--block { width: 100%; }
.ps-btn[disabled], .ps-btn.is-disabled {
  background: var(--stone-300); color: #fff; cursor: not-allowed; box-shadow: none;
}
.ps-btn--outline[disabled] { background: transparent; opacity: .5; }

/* Chip / pill link (filtri categoria, ancore di sezione) */
.ps-chip {
  display: inline-flex; align-items: center; min-height: 2.75rem;
  border-radius: 9999px; border: 1px solid var(--stone-200); background: #fff;
  padding-inline: 1rem; font-size: .875rem; font-weight: 500; color: var(--stone-600);
  transition: border-color .2s, color .2s, background-color .2s;
}
.ps-chip:hover { border-color: var(--brand-300); color: var(--brand-700); }
.ps-chip.is-active { border-color: var(--brand-600); background: var(--brand-600); color: #fff; box-shadow: var(--shadow-sm); }
.ps-chips { display: flex; flex-wrap: wrap; gap: .5rem; }

/* ============================================================
   6. TOP BAR + HEADER
   ============================================================ */
.ps-topbar { background: var(--ink); color: var(--stone-300); font-size: 13px; }
.ps-topbar__inner {
  display: flex; height: 2.25rem; align-items: center;
  justify-content: space-between; gap: .75rem;
}
.ps-topbar__left { display: flex; min-width: 0; align-items: center; gap: .75rem; }
.ps-topbar__left > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ps-topbar__strong { color: #fff; }
.ps-topbar__sep { height: .75rem; width: 1px; background: rgb(255 255 255 / .2); flex: none; }
.ps-topbar__wa {
  display: flex; flex: none; align-items: center; gap: .375rem;
  font-weight: 500; color: #fff; transition: color .2s;
}
.ps-topbar__wa:hover { color: var(--stone-200); }
.ps-topbar__wa svg { color: var(--whatsapp); width: 1rem; height: 1rem; }
.ps-topbar__sm, .ps-topbar__lg { display: none; }
@media (min-width: 640px) { .ps-topbar__sm { display: inline; } .ps-topbar__sep { display: block; } }
@media (max-width: 639px) { .ps-topbar__sep { display: none; } }
@media (min-width: 1024px) { .ps-topbar__lg { display: inline; } }
.ps-topbar__wa-short { display: inline; }
@media (min-width: 640px) { .ps-topbar__wa-short { display: none; } }
.ps-topbar__wa-full { display: none; }
@media (min-width: 640px) { .ps-topbar__wa-full { display: inline; } }

.ps-header {
  position: sticky; top: 0; z-index: var(--z-sticky);
  border-bottom: 1px solid var(--stone-200);
  background: rgb(250 247 242 / .95);
  backdrop-filter: blur(8px);
}
/* Con la barra di amministrazione visibile, l'header sticky finirebbe sotto di
   essa: WordPress spinge l'<html> di 32px, non il viewport. Sotto i 783px la
   barra scorre via con la pagina, quindi lì l'offset non serve. */
@media screen and (min-width: 783px) {
  body.admin-bar .ps-header { top: 32px; }
}

.ps-header__bar {
  display: flex; height: 4rem; align-items: center; gap: .75rem;
}
@media (min-width: 1024px) { .ps-header__bar { height: 5rem; gap: 1.25rem; } }
.ps-header__logo { display: flex; flex: none; align-items: center; }
.ps-header__logo img { height: 2.25rem; width: auto; }
@media (min-width: 1024px) { .ps-header__logo img { height: 3rem; } }
.ps-header__actions { margin-left: auto; display: flex; flex: none; align-items: center; }
.ps-header__searchdesk { display: none; }
@media (min-width: 768px) {
  .ps-header__searchdesk { display: block; flex: 1 1 auto; max-width: 36rem; }
}
@media (min-width: 1024px) { .ps-header__searchdesk { margin-inline: 1rem; } }
.ps-header__searchmob {
  border-top: 1px solid var(--stone-100);
  padding: .125rem 1rem .625rem;
}
@media (min-width: 768px) { .ps-header__searchmob { display: none; } }

.ps-iconbtn {
  display: inline-flex; width: 2.75rem; height: 2.75rem; flex: none;
  align-items: center; justify-content: center; border-radius: 9999px;
  background: transparent; border: 0; color: var(--ink); transition: background-color .2s;
  position: relative;
}
.ps-iconbtn:hover { background: var(--stone-100); }
.ps-iconbtn svg { width: 1.5rem; height: 1.5rem; }
.ps-burger { display: inline-flex; }
@media (min-width: 768px) { .ps-burger { display: none; } }

.ps-cart-count {
  position: absolute; right: -2px; top: -2px;
  display: inline-flex; height: 1.25rem; min-width: 1.25rem;
  align-items: center; justify-content: center; border-radius: 9999px;
  background: var(--brand-600); padding-inline: .25rem;
  font-size: .75rem; font-weight: 700; color: #fff; line-height: 1;
}
.ps-cart-count[hidden] { display: none; }

/* Nav desktop */
.ps-nav { display: none; border-top: 1px solid var(--stone-100); }
@media (min-width: 768px) { .ps-nav { display: block; } }
.ps-nav__inner { display: flex; height: 3rem; align-items: center; gap: .75rem; }
.ps-nav__sep { height: 1.25rem; width: 1px; flex: none; background: var(--stone-200); }
.ps-nav__links { display: flex; align-items: center; gap: .25rem; }
.ps-nav__link {
  position: relative; border-radius: 9999px; padding: .375rem .75rem;
  font-size: .875rem; font-weight: 500; color: var(--stone-600); transition: color .2s;
}
.ps-nav__link:hover { color: var(--ink); }
.ps-nav__link::after {
  content: ""; position: absolute; inset-inline: .75rem; bottom: 0; height: 2px;
  border-radius: 9999px; background: var(--brand-500);
  transform: scaleX(0); transform-origin: left; transition: transform .2s ease-out;
}
.ps-nav__link:hover::after { transform: scaleX(1); }
.ps-nav__link.is-active { font-weight: 600; color: var(--ink); }
.ps-nav__link.is-active::after { transform: scaleX(1); }
.ps-nav__offers {
  margin-left: auto; display: inline-flex; flex: none; align-items: center; gap: .375rem;
  border-radius: 9999px; background: var(--brand-600); padding: .375rem 1rem;
  font-size: .875rem; font-weight: 600; color: #fff; box-shadow: var(--shadow-sm);
  transition: background-color .2s;
}
.ps-nav__offers:hover { background: var(--brand-700); color: #fff; }
.ps-nav__offers svg { width: .875rem; height: .875rem; }

/* Mega menu categorie */
.ps-megamenu { position: relative; flex: none; }
.ps-megamenu__trigger {
  display: inline-flex; align-items: center; gap: .5rem; border: 0;
  border-radius: 9999px; background: var(--ink); color: #fff;
  padding: .5rem 1rem; font-size: .875rem; font-weight: 600; transition: background-color .2s;
}
.ps-megamenu__trigger:hover,
.ps-megamenu[data-open="true"] .ps-megamenu__trigger { background: var(--stone-800); }
.ps-megamenu__trigger svg { width: 1rem; height: 1rem; }
.ps-megamenu__chev { transition: transform .2s; }
.ps-megamenu[data-open="true"] .ps-megamenu__chev { transform: rotate(180deg); }
.ps-megamenu__wrap {
  position: absolute; left: 0; top: 100%; z-index: var(--z-dropdown);
  width: min(95vw, 42rem); padding-top: .5rem;
  visibility: hidden; opacity: 0; transform: translateY(-4px); pointer-events: none;
  transition: opacity .2s, transform .2s, visibility .2s;
}
.ps-megamenu[data-open="true"] .ps-megamenu__wrap {
  visibility: visible; opacity: 1; transform: none; pointer-events: auto;
}
.ps-megamenu__panel {
  border-radius: var(--radius-card); border: 1px solid var(--stone-200);
  background: #fff; padding: .75rem; box-shadow: var(--shadow-xl);
}
.ps-megamenu__grid { display: grid; grid-template-columns: 1fr; gap: .25rem; }
@media (min-width: 640px) { .ps-megamenu__grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
.ps-megamenu__item {
  display: flex; align-items: center; gap: .75rem; border-radius: .75rem;
  padding: .5rem; transition: background-color .2s;
}
.ps-megamenu__item:hover { background: var(--stone-50); }
.ps-megamenu__thumb {
  position: relative; display: flex; width: 3rem; height: 3rem; flex: none;
  align-items: center; justify-content: center; overflow: hidden;
  border-radius: .5rem; background: #fff; color: var(--stone-300);
  box-shadow: inset 0 0 0 1px var(--stone-100);
}
.ps-megamenu__thumb img { width: 100%; height: 100%; object-fit: contain; padding: .25rem; transition: transform .3s; }
.ps-megamenu__item:hover .ps-megamenu__thumb img { transform: scale(1.05); }
.ps-megamenu__label { min-width: 0; flex: 1 1 auto; }
.ps-megamenu__name {
  display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-size: .875rem; font-weight: 600; color: var(--stone-800);
}
.ps-megamenu__item:hover .ps-megamenu__name { color: var(--brand-700); }
.ps-megamenu__count { font-size: .75rem; color: var(--stone-400); }
.ps-megamenu__arrow { width: 1rem; height: 1rem; flex: none; color: var(--stone-300); }
.ps-megamenu__all {
  margin-top: .5rem; display: flex; align-items: center; justify-content: center; gap: .375rem;
  border-radius: .5rem; background: var(--brand-50); padding: .625rem .75rem;
  font-size: .875rem; font-weight: 600; color: var(--brand-700); transition: background-color .2s;
}
.ps-megamenu__all:hover { background: var(--brand-100); color: var(--brand-700); }

/* ============================================================
   7. RICERCA
   ============================================================ */
.ps-search { position: relative; width: 100%; }
.ps-search__field { position: relative; display: flex; align-items: center; }
.ps-search__icon {
  pointer-events: none; position: absolute; left: 1rem;
  width: 1.25rem; height: 1.25rem; color: var(--stone-400);
}
.ps-search__input {
  height: 2.75rem; width: 100%; border-radius: 9999px;
  border: 1px solid var(--stone-300); background: #fff;
  padding: 0 1rem 0 2.75rem; font: inherit; font-size: .875rem;
  box-shadow: var(--shadow-sm); outline: none; transition: border-color .2s, box-shadow .2s;
  -webkit-appearance: none;
}
.ps-search__input:focus {
  border-color: var(--brand-500);
  box-shadow: 0 0 0 2px var(--brand-200);
}
.ps-search--with-button .ps-search__input { padding-right: 7rem; }
.ps-search__submit {
  position: absolute; right: .375rem; display: inline-flex; height: 2rem;
  align-items: center; border: 0; border-radius: 9999px; background: var(--brand-600);
  padding-inline: 1rem; font-size: .875rem; font-weight: 600; color: #fff;
  transition: background-color .2s;
}
.ps-search__submit:hover { background: var(--brand-700); }
.ps-search__results {
  position: absolute; left: 0; top: 100%; z-index: var(--z-dropdown);
  margin-top: .5rem; width: 100%; overflow: hidden;
  border-radius: var(--radius-card); border: 1px solid var(--stone-200);
  background: #fff; box-shadow: var(--shadow-xl);
}
.ps-search__results[hidden] { display: none; }
.ps-search__empty { padding: 1.5rem 1rem; text-align: center; font-size: .875rem; color: var(--stone-500); }
.ps-search__list { max-height: 70vh; overflow-y: auto; padding-block: .25rem; }
.ps-search__hit {
  display: flex; align-items: center; gap: .75rem; padding: .5rem .75rem; transition: background-color .15s;
}
.ps-search__hit:hover, .ps-search__hit.is-active { background: var(--stone-100); }
.ps-search__thumb {
  display: flex; width: 2.75rem; height: 2.75rem; flex: none; align-items: center;
  justify-content: center; overflow: hidden; border-radius: .5rem; background: var(--stone-50);
}
.ps-search__thumb img { width: 100%; height: 100%; object-fit: contain; padding: .25rem; }
.ps-search__hit-body { min-width: 0; flex: 1 1 auto; }
.ps-search__hit-name {
  display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical;
  overflow: hidden; font-size: .875rem; font-weight: 500; color: var(--stone-800);
}
.ps-search__hit-price { font-size: .75rem; color: var(--stone-500); }
.ps-search__badge {
  flex: none; border-radius: 9999px; background: var(--brand-50);
  padding: .125rem .5rem; font-size: .75rem; font-weight: 600; color: var(--brand-700);
}
.ps-search__all {
  display: block; border-top: 1px solid var(--stone-100); background: var(--stone-50);
  padding: .625rem 1rem; text-align: center; font-size: .875rem; font-weight: 600;
  color: var(--brand-700); transition: background-color .2s;
}
.ps-search__all:hover { background: var(--stone-100); color: var(--brand-700); }

/* ============================================================
   8. DRAWER MOBILE (menu)
   ============================================================ */
.ps-overlay {
  position: fixed; inset: 0; z-index: var(--z-overlay);
  background: rgb(0 0 0 / .4); border: 0; padding: 0;
  animation: ps-overlay-in .3s var(--ease-out-quart) both;
}
.ps-overlay[hidden] { display: none; }

.ps-mobilenav {
  position: fixed; left: 0; top: 0; z-index: var(--z-drawer);
  display: flex; height: 100%; width: 20rem; max-width: 85%;
  flex-direction: column; overflow-y: auto; background: #fff;
  box-shadow: var(--shadow-xl);
  animation: ps-drawer-in .3s var(--ease-out-quart) both;
}
.ps-mobilenav[hidden] { display: none; }
.ps-mobilenav__head {
  display: flex; align-items: center; justify-content: space-between;
  border-bottom: 1px solid var(--stone-200); padding: 1rem;
}
.ps-mobilenav__head img { height: 2rem; width: auto; }
.ps-mobilenav__close {
  display: inline-flex; width: 2.5rem; height: 2.5rem; align-items: center;
  justify-content: center; border: 0; border-radius: 9999px; background: transparent;
  color: var(--stone-500); transition: background-color .2s;
}
.ps-mobilenav__close:hover { background: var(--stone-100); }
.ps-mobilenav__close svg { width: 1.25rem; height: 1.25rem; }
.ps-mobilenav__list { display: flex; flex-direction: column; padding: .5rem; }
.ps-mobilenav__link {
  display: flex; align-items: center; gap: .5rem; border-radius: .5rem;
  padding: .75rem; font-size: 1rem; font-weight: 600; color: var(--stone-800);
  transition: background-color .2s, color .2s;
}
.ps-mobilenav__link:hover { background: var(--stone-100); color: var(--brand-700); }
.ps-mobilenav__link.is-offers { color: var(--brand-700); }
.ps-mobilenav__link.is-offers:hover { background: var(--brand-50); }
.ps-mobilenav__link svg { width: 1rem; height: 1rem; }
.ps-mobilenav__cats { border-top: 1px solid var(--stone-100); padding: .5rem; }
.ps-mobilenav__catlabel {
  padding: .5rem .75rem .25rem; font-size: .75rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: .05em; color: var(--stone-400);
}
.ps-mobilenav__cat {
  display: flex; align-items: center; justify-content: space-between;
  border-radius: .5rem; padding: .625rem .75rem; font-size: .875rem;
  color: var(--stone-700); transition: background-color .2s, color .2s;
}
.ps-mobilenav__cat:hover { background: var(--stone-100); color: var(--brand-700); }
.ps-mobilenav__cat svg { width: 1rem; height: 1rem; color: var(--stone-300); }
.ps-mobilenav__foot { margin-top: auto; border-top: 1px solid var(--stone-200); padding: 1rem; }
.ps-mobilenav__wa {
  display: flex; align-items: center; justify-content: center; gap: .5rem;
  border-radius: 9999px; background: var(--brand-600); padding: .75rem 1rem;
  font-size: .875rem; font-weight: 600; color: #fff; transition: background-color .2s;
}
.ps-mobilenav__wa:hover { background: var(--brand-700); color: #fff; }
.ps-mobilenav__wa svg { width: 1.25rem; height: 1.25rem; }
.ps-mobilenav__hours { margin-top: .75rem; text-align: center; font-size: .75rem; color: var(--stone-500); }

/* ============================================================
   9. HERO HOMEPAGE
   ============================================================ */
.ps-hero {
  border-bottom: 1px solid rgb(217 201 175 / .7);
  background: linear-gradient(to bottom, var(--sand-50), var(--sand-200));
}
.ps-hero__inner { padding-block: 3.5rem; }
@media (min-width: 1024px) { .ps-hero__inner { padding-block: 5rem; } }
.ps-hero__copy { max-width: 42rem; }
.ps-hero__badge {
  display: inline-flex; align-items: center; gap: .5rem; border-radius: 9999px;
  border: 1px solid var(--sand-300); background: rgb(255 255 255 / .7);
  padding: .375rem .875rem; font-size: .875rem; font-weight: 500; color: var(--stone-700);
}
.ps-tricolore { display: flex; height: .875rem; gap: 3px; }
.ps-tricolore span { width: 3px; border-radius: 9999px; }
.ps-tricolore span:nth-child(1) { background: #008c45; }
.ps-tricolore span:nth-child(2) { background: #fff; box-shadow: inset 0 0 0 1px var(--stone-200); }
.ps-tricolore span:nth-child(3) { background: #cd212a; }
.ps-hero__title {
  margin-top: 1.25rem; font-size: 2.25rem; font-weight: 700; line-height: 1.05;
  letter-spacing: -.025em; color: var(--stone-900);
}
@media (min-width: 640px) { .ps-hero__title { font-size: 3rem; } }
@media (min-width: 1024px) { .ps-hero__title { font-size: 3.75rem; } }
.ps-hero__lede {
  margin-top: 1.25rem; max-width: 36rem; font-size: 1.125rem;
  line-height: 1.65; color: var(--stone-600);
}
.ps-hero__cta { margin-top: 2rem; display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }
.ps-hero__shelf { margin-top: 3rem; }
@media (min-width: 1024px) { .ps-hero__shelf { margin-top: 3.5rem; } }
.ps-hero__shelf-head {
  margin-bottom: 1rem; display: flex; align-items: flex-end; justify-content: space-between;
}
.ps-hero__shelf-head h2 { font-size: .875rem; font-weight: 600; color: var(--stone-500); }
.ps-hero__shelf-link { font-size: .875rem; font-weight: 500; color: var(--brand-700); }
.ps-hero__shelf-link:hover { text-decoration: underline; color: var(--brand-700); }
.ps-hero__tiles {
  display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: .75rem;
}
@media (min-width: 640px) { .ps-hero__tiles { grid-template-columns: repeat(4, minmax(0,1fr)); gap: 1rem; } }
.ps-tile {
  display: flex; flex-direction: column; overflow: hidden;
  border-radius: var(--radius-card); border: 1px solid rgb(217 201 175 / .7);
  background: #fff; box-shadow: var(--shadow-sm); transition: transform .2s, box-shadow .2s;
}
.ps-tile:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.ps-tile__media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; }
.ps-tile__media img { width: 100%; height: 100%; object-fit: contain; padding: 1rem; transition: transform .3s; }
.ps-tile:hover .ps-tile__media img { transform: scale(1.05); }
.ps-tile__body {
  display: flex; flex: 1 1 auto; flex-direction: column; gap: .25rem;
  border-top: 1px solid rgb(217 201 175 / .5); padding: .75rem;
}
.ps-tile__name {
  display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden;
  font-size: .875rem; font-weight: 500; color: var(--stone-800);
}
.ps-tile:hover .ps-tile__name { color: var(--brand-700); }

.ps-badge-off {
  position: absolute; left: .75rem; top: .75rem; z-index: 10;
  border-radius: 9999px; background: var(--brand-600); padding: .125rem .5rem;
  font-size: .75rem; font-weight: 700; color: #fff;
}

/* ============================================================
   10. TRUST BAR
   ============================================================ */
.ps-trust { border-block: 1px solid var(--stone-200); background: #fff; }
.ps-trust__list {
  display: grid; grid-template-columns: repeat(2, minmax(0,1fr));
  column-gap: 1.5rem; row-gap: 1.25rem; padding-block: 1.5rem;
}
@media (min-width: 1024px) {
  .ps-trust__list { grid-template-columns: repeat(4, minmax(0,1fr)); padding-block: 1.75rem; }
}
.ps-trust__item { display: flex; align-items: center; gap: .75rem; }
.ps-trust__icon {
  display: flex; width: 2.75rem; height: 2.75rem; flex: none; align-items: center;
  justify-content: center; border-radius: 9999px; background: var(--brand-50); color: var(--brand-700);
}
.ps-trust__icon svg { width: 1.5rem; height: 1.5rem; }
.ps-trust__title { display: block; font-size: .875rem; font-weight: 600; line-height: 1.25; color: var(--ink); }
.ps-trust__sub { display: block; font-size: .75rem; line-height: 1.3; color: var(--stone-500); }

/* Blocco trust compatto (scheda prodotto) */
.ps-ptrust { border-radius: var(--radius-card); border: 1px solid var(--stone-200); background: #fff; }
.ps-ptrust li { display: flex; align-items: center; gap: .75rem; padding: .75rem 1rem; }
.ps-ptrust li + li { border-top: 1px solid var(--stone-100); }
.ps-ptrust svg { width: 1.25rem; height: 1.25rem; flex: none; color: var(--brand-700); }
.ps-ptrust__t { display: block; font-size: .875rem; font-weight: 500; line-height: 1.25; color: var(--ink); }
.ps-ptrust__s { display: block; font-size: .75rem; line-height: 1.3; color: var(--stone-500); }
.ps-ptrust a { font-weight: 500; color: var(--brand-700); }
.ps-ptrust a:hover { text-decoration: underline; color: var(--brand-700); }

/* ============================================================
   11. SECTION HEADING + PAGE HEADER
   ============================================================ */
.ps-secthead {
  display: flex; flex-direction: column; gap: .5rem;
}
@media (min-width: 640px) {
  .ps-secthead { flex-direction: row; align-items: flex-end; justify-content: space-between; gap: 1.5rem; }
}
.ps-secthead--mb { margin-bottom: 1.5rem; }
.ps-secthead__text { max-width: 42rem; }
.ps-secthead__title {
  font-size: 1.5rem; font-weight: 700; letter-spacing: -.025em; color: var(--stone-900);
  text-wrap: pretty;
}
@media (min-width: 1024px) { .ps-secthead__title { font-size: 1.75rem; } }
.ps-secthead__desc { margin-top: .375rem; color: var(--stone-600); }
.ps-secthead__action {
  display: inline-flex; flex: none; align-items: center; gap: .375rem;
  font-size: .875rem; font-weight: 600; color: var(--brand-700); transition: color .2s;
}
.ps-secthead__action:hover { color: var(--brand-800); }
.ps-secthead__action svg { width: .875rem; height: .875rem; transition: transform .2s; }
.ps-secthead__action:hover svg { transform: translateX(2px); }

.ps-pagehead { padding-top: 2rem; }
@media (min-width: 1024px) { .ps-pagehead { padding-top: 3rem; } }
.ps-crumbs { margin-bottom: 1.25rem; font-size: .875rem; }
.ps-crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem; color: var(--stone-500); }
.ps-crumbs li { display: flex; align-items: center; gap: .375rem; }
.ps-crumbs a { transition: color .2s; }
.ps-crumbs a:hover { color: var(--brand-700); }
.ps-crumbs__current { font-weight: 500; color: var(--stone-700); }
.ps-crumbs svg { width: .75rem; height: .75rem; color: var(--stone-400); }
.ps-pagehead__badge {
  margin-bottom: .75rem; display: inline-flex; align-items: center; border-radius: 9999px;
  background: var(--brand-600); padding: .25rem .75rem; font-size: .875rem; font-weight: 700; color: #fff;
}
.ps-pagehead__title {
  max-width: 48rem; font-size: 1.875rem; font-weight: 800; line-height: 1.1;
  letter-spacing: -.025em; color: var(--stone-900);
}
@media (min-width: 640px) { .ps-pagehead__title { font-size: 2.25rem; } }
.ps-pagehead__lede {
  margin-top: .75rem; max-width: 36rem; font-size: 1.125rem;
  line-height: 1.65; color: var(--stone-600); text-wrap: pretty;
}
.ps-pagehead__extra { margin-top: 1.5rem; }

/* ============================================================
   12. CARD PRODOTTO / CATEGORIA
   ============================================================ */
.ps-card {
  position: relative; display: flex; flex-direction: column; overflow: hidden;
  border-radius: var(--radius-card); border: 1px solid var(--stone-200); background: #fff;
  transition: border-color .2s, box-shadow .2s;
}
.ps-card:hover { border-color: var(--stone-300); box-shadow: var(--shadow-md); }
.ps-card__link { display: flex; flex: 1 1 auto; flex-direction: column; }
.ps-card__media { position: relative; aspect-ratio: 1 / 1; overflow: hidden; background: var(--stone-50); }
.ps-card__media img {
  width: 100%; height: 100%; object-fit: contain; padding: .75rem; transition: transform .3s;
}
.ps-card:hover .ps-card__media img { transform: scale(1.03); }
.ps-card__media.is-out img { opacity: .6; }
.ps-card__noimg {
  display: flex; height: 100%; align-items: center; justify-content: center;
  color: var(--stone-300); font-size: .875rem;
}
.ps-card__off {
  position: absolute; left: .75rem; top: .75rem; border-radius: 9999px;
  background: var(--brand-600); padding: .25rem .625rem; font-size: .75rem; font-weight: 700; color: #fff;
}
.ps-card__out {
  position: absolute; right: .75rem; top: .75rem; border-radius: 9999px;
  background: var(--stone-700); padding: .25rem .625rem; font-size: .75rem; font-weight: 500; color: #fff;
}
.ps-card__body { display: flex; flex: 1 1 auto; flex-direction: column; gap: .375rem; padding: 1rem; }
.ps-card__title {
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  font-size: .875rem; font-weight: 500; line-height: 1.35; color: var(--stone-800);
}
.ps-card:hover .ps-card__title { color: var(--brand-700); }
.ps-card__price {
  margin-top: auto; display: flex; flex-wrap: wrap; align-items: baseline; column-gap: .5rem;
}
.ps-card__foot { padding: 0 1rem 1rem; }
.ps-price { font-size: 1rem; font-weight: 700; color: var(--ink); }
.ps-price--old { font-size: .875rem; color: var(--stone-400); text-decoration: line-through; }
.ps-price--vat { font-size: .75rem; font-weight: 500; color: var(--stone-500); }
.ps-lowstock { font-size: .75rem; font-weight: 500; color: var(--amber-700); }
.ps-minqty {
  margin-top: .125rem; display: inline-flex; width: fit-content; align-items: center; gap: .25rem;
  border-radius: 9999px; background: var(--amber-50); padding: .125rem .5rem;
  font-size: .75rem; font-weight: 600; color: var(--amber-800);
  box-shadow: inset 0 0 0 1px var(--amber-200);
}

.ps-catcard {
  display: flex; flex-direction: column; overflow: hidden;
  border-radius: var(--radius-card); border: 1px solid var(--stone-200); background: #fff;
  transition: border-color .2s, box-shadow .2s;
}
.ps-catcard:hover { border-color: var(--stone-300); box-shadow: var(--shadow-md); }
.ps-catcard__media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--stone-50); }
.ps-catcard__media img { width: 100%; height: 100%; object-fit: contain; padding: 1rem; transition: transform .3s; }
.ps-catcard:hover .ps-catcard__media img { transform: scale(1.05); }
.ps-catcard__noimg { display: flex; height: 100%; align-items: center; justify-content: center; color: var(--stone-300); }
.ps-catcard__noimg svg { width: 3rem; height: 3rem; }
.ps-catcard__body {
  display: flex; align-items: center; justify-content: space-between; gap: .5rem;
  border-top: 1px solid var(--stone-100); padding: 1rem;
}
.ps-catcard__name { font-size: 1rem; font-weight: 600; color: var(--stone-800); transition: color .2s; }
.ps-catcard:hover .ps-catcard__name { color: var(--brand-700); }
.ps-catcard__count { flex: none; font-size: .75rem; font-weight: 500; color: var(--stone-500); }

/* Stelle rating */
.ps-stars { display: inline-flex; align-items: center; gap: .375rem; }
.ps-stars__wrap { position: relative; display: inline-flex; }
.ps-stars__base { display: flex; color: var(--stone-300); }
.ps-stars__fill {
  position: absolute; inset: 0; display: flex; overflow: hidden; color: var(--amber-500);
}
.ps-stars__fill > span { display: flex; flex: none; }
.ps-stars svg { width: .875rem; height: .875rem; }
.ps-stars--md svg { width: 1rem; height: 1rem; }
.ps-stars__count { font-size: .75rem; font-weight: 500; color: var(--stone-500); }

/* ============================================================
   13. TOOLBAR LISTING + PAGINAZIONE
   ============================================================ */
.ps-toolbar__row {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem;
}
.ps-toolbar__count { font-size: .875rem; color: var(--stone-500); }
.ps-toolbar__actions { display: flex; align-items: center; gap: .5rem; }
.ps-tchip {
  display: inline-flex; align-items: center; gap: .375rem; border: 0; border-radius: 9999px;
  background: #fff; padding: .375rem .75rem; font-size: .875rem; font-weight: 500;
  color: var(--stone-700); box-shadow: inset 0 0 0 1px var(--stone-200); transition: background-color .2s;
}
.ps-tchip:hover { background: var(--stone-100); }
.ps-tchip.is-active { background: var(--brand-600); color: #fff; box-shadow: inset 0 0 0 1px var(--brand-600); }
.ps-tchip svg { width: 1rem; height: 1rem; }
.ps-tchip__n {
  display: inline-flex; width: 1.25rem; height: 1.25rem; align-items: center; justify-content: center;
  border-radius: 9999px; background: #fff; font-size: .75rem; font-weight: 700; color: var(--brand-700);
}
.ps-toolbar__sort { display: flex; align-items: center; gap: .5rem; font-size: .875rem; color: var(--stone-500); }
.ps-toolbar__sort span { display: none; }
@media (min-width: 640px) { .ps-toolbar__sort span { display: inline; } }
.ps-select {
  height: 2.25rem; border-radius: 9999px; border: 1px solid var(--stone-300); background: #fff;
  padding-inline: .75rem; font: inherit; font-size: .875rem; font-weight: 500; color: var(--stone-700);
  outline: none; transition: border-color .2s, box-shadow .2s;
}
.ps-select:focus { border-color: var(--brand-500); box-shadow: 0 0 0 2px var(--brand-200); }
.ps-toolbar__panel {
  margin-top: .75rem; display: flex; flex-wrap: wrap; align-items: flex-end;
  column-gap: 1.5rem; row-gap: 1rem;
  border-radius: var(--radius-card); border: 1px solid var(--stone-200); background: #fff; padding: 1rem;
}
.ps-toolbar__panel[hidden] { display: none; }
.ps-field { font-size: .875rem; color: var(--stone-600); }
.ps-field span { margin-bottom: .25rem; display: block; font-size: .75rem; font-weight: 500; color: var(--stone-500); }
.ps-input {
  height: 2.25rem; border-radius: .5rem; border: 1px solid var(--stone-300); background: #fff;
  padding-inline: .75rem; font: inherit; font-size: .875rem; outline: none; transition: border-color .2s, box-shadow .2s;
}
.ps-input:focus { border-color: var(--brand-500); box-shadow: 0 0 0 2px var(--brand-200); }
.ps-input--num { width: 6rem; }
.ps-toolbar__reset {
  display: inline-flex; align-items: center; gap: .25rem; border: 0; background: none;
  font-size: .875rem; font-weight: 500; color: var(--stone-500); transition: color .2s;
}
.ps-toolbar__reset:hover { color: var(--brand-700); }
.ps-toolbar__reset svg { width: 1rem; height: 1rem; }

.ps-pagination { margin-top: 2.5rem; display: flex; align-items: center; justify-content: center; gap: .25rem; }
.ps-pagination .page-numbers {
  display: inline-flex; height: 2.5rem; min-width: 2.5rem; align-items: center; justify-content: center;
  border-radius: 9999px; padding-inline: .75rem; font-size: .875rem; font-weight: 500;
  color: var(--stone-700); box-shadow: inset 0 0 0 1px var(--stone-200); transition: background-color .2s;
}
.ps-pagination .page-numbers:hover { background: var(--stone-100); }
.ps-pagination .page-numbers.current { background: var(--brand-600); color: #fff; box-shadow: none; }
.ps-pagination .page-numbers.dots { box-shadow: none; color: var(--stone-400); }
.ps-pagination .prev, .ps-pagination .next { box-shadow: none; color: var(--stone-600); }

.ps-empty { padding-block: 4rem; text-align: center; color: var(--stone-500); }

/* ============================================================
   14. SCHEDA PRODOTTO
   ============================================================ */
.ps-product { display: grid; gap: 2rem; }
@media (min-width: 1024px) { .ps-product { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 3rem; } }

.ps-gallery { display: flex; flex-direction: column; gap: .75rem; }
.ps-gallery__main {
  position: relative; aspect-ratio: 1 / 1; overflow: hidden; cursor: zoom-in;
  border-radius: var(--radius-card); border: 1px solid var(--stone-200); background: #fff;
}
.ps-gallery__main img {
  width: 100%; height: 100%; object-fit: contain; padding: 1rem;
  transition: transform .2s ease-out; transform-origin: center;
}
.ps-gallery__thumbs { display: flex; flex-wrap: wrap; gap: .5rem; }
.ps-gallery__thumb {
  position: relative; width: 4rem; height: 4rem; overflow: hidden; padding: 0;
  border-radius: .5rem; border: 1px solid var(--stone-200); background: #fff; transition: border-color .2s, box-shadow .2s;
}
.ps-gallery__thumb:hover { border-color: var(--stone-300); }
.ps-gallery__thumb.is-active { border-color: var(--brand-600); box-shadow: 0 0 0 2px var(--brand-200); }
.ps-gallery__thumb img { width: 100%; height: 100%; object-fit: contain; padding: .25rem; }
.ps-gallery__empty {
  display: flex; aspect-ratio: 1 / 1; align-items: center; justify-content: center;
  border-radius: var(--radius-card); border: 1px solid var(--stone-200);
  background: var(--stone-50); color: var(--stone-300);
}

.ps-pdp__cat { font-size: .875rem; font-weight: 500; color: var(--brand-700); }
.ps-pdp__cat:hover { text-decoration: underline; color: var(--brand-700); }
.ps-pdp__title {
  margin-top: .25rem; font-size: 1.875rem; font-weight: 800; letter-spacing: -.025em; color: var(--stone-900);
}
.ps-pdp__priceblock { margin-top: 1rem; display: flex; flex-wrap: wrap; align-items: baseline; column-gap: .75rem; row-gap: .25rem; }
.ps-pdp__price { font-size: 1.875rem; font-weight: 700; color: var(--ink); }
.ps-pdp__old { font-size: 1.125rem; color: var(--stone-400); text-decoration: line-through; }
.ps-pdp__off {
  border-radius: 9999px; background: var(--brand-600); padding: .125rem .5rem;
  font-size: .875rem; font-weight: 700; color: #fff;
}
.ps-pdp__vat { font-size: .875rem; font-weight: 500; color: var(--stone-500); }
.ps-pdp__inclvat { margin-top: .125rem; font-size: .875rem; color: var(--stone-500); }
.ps-pdp__save { margin-top: .25rem; font-size: .875rem; font-weight: 600; color: var(--green-700); }
.ps-pdp__stock { margin-top: .5rem; font-size: .875rem; }
.ps-pdp__in { font-weight: 500; color: var(--green-700); }
.ps-pdp__low { font-weight: 500; color: var(--amber-700); }
.ps-pdp__oos { font-weight: 500; color: var(--stone-500); }
.ps-pdp__short { margin-top: 1.25rem; color: var(--stone-700); }
.ps-pdp__short p { margin-bottom: .5rem; }
.ps-pdp__short ul { list-style: disc; padding-left: 1.25rem; }
.ps-pdp__sku { margin-top: 1.5rem; font-size: .875rem; color: var(--stone-400); }
.ps-pdp__minorder {
  margin-top: 1.25rem; display: flex; align-items: center; gap: .5rem; border-radius: .5rem;
  background: var(--amber-50); padding: .625rem .75rem; font-size: .875rem; font-weight: 600;
  color: var(--amber-800); box-shadow: inset 0 0 0 1px var(--amber-200);
}
.ps-pdp__minorder svg { width: 1.25rem; height: 1.25rem; flex: none; }
.ps-pdp__error { margin-top: .5rem; font-size: .875rem; font-weight: 500; color: var(--red-600); }
.ps-pdp__error[hidden] { display: none; }

.ps-delivery {
  margin-top: .75rem; display: flex; align-items: flex-start; gap: .5rem;
  border-radius: .5rem; background: var(--stone-50); padding: .75rem;
  font-size: .875rem; color: var(--stone-700);
}
.ps-delivery svg { margin-top: .125rem; width: 1rem; height: 1rem; flex: none; color: var(--brand-700); }
.ps-delivery strong { color: var(--ink); }
.ps-delivery--compact {
  margin: 0 0 .625rem; padding: .625rem .75rem;
  box-shadow: inset 0 0 0 1px var(--stone-200); background: var(--stone-50);
}
.ps-delivery--urgent { background: rgb(252 244 243 / .6); box-shadow: inset 0 0 0 1px var(--brand-100); }
.ps-delivery__urgent { display: inline-flex; align-items: center; gap: .25rem; font-weight: 600; color: var(--brand-700); }
.ps-delivery__dot { width: .375rem; height: .375rem; border-radius: 9999px; background: var(--brand-500); animation: ps-pulse 2s ease-in-out infinite; }

/* Selettori variazione */
.ps-variant { margin-top: 1.25rem; }
.ps-variant__label { margin-bottom: .5rem; display: block; font-size: .875rem; font-weight: 500; color: var(--stone-700); }
.ps-variant__opts { display: flex; flex-wrap: wrap; gap: .5rem; }
.ps-variant__opt {
  border-radius: .5rem; border: 1px solid var(--stone-300); background: #fff;
  padding: .5rem .75rem; font-size: .875rem; color: var(--stone-700); transition: border-color .2s;
}
.ps-variant__opt:hover { border-color: var(--stone-400); }
.ps-variant__opt.is-active { border-color: var(--brand-600); background: var(--brand-50); color: var(--brand-800); }
.ps-variant__opt.is-unavailable { color: var(--stone-400); text-decoration: line-through; }

/* Quantità + CTA */
.ps-buyrow { margin-top: 1rem; display: flex; align-items: stretch; gap: .75rem; }
.ps-qty {
  display: flex; align-items: center; border-radius: 9999px; border: 1px solid var(--stone-300); background: #fff;
}
.ps-qty button {
  width: 2.75rem; height: 2.75rem; border: 0; background: none;
  font-size: 1.125rem; color: var(--stone-600); border-radius: 9999px;
}
.ps-qty button:disabled { opacity: .4; cursor: not-allowed; }
.ps-qty__val { width: 2rem; text-align: center; font-size: .875rem; font-weight: 500; font-variant-numeric: tabular-nums; }
.ps-buyrow .ps-btn { flex: 1 1 auto; }
.ps-buynow { margin-top: .75rem; }

/* Barra acquisto sticky mobile */
.ps-stickybuy {
  position: fixed; inset-inline: 0; bottom: 0; z-index: var(--z-sticky);
  border-top: 1px solid var(--stone-200); background: rgb(255 255 255 / .95);
  backdrop-filter: blur(8px); transform: translateY(100%); transition: transform .3s;
}
.ps-stickybuy.is-visible { transform: none; }
@media (min-width: 768px) { .ps-stickybuy { display: none; } }
.ps-stickybuy__inner { display: flex; align-items: center; gap: .75rem; padding-block: .75rem; }
.ps-stickybuy__price { min-width: 0; font-size: 1rem; font-weight: 700; color: var(--ink); }
.ps-stickybuy__price span { margin-left: .25rem; font-size: .75rem; font-weight: 400; color: var(--stone-500); }
.ps-stickybuy .ps-btn { margin-left: auto; flex: none; }

.ps-prose-desc { color: var(--stone-700); line-height: 1.7; }
.ps-prose-desc h2 { margin-top: 1rem; font-size: 1.125rem; font-weight: 600; }
.ps-prose-desc p { margin-bottom: .75rem; }
.ps-prose-desc ul { list-style: disc; padding-left: 1.25rem; }
.ps-prose-desc li { margin-bottom: .25rem; }
.ps-prose-desc img { border-radius: .5rem; }

.ps-h2 { font-size: 1.25rem; font-weight: 700; letter-spacing: -.02em; color: var(--stone-900); }

/* ============================================================
   15. CART DRAWER
   ============================================================ */
.ps-cart-overlay {
  position: fixed; inset: 0; z-index: var(--z-overlay); background: rgb(0 0 0 / .4);
  opacity: 0; pointer-events: none; transition: opacity .3s;
}
.ps-cart-overlay.is-open { opacity: 1; pointer-events: auto; }
.ps-cartdrawer {
  position: fixed; right: 0; top: 0; z-index: var(--z-drawer);
  display: flex; height: 100%; width: 100%; max-width: 28rem; flex-direction: column;
  background: #fff; box-shadow: var(--shadow-xl); transform: translateX(100%); transition: transform .3s;
}
.ps-cartdrawer.is-open { transform: none; }
.ps-cartdrawer__head {
  display: flex; align-items: center; justify-content: space-between;
  border-bottom: 1px solid var(--stone-200); padding: 1rem;
}
.ps-cartdrawer__head h2 { font-size: 1.125rem; font-weight: 700; }
.ps-cartdrawer__head h2 span { color: var(--stone-500); }
.ps-cartdrawer__close {
  display: inline-flex; width: 2.25rem; height: 2.25rem; align-items: center; justify-content: center;
  border: 0; border-radius: 9999px; background: none; color: var(--stone-500); transition: background-color .2s, color .2s;
}
.ps-cartdrawer__close:hover { background: var(--stone-100); color: var(--ink); }
.ps-cartdrawer__close svg { width: 1.25rem; height: 1.25rem; }
.ps-cartdrawer__bar { height: 2px; width: 100%; background: var(--brand-600); animation: ps-pulse 1.2s ease-in-out infinite; }
.ps-cartdrawer__bar[hidden] { display: none; }
.ps-cartdrawer__body { flex: 1 1 auto; overflow-y: auto; overscroll-behavior: contain; }
.ps-cartdrawer__empty {
  display: flex; height: 100%; flex-direction: column; align-items: center; justify-content: center;
  gap: 1.25rem; padding: 1.5rem; text-align: center;
}
.ps-cartdrawer__empty-icon {
  display: flex; width: 4rem; height: 4rem; align-items: center; justify-content: center;
  border-radius: 9999px; background: var(--stone-100); color: var(--stone-400);
}
.ps-cartdrawer__empty-icon svg { width: 2rem; height: 2rem; }
.ps-cartdrawer__empty p:first-child { font-weight: 600; color: var(--ink); }
.ps-cartdrawer__empty p + p { margin-top: .25rem; font-size: .875rem; color: var(--stone-500); }
.ps-cartdrawer__empty-actions { display: flex; width: 100%; max-width: 20rem; flex-direction: column; gap: .5rem; }

.ps-cartline { display: flex; gap: .75rem; padding: .75rem; }
@media (min-width: 640px) { .ps-cartline { padding: 1rem; } }
.ps-cartline + .ps-cartline { border-top: 1px solid var(--stone-100); }
.ps-cartline__img {
  position: relative; width: 4rem; height: 4rem; flex: none; overflow: hidden;
  border-radius: .5rem; border: 1px solid var(--stone-200); background: #fff;
}
@media (min-width: 640px) { .ps-cartline__img { width: 5rem; height: 5rem; } }
.ps-cartline__img img { width: 100%; height: 100%; object-fit: contain; padding: .25rem; }
.ps-cartline__body { display: flex; flex: 1 1 auto; flex-direction: column; min-width: 0; }
.ps-cartline__name {
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  font-size: .875rem; font-weight: 500; color: var(--stone-800);
}
.ps-cartline__name:hover { color: var(--brand-700); }
.ps-cartline__meta { font-size: .75rem; color: var(--stone-500); }
.ps-cartline__prices { margin-top: .125rem; display: flex; align-items: baseline; gap: .5rem; }
.ps-cartline__total { font-size: .875rem; font-weight: 600; color: var(--ink); }
.ps-cartline__unit { font-size: .75rem; color: var(--stone-500); }
.ps-cartline__foot { margin-top: auto; padding-top: .5rem; display: flex; align-items: center; justify-content: space-between; }
.ps-cartqty { display: flex; align-items: center; border-radius: 9999px; border: 1px solid var(--stone-300); }
.ps-cartqty button {
  display: flex; width: 2rem; height: 2rem; align-items: center; justify-content: center;
  border: 0; background: none; color: var(--stone-600); transition: background-color .2s;
}
.ps-cartqty button:first-child { border-radius: 9999px 0 0 9999px; }
.ps-cartqty button:last-child { border-radius: 0 9999px 9999px 0; }
.ps-cartqty button:hover:not(:disabled) { background: var(--stone-100); }
.ps-cartqty button:disabled { opacity: .4; cursor: not-allowed; }
.ps-cartqty__val { width: 2rem; text-align: center; font-size: .875rem; font-weight: 500; font-variant-numeric: tabular-nums; }
.ps-cartline__remove { border: 0; background: none; font-size: .75rem; font-weight: 500; color: var(--stone-500); transition: color .2s; }
.ps-cartline__remove:hover { color: var(--brand-700); }

.ps-cartdrawer__foot { border-top: 1px solid var(--stone-200); background: #fff; padding: .75rem 1rem; }
.ps-cartdrawer__row { display: flex; align-items: baseline; justify-content: space-between; }
.ps-cartdrawer__row dt, .ps-cartdrawer__row .lbl { color: var(--stone-600); font-size: .875rem; }
.ps-cartdrawer__row dd { font-weight: 500; font-size: .875rem; }
.ps-cartdrawer__grand { font-weight: 700; color: var(--ink); }
.ps-cartdrawer__grandval { font-size: 1.125rem; font-weight: 700; color: var(--ink); }
.ps-cartdrawer__note { margin-top: .375rem; font-size: .75rem; color: var(--stone-500); }
.ps-cartdrawer__badges {
  margin-top: .625rem; display: flex; align-items: center; justify-content: center;
  column-gap: 1rem; row-gap: .25rem; font-size: .75rem; color: var(--stone-500); flex-wrap: wrap;
}
.ps-cartdrawer__badges span, .ps-cartdrawer__badges button {
  display: inline-flex; align-items: center; gap: .375rem; border: 0; background: none; color: var(--stone-500);
}
.ps-cartdrawer__badges svg { width: .875rem; height: .875rem; }
.ps-cartdrawer__badges button:hover { color: var(--brand-700); text-decoration: underline; }
.ps-cartdrawer__notice {
  display: flex; align-items: flex-start; gap: .5rem; border-bottom: 1px solid var(--amber-200);
  background: var(--amber-50); padding: .75rem 1rem; font-size: .875rem; color: var(--amber-900);
}
.ps-cartdrawer__notice[hidden] { display: none; }
.ps-cartdrawer__notice button { border: 0; background: none; flex: none; color: var(--amber-700); }
.ps-cartdrawer__notice svg { width: 1rem; height: 1rem; }

/* ============================================================
   16. COOKIE BANNER (CMP)
   ============================================================ */
.ps-cookie {
  position: fixed; inset-inline: 0; bottom: 0; z-index: var(--z-cookie);
  border-top: 1px solid var(--stone-200); background: rgb(255 255 255 / .97);
  box-shadow: 0 -8px 30px -12px rgb(0 0 0 / .15); backdrop-filter: blur(8px);
}
.ps-cookie[hidden] { display: none; }
.ps-cookie__inner { display: flex; flex-direction: column; gap: 1rem; padding-block: 1.25rem; }
@media (min-width: 1024px) { .ps-cookie__inner { flex-direction: row; align-items: center; gap: 2rem; } }
.ps-cookie__text { min-width: 0; flex: 1 1 auto; }
.ps-cookie__text h2 { font-size: 1rem; font-weight: 700; color: var(--stone-900); }
.ps-cookie__text p { margin-top: .25rem; font-size: .875rem; line-height: 1.6; color: var(--stone-600); }
.ps-cookie__text a { font-weight: 500; color: var(--brand-700); text-decoration: underline; }
.ps-cookie__actions { display: flex; flex: none; flex-direction: column; gap: .5rem; }
@media (min-width: 640px) { .ps-cookie__actions { flex-direction: row; } }
.ps-cookie__btn {
  display: inline-flex; min-height: 2.75rem; flex: 1 1 auto; align-items: center; justify-content: center;
  border: 0; border-radius: 9999px; padding-inline: 1.25rem; font-size: .875rem; font-weight: 600;
  transition: background-color .2s, border-color .2s;
}
@media (min-width: 640px) { .ps-cookie__btn { flex: none; } }
.ps-cookie__btn--reject { background: var(--stone-800); color: #fff; }
.ps-cookie__btn--reject:hover { background: var(--stone-900); }
.ps-cookie__btn--custom { border: 1px solid var(--stone-300); background: #fff; color: var(--stone-800); }
.ps-cookie__btn--custom:hover { border-color: var(--stone-400); }
.ps-cookie__btn--accept { background: var(--brand-600); color: #fff; }
.ps-cookie__btn--accept:hover { background: var(--brand-700); }

.ps-cookiedlg {
  margin: auto; width: calc(100% - 2rem); max-width: 32rem; padding: 0;
  border: 0; border-radius: 1rem; background: #fff; color: var(--ink); box-shadow: var(--shadow-xl);
}
.ps-cookiedlg::backdrop { background: rgb(0 0 0 / .5); backdrop-filter: blur(2px); }
.ps-cookiedlg__head {
  display: flex; align-items: center; justify-content: space-between;
  border-bottom: 1px solid var(--stone-200); padding: 1rem 1.5rem;
}
.ps-cookiedlg__head h2 { font-size: 1.125rem; font-weight: 700; color: var(--stone-900); }
.ps-cookiedlg__body { max-height: 60vh; overflow-y: auto; padding: 1.25rem 1.5rem; }
.ps-cookiedlg__body > p { font-size: .875rem; line-height: 1.6; color: var(--stone-600); }
.ps-cookiedlg__cats { margin-top: 1.25rem; display: flex; flex-direction: column; gap: .75rem; }
.ps-cookiecat {
  display: flex; align-items: flex-start; gap: 1rem; border-radius: .75rem;
  border: 1px solid var(--stone-200); padding: 1rem;
}
.ps-cookiecat__t { font-size: .875rem; font-weight: 600; color: var(--stone-900); }
.ps-cookiecat__d { margin-top: .25rem; font-size: .875rem; line-height: 1.6; color: var(--stone-600); }
.ps-cookiecat__locked {
  flex: none; border-radius: 9999px; background: var(--stone-100); padding: .25rem .75rem;
  font-size: .75rem; font-weight: 600; color: var(--stone-600);
}
.ps-switch {
  position: relative; margin-top: .125rem; display: inline-flex; height: 1.5rem; width: 2.75rem;
  flex: none; border: 0; border-radius: 9999px; background: var(--stone-300); transition: background-color .2s;
}
.ps-switch[aria-checked="true"] { background: var(--brand-600); }
.ps-switch::after {
  content: ""; position: absolute; top: .125rem; left: .125rem; width: 1.25rem; height: 1.25rem;
  border-radius: 9999px; background: #fff; box-shadow: var(--shadow-sm); transition: left .2s;
}
.ps-switch[aria-checked="true"]::after { left: 1.375rem; }
.ps-cookiedlg__foot {
  display: flex; flex-direction: column; gap: .5rem;
  border-top: 1px solid var(--stone-200); padding: 1rem 1.5rem;
}
@media (min-width: 640px) { .ps-cookiedlg__foot { flex-direction: row; justify-content: flex-end; } }

/* ============================================================
   17. FOOTER
   ============================================================ */
.ps-footer { margin-top: 4rem; border-top: 1px solid var(--stone-200); background: #fff; }
.ps-footer__cols {
  display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 2rem; padding-block: 3rem;
}
@media (min-width: 768px) { .ps-footer__cols { grid-template-columns: repeat(4, minmax(0,1fr)); } }
.ps-footer__brand { grid-column: span 2; }
@media (min-width: 768px) { .ps-footer__brand { grid-column: span 1; } }
.ps-footer__brand img { height: 2.5rem; width: auto; }
.ps-footer__brand p { margin-top: .75rem; max-width: 20rem; font-size: .875rem; color: var(--stone-600); }
.ps-footer h3 { font-size: .875rem; font-weight: 600; color: var(--stone-900); }
.ps-footer ul { margin-top: .75rem; display: flex; flex-direction: column; gap: .5rem; font-size: .875rem; color: var(--stone-600); }
.ps-footer a:hover { color: var(--brand-700); }
.ps-footer__inline { display: inline-flex; align-items: center; gap: .375rem; }
.ps-footer__inline svg { width: 1rem; height: 1rem; }
.ps-footer__muted { color: var(--stone-500); }
.ps-footer__linkbtn { border: 0; background: none; padding: 0; text-align: left; color: inherit; font: inherit; }
.ps-footer__linkbtn:hover { color: var(--brand-700); }
.ps-footer__bottom { border-top: 1px solid var(--stone-100); }
.ps-footer__bottom-inner {
  display: flex; flex-direction: column; align-items: center; justify-content: space-between;
  gap: .5rem; padding-block: 1.25rem; font-size: .75rem; color: var(--stone-500);
}
@media (min-width: 640px) { .ps-footer__bottom-inner { flex-direction: row; } }
.ps-footer__bottom-inner p { margin: 0; }
/* Credito di chi ha fatto il sito: presente e leggibile, senza gridare. */
.ps-footer__credit a {
  color: var(--stone-600); text-decoration: none;
  border-bottom: 1px solid var(--stone-300); transition: color .2s, border-color .2s;
}
.ps-footer__credit a:hover { color: var(--brand-700); border-color: var(--brand-400); }

/* ============================================================
   18. PAGINA SERVIZI / CONTATTI / LEGALI
   ============================================================ */
.ps-svc-top { margin-top: 2rem; display: grid; gap: 1.25rem; }
@media (min-width: 1024px) { .ps-svc-top { grid-template-columns: repeat(5, minmax(0,1fr)); } }
.ps-svc-compass {
  overflow: hidden; border-radius: 1rem; background: #fff; box-shadow: inset 0 0 0 1px var(--stone-200);
}
@media (min-width: 1024px) { .ps-svc-compass { grid-column: span 3; } }
.ps-svc-compass__media { position: relative; aspect-ratio: 16 / 9; }
@media (min-width: 640px) { .ps-svc-compass__media { aspect-ratio: 2.4 / 1; } }
.ps-svc-compass__media img { width: 100%; height: 100%; object-fit: cover; object-position: top; }
.ps-svc-compass__body { padding: 1.5rem; }
@media (min-width: 1024px) { .ps-svc-compass__body { padding: 1.75rem; } }
.ps-svc-compass__body h3 { font-size: 1.25rem; font-weight: 700; letter-spacing: -.02em; color: var(--stone-900); }
.ps-svc-compass__body p { margin-top: .5rem; max-width: 32rem; font-size: .94rem; line-height: 1.65; color: var(--stone-600); }
.ps-svc-compass__cta { margin-top: 1.25rem; display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }
.ps-svc-compass__cta a.ps-link { font-size: .875rem; font-weight: 500; color: var(--brand-700); }
.ps-svc-compass__cta a.ps-link:hover { text-decoration: underline; color: var(--brand-700); }

.ps-svc-design {
  display: flex; flex-direction: column; justify-content: space-between;
  border-radius: 1rem; background: var(--brand-700); padding: 1.75rem; color: #fff;
}
@media (min-width: 1024px) { .ps-svc-design { grid-column: span 2; } }
.ps-svc-design__icon {
  display: inline-flex; width: 2.75rem; height: 2.75rem; align-items: center; justify-content: center;
  border-radius: .75rem; background: rgb(255 255 255 / .15);
}
.ps-svc-design__icon svg { width: 1.25rem; height: 1.25rem; }
.ps-svc-design h3 { margin-top: 1.25rem; font-size: 1.25rem; font-weight: 700; letter-spacing: -.02em; }
.ps-svc-design p { margin-top: .625rem; font-size: .875rem; line-height: 1.65; color: rgb(255 255 255 / .75); }
.ps-svc-design__more {
  margin-top: 1.5rem; display: inline-flex; align-items: center; gap: .25rem;
  font-size: .875rem; font-weight: 600; color: rgb(255 255 255 / .9);
}
.ps-svc-design:hover .ps-svc-design__more { color: #fff; text-decoration: underline; }
.ps-svc-design__more svg { width: .875rem; height: .875rem; }

.ps-svc-bottom { margin-top: 1.25rem; display: grid; gap: 1.25rem; }
@media (min-width: 768px) { .ps-svc-bottom { grid-template-columns: repeat(2, minmax(0,1fr)); } }
.ps-svc-mini {
  display: flex; align-items: flex-start; gap: 1.25rem; border-radius: 1rem; background: #fff;
  padding: 1.5rem; box-shadow: inset 0 0 0 1px var(--stone-200); transition: box-shadow .2s;
}
@media (min-width: 1024px) { .ps-svc-mini { padding: 1.75rem; } }
.ps-svc-mini:hover { box-shadow: inset 0 0 0 1px var(--brand-200), var(--shadow-sm); }
.ps-svc-mini__icon {
  display: inline-flex; width: 3rem; height: 3rem; flex: none; align-items: center; justify-content: center;
  border-radius: .75rem; background: var(--brand-50); color: var(--brand-700);
}
.ps-svc-mini__icon svg { width: 1.25rem; height: 1.25rem; }
.ps-svc-mini h3 { font-size: 1.125rem; font-weight: 700; color: var(--stone-900); }
.ps-svc-mini p { margin-top: .375rem; font-size: .875rem; line-height: 1.65; color: var(--stone-500); }
.ps-svc-mini__more {
  margin-top: .75rem; display: inline-flex; align-items: center; gap: .25rem;
  font-size: .875rem; font-weight: 600; color: var(--brand-700);
}
.ps-svc-mini:hover .ps-svc-mini__more { text-decoration: underline; }
.ps-svc-mini__more svg { width: .875rem; height: .875rem; }

.ps-anchor { scroll-margin-top: 6rem; }
.ps-panel { overflow: hidden; border-radius: 1rem; background: #fff; box-shadow: inset 0 0 0 1px var(--stone-200); }
.ps-panel__split { display: grid; }
@media (min-width: 1024px) { .ps-panel__split { grid-template-columns: repeat(2, minmax(0,1fr)); } }
.ps-panel__media { position: relative; aspect-ratio: 16 / 9; }
@media (min-width: 1024px) { .ps-panel__media { aspect-ratio: auto; min-height: 420px; } }
.ps-panel__media img { width: 100%; height: 100%; object-fit: cover; }
.ps-panel__body { display: flex; flex-direction: column; justify-content: center; padding: 1.75rem; }
@media (min-width: 1024px) { .ps-panel__body { padding: 2.5rem; } }
.ps-h2-lg { font-size: 1.5rem; font-weight: 800; letter-spacing: -.025em; color: var(--stone-900); }
@media (min-width: 1024px) { .ps-h2-lg { font-size: 1.875rem; } }
.ps-lead { margin-top: .75rem; font-size: .95rem; line-height: 1.65; color: var(--stone-600); }
.ps-stats { margin-top: 1.5rem; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 1rem; border-top: 1px solid var(--stone-100); padding-top: 1.5rem; }
.ps-stats dt { font-size: .75rem; font-weight: 500; color: var(--stone-500); }
.ps-stats dd { margin: .125rem 0 0; font-size: .875rem; font-weight: 600; color: var(--stone-900); }
.ps-icon-tile {
  display: inline-flex; width: 2.75rem; height: 2.75rem; align-items: center; justify-content: center;
  border-radius: .75rem; background: var(--brand-50); color: var(--brand-700);
}
.ps-icon-tile svg { width: 1.25rem; height: 1.25rem; }
.ps-split { display: grid; align-items: start; gap: 2.5rem; }
@media (min-width: 1024px) { .ps-split { grid-template-columns: repeat(2, minmax(0,1fr)); } }
.ps-split--5 { display: grid; gap: 2.5rem; align-items: start; }
@media (min-width: 1024px) { .ps-split--5 { grid-template-columns: repeat(5, minmax(0,1fr)); } }
.ps-col-3 { grid-column: span 1; }
.ps-col-2 { grid-column: span 1; }
@media (min-width: 1024px) { .ps-col-3 { grid-column: span 3; } .ps-col-2 { grid-column: span 2; } }
.ps-box { border-radius: 1rem; border: 1px solid var(--stone-200); padding: 1.5rem; }
@media (min-width: 1024px) { .ps-box { padding: 1.75rem; } }
.ps-box h3 { font-size: 1.125rem; font-weight: 700; color: var(--stone-900); }
.ps-bullets { margin-top: 1rem; display: grid; gap: .625rem; }
@media (min-width: 640px) { .ps-bullets { grid-template-columns: repeat(2, minmax(0,1fr)); column-gap: 1.5rem; } }
.ps-bullets li { display: flex; align-items: baseline; gap: .5rem; font-size: .94rem; color: var(--stone-700); }
.ps-bullets li::before {
  content: ""; margin-top: .125rem; display: block; width: .375rem; height: .375rem;
  flex: none; border-radius: 9999px; background: var(--brand-400);
}
.ps-timeline { position: relative; margin-top: 2rem; display: flex; flex-direction: column; gap: 2rem; border-left: 2px solid var(--brand-100); padding-left: 2rem; }
.ps-timeline li { position: relative; }
.ps-timeline__n {
  position: absolute; left: calc(-2rem - 13px); display: flex; width: 1.5rem; height: 1.5rem;
  align-items: center; justify-content: center; border-radius: 9999px;
  background: var(--brand-700); font-size: .75rem; font-weight: 700; color: #fff;
}
.ps-timeline h3 { font-size: 1rem; font-weight: 700; color: var(--stone-900); }
.ps-timeline p { margin-top: .25rem; max-width: 28rem; font-size: .875rem; line-height: 1.65; color: var(--stone-600); }
.ps-aside { border-radius: 1rem; border: 1px solid var(--brand-100); background: var(--brand-50); padding: 1.5rem; }
.ps-aside h3 { font-size: 1.125rem; font-weight: 700; color: var(--stone-900); }
.ps-aside p { margin-top: .5rem; font-size: .875rem; line-height: 1.65; color: var(--stone-600); }
.ps-aside__actions { margin-top: 1.25rem; display: flex; flex-direction: column; gap: .75rem; }
.ps-center { text-align: center; }
.ps-cta-final { border-top: 1px solid var(--stone-200); }
.ps-muted { color: var(--stone-500); font-size: .875rem; }
.ps-muted-link:hover { color: var(--brand-700); }

/* Contatti */
.ps-contactgrid {
  display: grid; gap: 1px; overflow: hidden; border-radius: 1rem;
  border: 1px solid var(--stone-200); background: var(--stone-200); box-shadow: var(--shadow-sm);
}
@media (min-width: 640px) { .ps-contactgrid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (min-width: 1024px) { .ps-contactgrid { grid-template-columns: repeat(4, minmax(0,1fr)); } }
.ps-contactcard { display: flex; align-items: flex-start; gap: 1rem; background: #fff; padding: 1.5rem; transition: background-color .2s; }
.ps-contactcard--wa:hover { background: rgb(240 253 244 / .6); }
.ps-contactcard--mail:hover { background: rgb(252 244 243 / .6); }
.ps-contactcard__icon {
  display: flex; width: 2.5rem; height: 2.5rem; flex: none; align-items: center; justify-content: center;
  border-radius: 9999px; background: var(--brand-100); color: var(--brand-700);
}
.ps-contactcard__icon svg { width: 1.25rem; height: 1.25rem; }
.ps-contactcard__icon--wa { background: var(--whatsapp); color: #fff; }
.ps-contactcard__label { font-size: .875rem; color: var(--stone-500); }
.ps-contactcard__value { margin-top: .125rem; display: block; font-weight: 600; color: var(--stone-900); transition: color .2s; }
.ps-contactcard__sub { margin-top: .25rem; display: block; font-size: .875rem; color: var(--stone-500); }
.ps-contactcard__go { margin-top: .5rem; display: inline-flex; align-items: center; gap: .25rem; font-size: .875rem; font-weight: 500; }
.ps-contactcard__go svg { width: .875rem; height: .875rem; transition: transform .2s; }
.ps-contactcard:hover .ps-contactcard__go svg { transform: translateX(2px); }
.ps-contactcard--wa .ps-contactcard__go { color: var(--green-600); }
.ps-contactcard--wa:hover .ps-contactcard__value { color: var(--green-700); }
.ps-contactcard--mail .ps-contactcard__go { color: var(--brand-600); }
.ps-contactcard--mail:hover .ps-contactcard__value { color: var(--brand-700); }
.ps-map { position: relative; border-top: 1px solid var(--stone-200); }
.ps-map__frame { height: 420px; }
@media (min-width: 1024px) { .ps-map__frame { height: 500px; } }
.ps-map__frame iframe { width: 100%; height: 100%; border: 0; display: block; }
.ps-map__badge { position: absolute; bottom: 1.5rem; left: 1rem; z-index: 10; }
@media (min-width: 640px) { .ps-map__badge { left: 2rem; } }
@media (min-width: 1024px) { .ps-map__badge { left: 3rem; } }
.ps-map__badge a {
  display: inline-flex; align-items: center; gap: .75rem; border-radius: .75rem;
  background: rgb(255 255 255 / .95); padding: .875rem 1.25rem; box-shadow: var(--shadow-lg);
  backdrop-filter: blur(4px); transition: box-shadow .2s;
}
.ps-map__badge a:hover { box-shadow: var(--shadow-xl); }
.ps-map__badge svg:first-child { width: 1.25rem; height: 1.25rem; flex: none; color: var(--brand-600); }
.ps-map__badge strong { display: block; font-size: .875rem; font-weight: 600; color: var(--stone-900); }
.ps-map__badge small { display: block; font-size: .75rem; color: var(--stone-500); }

/* Pagine legali / prose */
.ps-legal { max-width: 48rem; padding-block: 3rem; }
@media (min-width: 1024px) { .ps-legal { padding-block: 4rem; } }
.ps-legal h1 { font-size: 1.875rem; font-weight: 800; letter-spacing: -.025em; }
.ps-legal__updated { margin-top: .25rem; font-size: .875rem; color: var(--stone-500); }
.ps-prose { margin-top: 1.5rem; line-height: 1.7; color: var(--stone-700); }
.ps-prose a { color: var(--brand-700); text-decoration: underline; }
.ps-prose h2 { margin: 1.75rem 0 .5rem; font-size: 1.25rem; font-weight: 700; color: var(--stone-900); }
.ps-prose h3 { margin: 1.25rem 0 .25rem; font-size: 1rem; font-weight: 600; color: var(--stone-900); }
.ps-prose p { margin-bottom: .75rem; }
.ps-prose ul { margin-bottom: .75rem; list-style: disc; padding-left: 1.25rem; }
.ps-prose ol { margin-bottom: .75rem; list-style: decimal; padding-left: 1.25rem; }
.ps-prose li { margin-bottom: .25rem; }
.ps-prose strong { font-weight: 600; }
.ps-prose table { margin-block: .75rem; border-collapse: collapse; width: 100%; }
.ps-prose th, .ps-prose td { border: 1px solid var(--stone-200); padding: .5rem; }
.ps-prose th { background: var(--stone-50); text-align: left; }
.ps-prose img { border-radius: .5rem; }
.ps-prose blockquote { border-left: 3px solid var(--brand-200); padding-left: 1rem; color: var(--stone-600); }

/* Ricerca: stato vuoto / discovery */
.ps-discovery { display: flex; flex-direction: column; align-items: center; text-align: center; margin-bottom: 2rem; }
.ps-discovery__icon {
  margin-bottom: 1rem; display: flex; width: 3.5rem; height: 3.5rem; align-items: center;
  justify-content: center; border-radius: 9999px; background: var(--brand-50); color: var(--brand-700);
}
.ps-discovery__icon svg { width: 1.75rem; height: 1.75rem; }
.ps-discovery h1 { font-size: 1.875rem; font-weight: 800; letter-spacing: -.025em; }
.ps-discovery p { margin-top: .5rem; max-width: 28rem; color: var(--stone-500); }

/* ============================================================
   19. WOOCOMMERCE — carrello, checkout, account, avvisi
   Il checkout resta quello nativo (Stripe/PayPal invariati):
   qui lo vestiamo con i token del tema.
   ============================================================ */
.woocommerce-notices-wrapper:empty { display: none; }
.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
  margin: 0 0 1.5rem; list-style: none; border-radius: var(--radius-card);
  padding: .875rem 1.125rem; font-size: .875rem; line-height: 1.6;
  display: flex; flex-wrap: wrap; align-items: center; gap: .75rem;
}
.woocommerce-message { background: var(--green-50); color: var(--green-700); box-shadow: inset 0 0 0 1px rgb(22 163 74 / .25); }
.woocommerce-info { background: var(--brand-50); color: var(--brand-800); box-shadow: inset 0 0 0 1px var(--brand-100); }
.woocommerce-error { background: #fef2f2; color: #991b1b; box-shadow: inset 0 0 0 1px #fecaca; }
.woocommerce-error li + li { margin-top: .25rem; }
.woocommerce-message .button,
.woocommerce-info .button { margin-left: auto; }

/* Bottoni Woo → pill del tema */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.wc-block-components-button {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  border: 0; border-radius: 9999px; background: var(--brand-600); color: #fff;
  padding: .75rem 1.5rem; font-size: .9375rem; font-weight: 600; line-height: 1;
  text-decoration: none; transition: background-color .2s; box-shadow: var(--shadow-sm);
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover { background: var(--brand-700); color: #fff; }
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt { background: var(--brand-600); }
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover { background: var(--brand-700); }
.woocommerce .button:disabled,
.woocommerce .button.disabled { background: var(--stone-300); cursor: not-allowed; box-shadow: none; }
.woocommerce a.button.wc-backward {
  background: #fff; color: var(--stone-800); box-shadow: inset 0 0 0 1px var(--stone-300);
}
.woocommerce a.button.wc-backward:hover { background: var(--stone-100); color: var(--stone-900); }

/* Campi form Woo */
.woocommerce form .form-row { margin: 0 0 1rem; display: flex; flex-direction: column; }
.woocommerce form .form-row label {
  margin-bottom: .375rem; font-size: .875rem; font-weight: 500; color: var(--stone-700);
}
.woocommerce form .form-row .required { color: var(--brand-600); text-decoration: none; border: 0; }
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce .select2-container .select2-selection--single,
.woocommerce-page input[type="text"],
.woocommerce-page input[type="email"],
.woocommerce-page input[type="tel"],
.woocommerce-page input[type="password"],
.woocommerce-page input[type="number"],
.woocommerce-page textarea,
.woocommerce-page select {
  width: 100%; min-height: 2.75rem; border-radius: .625rem;
  border: 1px solid var(--stone-300); background: #fff; padding: .625rem .875rem;
  font: inherit; font-size: .9375rem; color: var(--ink); outline: none;
  transition: border-color .2s, box-shadow .2s; -webkit-appearance: none;
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus,
.woocommerce-page input:focus,
.woocommerce-page textarea:focus,
.woocommerce-page select:focus {
  border-color: var(--brand-500); box-shadow: 0 0 0 2px var(--brand-200);
}
.woocommerce form .form-row textarea { min-height: 6rem; resize: vertical; }
.woocommerce .select2-container--default .select2-selection--single { height: 2.75rem; display: flex; align-items: center; }
.woocommerce .select2-container--default .select2-selection--single .select2-selection__arrow { top: .625rem; }
.woocommerce form .form-row-first, .woocommerce form .form-row-last { width: 100%; }
@media (min-width: 640px) {
  .woocommerce form .form-row-first, .woocommerce form .form-row-last {
    width: calc(50% - .5rem); display: inline-flex; vertical-align: top;
  }
  .woocommerce form .form-row-first { margin-right: 1rem; }
}

/* Tabelle Woo (carrello, riepilogo ordine) */
.woocommerce table.shop_table {
  width: 100%; border-collapse: separate; border-spacing: 0; margin-bottom: 1.5rem;
  border-radius: var(--radius-card); border: 1px solid var(--stone-200); background: #fff; overflow: hidden;
}
.woocommerce table.shop_table th {
  padding: .875rem 1rem; text-align: left; font-size: .8125rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: .04em; color: var(--stone-500);
  background: var(--stone-50); border-bottom: 1px solid var(--stone-200);
}
.woocommerce table.shop_table td {
  padding: 1rem; border-bottom: 1px solid var(--stone-100); vertical-align: middle; font-size: .9375rem;
}
.woocommerce table.shop_table tbody tr:last-child td { border-bottom: 0; }
.woocommerce table.shop_table tfoot th, .woocommerce table.shop_table tfoot td {
  background: var(--stone-50); border-top: 1px solid var(--stone-200); text-transform: none;
  font-size: .9375rem; letter-spacing: normal; color: var(--stone-700);
}
.woocommerce table.shop_table .order-total th,
.woocommerce table.shop_table .order-total td { font-size: 1.0625rem; font-weight: 700; color: var(--ink); }
.woocommerce table.cart img, .woocommerce-cart table.cart img { width: 4rem; height: 4rem; object-fit: contain; border-radius: .5rem; border: 1px solid var(--stone-200); background: #fff; }
.woocommerce table.cart td.product-name a { font-weight: 500; color: var(--stone-800); }
.woocommerce table.cart td.product-name a:hover { color: var(--brand-700); }
.woocommerce a.remove {
  display: inline-flex; width: 1.75rem; height: 1.75rem; align-items: center; justify-content: center;
  border-radius: 9999px; background: var(--stone-100); color: var(--stone-500);
  font-size: 1rem; line-height: 1; text-decoration: none; transition: background-color .2s, color .2s;
}
.woocommerce a.remove:hover { background: var(--brand-50); color: var(--brand-700); }
.woocommerce .quantity .qty {
  width: 4.5rem; min-height: 2.5rem; border-radius: .625rem; border: 1px solid var(--stone-300);
  padding: .375rem .5rem; text-align: center; font: inherit; font-size: .9375rem;
}
.woocommerce .cart-collaterals, .woocommerce-cart .cart-collaterals { width: 100%; }
.woocommerce .cart_totals h2, .woocommerce-checkout h3, .woocommerce-checkout #order_review_heading {
  margin: 0 0 1rem; font-size: 1.25rem; font-weight: 700; letter-spacing: -.02em; color: var(--stone-900);
}
.woocommerce .cart-collaterals .cart_totals { float: none; width: 100%; }
.woocommerce .wc-proceed-to-checkout { padding-top: 1rem; }
.woocommerce .wc-proceed-to-checkout a.checkout-button {
  display: flex; width: 100%; font-size: 1rem; padding-block: .875rem;
}
.woocommerce .coupon { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.woocommerce .coupon .input-text { width: auto; flex: 1 1 12rem; min-width: 0; }

/* Layout pagine carrello / checkout */
.ps-woo-page { padding-block: 2rem 3.5rem; }
@media (min-width: 1024px) { .ps-woo-page { padding-block: 3rem 4.5rem; } }
@media (min-width: 1024px) {
  /* Carrello: righe a sinistra, totali a destra. */
  .woocommerce-cart .ps-woo-page .woocommerce {
    display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr);
    gap: 2.5rem; align-items: start;
  }
  .woocommerce-cart .woocommerce-notices-wrapper { grid-column: 1 / -1; }
  .woocommerce-cart .cart-collaterals { position: sticky; top: 6rem; }

}

/* Riga azioni del carrello: coupon e "aggiorna" sulla stessa linea. */
.woocommerce-cart table.cart td.actions {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem;
}
.woocommerce-cart table.cart td.actions .coupon { flex: 1 1 20rem; }
.woocommerce-cart .cart_totals { margin-top: 0; }

/* Ordine ricevuto */
.woocommerce-order .woocommerce-thankyou-order-received {
  border-radius: var(--radius-card); background: var(--green-50); color: var(--green-700);
  padding: 1.125rem 1.25rem; font-size: 1rem; font-weight: 600; margin-bottom: 1.5rem;
}
.woocommerce ul.order_details {
  display: flex; flex-wrap: wrap; gap: 1.5rem; margin: 0 0 2rem; padding: 1.25rem;
  border-radius: var(--radius-card); border: 1px solid var(--stone-200); background: #fff; list-style: none;
}
.woocommerce ul.order_details li {
  border: 0; margin: 0; padding: 0; font-size: .75rem; text-transform: uppercase;
  letter-spacing: .04em; color: var(--stone-500);
}
.woocommerce ul.order_details li strong {
  display: block; margin-top: .25rem; font-size: 1rem; text-transform: none;
  letter-spacing: normal; font-weight: 600; color: var(--ink);
}

/* My account */
.woocommerce-account .woocommerce-MyAccount-navigation { margin-bottom: 1.5rem; }
.woocommerce-account .woocommerce-MyAccount-navigation ul { display: flex; flex-wrap: wrap; gap: .5rem; }
.woocommerce-account .woocommerce-MyAccount-navigation li a {
  display: inline-flex; align-items: center; min-height: 2.5rem; border-radius: 9999px;
  border: 1px solid var(--stone-200); background: #fff; padding-inline: 1rem;
  font-size: .875rem; font-weight: 500; color: var(--stone-600);
}
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a { background: var(--brand-600); border-color: var(--brand-600); color: #fff; }
@media (min-width: 768px) {
  .woocommerce-account .woocommerce-MyAccount-navigation { float: none; width: 100%; }
  .woocommerce-account .woocommerce-MyAccount-content { float: none; width: 100%; }
}
.woocommerce form.login, .woocommerce form.register, .woocommerce-EditAccountForm {
  border-radius: var(--radius-card); border: 1px solid var(--stone-200); background: #fff; padding: 1.5rem; max-width: 32rem;
}

/* Prezzi Woo */
.woocommerce .price, .woocommerce span.amount { color: var(--ink); font-weight: 700; }
.woocommerce del { color: var(--stone-400); font-weight: 400; }
.woocommerce ins { background: none; text-decoration: none; }

/* Blocca il loader a schermo intero di Woo (blocking overlay) */
.blockUI.blockOverlay { background: rgb(255 255 255 / .6) !important; }

/* Elementi Woo che il tema sostituisce */
.woocommerce .woocommerce-breadcrumb,
.woocommerce-products-header,
.woocommerce .woocommerce-result-count,
.woocommerce .woocommerce-ordering { display: none; }
.woocommerce-cart .woocommerce-result-count { display: none; }

/* Utility finali */
.ps-mt-6 { margin-top: 1.5rem; }
.ps-mt-8 { margin-top: 2rem; }
.ps-mt-10 { margin-top: 2.5rem; }
.ps-mt-14 { margin-top: 3.5rem; }
.ps-mt-16 { margin-top: 4rem; }
.ps-mb-6 { margin-bottom: 1.5rem; }
.ps-flexwrap { display: flex; flex-wrap: wrap; gap: .75rem; }
.ps-flexwrap--center { justify-content: center; }

/* ============================================================
   20. RECENSIONI PRODOTTO (template WooCommerce)
   ============================================================ */
#reviews { color: var(--stone-700); }
#reviews h2, #reviews #reply-title {
	font-size: 1.25rem; font-weight: 700; letter-spacing: -.02em;
	color: var(--stone-900); margin: 0 0 1rem;
}
#reviews .woocommerce-noreviews { color: var(--stone-500); margin-bottom: 1.5rem; }
#reviews ol.commentlist { list-style: none; padding: 0; margin: 0 0 2rem; }
#reviews ol.commentlist li { margin-bottom: 1rem; }
#reviews .comment_container {
	display: flex; gap: 1rem; border-radius: var(--radius-card);
	border: 1px solid var(--stone-200); background: #fff; padding: 1rem;
}
#reviews .comment_container img.avatar {
	width: 2.75rem; height: 2.75rem; border-radius: 9999px; flex: none;
}
#reviews .comment-text { min-width: 0; flex: 1 1 auto; }
#reviews .woocommerce-review__author { font-weight: 600; color: var(--stone-900); }
#reviews .woocommerce-review__published-date { font-size: .8125rem; color: var(--stone-500); }
#reviews .description p { margin-top: .5rem; }
#reviews .star-rating { color: var(--amber-500); }

#review_form_wrapper {
	border-radius: var(--radius-card); border: 1px solid var(--stone-200);
	background: #fff; padding: 1.5rem;
}
#review_form_wrapper .comment-form { display: flex; flex-direction: column; gap: 1rem; }
#review_form_wrapper .comment-notes,
#review_form_wrapper .comment-form-cookies-consent label {
	font-size: .875rem; color: var(--stone-500);
}
#review_form_wrapper label { display: block; margin-bottom: .375rem; font-size: .875rem; font-weight: 500; color: var(--stone-700); }
#review_form_wrapper input[type="text"],
#review_form_wrapper input[type="email"],
#review_form_wrapper textarea, #review_form_wrapper select {
	width: 100%; min-height: 2.75rem; border-radius: .625rem;
	border: 1px solid var(--stone-300); background: #fff; padding: .625rem .875rem;
	font: inherit; font-size: .9375rem; outline: none; transition: border-color .2s, box-shadow .2s;
}
#review_form_wrapper textarea { min-height: 7rem; resize: vertical; }
#review_form_wrapper input:focus, #review_form_wrapper textarea:focus, #review_form_wrapper select:focus {
	border-color: var(--brand-500); box-shadow: 0 0 0 2px var(--brand-200);
}
#review_form_wrapper .comment-form-cookies-consent { display: flex; align-items: center; gap: .5rem; }
#review_form_wrapper .comment-form-cookies-consent input { width: auto; min-height: 0; }
#review_form_wrapper .form-submit input[type="submit"] {
	display: inline-flex; align-items: center; justify-content: center;
	border: 0; border-radius: 9999px; background: var(--brand-600); color: #fff;
	padding: .75rem 1.5rem; font-size: .9375rem; font-weight: 600; cursor: pointer;
	transition: background-color .2s;
}
#review_form_wrapper .form-submit input[type="submit"]:hover { background: var(--brand-700); }

/* Commenti (articoli) */
.ps-comments { margin-top: 3rem; }
.ps-comments .comment-form { display: flex; flex-direction: column; gap: 1rem; }
.ps-comments .comment-form label { font-size: .875rem; font-weight: 500; color: var(--stone-700); }
.ps-comments .comment-form input[type="text"],
.ps-comments .comment-form input[type="email"],
.ps-comments .comment-form input[type="url"] {
	width: 100%; min-height: 2.75rem; border-radius: .625rem; border: 1px solid var(--stone-300);
	padding: .625rem .875rem; font: inherit;
}
.ps-comments .form-submit input[type="submit"] {
	display: inline-flex; border: 0; border-radius: 9999px; background: var(--brand-600);
	color: #fff; padding: .75rem 1.5rem; font-weight: 600; cursor: pointer;
}

/* ============================================================
   21. MODULO DI RECESSO
   ============================================================ */
.ps-recesso__grid { display: grid; gap: 1.25rem; }
@media (min-width: 640px) { .ps-recesso__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.ps-recesso__full { grid-column: 1 / -1; }
.ps-recesso label { margin-bottom: .25rem; display: block; font-size: .875rem; font-weight: 500; color: var(--stone-800); }
/* Solo l'asterisco dei campi obbligatori è in colore accento — non il testo
   della dichiarazione, che è una frase da leggere, non un avviso. */
.ps-recesso__grid label > span { color: var(--brand-700); }
.ps-recesso label em { font-style: normal; font-weight: 400; color: var(--stone-500); }
.ps-recesso input[type="text"],
.ps-recesso input[type="email"],
.ps-recesso input[type="date"],
.ps-recesso input:not([type]),
.ps-recesso textarea {
  width: 100%; min-height: 2.75rem; border-radius: .5rem; border: 1px solid var(--stone-300);
  background: #fff; padding: .625rem .75rem; font: inherit; font-size: .875rem;
  outline: none; transition: border-color .2s, box-shadow .2s;
}
.ps-recesso textarea { min-height: 4.5rem; resize: vertical; }
.ps-recesso input:focus, .ps-recesso textarea:focus {
  border-color: var(--brand-500); box-shadow: 0 0 0 2px var(--brand-200);
}
.ps-recesso [aria-invalid="true"] { border-color: var(--brand-400); }
.ps-recesso__err { margin-top: .25rem; display: block; font-size: .75rem; font-weight: 500; color: var(--brand-700); }
.ps-recesso__alert {
  margin-bottom: 1.25rem; border-radius: .5rem; border: 1px solid var(--amber-200);
  background: var(--amber-50); padding: .75rem 1rem; font-size: .875rem; color: var(--amber-900);
}
.ps-recesso__check {
  margin-top: 1.25rem; display: flex; align-items: flex-start; gap: .75rem;
  font-size: .875rem; font-weight: 400; color: var(--stone-700);
}
.ps-recesso__check input { margin-top: .125rem; width: 1rem; height: 1rem; flex: none; accent-color: var(--brand-600); }
.ps-recesso__check > span { font-weight: 400; color: var(--stone-700); }
.ps-recesso__hint { margin-top: .75rem; font-size: .75rem; color: var(--stone-500); }
.ps-recesso__hp { position: absolute; left: -9999px; width: 0; height: 0; overflow: hidden; }
.ps-recesso__ok {
  display: flex; width: 3rem; height: 3rem; align-items: center; justify-content: center;
  border-radius: 9999px; background: var(--green-50); color: var(--green-700);
}
.ps-recesso__ok svg { width: 1.5rem; height: 1.5rem; }

/* ============================================================
   22. CHECKOUT — dati per la fattura e accettazione dei termini
   ============================================================ */

/* I campi fattura partono chiusi, ma solo se il JavaScript può riaprirli:
   la classe .ps-co-js la mette uno script inline nel <head>, quindi non
   c'è alcun lampeggio; senza JavaScript i campi restano visibili e la
   validazione lato server fa comunque il suo lavoro. */
.ps-co-js .woocommerce form .form-row.ps-invoice-field { display: none; }
.ps-co-js body.ps-invoice-on .woocommerce form .form-row.ps-invoice-field { display: flex; }
@media (min-width: 640px) {
  .ps-co-js body.ps-invoice-on .woocommerce form .form-row.ps-invoice-field.form-row-first,
  .ps-co-js body.ps-invoice-on .woocommerce form .form-row.ps-invoice-field.form-row-last {
    display: inline-flex;
  }
}

/* La spunta "mi serve la fattura": una riga cliccabile, non un checkbox perso */
.woocommerce form .form-row.ps-invoice-toggle {
  margin: .25rem 0 1rem; border-radius: .75rem;
  border: 1px solid var(--stone-200); background: var(--sand-50, var(--stone-50));
  padding: .875rem 1rem;
}
.woocommerce form .form-row.ps-invoice-toggle label.checkbox {
  display: flex; align-items: center; gap: .625rem; margin: 0; cursor: pointer;
  font-size: .9375rem; font-weight: 500; color: var(--stone-800);
}
.woocommerce form .form-row.ps-invoice-toggle input[type="checkbox"] {
  width: 1.125rem; height: 1.125rem; flex: none; margin: 0;
  accent-color: var(--brand-600); cursor: pointer;
}
.woocommerce form .form-row.ps-invoice-toggle:focus-within {
  border-color: var(--brand-500); box-shadow: 0 0 0 2px var(--brand-200);
}

/* Nota esplicativa sotto la partita IVA */
.woocommerce form .form-row.ps-invoice-field .description {
  order: 3; margin-top: .375rem; font-size: .75rem; line-height: 1.5; color: var(--stone-500);
}

/* Riepilogo dei dati fattura nella pagina di conferma e nell'area cliente */
.ps-invoice-recap { margin: 2rem 0 0; }
.ps-invoice-recap h2 {
  margin: 0 0 .75rem; font-size: 1.125rem; font-weight: 700; color: var(--ink);
}
.ps-invoice-recap ul {
  margin: 0; list-style: none; padding: 0;
  border: 1px solid var(--stone-200); border-radius: var(--radius-card); background: #fff;
}
.ps-invoice-recap li {
  display: flex; flex-wrap: wrap; gap: .5rem 1rem; justify-content: space-between;
  padding: .75rem 1rem; font-size: .875rem;
}
.ps-invoice-recap li + li { border-top: 1px solid var(--stone-100); }
.ps-invoice-recap li span { color: var(--stone-500); }
.ps-invoice-recap li strong { color: var(--ink); font-weight: 600; }

/* Accettazione di termini e condizioni (spunta nativa WooCommerce) */
.woocommerce-terms-and-conditions-wrapper { margin: 1.25rem 0 0; }
.woocommerce-privacy-policy-text p {
  margin: 0 0 1rem; font-size: .8125rem; line-height: 1.6; color: var(--stone-500);
}
.woocommerce-privacy-policy-text a { color: var(--stone-700); text-decoration: underline; }
.woocommerce form .form-row.validate-required.woocommerce-terms-and-conditions-checkbox-text-wrapper,
.woocommerce-terms-and-conditions-wrapper .form-row {
  margin: 0; border-radius: .75rem; border: 1px solid var(--stone-200);
  background: #fff; padding: .875rem 1rem;
}
.woocommerce-terms-and-conditions-wrapper .woocommerce-form__label-for-checkbox {
  display: flex; align-items: flex-start; gap: .625rem; margin: 0; cursor: pointer;
  font-size: .875rem; line-height: 1.5; font-weight: 400; color: var(--stone-700);
}
.woocommerce-terms-and-conditions-wrapper input[type="checkbox"] {
  width: 1.125rem; height: 1.125rem; flex: none; margin: .0625rem 0 0;
  accent-color: var(--brand-600); cursor: pointer;
}
.woocommerce-terms-and-conditions-wrapper a { color: var(--brand-700); font-weight: 500; }
.woocommerce-terms-and-conditions-wrapper .required { color: var(--brand-600); border: 0; text-decoration: none; }
.woocommerce-terms-and-conditions-wrapper:focus-within .form-row {
  border-color: var(--brand-500); box-shadow: 0 0 0 2px var(--brand-200);
}
/* Il testo integrale dei termini, se WooCommerce lo mostra a fisarmonica */
.woocommerce-terms-and-conditions {
  margin: 0 0 1rem; max-height: 18rem; overflow-y: auto; border-radius: .75rem;
  border: 1px solid var(--stone-200); background: var(--stone-50);
  padding: 1rem; font-size: .8125rem; line-height: 1.7; color: var(--stone-600);
}

/* ============================================================
   23. CHECKOUT — impaginazione a due colonne
   ============================================================
   Colonna sinistra: pagamenti rapidi, contatto, indirizzo, fattura,
   pagamento. Colonna destra: riepilogo che resta in vista. Su schermo
   piccolo il riepilogo passa in cima, così il totale si vede prima di
   compilare.
   ============================================================ */

.ps-co { display: flex; flex-direction: column; gap: 2rem; }
.ps-co__main { min-width: 0; }
.ps-co__side { min-width: 0; }

@media (max-width: 1023px) {
  /* Su schermo stretto la colonna destra si scioglie: il riepilogo sale in
     cima — il totale va visto prima di compilare — e le garanzie restano in
     fondo invece di allungare la strada verso il primo campo. */
  .ps-co__side { display: contents; }
  .ps-co__summary { order: -1; }
  .ps-co__side .ps-ptrust { order: 1; margin-top: 0; }
}

@media (min-width: 1024px) {
  .ps-co {
    display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
    gap: 3rem; align-items: start;
  }
  .ps-co__side { position: sticky; top: 6rem; }
}

/* --- sezioni della colonna sinistra --- */
.ps-co__section { margin-top: 2rem; padding-top: 2rem; border-top: 1px solid var(--stone-200); }
.ps-co__sections > .ps-co__section:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.ps-co .ps-co__title {
  margin: 0 0 .25rem; font-size: 1.125rem; font-weight: 700; line-height: 1.3;
  color: var(--ink); text-align: left;
}
.ps-co__hint { margin: 0 0 1.125rem; font-size: .875rem; line-height: 1.5; color: var(--stone-500); }
.ps-co__title + .woocommerce-billing-fields__field-wrapper,
.ps-co__title + .form-row { margin-top: 1.125rem; }

/* WooCommerce stampa i propri h3 ("Spedire a un indirizzo diverso?"): stesso peso. */
.ps-co #customer_details h3,
.ps-co .woocommerce-additional-fields h3 {
  margin: 0 0 .75rem; font-size: 1.125rem; font-weight: 700; color: var(--ink); text-align: left;
}
.ps-co #ship-to-different-address { margin: 2rem 0 0; padding-top: 2rem; border-top: 1px solid var(--stone-200); }
.ps-co #ship-to-different-address label {
  display: flex; align-items: center; gap: .625rem; cursor: pointer;
  font-size: 1.0625rem; font-weight: 600; color: var(--ink);
}
.ps-co #ship-to-different-address input[type="checkbox"] {
  width: 1.125rem; height: 1.125rem; accent-color: var(--brand-600); cursor: pointer;
}
.ps-co .woocommerce-additional-fields { margin-top: 2rem; padding-top: 2rem; border-top: 1px solid var(--stone-200); }

/* --- pagamenti rapidi (Apple Pay, Google Pay, Amazon Pay, Link) --- */
/* Stripe li accende togliendo un display:none in linea: non tocchiamo display. */
#wc-stripe-express-checkout-element { margin: 0 0 .25rem; }
#wc-stripe-express-checkout-button-separator {
  margin-bottom: 1.75rem; color: var(--stone-500);
  font-size: .8125rem; letter-spacing: .06em; text-transform: uppercase;
}

/* --- riepilogo --- */
.ps-co__summary {
  border: 1px solid var(--stone-200); border-radius: var(--radius-card);
  background: #fff; padding: 1.25rem;
}
.ps-co__summary .ps-co__title { margin-bottom: 1rem; }
.woocommerce .ps-co__order.shop_table {
  width: 100%; margin: 0; border: 0; border-radius: 0; background: transparent; overflow: visible;
}
.woocommerce .ps-co__order th,
.woocommerce .ps-co__order td {
  border: 0; background: transparent; padding: .625rem 0;
  text-transform: none; letter-spacing: normal; font-size: .875rem;
}
.woocommerce .ps-co__order tbody td { padding: .75rem 0; vertical-align: top; }
.woocommerce .ps-co__order tbody tr + tr td { border-top: 1px solid var(--stone-100); }

.ps-co__item { display: flex; align-items: flex-start; gap: .75rem; }
.ps-co__thumb {
  position: relative; flex: none; width: 3.5rem; height: 3.5rem;
  border: 1px solid var(--stone-200); border-radius: .625rem; background: #fff;
}
.ps-co__thumb img {
  width: 100%; height: 100%; object-fit: contain; padding: .25rem;
  border-radius: .625rem; display: block;
}
.ps-co__qty {
  position: absolute; top: -.5rem; right: -.5rem;
  min-width: 1.375rem; height: 1.375rem; padding: 0 .3125rem;
  display: flex; align-items: center; justify-content: center;
  border-radius: 9999px; background: var(--stone-600); color: #fff;
  font-size: .6875rem; font-weight: 700; line-height: 1;
}
.ps-co__names { display: flex; flex-direction: column; gap: .125rem; min-width: 0; }
.ps-co__name { font-weight: 500; color: var(--ink); line-height: 1.4; }
.ps-co__meta { font-size: .8125rem; color: var(--stone-500); }
.ps-co__meta p { margin: 0; }
/* La quantità si vede nel pallino: questo testo serve a chi usa uno screen reader. */
.ps-co__qtytext {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.woocommerce .ps-co__order td.product-total { text-align: right; font-weight: 600; white-space: nowrap; }

/* --- codice sconto --- */
.woocommerce .ps-co__order tr.ps-co__couponrow td { padding: 1rem 0 .25rem; border-top: 1px solid var(--stone-200); }
.ps-co__coupon { display: flex; gap: .5rem; }
.woocommerce-page .ps-co__coupon input.ps-co__coupon-input { min-height: 2.625rem; }
.ps-co__coupon-btn {
  flex: none; border: 1px solid var(--stone-300); border-radius: .625rem; background: var(--stone-100);
  padding: 0 1.125rem; font: inherit; font-size: .875rem; font-weight: 600; color: var(--stone-700);
  cursor: pointer; transition: background-color .2s, border-color .2s;
}
.ps-co__coupon-btn:hover { background: var(--stone-200); }
.ps-co__coupon-btn:disabled { opacity: .5; cursor: default; }
/* Con JavaScript il modulo coupon nativo, e il suo invito "hai un codice?",
   lasciano il posto al campo qui sopra. Senza JavaScript tornano visibili. */
.ps-co-js form.checkout_coupon,
.ps-co-js .woocommerce-form-coupon-toggle { display: none; }

/* Testo per i soli lettori di schermo: WooCommerce lo usa in più punti e senza
   questa regola comparirebbe a video (l'etichetta del codice sconto, per dirne
   una). */
.screen-reader-text {
  position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* --- totali --- */
.woocommerce .ps-co__order tfoot th { font-weight: 400; color: var(--stone-600); text-align: left; }
.woocommerce .ps-co__order tfoot td { text-align: right; font-weight: 600; color: var(--ink); }
.woocommerce .ps-co__order tfoot tr.cart-subtotal th,
.woocommerce .ps-co__order tfoot tr.cart-subtotal td { padding-top: 1rem; border-top: 1px solid var(--stone-200); }
.woocommerce .ps-co__order tfoot tr.order-total th,
.woocommerce .ps-co__order tfoot tr.order-total td {
  padding-top: .875rem; border-top: 1px solid var(--stone-200); font-size: 1.0625rem; font-weight: 700; color: var(--ink);
}
.woocommerce .ps-co__order tfoot tr.order-total td { font-size: 1.375rem; }
.woocommerce .ps-co__order tfoot tr.order-total .includes_tax { display: block; font-size: .75rem; font-weight: 400; color: var(--stone-500); }
.woocommerce .ps-co__order ul#shipping_method { margin: 0; padding: 0; list-style: none; text-align: right; }
.woocommerce .ps-co__order ul#shipping_method li { margin: 0 0 .25rem; }
.woocommerce .ps-co__order ul#shipping_method label { font-weight: 600; color: var(--ink); }
.woocommerce .ps-co__order .woocommerce-shipping-destination { font-size: .75rem; font-weight: 400; color: var(--stone-500); }

/* --- garanzie sotto il riepilogo --- */
.ps-co__side .ps-ptrust { margin-top: 1rem; }

/* Stripe inserisce nel checkout un input fantasma, fuori dal flusso, solo per
   leggere gli stili del tema e riprodurli dentro il suo iframe. Non è un campo
   da compilare, ma la regola generica sugli input di WooCommerce lo portava a
   larghezza piena: posizionato dov'era, sporgeva oltre il bordo destro e
   faceva scorrere la pagina in orizzontale (1569px su una finestra da 1440).
   Gli lasciamo bordo, spaziatura e carattere — è proprio quello che Stripe
   legge — e gli togliamo l'ingombro. */
.woocommerce-page input#wc-stripe-hidden-style-input,
input#wc-stripe-hidden-style-input {
  position: absolute !important;
  left: 0 !important;
  width: 1px !important;
  min-width: 0 !important;
  pointer-events: none !important;
}

/* --- metodi di pagamento: schede a scelta singola --- */
.woocommerce-checkout #payment { border: 0; border-radius: 0; background: transparent; padding: 0; }
.woocommerce-checkout #payment ul.payment_methods {
  margin: 0 0 1.25rem; padding: 0; list-style: none;
  border: 1px solid var(--stone-200); border-radius: .75rem; background: #fff; overflow: hidden;
}
.woocommerce-checkout #payment ul.payment_methods li {
  margin: 0; padding: 0; border: 0; border-radius: 0; background: #fff; font-size: .9375rem;
}
.woocommerce-checkout #payment ul.payment_methods li + li { border-top: 1px solid var(--stone-200); }
.woocommerce-checkout #payment ul.payment_methods li > label {
  display: flex; align-items: center; gap: .625rem; margin: 0;
  padding: 1rem; cursor: pointer; font-weight: 500; color: var(--ink);
}
.woocommerce-checkout #payment ul.payment_methods li > input[type="radio"] {
  position: absolute; opacity: 0; width: 1px; height: 1px;
}
.woocommerce-checkout #payment ul.payment_methods li > label::before {
  content: ""; flex: none; width: 1.125rem; height: 1.125rem; border-radius: 9999px;
  border: 1px solid var(--stone-400); background: #fff; transition: border-color .15s, box-shadow .15s;
}
.woocommerce-checkout #payment ul.payment_methods li:has(input:checked) { background: var(--brand-50); }
.woocommerce-checkout #payment ul.payment_methods li:has(input:checked) > label::before {
  border-color: var(--brand-600); border-width: .3125rem;
}
.woocommerce-checkout #payment ul.payment_methods li:has(input:focus-visible) > label::before {
  box-shadow: 0 0 0 3px var(--brand-200);
}
.woocommerce-checkout #payment ul.payment_methods li > label img { max-height: 1.5rem; width: auto; margin-left: auto; }
.woocommerce-checkout #payment div.payment_box {
  margin: 0; padding: 0 1rem 1rem; border-radius: 0; background: transparent;
  font-size: .875rem; color: var(--stone-600);
}
.woocommerce-checkout #payment div.payment_box::before { display: none; }
.woocommerce-checkout #payment div.payment_box p:last-child { margin-bottom: 0; }
.woocommerce-checkout #payment div.form-row.place-order { margin: 0; padding: 0; }
.woocommerce-checkout #place_order { width: 100%; font-size: 1rem; padding-block: .9375rem; }
