// Icon set — hand-picked Lucide paths, inlined to avoid runtime fetch.
// Stroke 1.75, 24x24 viewBox, currentColor.
const ICON_PATHS = {
  // networking
  'wifi': 'M5 12.55a11 11 0 0 1 14.08 0 M1.42 9a16 16 0 0 1 21.16 0 M8.53 16.11a6 6 0 0 1 6.95 0 M12 20h.01',
  'wifi-high': 'M5 12.55a11 11 0 0 1 14.08 0 M1.42 9a16 16 0 0 1 21.16 0 M8.53 16.11a6 6 0 0 1 6.95 0 M12 20h.01',
  'router': 'M5 15h14v4H5z M15 11V7 M11 11V7 M7 15v-3a4 4 0 0 1 4-4h2a4 4 0 0 1 4 4v3 M15 19h.01 M11 19h.01',
  // security/cameras
  'shield': 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z',
  'shield-check': 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z M9 12l2 2 4-4',
  'lock': 'M5 11h14v10H5z M8 11V7a4 4 0 0 1 8 0v4',
  'key': 'M10.5 14.5a4.5 4.5 0 1 1-3-7.86 M14 8l7 7 M18 11l3 3 M14 14l4 4',
  'video': 'M3 7l4 3-4 3z M3 7v10h13V7z M16 9l5-3v12l-5-3z',
  'camera': 'M5 7h14v12H5z M9 7V4h6v3 M12 17a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',
  'eye': 'M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z M12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z',
  // websites
  'browser': 'M3 5h18v14H3z M3 10h18 M7 7.5h.01 M10 7.5h.01',
  'globe': 'M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18z M3.6 9h16.8 M3.6 15h16.8 M12 3a13 13 0 0 1 0 18 M12 3a13 13 0 0 0 0 18',
  'palette': 'M12 2a10 10 0 1 0 0 20c5 0 1.5-3 3.5-5s5-1 5-4a11 11 0 0 0-8.5-11z M7 13a1 1 0 1 0 0-2 1 1 0 0 0 0 2z M11 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2z M15.5 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2z',
  'code': 'M9 18l-6-6 6-6 M15 18l6-6-6-6',
  // email
  'mail': 'M3 5h18v14H3z M3 7l9 7 9-7',
  'inbox': 'M3 13h4l2 3h6l2-3h4 M3 13l3-8h12l3 8v6H3v-6z',
  'building': 'M4 21V5l8-3v19 M12 21h8V11l-8-3 M8 9h.01 M8 13h.01 M8 17h.01 M16 13h.01 M16 17h.01',
  'briefcase': 'M3 8h18v12H3z M9 8V5h6v3',
  // misc
  'map': 'M3 6l6-3 6 3 6-3v15l-6 3-6-3-6 3z M9 3v15 M15 6v15',
  'map-pin': 'M12 22s7-7 7-13a7 7 0 0 0-14 0c0 6 7 13 7 13z M12 11a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z',
  'phone': 'M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 13 13 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 13 13 0 0 0 2.81.7A2 2 0 0 1 22 16.92z',
  'message': 'M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z',
  'check': 'M20 6 9 17l-5-5',
  'check-circle': 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20z M8 12l3 3 5-5',
  'star': 'M12 2l3 7 7 .8-5.3 4.8 1.6 7.4L12 18l-6.3 4 1.6-7.4L2 9.8 9 9z',
  'arrow-up-right': 'M7 17 17 7 M7 7h10v10',
  'arrow-right': 'M5 12h14 M13 5l7 7-7 7',
  'arrow-left': 'M19 12H5 M11 5l-7 7 7 7',
  'chevron-down': 'm6 9 6 6 6-6',
  'chevron-right': 'm9 6 6 6-6 6',
  'plus': 'M5 12h14 M12 5v14',
  'x': 'M18 6 6 18 M6 6l12 12',
  'menu': 'M3 6h18 M3 12h18 M3 18h18',
  'users': 'M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2 M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z M23 21v-2a4 4 0 0 0-3-3.87 M16 3.13a4 4 0 0 1 0 7.75',
  'home': 'M3 9l9-7 9 7v11a2 2 0 0 1-2 2h-4v-7H10v7H6a2 2 0 0 1-2-2z',
  'compass': 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20z M16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88z',
  'sparkles': 'M12 3v3 M12 18v3 M3 12h3 M18 12h3 M5.6 5.6l2.1 2.1 M16.3 16.3l2.1 2.1 M5.6 18.4l2.1-2.1 M16.3 7.7l2.1-2.1',
  'sliders': 'M4 21v-7 M4 10V3 M12 21v-9 M12 8V3 M20 21v-5 M20 12V3 M1 14h6 M9 8h6 M17 16h6',
  'tools': 'M14.7 6.3a4 4 0 0 1-5.6 5.6L3 18l3 3 6.1-6.1a4 4 0 0 1 5.6-5.6L14 12 9 7z',
  'zap': 'M13 2 3 14h7l-1 8 10-12h-7z',
  'cpu': 'M4 4h16v16H4z M9 9h6v6H9z M9 1v3 M15 1v3 M9 20v3 M15 20v3 M20 9h3 M20 14h3 M1 9h3 M1 14h3',
  'bar-chart': 'M3 3v18h18 M7 16V8 M12 16v-5 M17 16v-12',
  'life-buoy': 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20z M12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8z M4.9 4.9l4.2 4.2 M14.9 14.9l4.2 4.2 M14.9 9.1l4.2-4.2 M9.1 14.9l-4.2 4.2',
  'database': 'M4 6a8 3 0 1 0 16 0 8 3 0 1 0-16 0 M4 6v6a8 3 0 0 0 16 0V6 M4 12v6a8 3 0 0 0 16 0v-6',
  'cloud': 'M18 10a6 6 0 0 0-11.8-1 4 4 0 1 0-1 7.9h12.8a4.5 4.5 0 0 0 0-9z',
  'facebook': 'M22 12a10 10 0 1 0-11.6 9.9V14.9H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.3 0-1.7.8-1.7 1.6V12h2.9l-.5 2.9h-2.4V22A10 10 0 0 0 22 12z',
  'instagram': 'M7 2h10a5 5 0 0 1 5 5v10a5 5 0 0 1-5 5H7a5 5 0 0 1-5-5V7a5 5 0 0 1 5-5z M16 11.4a4 4 0 1 1-7.9 1 4 4 0 0 1 7.9-1z M17.5 6.5h.01',
};

function Icon({ name, size = 24, className = '', strokeWidth = 1.75, ...props }) {
  const d = ICON_PATHS[name];
  if (!d) {
    return (
      <svg width={size} height={size} viewBox="0 0 24 24" className={`icon ${className}`} {...props}>
        <rect x="3" y="3" width="18" height="18" rx="2" stroke="currentColor" strokeWidth={strokeWidth} fill="none" />
      </svg>
    );
  }
  // multi-path support: split on " M " (uppercase moveto)
  const paths = d.split(/(?=M)/g).map(s => s.trim()).filter(Boolean);
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" className={`icon ${className}`} fill="none" stroke="currentColor" strokeWidth={strokeWidth} strokeLinecap="round" strokeLinejoin="round" {...props}>
      {paths.map((p, i) => <path key={i} d={p} />)}
    </svg>
  );
}

window.Icon = Icon;
