/* ── Zafa — line icon set. <Icon name size> strokes currentColor ─────── */
const ICONS = {
  // nav + ui
  home: 'M3 11.5 12 4l9 7.5M5.5 9.7V20h13V9.7',
  search: 'M11 11m-7 0a7 7 0 1 0 14 0a7 7 0 1 0-14 0M16.5 16.5 21 21',
  heart: 'M12 20s-7.5-4.7-7.5-10A4.5 4.5 0 0 1 12 7a4.5 4.5 0 0 1 7.5 3C19.5 15.3 12 20 12 20Z',
  spark: 'M12 3v6M12 15v6M3 12h6M15 12h6M6.5 6.5 9 9M15 15l2.5 2.5M17.5 6.5 15 9M9 15l-2.5 2.5',
  user: 'M12 12m-4 0a4 4 0 1 0 8 0a4 4 0 1 0-8 0M5 20c1.2-3 4-4.5 7-4.5s5.8 1.5 7 4.5',
  left: 'M15 5l-7 7 7 7',
  right: 'M9 5l7 7-7 7',
  down: 'M5 9l7 7 7-7',
  up: 'M5 15l7-7 7 7',
  x: 'M6 6l12 12M18 6 6 18',
  filter: 'M3 6h18M7 12h10M10 18h4',
  sliders: 'M4 8h10M18 8h2M4 16h2M10 16h10M14 6v4M8 14v4',
  star: 'M12 4l2.4 5 5.6.7-4 3.8 1 5.5L12 16.4 7 19l1-5.5-4-3.8 5.6-.7z',
  pin: 'M12 21s7-5.5 7-11a7 7 0 0 0-14 0c0 5.5 7 11 7 11ZM12 10m-2.3 0a2.3 2.3 0 1 0 4.6 0a2.3 2.3 0 1 0-4.6 0',
  check: 'M5 12.5 10 17 19 7',
  plus: 'M12 5v14M5 12h14',
  trash: 'M5 7h14M9 7V5h6v2M7 7l1 13h8l1-13',
  share: 'M16 6l-4-4-4 4M12 2v13M5 12v7a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-7',
  grid: 'M4 4h7v7H4zM13 4h7v7h-7zM4 13h7v7H4zM13 13h7v7h-7z',
  list: 'M4 6h16M4 12h16M4 18h16',
  bell: 'M6 9a6 6 0 0 1 12 0c0 5 2 6 2 6H4s2-1 2-6M10 20a2 2 0 0 0 4 0',
  globe: 'M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18M3 12h18M12 3c2.5 2.5 3.5 5.5 3.5 9s-1 6.5-3.5 9c-2.5-2.5-3.5-5.5-3.5-9s1-6.5 3.5-9',
  chev: 'M9 5l7 7-7 7',
  arrow: 'M5 12h14M13 6l6 6-6 6',
  chat: 'M4 5h16v11H9l-4 3.5V16H4z',
  edit: 'M4 20h4L19 9l-4-4L4 16z',
  card: 'M3 6h18v12H3zM3 10h18',
  shield: 'M12 3l7 3v5c0 5-3.5 8-7 10-3.5-2-7-5-7-10V6z',
  // contacts
  phone: 'M5 4h4l2 5-2.5 1.5a11 11 0 0 0 5 5L20 13l1 5v1a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2',
  whatsapp: 'M12 3a9 9 0 0 0-7.7 13.6L3 21l4.5-1.2A9 9 0 1 0 12 3M8.5 8c.3 0 .6.6 1 1.5.2.5 0 .8-.3 1.1-.3.3-.3.6 0 1a6 6 0 0 0 2.6 2.4c.4.2.7.2 1-.2.3-.4.7-1 .9-1 .6 0 2.3 1 2.3 1.4 0 1-.8 2-2 2.2A8 8 0 0 1 7 11c-.4-1.6.4-3 1.5-3',
  mail: 'M3 6h18v12H3zM3 7l9 6 9-6',
  instagram: 'M7 3h10a4 4 0 0 1 4 4v10a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V7a4 4 0 0 1 4-4M12 8.5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7M17 6.5v.01',
  link: 'M9 15l6-6M10 6l1-1a4 4 0 0 1 6 6l-1 1M14 18l-1 1a4 4 0 0 1-6-6l1-1',
  // categories
  flower: 'M12 9m-2.4 0a2.4 2.4 0 1 0 4.8 0a2.4 2.4 0 1 0-4.8 0M12 6.6V4M12 14v6M9.6 9 5 7M14.4 9 19 7M14 20c-2 .5-4 .5-6 0',
  camera: 'M4 8h3l1.5-2h7L17 8h3v11H4zM12 11a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7',
  video: 'M3 7h12v10H3zM15 10l6-3v10l-6-3',
  makeup: 'M9 3h2l.5 6h-3zM8.5 9h3v9a1.5 1.5 0 0 1-3 0zM15 5l3 3-7 7-3 .5.5-3z',
  hair: 'M6 20c-2-5-2-9 0-13a6 6 0 0 1 12 0c2 4 2 8 0 13M9 8c0 3 0 6-1.5 9M15 8c0 3 0 6 1.5 9',
  stage: 'M4 9l8-4 8 4-8 4zM4 9v8M20 9v8M8 11v8M16 11v8M4 19h16',
  light: 'M9 14a4.5 4.5 0 1 1 6 0c-1 1-1.3 1.5-1.3 3h-3.4c0-1.5-.3-2-1.3-3M10 21h4M12 2v1.5M4 8h1.5M18.5 8H20',
  food: 'M5 4v7a2 2 0 0 0 4 0V4M7 11v9M16 4c-2 0-3 2-3 5s1 4 3 4 3-1 3-4-1-5-3-5M16 13v7',
  kiosk: 'M4 9l1-4h14l1 4M4 9h16v3a2 2 0 0 1-4 0 2 2 0 0 1-4 0 2 2 0 0 1-4 0 2 2 0 0 1-4 0zM6 12v8h12v-8',
  cup: 'M5 8h12v5a5 5 0 0 1-10 0zM17 9h2a2 2 0 0 1 0 4h-2M5 20h12',
  decor: 'M12 3l2.5 5.5L20 11l-5.5 2.5L12 19l-2.5-5.5L4 11l5.5-2.5z',
  venue: 'M3 21V10l9-6 9 6v11M9 21v-6h6v6M3 10h18',
  planning: 'M5 4h14v17l-7-3-7 3zM9 9h6M9 13h4',
  invite: 'M4 6h16v12H4zM4 7l8 6 8-6M8 18l4-3 4 3',
  cake: 'M5 21h14v-7H5zM5 14c1.5 0 1.5 1.5 3.5 1.5S10 14 12 14s1.5 1.5 3.5 1.5S17 14 19 14M12 3v4M12 7l-1.5 1.5M12 7l1.5 1.5M8 11V8M16 11V8',
  dates: 'M12 3c-3 0-5 3-5 7s2 9 5 9 5-5 5-9-2-7-5-7M12 3v16',
  coffee: 'M6 10h9v4a4.5 4.5 0 0 1-9 0zM15 11h2.5a1.8 1.8 0 0 1 0 3.6H15M9 6c0-1 1-1 1-2M12 6c0-1 1-1 1-2',
  ring: 'M12 21a6 6 0 1 0 0-12 6 6 0 0 0 0 12M9.5 9l1-4h3l1 4M12 13v3M12 16l-1.3.8M12 16l1.3.8',
  dress: 'M9 3l3 3 3-3M9 3l-1 5 4 3 4-3-1-5M8 8l-3 6 4 1v6h6v-6l4-1-3-6',
  suit: 'M8 3l4 3 4-3 2 4v14H6V7zM12 6v9M10 9l2 2 2-2',
  car: 'M3 16l1.5-6h15L21 16M3 16h18v3H3zM5 16v2M19 16v2M6.5 16a1.5 1.5 0 1 0 3 0M14.5 16a1.5 1.5 0 1 0 3 0',
  henna: 'M12 21V11M12 11c0-3-2-5-2-5M12 11c0-3 2-5 2-5M12 14l-3-2M12 14l3-2M12 8m-2 0a2 2 0 1 0 4 0 2 2 0 1 0-4 0',
  perfume: 'M9 3h6v3H9zM8 7h8l1 4v8a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2v-8zM10 12h4',
  music: 'M9 18V6l10-2v12M9 18a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0M19 16a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0',
  band: 'M5 17a2 2 0 1 0 4 0 2 2 0 0 0-4 0M9 17V8l8 8M9 8l8-3M15 19a2 2 0 1 0 4 0 2 2 0 0 0-4 0',
  drone: 'M8 8h8v8H8zM10 10h4v4h-4zM5 5l3 3M19 5l-3 3M5 19l3-3M19 19l-3-3M3 5h4M17 5h4M3 19h4M17 19h4',
  booth: 'M4 4h16v13H4zM7 8h2M7 12h2M12 8h5M12 12h5M9 17v3M15 17v3',
  tent: 'M12 3 3 20h18zM12 3v17M12 20l-3-7M12 20l3-7',
  chair: 'M6 4h12v6H6zM6 10v10M18 10v10M4 14h16M6 20v-4M18 20v-4',
  gift: 'M4 9h16v4H4zM5 13h14v8H5zM12 9v12M12 9C12 6 10 4 8.5 5S9 9 12 9M12 9c0-3 2-5 3.5-4S15 9 12 9',
  pen: 'M6 19c-1-3 0-7 3-10s7-4 10-3c-1 4-3 7-6 10s-6 4-7 3M9 16l6-6',
  spa: 'M12 14c-3-2-5-5-5-8 2 0 4 1 5 3 1-2 3-3 5-3 0 3-2 6-5 8M5 17c2 1 5 1 7 0s5-1 7 0',
  nails: 'M9 3h6v10a3 3 0 0 1-6 0zM9 8h6M9 6c0-1 1-2 3-2s3 1 3 2',
  usher: 'M12 6m-2 0a2 2 0 1 0 4 0 2 2 0 1 0-4 0M8 21v-7l-2-2 3-3h6l3 3-2 2v7M9 14h6',
  valet: 'M5 14l1.5-5h11L19 14M5 14h14v3H5zM8 17v2M16 17v2M9 4h6v3H9z',
  bus: 'M5 5h14v11H5zM5 11h14M8 16v2M16 16v2M7 19h10M5 8h2M17 8h2',
  balloon: 'M12 4a4 4 0 0 1 4 4c0 3-2 5-4 6s-4-3-4-6a4 4 0 0 1 4-4M12 14v3M11 20l1-3 1 3',
  paper: 'M7 3h7l4 4v14H7zM14 3v4h4M10 12h5M10 16h5',
  incense: 'M12 4v11M9 8c1 1 1 2 0 3M15 8c-1 1-1 2 0 3M12 7c-1 1-1 3 0 4M7 20h10l-1-5H8z',
  choco: 'M5 5h14v14H5zM9 5v14M14 5v14M5 10h14M5 14h14',
  screen: 'M3 5h18v11H3zM9 20h6M12 16v4',
  speaker: 'M6 4h12v16H6zM12 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6M12 6.5v.01',
  arch: 'M5 21V12a7 7 0 0 1 14 0v9M5 12C5 7 8 5 12 5M19 12c0-5-3-7-7-7',
  mic: 'M12 3a3 3 0 0 0-3 3v5a3 3 0 0 0 6 0V6a3 3 0 0 0-3-3M6 11a6 6 0 0 0 12 0M12 17v4M9 21h6',
  store: 'M4 9l1.5-5h13L20 9M4 9h16M4 9v11h16V9M5 9a2.2 2.2 0 0 0 4.4 0 2.2 2.2 0 0 0 4.4 0 2.2 2.2 0 0 0 4.4 0M9 20v-5h6v5',
  megaphone: 'M4 10v4h3l9 4V6l-9 4zM7 10v4M19 9a4 4 0 0 1 0 6M7 14v4a1 1 0 0 0 2 0',
  calendar: 'M4 6h16v15H4zM4 10h16M8 3v4M16 3v4M8 14h2M12 14h2M16 14h0M8 17h2M12 17h2',
  image: 'M4 5h16v14H4zM4 16l4.5-4.5 3 3L15 10l5 5M9 9a1.3 1.3 0 1 1-2.6 0 1.3 1.3 0 0 1 2.6 0',
  clip: 'M9 8v8a3 3 0 0 0 6 0V7a5 5 0 0 0-10 0v9a7 7 0 0 0 14 0V8',
  ai: 'M12 2.4 13.7 9.5 20.8 12 13.7 14.5 12 21.6 10.3 14.5 3.2 12 10.3 9.5ZM18.7 2.6 19.4 5.4 22.2 6.1 19.4 6.8 18.7 9.6 18 6.8 15.2 6.1 18 5.4',
  warn: 'M12 3 22 20H2zM12 9v5M12 17v.5',
  analytics: 'M4 20V4M4 20h16M8 20v-6M12 20V9M16 20v-3M20 20V6'
};

function Icon({ name, size = 22, stroke = 2, fill = 'none', style }) {
  const d = ICONS[name] || ICONS.spark;
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill={fill}
    stroke="currentColor" strokeWidth={stroke} strokeLinecap="round"
    strokeLinejoin="round" style={style} aria-hidden="true">
      {d.split('M').filter(Boolean).map((seg, i) => <path key={i} d={'M' + seg} style={{ stroke: "rgb(0, 0, 0)" }} />)}
    </svg>);

}

// filled star for ratings
function StarFill({ size = 14, color = '#C8A24A' }) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill={color} aria-hidden="true">
      <path d="M12 3.5l2.7 5.6 6.1.8-4.5 4.3 1.1 6L12 17.6 6.5 20.2l1.1-6L3.1 9.9l6.1-.8z" />
    </svg>);

}

Object.assign(window, { Icon, StarFill, ICONS });