/*!
Theme Name:   Lorenz Marine — Hello Elementor Child
Theme URI:    https://lorenzmarine.com
Description:  Child theme di Hello Elementor per Lorenz Marine. Body delle pagine in HTML coded, header/footer in PHP child (Elementor TB disabilitato), popup ancora in Elementor. Design system v2: bianco acceso + Hanken Grotesk + accent rosso aged-bordeaux.
Author:       Drimz
Author URI:   https://drimz.ai
Template:     hello-elementor
Version:      2.0.0
Text Domain:  hello-elementor-child
*/

/* =========================================================
   DESIGN TOKENS v2 — palette WHITE (no ivory), modern e-commerce
   ========================================================= */

:root {
  /* ---------- Palette: bianchi (acceso / intermedio / sporco) ---------- */
  --color-white-50:  #FFFFFF;   /* bianco acceso, pure */
  --color-white-100: #FAFAFA;   /* default page bg — neutro chiaro */
  --color-white-150: #F1F1F1;   /* grigio neutro chiaro — ex beige #F4F2ED, neutralizzato (alimenta --bg-surface-alt) */
  --color-white-200: #EDE9E0;   /* bianco sporco, cream sottile */
  --color-white-300: #DDD8CD;   /* border / divider warm */
  --color-white-400: #C8C3B7;   /* border strong */

  /* ---------- Palette: smokey black (no pure #000) ---------- */
  --color-black-900: #1A1A1A;   /* deepest — usato rarissimamente */
  --color-black-800: #1F1F1F;   /* brand "Nero Lorenz" smokey */
  --color-black-700: #2A2A2A;   /* card on dark sections (più leggero) */
  --color-black-650: #353535;   /* card hover on dark */
  --color-black-600: #4A4A4A;
  --color-black-500: #5C5C5C;
  --color-black-400: #7A7A7A;
  --color-black-300: #A3A3A3;
  --color-black-200: #C0C0C0;
  --color-black-100: #E5E5E5;

  /* ---------- Palette: rosso (aged-bordeaux) ---------- */
  --color-red-900: #4A0808;
  --color-red-800: #5C0C0C;
  --color-red-700: #6B0F0F;     /* hover dark */
  --color-red-600: #8B1818;
  --color-red-500: #A61D1D;     /* brand primary */
  --color-red-400: #C82828;
  --color-red-300: #DC0F0F;     /* brand accent */
  --color-red-200: #EE8080;
  --color-red-100: #F8D7D7;

  /* ---------- Semantic aliases ---------- */
  --bg-page:        var(--color-white-100);   /* neutro chiaro */
  --bg-surface:     var(--color-white-50);    /* cards bg = bianco acceso */
  --bg-surface-alt: var(--color-white-150);   /* sezioni alternate = bianco intermedio */
  --bg-surface-cream: var(--color-white-200); /* sezioni più calde occasionali */
  --bg-inverse:     var(--color-black-800);   /* smokey — usato raro */
  --bg-inverse-deep:var(--color-black-900);   /* deepest — solo accent */

  --fg-default:     var(--color-black-800);
  --fg-strong:      var(--color-black-900);
  --fg-muted:       var(--color-black-500);
  --fg-subtle:      var(--color-black-400);
  --fg-inverse:     var(--color-white-50);
  --fg-inverse-muted:var(--color-white-200);  /* warm muted su dark */
  --fg-inverse-subtle:#9A9A9A;                /* meta su dark */

  --brand:          var(--color-red-500);
  --brand-hover:    var(--color-red-700);
  --brand-accent:   var(--color-red-300);
  --brand-soft:     var(--color-red-100);

  --border-default: var(--color-white-300);
  --border-strong:  var(--color-white-400);
  --border-inverse: rgba(255, 255, 255, 0.12);   /* su dark — più morbido */
  --border-inverse-strong: rgba(255, 255, 255, 0.22);

  /* ---------- Typography (v2: modern sans display) ---------- */
  --font-display: 'Hanken Grotesk', system-ui, -apple-system, Segoe UI, sans-serif;
  --font-body:    'Inter Tight', system-ui, sans-serif;
  --font-mono:    'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;
  --font-editorial:'Fraunces', Georgia, serif;  /* only for editorial moments */

  --fs-display-xl: clamp(3rem, 7vw, 6.5rem);
  --fs-display-lg: clamp(2.5rem, 5vw, 4.75rem);
  --fs-display-md: clamp(2rem, 3.4vw, 3.5rem);
  --fs-display-sm: clamp(1.625rem, 2.4vw, 2.25rem);

  --fs-heading-lg: clamp(1.5rem, 2vw, 1.875rem);
  --fs-heading-md: clamp(1.25rem, 1.6vw, 1.5rem);
  --fs-heading-sm: clamp(1.0625rem, 1.2vw, 1.125rem);

  --fs-body-lg:    clamp(1.0625rem, 1.1vw, 1.1875rem);
  --fs-body-md:    1rem;
  --fs-body-sm:    0.9375rem;
  --fs-body-xs:    0.8125rem;
  --fs-body-xxs:   0.75rem;

  --lh-display: 1.02;
  --lh-heading: 1.15;
  --lh-body:    1.6;
  --lh-tight:   1.3;

  --tracking-display: -0.035em;
  --tracking-heading: -0.02em;
  --tracking-body:    -0.005em;
  --tracking-eyebrow: 0.16em;
  --tracking-mono:    0;

  --fw-display: 500;
  --fw-display-bold: 700;
  --fw-body: 400;
  --fw-body-medium: 500;
  --fw-body-bold: 600;

  /* ---------- Spacing scale (multipli 4/8 — more generous) ---------- */
  --space-1:  4px;
  --space-2:  8px;
  --space-3:  12px;
  --space-4:  16px;
  --space-5:  24px;
  --space-6:  32px;
  --space-7:  48px;
  --space-8:  64px;
  --space-9:  96px;
  --space-10: 128px;
  --space-11: 192px;
  --space-12: 256px;

  /* ---------- Layout ---------- */
  --container-max:    1320px;
  --container-narrow: 920px;
  --container-wide:   1480px;
  --gutter:           clamp(20px, 4vw, 40px);

  /* Spaziature sezioni — compattate 2026-05-15 (rifinitura ritmo verticale).
     Valori originali: 144 / 96 / 200. La home resta ai valori originali
     tramite override body.page-home (gold standard preservato). */
  --section-y:       clamp(56px, 6vw, 104px);
  --section-y-tight: clamp(44px, 5vw, 76px);
  --section-y-loose: clamp(80px, 9vw, 148px);

  --header-h: 76px;
  --header-h-scrolled: 64px;

  /* ---------- Radius (clean modern: low) ---------- */
  --radius-none: 0;
  --radius-sm:   2px;
  --radius-md:   4px;
  --radius-lg:   8px;
  --radius-xl:   16px;
  --radius-pill: 999px;

  /* ---------- Shadows (subtle, premium) ---------- */
  --shadow-xs: 0 1px 2px rgba(10, 10, 10, 0.04);
  --shadow-sm: 0 2px 6px rgba(10, 10, 10, 0.04), 0 1px 2px rgba(10, 10, 10, 0.03);
  --shadow-md: 0 6px 16px rgba(10, 10, 10, 0.06), 0 2px 4px rgba(10, 10, 10, 0.04);
  --shadow-lg: 0 16px 40px rgba(10, 10, 10, 0.08), 0 6px 12px rgba(10, 10, 10, 0.05);
  --shadow-xl: 0 32px 64px rgba(10, 10, 10, 0.12), 0 12px 24px rgba(10, 10, 10, 0.06);
  --shadow-inset: inset 0 1px 0 rgba(255, 255, 255, 0.06);

  /* ---------- Motion (snappier for e-commerce) ---------- */
  --ease-out:    cubic-bezier(0.22, 1, 0.36, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --ease-snap:   cubic-bezier(0.4, 0, 0.2, 1);
  --duration-fast:   160ms;
  --duration-base:   260ms;
  --duration-slow:   420ms;
  --duration-reveal: 540ms;

  /* ---------- Z-index ---------- */
  --z-base:    1;
  --z-sticky:  50;
  --z-overlay: 100;
  --z-drawer:  200;
  --z-modal:   300;
  --z-toast:   400;
}

/* =========================================================
   RESET — minimal, modern
   ========================================================= */

*, *::before, *::after { box-sizing: border-box; }

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

body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--fs-body-md);
  line-height: var(--lh-body);
  letter-spacing: var(--tracking-body);
  color: var(--fg-default);
  background: var(--bg-page);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

/* Headings */
h1, h2, h3, h4, h5, h6 {
  margin: 0 0 var(--space-4);
  font-family: var(--font-display);
  font-weight: var(--fw-display);
  line-height: var(--lh-heading);
  letter-spacing: var(--tracking-heading);
  color: var(--fg-default);
}

h1 {
  font-size: var(--fs-display-lg);
  line-height: var(--lh-display);
  letter-spacing: var(--tracking-display);
  font-weight: var(--fw-display);
}

h2 {
  font-size: var(--fs-display-md);
  line-height: 1.08;
  letter-spacing: var(--tracking-display);
  font-weight: var(--fw-display);
}

h3 { font-size: var(--fs-display-sm); font-weight: var(--fw-display); }
h4 { font-size: var(--fs-heading-lg); font-weight: var(--fw-display); }
h5 { font-size: var(--fs-heading-md); font-weight: var(--fw-display-bold); }
h6 { font-size: var(--fs-heading-sm); font-weight: var(--fw-display-bold); }

p { margin: 0 0 var(--space-4); max-width: 75ch; }
p:last-child { margin-bottom: 0; }
.text-lead { font-size: var(--fs-body-lg); color: var(--fg-muted); max-width: 65ch; line-height: 1.55; }

a {
  color: inherit;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.22em;
  text-decoration-color: currentColor;
  transition: color var(--duration-fast) var(--ease-out),
              text-decoration-color var(--duration-fast) var(--ease-out);
}
/* :not(.btn) → i bottoni mantengono i propri colori di hover (il testo
   resta sempre leggibile, non viene ricolorato dal link-hover generico). */
a:not(.btn):hover { color: var(--brand); text-decoration-color: var(--brand); }
a:focus-visible {
  outline: 2px solid var(--brand);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
  text-decoration: none;
}

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

ul, ol { margin: 0 0 var(--space-4); padding-left: var(--space-5); }
li { margin-bottom: var(--space-2); }

code, kbd, samp, pre {
  font-family: var(--font-mono);
  font-size: 0.875em;
}

hr {
  border: 0;
  height: 1px;
  background: var(--border-default);
  margin: var(--space-8) 0;
}

::selection {
  background: var(--fg-default);
  color: var(--fg-inverse);
}

/* =========================================================
   LAYOUT PRIMITIVES
   ========================================================= */

.container {
  width: 100%;
  max-width: var(--container-max);
  margin-inline: auto;
  padding-inline: var(--gutter);
}
.container--narrow { max-width: var(--container-narrow); }
.container--wide   { max-width: var(--container-wide); }
.container--flush  { padding-inline: 0; }

.section {
  padding-block: var(--section-y);
  position: relative;
}
.section--tight { padding-block: var(--section-y-tight); }
.section--loose { padding-block: var(--section-y-loose); }
.section--flush-top    { padding-top: 0; }
.section--flush-bottom { padding-bottom: 0; }

.section--inverse {
  background: var(--bg-inverse);
  color: var(--fg-inverse);
}
.section--inverse h1,
.section--inverse h2,
.section--inverse h3,
.section--inverse h4,
.section--inverse h5,
.section--inverse h6 { color: var(--fg-inverse); }
.section--inverse .text-lead,
.section--inverse .text-muted { color: var(--fg-inverse-muted); }
.section--inverse a:not(.btn):hover { color: var(--brand-accent); }

.section--inverse-deep { background: var(--bg-inverse-deep); color: var(--fg-inverse); }
.section--surface       { background: var(--bg-surface); }
.section--surface-alt   { background: var(--bg-surface-alt); }
.section--surface-cream { background: var(--bg-surface-cream); }

/* Su sezioni inverse: cards più chiare e leggibili (no più heavy) */
.section--inverse .card,
.section--inverse-deep .card {
  background: var(--color-black-700);
  border-color: var(--border-inverse);
  color: var(--fg-inverse);
}
.section--inverse .card:hover,
.section--inverse-deep .card:hover {
  background: var(--color-black-650);
  border-color: var(--border-inverse-strong);
}
.section--inverse .card__title,
.section--inverse-deep .card__title { color: var(--fg-inverse); }
.section--inverse .card__desc,
.section--inverse-deep .card__desc { color: var(--fg-inverse-muted); }

/* Grid utilities */
.grid {
  display: grid;
  gap: var(--space-6);
}
.grid--sm { gap: var(--space-4); }
.grid--lg { gap: var(--space-7); }

.grid--2 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.grid--3 { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.grid--4 { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }

@media (min-width: 768px) {
  .grid--2-strict { grid-template-columns: 1fr 1fr; }
  .grid--3-strict { grid-template-columns: 1fr 1fr 1fr; }
  .grid--4-strict { grid-template-columns: 1fr 1fr 1fr 1fr; }
  .grid--asym-60-40 { grid-template-columns: 60% 40%; }
  .grid--asym-40-60 { grid-template-columns: 40% 60%; }
  .grid--asym-7-5   { grid-template-columns: 7fr 5fr; }
  .grid--asym-5-7   { grid-template-columns: 5fr 7fr; }
}

/* =========================================================
   COMPONENT: Eyebrow
   ========================================================= */

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-body);
  font-size: var(--fs-body-xxs);
  font-weight: var(--fw-body-bold);
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--fg-muted);
  margin-bottom: var(--space-4);
}
.eyebrow--brand { color: var(--brand); }
.eyebrow--bare  { margin-bottom: 0; }
.eyebrow::before {
  content: '';
  width: 24px;
  height: 1px;
  background: currentColor;
  display: inline-block;
}
.eyebrow--no-line::before { display: none; }

/* =========================================================
   COMPONENT: Button (v2 — sharper, more premium)
   ========================================================= */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: 48px;
  padding: var(--space-3) var(--space-6);
  font-family: var(--font-body);
  font-size: var(--fs-body-md);
  font-weight: var(--fw-body-medium);
  line-height: 1.2;
  letter-spacing: -0.005em;
  text-decoration: none;
  border: 1px solid transparent;
  border-radius: var(--radius-md);
  cursor: pointer;
  transition: background var(--duration-fast) var(--ease-snap),
              color var(--duration-fast) var(--ease-snap),
              border-color var(--duration-fast) var(--ease-snap),
              transform var(--duration-fast) var(--ease-snap);
  user-select: none;
  white-space: nowrap;
}
.btn:focus-visible {
  outline: 2px solid var(--brand);
  outline-offset: 3px;
}
.btn[disabled], .btn--disabled {
  opacity: 0.45;
  cursor: not-allowed;
  pointer-events: none;
}
.btn__icon {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  transition: transform var(--duration-fast) var(--ease-snap);
}
.btn:hover .btn__icon--right { transform: translateX(2px); }

.btn--primary {
  background: var(--fg-default);
  color: var(--fg-inverse);
  border-color: var(--fg-default);
}
.btn--primary:hover {
  background: var(--brand);
  color: var(--fg-inverse);
  border-color: var(--brand);
  text-decoration: none;
}

.btn--accent {
  background: var(--brand);
  color: var(--fg-inverse);
  border-color: var(--brand);
}
.btn--accent:hover {
  background: var(--brand-hover);
  color: var(--fg-inverse);
  border-color: var(--brand-hover);
  text-decoration: none;
}

.btn--ghost {
  background: transparent;
  color: var(--fg-default);
  border-color: var(--border-strong);
}
.btn--ghost:hover {
  background: var(--fg-default);
  color: var(--fg-inverse);
  border-color: var(--fg-default);
  text-decoration: none;
}

.section--inverse .btn--ghost {
  color: var(--fg-inverse);
  border-color: var(--border-inverse);
}
.section--inverse .btn--ghost:hover {
  background: var(--fg-inverse);
  color: var(--fg-default);
  border-color: var(--fg-inverse);
}

.btn--ghost-inverse {
  background: transparent;
  color: var(--fg-inverse);
  border-color: rgba(255,255,255,0.25);
}
.btn--ghost-inverse:hover {
  background: var(--fg-inverse);
  color: var(--fg-default);
  border-color: var(--fg-inverse);
  text-decoration: none;
}

.btn--link {
  padding: 0;
  background: transparent;
  color: var(--fg-default);
  border: 0;
  min-height: auto;
  text-decoration: none;
  font-weight: var(--fw-body-medium);
  border-bottom: 1px solid currentColor;
  border-radius: 0;
  padding-bottom: 2px;
}
.btn--link:hover { color: var(--brand); border-color: var(--brand); }

.btn--sm { min-height: 36px; padding: var(--space-2) var(--space-4); font-size: var(--fs-body-sm); }
.btn--lg { min-height: 56px; padding: var(--space-4) var(--space-8); font-size: var(--fs-body-lg); }
.btn--block { display: flex; width: 100%; }

/* =========================================================
   COMPONENT: Card
   ========================================================= */

