// icons.jsx — Custom SVG icon set (stroke-based, monoline)
// All icons take width/height/className/style; default 18px

const Ic = {};
const mk = (name, paths, opts = {}) => {
  Ic[name] = ({ size = 18, className = "", style, color }) => (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none"
      stroke={color || "currentColor"} strokeWidth={opts.sw || 1.7}
      strokeLinecap="round" strokeLinejoin="round"
      className={"ic ic-" + name + (className ? " " + className : "")} style={style}>{paths}</svg>
  );
};

mk("home", <>
  <path d="M3 11l9-8 9 8v9a2 2 0 0 1-2 2h-4v-7h-6v7H5a2 2 0 0 1-2-2v-9z"/>
</>);
mk("chat", <>
  <path d="M21 12a8 8 0 1 1-3.5-6.6L21 4l-1.4 3.5A7.96 7.96 0 0 1 21 12z"/>
  <circle cx="9" cy="12" r="0.6" fill="currentColor"/>
  <circle cx="13" cy="12" r="0.6" fill="currentColor"/>
  <circle cx="17" cy="12" r="0.6" fill="currentColor"/>
</>);
mk("scale", <>
  <path d="M12 4v16M5 7h14"/>
  <path d="M5 7l-2.5 6a3 3 0 0 0 5 0L5 7zM19 7l-2.5 6a3 3 0 0 0 5 0L19 7z"/>
  <path d="M8 20h8"/>
</>);
mk("microscope", <>
  <path d="M6 18h12"/>
  <path d="M10 6l4-2 4 8-4 2-4-8z"/>
  <path d="M9 15a4 4 0 1 0 6 0"/>
  <path d="M8 13l1-2"/>
</>);
mk("gavel", <>
  <path d="M14 4l6 6-3 3-6-6z"/>
  <path d="M11 7l-7 7 3 3 7-7"/>
  <path d="M3 20h12"/>
</>);
mk("group", <>
  <circle cx="9" cy="9" r="3"/>
  <circle cx="17" cy="10" r="2.5"/>
  <path d="M3 20c0-3 2.7-5 6-5s6 2 6 5"/>
  <path d="M14 14c2.5 0 7 1.5 7 5"/>
</>);
mk("shieldAlert", <>
  <path d="M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6l8-3z"/>
  <path d="M12 8v5M12 16h.01"/>
</>);
mk("doc", <>
  <path d="M7 3h7l5 5v13H7z"/>
  <path d="M14 3v5h5"/>
  <path d="M10 12h7M10 16h7M10 8h2"/>
</>);
mk("docEdit", <>
  <path d="M7 3h7l5 5v8"/>
  <path d="M14 3v5h5"/>
  <path d="M13 18l5-5 3 3-5 5h-3v-3z"/>
  <path d="M10 12h4"/>
</>);
mk("calc", <>
  <rect x="5" y="3" width="14" height="18" rx="2"/>
  <rect x="8" y="6" width="8" height="3"/>
  <circle cx="9" cy="13" r="0.6" fill="currentColor"/>
  <circle cx="12" cy="13" r="0.6" fill="currentColor"/>
  <circle cx="15" cy="13" r="0.6" fill="currentColor"/>
  <circle cx="9" cy="16" r="0.6" fill="currentColor"/>
  <circle cx="12" cy="16" r="0.6" fill="currentColor"/>
  <circle cx="15" cy="16" r="0.6" fill="currentColor"/>
  <circle cx="9" cy="19" r="0.6" fill="currentColor"/>
  <circle cx="12" cy="19" r="0.6" fill="currentColor"/>
  <circle cx="15" cy="19" r="0.6" fill="currentColor"/>
</>);
mk("shield", <>
  <path d="M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6l8-3z"/>
</>);
mk("shieldCheck", <>
  <path d="M12 3l8 3v6c0 5-3.5 8-8 9-4.5-1-8-4-8-9V6l8-3z"/>
  <path d="M8.5 12l2.5 2.5L16 10"/>
</>);
mk("heart", <>
  <path d="M12 20s-7-4.5-7-10a4 4 0 0 1 7-2.5A4 4 0 0 1 19 10c0 5.5-7 10-7 10z"/>
</>);
mk("clock", <>
  <circle cx="12" cy="12" r="9"/>
  <path d="M12 7v5l3 2"/>
</>);
mk("mic", <>
  <rect x="9" y="3" width="6" height="11" rx="3"/>
  <path d="M5 11a7 7 0 0 0 14 0"/>
  <path d="M12 18v3M9 21h6"/>
</>);
mk("video", <>
  <rect x="3" y="6" width="13" height="12" rx="2"/>
  <path d="M16 10l5-3v10l-5-3z"/>
</>);
mk("cap", <>
  <path d="M2 9l10-5 10 5-10 5L2 9z"/>
  <path d="M6 11v5c0 1.5 3 3 6 3s6-1.5 6-3v-5"/>
  <path d="M22 9v6"/>
</>);
mk("building", <>
  <path d="M4 21V5l8-2v18"/>
  <path d="M12 8h7v13"/>
  <path d="M7 8h.01M7 12h.01M7 16h.01M15 12h.01M15 16h.01"/>
</>);
mk("chip", <>
  <rect x="6" y="6" width="12" height="12" rx="2"/>
  <rect x="9" y="9" width="6" height="6"/>
  <path d="M9 3v3M12 3v3M15 3v3M9 18v3M12 18v3M15 18v3M3 9h3M3 12h3M3 15h3M18 9h3M18 12h3M18 15h3"/>
</>);
mk("settings", <>
  <circle cx="12" cy="12" r="3"/>
  <path d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3h.1a1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8v.1a1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"/>
</>);
mk("folder", <>
  <path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7z"/>
</>);
mk("plus", <>
  <path d="M12 5v14M5 12h14"/>
</>);
mk("user", <>
  <circle cx="12" cy="8" r="4"/>
  <path d="M4 21c0-4 4-7 8-7s8 3 8 7"/>
</>);
mk("bell", <>
  <path d="M6 10a6 6 0 1 1 12 0c0 5 2 7 2 7H4s2-2 2-7z"/>
  <path d="M10 21a2 2 0 0 0 4 0"/>
</>);
mk("mail", <>
  <rect x="3" y="5" width="18" height="14" rx="2"/>
  <path d="M3 7l9 7 9-7"/>
</>);
mk("mapPin", <>
  <path d="M12 21s7-5.2 7-11a7 7 0 1 0-14 0c0 5.8 7 11 7 11z"/>
  <circle cx="12" cy="10" r="2.5"/>
</>);
mk("cal", <>
  <rect x="3" y="5" width="18" height="16" rx="2"/>
  <path d="M3 10h18M8 3v4M16 3v4"/>
</>);
mk("moon", <>
  <path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"/>
</>);
mk("sun", <>
  <circle cx="12" cy="12" r="4"/>
  <path d="M12 2v2M12 20v2M2 12h2M20 12h2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/>
</>);
mk("speaker", <>
  <path d="M11 5L6 9H3v6h3l5 4V5z"/>
  <path d="M16 8a5 5 0 0 1 0 8M19 5a9 9 0 0 1 0 14"/>
</>);
mk("speakerMute", <>
  <path d="M11 5L6 9H3v6h3l5 4V5z"/>
  <path d="M22 9l-6 6M16 9l6 6"/>
</>);
mk("search", <>
  <circle cx="11" cy="11" r="7"/>
  <path d="M21 21l-5-5"/>
</>);
mk("chevR", <><path d="M9 6l6 6-6 6"/></>);
mk("chevL", <><path d="M15 6l-6 6 6 6"/></>);
mk("close", <><path d="M6 6l12 12M18 6L6 18"/></>);
mk("minus", <><path d="M5 12h14"/></>);
mk("expand", <><path d="M4 4h6M4 4v6M20 20h-6M20 20v-6M4 20l7-7M20 4l-7 7"/></>);
mk("coin", <>
  <circle cx="12" cy="12" r="9"/>
  <path d="M14 8h-3a2 2 0 0 0 0 4h2a2 2 0 0 1 0 4H10M12 6v2M12 16v2"/>
</>);
mk("handshake", <>
  <path d="M9 11l-4-4-2 2 6 6 2-2"/>
  <path d="M14 7l3-3 4 4-3 3"/>
  <path d="M11 13l3 3 4-4-3-3"/>
  <path d="M13 15l-2 2"/>
</>);
mk("briefcase", <>
  <rect x="3" y="7" width="18" height="13" rx="2"/>
  <path d="M9 7V5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2"/>
  <path d="M3 13h18"/>
</>);
mk("barchart", <>
  <path d="M4 20V10M9 20V4M14 20v-7M19 20V8"/>
</>);
mk("megaphone", <>
  <path d="M3 11v2a2 2 0 0 0 2 2h1l4 4V7L6 11H5a2 2 0 0 0-2 0z"/>
  <path d="M10 7l10-3v16l-10-3z"/>
  <path d="M16 12h2"/>
</>);
mk("idcard", <>
  <rect x="3" y="5" width="18" height="14" rx="2"/>
  <circle cx="9" cy="12" r="2.5"/>
  <path d="M4.5 17c.8-1.5 2.5-2.5 4.5-2.5s3.7 1 4.5 2.5"/>
  <path d="M15 10h4M15 13h3"/>
</>);
mk("magnifier", <>
  <circle cx="11" cy="11" r="7"/>
  <path d="M21 21l-5-5M9 11h4M11 9v4"/>
</>);
mk("scroll", <>
  <path d="M6 4h11a3 3 0 0 1 3 3v11a3 3 0 0 1-3 3H6"/>
  <path d="M4 7v11a3 3 0 0 0 3 3"/>
  <path d="M9 9h7M9 13h7M9 17h5"/>
</>);
mk("trending", <>
  <path d="M3 17l6-6 4 4 8-9"/>
  <path d="M14 6h7v7"/>
</>);
mk("store", <>
  <path d="M3 7l1-3h16l1 3v2a3 3 0 0 1-6 0 3 3 0 0 1-6 0 3 3 0 0 1-6 0V7z"/>
  <path d="M4 11v9h16v-9"/>
  <path d="M9 20v-5h6v5"/>
</>);
mk("leaf", <>
  <path d="M5 19c0-9 7-15 16-15-1 9-6 16-15 16-1-1-1-1-1-1z"/>
  <path d="M5 19c4-4 8-7 14-10"/>
</>);
mk("card", <>
  <rect x="3" y="6" width="18" height="12" rx="2"/>
  <path d="M3 10h18M7 15h3"/>
</>);
mk("lifebuoy", <>
  <circle cx="12" cy="12" r="9"/>
  <circle cx="12" cy="12" r="3.5"/>
  <path d="M5 5l4.5 4.5M14.5 14.5L19 19M19 5l-4.5 4.5M9.5 14.5L5 19"/>
</>);
mk("bot", <>
  <rect x="5" y="7" width="14" height="12" rx="3"/>
  <circle cx="9" cy="13" r="1.2" fill="currentColor"/>
  <circle cx="15" cy="13" r="1.2" fill="currentColor"/>
  <path d="M12 3v4M9 19v2M15 19v2"/>
</>);
mk("send", <><path d="M3 3l18 9-18 9 4-9-4-9z"/><path d="M7 12h14"/></>);
mk("phone", <><path d="M5 4h4l2 5-2.5 1.5a11 11 0 0 0 5 5L20 13l1 4v0a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2z"/></>);
mk("info", <><circle cx="12" cy="12" r="9"/><path d="M12 11v5M12 7.5v.5"/></>);
mk("mapPin", <><path d="M12 21s-6.5-5-6.5-10a6.5 6.5 0 0 1 13 0c0 5-6.5 10-6.5 10z"/><circle cx="12" cy="11" r="2.5"/></>);
mk("paperclip", <><path d="M21 10l-9 9a5 5 0 0 1-7-7l9-9a3 3 0 1 1 4 4l-9 9a1 1 0 0 1-1.5-1.5L15 7"/></>);
mk("micSmall", <><rect x="9" y="4" width="6" height="10" rx="3"/><path d="M5 11a7 7 0 0 0 14 0M12 18v3"/></>);
mk("star", <><path d="M12 2l3 7 7 .8-5.3 5 1.6 7-6.3-3.7L5.7 22l1.6-7L2 9.8 9 9z"/></>);

