// icons.jsx — fine-line editorial SVG icon set
// All icons: 24x24 viewBox, 1.4px stroke, currentColor, rounded caps/joins.
// Pass `size`, `className`, `style`, `strokeWidth` to override defaults.

function I({ children, size = 22, sw = 1.4, ...rest }) {
  return (
    <svg
      viewBox="0 0 24 24"
      width={size}
      height={size}
      fill="none"
      stroke="currentColor"
      strokeWidth={sw}
      strokeLinecap="round"
      strokeLinejoin="round"
      {...rest}
    >
      {children}
    </svg>
  );
}

// ───── Laser / sparkle / studio ─────
function IconLaser(p) {
  return (
    <I {...p}>
      <path d="M12 3v3M12 18v3M3 12h3M18 12h3M5.6 5.6l2 2M16.4 16.4l2 2M5.6 18.4l2-2M16.4 7.6l2-2" />
      <circle cx="12" cy="12" r="3" />
    </I>
  );
}
function IconSparkle(p) {
  return (
    <I {...p}>
      <path d="M12 3v6M12 15v6M3 12h6M15 12h6" />
      <path d="M9 9l-2-2M15 9l2-2M9 15l-2 2M15 15l2 2" opacity="0.55" />
    </I>
  );
}
function IconDiamond(p) {
  return (
    <I {...p}>
      <path d="M12 3l9 7-9 11L3 10l9-7z" />
      <path d="M3 10h18M9 10l3-7 3 7M9 10l3 11M15 10l-3 11" opacity="0.55" />
    </I>
  );
}

// ───── Care / skin / sensation ─────
function IconLeaf(p) {
  return (
    <I {...p}>
      <path d="M20 4c0 8-6 16-14 16-1.5 0-2 0-2 0s.5-7 6-12 10-4 10-4z" />
      <path d="M4 20c4-4 8-8 14-14" opacity="0.55" />
    </I>
  );
}
function IconDrop(p) {
  return (
    <I {...p}>
      <path d="M12 3c0 0-7 7-7 12a7 7 0 0014 0c0-5-7-12-7-12z" />
      <path d="M9 14a3 3 0 003 3" opacity="0.55" />
    </I>
  );
}
function IconSun(p) {
  return (
    <I {...p}>
      <circle cx="12" cy="12" r="4" />
      <path d="M12 2v2M12 20v2M4.2 4.2l1.4 1.4M18.4 18.4l1.4 1.4M2 12h2M20 12h2M4.2 19.8l1.4-1.4M18.4 5.6l1.4-1.4" />
    </I>
  );
}
function IconFeather(p) {
  return (
    <I {...p}>
      <path d="M20.5 3.5C15 4 11 8 9 13l-5 8h0c4-1 8-2 11-5 4-3 6-9 5.5-12.5z" />
      <path d="M14 9l-5 5" opacity="0.55" />
    </I>
  );
}

// ───── Process / time / map ─────
function IconCalendar(p) {
  return (
    <I {...p}>
      <rect x="3" y="5" width="18" height="16" rx="2" />
      <path d="M3 10h18M8 3v4M16 3v4" />
      <circle cx="12" cy="15" r="1" fill="currentColor" stroke="none" />
    </I>
  );
}
function IconClock(p) {
  return (
    <I {...p}>
      <circle cx="12" cy="12" r="9" />
      <path d="M12 7v5l3 2" />
    </I>
  );
}
function IconCompass(p) {
  return (
    <I {...p}>
      <circle cx="12" cy="12" r="9" />
      <path d="M15.5 8.5l-2 5-5 2 2-5z" />
    </I>
  );
}

// ───── Safety / shield / star ─────
function IconShield(p) {
  return (
    <I {...p}>
      <path d="M12 3l8 3v6c0 5-4 8-8 9-4-1-8-4-8-9V6z" />
      <path d="M9 12l2 2 4-4" />
    </I>
  );
}
function IconCheck(p) {
  return (
    <I {...p}>
      <circle cx="12" cy="12" r="9" />
      <path d="M8 12l3 3 5-6" />
    </I>
  );
}
function IconStar(p) {
  return (
    <I {...p}>
      <path d="M12 3l2.7 5.6 6.3.9-4.5 4.3 1 6.2L12 17l-5.5 3 1-6.2L3 9.5l6.3-.9z" />
    </I>
  );
}
function IconCert(p) {
  return (
    <I {...p}>
      <circle cx="12" cy="9" r="5" />
      <path d="M9 13v8l3-2 3 2v-8" />
      <path d="M10 9l1.5 1.5L14 8" />
    </I>
  );
}

