/* ============================================================
   TREVANI · Ortofrutta Gourmet · Locarno
   Stylesheet condiviso v1.0 · Maggio 2026
   ============================================================ */

:root {
  --green: #88A78F;
  --green-dark: #3D5A45;
  --green-darker: #2A3F31;
  --green-mist: #E9EFEA;
  --green-bg: #F2F5F1;
  --ivory: #FAF8F3;
  --paper: #FFFFFF;
  --ink: #1F2A23;
  --ink-soft: #5C6660;
  --terracotta: #C97B5B;
  --terracotta-dark: #A55C3E;
  --line: rgba(31, 42, 35, 0.08);
  --line-strong: rgba(31, 42, 35, 0.15);
  --font-serif: 'Fraunces', Georgia, serif;
  --font-sans: 'DM Sans', system-ui, sans-serif;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font-sans);
  color: var(--ink);
  background: var(--ivory);
  line-height: 1.6;
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; height: auto; }

/* ============ TOP BAR ============ */
.topbar {
  background: var(--green-darker);
  color: var(--green-mist);
  font-size: 13px;
  padding: 8px 0;
  letter-spacing: 0.02em;
}
.topbar-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 24px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
}
.topbar-left { display: flex; gap: 20px; align-items: center; }
.topbar-pill {
  background: rgba(255,255,255,0.08);
  padding: 2px 10px;
  border-radius: 12px;
  font-size: 12px;
}
.topbar-right { display: flex; gap: 16px; }
.topbar-right a:hover { color: white; }

/* ============ HEADER ============ */
header.main {
  background: rgba(255, 255, 255, 0.86);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--line);
  position: sticky;
  top: 0;
  z-index: 100;
  transition: box-shadow .3s ease;
}
header.main.is-scrolled { box-shadow: 0 10px 30px rgba(31, 42, 35, .08); }
.header-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 20px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}
.logo { display: flex; align-items: baseline; gap: 10px; flex-shrink: 0; }
.logo-wordmark {
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: 26px;
  letter-spacing: 0.18em;
  color: var(--green-dark);
}
.logo-tagline {
  font-family: var(--font-sans);
  font-size: 11px;
  letter-spacing: 0.12em;
  color: var(--ink-soft);
  border-left: 1px solid var(--line-strong);
  padding-left: 10px;
  line-height: 1.3;
  text-transform: uppercase;
}
nav.primary {
  display: flex;
  align-items: center;
  gap: 22px;
  font-size: 14px;
  font-weight: 500;
}
nav.primary a {
  color: var(--ink);
  padding: 6px 0;
  white-space: nowrap;
  border-bottom: 2px solid transparent;
  transition: border-color 0.2s, color 0.2s;
}
nav.primary a:hover { color: var(--green-dark); border-bottom-color: var(--green); }
nav.primary a.featured { color: var(--terracotta-dark); }
nav.primary a.active { border-bottom-color: var(--green-dark); color: var(--green-dark); }

.header-cta {
  display: flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  flex-shrink: 0;
  font-size: 14px;
  font-weight: 500;
  color: var(--green-dark);
  padding: 10px 18px;
  border: 1px solid var(--green-dark);
  border-radius: 999px;
  transition: background 0.2s, color 0.2s;
}
.header-cta:hover { background: var(--green-dark); color: white; }

/* ============ COMMON LAYOUT ============ */
.section-inner { max-width: 1280px; margin: 0 auto; padding: 0 24px; }
.section-eyebrow {
  font-family: var(--font-sans);
  font-size: 13px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--terracotta-dark);
  margin-bottom: 14px;
  text-align: center;
}
.section-title {
  font-family: var(--font-serif);
  font-weight: 400;
  font-size: 48px;
  line-height: 1.1;
  color: var(--ink);
  text-align: center;
  margin-bottom: 16px;
}
.section-title em { font-style: italic; }
.section-sub {
  text-align: center;
  font-size: 17px;
  color: var(--ink-soft);
  max-width: 640px;
  margin: 0 auto 56px;
  line-height: 1.55;
}

/* ============ BUTTONS ============ */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 28px;
  border-radius: 999px;
  font-size: 15px;
  font-weight: 500;
  transition: all 0.2s;
  cursor: pointer;
  border: 1px solid transparent;
  font-family: var(--font-sans);
}
.btn-primary { background: var(--green-dark); color: white; }
.btn-primary:hover { background: var(--green-darker); transform: translateY(-1px); }
.btn-secondary { background: var(--paper); color: var(--green-dark); border-color: var(--green-dark); }
.btn-secondary:hover { background: var(--green-dark); color: white; }
.btn-light { background: var(--paper); color: var(--green-dark); }
.btn-light:hover { background: var(--ivory); transform: translateY(-1px); }
.btn-outline { background: transparent; color: white; border-color: rgba(255,255,255,0.5); }
.btn-outline:hover { border-color: white; background: rgba(255,255,255,0.1); }
.btn-terracotta { background: var(--terracotta); color: white; }
.btn-terracotta:hover { background: var(--terracotta-dark); }

/* ============ HERO (general for inner pages) ============ */
.page-hero {
  background: var(--green);
  color: white;
  padding: 64px 0 80px;
  position: relative;
  overflow: hidden;
  margin: 14px clamp(12px, 2vw, 26px) 0;
  border-radius: 28px;
}
.page-hero-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 24px;
  position: relative;
  z-index: 2;
}
.page-hero .breadcrumb {
  font-size: 13px;
  letter-spacing: 0.06em;
  opacity: 0.8;
  margin-bottom: 20px;
}
.page-hero .breadcrumb a:hover { opacity: 1; }
.page-hero h1 {
  font-family: var(--font-serif);
  font-weight: 400;
  font-size: 56px;
  line-height: 1.05;
  letter-spacing: -0.01em;
  margin-bottom: 20px;
  max-width: 900px;
}
.page-hero h1 em { font-style: italic; font-weight: 400; }
.page-hero .lead {
  font-size: 18px;
  line-height: 1.55;
  opacity: 0.92;
  max-width: 680px;
}

/* ============ HOME HERO (special) ============ */
.hero {
  background: var(--green);
  color: white;
  position: relative;
  overflow: hidden;
}
.hero-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 88px 24px 96px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: center;
  position: relative;
  z-index: 2;
}
.hero-left .hero-eyebrow {
  font-family: var(--font-sans);
  font-size: 13px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.85;
  margin-bottom: 20px;
}
.hero-left h1 {
  font-family: var(--font-serif);
  font-weight: 400;
  font-size: 64px;
  line-height: 1.05;
  letter-spacing: -0.01em;
  margin-bottom: 28px;
}
.hero-left h1 em { font-style: italic; font-weight: 400; }
.hero-left .lead {
  font-size: 18px;
  line-height: 1.55;
  opacity: 0.92;
  max-width: 500px;
  margin-bottom: 36px;
}
.hero-buttons { display: flex; gap: 14px; flex-wrap: wrap; }

.hero-right { position: relative; aspect-ratio: 4/5; border-radius: 4px; overflow: hidden; }
.hero-right img { width: 100%; height: 100%; object-fit: cover; }
.hero-badge {
  position: absolute;
  bottom: 24px;
  left: 24px;
  background: var(--paper);
  color: var(--ink);
  padding: 14px 20px;
  border-radius: 4px;
  font-family: var(--font-serif);
  font-size: 14px;
  line-height: 1.3;
  box-shadow: 0 4px 20px rgba(0,0,0,0.12);
}
.hero-badge strong {
  font-weight: 600;
  display: block;
  font-size: 13px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--green-dark);
  margin-bottom: 4px;
  font-family: var(--font-sans);
}
.hero-deco { position: absolute; inset: 0; pointer-events: none; opacity: 0.12; z-index: 1; }
.hero-deco svg { position: absolute; stroke: white; fill: none; stroke-width: 1.5; }

/* ============ OFFERTA SECTION ============ */
section.offerta { padding: 80px 0; background: var(--paper); }
.offerta-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  gap: 20px;
}
.offerta-card {
  background: var(--ivory);
  border: 1px solid var(--line);
  border-radius: 6px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform 0.3s, border-color 0.3s;
}
.offerta-card:hover { transform: translateY(-3px); border-color: var(--green); }
.offerta-card.featured { background: var(--green-mist); border-color: var(--green); }
.offerta-img { aspect-ratio: 16/10; overflow: hidden; background: #e0e0e0; }
.offerta-card.featured .offerta-img { aspect-ratio: 16/12; }
.offerta-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s; }
.offerta-card:hover .offerta-img img { transform: scale(1.04); }
.offerta-body { padding: 22px 24px 26px; flex: 1; display: flex; flex-direction: column; }
.offerta-tag {
  display: inline-block;
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--terracotta-dark);
  margin-bottom: 8px;
  font-weight: 500;
}
.offerta-title {
  font-family: var(--font-serif);
  font-size: 24px;
  font-weight: 500;
  line-height: 1.2;
  margin-bottom: 8px;
}
.offerta-card.featured .offerta-title { font-size: 28px; }
.offerta-desc { font-size: 14px; color: var(--ink-soft); line-height: 1.55; margin-bottom: 16px; flex: 1; }
.offerta-meta {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding-top: 14px;
  border-top: 1px solid var(--line);
  font-size: 13px;
  color: var(--ink-soft);
}
.offerta-meta strong {
  font-family: var(--font-serif);
  font-size: 22px;
  font-weight: 500;
  color: var(--green-dark);
}