.card {
  background: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-lg);
  padding: var(--space-7);
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  transition: border-color var(--duration-base) var(--ease-out),
              box-shadow   var(--duration-base) var(--ease-out),
              transform    var(--duration-base) var(--ease-out);
}
.card:hover {
  border-color: var(--border-strong);
  box-shadow: var(--shadow-md);
}
.card__title { font-size: var(--fs-heading-lg); margin: 0; }
.card__desc  { color: var(--fg-muted); margin: 0; }

/* Card variant: product (catalog) */
.card--product {
  padding: 0;
  overflow: hidden;
  background: var(--bg-surface);
  border-radius: var(--radius-lg);
  position: relative;
}
.card--product .card__media {
  aspect-ratio: 4 / 3;
  background: var(--bg-surface-alt);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-5);
}
.card--product .card__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  transition: transform var(--duration-slow) var(--ease-out);
}
.card--product:hover .card__media img { transform: scale(1.04); }
.card--product .card__body {
  padding: var(--space-5) var(--space-6) var(--space-6);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.card--product .card__title { font-size: var(--fs-heading-md); }
.card--product .card__meta {
  font-family: var(--font-mono);
  font-size: var(--fs-body-xs);
  color: var(--fg-muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: var(--space-1);
}
.card--product .card__cta {
  margin-top: var(--space-4);
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-body-sm);
  font-weight: var(--fw-body-medium);
  color: var(--fg-default);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  padding-bottom: 2px;
  width: fit-content;
  transition: border-color var(--duration-fast) var(--ease-snap),
              color var(--duration-fast) var(--ease-snap);
}
.card--product:hover .card__cta {
  color: var(--brand);
  border-color: var(--brand);
}

/* Card variant: feature (icon + title + text) */
.card--feature {
  background: transparent;
  border: 0;
  padding: 0;
  gap: var(--space-3);
}
.card--feature .card__icon {
  width: 40px;
  height: 40px;
  color: var(--brand);
  margin-bottom: var(--space-3);
}
.card--feature .card__title { font-size: var(--fs-heading-md); }
.card--feature .card__desc { font-size: var(--fs-body-md); }

/* Card variant: editorial (image + overlay caption) */
.card--editorial {
  padding: 0;
  background: var(--bg-inverse);
  color: var(--fg-inverse);
  border: 0;
  position: relative;
  overflow: hidden;
  aspect-ratio: 3 / 4;
}
.card--editorial img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--duration-slow) var(--ease-out);
}
.card--editorial:hover img { transform: scale(1.06); }
.card--editorial::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 30%, rgba(0,0,0,0.7) 100%);
}
.card--editorial .card__body {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: var(--space-6) var(--space-6) var(--space-5);
  z-index: 1;
  color: var(--fg-inverse);
}
.card--editorial .card__title { color: var(--fg-inverse); font-size: var(--fs-heading-lg); }

/* =========================================================
   COMPONENT: Spec table (mono values)
   ========================================================= */

.spec-table {
  width: 100%;
  border-collapse: collapse;
  margin: 0;
  font-size: var(--fs-body-sm);
}
.spec-table th,
.spec-table td {
  padding: var(--space-4) var(--space-2);
  text-align: left;
  border-bottom: 1px solid var(--border-default);
  vertical-align: top;
}
.spec-table th {
  color: var(--fg-muted);
  font-weight: var(--fw-body-medium);
  width: 40%;
}
.spec-table td {
  font-family: var(--font-mono);
  color: var(--fg-default);
  letter-spacing: 0;
}
.spec-table tr:last-child th,
.spec-table tr:last-child td { border-bottom: 0; }

/* =========================================================
   COMPONENT: Bullet list (red dot checklist — promoted from page-level)
   ========================================================= */

.bullet-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.bullet-list li {
  position: relative;
  padding-left: var(--space-6);
  margin: 0;
  font-size: var(--fs-body-md);
}
.bullet-list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.55em;
  width: 8px;
  height: 8px;
  background: var(--brand);
  border-radius: 50%;
}

/* =========================================================
   COMPONENT: Media (figure + caption)
   ========================================================= */

.media { margin: 0; display: flex; flex-direction: column; gap: var(--space-3); }
.media__caption {
  font-size: var(--fs-body-sm);
  color: var(--fg-muted);
  font-style: normal;
}
.media--framed img {
  border-radius: var(--radius-md);
  background: var(--bg-surface-alt);
}

/* =========================================================
   COMPONENT: Forms
   ========================================================= */

.form { display: flex; flex-direction: column; gap: var(--space-5); }
.form__field { display: flex; flex-direction: column; gap: var(--space-2); }
.form__label {
  font-size: var(--fs-body-sm);
  font-weight: var(--fw-body-medium);
  color: var(--fg-default);
}
.form__input,
.form__select,
.form__textarea {
  font-family: inherit;
  font-size: var(--fs-body-md);
  padding: var(--space-4) var(--space-4);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-md);
  background: var(--bg-surface);
  color: var(--fg-default);
  transition: border-color var(--duration-fast) var(--ease-snap),
              box-shadow var(--duration-fast) var(--ease-snap);
}
.form__input:focus-visible,
.form__select:focus-visible,
.form__textarea:focus-visible {
  outline: none;
  border-color: var(--fg-default);
  box-shadow: 0 0 0 3px rgba(10,10,10,0.06);
}
.form__textarea { resize: vertical; min-height: 140px; }
.form__error { font-size: var(--fs-body-sm); color: var(--brand); }

/* =========================================================
   COMPONENT: Pill / Tag
   ========================================================= */

.pill {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-pill);
  font-size: var(--fs-body-xs);
  font-weight: var(--fw-body-medium);
  letter-spacing: 0;
  color: var(--fg-default);
  background: var(--bg-surface);
  text-decoration: none;
  transition: background var(--duration-fast) var(--ease-snap),
              border-color var(--duration-fast) var(--ease-snap),
              color var(--duration-fast) var(--ease-snap);
}
.pill:hover { border-color: var(--fg-default); }
.pill--accent {
  background: var(--brand);
  color: var(--fg-inverse);
  border-color: var(--brand);
}
.pill--inverse {
  background: transparent;
  border-color: rgba(255,255,255,0.25);
  color: var(--fg-inverse);
}

/* =========================================================
   PAGE: scaffold for coded pages
   ========================================================= */

.page-coded { background: var(--bg-page); }

/* Hero — one per page (anti-slop rule 5) */
.section--hero {
  padding-block: var(--section-y-loose);
  position: relative;
  overflow: hidden;
}
.section--hero h1 {
  font-size: var(--fs-display-xl);
  line-height: var(--lh-display);
  letter-spacing: var(--tracking-display);
  font-weight: var(--fw-display);
  max-width: 18ch;
}
.section--hero .text-lead { font-size: var(--fs-body-lg); margin-top: var(--space-5); max-width: 50ch; }

.hero-cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-top: var(--space-7);
}

/* Section pre-title meta line (spec/category indicator) */
.section__meta {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  font-family: var(--font-mono);
  font-size: var(--fs-body-xs);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--fg-muted);
  margin-bottom: var(--space-3);
}
.section__meta-dot {
  width: 6px;
  height: 6px;
  background: var(--brand);
  border-radius: 50%;
  flex-shrink: 0;
}

/* =========================================================
   COMPONENT: Marquee text strip (brand statement)
   ========================================================= */

.marquee {
  overflow: hidden;
  border-block: 1px solid var(--border-default);
  padding-block: var(--space-5);
}
.marquee__track {
  display: flex;
  gap: var(--space-9);
  white-space: nowrap;
  font-family: var(--font-display);
  font-weight: var(--fw-display);
  font-size: clamp(2.5rem, 6vw, 5rem);
  letter-spacing: var(--tracking-display);
  color: var(--fg-default);
  animation: marquee-scroll 45s linear infinite;
  width: max-content;
}
.marquee__track > * {
  display: inline-flex;
  align-items: center;
  gap: var(--space-9);
}
.marquee__dot {
  display: inline-block;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--brand);
  flex-shrink: 0;
}
@keyframes marquee-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
  .marquee__track { animation: none; }
}

/* =========================================================
   UTILITIES
   ========================================================= */

.text-center { text-align: center; }
.text-muted  { color: var(--fg-muted); }
.text-brand  { color: var(--brand); }
.text-editorial {
  font-family: var(--font-editorial);
  font-style: italic;
  font-weight: 400;
}

.bg-surface     { background: var(--bg-surface); }
.bg-surface-alt { background: var(--bg-surface-alt); }
.bg-inverse     { background: var(--bg-inverse); color: var(--fg-inverse); }

.flex { display: flex; }
.flex-col { flex-direction: column; }
.flex-wrap { flex-wrap: wrap; }
.items-center { align-items: center; }
.items-start  { align-items: flex-start; }
.items-end    { align-items: flex-end; }
.justify-between { justify-content: space-between; }
.justify-center  { justify-content: center; }
.gap-2 { gap: var(--space-2); }
.gap-3 { gap: var(--space-3); }
.gap-4 { gap: var(--space-4); }
.gap-5 { gap: var(--space-5); }
.gap-6 { gap: var(--space-6); }

.stack > * + * { margin-top: var(--space-4); }
.stack-lg > * + * { margin-top: var(--space-7); }
.stack-xl > * + * { margin-top: var(--space-9); }

.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;
}

.divider {
  height: 1px;
  background: var(--border-default);
  margin-block: var(--space-7);
}
.divider--strong { background: var(--border-strong); }

/* =========================================================
   MOTION — reveal on intersection (opacity + transform only)
   ========================================================= */

.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity var(--duration-reveal) var(--ease-out),
              transform var(--duration-reveal) var(--ease-out);
  will-change: opacity, transform;
}
.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.reveal[style*="--stagger"] {
  transition-delay: calc(var(--stagger) * 60ms);
}

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

/* =========================================================
   SITE HEADER (coded — replaces Elementor TB header) — FULL WIDTH
   ========================================================= */

/* Override parent hello-elementor's 1140px constraint */
.site-header.header-full-width,
.site-footer.footer-full-width {
  max-width: 100% !important;
  width: 100% !important;
  margin: 0 !important;
}

.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: var(--z-sticky);
  width: 100%;
  background: rgba(255, 255, 255, 0.94);
  backdrop-filter: saturate(180%) blur(14px);
  -webkit-backdrop-filter: saturate(180%) blur(14px);
  border-bottom: 1px solid var(--border-default);
  transition: background var(--duration-fast) var(--ease-snap),
              box-shadow var(--duration-fast) var(--ease-snap);
}
.site-header.is-scrolled {
  background: rgba(255, 255, 255, 0.98);
  box-shadow: 0 2px 14px rgba(15, 15, 15, 0.06);
}
/* Compensa l'header fixed: spinge il contenuto sotto */
body { padding-top: var(--header-h); }
@supports not (padding-top: var(--header-h)) {
  body { padding-top: 64px; }
}
.site-header__inner {
  display: flex;
  align-items: center;
  gap: var(--space-6);
  min-height: var(--header-h);
  padding-block: var(--space-3);
  padding-inline: clamp(20px, 4vw, 64px);
  width: 100%;
  max-width: none;
  margin: 0;
}
.site-header__brand {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  flex-shrink: 0;
}
.site-header__brand:hover { text-decoration: none; }
.site-header__logo,
.site-header__brand img {
  height: 34px;
  width: auto;
  object-fit: contain;
  display: block;
}
.site-header__brand svg { height: 28px; width: auto; }

.site-nav {
  display: none;
  align-items: center;
  gap: 0;
  flex: 1;
  justify-content: center;
}
@media (min-width: 1100px) {
  .site-nav { display: flex; }
}

.site-nav__item {
  position: relative;
  display: flex;
  align-items: center;
}
.site-nav__link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--fs-body-sm);
  font-weight: var(--fw-body-medium);
  color: var(--fg-default);
  text-decoration: none;
  padding: var(--space-3) var(--space-3);
  border-radius: var(--radius-sm);
  letter-spacing: -0.005em;
  white-space: nowrap;
  transition: color var(--duration-fast) var(--ease-snap);
}
.site-nav__link:hover { color: var(--brand); }
.site-nav__link[aria-current="page"] { color: var(--brand); }
.site-nav__caret {
  opacity: 0.6;
  transition: transform var(--duration-fast) var(--ease-snap), opacity var(--duration-fast) var(--ease-snap);
}
.site-nav__item--has-children:hover > .site-nav__link .site-nav__caret,
.site-nav__item--has-children:focus-within > .site-nav__link .site-nav__caret {
  transform: rotate(180deg);
  opacity: 1;
}

/* Dropdown */
.site-nav__dropdown {
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translate(-50%, 8px);
  min-width: 240px;
  background: var(--bg-page);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  padding: var(--space-3);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  /* Hide with a 140ms grace period before fading + extra visibility delay
     so a brief mouse-out doesn't kill the menu mid-traversal. */
  transition: opacity 130ms var(--ease-snap) 60ms,
              transform 130ms var(--ease-snap) 60ms,
              visibility 0s linear 190ms;
  z-index: var(--z-overlay);
}
.site-nav__item--has-children:hover > .site-nav__dropdown,
.site-nav__item--has-children:focus-within > .site-nav__dropdown,
.site-nav__item--has-children:has(.site-nav__dropdown:hover) > .site-nav__dropdown {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
  pointer-events: auto;
  /* Open: instant — no delay. */
  transition: opacity var(--duration-fast) var(--ease-snap),
              transform var(--duration-fast) var(--ease-snap),
              visibility 0s;
}
/* hover gap fix — invisible bridge between link bottom and dropdown top.
   SOLO per le voci con dropdown semplice: queste sono position:relative,
   quindi il bridge resta locale alla voce (largo quanto la voce + 8px).
   Le voci MEGA sono escluse: hanno un bridge dedicato ancorato al link
   (.site-nav__item--mega .site-nav__link::after) — altrimenti, essendo il
   contenitore position:static, questo ::after diventerebbe largo quanto
   tutto l'header e "intrappolerebbe" il mouse. */
.site-nav__item--has-children:not(.site-nav__item--mega)::after {
  content: '';
  position: absolute;
  top: 100%;
  left: -8px;
  right: -8px;
  height: 18px;
}
.site-nav__dropdown-inner {
  display: flex;
  flex-direction: column;
}
.site-nav__dropdown-head {
  display: block;
  font-family: var(--font-mono);
  font-size: var(--fs-body-xxs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--brand);
  text-decoration: none;
  padding: var(--space-2) var(--space-3) var(--space-3);
  border-bottom: 1px solid var(--border-default);
  margin-bottom: var(--space-2);
}
.site-nav__dropdown-head:hover { color: var(--brand-hover); }
.site-nav__dropdown ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.site-nav__dropdown li { margin: 0; }
.site-nav__dropdown li a {
  display: block;
  padding: var(--space-2) var(--space-3);
  font-size: var(--fs-body-sm);
  font-weight: var(--fw-body-medium);
  color: var(--fg-default);
  text-decoration: none;
  border-radius: var(--radius-sm);
  transition: background var(--duration-fast) var(--ease-snap),
              color var(--duration-fast) var(--ease-snap);
  letter-spacing: -0.005em;
  white-space: nowrap;
}
.site-nav__dropdown li a:hover {
  background: #F5F5F5; /* hover neutro — niente beige */
  color: var(--brand);
}

/* Nav: new badge pill */
.site-nav__pill {
  display: inline-flex;
  align-items: center;
  height: 16px;
  padding: 0 6px;
  background: var(--brand);
  color: var(--fg-inverse);
  font-family: var(--font-mono);
  font-size: 9px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  border-radius: 2px;
  margin-left: var(--space-1);
}

/* =========================================================
   MEGAMENU (Atom/Magnum/Q/Tecnologie) — visual grid with thumbs
   ========================================================= */
.site-nav__item--mega { position: static; }
.site-nav__mega {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  width: 100%;
  background: var(--bg-page);
  border-top: 1px solid var(--border-default);
  border-bottom: 1px solid var(--border-default);
  box-shadow: var(--shadow-lg);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(-4px);
  /* Hide with grace period to forgive brief mouse-outs while traversing
     from the link to the panel. */
  transition: opacity 130ms var(--ease-snap) 60ms,
              transform 130ms var(--ease-snap) 60ms,
              visibility 0s linear 190ms;
  z-index: var(--z-overlay);
}
.site-nav__item--mega:hover > .site-nav__mega,
.site-nav__item--mega:focus-within > .site-nav__mega {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
  transition: opacity var(--duration-fast) var(--ease-snap),
              transform var(--duration-fast) var(--ease-snap),
              visibility 0s;
}

/* Scrim — velo scuro leggero dietro al mega panel.
   Separa visivamente il menu dal contenuto della pagina senza coprirlo
   del tutto. z-index 45: sopra la pagina, sotto header (50) e panel (100),
   così header e menu restano nitidi. pointer-events:none → non intrappola
   il mouse. Si attiva via :has() quando una voce mega è in hover/focus. */
.site-nav__scrim {
  position: fixed;
  inset: 0;
  z-index: 45;
  background: rgba(18, 18, 18, 0.20);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 130ms var(--ease-snap) 60ms,
              visibility 0s linear 190ms;
}
body:has(.site-nav__item--mega:hover) .site-nav__scrim,
body:has(.site-nav__item--mega:focus-within) .site-nav__scrim {
  opacity: 1;
  visibility: visible;
  transition: opacity 160ms var(--ease-snap), visibility 0s;
}
@media (max-width: 1099px) {
  .site-nav__scrim { display: none; }
}

