// Sassalbini · product + story + markets data

const PRODUCTS = [
  { id: "parm-24", name: "Parmigiano Reggiano 24 mesi", origin: "Emilia-Romagna · DOP", category: "formaggi", family: "Vacca", image: "assets/parmigiano-24.png", badges: ["DOP", "24 mesi"], price: 28.50, unit: "al kg", aging: "24 mesi", milk: "Vacca", format: "Forma intera · ~38kg", meta: "Pasta dura a grana fine, note di burro cotto e frutta secca. Stagionato sulle tavole di larice per oltre due anni.", featured: true },
  { id: "parm-36", name: "Parmigiano Reggiano 36 mesi", origin: "Emilia-Romagna · DOP", category: "formaggi", family: "Vacca", image: "assets/parmigiano-18.png", badges: ["DOP", "36 mesi", "Riserva"], price: 38.00, salePrice: 32.00, unit: "al kg", aging: "36 mesi", milk: "Vacca", format: "Trancio · 500g o 1kg", meta: "Cristallizzato, fragrante, intenso. Una riserva selezionata da caseifici di montagna.", featured: true },
  { id: "parm-12", name: "Parmigiano Reggiano 12 mesi", origin: "Emilia-Romagna · DOP", category: "formaggi", family: "Vacca", image: "assets/parmigiano-12.png", badges: ["DOP", "12 mesi"], price: 22.00, unit: "al kg", aging: "12 mesi", milk: "Vacca", format: "Trancio · 500g", meta: "Giovane, lattico, dolce. Perfetto da tavola e per pasta fresca." },
  { id: "pec-romano", name: "Pecorino Romano DOP", origin: "Lazio · DOP", category: "formaggi", family: "Pecora", image: "assets/pecorino-romano.png", badges: ["DOP", "Pecora"], price: 19.50, unit: "al kg", aging: "8 mesi", milk: "Pecora", format: "Trancio · 400g", meta: "Sapore deciso e sapido. Il pecorino del Lazio, ideale grattugiato sulla carbonara." },
  { id: "pec-toscano-stag", name: "Pecorino Toscano Stagionato", origin: "Toscana · DOP", category: "formaggi", family: "Pecora", image: "assets/pecorino-toscano-stag.png", badges: ["DOP", "Stagionato"], price: 24.00, unit: "al kg", aging: "6 mesi", milk: "Pecora", format: "Forma · ~1.5kg", meta: "Stagionato nelle grotte toscane. Note di noce e fieno, pasta paglierina." },
  { id: "pec-toscano-fresco", name: "Pecorino Toscano Fresco", origin: "Toscana · DOP", category: "formaggi", family: "Pecora", image: "assets/pecorino-toscano-fresco.png", badges: ["DOP", "Fresco"], price: 18.50, unit: "al kg", aging: "20 giorni", milk: "Pecora", format: "Forma · ~1kg", meta: "Dolce, burroso, elegante. Da consumare entro 60 giorni dalla produzione." },
  { id: "pec-sardo", name: "Pecorino Sardo Dolce", origin: "Sardegna · DOP", category: "formaggi", family: "Pecora", image: "assets/pecorino-sardo.png", badges: ["DOP", "Sardegna"], price: 21.00, unit: "al kg", aging: "60 giorni", milk: "Pecora", format: "Trancio · 500g", meta: "Pasta tenera, gusto delicato con sfumature vegetali. Da banco al taglio." },
  { id: "toma-piem", name: "Toma Piemontese a latte crudo", origin: "Piemonte · DOP", category: "formaggi", family: "Vacca", image: "assets/toma-piemontese.png", badges: ["DOP", "Latte crudo"], price: 26.00, unit: "al kg", aging: "3 mesi", milk: "Vacca", format: "Forma · ~2kg", meta: "Latte crudo di alpeggio, crosta fiorita. Cremosa sotto la crosta, saporita al cuore.", featured: true },
  { id: "mozz-marchesa", name: "Mozzarella di Bufala Campana", origin: "Campania · DOP", category: "formaggi", family: "Bufala", image: "assets/mozzarella-marchesa.png", badges: ["DOP", "Bufala"], price: 14.50, unit: "250g", aging: "Fresco", milk: "Bufala", format: "Busta 250g", meta: "Morbida, candida, latte di bufala 100%. Consegnata in 24h dalla produzione." },
  { id: "mozz-bio", name: "Mozzarella di Bufala BIO", origin: "Campania · DOP · BIO", category: "formaggi", family: "Bufala", image: "assets/mozzarella-bio.png", badges: ["DOP", "BIO", "Bufala"], price: 16.00, unit: "250g", aging: "Fresco", milk: "Bufala BIO", format: "Busta 250g", meta: "La stessa mozzarella con certificazione biologica. Filiera corta, nessun additivo." },
  { id: "parm-mono", name: "Parmigiano Monodose", origin: "Emilia-Romagna · DOP", category: "formaggi", family: "Vacca", image: "assets/parmigiano-mono.png", badges: ["DOP", "Monodose"], price: 4.50, unit: "5 pezzi · 30g", aging: "24 mesi", milk: "Vacca", format: "5× 30g sottovuoto", meta: "Ideale per viaggio, ufficio, aperitivo. Già porzionato, pratico, DOP certificato." },
];

