/* WTF — fixture data. Fictional, SF-ish, invented names. */

const VENDORS = [
  {
    id: 'saltgrass',
    name: 'Saltgrass Tacos',
    handle: '@saltgrasstacos',
    kind: 'Food truck',
    cuisine: 'Tacos · Sonoran',
    neighborhood: 'Mission District',
    tier: 4,
    aura: 96,
    accepting: true,
    soldOut: ['Birria sopes'],
    ticket: 7,            // minutes
    queue: 4,             // people
    onSite: 'on-site',
    pickupNext: '12:24 PM',
    priceTier: '$$',
    distance: 0.3,
    walkMin: 6,
    map: { x: 41, y: 38 },
    blockTone: '#C2682E',
    photoCaption: 'Mesquite carnitas, off Folsom & 22nd',
    followers: 2410,
    menu: [
      { name: 'Carnitas Taco',     price: 4.5,  desc: 'Mesquite-smoked, double tortilla' },
      { name: 'Pollo Asado Taco',  price: 4.5,  desc: 'Charred thigh, crema, pickled onion' },
      { name: 'Birria Sopes',      price: 9.0,  desc: 'Slow-stewed beef, queso fresco', soldOut: true },
      { name: 'Hibiscus Agua',     price: 4.0,  desc: 'House jamaica, lightly sweet' },
    ],
    posts: [
      { who: 'Renee Ahmadi',    role: 'Pastry, Lupin Bakery', note: 'Carnitas after a 12-hour shift. Goated.', when: '2h' },
      { who: 'Daniel Park',     role: 'Sous, Kestrel',        note: 'Birria sopes >> any sit-down on Valencia.', when: '1d' },
      { who: 'Hana Volkov',     role: 'Cookbook editor',      note: 'They cure their own crema. You taste it.', when: '3d' },
    ],
  },
  {
    id: 'adas',
    name: "Ada's Cart",
    handle: '@adascart',
    kind: 'Cart',
    cuisine: 'Banh mi · Vietnamese',
    neighborhood: 'Civic Center',
    tier: 3,
    aura: 81,
    accepting: true,
    soldOut: [],
    ticket: 4,
    queue: 2,
    onSite: 'on-site',
    pickupNext: '12:18 PM',
    priceTier: '$',
    distance: 0.6,
    walkMin: 11,
    map: { x: 28, y: 48 },
    blockTone: '#7E8C4A',
    photoCaption: 'Cold-press lemongrass, daily-bake baguette',
    followers: 1180,
    menu: [
      { name: 'Pork Belly Banh Mi', price: 11, desc: 'Five-spice belly, pickled daikon' },
      { name: 'Tofu Banh Mi',       price: 10, desc: 'Lemongrass tofu, herbs, jalapeño' },
      { name: 'Iced Vietnamese',    price: 5,  desc: 'Single-origin Robusta blend' },
    ],
    posts: [
      { who: 'Marcus Lin', role: 'Eng @ Stripe', note: 'Best pickled daikon I\u2019ve ever had. Twice a week now.', when: '4h' },
      { who: 'Priya Shah', role: 'Food writer',  note: 'Ada bakes the bread herself at 4am. Real one.', when: '2d' },
    ],
  },
  {
    id: 'northshore',
    name: 'Northshore Fry Co.',
    handle: '@northshorefry',
    kind: 'Food truck',
    cuisine: 'Smashburgers · Fries',
    neighborhood: 'Dogpatch',
    tier: 3,
    aura: 78,
    accepting: true,
    soldOut: ['Double smash'],
    ticket: 12,
    queue: 9,
    onSite: 'on-site',
    pickupNext: '12:31 PM',
    priceTier: '$$',
    distance: 1.1,
    walkMin: 22,
    map: { x: 64, y: 60 },
    blockTone: '#8B5232',
    photoCaption: 'Twice-fried, beef tallow finish',
    followers: 3120,
    menu: [
      { name: 'Single Smash',  price: 9,  desc: 'Aged cheddar, special sauce' },
      { name: 'Double Smash',  price: 13, desc: 'Two patties, no apologies', soldOut: true },
      { name: 'Tallow Fries',  price: 6,  desc: 'Twice-fried, malt salt' },
    ],
    posts: [
      { who: 'Jules Toriyama', role: 'Pitmaster',     note: 'The crust on these is religious.', when: '5h' },
    ],
  },
  {
    id: 'marigold',
    name: 'Marigold Pop-up',
    handle: '@marigold.sf',
    kind: 'Pop-up',
    cuisine: 'South Indian · Dosas',
    neighborhood: 'Hayes Valley',
    tier: 4,
    aura: 92,
    accepting: false,
    paused: true,
    soldOut: [],
    ticket: 18,
    queue: 14,
    onSite: 'on-site',
    pickupNext: '1:05 PM',
    priceTier: '$$',
    distance: 0.9,
    walkMin: 17,
    map: { x: 22, y: 30 },
    blockTone: '#D49A2B',
    photoCaption: 'Ghee-roasted dosa, three chutneys',
    followers: 5400,
    menu: [
      { name: 'Ghee Roast Dosa', price: 14, desc: 'Hand-pulled, fermented 36h' },
      { name: 'Masala Dosa',     price: 16, desc: 'With Kashmiri potato' },
      { name: 'Filter Coffee',   price: 5,  desc: 'Chicory blend, hand-pulled' },
    ],
    posts: [],
  },
  {
    id: 'coalfire',
    name: 'Coalfire Pies',
    handle: '@coalfirepies',
    kind: 'Pop-up',
    cuisine: 'Wood-fired pizza',
    neighborhood: 'Mission District',
    tier: 2,
    aura: 64,
    accepting: true,
    soldOut: [],
    ticket: 22,
    queue: 6,
    onSite: 'delayed',
    pickupNext: '12:48 PM',
    priceTier: '$$',
    distance: 0.5,
    walkMin: 10,
    map: { x: 50, y: 30 },
    blockTone: '#A24A2A',
    followers: 640,
    photoCaption: 'Sourdough crust, 90-second bake',
    menu: [
      { name: 'Margherita',  price: 17, desc: 'San Marzano, fior di latte' },
      { name: 'Calabrese',   price: 19, desc: 'Spicy salami, hot honey' },
    ],
    posts: [],
  },
  {
    id: 'brine',
    name: 'Little Brine Co.',
    handle: '@littlebrineco',
    kind: 'Cart',
    cuisine: 'Sandwiches · Pickles',
    neighborhood: 'SoMa',
    tier: 2,
    aura: 58,
    accepting: true,
    soldOut: [],
    ticket: 5,
    queue: 1,
    onSite: 'on-site',
    pickupNext: '12:16 PM',
    priceTier: '$',
    distance: 0.4,
    walkMin: 8,
    map: { x: 56, y: 50 },
    blockTone: '#5A6E48',
    followers: 320,
    menu: [],
    posts: [],
  },
  {
    id: 'pickle-stand',
    name: 'The Pickle Stand',
    handle: '@picklestand',
    kind: 'Cart',
    cuisine: 'Half-sour, garlic dill',
    neighborhood: 'Mission District',
    tier: 1,
    aura: 41,
    accepting: true,
    soldOut: [],
    ticket: 2,
    queue: 0,
    onSite: 'on-site',
    pickupNext: 'Now',
    priceTier: '$',
    distance: 0.2,
    walkMin: 4,
    map: { x: 46, y: 44 },
    blockTone: '#7A8A4E',
    followers: 88,
    menu: [],
    posts: [],
  },
  {
    id: 'goldenrod',
    name: 'Goldenrod Bakehouse',
    handle: '@goldenrodbake',
    kind: 'Pop-up',
    cuisine: 'Laminated pastries',
    neighborhood: 'NoPa',
    tier: 3,
    aura: 74,
    accepting: false,
    soldOut: ['Croissant', 'Kouign-amann'],
    ticket: 0,
    queue: 0,
    onSite: 'on-site',
    pickupNext: 'Tomorrow 8:00 AM',
    priceTier: '$$',
    distance: 1.4,
    walkMin: 26,
    map: { x: 16, y: 22 },
    blockTone: '#C29B45',
    followers: 2210,
    menu: [],
    posts: [],
    stale: true,
  },
  {
    id: 'foundry',
    name: 'Foundry Caterers',
    handle: '@foundrycaterers',
    kind: 'Caterer',
    cuisine: 'Private events',
    neighborhood: 'Dogpatch',
    tier: 2,
    aura: 60,
    accepting: false,
    soldOut: [],
    ticket: 0,
    queue: 0,
    onSite: 'not-here',
    pickupNext: 'Booking only',
    priceTier: '$$$',
    distance: 1.2,
    walkMin: 24,
    map: { x: 70, y: 52 },
    blockTone: '#3E4A55',
    followers: 410,
    menu: [],
    posts: [],
  },
  {
    id: 'dogpatch-tour',
    name: 'Dogpatch Walking Tour',
    handle: '@dogpatcheats',
    kind: 'Walking tour',
    cuisine: '6 stops · 90 min',
    neighborhood: 'Dogpatch',
    tier: 0,
    aura: null,
    accepting: false,
    soldOut: [],
    ticket: 0,
    queue: 0,
    onSite: 'on-site',
    pickupNext: 'Sat 11 AM',
    priceTier: '$$',
    distance: 1.0,
    walkMin: 20,
    map: { x: 76, y: 64 },
    blockTone: '#8B6E48',
    followers: 12,
    menu: [],
    posts: [],
  },
  {
    id: 'unknown-truck',
    name: 'Untitled Smoke Co.',
    handle: '@smokeco',
    kind: 'Food truck',
    cuisine: '—',
    neighborhood: 'SoMa',
    tier: 0, /* unscored — plain pin, no halo. PRESENCE not absence. */
    aura: null,
    accepting: false,
    soldOut: [],
    ticket: 0,
    queue: 0,
    onSite: 'on-site',
    pickupNext: '—',
    priceTier: '$$',
    distance: 0.8,
    walkMin: 15,
    map: { x: 60, y: 40 },
    blockTone: '#5A4E42',
    followers: 0,
    menu: [],
    posts: [],
  },
];

const FILTERS = [
  { id: 'open',     label: 'Open now',          kind: 'toggle' },
  { id: 'ordering', label: 'Accepting orders',  kind: 'toggle' },
  { id: 'tacos',    label: 'Tacos',             kind: 'category', match: 'taco' },
  { id: 'pizza',    label: 'Pizza',             kind: 'category', match: 'pizza' },
  { id: 'sweet',    label: 'Pastry',            kind: 'category', match: 'pastr' },
  { id: 'price',    label: '$ — $$',            kind: 'price' },
  { id: 'near',     label: 'Within 0.5 mi',     kind: 'distance' },
];

window.VENDORS = VENDORS;
window.FILTERS = FILTERS;