/* Invisible bridge for full-width megamenu items.
   The parent .site-nav__item--mega is position:static (so the panel can span
   100vw via top:100% of the sticky header), which means the generic
   .site-nav__item--has-children::after bridge above lands below the WHOLE
   header — useless for the gap inside the header between the link bottom
   and the bottom of the header. So we anchor a bridge to the link itself,
   extending downward across the header padding to meet the panel top. */
.site-nav__item--mega .site-nav__link { position: relative; }
.site-nav__item--mega .site-nav__link::after {
  content: '';
  position: absolute;
  top: 100%;
  left: -16px;
  right: -16px;
  /* Cover the empty header space below the link + a few px into the panel. */
  height: 28px;
}
.site-nav__mega-inner {
  max-width: 1360px;
  margin: 0 auto;
  padding: var(--space-7) clamp(24px, 4vw, 64px);
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: clamp(28px, 4vw, 56px);
}
@media (max-width: 1199px) {
  .site-nav__mega-inner {
    grid-template-columns: 1fr;
    gap: var(--space-5);
    padding: var(--space-6) clamp(20px, 4vw, 48px);
  }
}
.site-nav__mega-head {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding-right: var(--space-5);
  border-right: 1px solid var(--border-default);
  align-self: start;
  position: sticky;
  top: var(--space-6);
}
@media (max-width: 1199px) {
  .site-nav__mega-head { border-right: 0; padding-right: 0; padding-bottom: var(--space-4); border-bottom: 1px solid var(--border-default); position: static; }
}
.site-nav__mega-tag {
  font-family: var(--font-mono);
  font-size: var(--fs-body-xxs);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--brand);
  font-weight: 600;
}
.site-nav__mega-head p {
  margin: 0;
  font-family: var(--font-display);
  font-size: var(--fs-heading-md);
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -0.025em;
  color: var(--fg-default);
  max-width: 18ch;
}

.site-nav__mega-grid {
  display: grid;
  gap: clamp(16px, 1.6vw, 24px);
}
.site-nav__mega-grid--2 { grid-template-columns: repeat(2, 1fr); }
.site-nav__mega-grid--3 { grid-template-columns: repeat(3, 1fr); }
.site-nav__mega-grid--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1199px) {
  .site-nav__mega-grid--3,
  .site-nav__mega-grid--4 { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 768px) {
  .site-nav__mega-grid { grid-template-columns: repeat(2, 1fr) !important; }
}

.site-nav__mega-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--space-3);
  padding: 6px 6px 10px;
  border-radius: var(--radius-md);
  text-decoration: none;
  color: inherit;
  transition: transform var(--duration-fast) var(--ease-snap),
              background var(--duration-fast) var(--ease-snap);
}
.site-nav__mega-card:hover {
  background: #F5F5F5; /* hover neutro — niente beige */
  text-decoration: none;
  color: inherit;
  transform: translateY(-2px);
}
.site-nav__mega-card:hover .site-nav__mega-name { color: var(--brand); }

.site-nav__mega-thumb {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  aspect-ratio: 16 / 10;
  max-height: 116px;
  background: transparent;
  border: 0;
  overflow: hidden;
  position: relative;
  padding: 0;
}
.site-nav__mega-thumb img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  transition: transform 480ms var(--ease-out, cubic-bezier(0.22, 1, 0.36, 1));
}
.site-nav__mega-card:hover .site-nav__mega-thumb img { transform: scale(1.04); }

.site-nav__mega-text {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 4px;
  min-width: 0;
  padding: 0 4px;
}
.site-nav__mega-name {
  font-family: var(--font-display);
  font-size: var(--fs-body-lg, 1.0625rem);
  font-weight: 500;
  letter-spacing: -0.015em;
  color: var(--fg-default);
  line-height: 1.2;
  transition: color var(--duration-fast) var(--ease-snap);
}
.site-nav__mega-sub {
  font-family: var(--font-mono);
  font-size: var(--fs-body-xxs);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--fg-muted);
  line-height: 1.4;
}

/* Tecnologie has 11 items → tighter grid for density without crowding */
.site-nav__mega-grid--4 .site-nav__mega-thumb { aspect-ratio: 16 / 10; max-height: 94px; }
.site-nav__mega-grid--4 .site-nav__mega-name { font-size: var(--fs-body-md, 1rem); }

.site-nav__mega-foot {
  grid-column: 1 / -1;
  padding-top: var(--space-4);
  border-top: 1px solid var(--border-default);
  margin-top: var(--space-3);
}

/* =========================================================
   MEGAMENU — TABBED variant (Serie: Atom / Magnum / Q)
   Left rail = sticky tab list of product lines
   Right pane = grid of products for the active tab
   ========================================================= */
.site-nav__mega--tabs .site-nav__mega-tabs {
  max-width: 1360px;
  margin: 0 auto;
  padding: var(--space-6) clamp(24px, 4vw, 64px);
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: clamp(28px, 4vw, 56px);
  /* niente min-height fissa: il pannello si adatta al contenuto
     (la rail delle linee ne definisce comunque l'altezza minima),
     così le linee con pochi prodotti — es. Magnum — non lasciano vuoti. */
}
@media (max-width: 1199px) {
  .site-nav__mega--tabs .site-nav__mega-tabs {
    grid-template-columns: 1fr;
    gap: var(--space-5);
    min-height: 0;
    padding: var(--space-5) clamp(20px, 4vw, 48px);
  }
}

.site-nav__mega-tabs-rail {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding-right: var(--space-4);
  border-right: 1px solid var(--border-default);
  align-self: start;
  position: sticky;
  top: var(--space-5);
}
@media (max-width: 1199px) {
  .site-nav__mega-tabs-rail {
    border-right: 0;
    padding-right: 0;
    padding-bottom: var(--space-4);
    border-bottom: 1px solid var(--border-default);
    position: static;
  }
}
.site-nav__mega-tabs-eyebrow {
  font-family: var(--font-mono);
  font-size: var(--fs-body-xxs);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--brand);
  font-weight: 600;
  padding: 0 12px var(--space-2);
}

.site-nav__mega-tab {
  display: grid;
  grid-template-columns: 64px 1fr auto;
  align-items: center;
  gap: var(--space-3);
  padding: 10px 12px;
  border-radius: var(--radius-md);
  text-decoration: none;
  color: inherit;
  background: transparent;
  border: 0;
  text-align: left;
  cursor: pointer;
  font: inherit;
  position: relative;
  transition: background var(--duration-fast) var(--ease-snap),
              color var(--duration-fast) var(--ease-snap);
}
.site-nav__mega-tab::before {
  content: "";
  position: absolute;
  left: -1px;
  top: 14px;
  bottom: 14px;
  width: 2px;
  background: var(--brand);
  border-radius: 2px;
  opacity: 0;
  transform: scaleY(0.4);
  transform-origin: center;
  transition: opacity var(--duration-fast) var(--ease-snap),
              transform var(--duration-fast) var(--ease-snap);
}
.site-nav__mega-tab:hover {
  background: #F5F5F5; /* hover neutro — niente beige */
  color: inherit;
  text-decoration: none;
}
.site-nav__mega-tab.is-active {
  background: #F0F0F0; /* tab attiva — neutro, un filo più marcato */
}
.site-nav__mega-tab.is-active::before {
  opacity: 1;
  transform: scaleY(1);
}
.site-nav__mega-tab.is-active .site-nav__mega-tab-name { color: var(--brand); }
.site-nav__mega-tab.is-active .site-nav__mega-tab-arrow { transform: translateX(2px); color: var(--brand); }

.site-nav__mega-tab-thumb {
  width: 64px;
  height: 64px;
  background: transparent;
  border: 0;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  flex-shrink: 0;
}
.site-nav__mega-tab-thumb img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
.site-nav__mega-tab-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.site-nav__mega-tab-name {
  font-family: var(--font-display);
  font-size: var(--fs-body-lg, 1.0625rem);
  font-weight: 500;
  letter-spacing: -0.015em;
  line-height: 1.2;
  color: var(--fg-default);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  transition: color var(--duration-fast) var(--ease-snap);
}
.site-nav__mega-tab-sub {
  font-family: var(--font-mono);
  font-size: var(--fs-body-xxs);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--fg-muted);
}
.site-nav__mega-tab-arrow {
  color: var(--fg-muted);
  transition: transform var(--duration-fast) var(--ease-snap),
              color var(--duration-fast) var(--ease-snap);
}

.site-nav__mega-tabs-panels {
  position: relative;
  min-width: 0;
}
.site-nav__mega-tabs-panel {
  display: none;
  animation: lm-mega-tab-fade var(--duration-base) var(--ease-out, cubic-bezier(0.22, 1, 0.36, 1));
}
.site-nav__mega-tabs-panel.is-active {
  display: block;
}
@keyframes lm-mega-tab-fade {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Inline pill (used inside tab names) */
.site-nav__pill--inline {
  display: inline-flex;
  align-items: center;
  height: 18px;
  padding: 0 6px;
  font-size: 9px;
  letter-spacing: 0.14em;
  font-family: var(--font-mono);
  text-transform: uppercase;
  background: var(--brand);
  color: #fff;
  border-radius: 3px;
  font-weight: 700;
}

/* Mobile drawer — tabbed group */
.site-drawer__tabs {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  padding: var(--space-3) 0 var(--space-4);
}
.site-drawer__tab-block { display: flex; flex-direction: column; gap: 4px; }
.site-drawer__tab-head {
  font-family: var(--font-mono);
  font-size: var(--fs-body-xxs);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--brand);
  font-weight: 600;
  text-decoration: none;
  padding: var(--space-2) 0;
  border-bottom: 1px solid var(--border-default);
  margin-bottom: 4px;
}
.site-drawer__tab-head:hover { color: var(--brand-hover); }
.site-nav__mega-cta {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-mono);
  font-size: var(--fs-body-xs);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--brand);
  text-decoration: none;
  font-weight: 600;
}
.site-nav__mega-cta:hover { color: var(--brand-hover); text-decoration: none; }
.site-nav__mega-cta svg { transition: transform var(--duration-fast) var(--ease-snap); }
.site-nav__mega-cta:hover svg { transform: translateX(2px); }

/* Drawer top-link (Home, no children) */
.site-drawer__top-link {
  display: block;
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: var(--fw-display);
  letter-spacing: -0.02em;
  color: var(--fg-default);
  text-decoration: none;
  padding: var(--space-4) 0;
  border-bottom: 1px solid var(--border-default);
}
.site-drawer__top-link:hover { color: var(--brand); }

.site-header__actions {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-left: auto;
}

.lang-switcher {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
.lang-switcher a {
  color: var(--fg-muted);
  text-decoration: none;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
}
.lang-switcher a[aria-current="true"],
.lang-switcher a.is-active { color: var(--fg-default); }

/* === Flag icons === */
.lang-switcher__flag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 20px;
  padding: 0 !important;
  border-radius: 3px;
  overflow: hidden;
  border: 1px solid rgba(0,0,0,0.10);
  opacity: 0.55;
  transition: opacity 180ms ease, transform 180ms ease, border-color 180ms ease;
}
.lang-switcher__flag svg {
  display: block;
  width: 100%;
  height: 100%;
}
.lang-switcher__flag:hover {
  opacity: 1;
  transform: translateY(-1px);
  border-color: rgba(0,0,0,0.25);
  text-decoration: none;
}
.lang-switcher__flag.is-active {
  opacity: 1;
  border-color: var(--brand, #A61D1D);
  box-shadow: 0 0 0 2px rgba(166, 29, 29, 0.18);
}

.site-header__cta { display: none; }
@media (min-width: 768px) {
  .site-header__cta { display: inline-flex; }
}

/* Mobile drawer toggle */
.site-header__toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: transparent;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-md);
  cursor: pointer;
  color: var(--fg-default);
}
@media (min-width: 1024px) {
  .site-header__toggle { display: none; }
}
.site-header__toggle svg { width: 18px; height: 18px; }

.site-drawer {
  position: fixed;
  inset: 0;
  background: var(--bg-page);
  z-index: var(--z-drawer);
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform var(--duration-base) var(--ease-snap);
  visibility: hidden;
}
.site-drawer.is-open {
  transform: translateX(0);
  visibility: visible;
}
.site-drawer__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-3) var(--gutter);
  border-bottom: 1px solid var(--border-default);
  min-height: var(--header-h);
}
.site-drawer__nav {
  padding: var(--space-5) var(--gutter);
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  flex: 1;
  overflow-y: auto;
}
.site-drawer__group {
  border-bottom: 1px solid var(--border-default);
}
.site-drawer__group[open] .site-drawer__caret { transform: rotate(180deg); }
.site-drawer__group summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  list-style: none;
  cursor: pointer;
  padding: var(--space-4) 0;
}
.site-drawer__group summary::-webkit-details-marker { display: none; }
.site-drawer__group summary > a {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: var(--fw-display);
  letter-spacing: -0.02em;
  color: var(--fg-default);
  text-decoration: none;
  flex: 1;
}
.site-drawer__group summary > a:hover { color: var(--brand); }
.site-drawer__caret {
  color: var(--fg-subtle);
  transition: transform var(--duration-fast) var(--ease-snap);
  margin-left: var(--space-3);
  flex-shrink: 0;
}
.site-drawer__sublist {
  list-style: none;
  padding: 0 0 var(--space-4);
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.site-drawer__sublist li { margin: 0; }
.site-drawer__sublist a {
  display: block;
  font-family: var(--font-body);
  font-size: var(--fs-body-md);
  font-weight: var(--fw-body-medium);
  color: var(--fg-muted);
  text-decoration: none;
  padding: var(--space-2) var(--space-3);
}
.site-drawer__sublist a:hover { color: var(--brand); }
.site-drawer__footer {
  padding: var(--space-5) var(--gutter);
  border-top: 1px solid var(--border-default);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

/* =========================================================
   SITE FOOTER (coded) — FULL WIDTH, 5-col rich
   ========================================================= */

.site-footer {
  background: var(--bg-inverse);
  color: var(--fg-inverse);
  margin-top: var(--space-9);
  width: 100%;
}
.site-footer__inner {
  padding-block: var(--space-9) var(--space-6);
  padding-inline: clamp(20px, 4vw, 64px);
  width: 100%;
  max-width: none;
}

.site-footer__top {
  display: grid;
  gap: var(--space-7);
  grid-template-columns: 1fr;
}
@media (min-width: 768px) {
  .site-footer__top { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
  .site-footer__top { grid-template-columns: 2fr 1fr 1fr 1fr 1.2fr; gap: var(--space-7); }
}

.site-footer__brand {
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}
.site-footer__logo img {
  height: 38px;
  width: auto;
  filter: brightness(0) invert(1);
  display: block;
}
.site-footer__statement {
  color: var(--fg-inverse-muted);
  max-width: 38ch;
  font-size: var(--fs-body-sm);
  line-height: 1.6;
  margin: 0;
}
.site-footer__social {
  display: flex;
  gap: var(--space-3);
  margin-top: var(--space-2);
}
.site-footer__social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: var(--radius-md);
  color: var(--fg-inverse-muted);
  text-decoration: none;
  transition: background var(--duration-fast) var(--ease-snap),
              border-color var(--duration-fast) var(--ease-snap),
              color var(--duration-fast) var(--ease-snap);
}
.site-footer__social a:hover {
  background: var(--brand);
  border-color: var(--brand);
  color: var(--fg-inverse);
}

.site-footer__col h3 {
  color: var(--fg-inverse);
  font-family: var(--font-body);
  font-size: var(--fs-body-xs);
  font-weight: var(--fw-body-bold);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  margin: 0 0 var(--space-4);
}
.site-footer__col ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.site-footer__col a {
  color: var(--fg-inverse-muted);
  text-decoration: none;
  font-size: var(--fs-body-sm);
  line-height: 1.5;
  transition: color var(--duration-fast) var(--ease-snap);
}
.site-footer__col a:hover { color: var(--fg-inverse); }

/* Contacts column */
.site-footer__contacts { display: flex; flex-direction: column; gap: var(--space-4); }
.site-footer__address {
  font-style: normal;
  color: var(--fg-inverse-muted);
  font-size: var(--fs-body-sm);
  line-height: 1.6;
}
.site-footer__address strong {
  color: var(--fg-inverse);
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: -0.01em;
}
.site-footer__hours {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: var(--fs-body-sm);
  color: var(--fg-inverse-muted);
}
.site-footer__hours-label {
  font-family: var(--font-mono);
  font-size: var(--fs-body-xxs);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--fg-inverse-muted);
}
.site-footer__hours span:nth-child(2) {
  color: var(--fg-inverse);
  font-weight: 500;
}
.site-footer__channels {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.site-footer__channels a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-3);
  color: var(--fg-inverse);
  text-decoration: none;
  font-size: var(--fs-body-sm);
  font-weight: 500;
}
.site-footer__channels a:hover { color: var(--brand-accent); }
.site-footer__channels svg { color: var(--brand-accent); flex-shrink: 0; }