const CATEGORIES = [
  { id: "all", label: "Tutti" },
  { id: "vacca", label: "Latte vacca" },
  { id: "pecora", label: "Latte pecora" },
  { id: "bufala", label: "Latte bufala" },
];

const SORT_OPTIONS = [
  { id: "featured", label: "In evidenza" },
  { id: "price-asc", label: "Prezzo crescente" },
  { id: "price-desc", label: "Prezzo decrescente" },
  { id: "aging", label: "Stagionatura" },
];

// ── Storia · di generazione in generazione ────────────────────
const STORY = [
  { year: "I", gen: "Le origini", title: "Remo e Dirce", body: "Remo faceva il pastore: l'inverno a Rosignano Marittimo e, d'estate, le pecore portate a piedi fino a Sassalbo, seguendo l'antico ritmo della transumanza. Ed è proprio a Sassalbo che Remo incontra Dirce. Da quell'incontro nasce una famiglia — e un sogno piccolo solo in apparenza.", photo: "assets/epoca-1.jpg" },
  { year: "II", gen: "La svolta", title: "Dalla pastorizia al formaggio", body: "La pastorizia, col tempo, non basta più a sostenere la famiglia. La necessità si trasforma in intuizione: Dirce inizia a vendere il formaggio nei paesi vicini, portando con sé non solo un prodotto, ma un pezzo della loro vita, della loro fatica, della loro verità.", photo: "assets/epoca-2.jpg" },
  { year: "III", gen: "Il cammino", title: "Una bicicletta, un'Ape, i furgoni", body: "All'inizio c'era una bicicletta. Poi arrivò un'Ape. Poi vennero i furgoni, le fiere, i mercati, i chilometri macinati ogni giorno, i volti conosciuti, le mani strette, la fiducia conquistata con il tempo. Una crescita lenta, concreta, passo dopo passo — come tutte le cose che hanno radici profonde.", photo: "assets/epoca-4.jpg" },
  { year: "IV", gen: "Seconda generazione", title: "Deana e Monica, con Francesco e Toni", body: "Le figlie di Remo e Dirce, insieme a Francesco e Toni, portano nuove energie e nuove mani accanto a chi aveva iniziato tutto. Il lavoro si fa più grande e più strutturato, ma non perde mai la sua anima: il contatto diretto, la fiducia delle persone, la qualità che si riconosce al primo assaggio.", photo: "assets/epoca-3.jpg" },
  { year: "V", gen: "Terza generazione", title: "Marco, Samanta, Tania e Melissa", body: "Il cammino continua — non come singoli protagonisti, ma come parte di un'unica storia scritta nel tempo da tutta la famiglia. Ognuno porta avanti un pezzo di questa eredità, custodendo ciò che è stato con lo stesso rispetto, la stessa dedizione e lo stesso orgoglio.", video: "assets/storia-1.mp4" },
  { year: "VI", gen: "Oggi", title: "Una tradizione che cammina col tempo", body: "Tra i mercati toscani e liguri, i furgoni che attraversano il territorio e il banco anche online, vive qualcosa che va oltre il lavoro: un modo di stare al mondo, di fare le cose, di restare fedeli a ciò che si è. Perché ci sono storie che passano di mano in mano — e storie, come questa, che passano di generazione in generazione.", video: "assets/storia-2.mp4" },
];