/* ============ SERVIZI GRID (HOME) ============ */
section.servizi { padding: 96px 0; background: var(--green-bg); }
.servizi-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin-top: 56px;
}
.servizio-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 36px 32px;
  display: flex;
  flex-direction: column;
  position: relative;
  overflow: hidden;
  transition: all 0.3s;
  min-height: 280px;
}
.servizio-card:hover { border-color: var(--green); transform: translateY(-2px); }
.servizio-icon {
  width: 56px;
  height: 56px;
  margin-bottom: 24px;
  stroke: var(--green-dark);
  fill: none;
  stroke-width: 1.5;
}
.servizio-card h3 {
  font-family: var(--font-serif);
  font-size: 26px;
  font-weight: 500;
  line-height: 1.15;
  margin-bottom: 12px;
  color: var(--ink);
}
.servizio-card p {
  font-size: 15px;
  color: var(--ink-soft);
  line-height: 1.55;
  flex: 1;
  margin-bottom: 20px;
}
.servizio-link {
  font-size: 14px;
  font-weight: 500;
  color: var(--green-dark);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border-bottom: 1px solid transparent;
  align-self: flex-start;
  transition: gap 0.2s;
}
.servizio-card:hover .servizio-link { gap: 12px; }
.servizio-link::after { content: '→'; font-size: 16px; }

/* ============ PROMESSA (dark green band) ============ */
section.promessa {
  padding: 100px 0;
  background: var(--green-dark);
  color: var(--green-mist);
  position: relative;
  overflow: hidden;
}
.promessa-inner {
  max-width: 880px;
  margin: 0 auto;
  padding: 0 24px;
  text-align: center;
  position: relative;
  z-index: 2;
}
.promessa h2 {
  font-family: var(--font-serif);
  font-weight: 400;
  font-size: 44px;
  line-height: 1.15;
  margin-bottom: 28px;
  color: white;
}
.promessa h2 em { font-style: italic; }
.promessa p {
  font-size: 18px;
  line-height: 1.7;
  opacity: 0.9;
  max-width: 720px;
  margin: 0 auto;
}
.promessa-divider { width: 60px; height: 1px; background: var(--green); margin: 32px auto; }

/* ============ TICINESE TEASER GRID ============ */
section.ticinese { padding: 96px 0; background: var(--ivory); }
.ticinese-header {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: end;
  margin-bottom: 48px;
}
.ticinese-header .left .section-eyebrow { text-align: left; }
.ticinese-header .left .section-title { text-align: left; margin-bottom: 24px; font-size: 44px; }
.ticinese-header .left p {
  color: var(--ink-soft);
  font-size: 16px;
  line-height: 1.65;
  margin-bottom: 0;
}
.ticinese-header .right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 12px;
}
.ticinese-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 500;
  color: var(--green-dark);
  border-bottom: 1px solid var(--green-dark);
  padding-bottom: 4px;
}
.ticinese-link:hover { color: var(--terracotta-dark); border-color: var(--terracotta-dark); }
.ticinese-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
}
.ticinese-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform 0.3s, border-color 0.3s;
}
.ticinese-card:hover { transform: translateY(-3px); border-color: var(--green); }
.ticinese-card .img { aspect-ratio: 4/5; overflow: hidden; }
.ticinese-card .img img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s; }
.ticinese-card:hover .img img { transform: scale(1.05); }
.ticinese-card .body { padding: 18px 20px 22px; }
.ticinese-card .loc {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--terracotta-dark);
  margin-bottom: 8px;
  font-weight: 500;
}
.ticinese-card .name {
  font-family: var(--font-serif);
  font-size: 19px;
  font-weight: 500;
  line-height: 1.2;
  margin-bottom: 6px;
}
.ticinese-card .what { font-size: 13px; color: var(--ink-soft); font-style: italic; }

/* ============ INNER PAGE COMMON ============ */
.page-section {
  padding: 80px 0;
}
.page-section.paper { background: var(--paper); }
.page-section.green-bg { background: var(--green-bg); }
.page-section.green-mist { background: var(--green-mist); }
.page-section.green-dark { background: var(--green-dark); color: var(--green-mist); }
.page-section.green-dark h2 { color: white; }

.two-col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: center;
}
.two-col.narrow { grid-template-columns: 1.4fr 1fr; }
.two-col.wide-img { grid-template-columns: 1fr 1.3fr; }
.two-col-img { aspect-ratio: 4/3; overflow: hidden; border-radius: 6px; }
.two-col-img img { width: 100%; height: 100%; object-fit: cover; }
.two-col-text h2 {
  font-family: var(--font-serif);
  font-weight: 400;
  font-size: 42px;
  line-height: 1.1;
  margin-bottom: 20px;
}
.two-col-text h2 em { font-style: italic; }
.two-col-text .eyebrow {
  font-size: 13px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--terracotta-dark);
  margin-bottom: 14px;
  font-weight: 500;
}
.two-col-text p { font-size: 16px; line-height: 1.7; color: var(--ink-soft); margin-bottom: 16px; }
.two-col-text p:last-child { margin-bottom: 0; }

/* Cards generic (events, packages, dishes...) */
.card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.card-grid.two { grid-template-columns: 1fr 1fr; }
.card-grid.four { grid-template-columns: repeat(4, 1fr); }
.gcard {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform 0.3s, border-color 0.3s;
}
.gcard:hover { transform: translateY(-3px); border-color: var(--green); }
.gcard.featured { border-color: var(--green); }
.gcard .img-wrap { aspect-ratio: 4/3; overflow: hidden; }
.gcard .img-wrap img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s; }
.gcard:hover .img-wrap img { transform: scale(1.04); }
.gcard .body { padding: 22px 24px 26px; flex: 1; display: flex; flex-direction: column; }
.gcard .tag {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--terracotta-dark);
  margin-bottom: 8px;
  font-weight: 500;
}
.gcard h3 {
  font-family: var(--font-serif);
  font-size: 22px;
  font-weight: 500;
  line-height: 1.2;
  margin-bottom: 8px;
}
.gcard p {
  font-size: 14px;
  color: var(--ink-soft);
  line-height: 1.55;
  margin-bottom: 16px;
  flex: 1;
}
.gcard .price {
  font-family: var(--font-serif);
  font-size: 20px;
  font-weight: 500;
  color: var(--green-dark);
  padding-top: 14px;
  border-top: 1px solid var(--line);
}
.gcard .price .price-unit { font-size: 13px; color: var(--ink-soft); font-family: var(--font-sans); margin-right: 8px; font-weight: 400; }

/* Event card variant */
.event-card { background: var(--paper); border: 1px solid var(--line); border-radius: 6px; padding: 28px 32px; display: flex; gap: 24px; align-items: flex-start; }
.event-card.past { opacity: 0.7; }
.event-date {
  flex-shrink: 0;
  width: 80px;
  text-align: center;
  padding: 14px 8px;
  background: var(--green-mist);
  border-radius: 6px;
}
.event-date .day { font-family: var(--font-serif); font-size: 32px; line-height: 1; font-weight: 500; color: var(--green-dark); }
.event-date .month { font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--green-dark); margin-top: 4px; }
.event-status {
  flex-shrink: 0;
  width: 80px;
  min-height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 14px 8px;
  background: var(--green-mist);
  border-radius: 6px;
}
.event-status span { font-family: var(--font-serif); font-size: 19px; line-height: 1.12; font-weight: 500; color: var(--green-dark); }
.event-body { flex: 1; }
.event-tag {
  display: inline-block;
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--terracotta-dark);
  margin-bottom: 6px;
  font-weight: 500;
}
.event-body h3 {
  font-family: var(--font-serif);
  font-size: 24px;
  font-weight: 500;
  line-height: 1.2;
  margin-bottom: 8px;
}
.event-body p { color: var(--ink-soft); font-size: 14px; line-height: 1.55; margin-bottom: 14px; }
.event-meta { display: flex; gap: 20px; font-size: 13px; color: var(--ink-soft); flex-wrap: wrap; }
.event-meta span { display: inline-flex; align-items: center; gap: 6px; }

/* Pricing tiles for B2B */
.pricing-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.pricing-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 36px 32px;
  display: flex;
  flex-direction: column;
  position: relative;
}
.pricing-card.featured { border-color: var(--green); border-width: 2px; }
.pricing-badge {
  position: absolute;
  top: -12px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--green-dark);
  color: white;
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 4px 14px;
  border-radius: 999px;
  font-weight: 500;
}
.pricing-card h3 {
  font-family: var(--font-serif);
  font-size: 28px;
  font-weight: 500;
  line-height: 1.15;
  margin-bottom: 8px;
}
.pricing-card .pricing-sub { font-size: 14px; color: var(--ink-soft); margin-bottom: 24px; }
.pricing-card .price-big {
  font-family: var(--font-serif);
  font-size: 44px;
  font-weight: 500;
  color: var(--green-dark);
  line-height: 1;
  margin-bottom: 4px;
}
.pricing-card .price-big sup { font-size: 18px; color: var(--ink-soft); font-weight: 400; }
.pricing-card .price-unit-big { font-size: 13px; color: var(--ink-soft); margin-bottom: 24px; }
.pricing-features { list-style: none; padding: 0; margin: 0 0 28px; flex: 1; }
.pricing-features li {
  padding: 8px 0 8px 24px;
  font-size: 14px;
  color: var(--ink);
  border-bottom: 1px solid var(--line);
  position: relative;
}
.pricing-features li::before { content: '✓'; position: absolute; left: 0; color: var(--green-dark); font-weight: 700; }
.pricing-features li:last-child { border-bottom: none; }

/* Restaurant list cards */
.restaurant-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 28px 32px;
  transition: border-color 0.3s, transform 0.3s;
}
.restaurant-card:hover { border-color: var(--green); transform: translateY(-2px); }
.restaurant-card h3 {
  font-family: var(--font-serif);
  font-size: 24px;
  font-weight: 500;
  line-height: 1.2;
  margin-bottom: 6px;
}
.restaurant-card .r-type { font-size: 13px; color: var(--terracotta-dark); text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: 14px; font-weight: 500; }
.restaurant-card p { font-size: 14px; color: var(--ink-soft); line-height: 1.55; margin: 0; }