/* EU funding disclosure */
.site-footer__funding {
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
  padding: var(--space-5);
  margin-top: var(--space-8);
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: var(--radius-md);
  color: var(--fg-inverse-muted);
  font-size: var(--fs-body-xs);
  line-height: 1.6;
}
.site-footer__funding-icon {
  color: var(--brand-accent);
  flex-shrink: 0;
  margin-top: 2px;
}
.site-footer__funding p { margin: 0; max-width: none; }
.site-footer__funding strong { color: var(--fg-inverse); font-weight: 600; }
.site-footer__funding-cup {
  display: inline-block;
  font-family: var(--font-mono);
  background: rgba(255,255,255,0.06);
  padding: 2px var(--space-2);
  border-radius: var(--radius-sm);
  color: var(--fg-inverse);
}

/* Bottom legal */
.site-footer__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding-top: var(--space-5);
  margin-top: var(--space-6);
  border-top: 1px solid rgba(255,255,255,0.1);
  color: var(--fg-inverse-muted);
  font-size: var(--fs-body-xs);
  line-height: 1.6;
}
.site-footer__bottom a {
  color: var(--fg-inverse-muted);
  text-decoration: none;
}
.site-footer__bottom a:hover { color: var(--fg-inverse); }
.site-footer__legal-left strong {
  color: var(--fg-inverse);
  font-family: var(--font-display);
  font-weight: 600;
}
.site-footer__legal-links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-5);
}

/* =========================================================
   PRINT
   ========================================================= */

@media print {
  body { background: white; color: black; }
  .site-header, .site-footer { display: none; }
  .section { padding-block: 24px; }
  a { text-decoration: none; }
  .section--inverse { background: white; color: black; }
}

/* =========================================================
   PAGINA DEALERS — Rete rivenditori (template page-dealers.php)
   Palette nero/bianco/rosso, rosso solo accento. Nessun beige.
   ========================================================= */
.page-dealers { background: var(--bg-page); }

/* --- Hero --- */
.dealers-hero {
  padding-block: clamp(var(--space-7), 6vw, var(--space-9)) var(--space-7);
  border-bottom: 1px solid var(--border-default);
}
.dealers-hero__inner { display: flex; flex-direction: column; gap: var(--space-4); }
.dealers-hero__crumbs {
  display: flex; gap: var(--space-2); align-items: center;
  font-family: var(--font-mono); font-size: var(--fs-body-xxs);
  text-transform: uppercase; letter-spacing: 0.1em; color: var(--fg-muted);
}
.dealers-hero__crumbs a { color: var(--fg-muted); text-decoration: none; }
.dealers-hero__crumbs a:hover { color: var(--brand); }
.dealers-hero__eyebrow {
  margin: 0; font-family: var(--font-mono); font-size: var(--fs-body-xs);
  text-transform: uppercase; letter-spacing: 0.16em; color: var(--brand); font-weight: 600;
}
.dealers-hero__title {
  margin: 0; max-width: 16ch;
  font-family: var(--font-display); font-size: var(--fs-display-md);
  font-weight: var(--fw-display); line-height: 1.05; letter-spacing: -0.03em;
  color: var(--fg-strong);
}
.dealers-hero__title-em {
  font-family: var(--font-editorial); font-style: italic;
  font-weight: 400; letter-spacing: -0.01em;
}
.dealers-hero__lede {
  margin: 0; max-width: 56ch;
  font-size: var(--fs-body-lg); line-height: 1.55; color: var(--fg-muted);
}
.dealers-hero__stats {
  display: flex; flex-wrap: wrap; gap: var(--space-7);
  margin: var(--space-3) 0 0; padding-top: var(--space-5);
  border-top: 1px solid var(--border-default);
}
.dealers-hero__stats div { display: flex; flex-direction: column; gap: 2px; }
.dealers-hero__stats dt {
  font-family: var(--font-mono); font-size: var(--fs-body-xxs);
  text-transform: uppercase; letter-spacing: 0.12em; color: var(--fg-subtle); order: 2;
}
.dealers-hero__stats dd {
  margin: 0; font-family: var(--font-display); font-size: var(--fs-display-sm);
  font-weight: var(--fw-display); line-height: 1; color: var(--fg-strong); order: 1;
}

/* --- Toolbar ricerca/filtro --- */
.dealers-toolbar {
  position: sticky; top: var(--header-h); z-index: 30;
  background: rgba(255, 255, 255, 0.94);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--border-default);
}
.dealers-toolbar__inner {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3);
  padding-block: var(--space-3);
}
.dealers-search {
  position: relative; display: flex; align-items: center;
  flex: 1 1 280px; min-width: 220px;
}
.dealers-search svg {
  position: absolute; left: 14px; color: var(--fg-subtle); pointer-events: none;
}
.dealers-search input {
  width: 100%; padding: 11px 14px 11px 38px;
  font-family: var(--font-body); font-size: var(--fs-body-sm); color: var(--fg-default);
  background: var(--color-white-50);
  border: 1px solid #E6E6E6; border-radius: var(--radius-md);
  transition: border-color var(--duration-fast) var(--ease-snap);
}
.dealers-search input:focus { outline: none; border-color: var(--brand); }
.dealers-filter select {
  padding: 11px 36px 11px 14px;
  font-family: var(--font-body); font-size: var(--fs-body-sm); color: var(--fg-default);
  background: var(--color-white-50);
  border: 1px solid #E6E6E6; border-radius: var(--radius-md);
  cursor: pointer; appearance: none; -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16' fill='none' stroke='%23353535' stroke-width='2'%3E%3Cpath d='M3 6l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 13px center;
}
.dealers-filter select:focus { outline: none; border-color: var(--brand); }
.dealers-toolbar__count {
  margin: 0; font-family: var(--font-mono); font-size: var(--fs-body-xs);
  color: var(--fg-muted); white-space: nowrap;
}

/* --- Lista / blocchi / gruppi --- */
.dealers-list { padding-block: var(--space-8) var(--space-9); }
.dealers-block { margin-bottom: var(--space-8); }
.dealers-block:last-of-type { margin-bottom: 0; }
.dealers-block[hidden] { display: none; }
.dealers-block__title {
  margin: 0 0 var(--space-5);
  font-family: var(--font-display); font-size: var(--fs-display-sm);
  font-weight: var(--fw-display); letter-spacing: -0.025em; color: var(--fg-strong);
}
.dealers-group { margin-bottom: var(--space-6); }
.dealers-group[hidden] { display: none; }
.dealers-group__title {
  display: flex; align-items: center; gap: var(--space-2);
  margin: 0 0 var(--space-4); padding-bottom: var(--space-2);
  border-bottom: 1px solid var(--border-default);
  font-family: var(--font-mono); font-size: var(--fs-body-xs);
  text-transform: uppercase; letter-spacing: 0.12em;
  font-weight: 600; color: var(--fg-default);
}
.dealers-group__count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 20px; height: 18px; padding: 0 6px;
  font-size: 10px; letter-spacing: 0.04em;
  background: var(--brand); color: #fff; border-radius: var(--radius-pill);
}
.dealers-grid {
  display: grid; gap: var(--space-4);
  grid-template-columns: repeat(auto-fill, minmax(258px, 1fr));
}

/* --- Card dealer --- */
.dealer-card {
  display: flex; flex-direction: column; gap: var(--space-3);
  padding: var(--space-4) var(--space-4) var(--space-3);
  background: var(--color-white-50);
  border: 1px solid #E6E6E6; border-radius: var(--radius-lg);
  transition: border-color var(--duration-fast) var(--ease-snap),
              box-shadow var(--duration-fast) var(--ease-snap),
              transform var(--duration-fast) var(--ease-snap);
}
.dealer-card[hidden] { display: none; }
.dealer-card:hover {
  border-color: #D4D4D4; box-shadow: var(--shadow-md); transform: translateY(-2px);
}
.dealer-card__name {
  margin: 0; font-family: var(--font-display); font-size: var(--fs-body-lg);
  font-weight: var(--fw-body-bold); line-height: 1.25; letter-spacing: -0.015em;
  color: var(--fg-strong);
}
.dealer-card__place {
  display: flex; align-items: flex-start; gap: 6px; margin: 0;
  font-size: var(--fs-body-sm); line-height: 1.4; color: var(--fg-muted);
}
.dealer-card__place svg { flex-shrink: 0; margin-top: 2px; color: var(--brand); }
.dealer-card__contacts {
  list-style: none; margin: auto 0 0; padding: var(--space-3) 0 0;
  display: flex; flex-direction: column; gap: 6px;
  border-top: 1px solid #EDEDED;
}
.dealer-card__contacts a {
  display: flex; align-items: center; gap: 8px;
  font-size: var(--fs-body-sm); color: var(--fg-default); text-decoration: none;
  transition: color var(--duration-fast) var(--ease-snap);
  word-break: break-word;
}
.dealer-card__contacts a:hover { color: var(--brand); }
.dealer-card__contacts svg { flex-shrink: 0; color: var(--fg-subtle); }
.dealer-card__contacts a:hover svg { color: var(--brand); }

.dealers-noresults {
  margin: 0; padding: var(--space-7) 0; text-align: center;
  font-size: var(--fs-body-md); color: var(--fg-muted);
}
.dealers-empty-state {
  padding-block: var(--space-9); text-align: center;
  font-size: var(--fs-body-md); color: var(--fg-muted);
}
.dealers-empty-state a { color: var(--brand); }

/* --- CTA finale (sezione scura, unica) --- */
.dealers-cta { background: var(--color-black-800); color: var(--fg-inverse); }
.dealers-cta__inner {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: var(--space-5); padding-block: clamp(var(--space-7), 5vw, var(--space-8));
}
.dealers-cta__title {
  margin: 0 0 var(--space-2);
  font-family: var(--font-display); font-size: var(--fs-heading-lg);
  font-weight: var(--fw-display); letter-spacing: -0.02em;
}
.dealers-cta__text {
  margin: 0; max-width: 48ch;
  font-size: var(--fs-body-md); line-height: 1.55; color: var(--fg-inverse-muted);
}

@media (max-width: 600px) {
  .dealers-hero__stats { gap: var(--space-5); }
  .dealers-toolbar__inner { gap: var(--space-2); }
  .dealers-search, .dealers-filter { flex: 1 1 100%; }
  .dealers-filter select { width: 100%; }
  .dealers-toolbar__count { width: 100%; }
  .dealers-grid { grid-template-columns: 1fr; }
  .dealers-cta__inner { flex-direction: column; align-items: flex-start; }
}