// Brand mark — scales of justice with two brain hemispheres (pans), a small figure (head + body)
// at top center, and pole that doubles as the spine of letter D. Subtle cyan halo.
const BrandMark = ({ size = 38, halo = true }) => (
  <svg width={size} height={size} viewBox="0 0 80 80" fill="none" className="brand-svg">
    <defs>
      <linearGradient id="bm-hemi" x1="0" y1="0" x2="0" y2="1">
        <stop offset="0" stopColor="#d8c08c"/>
        <stop offset="1" stopColor="#C9A96E"/>
      </linearGradient>
      <radialGradient id="bm-halo" cx="0.5" cy="0.5" r="0.55">
        <stop offset="0" stopColor="#00D4FF" stopOpacity="0.25"/>
        <stop offset="1" stopColor="#00D4FF" stopOpacity="0"/>
      </radialGradient>
    </defs>
    {halo && <circle cx="40" cy="40" r="36" fill="url(#bm-halo)"/>}
    {/* small figure: head (dot) */}
    <circle cx="40" cy="10" r="3.2" fill="#1A3A4E"/>
    {/* body line = pole = spine of D */}
    <path d="M40 14 V62" stroke="#1A3A4E" strokeWidth="2.6" strokeLinecap="round"/>
    {/* the D bowl (right side curves out from the pole) */}
    <path d="M40 62 Q60 58 60 40 Q60 22 40 18" stroke="#1A3A4E" strokeWidth="2.2" fill="none" strokeLinecap="round"/>
    {/* crossbar (scale beam) */}
    <path d="M14 24 H66" stroke="#1A3A4E" strokeWidth="2.2" strokeLinecap="round"/>
    {/* chains from beam to hemispheres */}
    <path d="M14 24 L10 32 M20 24 L18 32 M66 24 L70 32 M60 24 L62 32" stroke="#C9A96E" strokeWidth="0.9" strokeLinecap="round"/>
    {/* left hemisphere (brain shape) */}
    <g className="hemi-l">
      <path d="M6 32 Q6 46 22 46 L22 32 Z" fill="url(#bm-hemi)"/>
      <path d="M14 32 V46" stroke="#1A3A4E" strokeWidth="0.5" opacity="0.4"/>
      <path d="M8 36 Q12 38 14 36 M16 38 Q18 40 22 39" stroke="#1A3A4E" strokeWidth="0.4" fill="none" opacity="0.45"/>
      <path d="M10 41 Q12 43 14 42 M16 43 Q19 44 21 43" stroke="#1A3A4E" strokeWidth="0.4" fill="none" opacity="0.4"/>
    </g>
    {/* right hemisphere */}
    <g className="hemi-r">
      <path d="M74 32 Q74 46 58 46 L58 32 Z" fill="url(#bm-hemi)"/>
      <path d="M66 32 V46" stroke="#1A3A4E" strokeWidth="0.5" opacity="0.4"/>
      <path d="M72 36 Q68 38 66 36 M64 38 Q62 40 58 39" stroke="#1A3A4E" strokeWidth="0.4" fill="none" opacity="0.45"/>
      <path d="M70 41 Q68 43 66 42 M64 43 Q61 44 59 43" stroke="#1A3A4E" strokeWidth="0.4" fill="none" opacity="0.4"/>
    </g>
  </svg>
);