/* Process steps */
.steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-top: 48px;
}
.step {
  padding: 32px 28px;
  position: relative;
}
.step-num {
  font-family: var(--font-serif);
  font-size: 56px;
  font-weight: 500;
  color: var(--green);
  line-height: 1;
  opacity: 0.5;
  margin-bottom: 16px;
}
.step h4 {
  font-family: var(--font-serif);
  font-size: 22px;
  font-weight: 500;
  line-height: 1.2;
  margin-bottom: 10px;
}
.step p { font-size: 14px; color: var(--ink-soft); line-height: 1.6; }

/* Contact form */
.form-block {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 40px;
}
.form-block h3 {
  font-family: var(--font-serif);
  font-size: 28px;
  font-weight: 500;
  margin-bottom: 8px;
}
.form-block .form-intro { color: var(--ink-soft); margin-bottom: 28px; }
.form-row { margin-bottom: 18px; }
.form-row label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 6px; color: var(--ink); }
.form-row input, .form-row textarea, .form-row select {
  width: 100%;
  padding: 12px 14px;
  font-family: var(--font-sans);
  font-size: 15px;
  border: 1px solid var(--line-strong);
  border-radius: 4px;
  background: var(--ivory);
  color: var(--ink);
  transition: border-color 0.2s;
}
.form-row input:focus, .form-row textarea:focus, .form-row select:focus {
  outline: none;
  border-color: var(--green-dark);
}
.form-row textarea { min-height: 120px; resize: vertical; }
.form-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }

/* Inline contact card with phone + address */
.contact-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  background: var(--paper);
  border-radius: 6px;
  overflow: hidden;
  border: 1px solid var(--line);
}
.contact-strip-cell { padding: 28px 32px; border-right: 1px solid var(--line); }
.contact-strip-cell:last-child { border-right: none; }
.contact-strip-cell .label { font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--terracotta-dark); font-weight: 500; margin-bottom: 8px; }
.contact-strip-cell .value { font-family: var(--font-serif); font-size: 19px; font-weight: 500; }
.contact-strip-cell .value a:hover { color: var(--green-dark); }

/* Dish category */
.dish-cat {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 32px 36px;
  margin-bottom: 20px;
}
.dish-cat h3 {
  font-family: var(--font-serif);
  font-size: 28px;
  font-weight: 500;
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  gap: 12px;
}
.dish-cat .dish-sub { color: var(--ink-soft); font-size: 14px; font-style: italic; margin-bottom: 24px; }
.dish-list { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 32px; }
.dish-item {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 10px 0;
  border-bottom: 1px dashed var(--line);
}
.dish-item .dish-name { font-size: 15px; font-weight: 500; color: var(--ink); }
.dish-item .dish-from { font-size: 12px; color: var(--terracotta-dark); margin-left: 6px; }
.dish-item .dish-price { font-family: var(--font-serif); font-weight: 500; color: var(--green-dark); font-size: 16px; white-space: nowrap; padding-left: 16px; }

/* ============ FOOTER ============ */
footer.main { background: var(--green-darker); color: var(--green-mist); padding: 64px 0 32px; }
.footer-inner { max-width: 1280px; margin: 0 auto; padding: 0 24px; }
.footer-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 56px;
  padding-bottom: 48px;
  border-bottom: 1px solid rgba(255,255,255,0.12);
}
.footer-brand h4 {
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: 22px;
  letter-spacing: 0.16em;
  margin-bottom: 14px;
  color: white;
}
.footer-brand p { font-size: 14px; line-height: 1.6; opacity: 0.8; max-width: 360px; }
.footer-col h5 {
  font-family: var(--font-sans);
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--green);
  font-weight: 500;
  margin-bottom: 16px;
}
.footer-col ul { list-style: none; }
.footer-col li { margin-bottom: 10px; font-size: 14px; opacity: 0.85; }
.footer-col li a:hover { color: white; opacity: 1; }
.footer-bottom {
  margin-top: 32px;
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  opacity: 0.65;
  flex-wrap: wrap;
  gap: 16px;
}

/* ============ RESPONSIVE ============ */
@media (max-width: 960px) {
  .hero-inner, .ticinese-header, .two-col, .two-col.narrow, .two-col.wide-img {
    grid-template-columns: 1fr;
    gap: 40px;
  }
  .hero-left h1 { font-size: 44px; }
  .page-hero h1 { font-size: 40px; }
  .section-title { font-size: 36px; }
  .ticinese-header .right { align-items: flex-start; }
  .ticinese-header .left .section-title { font-size: 32px; }
  .two-col-text h2 { font-size: 30px; }
  .offerta-grid { grid-template-columns: 1fr; }
  .servizi-grid, .card-grid, .card-grid.four, .ticinese-grid {
    grid-template-columns: 1fr 1fr;
  }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; }
  nav.primary { display: none; }
  .pricing-grid { grid-template-columns: 1fr; }
  .steps { grid-template-columns: 1fr; }
  .contact-strip { grid-template-columns: 1fr; }
  .contact-strip-cell { border-right: none; border-bottom: 1px solid var(--line); }
  .contact-strip-cell:last-child { border-bottom: none; }
  .dish-list { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .servizi-grid, .ticinese-grid, .card-grid, .card-grid.two, .card-grid.four {
    grid-template-columns: 1fr;
  }
  .hero-left h1 { font-size: 36px; }
  .page-hero h1 { font-size: 32px; }
  .page-hero { padding: 48px 0 56px; }
  .section-title, .two-col-text h2 { font-size: 28px; }
  .promessa h2 { font-size: 30px; }
  .header-inner { padding: 16px 16px; gap: 12px; }
  .header-cta { padding: 8px 14px; font-size: 13px; }
  .logo-wordmark { font-size: 20px; }
  .logo-tagline { font-size: 10px; }
  .topbar { font-size: 12px; }
  .topbar-right a:nth-child(2) { display: none; }
  .form-cols { grid-template-columns: 1fr; }
  .form-block { padding: 28px 24px; }
  .event-card { flex-direction: column; gap: 16px; }
  .event-date { width: auto; display: flex; align-items: baseline; gap: 8px; padding: 8px 14px; }
  .event-date .month { margin-top: 0; }
  .event-status { width: auto; min-height: 0; padding: 8px 16px; }
  .dish-cat { padding: 24px 22px; }
}

/* ============ ORDINAZIONI · IMAGE MOSAIC ============ */
.img-mosaic {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-bottom: 32px;
}
.img-mosaic .photo {
  aspect-ratio: 4/3;
  overflow: hidden;
  border-radius: 6px;
  background: var(--green-mist);
  position: relative;
}
.img-mosaic .photo img { width: 100%; height: 100%; object-fit: cover; }
.img-mosaic .photo .ph-caption {
  position: absolute;
  bottom: 12px;
  left: 12px;
  background: var(--paper);
  padding: 6px 12px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 500;
  color: var(--green-dark);
}
.img-mosaic .photo.placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: 2px dashed var(--green);
  background: var(--green-mist);
  color: var(--green-dark);
  text-align: center;
  padding: 24px;
}
.img-mosaic .photo.placeholder .ph-icon {
  width: 48px; height: 48px;
  stroke: var(--green-dark); fill: none; stroke-width: 1.5;
  margin-bottom: 12px;
  opacity: 0.6;
}
.img-mosaic .photo.placeholder .ph-text {
  font-size: 13px;
  font-weight: 500;
  line-height: 1.4;
  font-style: italic;
}

/* ============ ORDINAZIONI · BUILDER (panino configuratore) ============ */
.builder {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 36px 40px;
}
.builder h3 {
  font-family: var(--font-serif);
  font-size: 28px;
  font-weight: 500;
  margin-bottom: 8px;
}
.builder .builder-intro { color: var(--ink-soft); margin-bottom: 28px; font-size: 15px; }

.builder-step {
  border-top: 1px solid var(--line);
  padding: 24px 0;
}
.builder-step:first-of-type { border-top: none; padding-top: 0; }
.builder-step:last-of-type { padding-bottom: 0; }
.builder-step-header {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 14px;
}
.builder-step-num {
  font-family: var(--font-serif);
  font-size: 24px;
  font-weight: 500;
  color: var(--green);
  width: 32px;
  line-height: 1;
}
.builder-step-title {
  font-family: var(--font-serif);
  font-size: 20px;
  font-weight: 500;
  color: var(--ink);
}
.builder-step-sub {
  font-size: 13px;
  color: var(--ink-soft);
  margin-left: 12px;
  font-style: italic;
}

.options-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 10px;
  margin-left: 44px;
}
.opt-pill {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  background: var(--ivory);
  border: 1px solid var(--line-strong);
  border-radius: 6px;
  font-size: 14px;
  cursor: pointer;
  transition: all 0.2s;
  user-select: none;
}
.opt-pill:hover {
  border-color: var(--green);
  background: var(--green-mist);
}
.opt-pill input { margin: 0; cursor: pointer; accent-color: var(--green-dark); }
.opt-pill .opt-label { flex: 1; }
.opt-pill .opt-extra { font-size: 12px; color: var(--ink-soft); font-style: italic; }
.opt-pill.featured { border-color: var(--terracotta); background: rgba(201, 123, 91, 0.06); }
.opt-pill.featured:hover { background: rgba(201, 123, 91, 0.12); }