/* ─────────────────────────── Lorenz Marine carousel controls (auto-injected by JS) ─────────────────────────── */
.lm-carousel-injected { position: relative; }
.lm-carousel__btn {
  position: absolute;
  top: 50%; transform: translateY(-50%);
  z-index: 10;
  width: 44px; height: 44px;
  display: inline-flex; align-items: center; justify-content: center;
  background: #A61D1D !important;
  background-color: #A61D1D !important;
  border: 0 !important;
  border-radius: 50%;
  color: #fff !important;
  cursor: pointer;
  box-shadow: none !important;
  transition: background 200ms, color 200ms, transform 200ms;
  -webkit-appearance: none; appearance: none;
  padding: 0;
  opacity: 1 !important;
  mix-blend-mode: normal !important;
  isolation: isolate;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  filter: none !important;
}
.lm-carousel__btn:hover {
  background: #6B0F0F !important;
  background-color: #6B0F0F !important;
  color: #fff !important;
  transform: translateY(-50%) scale(1.05);
}
.lm-carousel__btn svg {
  color: #fff !important;
  stroke: #fff !important;
  opacity: 1 !important;
}
.lm-carousel__btn:focus-visible {
  outline: 2px solid var(--brand, #A61D1D);
  outline-offset: 2px;
}
.lm-carousel__btn--prev { left: var(--space-3, 12px); }
.lm-carousel__btn--next { right: var(--space-3, 12px); }
.lm-carousel__btn svg { display: block; }
@media (max-width: 600px) {
  .lm-carousel__btn { width: 36px; height: 36px; }
}

/* =========================================================
   BACK-TO-TOP BUTTON (2026-05-26)
   ========================================================= */
.lm-back-to-top {
  position: fixed;
  right: 66px;
  bottom: 80px;
  z-index: 2147483647;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.15);
  background: var(--color-black-800, #171717);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 10px 30px rgba(0,0,0,0.25);
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 220ms ease-out, transform 220ms ease-out, background 180ms ease-out;
  padding: 0;
}
.lm-back-to-top[hidden] { display: none; }
.lm-back-to-top.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.lm-back-to-top:hover {
  background: var(--brand, #A61D1D);
  border-color: var(--brand, #A61D1D);
}
.lm-back-to-top:focus-visible {
  outline: 2px solid var(--brand-accent, #DC0F0F);
  outline-offset: 3px;
}
@media (prefers-reduced-motion: reduce) {
  .lm-back-to-top { transition: none; }
}

/* =========================================================
   SINGLE ARTICLE — Related articles fallback logo (2026-05-26)
   Loop items without post-thumbnail show Lorenz logo placeholder
   ========================================================= */
.e-loop-item:not(.has-post-thumbnail) .elementor-element-87206fb {
  min-height: 180px;
  background-color: #f5f5f5;
  background-image: url('/wp-content/uploads/2018/08/Logo_LORENZMARINE-03.png');
  background-repeat: no-repeat;
  background-position: center center;
  background-size: 55% auto;
  opacity: 0.85;
}
/* Ensure consistent height for items WITH images (less crop) */
.e-loop-item .elementor-widget-image img {
  width: 100% !important;
  height: auto !important;
  max-height: 220px !important;
  object-fit: contain !important;
  background: #f5f5f5;
  padding: 12px;
}

/* =========================================================
   WOOCOMMERCE — SINGLE PRODUCT (2026-05-27)
   Template PHP custom in woocommerce/single-product.php +
   content-single-product.php. Lo stile vive sotto le classi
   .lm-product__* per scoped totale. NON tocca cart/checkout.
   ========================================================= */

/* ---------- LAYOUT WRAPPER ---------- */
.lm-product-page {
  background: var(--bg-page);
  padding: var(--space-7) 0 var(--space-10);
}
.lm-product__container {
  width: 100%;
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 clamp(20px, 4vw, 64px);
}

/* ---------- HERO ---------- */
.lm-product__hero {
  padding-bottom: var(--space-9);
}
.lm-product__hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: clamp(32px, 5vw, 80px);
  align-items: center;
}

/* GALLERY (col sx) — main image only, no card, no lens, hover scale.
   mix-blend-mode: multiply elimina il bianco residuo dei JPG sorgente
   (il bianco × bg-page ≈ bg-page, quindi sparisce visivamente).
   Animazione ingresso applicata al wrapper (non all'img) per non
   collidere con lo zoom hover sull'<img>. */
.lm-product__gallery-col { min-width: 0; }
body.lm-hero-ready .lm-product__gallery-col {
  opacity: 0;
  transform: translateX(-200px);
  animation: lmProductHeroImageIn 1500ms cubic-bezier(0.22, 0.61, 0.36, 1) 150ms forwards;
}
body.lm-hero-ready .lm-product__summary-col {
  opacity: 0;
  transform: translateX(200px);
  animation: lmProductHeroTextIn 1500ms cubic-bezier(0.22, 0.61, 0.36, 1) 350ms forwards;
}
@keyframes lmProductHeroImageIn {
  to { opacity: 1; transform: translateX(0); }
}
@keyframes lmProductHeroTextIn {
  to { opacity: 1; transform: translateX(0); }
}
/* Floating soft continuo sul wrapper di perspective — visibile ma non distrattivo.
   Si combina col tilt JS perché il floating è su translate, il tilt su rotate. */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .lm-product__hero-perspective {
    animation: lmProductHeroFloat 9s ease-in-out infinite;
  }
  @keyframes lmProductHeroFloat {
    0%   { translate: 0 0; }
    50%  { translate: 0 -10px; }
    100% { translate: 0 0; }
  }
}
@media (max-width: 768px) {
  body.lm-hero-ready .lm-product__gallery-col {
    transform: translateY(40px);
    animation-name: lmProductHeroImageInMobile;
  }
  body.lm-hero-ready .lm-product__summary-col {
    transform: translateY(40px);
    animation-name: lmProductHeroTextInMobile;
  }
  @keyframes lmProductHeroImageInMobile {
    to { opacity: 1; transform: translateY(0); }
  }
  @keyframes lmProductHeroTextInMobile {
    to { opacity: 1; transform: translateY(0); }
  }
}
@media (prefers-reduced-motion: reduce) {
  .lm-product__gallery-col,
  .lm-product__summary-col {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
}
/* HERO IMAGE — wrapper FIGURE e PERSPECTIVE: niente card, niente bordo.
   IMPORTANTE: NON includere `*` né `.lm-product__hero-img`, perché
   quest'ultimo ha `background-image` inline ed è LUI a dover restare. */
.lm-product__hero-image,
.lm-product__hero-perspective {
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}
.lm-product__hero-image {
  margin: 0;
  padding: 0;
  border-radius: 0;
  overflow: hidden;
  width: 100%;
  display: block;
  position: relative;
  perspective: 1400px;
  isolation: auto;
  /* CSS vars settate da JS al mousemove (default 0 = nessuna rotazione) */
  --rx: 0deg;
  --ry: 0deg;
}
/* Wrapper intermedio: tilt 3D basato su --rx / --ry (JS-driven).
   IMPORTANTE: niente transform-style:preserve-3d e niente proprietà che
   creano un blend-isolation group, altrimenti mix-blend-mode si isola. */
.lm-product__hero-perspective {
  width: 100%;
  height: auto;
  display: block;
  padding: 0;
  margin: 0;
  transform: rotateX(var(--rx)) rotateY(var(--ry));
  transition: transform 500ms cubic-bezier(0.22, 0.61, 0.36, 1);
  will-change: transform;
}
/* HERO IMG: ora è un <div role="img"> con background-image + blend-mode.
   background-blend-mode opera nel rendering dello sfondo dell'elemento,
   immune agli isolation context dei parent (transform/opacity/filter).
   Il bianco del JPG (#FFF) × bg-page (#FAFAFA) = #FAFAFA → sparisce. */
.lm-product__hero-img {
  width: 100%;
  display: block;
  margin: 0 auto;
  aspect-ratio: 5 / 6;
  min-height: 360px;
  max-height: 640px;
  background-color: var(--bg-page);
  background-repeat: no-repeat;
  background-position: center center;
  background-size: contain;
  background-blend-mode: multiply;
  transition: transform 700ms cubic-bezier(0.22, 0.61, 0.36, 1);
  will-change: transform;
  transform-origin: center center;
}
/* L'<img> tag accanto serve a SEO/preload/screen-reader fallback ma è invisibile */
.lm-product__hero-img-sr {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
/* Zoom hover — più evidente (1.22 desktop) */
@media (hover: hover) and (pointer: fine) {
  .lm-product__hero-image:hover .lm-product__hero-img {
    transform: scale(1.22);
  }
}
/* Disabilita tilt su touch */
@media (hover: none) {
  .lm-product__hero-perspective {
    transform: none !important;
  }
}
@media (prefers-reduced-motion: reduce) {
  .lm-product__hero-img,
  .lm-product__hero-image:hover .lm-product__hero-img,
  .lm-product__hero-perspective {
    transition: none;
    transform: none !important;
  }
}

/* Disattiva qualsiasi residuo WooCommerce gallery / lente / thumbs / lightbox
   sulle pagine prodotto: il template usa <figure.lm-product__hero-image>. */
.lm-product__gallery-col .woocommerce-product-gallery,
.lm-product__gallery-col .woocommerce-product-gallery__wrapper,
.lm-product__gallery-col .woocommerce-product-gallery__image:not(:first-child),
.lm-product__gallery-col .woocommerce-product-gallery__trigger,
.lm-product__gallery-col .flex-control-thumbs,
.lm-product__gallery-col .flex-control-nav {
  display: none !important;
}
body.single-product .pswp,
body.single-product .zoomImg,
body.single-product .woocommerce-product-gallery__trigger { display: none !important; }

/* SUMMARY (col dx) */
.lm-product__summary-col {
  min-width: 0;
}
.lm-product__summary {
  max-width: 540px;
  margin: 0;
  padding: 0;
}
.lm-product__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-mono);
  font-size: 0.78rem;
  font-weight: var(--fw-body-medium);
  letter-spacing: 0.08em;
  color: var(--fg-muted);
  text-transform: uppercase;
  margin: 0 0 var(--space-3);
}
.lm-product__brand,
.lm-product__category { display: inline; }
.lm-product__sep { opacity: 0.5; }
.lm-product__summary h1.product_title,
.lm-product .product_title {
  font-family: var(--font-display);
  font-size: clamp(2rem, 3.6vw, 3rem);
  line-height: 1.05;
  letter-spacing: var(--tracking-display);
  font-weight: var(--fw-display);
  color: var(--fg-default);
  margin: 0 0 var(--space-6);
  text-wrap: balance;
}
.lm-product__short-desc {
  margin: 0 0 var(--space-7);
  font-size: var(--fs-body-md);
  line-height: 1.6;
  color: var(--fg-default);
}
.lm-product__short-desc p { margin: 0 0 var(--space-3); max-width: 56ch; }
.lm-product__short-desc p:last-child { margin: 0; }
.lm-product__short-desc a {
  color: var(--fg-default);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.22em;
}
.lm-product__short-desc a:hover { color: var(--brand); }

/* Hide duplicate WC short-desc rendered by some hooks */
.lm-product__summary .woocommerce-product-details__short-description {
  display: none;
}

/* BUY block — distanza ariosa da titolo/descrizione */
.lm-product__buy {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  margin: 0 0 var(--space-7);
}
/* Fallback: se non c'è short-desc, garantisci comunque respiro dal titolo */
.lm-product__summary h1.product_title + .lm-product__buy {
  margin-top: var(--space-2);
}
.lm-product__price .price,
.lm-product__price .woocommerce-Price-amount {
  font-family: var(--font-display);
  font-size: var(--fs-heading-lg);
  font-weight: var(--fw-display-bold);
  color: var(--fg-default);
  line-height: 1.1;
}
.lm-product__price .price { margin: 0; }
.lm-product__price del { opacity: 0.5; margin-right: var(--space-3); }
.lm-product__price ins { background: transparent; text-decoration: none; color: var(--brand); }

.lm-product__cta-group {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  align-items: center;
}
.lm-product__cta-primary svg {
  transition: transform var(--duration-fast) var(--ease-snap);
}
.lm-product__cta-primary:hover svg {
  transform: translateX(3px);
}

/* WC add-to-cart (per prodotti con prezzo, se mai presenti) */
.lm-product__cart form.cart {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
  margin: 0;
}
.lm-product__cart form.cart .quantity {
  display: inline-flex;
  background: var(--bg-surface);
  border: 1px solid var(--color-white-300);
  border-radius: var(--radius-md);
  overflow: hidden;
  height: 48px;
}
.lm-product__cart .qty {
  border: 0;
  background: transparent;
  width: 70px;
  height: 48px;
  text-align: center;
  font-family: var(--font-body);
  font-size: var(--fs-body-md);
  font-weight: var(--fw-body-medium);
  color: var(--fg-default);
}
.lm-product__cart .single_add_to_cart_button,
.lm-product__cart button[name="add-to-cart"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: 48px;
  padding: var(--space-3) var(--space-6);
  font-family: var(--font-body);
  font-size: var(--fs-body-md);
  font-weight: var(--fw-body-medium);
  background: var(--fg-default);
  color: var(--fg-inverse);
  border: 1px solid var(--fg-default);
  border-radius: var(--radius-md);
  cursor: pointer;
  text-transform: none;
  text-decoration: none;
  transition: background var(--duration-fast) var(--ease-snap),
              border-color var(--duration-fast) var(--ease-snap);
}
.lm-product__cart .single_add_to_cart_button:hover {
  background: var(--brand);
  border-color: var(--brand);
}
.lm-product__cart .stock {
  font-size: var(--fs-body-sm);
  color: var(--fg-muted);
  margin: 0 0 var(--space-2);
  display: block;
}
.lm-product__cart .stock.out-of-stock { color: var(--brand); }

/* META block */
.lm-product__meta {
  margin: 0;
  padding: var(--space-5) 0 0;
  border-top: 1px solid var(--color-white-300);
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-3);
}
.lm-product__meta-row {
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: var(--space-4);
  align-items: baseline;
  font-size: var(--fs-body-sm);
  line-height: 1.5;
}
.lm-product__meta-label {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  color: var(--fg-muted);
  text-transform: uppercase;
}
.lm-product__meta-value {
  color: var(--fg-default);
}
.lm-product__meta-value a {
  color: var(--fg-default);
  text-decoration: none;
  border-bottom: 1px solid var(--color-white-400);
  padding-bottom: 1px;
  transition: color var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out);
}
.lm-product__meta-value a:hover {
  color: var(--brand);
  border-bottom-color: var(--brand);
}

/* ---------- SHARED SECTION HEAD ---------- */
.lm-product__section-head {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin: 0 0 var(--space-6);
  max-width: 720px;
}
.lm-product__section-eyebrow {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  font-weight: var(--fw-body-medium);
  letter-spacing: 0.08em;
  color: var(--fg-muted);
  text-transform: uppercase;
}
.lm-product__section-title {
  font-family: var(--font-display);
  font-size: clamp(1.6rem, 2.6vw, 2.2rem);
  font-weight: var(--fw-display);
  line-height: 1.1;
  color: var(--fg-default);
  margin: 0;
  letter-spacing: var(--tracking-display);
  text-wrap: balance;
}

/* ---------- CONTENT CARDS (Descrizione + Perché + Accessori) ---------- */
.lm-product__content-cards {
  padding: var(--space-7) 0 var(--space-9);
  background: var(--bg-surface-alt);
  margin-bottom: var(--space-9);
}
.lm-product__info-card {
  background: var(--bg-surface);
  border: 1px solid var(--color-white-300);
  border-radius: var(--radius-lg);
  padding: clamp(24px, 3vw, 40px);
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.lm-product__info-card--full {
  margin-bottom: var(--space-5);
}
.lm-product__info-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-5);
}
.lm-product__card-head {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin: 0 0 var(--space-3);
  padding-bottom: var(--space-4);
  border-bottom: 1px solid var(--color-white-300);
}
.lm-product__card-eyebrow {
  font-family: var(--font-mono);
  font-size: 0.75rem;
  font-weight: var(--fw-body-medium);
  letter-spacing: 0.08em;
  color: var(--fg-muted);
  text-transform: uppercase;
}
.lm-product__card-title {
  font-family: var(--font-display);
  font-size: clamp(1.4rem, 2vw, 1.75rem);
  font-weight: var(--fw-display);
  line-height: 1.15;
  color: var(--fg-default);
  margin: 0;
  letter-spacing: var(--tracking-display);
  text-wrap: balance;
}
.lm-product__card-body {
  flex: 1;
  font-family: var(--font-body);
  color: var(--fg-default);
}
.lm-product__card-body > p:first-child { margin-top: 0; }
.lm-product__card-body > p:last-child { margin-bottom: 0; }
.lm-product__card-body ul,
.lm-product__card-body ol {
  margin: 0 0 var(--space-3);
}
.lm-product__card-body ul:last-child,
.lm-product__card-body ol:last-child { margin-bottom: 0; }
.lm-product__card-body img {
  max-width: 100%;
  height: auto;
}
/* In sezione card, sopprimiamo il background dato dalla sezione description vecchia */
.lm-product__content-cards .lm-product__description-body {
  background: transparent;
}

/* La card Descrizione full-width usa contenuto a colonna singola che
   riempie tutta la card (no split a 2 colonne). */

/* Container loghi cartografie (C-MAP / Navionics) dentro la descrizione */
.lm-product__content-cards .lm-product__logos {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: clamp(32px, 6vw, 80px);
  margin: var(--space-5) auto var(--space-5);
  padding: var(--space-3) 0;
  width: 100%;
}
.lm-product__content-cards .lm-product__logos a {
  display: inline-flex;
  align-items: center;
  border: 0;
  text-decoration: none;
}
.lm-product__content-cards .lm-product__logos img {
  height: auto;
  max-height: 60px;
  width: auto;
  display: block;
  margin: 0;
}
@media (max-width: 480px) {
  .lm-product__content-cards .lm-product__logos {
    gap: var(--space-5);
  }
  .lm-product__content-cards .lm-product__logos img {
    max-height: 44px;
  }
}

/* ---------- DESCRIPTION (legacy fallback, mantenuto) ---------- */
.lm-product__description {
  padding: var(--space-9) 0;
  background: var(--bg-surface-alt);
  margin-bottom: var(--space-9);
}
.lm-product__description-body {
  max-width: none;
  font-family: var(--font-body);
  font-size: var(--fs-body-md);
  line-height: 1.7;
  color: var(--fg-default);
}
.lm-product__content-cards .lm-product__description-body {
  max-width: none;
  font-size: var(--fs-body-md);
}
.lm-product__content-cards .lm-product__description-body p,
.lm-product__content-cards .lm-product__description-body ul,
.lm-product__content-cards .lm-product__description-body ol {
  max-width: none;
}
/* Solo per le card "Perché scegliere" e "Accessori" (mezza colonna) un limite
   di leggibilità più stretto. La card Descrizione full-width usa tutta la larghezza. */
.lm-product__info-grid .lm-product__description-body p,
.lm-product__info-grid .lm-product__description-body ul,
.lm-product__info-grid .lm-product__description-body ol {
  max-width: 56ch;
}
.lm-product__description-body p {
  margin: 0 0 var(--space-4);
  max-width: none;
}
.lm-product__description-body h2 {
  font-family: var(--font-display);
  font-size: var(--fs-heading-lg);
  margin: var(--space-6) 0 var(--space-3);
  color: var(--fg-default);
}
.lm-product__description-body h3 {
  font-family: var(--font-display);
  font-size: var(--fs-heading-md);
  margin: var(--space-5) 0 var(--space-2);
  color: var(--fg-default);
}
.lm-product__description-body h4 {
  font-family: var(--font-display);
  font-size: var(--fs-heading-sm);
  margin: var(--space-4) 0 var(--space-2);
  color: var(--fg-default);
}
.lm-product__description-body ul,
.lm-product__description-body ol {
  margin: 0 0 var(--space-4);
  padding-left: var(--space-5);
  max-width: none;
}
.lm-product__description-body li {
  margin-bottom: var(--space-2);
  line-height: 1.65;
}
.lm-product__description-body strong {
  font-weight: var(--fw-body-medium);
  color: var(--fg-strong);
}
.lm-product__description-body a {
  color: var(--fg-default);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.22em;
}
.lm-product__description-body a:hover { color: var(--brand); }
.lm-product__description-body img {
  max-width: 100%;
  height: auto;
  border-radius: var(--radius-md);
  margin: var(--space-4) 0;
}
.lm-product__description-body img.alignnone {
  display: inline-block;
  margin: var(--space-2) var(--space-2) var(--space-2) 0;
  vertical-align: middle;
}

/* ---------- SPECS ---------- */
.lm-product__specs {
  padding: 0 0 var(--space-9);
}
.lm-product__specs-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  border-top: 1px solid var(--color-white-300);
}
.lm-product__spec-row {
  display: grid;
  grid-template-columns: minmax(140px, 38%) 1fr;
  gap: var(--space-4);
  padding: var(--space-3) var(--space-5) var(--space-3) 0;
  border-bottom: 1px solid var(--color-white-300);
  align-items: baseline;
}
.lm-product__spec-row:nth-child(odd) {
  padding-right: var(--space-5);
  border-right: 1px solid var(--color-white-300);
}
.lm-product__spec-row:nth-child(even) {
  padding-left: var(--space-5);
}
.lm-product__spec-label {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  color: var(--fg-muted);
  text-transform: uppercase;
  line-height: 1.4;
}
.lm-product__spec-value {
  font-family: var(--font-body);
  font-size: var(--fs-body-md);
  color: var(--fg-default);
  line-height: 1.5;
}
.lm-product__spec-value a {
  color: var(--fg-default);
  text-decoration: none;
  border-bottom: 1px solid var(--color-white-400);
}
.lm-product__spec-value a:hover {
  color: var(--brand);
  border-bottom-color: var(--brand);
}
.lm-product__spec-value p { margin: 0; }

/* ---------- RELATED ---------- */
.lm-product__related {
  padding: var(--space-9) 0 0;
  border-top: 1px solid var(--color-white-300);
}
.lm-product__related-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-5);
}
.lm-product__related-card {
  display: flex;
  flex-direction: column;
  background: var(--bg-surface);
  border: 1px solid var(--color-white-300);
  border-radius: var(--radius-lg);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: border-color var(--duration-fast) var(--ease-out),
              box-shadow var(--duration-fast) var(--ease-out),
              transform var(--duration-fast) var(--ease-out);
}
.lm-product__related-card:hover {
  border-color: var(--fg-default);
  box-shadow: var(--shadow-md);
  transform: translateY(-3px);
  text-decoration: none;
  color: inherit;
}
.lm-product__related-img-wrap {
  aspect-ratio: 4 / 3;
  background: transparent;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-4);
  border: 0;
  box-shadow: none;
}
.lm-product__related-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: transparent;
  mix-blend-mode: multiply;
}
.lm-product__related-body {
  padding: var(--space-4) var(--space-5) var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  flex: 1;
}
.lm-product__related-cat {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.08em;
  color: var(--fg-muted);
  text-transform: uppercase;
  margin: 0;
}
.lm-product__related-title {
  font-family: var(--font-display);
  font-size: var(--fs-heading-sm);
  font-weight: var(--fw-display);
  color: var(--fg-default);
  line-height: 1.2;
  margin: 0;
  text-wrap: balance;
}
.lm-product__related-cta {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: auto;
  padding-top: var(--space-3);
  font-family: var(--font-body);
  font-size: var(--fs-body-sm);
  font-weight: var(--fw-body-medium);
  color: var(--fg-default);
  border-top: 1px solid var(--color-white-300);
  text-decoration: none;
}
.lm-product__related-cta svg {
  transition: transform var(--duration-fast) var(--ease-snap);
}
.lm-product__related-card:hover .lm-product__related-cta {
  color: var(--brand);
}
.lm-product__related-card:hover .lm-product__related-cta svg {
  transform: translateX(3px);
}

/* ---------- BREADCRUMB (se attivato) ---------- */
.lm-product-page .woocommerce-breadcrumb {
  font-size: var(--fs-body-sm);
  color: var(--fg-muted);
  margin: 0 0 var(--space-5);
  font-family: var(--font-body);
}