// Big central scales — same brand mark scaled up, with extra wireframe geometry + heavier cyan halo.
// Lives inside the dark navy portal area so colors invert: pole/figure in ice-white, hemispheres in gold.
const CentralScales = ({ size = 220 }) => (
  <svg width={size} height={size} viewBox="0 0 220 220" fill="none">
    <defs>
      <linearGradient id="cs-pole" x1="0" y1="0" x2="0" y2="1">
        <stop offset="0" stopColor="#EEF6FA"/>
        <stop offset="1" stopColor="#A8D5E8"/>
      </linearGradient>
      <linearGradient id="cs-hemi" x1="0" y1="0" x2="0" y2="1">
        <stop offset="0" stopColor="#d8c08c"/>
        <stop offset="1" stopColor="#C9A96E"/>
      </linearGradient>
      <radialGradient id="cs-glow" cx="0.5" cy="0.5" r="0.55">
        <stop offset="0" stopColor="#00D4FF" stopOpacity="0.55"/>
        <stop offset="1" stopColor="#00D4FF" stopOpacity="0"/>
      </radialGradient>
    </defs>
    <circle cx="110" cy="110" r="100" fill="url(#cs-glow)"/>
    {/* small figure head */}
    <circle cx="110" cy="28" r="9" fill="url(#cs-pole)"/>
    {/* pole / D spine */}
    <path d="M110 38 V174" stroke="url(#cs-pole)" strokeWidth="3.2" strokeLinecap="round"/>
    {/* D bowl */}
    <path d="M110 174 Q166 162 166 110 Q166 58 110 50" stroke="url(#cs-pole)" strokeWidth="2.4" fill="none" strokeLinecap="round"/>
    {/* crossbar */}
    <path d="M40 66 H180" stroke="url(#cs-pole)" strokeWidth="3" strokeLinecap="round"/>
    {/* chains */}
    <path d="M50 66 L42 96 M70 66 L60 96 M170 66 L178 96 M150 66 L160 96" stroke="#C9A96E" strokeWidth="1" opacity="0.6"/>
    {/* left hemisphere */}
    <path d="M28 96 Q28 132 70 132 L70 96 Z" fill="url(#cs-hemi)" className="hemi-l-big"/>
    <path d="M50 96 V132" stroke="#1A3A4E" strokeWidth="0.6" opacity="0.5"/>
    <g opacity="0.55" stroke="#1A3A4E" strokeWidth="0.6" fill="none">
      <path d="M32 106 Q40 110 50 108"/>
      <path d="M52 110 Q60 113 70 112"/>
      <path d="M34 116 Q42 118 50 117"/>
      <path d="M52 119 Q60 121 68 121"/>
      <path d="M36 125 Q44 126 50 125"/>
      <circle cx="42" cy="108" r="1"/>
      <circle cx="60" cy="112" r="1"/>
      <circle cx="46" cy="122" r="1"/>
    </g>
    {/* right hemisphere */}
    <path d="M192 96 Q192 132 150 132 L150 96 Z" fill="url(#cs-hemi)" className="hemi-r-big"/>
    <path d="M170 96 V132" stroke="#1A3A4E" strokeWidth="0.6" opacity="0.5"/>
    <g opacity="0.55" stroke="#1A3A4E" strokeWidth="0.6" fill="none">
      <path d="M188 106 Q180 110 170 108"/>
      <path d="M168 110 Q160 113 150 112"/>
      <path d="M186 116 Q178 118 170 117"/>
      <path d="M168 119 Q160 121 152 121"/>
      <path d="M184 125 Q176 126 170 125"/>
      <circle cx="178" cy="108" r="1"/>
      <circle cx="160" cy="112" r="1"/>
      <circle cx="174" cy="122" r="1"/>
    </g>
    {/* base */}
    <path d="M82 178 H138" stroke="url(#cs-pole)" strokeWidth="2.4" strokeLinecap="round"/>
    <path d="M96 186 H124" stroke="#A8D5E8" strokeWidth="1.4" opacity="0.5" strokeLinecap="round"/>
    {/* faint wireframe overlay */}
    <g opacity="0.35">
      <path d="M110 28 L28 96 L82 178 L138 178 L192 96 Z" stroke="#00D4FF" strokeWidth="0.5" fill="none"/>
      <path d="M110 28 L70 132 L110 178 L150 132 Z" stroke="#00D4FF" strokeWidth="0.4" fill="none"/>
    </g>
  </svg>
);

Object.assign(window, { Ic, BrandMark, CentralScales });