.builder-cta {
  margin-top: 32px;
  padding-top: 28px;
  border-top: 1px solid var(--line);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.builder-cta .note {
  font-size: 13px;
  color: var(--ink-soft);
  font-style: italic;
  flex: 1;
  min-width: 240px;
}

/* ============ ORDINAZIONI · GIFT BASKETS (Piccolo / Medio / Grande) ============ */
.baskets-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-top: 48px;
}
.basket-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform 0.3s, border-color 0.3s;
  position: relative;
}
.basket-card:hover { transform: translateY(-3px); border-color: var(--green); }
.basket-card.featured { border: 2px solid var(--green); }
.basket-badge {
  position: absolute;
  top: 12px;
  right: 12px;
  background: var(--green-dark);
  color: white;
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 4px 12px;
  border-radius: 999px;
  font-weight: 500;
  z-index: 2;
}
.basket-img {
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--green-mist);
}
.basket-img img { width: 100%; height: 100%; object-fit: cover; }
.basket-img.placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  border-bottom: 2px dashed var(--green);
}
.basket-img.placeholder svg {
  width: 56px; height: 56px;
  stroke: var(--green-dark); fill: none; stroke-width: 1.3;
  opacity: 0.5;
}
.basket-body { padding: 24px 28px 28px; flex: 1; display: flex; flex-direction: column; }
.basket-name {
  font-family: var(--font-serif);
  font-size: 28px;
  font-weight: 500;
  line-height: 1.1;
  margin-bottom: 4px;
}
.basket-price {
  font-family: var(--font-serif);
  font-size: 32px;
  font-weight: 500;
  color: var(--green-dark);
  margin-bottom: 16px;
  line-height: 1;
}
.basket-price sup { font-size: 16px; color: var(--ink-soft); font-weight: 400; }
.basket-desc { font-size: 14px; color: var(--ink-soft); line-height: 1.55; flex: 1; }

/* ============ ORDINAZIONI · TRAYS (Vassoi 2 modi) ============ */
.trays-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-top: 32px;
}
.tray-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 36px 36px;
  display: flex;
  flex-direction: column;
  position: relative;
}
.tray-step-num {
  font-family: var(--font-serif);
  font-size: 56px;
  font-weight: 500;
  color: var(--green);
  line-height: 1;
  opacity: 0.5;
  margin-bottom: 16px;
}
.tray-card h4 {
  font-family: var(--font-serif);
  font-size: 24px;
  font-weight: 500;
  line-height: 1.2;
  margin-bottom: 12px;
}
.tray-card p { font-size: 15px; color: var(--ink-soft); line-height: 1.6; }

/* ============ ORDINAZIONI · STORY CARDS (Pausa Pranzo + Gita) ============ */
.story-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 6px;
  overflow: hidden;
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: 0;
  margin-bottom: 24px;
}
.story-card.reverse { grid-template-columns: 1.2fr 1fr; }
.story-card.reverse .story-img { order: 2; }
.story-card.reverse .story-body { order: 1; }
.story-img {
  background: var(--green-mist);
  min-height: 320px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
.story-img img { width: 100%; height: 100%; object-fit: cover; }
.story-img.placeholder {
  border: 2px dashed var(--green);
}
.story-img.placeholder svg {
  width: 64px; height: 64px;
  stroke: var(--green-dark); fill: none; stroke-width: 1.3;
  opacity: 0.5;
}
.story-body { padding: 40px 44px; display: flex; flex-direction: column; justify-content: center; }
.story-body .tag {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--terracotta-dark);
  margin-bottom: 12px;
  font-weight: 500;
}
.story-body h3 {
  font-family: var(--font-serif);
  font-size: 28px;
  font-weight: 500;
  line-height: 1.15;
  margin-bottom: 16px;
}
.story-body h3 em { font-style: italic; }
.story-body p {
  font-size: 15px;
  color: var(--ink-soft);
  line-height: 1.65;
  margin-bottom: 14px;
}
.story-body p:last-of-type { margin-bottom: 0; }
.story-body p strong { color: var(--ink); font-weight: 500; }

/* Sub-blocks index (chips a inizio pagina che linkano alle 3 sezioni) */
.sub-nav {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 28px;
}
.sub-nav a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.55);
  color: white;
  padding: 14px 28px;
  border-radius: 999px;
  font-size: 15px;
  font-weight: 500;
  font-family: var(--font-sans);
  transition: all 0.2s;
}
.sub-nav a:hover { border-color: white; background: rgba(255,255,255,0.12); transform: translateY(-1px); }

/* Section anchor offset for sticky header */
section[id] { scroll-margin-top: 100px; }

@media (max-width: 960px) {
  .baskets-grid { grid-template-columns: 1fr 1fr; }
  .trays-grid { grid-template-columns: 1fr; }
  .story-card, .story-card.reverse {
    grid-template-columns: 1fr;
  }
  .story-card.reverse .story-img { order: 0; }
  .story-card.reverse .story-body { order: 1; }
  .story-img { min-height: 240px; }
  .story-body { padding: 28px 28px; }
  .options-grid { margin-left: 0; }
  .builder { padding: 28px 24px; }
}
@media (max-width: 560px) {
  .img-mosaic { grid-template-columns: 1fr; }
  .baskets-grid { grid-template-columns: 1fr; }
  .builder-step-sub { display: block; margin-left: 44px; margin-top: 4px; }
}

/* =============================================================
   HOMEPAGE V2 - HERO STORY + CHI SIAMO + GALLERIA
   ============================================================= */

/* --- Hero story --- */
.hero-story {
  position: relative;
  background: linear-gradient(135deg, var(--green) 0%, var(--green-dark) 100%);
  color: white;
  padding: 80px 0 100px;
  overflow: hidden;
}
.hero-story::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 20% 30%, rgba(255,255,255,0.05), transparent 40%),
    radial-gradient(circle at 80% 70%, rgba(0,0,0,0.08), transparent 50%);
  pointer-events: none;
}
.hero-story .hero-deco {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 1;
}
.hero-story .deco-shape {
  position: absolute;
  fill: none;
  stroke: rgba(255,255,255,0.12);
  stroke-width: 1.5;
}
.hero-story .deco-zucca { top: 12%; left: 4%; width: 90px; height: 90px; }
.hero-story .deco-panino { bottom: 18%; left: 38%; width: 110px; height: 110px; transform: rotate(-15deg); }
.hero-story .deco-formaggio { top: 30%; right: 4%; width: 100px; height: 100px; transform: rotate(8deg); }

.hero-story-inner {
  position: relative;
  z-index: 2;
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 24px;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 60px;
  align-items: center;
}
.hero-story-left .hero-eyebrow {
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 2px;
  opacity: 0.85;
  margin-bottom: 24px;
  font-weight: 500;
}
.hero-story-left h1 {
  font-family: 'Fraunces', serif;
  font-size: clamp(38px, 4.5vw, 60px);
  line-height: 1.06;
  font-weight: 500;
  margin: 0 0 24px;
  letter-spacing: -0.01em;
}
.hero-story-left h1 em {
  font-style: italic;
  font-weight: 400;
  color: var(--ivory);
}
.hero-story-left .lead {
  font-size: 17px;
  line-height: 1.65;
  opacity: 0.92;
  margin: 0 0 32px;
  max-width: 580px;
}

.hero-values {
  display: flex;
  flex-direction: column;
  gap: 18px;
  margin: 0 0 36px;
  padding: 28px 28px 24px;
  background: rgba(255,255,255,0.06);
  border-left: 3px solid var(--ivory);
  border-radius: 4px;
  backdrop-filter: blur(6px);
}
.hero-value {
  display: flex;
  gap: 16px;
  align-items: flex-start;
}
.hero-value svg {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  fill: none;
  stroke: var(--ivory);
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  margin-top: 2px;
}
.hero-value strong {
  display: block;
  font-family: 'Fraunces', serif;
  font-size: 17px;
  font-weight: 500;
  margin-bottom: 3px;
  color: white;
}
.hero-value span {
  font-size: 14.5px;
  line-height: 1.5;
  opacity: 0.82;
}

.hero-buttons {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
}

.hero-story-right {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
}
.hero-photo-main {
  position: relative;
  border-radius: 6px;
  overflow: hidden;
  box-shadow: 0 30px 60px -20px rgba(0,0,0,0.4);
  transform: translateY(0);
}
.hero-photo-main img {
  width: 100%;
  height: 380px;
  object-fit: cover;
  display: block;
}
.hero-photo-caption {
  position: absolute;
  bottom: 14px;
  left: 14px;
  right: 14px;
  background: rgba(255,255,255,0.95);
  padding: 12px 16px;
  border-radius: 4px;
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: 13px;
  color: var(--green-darker);
  backdrop-filter: blur(8px);
}
.hero-photo-caption .cap-loc { font-weight: 500; }
.hero-photo-caption .cap-line {
  flex: 1;
  height: 1px;
  background: var(--green-dark);
  opacity: 0.3;
}
.hero-photo-caption .cap-name {
  font-family: 'Fraunces', serif;
  font-style: italic;
  opacity: 0.8;
}

.hero-photo-side {
  border-radius: 6px;
  overflow: hidden;
  box-shadow: 0 20px 40px -15px rgba(0,0,0,0.35);
  max-width: 60%;
  margin-left: auto;
  margin-top: -40px;
  position: relative;
  z-index: 2;
  border: 4px solid var(--ivory);
}
.hero-photo-side img {
  width: 100%;
  height: 200px;
  object-fit: cover;
  display: block;
}

@media (max-width: 900px) {
  .hero-story { padding: 60px 0 70px; }
  .hero-story-inner { grid-template-columns: 1fr; gap: 40px; }
  .hero-photo-main img { height: 280px; }
  .hero-photo-side { max-width: 70%; margin-top: -30px; }
  .hero-photo-side img { height: 150px; }
}