/* ---------- SALE BADGE ---------- */
.lm-product .onsale,
.lm-product-page .onsale {
  background: var(--brand);
  color: var(--fg-inverse);
  font-family: var(--font-body);
  font-size: var(--fs-body-sm);
  font-weight: var(--fw-body-medium);
  letter-spacing: 0.02em;
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-pill);
  border: 0;
  min-width: 0;
  min-height: 0;
  width: auto;
  height: auto;
  line-height: 1.4;
  text-transform: uppercase;
  position: absolute;
  top: var(--space-3);
  left: var(--space-3);
  z-index: 9;
  margin: 0;
}

/* ---------- RESPONSIVE ---------- */
@media (max-width: 1024px) {
  .lm-product__hero-grid {
    grid-template-columns: 1fr;
    gap: var(--space-7);
  }
  .lm-product__summary { max-width: none; }
  .lm-product__gallery-col .woocommerce-product-gallery__image img {
    max-height: 480px;
  }
  .lm-product__related-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .lm-product__specs-grid {
    grid-template-columns: 1fr;
  }
  .lm-product__spec-row:nth-child(odd) {
    border-right: 0;
    padding-right: 0;
  }
  .lm-product__spec-row:nth-child(even) {
    padding-left: 0;
  }
  .lm-product__info-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  .lm-product-page {
    padding: var(--space-5) 0 var(--space-8);
  }
  .lm-product__container {
    padding: 0 16px;
  }
  .lm-product__hero {
    padding-bottom: var(--space-7);
  }
  .lm-product__summary h1.product_title {
    font-size: clamp(1.6rem, 7vw, 2.2rem);
  }
  .lm-product__gallery-col .woocommerce-product-gallery__image img {
    max-height: 380px;
  }
  .lm-product__cta-group {
    flex-direction: column;
    align-items: stretch;
  }
  .lm-product__cta-group .btn {
    width: 100%;
    text-align: center;
    justify-content: center;
  }
  .lm-product__related-grid {
    grid-template-columns: 1fr;
  }
  .lm-product__description {
    padding: var(--space-7) 0;
    margin-bottom: var(--space-7);
  }
  .lm-product__specs {
    padding-bottom: var(--space-7);
  }
  .lm-product__related {
    padding-top: var(--space-7);
  }
  .lm-product__meta-row {
    grid-template-columns: 90px 1fr;
    gap: var(--space-3);
  }
}

/* ---------- LEGACY scoped CSS (kept minimal as fallback) ---------- */

/* Page background coerente con il resto del sito */
body.single-product {
  background: var(--bg-page);
}

/* HERO: container generale + spaziature ariose ma compatte */
body.single-product .elementor-location-single > .elementor-element.e-parent:first-of-type {
  padding-top: var(--space-7);
  padding-bottom: var(--space-7);
}

/* === PRODUCT TITLE ===================================== */
body.single-product .elementor-widget-woocommerce-product-title {
  margin-bottom: var(--space-2);
}
body.single-product .elementor-widget-woocommerce-product-title .product_title,
body.single-product h1.product_title {
  font-family: var(--font-display);
  font-size: clamp(2rem, 4vw, 3rem);
  line-height: 1.05;
  letter-spacing: var(--tracking-display);
  font-weight: var(--fw-display);
  color: var(--fg-default);
  margin: 0;
  text-wrap: balance;
}

/* === PRICE ============================================= */
body.single-product .elementor-widget-woocommerce-product-price {
  margin-bottom: var(--space-4);
}
body.single-product .elementor-widget-woocommerce-product-price .price,
body.single-product .elementor-widget-woocommerce-product-price .woocommerce-Price-amount {
  font-family: var(--font-display);
  font-size: var(--fs-heading-lg);
  font-weight: var(--fw-display-bold);
  color: var(--fg-default);
  line-height: 1.1;
  letter-spacing: -0.005em;
}
body.single-product .elementor-widget-woocommerce-product-price del {
  opacity: 0.55;
  margin-right: var(--space-3);
}
body.single-product .elementor-widget-woocommerce-product-price ins {
  background: transparent;
  text-decoration: none;
  color: var(--brand);
}

/* === SHORT DESCRIPTION (product-content widget) =========
   Sanifica gli artefatti HTML (ChatGPT, Tailwind utility classes
   con [] e parentheses, data-testid) che fanno fatica a renderizzare. */
body.single-product .elementor-widget-woocommerce-product-content {
  margin-bottom: var(--space-5);
}
body.single-product .elementor-widget-woocommerce-product-content,
body.single-product .elementor-widget-woocommerce-product-content * {
  /* reset di tutti i sotto-wrapper Tailwind/ChatGPT che producono
     padding/spacing/grid casuali */
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  max-width: none !important;
  min-height: 0 !important;
  font-family: var(--font-body);
  color: var(--fg-default);
}
body.single-product .elementor-widget-woocommerce-product-content > .elementor-widget-container > div,
body.single-product .elementor-widget-woocommerce-product-content article,
body.single-product .elementor-widget-woocommerce-product-content [data-turn],
body.single-product .elementor-widget-woocommerce-product-content [data-testid],
body.single-product .elementor-widget-woocommerce-product-content [class*="markdown"],
body.single-product .elementor-widget-woocommerce-product-content [class*="text-token"],
body.single-product .elementor-widget-woocommerce-product-content [class*="thread-content"],
body.single-product .elementor-widget-woocommerce-product-content .agent-turn,
body.single-product .elementor-widget-woocommerce-product-content [class*="@w-"] {
  display: block;
  margin: 0;
  padding: 0;
}
body.single-product .elementor-widget-woocommerce-product-content p {
  font-size: var(--fs-body-md);
  line-height: 1.6;
  color: var(--fg-default);
  margin: 0 0 var(--space-3);
  max-width: 60ch;
}
body.single-product .elementor-widget-woocommerce-product-content h1,
body.single-product .elementor-widget-woocommerce-product-content h2,
body.single-product .elementor-widget-woocommerce-product-content h3,
body.single-product .elementor-widget-woocommerce-product-content h4 {
  font-family: var(--font-display);
  color: var(--fg-default);
  margin: var(--space-5) 0 var(--space-2);
  font-weight: var(--fw-display);
}
body.single-product .elementor-widget-woocommerce-product-content h2 { font-size: var(--fs-heading-lg); }
body.single-product .elementor-widget-woocommerce-product-content h3 { font-size: var(--fs-heading-md); }
body.single-product .elementor-widget-woocommerce-product-content h4 { font-size: var(--fs-heading-sm); }
body.single-product .elementor-widget-woocommerce-product-content ul,
body.single-product .elementor-widget-woocommerce-product-content ol {
  margin: 0 0 var(--space-4);
  padding-left: var(--space-5);
  max-width: 60ch;
}
body.single-product .elementor-widget-woocommerce-product-content li {
  margin-bottom: var(--space-2);
  line-height: 1.55;
}
body.single-product .elementor-widget-woocommerce-product-content strong {
  font-weight: var(--fw-body-medium);
  color: var(--fg-strong);
}
body.single-product .elementor-widget-woocommerce-product-content a:not(.btn) {
  color: var(--fg-default);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.22em;
}
body.single-product .elementor-widget-woocommerce-product-content a:not(.btn):hover {
  color: var(--brand);
}

/* === GALLERY =========================================== */
body.single-product .woocommerce-product-gallery {
  background: var(--bg-surface);
  border: 1px solid var(--color-white-300);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
}
body.single-product .woocommerce-product-gallery__wrapper {
  margin: 0;
}
body.single-product .woocommerce-product-gallery__image {
  background: transparent;
}
body.single-product .woocommerce-product-gallery__image a {
  display: block;
  background: transparent;
}
body.single-product .woocommerce-product-gallery__image img,
body.single-product .woocommerce-product-gallery img.wp-post-image {
  width: 100%;
  height: auto;
  max-height: 540px;
  object-fit: contain;
  background: transparent;
  margin: 0 auto;
  display: block;
}
body.single-product .woocommerce-product-gallery--columns-4 .flex-control-thumbs li,
body.single-product .flex-control-thumbs li {
  width: calc(25% - 9px);
  margin: 0 12px 12px 0;
}
body.single-product .flex-control-thumbs li:nth-child(4n) { margin-right: 0; }
body.single-product .flex-control-thumbs img {
  border: 1px solid var(--color-white-300);
  border-radius: var(--radius-md);
  background: var(--bg-surface);
  opacity: 0.7;
  transition: opacity .2s ease, border-color .2s ease;
}
body.single-product .flex-control-thumbs img:hover,
body.single-product .flex-control-thumbs img.flex-active {
  opacity: 1;
  border-color: var(--fg-default);
}
body.single-product .woocommerce-product-gallery__trigger {
  top: var(--space-3);
  right: var(--space-3);
  background: var(--bg-surface);
  border: 1px solid var(--color-white-300);
  border-radius: var(--radius-pill);
  width: 36px;
  height: 36px;
  text-indent: -9999px;
  overflow: hidden;
  position: absolute;
  z-index: 99;
  box-shadow: var(--shadow-sm);
}
body.single-product .woocommerce-product-gallery__trigger::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%231F1F1F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");
  background-position: center;
  background-repeat: no-repeat;
}

/* === ADD TO CART ======================================= */
body.single-product .elementor-widget-woocommerce-product-add-to-cart {
  margin-top: var(--space-4);
}
body.single-product form.cart {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  flex-wrap: wrap;
  margin: 0;
}
body.single-product form.cart .quantity {
  display: inline-flex;
  align-items: center;
  background: var(--bg-surface);
  border: 1px solid var(--color-white-300);
  border-radius: var(--radius-md);
  overflow: hidden;
  height: 48px;
}
body.single-product form.cart .quantity input.qty,
body.single-product form.cart .qty {
  border: 0;
  background: transparent;
  width: 70px;
  height: 48px;
  text-align: center;
  font-family: var(--font-body);
  font-size: var(--fs-body-md);
  font-weight: var(--fw-body-medium);
  color: var(--fg-default);
  padding: 0 var(--space-2);
  -moz-appearance: textfield;
}
body.single-product form.cart .qty::-webkit-outer-spin-button,
body.single-product form.cart .qty::-webkit-inner-spin-button {
  opacity: 1;
  height: 32px;
}
body.single-product form.cart button.single_add_to_cart_button,
body.single-product .single_add_to_cart_button,
body.single-product button[name="add-to-cart"],
body.single-product .elementor-button-link.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: 48px;
  padding: var(--space-3) var(--space-6);
  font-family: var(--font-body);
  font-size: var(--fs-body-md);
  font-weight: var(--fw-body-medium);
  line-height: 1.2;
  letter-spacing: -0.005em;
  text-decoration: none;
  background: var(--fg-default);
  color: var(--fg-inverse);
  border: 1px solid var(--fg-default);
  border-radius: var(--radius-md);
  cursor: pointer;
  text-transform: none;
  box-shadow: none;
  transition: background var(--duration-fast) var(--ease-snap),
              color var(--duration-fast) var(--ease-snap),
              border-color var(--duration-fast) var(--ease-snap);
}
body.single-product form.cart button.single_add_to_cart_button:hover,
body.single-product .single_add_to_cart_button:hover {
  background: var(--brand);
  border-color: var(--brand);
  color: var(--fg-inverse);
}

/* === META: SKU, categories, tags ======================= */
body.single-product .product_meta {
  margin-top: var(--space-5);
  padding-top: var(--space-4);
  border-top: 1px solid var(--color-white-300);
  font-size: var(--fs-body-sm);
  color: var(--fg-muted);
  line-height: 1.7;
}
body.single-product .product_meta > span {
  display: block;
  margin-bottom: var(--space-1);
}
body.single-product .product_meta a {
  color: var(--fg-default);
  text-decoration: none;
  border-bottom: 1px solid var(--color-white-400);
  padding-bottom: 1px;
  transition: color var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out);
}
body.single-product .product_meta a:hover {
  color: var(--brand);
  border-bottom-color: var(--brand);
}
body.single-product .product_meta .sku_wrapper {
  font-family: var(--font-mono);
  font-size: 0.85em;
  letter-spacing: 0.01em;
}

/* === STOCK STATUS ====================================== */
body.single-product .stock {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-body-sm);
  font-weight: var(--fw-body-medium);
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-pill);
  margin: var(--space-2) 0 0;
}
body.single-product .stock.in-stock {
  background: rgba(16, 124, 16, 0.08);
  color: #0E6B0E;
}
body.single-product .stock.out-of-stock {
  background: rgba(166, 29, 29, 0.08);
  color: var(--brand);
}

/* === NOTICES =========================================== */
body.single-product .woocommerce-notices-wrapper:empty {
  display: none;
}
body.single-product .woocommerce-message,
body.single-product .woocommerce-info,
body.single-product .woocommerce-error {
  background: var(--bg-surface);
  border: 1px solid var(--color-white-300);
  border-left: 3px solid var(--fg-default);
  border-radius: var(--radius-md);
  padding: var(--space-4) var(--space-5);
  font-size: var(--fs-body-sm);
  color: var(--fg-default);
  box-shadow: var(--shadow-sm);
  list-style: none;
  margin: 0 0 var(--space-4);
}
body.single-product .woocommerce-message { border-left-color: #0E6B0E; }
body.single-product .woocommerce-error { border-left-color: var(--brand); }
body.single-product .woocommerce-message .button,
body.single-product .woocommerce-info .button {
  background: var(--fg-default);
  color: var(--fg-inverse);
  border: 1px solid var(--fg-default);
  border-radius: var(--radius-md);
  padding: var(--space-2) var(--space-4);
  font-size: var(--fs-body-sm);
  font-weight: var(--fw-body-medium);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  text-transform: none;
  margin-right: var(--space-3);
}
body.single-product .woocommerce-message .button:hover {
  background: var(--brand);
  border-color: var(--brand);
}

/* === TABS (Description / Additional information) ====== */
body.single-product .elementor-widget-woocommerce-product-data-tabs,
body.single-product .woocommerce-tabs.wc-tabs-wrapper {
  margin-top: var(--space-8);
  padding-top: var(--space-6);
  border-top: 1px solid var(--color-white-300);
}
body.single-product .woocommerce-tabs ul.tabs {
  display: flex;
  gap: var(--space-1);
  padding: 0;
  margin: 0 0 var(--space-6);
  list-style: none;
  border: 0;
  border-bottom: 1px solid var(--color-white-300);
  flex-wrap: wrap;
}
body.single-product .woocommerce-tabs ul.tabs::before,
body.single-product .woocommerce-tabs ul.tabs::after,
body.single-product .woocommerce-tabs ul.tabs li::before,
body.single-product .woocommerce-tabs ul.tabs li::after {
  display: none !important;
  content: none !important;
}
body.single-product .woocommerce-tabs ul.tabs li {
  background: transparent;
  border: 0;
  border-radius: 0;
  margin: 0;
  padding: 0;
  box-shadow: none;
}
body.single-product .woocommerce-tabs ul.tabs li a {
  display: inline-block;
  padding: var(--space-3) var(--space-4);
  font-family: var(--font-body);
  font-size: var(--fs-body-md);
  font-weight: var(--fw-body-medium);
  color: var(--fg-muted);
  text-decoration: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition: color var(--duration-fast) var(--ease-out),
              border-color var(--duration-fast) var(--ease-out);
}
body.single-product .woocommerce-tabs ul.tabs li a:hover {
  color: var(--fg-default);
}
body.single-product .woocommerce-tabs ul.tabs li.active a {
  color: var(--fg-default);
  border-bottom-color: var(--brand);
}
body.single-product .woocommerce-tabs .panel,
body.single-product .woocommerce-tabs .wc-tab {
  padding: 0;
  margin: 0;
  background: transparent;
  font-family: var(--font-body);
  color: var(--fg-default);
  line-height: 1.6;
}
body.single-product .woocommerce-tabs .panel > h2:first-child {
  font-family: var(--font-display);
  font-size: var(--fs-heading-lg);
  font-weight: var(--fw-display);
  color: var(--fg-default);
  margin: 0 0 var(--space-4);
}
body.single-product .woocommerce-tabs .panel p {
  max-width: 75ch;
  line-height: 1.6;
  color: var(--fg-default);
}
body.single-product .woocommerce-tabs .panel * {
  background: transparent !important;
  border-color: var(--color-white-300) !important;
  max-width: 100% !important;
  min-height: 0 !important;
}
body.single-product .woocommerce-tabs .panel [data-turn],
body.single-product .woocommerce-tabs .panel [data-testid],
body.single-product .woocommerce-tabs .panel [class*="markdown"],
body.single-product .woocommerce-tabs .panel [class*="text-token"],
body.single-product .woocommerce-tabs .panel [class*="thread-content"],
body.single-product .woocommerce-tabs .panel .agent-turn,
body.single-product .woocommerce-tabs .panel article[class*="text-token"],
body.single-product .woocommerce-tabs .panel [class*="@w-"] {
  display: block;
  margin: 0;
  padding: 0;
}

/* === ATTRIBUTES TABLE (Additional information) ========= */
body.single-product .woocommerce-product-attributes,
body.single-product table.shop_attributes {
  width: 100%;
  border-collapse: collapse;
  border: 0;
  background: transparent;
  margin: 0;
  font-family: var(--font-body);
}
body.single-product .woocommerce-product-attributes tr,
body.single-product table.shop_attributes tr {
  border-top: 1px solid var(--color-white-300);
  background: transparent !important;
}
body.single-product .woocommerce-product-attributes tr:last-child {
  border-bottom: 1px solid var(--color-white-300);
}
body.single-product .woocommerce-product-attributes-item__label,
body.single-product table.shop_attributes th {
  width: 38%;
  padding: var(--space-3) var(--space-4) var(--space-3) 0;
  font-family: var(--font-body);
  font-size: var(--fs-body-sm);
  font-weight: var(--fw-body-medium);
  color: var(--fg-muted);
  text-align: left;
  vertical-align: top;
  letter-spacing: 0.01em;
  text-transform: uppercase;
  background: transparent;
  border: 0;
  font-style: normal;
}
body.single-product .woocommerce-product-attributes-item__value,
body.single-product table.shop_attributes td {
  padding: var(--space-3) 0;
  font-family: var(--font-body);
  font-size: var(--fs-body-md);
  color: var(--fg-default);
  background: transparent;
  border: 0;
  font-style: normal;
}
body.single-product .woocommerce-product-attributes-item__value p,
body.single-product table.shop_attributes td p {
  margin: 0;
}
body.single-product .woocommerce-product-attributes-item__value a {
  color: var(--fg-default);
  text-decoration: none;
  border-bottom: 1px solid var(--color-white-400);
  padding-bottom: 1px;
}
body.single-product .woocommerce-product-attributes-item__value a:hover {
  color: var(--brand);
  border-bottom-color: var(--brand);
}

/* === BREADCRUMB ======================================== */
body.single-product .woocommerce-breadcrumb {
  font-size: var(--fs-body-sm);
  color: var(--fg-muted);
  margin: 0 0 var(--space-5);
  padding: 0;
  font-family: var(--font-body);
  letter-spacing: 0.01em;
}
body.single-product .woocommerce-breadcrumb a {
  color: var(--fg-muted);
  text-decoration: none;
  border-bottom: 0;
  transition: color var(--duration-fast) var(--ease-out);
}
body.single-product .woocommerce-breadcrumb a:hover {
  color: var(--fg-default);
}

/* === RELATED / UPSELLS ================================= */
body.single-product .related.products,
body.single-product .upsells.products {
  margin-top: var(--space-9);
  padding-top: var(--space-7);
  border-top: 1px solid var(--color-white-300);
}
body.single-product .related.products > h2,
body.single-product .upsells.products > h2 {
  font-family: var(--font-display);
  font-size: var(--fs-heading-lg);
  font-weight: var(--fw-display);
  color: var(--fg-default);
  margin: 0 0 var(--space-5);
}
body.single-product ul.products {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: var(--space-5);
  list-style: none;
  margin: 0;
  padding: 0;
}
body.single-product ul.products li.product {
  background: var(--bg-surface);
  border: 1px solid var(--color-white-300);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
  margin: 0;
  width: auto;
  list-style: none;
  display: flex;
  flex-direction: column;
  transition: border-color var(--duration-fast) var(--ease-out),
              box-shadow var(--duration-fast) var(--ease-out),
              transform var(--duration-fast) var(--ease-out);
}
body.single-product ul.products li.product::before,
body.single-product ul.products li.product::after {
  display: none !important;
  content: none !important;
}
body.single-product ul.products li.product:hover {
  border-color: var(--fg-default);
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}
body.single-product ul.products li.product a {
  text-decoration: none;
  color: inherit;
  display: block;
}
body.single-product ul.products li.product img {
  width: 100%;
  height: 180px;
  object-fit: contain;
  background: transparent;
  margin: 0 0 var(--space-4);
  padding: var(--space-2);
}
body.single-product ul.products li.product .woocommerce-loop-product__title {
  font-family: var(--font-display);
  font-size: var(--fs-heading-sm);
  font-weight: var(--fw-display);
  color: var(--fg-default);
  line-height: 1.2;
  margin: 0 0 var(--space-2);
  padding: 0;
  text-wrap: balance;
}
body.single-product ul.products li.product .price {
  font-family: var(--font-display);
  font-size: var(--fs-body-md);
  font-weight: var(--fw-display-bold);
  color: var(--fg-default);
  margin-top: auto;
}
body.single-product ul.products li.product .button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-top: var(--space-3);
  padding: var(--space-2) var(--space-4);
  background: var(--fg-default);
  color: var(--fg-inverse);
  border: 1px solid var(--fg-default);
  border-radius: var(--radius-md);
  font-size: var(--fs-body-sm);
  font-weight: var(--fw-body-medium);
  text-decoration: none;
  text-transform: none;
  align-self: flex-start;
}
body.single-product ul.products li.product .button:hover {
  background: var(--brand);
  border-color: var(--brand);
}

