/* Honey Scripts — Icons (inline SVG, no dependencies) */

const Icon = {
  Search: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <circle cx="11" cy="11" r="7"/><path d="m20 20-3.5-3.5"/>
    </svg>
  ),
  ChevronDown: (p) => (
    <svg viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="m6 9 6 6 6-6"/>
    </svg>
  ),
  ChevronRight: (p) => (
    <svg viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="m9 6 6 6-6 6"/>
    </svg>
  ),
  Check: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2.4" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="m5 12 5 5 9-11"/>
    </svg>
  ),
  Sun: (p) => (
    <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/>
    </svg>
  ),
  Moon: (p) => (
    <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79Z"/>
    </svg>
  ),
  Discord: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="currentColor" {...p}>
      <path d="M19.27 5.33C17.94 4.71 16.5 4.26 15 4a.09.09 0 0 0-.07.03c-.18.33-.39.76-.53 1.09a16.09 16.09 0 0 0-4.8 0c-.14-.34-.35-.76-.54-1.09-.01-.02-.04-.03-.07-.03-1.5.26-2.93.71-4.27 1.33-.01 0-.02.01-.03.02-2.72 4.07-3.47 8.03-3.1 11.95 0 .02.01.04.03.05 1.8 1.32 3.53 2.12 5.24 2.65.03.01.06 0 .07-.02.4-.55.76-1.13 1.07-1.74.02-.04 0-.08-.04-.09-.57-.22-1.11-.48-1.64-.78-.04-.02-.04-.08-.01-.11.11-.08.22-.17.33-.25.02-.02.05-.02.07-.01 3.44 1.57 7.15 1.57 10.55 0 .02-.01.05-.01.07.01.11.09.22.17.33.26.04.03.04.09-.01.11-.52.31-1.07.57-1.64.78-.04.01-.05.06-.04.09.32.61.68 1.19 1.07 1.74.03.01.06.02.09.01 1.72-.53 3.45-1.33 5.25-2.65.02-.01.03-.03.03-.05.44-4.53-.73-8.46-3.1-11.95-.01-.01-.02-.02-.04-.02ZM8.52 14.91c-1.03 0-1.89-.95-1.89-2.12s.84-2.12 1.89-2.12c1.06 0 1.9.96 1.89 2.12 0 1.17-.84 2.12-1.89 2.12Zm6.97 0c-1.03 0-1.89-.95-1.89-2.12s.84-2.12 1.89-2.12c1.06 0 1.9.96 1.89 2.12 0 1.17-.83 2.12-1.89 2.12Z"/>
    </svg>
  ),
  Globe: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18"/>
    </svg>
  ),
  Copy: (p) => (
    <svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15V5a2 2 0 0 1 2-2h10"/>
    </svg>
  ),
  Cart: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M3 4h2l2.4 12.6a2 2 0 0 0 2 1.4h7.7a2 2 0 0 0 2-1.5L21 8H6"/><circle cx="9" cy="20" r="1.5"/><circle cx="18" cy="20" r="1.5"/>
    </svg>
  ),
  Menu: (p) => (
    <svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M4 7h16M4 12h16M4 17h16"/>
    </svg>
  ),
  Close: (p) => (
    <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M6 6l12 12M18 6L6 18"/>
    </svg>
  ),
  Info: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <circle cx="12" cy="12" r="9"/><path d="M12 8h.01M11 12h1v5h1"/>
    </svg>
  ),
  Star: (p) => (
    /* Duotone star — matches the outline+soft-fill family of the product glyphs */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinejoin="round" strokeLinecap="round" {...p}>
      <path d="M12 3.2l2.62 5.32 5.88.86-4.25 4.14 1 5.86L12 16.9l-5.25 2.48 1-5.86L3.5 9.38l5.88-.86L12 3.2Z" fill="currentColor" fillOpacity="0.18"/>
    </svg>
  ),
  Warn: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M10.3 3.7 2.6 17a2 2 0 0 0 1.7 3h15.4a2 2 0 0 0 1.7-3L13.7 3.7a2 2 0 0 0-3.4 0Z"/><path d="M12 9v4M12 17h.01"/>
    </svg>
  ),
  Tip: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M9 18h6M10 22h4M12 2a7 7 0 0 0-4 12.7c.6.5 1 1.3 1 2.3h6c0-1 .4-1.8 1-2.3A7 7 0 0 0 12 2Z"/>
    </svg>
  ),
  Arrow: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M5 12h14M13 6l6 6-6 6"/>
    </svg>
  ),
  ArrowLeft: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M19 12H5M11 6l-6 6 6 6"/>
    </svg>
  ),
  Hex: (p) => (
    /* Refined hex gem — filled, with a faint inner facet line */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <defs>
        <linearGradient id="hxg" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="currentColor" stopOpacity=".85"/>
          <stop offset="100%" stopColor="currentColor" stopOpacity=".55"/>
        </linearGradient>
      </defs>
      <path d="M12 2 21 7v10l-9 5-9-5V7Z" fill="url(#hxg)"/>
      <path d="M12 2 21 7l-9 5L3 7Z" fill="currentColor" opacity=".25"/>
      <path d="M12 2 21 7v10l-9 5-9-5V7Z" fill="none" stroke="currentColor" strokeWidth=".8" opacity=".9"/>
    </svg>
  ),
  HexOutline: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinejoin="round" {...p}>
      <path d="M12 2 21 7v10l-9 5-9-5V7Z"/>
    </svg>
  ),
  Honeycomb: (p) => (
    /* Cluster of 3 small hexes */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="currentColor" {...p}>
      <path d="M8 1.5 13 4v6l-5 2.5-5-2.5V4Z" opacity=".95"/>
      <path d="M16 1.5 21 4v6l-5 2.5L11 10V4Z" opacity=".55"/>
      <path d="M12 11 17 13.5v6l-5 2.5-5-2.5v-6Z" opacity=".75"/>
    </svg>
  ),
  HoneyDrop: (p) => (
    /* Stylized honey drop with highlight */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <defs>
        <radialGradient id="hdg" cx="40%" cy="35%" r="65%">
          <stop offset="0%" stopColor="currentColor" stopOpacity="1"/>
          <stop offset="100%" stopColor="currentColor" stopOpacity=".55"/>
        </radialGradient>
      </defs>
      <path d="M12 2c-1 3-6 7-6 12a6 6 0 0 0 12 0c0-5-5-9-6-12Z" fill="url(#hdg)"/>
      <ellipse cx="9.5" cy="11" rx="1.2" ry="2.4" fill="#fff" opacity=".45"/>
    </svg>
  ),
  HexFlower: (p) => (
    /* Hex with 6 little dots, like a honeycomb cell with pollen */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="currentColor" {...p}>
      <path d="M12 3 19 7v10l-7 4-7-4V7Z" opacity=".25"/>
      <path d="M12 3 19 7v10l-7 4-7-4V7Z" fill="none" stroke="currentColor" strokeWidth="1.4"/>
      <circle cx="12" cy="12" r="1.6"/>
      <circle cx="12" cy="6.5"  r=".9" opacity=".85"/>
      <circle cx="12" cy="17.5" r=".9" opacity=".85"/>
      <circle cx="7.3" cy="9"   r=".9" opacity=".85"/>
      <circle cx="16.7" cy="9"  r=".9" opacity=".85"/>
      <circle cx="7.3" cy="15"  r=".9" opacity=".85"/>
      <circle cx="16.7" cy="15" r=".9" opacity=".85"/>
    </svg>
  ),
  Bee: (p) => (
    /* Tiny abstract bee mark — body + wings */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <ellipse cx="12" cy="14" rx="5.5" ry="6" fill="currentColor"/>
      <path d="M12 9v10" stroke="#1a1100" strokeWidth="1.4" opacity=".7"/>
      <path d="M9.5 11.5h5M9 14.5h6M9.5 17.5h5" stroke="#1a1100" strokeWidth="1.2" opacity=".7"/>
      <ellipse cx="6.5" cy="10" rx="3" ry="2" fill="currentColor" opacity=".55"/>
      <ellipse cx="17.5" cy="10" rx="3" ry="2" fill="currentColor" opacity=".55"/>
      <circle cx="10.5" cy="6.5" r="1.1" fill="currentColor"/>
      <circle cx="13.5" cy="6.5" r="1.1" fill="currentColor"/>
    </svg>
  ),
  HexJar: (p) => (
    /* Hex with a horizontal "honey-fill" line — wordless brand mark */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <defs>
        <clipPath id="hxjc"><path d="M12 2.5 20.5 7.25v9.5L12 21.5 3.5 16.75v-9.5Z"/></clipPath>
      </defs>
      <path d="M12 2.5 20.5 7.25v9.5L12 21.5 3.5 16.75v-9.5Z" fill="currentColor" opacity=".18"/>
      <g clipPath="url(#hxjc)">
        <rect x="0" y="13" width="24" height="11" fill="currentColor" opacity=".85"/>
      </g>
      <path d="M12 2.5 20.5 7.25v9.5L12 21.5 3.5 16.75v-9.5Z" fill="none" stroke="currentColor" strokeWidth="1.3"/>
    </svg>
  ),
  HexPrism: (p) => (
    /* Hex with two visible facets — 3D prism feel */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <path d="M12 2 21 7v10l-9 5-9-5V7Z" fill="currentColor" opacity=".35"/>
      <path d="M12 2 21 7l-9 5V2Z" fill="currentColor" opacity=".95"/>
      <path d="M12 12 21 7v10l-9 5Z" fill="currentColor" opacity=".65"/>
      <path d="M12 2 21 7v10l-9 5-9-5V7Z" fill="none" stroke="currentColor" strokeWidth=".9"/>
      <path d="M12 2v10M3 7l9 5 9-5" stroke="currentColor" strokeWidth=".9" fill="none" opacity=".55"/>
    </svg>
  ),
  HexRing: (p) => (
    /* Concentric hexes — outer ring, inner hole */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="currentColor" {...p}>
      <path
        fillRule="evenodd"
        d="M12 2 21 7v10l-9 5-9-5V7Zm0 4.5L7.5 9.25v5.5L12 17.5l4.5-2.75v-5.5Z"
        opacity=".95"
      />
    </svg>
  ),
  HexStack: (p) => (
    /* Two overlapping hexes — depth / layered */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="currentColor" {...p}>
      <path d="M14.5 5 22 9.25v8.5L14.5 22 7 17.75v-8.5Z" opacity=".35"/>
      <path d="M9.5 2 17 6.25v8.5L9.5 19 2 14.75v-8.5Z" opacity=".95"/>
      <path d="M9.5 2 17 6.25v8.5L9.5 19 2 14.75v-8.5Z" fill="none" stroke="currentColor" strokeWidth=".7"/>
    </svg>
  ),
  HexSpark: (p) => (
    /* Hex with a soft radial glow — jewel-like */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <defs>
        <radialGradient id="hxsg" cx="40%" cy="30%" r="80%">
          <stop offset="0%" stopColor="#ffffff" stopOpacity=".55"/>
          <stop offset="35%" stopColor="currentColor" stopOpacity=".95"/>
          <stop offset="100%" stopColor="currentColor" stopOpacity=".45"/>
        </radialGradient>
      </defs>
      <path d="M12 2 21 7v10l-9 5-9-5V7Z" fill="url(#hxsg)"/>
      <path d="M12 2 21 7v10l-9 5-9-5V7Z" fill="none" stroke="currentColor" strokeWidth=".8" opacity=".9"/>
      <circle cx="8.6" cy="8.4" r="1.4" fill="#fff" opacity=".45"/>
    </svg>
  ),
  HexGrid: (p) => (
    /* Tight 2x2 honeycomb forming a bigger hex — modern, geometric */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="currentColor" {...p}>
      <path d="M8 2.5 12 4.75v4.5L8 11.5 4 9.25v-4.5Z" opacity=".95"/>
      <path d="M16 2.5 20 4.75v4.5L16 11.5 12 9.25v-4.5Z" opacity=".55"/>
      <path d="M8 12.5 12 14.75v4.5L8 21.5 4 19.25v-4.5Z" opacity=".55"/>
      <path d="M16 12.5 20 14.75v4.5L16 21.5 12 19.25v-4.5Z" opacity=".85"/>
    </svg>
  ),
  HexBolt: (p) => (
    /* Hex with a dot in the centre — like a bolt head, structural */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <path d="M12 2 21 7v10l-9 5-9-5V7Z" fill="currentColor" opacity=".22"/>
      <path d="M12 2 21 7v10l-9 5-9-5V7Z" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinejoin="round"/>
      <circle cx="12" cy="12" r="2.4" fill="currentColor"/>
    </svg>
  ),
  HexCut: (p) => (
    /* Geometric diamond-cut hex — diagonal facet lines */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="currentColor" {...p}>
      <path d="M12 2 21 7v10l-9 5-9-5V7Z" opacity=".25"/>
      <path d="M12 2 21 7v10l-9 5-9-5V7Z" fill="none" stroke="currentColor" strokeWidth="1.2"/>
      <path d="M3 7l9 5M21 7l-9 5M12 12v10" stroke="currentColor" strokeWidth="1.2" opacity=".75"/>
    </svg>
  ),
  Shield: (p) => (
    /* Lock-shield — used for the Asset Escrow item */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <path d="M12 2 4 5v6c0 5 3.4 8.8 8 11 4.6-2.2 8-6 8-11V5l-8-3Z" fill="currentColor" opacity=".22"/>
      <path d="M12 2 4 5v6c0 5 3.4 8.8 8 11 4.6-2.2 8-6 8-11V5l-8-3Z" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinejoin="round"/>
      <rect x="9" y="11" width="6" height="5" rx="1" fill="currentColor"/>
      <path d="M10 11V9.5a2 2 0 0 1 4 0V11" fill="none" stroke="currentColor" strokeWidth="1.3"/>
    </svg>
  ),
  AlertCircle: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <circle cx="12" cy="12" r="9"/><path d="M12 8v5M12 16h.01"/>
    </svg>
  ),
  BeeLine: (p) => (
    /* Set-1 #5 — line-art bee silhouette, used for "coming soon" scripts */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <ellipse cx="12" cy="14" rx="5" ry="6" fill="currentColor" fillOpacity="0.18"/>
      <ellipse cx="12" cy="14" rx="5" ry="6" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinejoin="round"/>
      <path d="M7.7 12.6h8.6M7.4 15.7h9.2" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round"/>
      <ellipse cx="7" cy="10.5" rx="3" ry="2" fill="none" stroke="currentColor" strokeWidth="1.6"/>
      <ellipse cx="17" cy="10.5" rx="3" ry="2" fill="none" stroke="currentColor" strokeWidth="1.6"/>
      <path d="M10.5 8 9.5 5M13.5 8l1-3" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round"/>
    </svg>
  ),
  Padlock: (p) => (
    /* Set-2 #1 — closed padlock, used for FiveM Asset Escrow */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <rect x="5" y="11" width="14" height="10" rx="2" fill="currentColor" fillOpacity="0.18"/>
      <rect x="5" y="11" width="14" height="10" rx="2" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinejoin="round"/>
      <path d="M8 11V8a4 4 0 0 1 8 0v3" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round"/>
      <circle cx="12" cy="16" r="1.4" fill="currentColor"/>
    </svg>
  ),

  /* ── Radio / audio themed marks ─────────────────────────────────────── */
  Walkie: (p) => (
    /* Classic handheld walkie-talkie silhouette */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <rect x="6" y="6" width="12" height="15" rx="2" fill="currentColor" opacity=".22"/>
      <rect x="6" y="6" width="12" height="15" rx="2" fill="none" stroke="currentColor" strokeWidth="1.4"/>
      <path d="M10 3h4v3h-4z" fill="currentColor"/>
      <rect x="8.5" y="8.5" width="7" height="3" rx=".5" fill="currentColor" opacity=".7"/>
      <circle cx="9.5" cy="14" r=".9" fill="currentColor"/>
      <circle cx="12" cy="14" r=".9" fill="currentColor"/>
      <circle cx="14.5" cy="14" r=".9" fill="currentColor"/>
      <circle cx="9.5" cy="16.5" r=".9" fill="currentColor"/>
      <circle cx="12" cy="16.5" r=".9" fill="currentColor"/>
      <circle cx="14.5" cy="16.5" r=".9" fill="currentColor"/>
    </svg>
  ),
  WalkieRound: (p) => (
    /* Rounded modern walkie with antenna + PTT */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinejoin="round" {...p}>
      <path d="M16 4 19 2l1 1-2 3"/>
      <rect x="6" y="5" width="10" height="16" rx="3"/>
      <rect x="8" y="7.5" width="6" height="3" rx=".6" fill="currentColor" opacity=".25"/>
      <circle cx="9.5" cy="14" r=".9" fill="currentColor"/>
      <circle cx="12.5" cy="14" r=".9" fill="currentColor"/>
      <circle cx="9.5" cy="17" r=".9" fill="currentColor"/>
      <circle cx="12.5" cy="17" r=".9" fill="currentColor"/>
    </svg>
  ),
  Mic: (p) => (
    /* Classic vocal microphone (handheld) */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <rect x="9" y="2.5" width="6" height="11" rx="3" fill="currentColor" opacity=".22"/>
      <rect x="9" y="2.5" width="6" height="11" rx="3"/>
      <path d="M6 11a6 6 0 0 0 12 0M12 17v4M9 21h6"/>
    </svg>
  ),
  MicStudio: (p) => (
    /* Condenser / studio mic with shock-mount stripes */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <rect x="8.5" y="2.5" width="7" height="13" rx="3.5" fill="currentColor" opacity=".22"/>
      <rect x="8.5" y="2.5" width="7" height="13" rx="3.5" fill="none" stroke="currentColor" strokeWidth="1.4"/>
      <path d="M10 5h4M10 8h4M10 11h4" stroke="currentColor" strokeWidth="1" opacity=".7"/>
      <path d="M12 16v3M9 19h6" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" fill="none"/>
    </svg>
  ),
  Headset: (p) => (
    /* Over-ear headset with mic boom */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M4 14v-2a8 8 0 0 1 16 0v2"/>
      <rect x="3" y="13" width="4" height="6" rx="1.2" fill="currentColor" opacity=".3"/>
      <rect x="17" y="13" width="4" height="6" rx="1.2" fill="currentColor" opacity=".3"/>
      <path d="M19 19v1a2 2 0 0 1-2 2h-3"/>
      <circle cx="13" cy="22" r=".9" fill="currentColor"/>
    </svg>
  ),
  Waves: (p) => (
    /* Three radial signal arcs */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" {...p}>
      <circle cx="12" cy="18" r="1.6" fill="currentColor"/>
      <path d="M8 14a5.7 5.7 0 0 1 8 0"/>
      <path d="M5 11a10 10 0 0 1 14 0"/>
      <path d="M2 8a14 14 0 0 1 20 0"/>
    </svg>
  ),
  Antenna: (p) => (
    /* Broadcast tower with side waves */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M12 6v15"/>
      <path d="M9 21h6M10 17h4"/>
      <circle cx="12" cy="5" r="1.5" fill="currentColor"/>
      <path d="M7 4a7 7 0 0 0 0 4"/>
      <path d="M17 4a7 7 0 0 1 0 4"/>
      <path d="M4.5 2.5a10 10 0 0 0 0 7"/>
      <path d="M19.5 2.5a10 10 0 0 1 0 7"/>
    </svg>
  ),
  Bars: (p) => (
    /* Equalizer / signal bars */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="currentColor" {...p}>
      <rect x="3" y="14" width="3" height="7" rx="1"/>
      <rect x="8" y="10" width="3" height="11" rx="1" opacity=".85"/>
      <rect x="13" y="6" width="3" height="15" rx="1" opacity=".7"/>
      <rect x="18" y="3" width="3" height="18" rx="1" opacity=".55"/>
    </svg>
  ),
  Speaker: (p) => (
    /* Round speaker grille / dial */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <circle cx="12" cy="12" r="9" fill="currentColor" opacity=".18"/>
      <circle cx="12" cy="12" r="9" fill="none" stroke="currentColor" strokeWidth="1.4"/>
      <circle cx="12" cy="12" r="3.4" fill="currentColor"/>
      <circle cx="12" cy="12" r="3.4" fill="none" stroke="currentColor" strokeWidth="0.6" opacity=".4"/>
      <circle cx="12" cy="4" r=".8" fill="currentColor"/>
      <circle cx="12" cy="20" r=".8" fill="currentColor"/>
      <circle cx="4" cy="12" r=".8" fill="currentColor"/>
      <circle cx="20" cy="12" r=".8" fill="currentColor"/>
    </svg>
  ),
  Broadcast: (p) => (
    /* Central dot + radiating arcs in both directions */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" {...p}>
      <circle cx="12" cy="12" r="1.8" fill="currentColor"/>
      <path d="M7.5 7.5a6 6 0 0 0 0 9M16.5 7.5a6 6 0 0 1 0 9"/>
      <path d="M4.5 4.5a10 10 0 0 0 0 15M19.5 4.5a10 10 0 0 1 0 15"/>
    </svg>
  ),
  Dial: (p) => (
    /* Tuning dial — circle with notch + tick marks */
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <circle cx="12" cy="12" r="8.5" fill="currentColor" opacity=".18"/>
      <circle cx="12" cy="12" r="8.5" fill="none" stroke="currentColor" strokeWidth="1.4"/>
      <path d="M12 12 12 6" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round"/>
      <circle cx="12" cy="12" r="1.4" fill="currentColor"/>
      <path d="M12 3v1.5M12 19.5V21M3 12h1.5M19.5 12H21M5.6 5.6l1 1M17.4 17.4l1 1M5.6 18.4l1-1M17.4 6.6l1-1" stroke="currentColor" strokeWidth="1" opacity=".7"/>
    </svg>
  ),
  External: (p) => (
    <svg viewBox="0 0 24 24" width="11" height="11" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M14 4h6v6M10 14 20 4M19 13v6a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h6"/>
    </svg>
  ),
  Shield: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinejoin="round" {...p}>
      <path d="M12 2 4 5v6c0 5 3.4 8.6 8 11 4.6-2.4 8-6 8-11V5l-8-3Z" fill="currentColor" fillOpacity=".22"/>
      <path d="M12 2 4 5v6c0 5 3.4 8.6 8 11 4.6-2.4 8-6 8-11V5l-8-3Z"/>
      <path d="m9 12 2 2 4-4" strokeWidth="1.8"/>
    </svg>
  ),

  /* ── TextUI 3D candidate marks ──────────────────────────────────────── */

  /* Option A — Tooltip bubble with a stem (the classic "floating label") */
  TextuiBubble: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <path d="M4 5h16a1.5 1.5 0 0 1 1.5 1.5v8A1.5 1.5 0 0 1 20 16h-6.2l-2.6 3.2a.6.6 0 0 1-1 0L7.6 16H4a1.5 1.5 0 0 1-1.5-1.5v-8A1.5 1.5 0 0 1 4 5Z"
            fill="currentColor" fillOpacity=".22" stroke="currentColor" strokeWidth="1.4" strokeLinejoin="round"/>
      <path d="M7 9.5h10M7 12h6" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round"/>
    </svg>
  ),

  /* Option B — Map pin / location marker (anchors prompts in the world) */
  TextuiPin: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <path d="M12 2.5c-3.9 0-7 3-7 6.7 0 5 7 12.3 7 12.3s7-7.3 7-12.3c0-3.7-3.1-6.7-7-6.7Z"
            fill="currentColor" fillOpacity=".22" stroke="currentColor" strokeWidth="1.5" strokeLinejoin="round"/>
      <circle cx="12" cy="9.3" r="2.6" fill="currentColor"/>
    </svg>
  ),

  /* Option C — Isometric cube (the "3D" in TextUI 3D) */
  TextuiCube: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinejoin="round" strokeLinecap="round" {...p}>
      <path d="M12 3 3.5 7.5v9L12 21l8.5-4.5v-9L12 3Z" fill="currentColor" fillOpacity=".18"/>
      <path d="M3.5 7.5 12 12l8.5-4.5M12 12v9"/>
    </svg>
  ),

  /* Option D — Keyboard key chip with an "E" (press-to-interact) */
  TextuiKey: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <rect x="3" y="5" width="18" height="14" rx="3" fill="currentColor" fillOpacity=".22" stroke="currentColor" strokeWidth="1.5"/>
      <path d="M9.5 8.8h5M9.5 12h4M9.5 15.2h5" stroke="currentColor" strokeWidth="1.7" strokeLinecap="round" fill="none"/>
    </svg>
  ),

  /* Option E — Tag / label (clean "tag this spot") */
  TextuiTag: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <path d="M3 11.5V4.5A1.5 1.5 0 0 1 4.5 3h7a1.5 1.5 0 0 1 1.06.44l8 8a1.5 1.5 0 0 1 0 2.12l-7 7a1.5 1.5 0 0 1-2.12 0l-8-8A1.5 1.5 0 0 1 3 11.5Z"
            fill="currentColor" fillOpacity=".22" stroke="currentColor" strokeWidth="1.5" strokeLinejoin="round"/>
      <circle cx="7.8" cy="7.8" r="1.6" fill="currentColor"/>
    </svg>
  ),

  /* Option F — Radar / target (interaction point with rings) */
  TextuiRadar: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" {...p}>
      <circle cx="12" cy="12" r="9" opacity=".4"/>
      <circle cx="12" cy="12" r="5.5" opacity=".7"/>
      <circle cx="12" cy="12" r="2" fill="currentColor" stroke="none"/>
    </svg>
  ),

  /* Option G — Floating "Aa" letter card (literal text UI) */
  TextuiAa: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <rect x="3" y="4.5" width="18" height="13" rx="2.4" fill="currentColor" fillOpacity=".22" stroke="currentColor" strokeWidth="1.5"/>
      <path d="M8 14V9.5a1.5 1.5 0 0 1 3 0V14M8 12.2h3" stroke="currentColor" strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round" fill="none"/>
      <path d="M13.8 14a2 2 0 1 1 2.4-2v2M16.2 12.4h-1.6" stroke="currentColor" strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round" fill="none"/>
      <path d="M10 20l2-2 2 2" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" fill="none"/>
    </svg>
  ),

  /* Option H — Hover marker (dot with two radiating arcs above ground) */
  TextuiHover: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" {...p}>
      <path d="M5 18c2-1 4.5-1.5 7-1.5s5 .5 7 1.5"/>
      <circle cx="12" cy="9" r="2.2" fill="currentColor" stroke="none"/>
      <path d="M7.5 9a4.5 4.5 0 0 1 9 0M5.5 9a6.5 6.5 0 0 1 13 0" opacity=".55"/>
    </svg>
  ),

  /* OutfitBag — duffel / outfit bag with handles (used for Honey OutfitBag) */
  OutfitBag: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" {...p}>
      {/* Handles */}
      <path d="M9 6.5c0-1.4 1.2-2.5 3-2.5s3 1.1 3 2.5V8"/>
      {/* Bag body */}
      <path d="M3.5 9.5C3.5 8.7 4.2 8 5 8h14c.8 0 1.5.7 1.5 1.5v8c0 1.4-1.1 2.5-2.5 2.5H6c-1.4 0-2.5-1.1-2.5-2.5v-8Z"
            fill="currentColor" fillOpacity=".18"/>
      {/* Center seam / tag */}
      <path d="M10.5 12.5h3" strokeWidth="1.8"/>
      <path d="M3.5 13h17" opacity=".55"/>
    </svg>
  ),

  /* Package — closed 3D box, used for dependency / requirement cards */
  Package: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M3.3 7.3 12 3l8.7 4.3v9.4L12 21l-8.7-4.3V7.3Z" fill="currentColor" fillOpacity=".18"/>
      <path d="m3.3 7.3 8.7 4.4 8.7-4.4M12 11.7V21" opacity=".9"/>
      <path d="m7.5 5.2 8.8 4.4" opacity=".55"/>
    </svg>
  ),

  /* Elevator — shaft frame with up/down arrows (used for Honey Elevators) */
  Elevator: (p) => (
    <svg viewBox="0 0 24 24" width="14" height="14" {...p}>
      <rect x="4" y="3" width="16" height="18" rx="2.2" fill="currentColor" fillOpacity=".18" stroke="currentColor" strokeWidth="1.5"/>
      <path d="M12 3v18" stroke="currentColor" strokeWidth="1.2" opacity=".55"/>
      <path d="M8.4 10 7 11.6h2.8L8.4 10ZM8.4 14l-1.4-1.6h2.8L8.4 14Z" fill="currentColor"/>
      <path d="M15.6 10 14.2 11.6h2.8L15.6 10ZM15.6 14l-1.4-1.6h2.8L15.6 14Z" fill="currentColor"/>
    </svg>
  ),

  /* ── Search-result kind markers ─────────────────────────────────────── */
  Hash: (p) => (
    /* Section / heading anchor */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M9 4 7 20M17 4l-2 16M5 9h15M4 15h15"/>
    </svg>
  ),
  Text: (p) => (
    /* Body text passage */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <path d="M5 6h14M5 11h14M5 16h9"/>
    </svg>
  ),
  Terminal: (p) => (
    /* Code / command snippet */
    <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}>
      <rect x="3" y="4" width="18" height="16" rx="2.2"/><path d="m7 9 3 3-3 3M13 15h4"/>
    </svg>
  ),
};