/* --- Chi siamo --- */
.chi-siamo {
  background: var(--ivory);
  padding: 90px 0;
}
.chi-siamo-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 24px;
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 80px;
  align-items: center;
}
.chi-siamo-text .section-title {
  font-size: clamp(32px, 3.5vw, 44px);
  margin-bottom: 24px;
}
.chi-siamo-text p {
  font-size: 16.5px;
  line-height: 1.75;
  color: var(--ink);
  margin: 0 0 16px;
}
.chi-siamo-text p:last-child {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-size: 18px;
  color: var(--green-dark);
  margin-top: 20px;
}

.chi-siamo-stats {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.stat {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 20px 24px;
  background: white;
  border-radius: 6px;
  border-left: 4px solid var(--green);
  box-shadow: 0 4px 16px rgba(0,0,0,0.04);
}
.stat-num {
  font-family: 'Fraunces', serif;
  font-size: 56px;
  font-weight: 500;
  color: var(--green-dark);
  line-height: 1;
  min-width: 70px;
}
.stat-label {
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--ink);
}

@media (max-width: 900px) {
  .chi-siamo { padding: 60px 0; }
  .chi-siamo-inner { grid-template-columns: 1fr; gap: 40px; }
}

/* --- Galleria --- */
.galleria {
  background: white;
  padding: 90px 0;
}
.galleria .section-eyebrow,
.galleria .section-title { text-align: center; }
.galleria .section-title { margin-bottom: 50px; }

.galleria-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(2, 280px);
  gap: 14px;
  max-width: 1280px;
  margin: 0 auto;
}
.galleria-grid figure {
  margin: 0;
  position: relative;
  border-radius: 6px;
  overflow: hidden;
  cursor: pointer;
}
.galleria-grid figure img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.6s ease;
}
.galleria-grid figure:hover img { transform: scale(1.05); }
.galleria-grid figure figcaption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 32px 18px 16px;
  background: linear-gradient(to top, rgba(31,42,35,0.85), transparent);
  color: white;
  font-family: 'Fraunces', serif;
  font-size: 16px;
  font-weight: 500;
}
.galleria-grid figure figcaption span {
  display: block;
  font-family: 'DM Sans', sans-serif;
  font-weight: 400;
  font-size: 13px;
  opacity: 0.85;
  margin-top: 3px;
}
.galleria-grid .g-tall { grid-row: span 2; }

@media (max-width: 900px) {
  .galleria { padding: 60px 0; }
  .galleria-grid {
    grid-template-columns: repeat(2, 1fr);
    grid-template-rows: repeat(3, 220px);
  }
  .galleria-grid .g-tall { grid-row: span 1; }
  .galleria-grid figure:nth-child(5) { grid-column: span 2; }
}
@media (max-width: 500px) {
  .galleria-grid {
    grid-template-columns: 1fr;
    grid-template-rows: repeat(5, 220px);
  }
  .galleria-grid figure:nth-child(5) { grid-column: span 1; }
}

/* =============================================================
   STATO APERTURA - pillola dinamica nella topbar
   ============================================================= */
.topbar-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.topbar-pill .pill-dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: rgba(255,255,255,0.7);
  flex-shrink: 0;
}
.topbar-pill.pill-aperto .pill-dot {
  background: #6FCB80;
  box-shadow: 0 0 0 2px rgba(111, 203, 128, 0.25);
  animation: pillPulse 2.5s ease-in-out infinite;
}
.topbar-pill.pill-chiuso .pill-dot {
  background: #C97B5B;
}
.topbar-pill.pill-attenzione .pill-dot {
  background: #E8B547;
  animation: pillPulse 1.5s ease-in-out infinite;
}
@keyframes pillPulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.55; }
}

/* Banner festivo imminente */
.banner-festivo {
  background: #FFF7E6;
  color: #6B4F1D;
  border-bottom: 1px solid #F0D49A;
  text-align: center;
  padding: 9px 24px;
  font-size: 14px;
  font-weight: 500;
}
.banner-festivo strong {
  color: #4A3713;
}

/* =============================================================
   CONFIGURATORE PANINI v2 - con slot di ritiro + riepilogo
   ============================================================= */
.builder-header {
  margin-bottom: 28px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--green-mist);
}
.builder-header h3 {
  font-family: 'Fraunces', serif;
  font-size: 28px;
  margin: 0 0 6px;
  font-weight: 500;
  color: var(--green-darker);
}
.builder-base {
  font-size: 14px;
  color: var(--ink);
  opacity: 0.75;
}

/* Quantità */
.quantita-row {
  margin-top: 16px;
  margin-bottom: 24px;
}
.qty-input {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: white;
  padding: 14px 18px;
  border-radius: 6px;
  border: 1px solid var(--green-mist);
  max-width: 400px;
}
.qty-input > span {
  font-weight: 500;
  font-size: 15px;
}
.qty-controls {
  display: flex;
  align-items: center;
  gap: 0;
  border: 1px solid var(--green-mist);
  border-radius: 4px;
  overflow: hidden;
}
.qty-controls button {
  width: 36px;
  height: 36px;
  background: var(--ivory);
  border: none;
  font-size: 18px;
  font-weight: 500;
  color: var(--green-dark);
  cursor: pointer;
  transition: background 0.15s;
}
.qty-controls button:hover { background: var(--green-mist); }
.qty-controls input {
  width: 48px;
  height: 36px;
  border: none;
  border-left: 1px solid var(--green-mist);
  border-right: 1px solid var(--green-mist);
  text-align: center;
  font-size: 16px;
  font-weight: 500;
  color: var(--green-darker);
  background: white;
  -moz-appearance: textfield;
}
.qty-controls input::-webkit-outer-spin-button,
.qty-controls input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* Slot grid */
.slot-section { margin-top: 12px; }
.slot-label {
  display: block;
  font-weight: 500;
  font-size: 15px;
  margin-bottom: 12px;
  color: var(--green-darker);
}
.slot-data-header {
  font-family: 'Fraunces', serif;
  font-size: 18px;
  color: var(--green-dark);
  margin-bottom: 10px;
  text-transform: capitalize;
}
.slot-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.slot-pill {
  position: relative;
  cursor: pointer;
}
.slot-pill input { position: absolute; opacity: 0; pointer-events: none; }
.slot-pill span {
  display: inline-block;
  padding: 10px 16px;
  background: white;
  border: 1.5px solid var(--green-mist);
  border-radius: 24px;
  font-size: 14.5px;
  font-weight: 500;
  color: var(--green-darker);
  transition: all 0.15s;
  font-variant-numeric: tabular-nums;
}
.slot-pill:hover span { border-color: var(--green); background: var(--green-mist); }
.slot-pill input:checked + span {
  background: var(--green-dark);
  border-color: var(--green-dark);
  color: white;
  box-shadow: 0 4px 12px -2px rgba(61, 90, 69, 0.35);
}
.slot-help {
  margin-top: 14px;
  font-size: 13.5px;
  color: var(--ink);
  opacity: 0.78;
  line-height: 1.5;
}
.slot-empty {
  padding: 20px;
  background: #FBF4E8;
  border: 1px solid #E8C68A;
  border-radius: 4px;
  color: #6B4F1D;
  text-align: center;
}

/* Contatto */
.contatto-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-top: 12px;
}
.contatto-row label {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.contatto-row label > span {
  font-size: 13px;
  font-weight: 500;
  color: var(--green-darker);
}
.contatto-row input {
  padding: 12px 14px;
  border: 1.5px solid var(--green-mist);
  border-radius: 4px;
  font-size: 15px;
  font-family: 'DM Sans', sans-serif;
  background: white;
  transition: border 0.15s;
}
.contatto-row input:focus {
  outline: none;
  border-color: var(--green-dark);
}
@media (max-width: 600px) {
  .contatto-row { grid-template-columns: 1fr; }
}

/* RIEPILOGO */
.builder-summary {
  margin-top: 36px;
  padding: 28px;
  background: white;
  border: 2px solid var(--green-dark);
  border-radius: 8px;
  box-shadow: 0 10px 30px -10px rgba(61, 90, 69, 0.15);
}
.summary-header {
  font-family: 'Fraunces', serif;
  font-size: 22px;
  font-weight: 500;
  color: var(--green-darker);
  margin-bottom: 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--green-mist);
}
.summary-content {
  font-size: 15px;
  color: var(--ink);
}
.summary-content em {
  font-style: italic;
  opacity: 0.6;
  font-family: 'Fraunces', serif;
}
.sum-row {
  display: flex;
  justify-content: space-between;
  padding: 9px 0;
  border-bottom: 1px dashed var(--green-mist);
  gap: 16px;
}
.sum-row.sub {
  padding-top: 3px;
  padding-bottom: 9px;
  margin-top: -8px;
  border-bottom: 1px dashed var(--green-mist);
  font-size: 13.5px;
  opacity: 0.75;
  font-style: italic;
}
.sum-row.qty {
  font-weight: 500;
  color: var(--green-darker);
}
.sum-row.slot-row {
  background: var(--green-mist);
  margin: 8px -28px;
  padding: 12px 28px;
  border-radius: 0;
  border-bottom: none;
}
.sum-row.slot-row.missing {
  background: #FBF4E8;
  color: #6B4F1D;
}
.sum-row.slot-row strong {
  font-family: 'Fraunces', serif;
  font-size: 16px;
}
.summary-total {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding-top: 18px;
  margin-top: 8px;
  border-top: 2px solid var(--green-dark);
  font-size: 15px;
  font-weight: 500;
  color: var(--green-darker);
}
.summary-total strong {
  font-family: 'Fraunces', serif;
  font-size: 26px;
  font-weight: 500;
}
.summary-total:empty { display: none; }

