// icons.jsx — Lucide-style inline SVG icon set. Stroke 2, round caps, currentColor.
const ICON_PATHS = {
  home:        <><path d="M3 9.6 12 3l9 6.6V20a1 1 0 0 1-1 1h-5v-7H9v7H4a1 1 0 0 1-1-1z"/></>,
  bell:        <><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/></>,
  megaphone:   <><path d="m3 11 18-5v12L3 14v-3z"/><path d="M11.6 16.8a3 3 0 1 1-5.8-1.6"/></>,
  wrench:      <><path d="M14.7 6.3a4 4 0 0 0-5.4 5.3L3 18l3 3 6.4-6.4a4 4 0 0 0 5.3-5.4l-2.6 2.6-2.3-.6-.6-2.3 2.5-2.6z"/></>,
  calendar:    <><path d="M8 2v4M16 2v4M3 10h18"/><rect x="3" y="4" width="18" height="18" rx="2"/></>,
  grid:        <><rect x="3" y="3" width="7" height="7" rx="1.5"/><rect x="14" y="3" width="7" height="7" rx="1.5"/><rect x="14" y="14" width="7" height="7" rx="1.5"/><rect x="3" y="14" width="7" height="7" rx="1.5"/></>,
  chevronRight:<path d="m9 18 6-6-6-6"/>,
  chevronLeft: <path d="m15 18-6-6 6-6"/>,
  chevronDown: <path d="m6 9 6 6 6-6"/>,
  search:      <><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></>,
  camera:      <><path d="M14.5 4 16 6h3a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3l1.5-2z"/><circle cx="12" cy="13" r="3"/></>,
  image:       <><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-5-5L5 21"/></>,
  mapPin:      <><path d="M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0z"/><circle cx="12" cy="10" r="3"/></>,
  check:       <path d="m20 6-11 11-5-5"/>,
  checkCircle: <><circle cx="12" cy="12" r="10"/><path d="m8.5 12 2.5 2.5L16 9"/></>,
  clock:       <><circle cx="12" cy="12" r="10"/><path d="M12 7v5l3.5 2"/></>,
  alert:       <><path d="m10.3 3.9-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.7-3l-8-14a2 2 0 0 0-3.4 0z"/><path d="M12 9v4M12 17h.01"/></>,
  droplet:     <path d="M12 2.7s6 5.5 6 10.3a6 6 0 0 1-12 0C6 8.2 12 2.7 12 2.7z"/>,
  zap:         <path d="M13 2 3 14h7l-1 8 10-12h-7l1-8z"/>,
  elevator:    <><rect x="4" y="2" width="16" height="20" rx="2"/><path d="M12 2v20M9 8l-2-2.5L5 8M15 16l2 2.5 2-2.5"/></>,
  sparkles:    <><path d="M11 3 12.7 8 18 9.7 12.7 11.4 11 16.7 9.3 11.4 4 9.7 9.3 8z"/><path d="M19 14l.8 2.2L22 17l-2.2.8L19 20l-.8-2.2L16 17l2.2-.8z"/></>,
  leaf:        <><path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.5 19 2c1 2 2 4.2 2 8 0 5.5-4.8 10-10 10z"/><path d="M2 21c0-3 1.9-5.4 5.1-6"/></>,
  star:        <path d="m12 2 3 6.3 6.9 1-5 4.9 1.2 6.8L12 18l-6.2 3 1.2-6.8-5-4.9 6.9-1z"/>,
  send:        <><path d="M22 2 11 13"/><path d="M22 2 15 22l-4-9-9-4z"/></>,
  x:           <path d="M18 6 6 18M6 6l12 12"/>,
  pin:         <><path d="M12 17v5"/><path d="M9 10.8V4h6v6.8a2 2 0 0 0 .6 1.4l1.9 1.8H6.5l1.9-1.8a2 2 0 0 0 .6-1.4z"/></>,
  fileText:    <><path d="M14 2v5a1 1 0 0 0 1 1h5"/><path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z"/><path d="M8 13h8M8 17h6M8 9h2"/></>,
  phone:       <path d="M16.5 21a16 16 0 0 1-13.5-13.5A2 2 0 0 1 5 5.3l2.3-.3a1.5 1.5 0 0 1 1.6 1l.9 2.3a1.5 1.5 0 0 1-.4 1.7l-1 .9a12 12 0 0 0 4.7 4.7l.9-1a1.5 1.5 0 0 1 1.7-.4l2.3.9a1.5 1.5 0 0 1 1 1.6L19 19a2 2 0 0 1-2.5 2z"/>,
  users:       <><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.9M16 3.1a4 4 0 0 1 0 7.8"/></>,
  building:    <><rect x="5" y="2" width="14" height="20" rx="1.5"/><path d="M9 7h0M15 7h0M9 11h0M15 11h0M9 15h0M15 15h0M10 22v-3h4v3"/></>,
  thumbsUp:    <><path d="M7 11v9H4a1 1 0 0 1-1-1v-7a1 1 0 0 1 1-1z"/><path d="M7 11l4-8a2 2 0 0 1 2 1.5V9h5.5a2 2 0 0 1 2 2.4l-1.3 6A2 2 0 0 1 17 20H7"/></>,
  thumbsDown:  <><path d="M17 13V4h3a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1z"/><path d="M17 13l-4 8a2 2 0 0 1-2-1.5V15H5.5a2 2 0 0 1-2-2.4l1.3-6A2 2 0 0 1 7 4h10"/></>,
  minus:       <path d="M5 12h14"/>,
  plus:        <path d="M12 5v14M5 12h14"/>,
  sun:         <><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></>,
  moon:        <path d="M21 12.8A9 9 0 1 1 11.2 3 7 7 0 0 0 21 12.8z"/>,
  arrowLeft:   <><path d="m12 19-7-7 7-7"/><path d="M19 12H5"/></>,
  more:        <><circle cx="5" cy="12" r="1.6"/><circle cx="12" cy="12" r="1.6"/><circle cx="19" cy="12" r="1.6"/></>,
  shield:      <><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></>,
  wallet:      <><path d="M3 7a2 2 0 0 1 2-2h12v4M3 7v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2H5a2 2 0 0 1-2-2z"/><path d="M17 13h.01"/></>,
  vote:        <><path d="m9 12 2 2 4-4"/><path d="M5 7c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v3H5z"/><path d="M3 18a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2l-1.5-7H4.5z"/></>,
  info:        <><circle cx="12" cy="12" r="10"/><path d="M12 16v-4M12 8h.01"/></>,
  settings:    <><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.6 1.6 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.6 1.6 0 0 0-2.7 1.1V21a2 2 0 0 1-4 0v-.2A1.6 1.6 0 0 0 7 19.4a1.6 1.6 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.6 1.6 0 0 0-1.1-2.7H1a2 2 0 0 1 0-4h.2A1.6 1.6 0 0 0 2.6 7a1.6 1.6 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1A1.6 1.6 0 0 0 7 2.6h.1A1.6 1.6 0 0 0 8 1.2V1a2 2 0 0 1 4 0v.2a1.6 1.6 0 0 0 2.7 1.1 1.6 1.6 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.6 1.6 0 0 0 1.1 2.7h.2a2 2 0 0 1 0 4h-.2a1.6 1.6 0 0 0-1.4 1z" transform="translate(1.5 1.5) scale(.92)"/></>,
  pencil:      <><path d="M17 3a2.8 2.8 0 0 1 4 4L7.5 20.5 2 22l1.5-5.5z"/><path d="m15 5 4 4"/></>,
  paperclip:   <path d="M21 11.5 12.5 20a5 5 0 0 1-7-7l8-8a3.3 3.3 0 0 1 4.7 4.7l-8 8a1.6 1.6 0 0 1-2.3-2.3l7.3-7.3"/>,
  wifiOff:     <><path d="m2 2 20 20M8.5 16.5a5 5 0 0 1 7 0M5 12.9a10 10 0 0 1 3-2M2 8.8a16 16 0 0 1 4.2-2.6M22 8.8a16 16 0 0 0-7-3.3M12 20h.01"/></>,
  refresh:     <><path d="M21 12a9 9 0 1 1-2.6-6.4L21 8"/><path d="M21 3v5h-5"/></>,
  list:        <><path d="M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01"/></>,
  inbox:       <><path d="M22 12h-6l-2 3h-4l-2-3H2"/><path d="M5.5 5h13l3.5 7v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-6z"/></>,
  ticket:      <><path d="M3 8a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2 2 2 0 0 0 0 4 2 2 0 0 1 0 4 2 2 0 0 1-2 2H5a2 2 0 0 1-2-2 2 2 0 0 0 0-4 2 2 0 0 1 0-4z"/><path d="M14 6v12" strokeDasharray="2 3"/></>,
  helpCircle:  <><circle cx="12" cy="12" r="10"/><path d="M9.1 9a3 3 0 0 1 5.8 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></>,
  messageCircle: <><path d="M7.9 20A9 9 0 1 0 4 16.1L3 21z"/></>,
  shoppingBag: <><path d="M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"/><path d="M3 6h18"/><path d="M16 10a4 4 0 0 1-8 0"/></>,
  pawPrint:    <><circle cx="7" cy="9" r="1.8"/><circle cx="12" cy="6.5" r="1.8"/><circle cx="17" cy="9" r="1.8"/><path d="M8.5 14.5C9.5 12.8 10.6 12 12 12s2.5.8 3.5 2.5c.9 1.5 1.7 2 1.7 3.4A2.7 2.7 0 0 1 14.5 20c-.9 0-1.7-.5-2.5-.5s-1.6.5-2.5.5a2.7 2.7 0 0 1-2.7-2.1c0-1.4.8-1.9 1.7-3.4z"/></>,
  handHeart:   <><path d="M11 14h2a2 2 0 0 0 0-4H9.5a3 3 0 0 0-2.1.9L3 15"/><path d="m7 18 4.5 4.5a3 3 0 0 0 2.1.9H18l3-3"/><path d="M18.5 3.5a2.4 2.4 0 0 0-3.4 0l-.6.6-.6-.6a2.4 2.4 0 1 0-3.4 3.4l4 4 4-4a2.4 2.4 0 0 0 0-3.4z"/></>,
  radio:       <><circle cx="12" cy="12" r="2.5"/><path d="M7.8 7.8a6 6 0 0 0 0 8.4M16.2 16.2a6 6 0 0 0 0-8.4M5 5a9.5 9.5 0 0 0 0 14M19 19a9.5 9.5 0 0 0 0-14"/></>,
  flag:        <><path d="M4 22V4M4 4h12l-2 4 2 4H4"/></>,
  bulb:        <><path d="M9 18h6M10 22h4"/><path d="M15.5 14a5.5 5.5 0 1 0-7 0c.8.7 1.5 1.4 1.5 2.5h4c0-1.1.7-1.8 1.5-2.5z"/></>,
  gift:        <><rect x="3" y="8" width="18" height="4" rx="1"/><path d="M12 8v13M5 12v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-8"/><path d="M12 8S10.5 3 8 3a2.5 2.5 0 0 0 0 5zM12 8s1.5-5 4-5a2.5 2.5 0 0 1 0 5z"/></>,
  car:         <><path d="M5 13 6.5 7.5A2 2 0 0 1 8.4 6h7.2a2 2 0 0 1 1.9 1.5L19 13"/><path d="M4 13h16a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-1v1.5a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V19H9v1.5a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V19H5a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1z"/><path d="M7 16h.01M17 16h.01"/></>,
  heart:       <path d="M12 20.3 4.6 13a4.6 4.6 0 0 1 6.5-6.5l.9.9.9-.9A4.6 4.6 0 0 1 19.4 13z"/>,
  eyeOff:      <><path d="M10.7 6.2A9 9 0 0 1 12 6c6 0 9.5 6 9.5 6a14 14 0 0 1-3 3.5M6.5 7.5A14 14 0 0 0 2.5 12s3.5 6 9.5 6a8.8 8.8 0 0 0 4-1"/><path d="m2 2 20 20M9.9 9.9a3 3 0 0 0 4.2 4.2"/></>,
  trash:       <><path d="M3 6h18M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2M5 6l1 14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2l1-14"/><path d="M10 11v6M14 11v6"/></>,
  userX:       <><circle cx="9" cy="7" r="4"/><path d="M2 21v-2a4 4 0 0 1 4-4h6a4 4 0 0 1 1 .13"/><path d="m17 8 5 5M22 8l-5 5"/></>,
  rotateCcw:   <><path d="M3 12a9 9 0 1 0 2.6-6.4L3 8"/><path d="M3 3v5h5"/></>,
  ban:         <><circle cx="12" cy="12" r="9"/><path d="m5.6 5.6 12.8 12.8"/></>,
  bookmark:    <path d="M6 3h12a1 1 0 0 1 1 1v17l-7-4-7 4V4a1 1 0 0 1 1-1z"/>,
  mail:        <><rect x="3" y="5" width="18" height="14" rx="2"/><path d="m3 7 9 6 9-6"/></>,
  clockPlus:   <><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></>,
};

function Icon({ name, size = 24, stroke = 2, fill = false, className = '', style = {} }) {
  const p = ICON_PATHS[name];
  if (!p) return null;
  return (
    <svg width={size} height={size} viewBox="0 0 24 24"
      fill={fill ? 'currentColor' : 'none'}
      stroke="currentColor" strokeWidth={stroke} strokeLinecap="round" strokeLinejoin="round"
      className={className} style={style} aria-hidden="true" focusable="false">
      {p}
    </svg>
  );
}

Object.assign(window, { Icon, ICON_PATHS });