window.Icon = Icon;

/* Brand glyph — swappable mark used in sidebar/search/dep cards.
   Pick via Tweaks; persists to localStorage. */
const BRAND_GLYPHS = {
  /* Radio & audio (defaults for Honey Radio) */
  walkie:     "Walkie",
  walkieR:    "WalkieRound",
  mic:        "Mic",
  micStudio:  "MicStudio",
  headset:    "Headset",
  waves:      "Waves",
  antenna:    "Antenna",
  bars:       "Bars",
  speaker:    "Speaker",
  broadcast:  "Broadcast",
  dial:       "Dial",
  /* Geometric / honey themed */
  hex:     "Hex",
  outline: "HexOutline",
  prism:   "HexPrism",
  ring:    "HexRing",
  stack:   "HexStack",
  spark:   "HexSpark",
  bolt:    "HexBolt",
  cut:     "HexCut",
  grid:    "HexGrid",
  comb:    "Honeycomb",
  jar:     "HexJar",
  flower:  "HexFlower",
  drop:    "HoneyDrop",
  bee:     "Bee",
};
window.BRAND_GLYPH_KEYS = Object.keys(BRAND_GLYPHS);

let _glyph = (typeof localStorage !== "undefined" && localStorage.getItem("hs.glyph")) || "mic";
const _glyphSubs = new Set();
window.getBrandGlyph = () => _glyph;
window.setBrandGlyph = (g) => {
  if (!BRAND_GLYPHS[g]) return;
  _glyph = g;
  try { localStorage.setItem("hs.glyph", g); } catch {}
  _glyphSubs.forEach(fn => fn(g));
};

function BrandIcon(props) {
  const [g, setG] = React.useState(_glyph);
  React.useEffect(() => {
    _glyphSubs.add(setG);
    return () => { _glyphSubs.delete(setG); };
  }, []);
  const Cmp = Icon[BRAND_GLYPHS[g]] || Icon.Hex;
  return <Cmp {...props}/>;
}
window.BrandIcon = BrandIcon;