.summary-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 22px;
}
.summary-actions .btn { flex: 1; min-width: 180px; text-align: center; }
.btn-whatsapp {
  background: #25D366;
  color: white !important;
  border: 1.5px solid #25D366;
  padding: 12px 22px;
  border-radius: 4px;
  font-weight: 500;
  text-decoration: none;
  font-size: 15px;
  transition: all 0.15s;
  display: inline-block;
}
.btn-whatsapp:hover {
  background: #1FA855;
  border-color: #1FA855;
}
#btn-invia-ordine:disabled {
  opacity: 0.4;
  cursor: not-allowed;
  background: var(--green-mist);
  color: var(--ink);
  border-color: var(--green-mist);
}
.summary-note {
  margin-top: 16px;
  font-size: 13px;
  line-height: 1.55;
  color: var(--ink);
  opacity: 0.75;
  text-align: center;
}

/* =============================================================
   CONFIGURATORE PANINI - stato disabilitato
   ============================================================= */
.builder-disabilitato {
  text-align: center;
  padding: 60px 32px;
  background: var(--ivory);
  border: 1.5px dashed var(--green);
  border-radius: 8px;
}
.builder-disabilitato svg {
  width: 56px;
  height: 56px;
  color: var(--green-dark);
  opacity: 0.55;
  margin-bottom: 18px;
}
.builder-disabilitato h3 {
  font-family: 'Fraunces', serif;
  font-size: 24px;
  font-weight: 500;
  color: var(--green-darker);
  margin: 0 0 12px;
}
.builder-disabilitato p {
  font-size: 16px;
  line-height: 1.6;
  color: var(--ink);
  max-width: 480px;
  margin: 0 auto 24px;
}

/* ============================================================
   HOMEPAGE v2 — stile Shopio-TREVANI
   ============================================================ */

/* --- HERO foto + slogan --- */
.hero-shop {
  position: relative;
  min-height: 600px;
  display: flex;
  align-items: center;
  overflow: hidden;
}
.hero-shop-media { position: absolute; inset: 0; z-index: 0; }
.hero-shop-media img { width: 100%; height: 100%; object-fit: cover; }
.hero-shop-overlay {
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(100deg, rgba(42,63,49,0.82) 0%, rgba(42,63,49,0.55) 45%, rgba(42,63,49,0.15) 100%);
}
.hero-shop-content {
  position: relative; z-index: 2;
  max-width: 1280px; width: 100%;
  margin: 0 auto; padding: 80px 24px;
}
.hero-shop-eyebrow {
  font-size: 13px; font-weight: 700; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--green-mist);
  margin-bottom: 20px;
}
.hero-shop-title {
  font-family: var(--font-serif);
  font-size: 60px; font-weight: 500; line-height: 1.05;
  color: white; max-width: 720px; margin-bottom: 24px;
}
.hero-shop-title em { font-style: italic; color: #F3D9A8; }
.hero-shop-sub {
  font-size: 19px; line-height: 1.6; color: rgba(255,255,255,0.92);
  max-width: 560px; margin-bottom: 36px;
}
.hero-shop-buttons { display: flex; gap: 14px; flex-wrap: wrap; }
.btn-outline-light {
  background: transparent; color: white; border-color: rgba(255,255,255,0.55);
}
.btn-outline-light:hover { border-color: white; background: rgba(255,255,255,0.12); transform: translateY(-1px); }

/* --- TRUST BAR --- */
.trustbar {
  background: var(--green-darker);
  padding: 0;
}
.trustbar-inner {
  max-width: 1280px; margin: 0 auto; padding: 0 24px;
  display: grid; grid-template-columns: repeat(4, 1fr);
}
.trust-item {
  display: flex; align-items: center; gap: 14px;
  padding: 28px 24px;
  border-right: 1px solid rgba(255,255,255,0.1);
}
.trust-item:last-child { border-right: none; }
.trust-item svg {
  width: 34px; height: 34px; flex-shrink: 0;
  fill: none; stroke: #F3D9A8; stroke-width: 2;
  stroke-linecap: round; stroke-linejoin: round;
}
.trust-item strong {
  display: block; font-size: 15px; font-weight: 700;
  color: white; margin-bottom: 3px;
}
.trust-item span { display: block; font-size: 13px; line-height: 1.4; color: rgba(255,255,255,0.7); }

/* --- REPARTI (card foto rettangolari) --- */
.reparti { padding: 88px 0; background: var(--ivory); }
.reparti-grid {
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: 28px; margin-top: 48px;
}
.reparto-card {
  display: flex; flex-direction: column;
  background: var(--paper); border-radius: 16px; overflow: hidden;
  text-decoration: none; color: inherit;
  border: 1px solid var(--line);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.reparto-card:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgba(42,63,49,0.13); }
.reparto-img { aspect-ratio: 16/10; overflow: hidden; }
.reparto-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }
.reparto-card:hover .reparto-img img { transform: scale(1.05); }
.reparto-body { padding: 28px 30px 30px; }
.reparto-body h3 {
  font-family: var(--font-serif); font-size: 26px; font-weight: 500;
  color: var(--green-darker); margin-bottom: 12px;
}
.reparto-body p { font-size: 15px; line-height: 1.6; color: var(--ink-soft); margin-bottom: 18px; }
.reparto-link {
  font-size: 14px; font-weight: 700; color: var(--green-dark);
  letter-spacing: 0.02em;
}

/* --- BANNER PAUSA PRANZO --- */
.banner-pausa { padding: 0; background: var(--green-mist); }
.banner-pausa-inner {
  max-width: 1280px; margin: 0 auto;
  display: grid; grid-template-columns: 1fr 1fr; align-items: stretch;
}
.banner-pausa-media { min-height: 460px; }
.banner-pausa-media img { width: 100%; height: 100%; object-fit: cover; }
.banner-pausa-text { padding: 72px 64px; align-self: center; }
.banner-pausa-text .section-eyebrow,
.banner-pausa-text .section-title { text-align: left; }
.banner-pausa-text .section-title { margin-bottom: 18px; }
.banner-pausa-text > p { font-size: 16px; line-height: 1.65; color: var(--ink); margin-bottom: 22px; }
.banner-pausa-list { list-style: none; margin: 0 0 30px; padding: 0; }
.banner-pausa-list li {
  position: relative; padding-left: 26px; margin-bottom: 11px;
  font-size: 15px; color: var(--ink);
}
.banner-pausa-list li::before {
  content: ""; position: absolute; left: 0; top: 7px;
  width: 8px; height: 8px; border-radius: 50%; background: var(--green-dark);
}
.btn-dark { background: var(--green-dark); color: white; }
.btn-dark:hover { background: var(--green-darker); transform: translateY(-1px); }

/* --- SERVIZI BANNER (cestini · vassoi · cena pronta) --- */
.servizi-banner { padding: 88px 0; background: var(--paper); }
.servizi-banner-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 28px; margin-top: 48px;
}
.sb-card {
  display: flex; flex-direction: column;
  background: var(--ivory); border-radius: 16px; overflow: hidden;
  text-decoration: none; color: inherit; border: 1px solid var(--line);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.sb-card:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgba(42,63,49,0.13); }
.sb-img { aspect-ratio: 4/3; overflow: hidden; }
.sb-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }
.sb-card:hover .sb-img img { transform: scale(1.05); }
.sb-body { padding: 26px 28px 28px; flex: 1; display: flex; flex-direction: column; }
.sb-body h3 {
  font-family: var(--font-serif); font-size: 24px; font-weight: 500;
  color: var(--green-darker); margin-bottom: 10px;
}
.sb-body p { font-size: 14px; line-height: 1.6; color: var(--ink-soft); margin-bottom: 16px; flex: 1; }
.sb-tag {
  display: inline-block; align-self: flex-start;
  background: var(--terracotta); color: white;
  font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
  padding: 5px 12px; border-radius: 100px; margin-bottom: 12px;
}
/* card cena pronta in evidenza */
.sb-card-feature {
  border: 2px solid var(--terracotta);
  box-shadow: 0 10px 30px rgba(201,123,91,0.12);
}
.sb-img-placeholder {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 14px; background: linear-gradient(135deg, var(--green-mist), var(--green-bg));
  color: var(--green-dark);
}
.sb-img-placeholder svg {
  width: 64px; height: 64px; fill: none; stroke: var(--green-dark);
  stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; opacity: 0.6;
}
.sb-img-placeholder span {
  font-size: 13px; font-weight: 600; color: var(--green-dark);
  letter-spacing: 0.02em; opacity: 0.8;
}

/* --- B2B --- */
.b2b { padding: 88px 0; background: var(--green-bg); }
.b2b-grid {
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: 28px; margin-top: 48px;
}
.b2b-card {
  display: flex; flex-direction: column;
  background: var(--paper); border-radius: 16px; overflow: hidden;
  text-decoration: none; color: inherit; border: 1px solid var(--line);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.b2b-card:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgba(42,63,49,0.13); }
.b2b-img { aspect-ratio: 16/10; overflow: hidden; }
.b2b-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }
.b2b-card:hover .b2b-img img { transform: scale(1.05); }
.b2b-body { padding: 28px 30px 30px; }
.b2b-body h3 {
  font-family: var(--font-serif); font-size: 26px; font-weight: 500;
  color: var(--green-darker); margin-bottom: 12px;
}
.b2b-body p { font-size: 15px; line-height: 1.6; color: var(--ink-soft); margin-bottom: 18px; }

