// ─── 线性图标集（24×24, stroke=currentColor） ───
function Icon({ name, size = 22, stroke = 1.8, color = 'currentColor', fill = 'none', style = {} }) {
  const P = {
    home: 'M3 10.5L12 3l9 7.5M5 9.5V20a1 1 0 001 1h12a1 1 0 001-1V9.5',
    funnel: 'M3 5h18l-7 8v6l-4 2v-8L3 5z',
    review: 'M3 12a9 9 0 109-9 9 9 0 00-9 9zm0 0H1m2 0a9 9 0 019-9M12 7v5l3 2',
    user: 'M5 20a7 7 0 0114 0M12 11a4 4 0 100-8 4 4 0 000 8z',
    calendar: 'M3 9h18M7 3v3m10-3v3M5 5h14a1 1 0 011 1v13a1 1 0 01-1 1H5a1 1 0 01-1-1V6a1 1 0 011-1z',
    phone: 'M5 4h3l2 5-2.5 1.5a11 11 0 005 5L14 13l5 2v3a2 2 0 01-2 2A15 15 0 013 6a2 2 0 012-2z',
    phoneOff: 'M5 4h3l2 5-2.5 1.5a11 11 0 005 5L14 13l5 2v3a2 2 0 01-2 2A15 15 0 013 6a2 2 0 012-2zM3 3l18 18',
    mic: 'M12 3a3 3 0 013 3v5a3 3 0 01-6 0V6a3 3 0 013-3zM6 11a6 6 0 0012 0M12 17v4',
    mail: 'M3 6h18v12H3zM3 7l9 6 9-6',
    clock: 'M12 7v5l3 2M12 21a9 9 0 100-18 9 9 0 000 18z',
    building: 'M4 21V5a1 1 0 011-1h8a1 1 0 011 1v16M14 21V9h5a1 1 0 011 1v11M7 8h3M7 12h3M7 16h3M17 13h0M17 17h0M2 21h20',
    trend: 'M3 17l6-6 4 4 8-8M21 7v5m0-5h-5',
    check: 'M5 13l4 4L19 7',
    checkCircle: 'M9 12l2 2 4-4M12 21a9 9 0 100-18 9 9 0 000 18z',
    alert: 'M12 9v4m0 4h.01M10.3 3.9L2.4 18a2 2 0 001.7 3h15.8a2 2 0 001.7-3L13.7 3.9a2 2 0 00-3.4 0z',
    shield: 'M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6l8-3z',
    arrowUp: 'M12 19V5M5 12l7-7 7 7',
    arrowRight: 'M5 12h14M13 6l6 6-6 6',
    back: 'M19 12H5M11 6l-6 6 6 6',
    target: 'M12 21a9 9 0 100-18 9 9 0 000 18zm0-4a5 5 0 100-10 5 5 0 000 10zm0-4a1 1 0 100-2 1 1 0 000 2z',
    bolt: 'M13 2L4 14h7l-1 8 9-12h-7l1-8z',
    doc: 'M6 3h8l4 4v14a0 0 0 01-0 0H6a0 0 0 01-0-0V3zM14 3v4h4M9 13h6M9 17h6',
    flag: 'M5 21V4m0 0h11l-2 4 2 4H5',
    eye: 'M2 12s4-7 10-7 10 7 10 7-4 7-10 7-10-7-10-7zM12 15a3 3 0 100-6 3 3 0 000 6z',
    handshake: 'M12 11l2-2 3 3 4-4M3 9l4-4 5 5M3 9v4l5 5 3-3M17 12l2 2',
    chart: 'M4 20V10M10 20V4M16 20v-7M22 20H2',
    sliders: 'M4 6h10M18 6h2M4 12h2M10 12h10M4 18h12M20 18h0M14 4v4M6 10v4M16 16v4',
    play: 'M7 4l13 8-13 8V4z',
    sun: 'M12 8a4 4 0 100 8 4 4 0 000-8zM12 2v2m0 16v2M4 12H2m20 0h-2M5 5l1.5 1.5M17.5 17.5L19 19M19 5l-1.5 1.5M6.5 17.5L5 19',
    moon: 'M21 13a8 8 0 11-9-9 6.5 6.5 0 009 9z',
    bell: 'M6 9a6 6 0 1112 0c0 6 2 8 2 8H4s2-2 2-8zM10 21h4',
    search: 'M11 19a8 8 0 100-16 8 8 0 000 16zM21 21l-4.3-4.3',
    plus: 'M12 5v14M5 12h14',
    edit: 'M4 20h4L18.5 9.5a2 2 0 00-3-3L5 17v3zM13.5 6.5l3 3',
    lock: 'M6 11h12a1 1 0 011 1v8a1 1 0 01-1 1H6a1 1 0 01-1-1v-8a1 1 0 011-1zm2 0V8a4 4 0 018 0v3',
    link: 'M9 15l6-6M10.5 6.5l1.8-1.8a4 4 0 015.7 5.7l-1.8 1.8M13.5 17.5l-1.8 1.8a4 4 0 01-5.7-5.7l1.8-1.8',
    send: 'M4 12l16-8-6 16-3.5-6.5L4 12z',
    close: 'M6 6l12 12M18 6L6 18',
    paperclip: 'M21 11l-9 9a5 5 0 01-7-7l9-9a3.5 3.5 0 015 5l-9 9a2 2 0 01-3-3l8.5-8.5',
    pin: 'M12 21s7-6.5 7-12a7 7 0 10-14 0c0 5.5 7 12 7 12zM12 11a2.5 2.5 0 100-5 2.5 2.5 0 000 5z',
    message: 'M4 5h16a1 1 0 011 1v10a1 1 0 01-1 1H9l-5 4V6a1 1 0 011-1z',
    upload: 'M12 16V4m-5 5l5-5 5 5M4 20h16',
    grid: 'M4 4h7v7H4zM13 4h7v7h-7zM4 13h7v7H4zM13 13h7v7h-7z',
    users: 'M9 11a4 4 0 100-8 4 4 0 000 8zm-7 9a7 7 0 0114 0M17 11a4 4 0 000-8m5 17a7 7 0 00-5-6.7',
  };
  const fillNames = ['play'];
  const d = P[name] || '';
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill={fillNames.includes(name) ? color : fill} style={style}>
      <path d={d} stroke={fillNames.includes(name) ? 'none' : color} strokeWidth={stroke}
        strokeLinecap="round" strokeLinejoin="round" />
    </svg>
  );
}
window.Icon = Icon;