// ── Mercati · giorno per giorno ────────────────────────────────
const MARKETS = [
  { day: "Lunedì",    dayShort: "Lun", stops: [
    { city: "Carrara",                        coords: [44.0793, 10.0973] },
    { city: "Seravezza",                      coords: [43.9953, 10.2279] },
  ]},
  { day: "Martedì",   dayShort: "Mar", stops: [
    { city: "Massarosa",                      coords: [43.8686, 10.3420] },
    { city: "Ceparana",                       coords: [44.1496, 9.9015] },
    { city: "Varese Ligure",                  coords: [44.3775, 9.5947] },
  ]},
  { day: "Mercoledì", dayShort: "Mer", stops: [
    { city: "Molicciara (Castelnuovo Magra)", coords: [44.0883, 10.0090] },
    { city: "Beverino",                       coords: [44.1879, 9.7733] },
    { city: "Forte dei Marmi",                coords: [43.9624, 10.1671] },
  ]},
  { day: "Giovedì",   dayShort: "Gio", stops: [
    { city: "Marina di Carrara",              coords: [44.0470, 10.0440] },
    { city: "Sarzana",                        coords: [44.1138, 9.9633] },
    { city: "Monterosso al Mare",             coords: [44.1461, 9.6541] },
  ]},
  { day: "Venerdì",   dayShort: "Ven", stops: [
    { city: "Capannori",                      coords: [43.8499, 10.5703] },
    { city: "San Terenzo al Mare",            coords: [44.0824, 9.8989] },
  ]},
  { day: "Sabato",    dayShort: "Sab", stops: [
    { city: "Deiva Marina",                   coords: [44.2192, 9.5220] },
    { city: "Querceta",                       coords: [43.9636, 10.2056] },
    { city: "Aulla",                          coords: [44.2090, 9.9706] },
  ]},
  { day: "Domenica",  dayShort: "Dom", closed: true, stops: [] },
];

// ── Recensioni ─────────────────────────────────────────────────
const TESTIMONIALS = [
  { name: "Maria R.",      role: "Cliente da",    city: "Sarzana",  rating: 5, avatar: "https://randomuser.me/api/portraits/women/68.jpg", content: "Il pecorino di Sassalbini è il sapore della mia infanzia. Mio padre ci portava al mercato la domenica e ora ci vado io con i miei figli. Marco è una garanzia." },
  { name: "Giuseppe T.",   role: "Cliente da",    city: "La Spezia", rating: 5, avatar: "https://randomuser.me/api/portraits/men/32.jpg", content: "Vado al mercato apposta per il loro banco. Salumi che non si trovano da nessun'altra parte — il lardo di Colonnata vero, non quello del supermercato." },
  { name: "Anna L.",       role: "Cliente da",    city: "Carrara",  rating: 5, avatar: "https://randomuser.me/api/portraits/women/44.jpg", content: "Quattro generazioni di clienti nella mia famiglia: mia nonna comprava da Dirce, oggi compro da Marco. Qualità, gentilezza, parole giuste." },
  { name: "Luca M.",       role: "Enotecario a",  city: "Massa",    rating: 5, avatar: "https://randomuser.me/api/portraits/men/52.jpg", content: "Ho aperto un'enoteca e per gli antipasti non compro da nessun altro. Mi consigliano i tagli, mi raccontano le stagionature." },
  { name: "Francesca B.",  role: "Cliente da",    city: "Lerici",   rating: 5, avatar: "https://randomuser.me/api/portraits/women/65.jpg", content: "Marco sa scegliere. Sa quale forma è pronta, qual è ancora giovane, quale aspettare. Non è un banco, è una piccola scuola di gusto." },
  { name: "Davide P.",     role: "Chef a",        city: "Sarzana",  rating: 5, avatar: "https://randomuser.me/api/portraits/men/76.jpg", content: "Il mio menù degustazione cambia con le stagionature di Marco. Quando arriva il pecorino di fossa, quando matura il salame. Lavoriamo insieme da dieci anni." },
];

function ageBucket(p) {
  if (p.aging.includes("giorni") || p.aging === "Fresco") return "fresh";
  const m = parseInt(p.aging, 10);
  if (m >= 18) return "long";
  return "medium";
}

function filterProducts(products, { cat, q }) {
  let out = products.slice();
  if (cat && cat !== "all") out = out.filter(p => p.family.toLowerCase() === cat.toLowerCase());
  if (q && q.trim()) {
    const t = q.toLowerCase();
    out = out.filter(p => p.name.toLowerCase().includes(t) || p.origin.toLowerCase().includes(t) || p.meta.toLowerCase().includes(t));
  }
  return out;
}

function sortProducts(list, how) {
  const c = list.slice();
  if (how === "price-asc") c.sort((a, b) => (a.salePrice ?? a.price) - (b.salePrice ?? b.price));
  else if (how === "price-desc") c.sort((a, b) => (b.salePrice ?? b.price) - (a.salePrice ?? a.price));
  else if (how === "aging") c.sort((a, b) => (parseInt(b.aging, 10) || 0) - (parseInt(a.aging, 10) || 0));
  else c.sort((a, b) => (b.featured ? 1 : 0) - (a.featured ? 1 : 0));
  return c;
}

Object.assign(window, { PRODUCTS, CATEGORIES, SORT_OPTIONS, STORY, MARKETS, TESTIMONIALS, filterProducts, sortProducts });