/* --- VISITA (chiusura) --- */
.visita { padding: 0; background: var(--green-darker); }
.visita-inner {
  max-width: 1280px; margin: 0 auto;
  display: grid; grid-template-columns: 1fr 1fr; align-items: stretch;
}
.visita-text { padding: 80px 64px; align-self: center; }
.visita-text .section-eyebrow { text-align: left; color: #F3D9A8; }
.visita-text .section-title { text-align: left; color: white; margin-bottom: 18px; }
.visita-text .section-title em { color: #F3D9A8; }
.visita-text > p { font-size: 16px; line-height: 1.65; color: rgba(255,255,255,0.85); margin-bottom: 30px; }
.visita-info { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; margin-bottom: 32px; }
.visita-block strong {
  display: block; font-size: 13px; font-weight: 700; letter-spacing: 0.08em;
  text-transform: uppercase; color: #F3D9A8; margin-bottom: 10px;
}
.visita-block span, .visita-block a {
  display: block; font-size: 15px; line-height: 1.7;
  color: rgba(255,255,255,0.9); text-decoration: none;
}
.visita-block a:hover { color: white; text-decoration: underline; }
.visita-buttons { display: flex; gap: 14px; flex-wrap: wrap; }
.visita-media { min-height: 480px; }
.visita-media img { width: 100%; height: 100%; object-fit: cover; }

/* --- RESPONSIVE homepage v2 --- */
@media (max-width: 900px) {
  .hero-shop { min-height: 520px; }
  .hero-shop-title { font-size: 42px; }
  .hero-shop-sub { font-size: 17px; }
  .trustbar-inner { grid-template-columns: repeat(2, 1fr); }
  .trust-item:nth-child(2) { border-right: none; }
  .trust-item:nth-child(1), .trust-item:nth-child(2) { border-bottom: 1px solid rgba(255,255,255,0.1); }
  .reparti-grid { grid-template-columns: 1fr; }
  .banner-pausa-inner { grid-template-columns: 1fr; }
  .banner-pausa-media { min-height: 300px; }
  .banner-pausa-text { padding: 48px 32px; }
  .servizi-banner-grid { grid-template-columns: 1fr; }
  .b2b-grid { grid-template-columns: 1fr; }
  .visita-inner { grid-template-columns: 1fr; }
  .visita-media { min-height: 280px; order: -1; }
  .visita-text { padding: 48px 32px; }
  .visita-info { grid-template-columns: 1fr; gap: 22px; }
}
@media (max-width: 560px) {
  .hero-shop-title { font-size: 34px; }
  .hero-shop-content { padding: 56px 20px; }
  .trustbar-inner { grid-template-columns: 1fr; }
  .trust-item { border-right: none; border-bottom: 1px solid rgba(255,255,255,0.1); }
  .trust-item:last-child { border-bottom: none; }
  .reparti, .servizi-banner, .b2b { padding: 56px 0; }
}

/* ============================================================
   CORPORATE IDENTITY — logo, icone line-art, bande CTA
   Aggiornamento maggio 2026: integrazione insegna vettoriale
   ============================================================ */

/* --- Logo wordmark nell'header (sostituisce il testo) --- */
.logo-img {
  height: 42px;
  width: auto;
  display: block;
}
@media (max-width: 768px) { .logo-img { height: 36px; } }
@media (max-width: 560px) { .logo-img { height: 30px; } }

/* --- Wordmark nel footer --- */
.footer-wordmark {
  height: 40px;
  width: auto;
  display: block;
  margin-bottom: 18px;
}

/* --- Sistema icone brand line-art --- */
.brand-ico {
  display: inline-block;
  vertical-align: middle;
  width: auto;
}
.brand-ico-xs { height: 24px; }
.brand-ico-sm { height: 34px; }
.brand-ico-md { height: 50px; }
.brand-ico-lg { height: 76px; }
.brand-ico-xl { height: 110px; }

/* Eyebrow di sezione con icona a fianco */
.eyebrow-iconed {
  display: inline-flex;
  align-items: center;
  gap: 12px;
}
.eyebrow-iconed img { height: 30px; width: auto; }

/* --- STRISCIA DECORATIVA DI ICONE (richiama l'insegna) --- */
.icon-strip {
  background: var(--green);
  padding: 22px 0;
  overflow: hidden;
}
.icon-strip-inner {
  max-width: 1040px;
  margin: 0 auto;
  padding: 0 40px;
}
.icon-strip-svg {
  display: block;
  width: 100%;
  height: auto;
}
@media (max-width: 768px) {
  .icon-strip { padding: 16px 0; }
  .icon-strip-inner { padding: 0 20px; }
}

/* --- BANDA CTA "CHIAMACI" (riutilizzabile a fine sezione) --- */
.cta-band {
  background: var(--green-darker);
  color: white;
  padding: 60px 24px;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.cta-band::before,
.cta-band::after {
  content: "";
  position: absolute;
  width: 280px; height: 280px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(136,167,143,0.22) 0%, transparent 70%);
  pointer-events: none;
}
.cta-band::before { left: -120px; top: -120px; }
.cta-band::after { right: -120px; bottom: -120px; }
.cta-band-inner {
  position: relative;
  z-index: 1;
  max-width: 640px;
  margin: 0 auto;
}
.cta-band-ico {
  height: 58px;
  width: auto;
  margin-bottom: 18px;
  opacity: 0.95;
}
.cta-band h3 {
  font-family: var(--font-serif);
  font-size: 34px;
  font-weight: 500;
  line-height: 1.12;
  color: white;
  margin-bottom: 12px;
}
.cta-band h3 em { font-style: italic; color: #F3D9A8; }
.cta-band p {
  font-size: 17px;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.88);
  margin-bottom: 28px;
}
.cta-band-buttons {
  display: flex;
  gap: 14px;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
}
.cta-band-phone {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-serif);
  font-size: 26px;
  font-weight: 500;
  color: #F3D9A8;
  text-decoration: none;
  transition: color 0.15s ease;
}
.cta-band-phone:hover { color: white; }
@media (max-width: 560px) {
  .cta-band { padding: 44px 20px; }
  .cta-band h3 { font-size: 26px; }
  .cta-band-phone { font-size: 22px; }
}

/* --- Watermark icona decorativa (angolo sezioni) --- */
.has-watermark { position: relative; overflow: hidden; }
.section-watermark {
  position: absolute;
  opacity: 0.05;
  pointer-events: none;
  z-index: 0;
}
.section-watermark img { width: 100%; height: auto; display: block; }
.section-inner, .cta-band-inner { position: relative; z-index: 1; }

/* --- Reparto card: piccola icona badge sull'immagine --- */
.reparto-ico {
  position: absolute;
  top: 14px; left: 14px;
  background: rgba(255, 255, 255, 0.92);
  border-radius: 50%;
  width: 52px; height: 52px;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 4px 12px rgba(42,63,49,0.18);
  z-index: 2;
}
.reparto-ico img { height: 30px; width: auto; }
.reparto-img { position: relative; }

/* ╔══════════════════════════════════════════════════════════╗
   ║  TREVANI · LAYER V3 — restyling moderno (giu 2026)        ║
   ║  Ticker promo · Hero card · Marquee insegna · Bolle        ║
   ║  Banco della settimana · Reveal on scroll                  ║
   ╚══════════════════════════════════════════════════════════╝ */

:root {
  --radius-lg: 26px;
  --radius-md: 18px;
  --shadow-soft: 0 18px 50px rgba(31, 42, 35, .10);
  --shadow-card: 0 10px 28px rgba(31, 42, 35, .08);
}

/* — Tipografia più generosa — */
.section-title { font-size: clamp(36px, 4.6vw, 56px); letter-spacing: -0.02em; }
.section-sub { font-size: 17px; }

/* — Bottoni: micro-interazione freccia — */
.btn { transition: transform .25s ease, box-shadow .25s ease, background .25s ease, border-color .25s ease; }
.btn:hover { transform: translateY(-2px); }
.btn .freccia { display: inline-block; transition: transform .25s ease; }
.btn:hover .freccia { transform: translateX(4px); }

/* — Ticker promo (sotto l'header, su tutte le pagine) — */
.promo-ticker {
  background: var(--green-darker);
  color: rgba(255, 255, 255, .92);
  overflow: hidden;
  font-size: 12.5px;
  letter-spacing: .14em;
  text-transform: uppercase;
  border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.promo-ticker-track {
  display: flex;
  width: max-content;
  animation: ticker-scroll 36s linear infinite;
}
.promo-ticker span {
  padding: 9px 0;
  white-space: nowrap;
}
.promo-ticker .dot { margin: 0 26px; opacity: .45; }
@keyframes ticker-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* — HERO V3: card fotografica arrotondata — */
.hero-v3 { padding: 16px clamp(12px, 2vw, 26px) 0; }
.hero-v3-card {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  min-height: clamp(480px, 66vh, 640px);
  display: flex;
  align-items: flex-end;
  isolation: isolate;
}
.hero-v3-card img.hero-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: -2;
  animation: hero-zoom 18s ease-out forwards;
}
@keyframes hero-zoom { from { transform: scale(1.08); } to { transform: scale(1); } }
.hero-v3-card::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(to top, rgba(23, 33, 26, .82) 0%, rgba(23, 33, 26, .32) 48%, rgba(23, 33, 26, .12) 100%);
}
.hero-v3-content {
  position: relative;
  color: #fff;
  padding: clamp(28px, 5vw, 64px);
  max-width: 760px;
}
.hero-v3-content .eyebrow {
  font-size: 12.5px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--amber, #F3D9A8);
  margin-bottom: 14px;
  display: block;
}
.hero-v3-content h1 {
  font-family: var(--font-serif);
  font-weight: 380;
  font-size: clamp(40px, 6vw, 76px);
  line-height: 1.04;
  letter-spacing: -0.02em;
  margin: 0 0 18px;
}
.hero-v3-content h1 em { font-style: italic; color: #DCE8DE; }
.hero-v3-content .lead {
  font-size: clamp(16px, 1.6vw, 19px);
  line-height: 1.6;
  color: rgba(255, 255, 255, .88);
  max-width: 560px;
  margin-bottom: 28px;
}
.hero-v3-azioni { display: flex; gap: 14px; flex-wrap: wrap; }
.hero-v3-chips {
  position: absolute;
  top: clamp(18px, 3vw, 30px);
  left: clamp(18px, 3vw, 30px);
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.chip {
  background: rgba(255, 255, 255, .14);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(255, 255, 255, .28);
  color: #fff;
  font-size: 12.5px;
  letter-spacing: .06em;
  padding: 8px 16px;
  border-radius: 999px;
}

/* — Hero v3 su mobile: evita la sovrapposizione chip <-> contenuto — */
@media (max-width: 600px) {
  .hero-v3-card {
    flex-direction: column;
    align-items: stretch;
    min-height: 0;
  }
  .hero-v3-chips {
    position: static;
    padding: 22px 22px 0;
  }
  .hero-v3-content {
    padding: 20px 22px 30px;
  }
  .hero-v3-azioni { width: 100%; }
  .hero-v3-azioni .btn { flex: 1 1 auto; justify-content: center; text-align: center; }
}

/* — Marquee insegna (linea continua chiocciola → carota) — */
.marquee-insegna {
  background: var(--green);
  padding: 20px 0;
  overflow: hidden;
  margin-top: 18px;
}
.marquee-track {
  display: flex;
  width: max-content;
  gap: 64px;
  animation: marquee-scroll 42s linear infinite;
}
.marquee-track img { height: 66px; display: block; flex-shrink: 0; }
@keyframes marquee-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* — USP pill-cards — */
.usp-v3 { padding: clamp(40px, 6vw, 64px) 0 8px; }
.usp-grid {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 40px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 16px;
}
.usp-card {
  background: var(--green-mist);
  border-radius: var(--radius-md);
  padding: 22px 24px;
  display: flex;
  gap: 16px;
  align-items: center;
  transition: transform .3s ease, box-shadow .3s ease;
}
.usp-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-card); }
.usp-card img { width: 44px; height: 44px; object-fit: contain; flex-shrink: 0; }
.usp-card strong { display: block; font-size: 15.5px; margin-bottom: 2px; color: var(--ink); }
.usp-card span { font-size: 13.5px; color: var(--ink-soft); line-height: 1.45; }