/* === SALE BADGE ======================================== */
body.single-product .onsale,
body.single-product span.onsale {
  background: var(--brand);
  color: var(--fg-inverse);
  font-family: var(--font-body);
  font-size: var(--fs-body-sm);
  font-weight: var(--fw-body-medium);
  letter-spacing: 0.02em;
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-pill);
  border: 0;
  min-width: 0;
  min-height: 0;
  width: auto;
  height: auto;
  line-height: 1.4;
  text-transform: uppercase;
  position: absolute;
  top: var(--space-3);
  left: var(--space-3);
  z-index: 9;
  margin: 0;
  box-shadow: var(--shadow-sm);
}

/* === MOBILE ============================================ */
@media (max-width: 768px) {
  body.single-product .elementor-location-single > .elementor-element.e-parent:first-of-type {
    padding-top: var(--space-5);
    padding-bottom: var(--space-5);
  }
  body.single-product .elementor-widget-woocommerce-product-title .product_title,
  body.single-product h1.product_title {
    font-size: clamp(1.6rem, 7vw, 2.2rem);
  }
  body.single-product .woocommerce-product-gallery {
    padding: var(--space-3);
  }
  body.single-product .woocommerce-product-gallery__image img,
  body.single-product .woocommerce-product-gallery img.wp-post-image {
    max-height: 380px;
  }
  body.single-product form.cart {
    gap: var(--space-3);
  }
  body.single-product form.cart button.single_add_to_cart_button,
  body.single-product .single_add_to_cart_button {
    flex: 1 1 auto;
    min-width: 0;
  }
  body.single-product .woocommerce-tabs ul.tabs {
    overflow-x: auto;
    flex-wrap: nowrap;
    scrollbar-width: none;
  }
  body.single-product .woocommerce-tabs ul.tabs::-webkit-scrollbar {
    display: none;
  }
  body.single-product .woocommerce-tabs ul.tabs li a {
    white-space: nowrap;
  }
  body.single-product .woocommerce-product-attributes-item__label,
  body.single-product table.shop_attributes th {
    width: 45%;
    font-size: 0.8rem;
  }
  body.single-product .woocommerce-product-attributes-item__value,
  body.single-product table.shop_attributes td {
    font-size: var(--fs-body-sm);
  }
  body.single-product ul.products {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-3);
  }
  body.single-product ul.products li.product {
    padding: var(--space-3);
  }
  body.single-product ul.products li.product img {
    height: 130px;
  }
}

/* No-overflow protection */
body.single-product .elementor-widget-woocommerce-product-content,
body.single-product .woocommerce-tabs .panel {
  overflow-wrap: break-word;
  word-break: break-word;
}
body.single-product .woocommerce-tabs .panel pre,
body.single-product .woocommerce-tabs .panel code {
  overflow-x: auto;
  max-width: 100%;
}

/* =========================================================
   HOME HERO — Ritardo comparsa testo (2026-05-27)
   Solo per la home (selettori .page-home__hero-* esistono solo lì).
   Stagger sequenziale del blocco testo, visual prodotti parte subito.
   Fallback: opacity 1 garantita via animation-fill-mode forwards anche
   se l'animazione non parte (no JS dipendency).
   ========================================================= */
