// ── Icon set ─────────────────────────────────────────────────────
// Minimal 24px stroke icons. `s` = stroke color, `sw` = stroke width.
function Icon({ name, size = 22, s = 'currentColor', sw = 1.8, style, fill = 'none' }) {
  const p = { fill: 'none', stroke: s, strokeWidth: sw, strokeLinecap: 'round', strokeLinejoin: 'round' };
  const paths = {
    search: <><circle cx="11" cy="11" r="7" {...p}/><path d="M20 20l-3.2-3.2" {...p}/></>,
    sliders: <><path d="M4 7h10M18 7h2M4 17h2M10 17h10" {...p}/><circle cx="16" cy="7" r="2.2" {...p}/><circle cx="8" cy="17" r="2.2" {...p}/></>,
    heart: <path d="M12 20s-7-4.6-9.2-9C1.3 8 2.6 4.6 6 4.6c2 0 3.2 1.2 4 2.3.8-1.1 2-2.3 4-2.3 3.4 0 4.7 3.4 3.2 6.4C19 15.4 12 20 12 20z" fill={fill} stroke={s} strokeWidth={sw} strokeLinejoin="round"/>,
    map: <><path d="M9 3.5L3.5 6v14.5L9 18l6 2.5 5.5-2.5V3.5L15 6 9 3.5z" {...p}/><path d="M9 3.5V18M15 6v14.5" {...p}/></>,
    grid: <><rect x="3.5" y="3.5" width="7" height="7" rx="1.5" {...p}/><rect x="13.5" y="3.5" width="7" height="7" rx="1.5" {...p}/><rect x="3.5" y="13.5" width="7" height="7" rx="1.5" {...p}/><rect x="13.5" y="13.5" width="7" height="7" rx="1.5" {...p}/></>,
    rows: <><rect x="3.5" y="4" width="17" height="6" rx="1.5" {...p}/><rect x="3.5" y="14" width="17" height="6" rx="1.5" {...p}/></>,
    play: <path d="M8 5.5v13l11-6.5-11-6.5z" fill={fill || s} stroke={s} strokeWidth={sw} strokeLinejoin="round"/>,
    reel: <><rect x="3.5" y="3.5" width="17" height="17" rx="4" {...p}/><path d="M3.5 8.5h17M9 3.7L11.5 8.5M14.5 3.6L17 8.5" {...p}/><path d="M10.5 12.2v4.6l4-2.3-4-2.3z" fill={s} stroke="none"/></>,
    bed: <><path d="M3 8v9M3 13h18v4M21 13v-2.5A2.5 2.5 0 0018.5 8H10v5" {...p}/></>,
    bath: <><path d="M4 12V6.5A2.5 2.5 0 016.5 4c1.4 0 2.5 1.1 2.5 2.5M4 12h17v1.5A4.5 4.5 0 0116.5 18h-8A4.5 4.5 0 014 13.5V12zM7 18l-1 2.5M18 18l1 2.5" {...p}/><path d="M7.2 6.4l2.4-.9" {...p}/></>,
    ruler: <><rect x="3" y="8" width="18" height="8" rx="1.5" {...p}/><path d="M7 8v3M11 8v4M15 8v3M19 8v4" {...p}/></>,
    pin: <><path d="M12 21s6-5.3 6-10A6 6 0 006 11c0 4.7 6 10 6 10z" {...p}/><circle cx="12" cy="11" r="2.2" {...p}/></>,
    chevL: <path d="M14 5l-7 7 7 7" {...p}/>,
    chevR: <path d="M9 5l7 7-7 7" {...p}/>,
    chevD: <path d="M6 9l6 6 6-6" {...p}/>,
    close: <path d="M6 6l12 12M18 6L6 18" {...p}/>,
    share: <><path d="M8.5 12.5l7-4M8.5 11.5l7 4" {...p}/><circle cx="17.5" cy="6.5" r="2.6" {...p}/><circle cx="6.5" cy="12" r="2.6" {...p}/><circle cx="17.5" cy="17.5" r="2.6" {...p}/></>,
    check: <path d="M5 12.5l4.5 4.5L19 7" {...p}/>,
    user: <><circle cx="12" cy="8.5" r="3.5" {...p}/><path d="M5 20c0-3.6 3.1-5.5 7-5.5s7 1.9 7 5.5" {...p}/></>,
    phone: <path d="M6.5 4h3l1.5 4-2 1.4a11 11 0 005.6 5.6L16 17l4 1.5v3a1.5 1.5 0 01-1.6 1.5A16 16 0 014 7.6 1.5 1.5 0 015.5 6L6.5 4z" {...p}/>,
    msg: <path d="M4 5.5h16v11H9l-4 3.5v-3.5H4v-11z" {...p}/>,
    sun: <><circle cx="12" cy="12" r="4" {...p}/><path d="M12 3v2M12 19v2M3 12h2M19 12h2M5.6 5.6l1.4 1.4M17 17l1.4 1.4M5.6 18.4L7 17M17 7l1.4-1.4" {...p}/></>,
    mute: <><path d="M4 9.5h3L11 6v12l-4-3.5H4v-5z" {...p}/><path d="M15 9.5l4 5M19 9.5l-4 5" {...p}/></>,
    sound: <><path d="M4 9.5h3L11 6v12l-4-3.5H4v-5z" {...p}/><path d="M15 8.5a5 5 0 010 7M17.5 6a8.5 8.5 0 010 12" {...p}/></>,
    plus: <path d="M12 5v14M5 12h14" {...p}/>,
    bookmark: <path d="M6 4h12v17l-6-4-6 4V4z" fill={fill} stroke={s} strokeWidth={sw} strokeLinejoin="round"/>,
    dot: <circle cx="12" cy="12" r="3" fill={s} stroke="none"/>,
    arrowUp: <path d="M12 19V6M6 11l6-6 6 6" {...p}/>,
    house: <><path d="M4 11l8-6 8 6" {...p}/><path d="M6.5 9.5V19h11V9.5" {...p}/><path d="M10 19v-5h4v5" {...p}/></>,
    building: <><rect x="5" y="3.5" width="14" height="17" rx="1.5" {...p}/><path d="M8.5 7.5h2M13.5 7.5h2M8.5 11.5h2M13.5 11.5h2M10 20.5v-4h4v4" {...p}/></>,
    store: <><path d="M4.5 9.5l1.4-5h12.2l1.4 5" {...p}/><path d="M4.5 9.5h15v1.5a3 3 0 01-6 0 3 3 0 01-6 0 3 3 0 01-3 0V9.5z" {...p}/><path d="M6 13.5V20h12v-6.5M10 20v-4.5h4V20" {...p}/></>,
    land: <><path d="M12 20v-7" {...p}/><path d="M12 13.5c0-3 2.4-4.6 5-4.6.1 3-2.3 4.6-5 4.6zM12 14c0-2.6-2.1-4-4.6-4-.1 2.6 2 4 4.6 4z" {...p}/><path d="M4 20h16" {...p}/></>,
    bell: <><path d="M6.5 10a5.5 5.5 0 0111 0c0 4.5 2 5.5 2 5.5H4.5s2-1 2-5.5z" {...p}/><path d="M10 19a2 2 0 004 0" {...p}/></>,
    lock: <><rect x="5" y="10.5" width="14" height="9.5" rx="2.5" {...p}/><path d="M8 10.5V7.5a4 4 0 018 0v3" {...p}/></>,
    theme: <><circle cx="12" cy="12" r="8" {...p}/><path d="M12 4a8 8 0 010 16z" fill={s} stroke="none"/></>,
    edit: <><path d="M5 19h3l9.5-9.5-3-3L5 16v3z" {...p}/><path d="M14.5 6.5l3 3" {...p}/></>,
    pause: <path d="M9 5v14M15 5v14" {...p}/>,
    eye: <><path d="M2.5 12s3.8-6.5 9.5-6.5S21.5 12 21.5 12 17.7 18.5 12 18.5 2.5 12 2.5 12z" {...p}/><circle cx="12" cy="12" r="2.6" {...p}/></>,
    chart: <><path d="M3 20h18" {...p}/><path d="M6.5 20v-7M12 20V5.5M17.5 20v-9.5" {...p}/></>,
    camera: <><path d="M4 8h3l1.6-2.2h6.8L17 8h3v11H4V8z" {...p}/><circle cx="12" cy="13" r="3.4" {...p}/></>,
    gear: <><circle cx="12" cy="12" r="3.2" {...p}/><path d="M12 2v3.2M12 18.8V22M22 12h-3.2M5.2 12H2M19.1 4.9l-2.3 2.3M7.2 16.8l-2.3 2.3M19.1 19.1l-2.3-2.3M7.2 7.2L4.9 4.9" {...p}/></>,
    logout: <><path d="M14 4H6v16h8" {...p}/><path d="M10 12h10M16 8l4 4-4 4" {...p}/></>,
    card: <><rect x="3" y="6" width="18" height="12" rx="2.5" {...p}/><path d="M3 10h18" {...p}/></>,
    doc: <><path d="M7 3h7l4 4v14H7V3z" {...p}/><path d="M14 3v4h4" {...p}/></>,
    globe: <><circle cx="12" cy="12" r="8" {...p}/><path d="M4 12h16M12 4c2.8 2.5 2.8 13.5 0 16M12 4c-2.8 2.5-2.8 13.5 0 16" {...p}/></>,
    calendar: <><rect x="4" y="5.5" width="16" height="15" rx="2.5" {...p}/><path d="M4 10h16M8.5 3v4M15.5 3v4" {...p}/></>,
    info: <><circle cx="12" cy="12" r="8.5" {...p}/><path d="M12 11v5M12 7.8v.2" {...p}/></>,
    help: <><circle cx="12" cy="12" r="8.5" {...p}/><path d="M9.5 9.5a2.5 2.5 0 114 2c-1 .8-1.5 1.3-1.5 2.5M12 17.2v.1" {...p}/></>,
    sparkle: <><path d="M12 4l1.6 4.4L18 10l-4.4 1.6L12 16l-1.6-4.4L6 10l4.4-1.6L12 4z" {...p}/></>,
    image: <><rect x="3.5" y="4.5" width="17" height="15" rx="2.5" {...p}/><circle cx="9" cy="10" r="1.6" {...p}/><path d="M5 18l4.5-4.5L13 17l3-3 3 3" {...p}/></>,
  };
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" style={style} aria-hidden="true">
      {paths[name]}
    </svg>
  );
}

window.Icon = Icon;