/* — Reparti: bolle circolari — */
.bolle { padding: clamp(48px, 7vw, 84px) 0 24px; }
.bolle-grid {
  max-width: 1280px;
  margin: 36px auto 0;
  padding: 0 40px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: clamp(16px, 2.4vw, 30px);
  justify-items: center;
}
.bolla {
  text-align: center;
  text-decoration: none;
  color: var(--ink);
  display: block;
}
.bolla .bolla-img {
  width: clamp(120px, 13vw, 170px);
  height: clamp(120px, 13vw, 170px);
  border-radius: 50%;
  overflow: hidden;
  margin: 0 auto 14px;
  border: 4px solid var(--paper);
  box-shadow: var(--shadow-card);
  transition: transform .35s ease, box-shadow .35s ease;
}
.bolla .bolla-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .5s ease;
}
.bolla:hover .bolla-img { transform: translateY(-5px); box-shadow: var(--shadow-soft); }
.bolla:hover .bolla-img img { transform: scale(1.08); }
.bolla strong { font-size: 15px; display: block; line-height: 1.35; }
.bolla span { font-size: 12.5px; color: var(--ink-soft); }

/* — Il banco della settimana (carosello prodotti) — */
.banco { padding: clamp(56px, 8vw, 96px) 0; background: var(--green-bg); }
.banco-head {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 40px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}
.banco-frecce { display: flex; gap: 10px; }
.banco-frecce button {
  width: 46px;
  height: 46px;
  border-radius: 50%;
  border: 1px solid var(--green-dark);
  background: transparent;
  color: var(--green-dark);
  font-size: 18px;
  cursor: pointer;
  transition: all .25s ease;
}
.banco-frecce button:hover:not(:disabled) { background: var(--green-dark); color: #fff; transform: translateY(-2px); }
.banco-frecce button:disabled { opacity: .3; cursor: default; }
.banco-track {
  display: flex;
  gap: 18px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding: 30px 40px 12px;
  max-width: 1280px;
  margin: 0 auto;
  scrollbar-width: none;
}
.banco-track::-webkit-scrollbar { display: none; }
.prod-card {
  flex: 0 0 232px;
  scroll-snap-align: start;
  background: var(--paper);
  border-radius: 20px;
  padding: 16px 16px 20px;
  box-shadow: 0 4px 16px rgba(31, 42, 35, .05);
  transition: transform .3s ease, box-shadow .3s ease;
  display: flex;
  flex-direction: column;
}
.prod-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-soft); }
.prod-card .prod-foto {
  border-radius: 14px;
  overflow: hidden;
  background: #fff;
  aspect-ratio: 1;
  margin-bottom: 14px;
}
.prod-card .prod-foto img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease; }
.prod-card:hover .prod-foto img { transform: scale(1.06); }
.prod-card h3 { font-family: var(--font-serif); font-size: 19px; font-weight: 500; margin: 0 0 6px; line-height: 1.25; }
.prod-card .prod-origine {
  display: inline-block;
  align-self: flex-start;
  background: var(--green-mist);
  color: var(--green-darker);
  font-size: 11.5px;
  letter-spacing: .08em;
  text-transform: uppercase;
  padding: 4px 12px;
  border-radius: 999px;
  margin-bottom: 8px;
}
.prod-card p { font-size: 13.5px; color: var(--ink-soft); line-height: 1.5; margin: 0; }
.prod-card.prod-tutto {
  background: var(--green-dark);
  color: #fff;
  align-items: flex-start;
  justify-content: center;
  text-decoration: none;
  gap: 12px;
}
.prod-card.prod-tutto h3 { color: #fff; font-size: 24px; }
.prod-card.prod-tutto span { color: rgba(255, 255, 255, .8); font-size: 14px; line-height: 1.5; }
.prod-card.prod-tutto .freccia-grande { font-size: 30px; margin-top: 8px; transition: transform .3s ease; }
.prod-card.prod-tutto:hover .freccia-grande { transform: translateX(6px); }
.banco-nota { max-width: 1280px; margin: 8px auto 0; padding: 0 40px; font-size: 13px; color: var(--ink-soft); }

/* — Split storytelling (pausa pranzo) — */
.split-v3 { padding: clamp(56px, 8vw, 96px) 0; }
.split-v3-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 40px;
  display: grid;
  grid-template-columns: 1.05fr 1fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: center;
}
.split-v3-foto { border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-soft); }
.split-v3-foto img { width: 100%; display: block; aspect-ratio: 4/3.4; object-fit: cover; }
.split-v3 ul.lista-punti { list-style: none; padding: 0; margin: 18px 0 26px; }
.split-v3 ul.lista-punti li {
  padding: 9px 0 9px 30px;
  position: relative;
  font-size: 15.5px;
  color: var(--ink-soft);
  border-bottom: 1px dashed var(--line);
}
.split-v3 ul.lista-punti li::before {
  content: "✓";
  position: absolute;
  left: 0;
  color: var(--green-dark);
  font-weight: 700;
}
@media (max-width: 900px) {
  .split-v3-inner { grid-template-columns: 1fr; }
}

/* — Tile promozionali colorate — */
.tiles { padding: 0 clamp(12px, 2vw, 26px) clamp(56px, 8vw, 96px); }
.tiles-grid {
  max-width: 1280px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
.tile {
  border-radius: var(--radius-lg);
  padding: clamp(28px, 4vw, 48px);
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 320px;
  position: relative;
  overflow: hidden;
  text-decoration: none;
  isolation: isolate;
  transition: transform .3s ease, box-shadow .3s ease;
}
.tile:hover { transform: translateY(-4px); box-shadow: var(--shadow-soft); }
.tile img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; transition: transform .5s ease; }
.tile:hover img { transform: scale(1.05); }
.tile::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to top, rgba(23, 33, 26, .78), rgba(23, 33, 26, .05) 60%); }
.tile .tile-eyebrow { color: var(--amber, #F3D9A8); font-size: 12px; letter-spacing: .16em; text-transform: uppercase; margin-bottom: 8px; }
.tile h3 { color: #fff; font-family: var(--font-serif); font-size: clamp(26px, 3vw, 36px); font-weight: 420; margin: 0 0 8px; }
.tile p { color: rgba(255, 255, 255, .85); font-size: 14.5px; margin: 0 0 16px; max-width: 420px; }
.tile .tile-cta { color: #fff; font-size: 14px; letter-spacing: .04em; border-bottom: 1px solid rgba(255, 255, 255, .5); align-self: flex-start; padding-bottom: 2px; }
@media (max-width: 820px) {
  .tiles-grid { grid-template-columns: 1fr; }
}

/* — Reveal on scroll — */
.reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s ease, transform .7s ease; }
.reveal.is-visible { opacity: 1; transform: none; }
.reveal-rit-1 { transition-delay: .08s; }
.reveal-rit-2 { transition-delay: .16s; }
.reveal-rit-3 { transition-delay: .24s; }

@media (prefers-reduced-motion: reduce) {
  .promo-ticker-track, .marquee-track, .hero-v3-card img.hero-bg { animation: none; }
  .reveal { opacity: 1; transform: none; transition: none; }
  .btn, .prod-card, .bolla .bolla-img, .tile, .usp-card { transition: none; }
}


/* — Banco/Primizie: griglia 2x4 (sostituisce il carosello) — */
.banco-grid {
  max-width: 1280px;
  margin: 30px auto 0;
  padding: 0 40px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
}
@media (max-width: 1000px) { .banco-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px)  { .banco-grid { grid-template-columns: 1fr; padding: 0 20px; } }
