// Icons.jsx — line data + icon set (Lucide-ish, original)
const ICONS = {
  home: 'M3 11l9-8 9 8M5 10v10h14V10',
  map: 'M9 4l-6 3v13l6-3 6 3 6-3V4l-6 3-6-3zM9 4v13M15 7v13',
  warning: 'M12 3l10 17H2z M12 10v5 M12 18v.01',
  news: 'M4 4h14a2 2 0 012 2v12a2 2 0 01-2 2H4zM4 4v14M8 9h10M8 13h10M8 17h6',
  chat: 'M21 12a8 8 0 01-11 7.4L3 21l1.6-7A8 8 0 1121 12z',
  user: 'M20 20v-2a6 6 0 00-12 0v2 M14 10a4 4 0 11-8 0 4 4 0 018 0',
  settings: 'M12 15a3 3 0 100-6 3 3 0 000 6z M19.4 13a7.97 7.97 0 000-2l2-1.6-2-3.4-2.4 1a8 8 0 00-1.6-1l-.4-2.6h-4l-.4 2.6a8 8 0 00-1.6 1l-2.4-1-2 3.4 2 1.6a7.97 7.97 0 000 2l-2 1.6 2 3.4 2.4-1a8 8 0 001.6 1l.4 2.6h4l.4-2.6a8 8 0 001.6-1l2.4 1 2-3.4-2-1.6z',
  info: 'M12 22a10 10 0 100-20 10 10 0 000 20z M12 16v-4 M12 8v.01',
  bell: 'M6 8a6 6 0 0112 0c0 7 3 9 3 9H3s3-2 3-9 M14 21a2 2 0 01-4 0',
  search: 'M11 19a8 8 0 100-16 8 8 0 000 16z M21 21l-4.3-4.3',
  arrowRight: 'M5 12h14 M12 5l7 7-7 7',
  arrowLeft: 'M19 12H5 M12 19l-7-7 7-7',
  arrowUp: 'M12 19V5 M5 12l7-7 7 7',
  arrowDown: 'M12 5v14 M19 12l-7 7-7-7',
  x: 'M18 6L6 18 M6 6l12 12',
  check: 'M4 12l5 5L20 6',
  clock: 'M12 22a10 10 0 100-20 10 10 0 000 20z M12 6v6l4 2',
  mapPin: 'M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 1116 0z M12 12a2 2 0 100-4 2 2 0 000 4z',
  train: 'M7 5h10v14H7zM5 21l2-2M19 21l-2-2 M9 5V2h6v3 M10 11h4',
  accessibility: 'M12 5a2 2 0 100-4 2 2 0 000 4z M12 7v5l-3 3 M12 12h4l3 7 M12 12l-3 7',
  heart: 'M12 21s-8-5-8-12a5 5 0 019-3 5 5 0 019 3c0 7-8 12-8 12h-2z',
  send: 'M22 2L11 13 M22 2l-7 20-4-9-9-4 20-7z',
  camera: 'M23 19a2 2 0 01-2 2H3a2 2 0 01-2-2V8a2 2 0 012-2h4l2-3h6l2 3h4a2 2 0 012 2v11z M12 17a4 4 0 100-8 4 4 0 000 8z',
  mail: 'M3 5h18v14H3z M3 5l9 7 9-7',
  lock: 'M5 10h14v11H5zM8 10V7a4 4 0 118 0v3',
  google: 'M21 11a9 9 0 11-2.6-6.3 M21 11H12',
  globe: 'M12 22a10 10 0 100-20 10 10 0 000 20z M2 12h20 M12 2a15 15 0 010 20 M12 2a15 15 0 000 20',
  moon: 'M21 13a9 9 0 11-10-10 7 7 0 0010 10z',
  sun: 'M12 17a5 5 0 100-10 5 5 0 000 10z M12 1v2 M12 21v2 M4.2 4.2l1.4 1.4 M18.4 18.4l1.4 1.4 M1 12h2 M21 12h2 M4.2 19.8l1.4-1.4 M18.4 5.6l1.4-1.4',
  star: 'M12 2l3 7 7 1-5 5 1 7-6-3-6 3 1-7-5-5 7-1z',
  zap: 'M13 2L3 14h7l-1 8 10-12h-7l1-8z',
  eye: 'M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z M12 15a3 3 0 100-6 3 3 0 000 6z',
  chevronRight: 'M9 18l6-6-6-6',
  chevronDown: 'M6 9l6 6 6-6',
  list: 'M3 6h18 M3 12h18 M3 18h18',
  shuffle: 'M16 3h5v5 M4 20l17-17 M21 16v5h-5 M15 15l6 6 M4 4l5 5',
  filter: 'M22 3H2l8 10v6l4 2v-8z',
  plus: 'M12 5v14 M5 12h14',
  bike: 'M5 20a4 4 0 100-8 4 4 0 000 8z M19 20a4 4 0 100-8 4 4 0 000 8z M8 8h3l4 8 M14 6h3',
  wifi: 'M1.5 9a15 15 0 0121 0 M5 13a10 10 0 0114 0 M8.5 17a5 5 0 017 0 M12 21h.01',
  battery: 'M3 7h15v10H3zM18 10h2v4h-2',
  signal: 'M2 17h2v5H2zM7 13h2v9H7zM12 9h2v13h-2zM17 5h2v17h-2',
  target: 'M12 22a10 10 0 100-20 10 10 0 000 20z M12 18a6 6 0 100-12 6 6 0 000 12z M12 14a2 2 0 100-4 2 2 0 000 4z',
  flame: 'M12 3s4 4 4 9a4 4 0 01-8 0c0-3 1.5-4.5 1.5-4.5S10 9 12 3z',
  maximize: 'M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7',
  minimize: 'M4 14h6v6M20 10h-6V4M14 10l7-7M3 21l7-7',
  smartphone: 'M17 2H7a2 2 0 00-2 2v16a2 2 0 002 2h10a2 2 0 002-2V4a2 2 0 00-2-2z M12 18h.01',
  phone: 'M22 16.9v3a2 2 0 01-2.2 2 19.8 19.8 0 01-8.6-3.1 19.5 19.5 0 01-6-6 19.8 19.8 0 01-3.1-8.7A2 2 0 014.1 2h3a2 2 0 012 1.7 12.8 12.8 0 00.7 2.8 2 2 0 01-.4 2.1L8.1 9.9a16 16 0 006 6l1.3-1.3a2 2 0 012.1-.4c.9.36 1.84.6 2.8.7A2 2 0 0122 16.9z',
};

function I({ name, size = 22, className = '', style = {} }) {
  const d = ICONS[name] || ICONS.info;
  return (
    <svg className={`icon ${className}`} style={{ width: size, height: size, ...style }} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
      {d.split(' M').map((p, i) => <path key={i} d={i === 0 ? p : 'M' + p} />)}
    </svg>
  );
}

Object.assign(window, { I, ICONS });