@keyframes lmHomeHeroTextIn {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

body.lm-hero-ready .page-home__hero-eyebrow,
body.lm-hero-ready .page-home__hero-h1,
body.lm-hero-ready .page-home__hero-lede,
body.lm-hero-ready .page-home__hero-cta,
body.lm-hero-ready .page-home__hero-stats {
  opacity: 0;
  animation: lmHomeHeroTextIn 800ms cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
}
body.lm-hero-ready .page-home__hero-eyebrow { animation-delay: 0.4s; }
body.lm-hero-ready .page-home__hero-h1      { animation-delay: 0.65s; }
body.lm-hero-ready .page-home__hero-lede    { animation-delay: 0.85s; }
body.lm-hero-ready .page-home__hero-cta     { animation-delay: 1.05s; }
body.lm-hero-ready .page-home__hero-stats   { animation-delay: 1.25s; }

@media (prefers-reduced-motion: reduce) {
  .page-home__hero-eyebrow,
  .page-home__hero-h1,
  .page-home__hero-lede,
  .page-home__hero-cta,
  .page-home__hero-stats {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
}

/* =========================================================
   GLOBAL REVEAL ANIMATIONS (2026-05-27)
   Progressive enhancement: stato hidden SOLO se body.lm-reveal-ready
   (aggiunta da JS). Se JS non parte, gli elementi restano visibili.
   ========================================================= */

/* Base: nessuno stato hidden senza body.lm-reveal-ready */
body.lm-reveal-ready .lm-reveal,
body.lm-reveal-ready .lm-reveal-up,
body.lm-reveal-ready .lm-reveal-left,
body.lm-reveal-ready .lm-reveal-right,
body.lm-reveal-ready .lm-reveal-fade,
body.lm-reveal-ready .lm-reveal-scale,
body.lm-reveal-ready .lm-stagger-item {
  opacity: 0;
  transition: opacity 800ms cubic-bezier(0.22, 0.61, 0.36, 1),
              transform 800ms cubic-bezier(0.22, 0.61, 0.36, 1);
  will-change: opacity, transform;
}

body.lm-reveal-ready .lm-reveal-up,
body.lm-reveal-ready .lm-stagger-item {
  transform: translateY(24px);
}
body.lm-reveal-ready .lm-reveal-left { transform: translateX(-48px); }
body.lm-reveal-ready .lm-reveal-right { transform: translateX(48px); }
body.lm-reveal-ready .lm-reveal-fade { transform: none; }
body.lm-reveal-ready .lm-reveal-scale { transform: scale(0.96); }

/* Stato visible (impostato da IntersectionObserver) */
body.lm-reveal-ready .lm-reveal.is-visible,
body.lm-reveal-ready .lm-reveal-up.is-visible,
body.lm-reveal-ready .lm-reveal-left.is-visible,
body.lm-reveal-ready .lm-reveal-right.is-visible,
body.lm-reveal-ready .lm-reveal-fade.is-visible,
body.lm-reveal-ready .lm-reveal-scale.is-visible,
body.lm-reveal-ready .lm-stagger-item.is-visible {
  opacity: 1;
  transform: none;
}

/* Stagger: delay progressivo via custom property impostata da JS */
body.lm-reveal-ready .lm-stagger-item {
  transition-delay: var(--lm-stagger-delay, 0ms);
}

/* Float soft — visual decorativo, solo su pochi elementi importanti */
.lm-float-soft {
  animation: lmFloatSoft 10s ease-in-out infinite;
}
@keyframes lmFloatSoft {
  0%, 100% { translate: 0 0; }
  50%      { translate: 0 -6px; }
}

/* Mobile: riduci movimenti laterali per evitare overflow */
@media (max-width: 768px) {
  body.lm-reveal-ready .lm-reveal-left { transform: translateX(-18px); }
  body.lm-reveal-ready .lm-reveal-right { transform: translateX(18px); }
}

/* Reduced motion: tutto subito visibile, niente animazioni */
@media (prefers-reduced-motion: reduce) {
  body.lm-reveal-ready .lm-reveal,
  body.lm-reveal-ready .lm-reveal-up,
  body.lm-reveal-ready .lm-reveal-left,
  body.lm-reveal-ready .lm-reveal-right,
  body.lm-reveal-ready .lm-reveal-fade,
  body.lm-reveal-ready .lm-reveal-scale,
  body.lm-reveal-ready .lm-stagger-item {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .lm-float-soft { animation: none !important; }
}

/* =========================================================
   HERO MOTION — gate post-load (2026-05-27, v2)
   IMPORTANTE: l'animazione parte SOLO quando body ha .lm-hero-ready
   (aggiunta da JS dopo window.load). Così l'utente VEDE il movimento
   invece che trovare l'animazione già completata al primo paint.
   Fallback: se JS non parte, gli elementi restano visibili (no opacity:0).
   ========================================================= */

@keyframes lmHeroFadeUp {
  from { opacity: 0; transform: translateY(72px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes lmHeroFromLeft {
  from { opacity: 0; transform: translateX(-180px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes lmHeroFromRight {
  from { opacity: 0; transform: translateX(180px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes lmHeroScaleIn {
  from { opacity: 0; transform: scale(0.84); }
  to   { opacity: 1; transform: scale(1); }
}

/* ---------- TEXT BLOCK baseline (escluse home/product) ---------- */
body.lm-hero-ready [class*="__hero-text"]:not(.page-home__hero-text):not(.lm-product__summary),
body.lm-hero-ready [class*="__hero-quote"],
body.lm-hero-ready [class*="__hero-h1"]:not(.page-home__hero-h1),
body.lm-hero-ready [class*="__hero-eyebrow"]:not(.page-home__hero-eyebrow) {
  animation: lmHeroFadeUp 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 200ms both;
}
body.lm-hero-ready [class*="__hero-lede"]:not(.page-home__hero-lede) {
  animation: lmHeroFadeUp 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 450ms both;
}
body.lm-hero-ready [class*="__hero-cta"]:not(.page-home__hero-cta) {
  animation: lmHeroFadeUp 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 700ms both;
}

/* ---------- MEDIA / VISUAL / PRODUCT / BIGSHOT / DISPLAY / SHOT (image col) ---------- */
body.lm-hero-ready [class*="__hero-media"]:not(.lm-product__hero-image),
body.lm-hero-ready [class*="__hero-image"]:not(.lm-product__hero-image):not(.lm-product__hero-img),
body.lm-hero-ready [class*="__hero-product"]:not(.page-home__hero-product),
body.lm-hero-ready [class*="__hero-visual"],
body.lm-hero-ready [class*="__hero-graphic"],
body.lm-hero-ready [class*="__hero-bigshot"],
body.lm-hero-ready [class*="__hero-display"],
body.lm-hero-ready [class*="__hero-shot"],
body.lm-hero-ready [class*="__intro-media"] {
  animation: lmHeroFromRight 1500ms cubic-bezier(0.22, 0.61, 0.36, 1) 350ms both;
}

/* === FIX BACKGROUND CHIARO/BIANCO sulle img dei wrapper hero non-product ===
   Le immagini sorgente PNG hanno spesso sfondo bianco residuo.
   mix-blend-mode: multiply funziona qui perché questi wrapper non hanno
   transform ereditato dai parent (a differenza delle product page) o
   comunque l'effetto è scoped agli img standalone. */
[class*="__hero-display"] img,
[class*="__hero-display"] video,
[class*="__hero-shot"] img,
[class*="__hero-shot"] video,
[class*="__hero-bigshot"] img,
[class*="__hero-bigshot"] video,
[class*="__hero-media"]:not(.lm-product__hero-image) img,
[class*="__hero-media"]:not(.lm-product__hero-image) video {
  mix-blend-mode: multiply !important;
  background: transparent !important;
  background-color: transparent !important;
}
/* Wrapper figure: niente background/border che crei riquadro dietro i video */
[class*="__hero-display"],
[class*="__hero-shot"],
[class*="__hero-bigshot"],
[class*="__hero-media"]:not(.lm-product__hero-image) {
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  isolation: auto !important;
}

/* PAGINE ATOM — i bigshot contengono <video> MP4 senza alpha channel.
   mix-blend-mode non funziona se un antenato ha animation con
   opacity/transform attivi che creano stacking context isolato.
   Disabilitiamo l'animation sul wrapper bigshot Atom: il blend mode
   torna a operare correttamente fino al body bg. */
body.lm-hero-ready .page-a9__hero [class*="__hero-bigshot"],
body.lm-hero-ready .page-a9p__hero [class*="__hero-bigshot"],
body.lm-hero-ready .page-a12__hero [class*="__hero-bigshot"],
body.lm-hero-ready .page-a12p__hero [class*="__hero-bigshot"],
body.lm-hero-ready .page-atom__hero [class*="__hero-bigshot"] {
  animation: none !important;
  opacity: 1 !important;
  transform: none !important;
  isolation: auto !important;
  will-change: auto !important;
}

/* === PAGE NAVIGAZIONE — immagine grande, allineata in alto, no padding destro === */
.page-nav__hero-grid {
  align-items: start !important;
}
.page-nav__hero-media {
  aspect-ratio: auto !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  overflow: visible !important;
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;     /* immagine ancorata al bordo destro, no padding */
  max-width: none !important;
  width: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
  transform: none !important;     /* rimuove translateX(80px) e (-32px) dei vecchi post_content */
}
.page-nav__hero-media img {
  object-fit: contain !important;
  height: auto !important;
  width: 100% !important;
  max-width: 720px;
  max-height: 720px;
  margin: 0 0 0 auto !important;  /* allinea a destra, no padding-right */
  background: transparent !important;
  filter: none !important;
  mix-blend-mode: multiply;
}
@media (max-width: 768px) {
  .page-nav__hero-grid { align-items: center !important; }
  .page-nav__hero-media { justify-content: center; }
  .page-nav__hero-media img {
    max-width: 100%;
    max-height: 440px;
    margin: 0 auto !important;
  }
}

/* ---------- VARIANTI PER PAGINA — distribuzione varietà ---------- */

/* Atom 9 Plus: text from-left, media from-right */
body.lm-hero-ready .page-a9p__hero [class*="__hero-text"],
body.lm-hero-ready .page-a9p__hero [class*="__hero-quote"] {
  animation: lmHeroFromLeft 1200ms cubic-bezier(0.22, 0.61, 0.36, 1) 150ms both;
}

/* Atom 12: text from-left, media scale */
body.lm-hero-ready .page-a12__hero [class*="__hero-text"],
body.lm-hero-ready .page-a12__hero [class*="__hero-quote"] {
  animation: lmHeroFromLeft 1200ms cubic-bezier(0.22, 0.61, 0.36, 1) 150ms both;
}
body.lm-hero-ready .page-a12__hero [class*="__hero-media"],
body.lm-hero-ready .page-a12__hero [class*="__hero-image"],
body.lm-hero-ready .page-a12__hero [class*="__hero-product"],
body.lm-hero-ready .page-a12__hero [class*="__hero-visual"] {
  animation: lmHeroScaleIn 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 250ms both;
}

/* Atom 12 Plus: image from-left, text from-right */
body.lm-hero-ready .page-a12p__hero [class*="__hero-text"],
body.lm-hero-ready .page-a12p__hero [class*="__hero-quote"] {
  animation: lmHeroFromRight 1200ms cubic-bezier(0.22, 0.61, 0.36, 1) 200ms both;
}
body.lm-hero-ready .page-a12p__hero [class*="__hero-media"],
body.lm-hero-ready .page-a12p__hero [class*="__hero-image"],
body.lm-hero-ready .page-a12p__hero [class*="__hero-product"],
body.lm-hero-ready .page-a12p__hero [class*="__hero-visual"] {
  animation: lmHeroFromLeft 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 250ms both;
}

/* Serie Atom: text fade-up + media scale */
body.lm-hero-ready .page-atom__hero [class*="__hero-media"],
body.lm-hero-ready .page-atom__hero [class*="__hero-image"],
body.lm-hero-ready .page-atom__hero [class*="__hero-product"] {
  animation: lmHeroScaleIn 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 300ms both;
}

/* Magnum hub: bigshot/media è a DESTRA → from-right; text è a SINISTRA → from-left */
body.lm-hero-ready .page-magnum__hero [class*="__hero-text"],
body.lm-hero-ready .page-magnum__hero [class*="__hero-quote"] {
  animation: lmHeroFromLeft 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 200ms both;
}
body.lm-hero-ready .page-magnum__hero [class*="__hero-media"],
body.lm-hero-ready .page-magnum__hero [class*="__hero-image"],
body.lm-hero-ready .page-magnum__hero [class*="__hero-product"],
body.lm-hero-ready .page-magnum__hero [class*="__hero-visual"],
body.lm-hero-ready .page-magnum__hero [class*="__hero-bigshot"] {
  animation: lmHeroFromRight 1500ms cubic-bezier(0.22, 0.61, 0.36, 1) 350ms both;
}

/* Magnum Pro HD / Wifi: text from-left, media from-right (default più importante) */
body.lm-hero-ready .page-mphd__hero [class*="__hero-text"],
body.lm-hero-ready .page-mpw__hero [class*="__hero-text"] {
  animation: lmHeroFromLeft 1200ms cubic-bezier(0.22, 0.61, 0.36, 1) 150ms both;
}

/* Serie Q: media è a SINISTRA → from-left; text è a DESTRA → from-right */
body.lm-hero-ready .page-q__hero [class*="__hero-media"],
body.lm-hero-ready .page-q__hero [class*="__hero-image"],
body.lm-hero-ready .page-q__hero [class*="__hero-product"] {
  animation: lmHeroFromLeft 1500ms cubic-bezier(0.22, 0.61, 0.36, 1) 350ms both;
}
body.lm-hero-ready .page-q__hero [class*="__hero-text"],
body.lm-hero-ready .page-q__hero [class*="__hero-quote"] {
  animation: lmHeroFromRight 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 200ms both;
}

/* Q Display 12 / 16: media (display) è a SINISTRA → from-left; text a DESTRA → from-right */
body.lm-hero-ready .page-q12__hero [class*="__hero-text"],
body.lm-hero-ready .page-q16__hero [class*="__hero-text"] {
  animation: lmHeroFromRight 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 200ms both;
}
body.lm-hero-ready .page-q12__hero [class*="__hero-display"],
body.lm-hero-ready .page-q12__hero [class*="__hero-media"],
body.lm-hero-ready .page-q12__hero [class*="__hero-image"],
body.lm-hero-ready .page-q12__hero [class*="__hero-product"],
body.lm-hero-ready .page-q16__hero [class*="__hero-display"],
body.lm-hero-ready .page-q16__hero [class*="__hero-media"],
body.lm-hero-ready .page-q16__hero [class*="__hero-image"],
body.lm-hero-ready .page-q16__hero [class*="__hero-product"] {
  animation: lmHeroFromLeft 1500ms cubic-bezier(0.22, 0.61, 0.36, 1) 350ms both;
}

/* Q App: scale-in più marcato */
body.lm-hero-ready .page-qapp__hero [class*="__hero-media"],
body.lm-hero-ready .page-qapp__hero [class*="__hero-image"],
body.lm-hero-ready .page-qapp__hero [class*="__hero-visual"] {
  animation: lmHeroScaleIn 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 250ms both;
}

/* Radar: text fade-up con delay editoriale */
body.lm-hero-ready .page-radar__hero [class*="__hero-text"],
body.lm-hero-ready .page-radar__hero [class*="__hero-quote"] {
  animation: lmHeroFadeUp 1200ms cubic-bezier(0.22, 0.61, 0.36, 1) 400ms both;
}

/* Ecoscandagli: media è a DESTRA → from-right; text è a SINISTRA → from-left */
body.lm-hero-ready .page-eco__hero [class*="__hero-text"],
body.lm-hero-ready .page-eco__hero [class*="__hero-quote"] {
  animation: lmHeroFromLeft 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 200ms both;
}
body.lm-hero-ready .page-eco__hero [class*="__hero-media"],
body.lm-hero-ready .page-eco__hero [class*="__hero-image"],
body.lm-hero-ready .page-eco__hero [class*="__intro-media"] {
  animation: lmHeroFromRight 1500ms cubic-bezier(0.22, 0.61, 0.36, 1) 350ms both;
}

/* Trasduttori: text from-left */
body.lm-hero-ready .page-trasd__hero [class*="__hero-text"],
body.lm-hero-ready .page-trasd__hero [class*="__hero-quote"] {
  animation: lmHeroFromLeft 1200ms cubic-bezier(0.22, 0.61, 0.36, 1) 150ms both;
}

/* Navigazione: NO transform laterale sull'immagine (delicata). Scale-in dolce. */
body.lm-hero-ready .page-nav__hero [class*="__hero-quote"] {
  animation: lmHeroFromLeft 1200ms cubic-bezier(0.22, 0.61, 0.36, 1) 200ms both;
}
body.lm-hero-ready .page-nav__hero [class*="__hero-media"],
body.lm-hero-ready .page-nav__hero [class*="__hero-image"],
body.lm-hero-ready .page-nav__hero [class*="__hero-visual"] {
  animation: lmHeroScaleIn 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 300ms both;
}

/* C-MAP / Navionics: scale-in più visibile */
body.lm-hero-ready .page-cmap__hero [class*="__hero-media"],
body.lm-hero-ready .page-cmap__hero [class*="__hero-visual"],
body.lm-hero-ready .page-nav-i__hero [class*="__hero-media"],
body.lm-hero-ready .page-nav-i__hero [class*="__hero-visual"] {
  animation: lmHeroScaleIn 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 250ms both;
}

/* Captain Cloud: text from-left */
body.lm-hero-ready .page-cc__hero [class*="__hero-text"],
body.lm-hero-ready .page-cc__hero [class*="__hero-quote"] {
  animation: lmHeroFromLeft 1200ms cubic-bezier(0.22, 0.61, 0.36, 1) 150ms both;
}

/* Mirror Control: media from-left, text from-right */
body.lm-hero-ready .page-mc__hero [class*="__hero-text"],
body.lm-hero-ready .page-mc__hero [class*="__hero-quote"] {
  animation: lmHeroFromRight 1200ms cubic-bezier(0.22, 0.61, 0.36, 1) 200ms both;
}
body.lm-hero-ready .page-mc__hero [class*="__hero-media"],
body.lm-hero-ready .page-mc__hero [class*="__hero-image"],
body.lm-hero-ready .page-mc__hero [class*="__hero-visual"] {
  animation: lmHeroFromLeft 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 250ms both;
}

/* Settori: editorial — testo arriva da sinistra con delay */
body.lm-hero-ready .page-pesca-pro__hero [class*="__hero-text"],
body.lm-hero-ready .page-pesca-pro__hero [class*="__hero-quote"],
body.lm-hero-ready .page-pesca-sport__hero [class*="__hero-text"],
body.lm-hero-ready .page-pesca-sport__hero [class*="__hero-quote"],
body.lm-hero-ready .page-workboat__hero [class*="__hero-text"],
body.lm-hero-ready .page-workboat__hero [class*="__hero-quote"],
body.lm-hero-ready .page-cantieri__hero [class*="__hero-text"],
body.lm-hero-ready .page-cantieri__hero [class*="__hero-quote"] {
  animation: lmHeroFromLeft 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 200ms both;
}

/* Catalogo: testo ritardato (drammatico) */
body.lm-hero-ready .page-cat__hero [class*="__hero-text"],
body.lm-hero-ready .page-catl__hero [class*="__hero-text"] {
  animation: lmHeroFadeUp 1100ms cubic-bezier(0.22, 0.61, 0.36, 1) 500ms both;
}

/* Software / Aggiornamenti / Download / Manuali */
body.lm-hero-ready .page-sw__hero [class*="__hero-media"],
body.lm-hero-ready .page-sw__hero [class*="__hero-image"],
body.lm-hero-ready .page-dl__hero [class*="__hero-media"],
body.lm-hero-ready .page-dl__hero [class*="__hero-image"],
body.lm-hero-ready .page-mu__hero [class*="__hero-media"],
body.lm-hero-ready .page-mu__hero [class*="__hero-image"],
body.lm-hero-ready .page-manuali__hero [class*="__hero-media"],
body.lm-hero-ready .page-manuali__hero [class*="__hero-image"] {
  animation: lmHeroScaleIn 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 250ms both;
}

/* Assistenza / Centro: fade-up editoriale con delay alto */
body.lm-hero-ready .page-assistenza__hero [class*="__hero-text"],
body.lm-hero-ready .page-centro__hero [class*="__hero-text"] {
  animation: lmHeroFadeUp 1100ms cubic-bezier(0.22, 0.61, 0.36, 1) 400ms both;
}

/* About / Lavora con noi / Dealer / Contatti / News: editorial */
body.lm-hero-ready .page-about__hero [class*="__hero-text"],
body.lm-hero-ready .page-careers__hero [class*="__hero-text"],
body.lm-hero-ready .page-bdealer__hero [class*="__hero-text"],
body.lm-hero-ready .page-dealer__hero [class*="__hero-text"],
body.lm-hero-ready .page-contact__hero [class*="__hero-text"],
body.lm-hero-ready .page-news__hero [class*="__hero-text"] {
  animation: lmHeroFromLeft 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 200ms both;
}
body.lm-hero-ready .page-about__hero [class*="__hero-media"],
body.lm-hero-ready .page-about__hero [class*="__hero-image"],
body.lm-hero-ready .page-careers__hero [class*="__hero-media"],
body.lm-hero-ready .page-careers__hero [class*="__hero-image"],
body.lm-hero-ready .page-bdealer__hero [class*="__hero-media"],
body.lm-hero-ready .page-bdealer__hero [class*="__hero-image"],
body.lm-hero-ready .page-dealer__hero [class*="__hero-media"],
body.lm-hero-ready .page-dealer__hero [class*="__hero-image"] {
  animation: lmHeroFromRight 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 300ms both;
}

/* Accessori: media scale */
body.lm-hero-ready .page-acc__hero [class*="__hero-media"],
body.lm-hero-ready .page-acc__hero [class*="__hero-image"] {
  animation: lmHeroScaleIn 1300ms cubic-bezier(0.22, 0.61, 0.36, 1) 250ms both;
}

/* Mappe Elettroniche: media è a DESTRA → from-right */
body.lm-hero-ready .page-me__hero [class*="__hero-media"],
body.lm-hero-ready .page-me__hero [class*="__hero-image"],
body.lm-hero-ready .page-me__hero [class*="__hero-visual"] {
  animation: lmHeroFromRight 1500ms cubic-bezier(0.22, 0.61, 0.36, 1) 350ms both;
}

/* Mobile: riduci translateX a 36px per evitare overflow ma mantenere visibilità */
@media (max-width: 768px) {
  @keyframes lmHeroFromLeft  { from { opacity: 0; transform: translateX(-36px); } to { opacity: 1; transform: translateX(0); } }
  @keyframes lmHeroFromRight { from { opacity: 0; transform: translateX(36px); }  to { opacity: 1; transform: translateX(0); } }
  @keyframes lmHeroFadeUp    { from { opacity: 0; transform: translateY(32px); }  to { opacity: 1; transform: translateY(0); } }
}

/* Reduced motion: bypassa tutto */
@media (prefers-reduced-motion: reduce) {
  [class*="__hero-text"],
  [class*="__hero-quote"],
  [class*="__hero-h1"],
  [class*="__hero-eyebrow"],
  [class*="__hero-lede"],
  [class*="__hero-cta"],
  [class*="__hero-media"],
  [class*="__hero-image"],
  [class*="__hero-product"],
  [class*="__hero-visual"],
  [class*="__hero-graphic"],
  [class*="__intro-media"] {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* =========================================================
   PAGE ECOSCANDAGLI — bilancia visivamente la prima card
   (Lorenz Fish PRO CHIRP), il cui asset riempie tutto il canvas
   mentre gli Atom hanno spazio intorno.

   transform: scale è più robusto di max-width perché:
   - bypassa `img { max-width: 100% !important }` del safety net mobile
   - bypassa l'attributo HTML `width="377" height="371"` sull'<img>
   ========================================================= */
.page-eco__models-grid .page-eco__model:first-child .page-eco__model-media img {
  transform: scale(0.62);
  transform-origin: center center;
}
@media (max-width: 640px) {
  .page-eco__models-grid .page-eco__model:first-child .page-eco__model-media img {
    transform: scale(0.72);
  }
}

/* =========================================================
   B2B PRICE — render del prezzo riservato alle aziende
   sulla scheda prodotto (single product + loop catalogo)

   Markup:
     <span class="lm-b2b-price">
       <del class="lm-b2b-price__regular">€999</del>
       <ins class="lm-b2b-price__net">€699,30</ins>
       <span class="lm-b2b-price__discount">30% di sconto</span>
     </span>
     <span class="lm-b2b-badge">Prezzo riservato a {azienda}</span>
   ========================================================= */
.lm-b2b-price {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2, 8px) var(--space-3, 12px);
  font-family: var(--font-display);
}

.lm-b2b-price__regular {
  color: var(--color-black-400, #7A7A7A);
  text-decoration: line-through;
  font-size: 0.85em;
  font-weight: 400;
  opacity: 0.75;
}
.lm-b2b-price__regular .woocommerce-Price-amount { color: inherit; }

.lm-b2b-price__net {
  text-decoration: none;
  background: transparent;
  color: var(--brand, #A61D1D);
  font-weight: 600;
  font-size: 1.15em;
  letter-spacing: -0.01em;
}
.lm-b2b-price__net .woocommerce-Price-amount { color: inherit; }

.lm-b2b-price__discount {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--brand, #A61D1D);
  color: #fff;
  font-family: var(--font-body, system-ui);
  font-size: 0.7em;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  white-space: nowrap;
}

.lm-b2b-badge {
  display: inline-block;
  margin-top: var(--space-2, 8px);
  padding: 4px 10px;
  border: 1px solid var(--color-ivory-300, #E5DDC9);
  background: var(--color-ivory-50, #FBF8F1);
  border-radius: 6px;
  color: var(--color-black-700, #2E2E2E);
  font-family: var(--font-body, system-ui);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.02em;
}

/* Loop catalogo: pacchetto verticale per spazi ridotti */
.products .product .lm-b2b-price,
.related .product .lm-b2b-price {
  font-size: 0.95em;
  gap: 4px 8px;
}
.products .product .lm-b2b-badge,
.related .product .lm-b2b-badge {
  display: block;
  margin-top: 4px;
  font-size: 0.65rem;
}

/* Single product hero — leggermente più grande */
body.single-product .product .price .lm-b2b-price {
  font-size: clamp(1rem, 2.2vw, 1.4rem);
}
body.single-product .product .price .lm-b2b-price__discount {
  font-size: 0.65em;
}