// ───── Body / map zones ─────
function IconBody(p) {
  return (
    <I {...p}>
      <circle cx="12" cy="4.5" r="2" />
      <path d="M8 8h8l-1 6h-2v7h-2v-7H9z" />
    </I>
  );
}
function IconHand(p) {
  return (
    <I {...p}>
      <path d="M6 10V6a1.5 1.5 0 013 0v4M9 10V4a1.5 1.5 0 013 0v6M12 10V5a1.5 1.5 0 013 0v6M15 10V7a1.5 1.5 0 013 0v6c0 4-3 7-6 7H8c-2 0-3-1-4-3l-2-4 2-1 3 2" />
    </I>
  );
}

// ───── Contact / arrows ─────
function IconArrowRight(p) {
  return (
    <I {...p}>
      <path d="M5 12h14M13 6l6 6-6 6" />
    </I>
  );
}
function IconArrowUpRight(p) {
  return (
    <I {...p}>
      <path d="M7 17L17 7M9 7h8v8" />
    </I>
  );
}
function IconChevronDown(p) {
  return (
    <I {...p}>
      <path d="M6 9l6 6 6-6" />
    </I>
  );
}
function IconPhone(p) {
  return (
    <I {...p}>
      <path d="M5 4h3l2 5-2 1.5a11 11 0 005.5 5.5L15 14l5 2v3a2 2 0 01-2 2h-1A14 14 0 013 6V5a1 1 0 011-1z" />
    </I>
  );
}
function IconMail(p) {
  return (
    <I {...p}>
      <rect x="3" y="5" width="18" height="14" rx="2" />
      <path d="M3 7l9 6 9-6" />
    </I>
  );
}
function IconPin(p) {
  return (
    <I {...p}>
      <path d="M12 21s7-7 7-12a7 7 0 00-14 0c0 5 7 12 7 12z" />
      <circle cx="12" cy="9" r="2.5" />
    </I>
  );
}

// ───── Decoration ─────
function IconAsterisk(p) {
  return (
    <I {...p}>
      <path d="M12 3v18M3 12h18M5 5l14 14M19 5L5 19" />
    </I>
  );
}
function IconFlower(p) {
  return (
    <I {...p}>
      <circle cx="12" cy="12" r="2" />
      <path d="M12 3a4 4 0 010 8M12 13a4 4 0 010 8M3 12a4 4 0 018 0M13 12a4 4 0 018 0" />
    </I>
  );
}

// ───── Pulsing laser SVG (decorative, animated via CSS) ─────
function IconLaserPulse(p) {
  return (
    <svg viewBox="0 0 80 80" width={p.size || 80} height={p.size || 80} fill="none" {...p}>
      <circle cx="40" cy="40" r="6" fill="currentColor" />
      <circle cx="40" cy="40" r="14" stroke="currentColor" strokeWidth="1" opacity="0.5" className="laser-ring laser-ring--1" />
      <circle cx="40" cy="40" r="22" stroke="currentColor" strokeWidth="1" opacity="0.3" className="laser-ring laser-ring--2" />
      <circle cx="40" cy="40" r="32" stroke="currentColor" strokeWidth="1" opacity="0.15" className="laser-ring laser-ring--3" />
    </svg>
  );
}

// ───── Lumière logomark — radiant starlight (light source) ─────
function IconLumiere(p) {
  return (
    <I {...p} fill="none">
      <circle cx="12" cy="12" r="2.1" fill="currentColor" stroke="none" />
      <path d="M12 2.4V5.6 M12 18.4V21.6 M2.4 12H5.6 M18.4 12H21.6" />
      <path d="M6.2 6.2l1.7 1.7 M16.1 16.1l1.7 1.7 M17.8 6.2l-1.7 1.7 M6.2 17.8l1.7-1.7" opacity="0.55" />
    </I>
  );
}

function IconTrash(p) {
  return (
    <I {...p}>
      <path d="M4 7h16" />
      <path d="M9 7V5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" />
      <path d="M6.5 7l0.8 12a2 2 0 0 0 2 1.9h5.4a2 2 0 0 0 2-1.9l0.8-12" />
      <path d="M10 11v6 M14 11v6" />
    </I>
  );
}

Object.assign(window, {
  IconLaser, IconSparkle, IconDiamond, IconTrash,
  IconLeaf, IconDrop, IconSun, IconFeather,
  IconCalendar, IconClock, IconCompass,
  IconShield, IconCheck, IconStar, IconCert,
  IconBody, IconHand,
  IconArrowRight, IconArrowUpRight, IconChevronDown,
  IconPhone, IconMail, IconPin,
  IconAsterisk, IconFlower, IconLaserPulse, IconLumiere,
});
