/* icons.jsx — Veloroute line icons. Stroke-based, inherit color via currentColor. */
function Ic({ d, size = 24, sw = 1.8, fill = false, children, style, vb = 24 }) {
  return (
    <svg width={size} height={size} viewBox={`0 0 ${vb} ${vb}`} fill="none"
      style={{ display: 'block', flexShrink: 0, ...style }}>
      {d && <path d={d} stroke={fill ? 'none' : 'currentColor'} fill={fill ? 'currentColor' : 'none'}
        strokeWidth={sw} strokeLinecap="round" strokeLinejoin="round" />}
      {children}
    </svg>
  );
}

const IconSearch = (p) => <Ic {...p} d="M11 4a7 7 0 105.2 11.7M20 20l-3.8-3.8" />;
const IconBack = (p) => <Ic {...p} d="M15 5l-7 7 7 7" />;
const IconChevR = (p) => <Ic {...p} d="M9 5l7 7-7 7" />;
const IconChevDown = (p) => <Ic {...p} d="M5 9l7 7 7-7" />;
const IconClose = (p) => <Ic {...p} d="M6 6l12 12M18 6L6 18" />;
const IconMic = (p) => <Ic {...p}><path d="M12 3a3 3 0 013 3v5a3 3 0 01-6 0V6a3 3 0 013-3z" stroke="currentColor" strokeWidth={p.sw||1.8} strokeLinecap="round" strokeLinejoin="round"/><path d="M5.5 11a6.5 6.5 0 0013 0M12 17.5V21" stroke="currentColor" strokeWidth={p.sw||1.8} strokeLinecap="round" strokeLinejoin="round"/></Ic>;

const IconLocateDot = (p) => <Ic {...p}><circle cx="12" cy="12" r="3.4" stroke="currentColor" strokeWidth={p.sw||1.8}/><path d="M12 2v3.2M12 18.8V22M22 12h-3.2M5.2 12H2" stroke="currentColor" strokeWidth={p.sw||1.8} strokeLinecap="round"/><circle cx="12" cy="12" r="8" stroke="currentColor" strokeWidth={p.sw||1.8}/></Ic>;
const IconPin = (p) => <Ic {...p}><path d="M12 21s7-6.3 7-11.2A7 7 0 105 9.8C5 14.7 12 21 12 21z" stroke="currentColor" strokeWidth={p.sw||1.8} strokeLinejoin="round"/><circle cx="12" cy="9.6" r="2.4" stroke="currentColor" strokeWidth={p.sw||1.8}/></Ic>;
const IconBike = (p) => (
  <Ic {...p}>
    <circle cx="5.5" cy="17" r="3.4" stroke="currentColor" strokeWidth={p.sw||1.7}/>
    <circle cx="18.5" cy="17" r="3.4" stroke="currentColor" strokeWidth={p.sw||1.7}/>
    <path d="M8.8 17l3.4-6.4 3.8 6.4M9 7.2h3l2.6 4.4M14 7.2h2.6" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round" strokeLinejoin="round"/>
  </Ic>
);
const IconClock = (p) => <Ic {...p}><circle cx="12" cy="12" r="8.2" stroke="currentColor" strokeWidth={p.sw||1.8}/><path d="M12 7.4V12l3.2 1.9" stroke="currentColor" strokeWidth={p.sw||1.8} strokeLinecap="round" strokeLinejoin="round"/></Ic>;
const IconShield = (p) => <Ic {...p}><path d="M12 3l7 2.4v5.2c0 4.4-3 7.6-7 9.4-4-1.8-7-5-7-9.4V5.4L12 3z" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinejoin="round"/><path d="M8.8 12.2l2.3 2.3 4-4.4" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round" strokeLinejoin="round"/></Ic>;
const IconElevation = (p) => <Ic {...p} d="M3 18l5-9 4 5 3-4 6 8" />;
const IconLeaf = (p) => <Ic {...p}><path d="M20 4C9 4 4 9.5 4 16c0 1.6.4 3 .4 3s7.6.5 11.6-3.5C19.5 12 20 4 20 4z" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinejoin="round"/><path d="M5 19C8 14 12 11 17 8.5" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round"/></Ic>;
const IconCar = (p) => <Ic {...p}><path d="M4 16v-3l2-5h12l2 5v3M6 16h12" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round" strokeLinejoin="round"/><circle cx="7.5" cy="16.5" r="1.6" stroke="currentColor" strokeWidth={p.sw||1.7}/><circle cx="16.5" cy="16.5" r="1.6" stroke="currentColor" strokeWidth={p.sw||1.7}/></Ic>;
const IconWarn = (p) => <Ic {...p}><path d="M12 4.5l8.5 14.5H3.5L12 4.5z" stroke="currentColor" strokeWidth={p.sw||1.8} strokeLinejoin="round"/><path d="M12 10v4M12 16.6v.2" stroke="currentColor" strokeWidth={p.sw||1.9} strokeLinecap="round"/></Ic>;
const IconPlus = (p) => <Ic {...p} d="M12 5v14M5 12h14" />;
const IconLayers = (p) => <Ic {...p}><path d="M12 4l8 4-8 4-8-4 8-4z" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinejoin="round"/><path d="M4 12l8 4 8-4M4 16l8 4 8-4" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinejoin="round"/></Ic>;
const IconStar = (p) => <Ic {...p}><path d="M12 4l2.4 5 5.6.6-4.2 3.8 1.2 5.6L12 16.8 7 19l1.2-5.6L4 9.6 9.6 9 12 4z" stroke="currentColor" strokeWidth={p.sw||1.6} strokeLinejoin="round"/></Ic>;
const IconHome = (p) => <Ic {...p}><path d="M4 11l8-6.5L20 11M6 9.5V20h12V9.5" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round" strokeLinejoin="round"/></Ic>;
const IconBriefcase = (p) => <Ic {...p}><rect x="3.5" y="7.5" width="17" height="12" rx="2.4" stroke="currentColor" strokeWidth={p.sw||1.7}/><path d="M9 7.5V6a2 2 0 012-2h2a2 2 0 012 2v1.5" stroke="currentColor" strokeWidth={p.sw||1.7}/></Ic>;
const IconRoute = (p) => <Ic {...p}><circle cx="6" cy="18" r="2.6" stroke="currentColor" strokeWidth={p.sw||1.7}/><circle cx="18" cy="6" r="2.6" stroke="currentColor" strokeWidth={p.sw||1.7}/><path d="M8.4 16.6C13 14 15.2 9.8 15.8 8" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round" strokeDasharray="0.1 3.4"/></Ic>;
const IconCommunity = (p) => <Ic {...p}><circle cx="9" cy="9" r="3.1" stroke="currentColor" strokeWidth={p.sw||1.7}/><path d="M3.5 19a5.5 5.5 0 0111 0M16 7.2a3 3 0 010 5.6M16.5 14.5c2 .6 4 2.3 4 4.5" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round"/></Ic>;
const IconUser = (p) => <Ic {...p}><circle cx="12" cy="8.5" r="3.6" stroke="currentColor" strokeWidth={p.sw||1.7}/><path d="M5 20a7 7 0 0114 0" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round"/></Ic>;
const IconMapPin2 = (p) => <Ic {...p}><path d="M5 8l5-2 4 2 5-2v10l-5 2-4-2-5 2V8z" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinejoin="round"/><path d="M10 6v10M14 8v10" stroke="currentColor" strokeWidth={p.sw||1.7}/></Ic>;
const IconSound = (p) => <Ic {...p}><path d="M5 9.5h3l4-3.5v12l-4-3.5H5v-5z" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinejoin="round"/><path d="M16 9a4 4 0 010 6M18.5 6.5a8 8 0 010 11" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round"/></Ic>;
const IconNavArrow = (p) => <Ic {...p} fill><path d="M12 3l8 17-8-4-8 4 8-17z" /></Ic>;
const IconArrowUpRight = (p) => <Ic {...p} d="M7 17L17 7M9 7h8v8" />;
const IconArrowTurnL = (p) => <Ic {...p}><path d="M14 20V11a4 4 0 00-4-4H6" stroke="currentColor" strokeWidth={p.sw||2.2} strokeLinecap="round" strokeLinejoin="round"/><path d="M9 4L5 7l4 3" stroke="currentColor" strokeWidth={p.sw||2.2} strokeLinecap="round" strokeLinejoin="round"/></Ic>;
const IconArrowTurnR = (p) => <Ic {...p}><path d="M10 20V11a4 4 0 014-4h4" stroke="currentColor" strokeWidth={p.sw||2.2} strokeLinecap="round" strokeLinejoin="round"/><path d="M15 4l4 3-4 3" stroke="currentColor" strokeWidth={p.sw||2.2} strokeLinecap="round" strokeLinejoin="round"/></Ic>;
const IconStraight = (p) => <Ic {...p}><path d="M12 21V5" stroke="currentColor" strokeWidth={p.sw||2.2} strokeLinecap="round"/><path d="M7 9l5-5 5 5" stroke="currentColor" strokeWidth={p.sw||2.2} strokeLinecap="round" strokeLinejoin="round"/></Ic>;
const IconConstruction = (p) => <Ic {...p}><rect x="4" y="9" width="16" height="6" rx="1" stroke="currentColor" strokeWidth={p.sw||1.7}/><path d="M6 9l3-4M11 9l3-4M16 9l3-4M5 19h14" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round"/></Ic>;
const IconCheck = (p) => <Ic {...p} d="M5 12.5l4.5 4.5L19 6" />;
const IconBulb = (p) => <Ic {...p}><path d="M9.5 18h5M10 21h4" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round"/><path d="M12 3a6 6 0 00-3.6 10.8c.5.4.6.9.6 1.5v.2h6v-.2c0-.6.1-1.1.6-1.5A6 6 0 0012 3z" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinejoin="round"/></Ic>;
const IconCrash = (p) => <Ic {...p} fill><path d="M12 2l2.2 5.3L19 5l-1.8 5.1L23 11l-4.4 2.3L21 18l-5.2-1.4L14 22l-2-4.6L9 22l-1.4-5.4L2 18l2.4-4.7L0 11l4.8-.9L3 5l4.8 2.3L12 2z" /></Ic>;
const IconLogout = (p) => <Ic {...p}><path d="M15 4h2.5A1.5 1.5 0 0119 5.5v13A1.5 1.5 0 0117.5 20H15" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round" strokeLinejoin="round"/><path d="M10 8l-4 4 4 4M6 12h9" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round" strokeLinejoin="round"/></Ic>;
const IconBell = (p) => <Ic {...p}><path d="M6.5 16V11a5.5 5.5 0 0111 0v5l1.8 2H4.7l1.8-2z" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinejoin="round"/><path d="M10 20a2 2 0 004 0" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round"/></Ic>;
const IconCamera = (p) => <Ic {...p}><rect x="3" y="7" width="18" height="13" rx="3" stroke="currentColor" strokeWidth={p.sw||1.7}/><circle cx="12" cy="13.5" r="3.5" stroke="currentColor" strokeWidth={p.sw||1.7}/><path d="M8 7l1.4-2.4h5.2L16 7" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinejoin="round"/></Ic>;
const IconMail = (p) => <Ic {...p}><rect x="3" y="5.5" width="18" height="13" rx="2.5" stroke="currentColor" strokeWidth={p.sw||1.7}/><path d="M4 7l8 6 8-6" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round" strokeLinejoin="round"/></Ic>;
const IconLock = (p) => <Ic {...p}><rect x="5" y="10.5" width="14" height="10" rx="2.5" stroke="currentColor" strokeWidth={p.sw||1.7}/><path d="M8 10.5V8a4 4 0 018 0v2.5" stroke="currentColor" strokeWidth={p.sw||1.7}/></Ic>;
const IconLegend = (p) => <Ic {...p}><circle cx="5.5" cy="6.5" r="1.9" stroke="currentColor" strokeWidth={p.sw||1.7}/><circle cx="5.5" cy="12" r="1.9" stroke="currentColor" strokeWidth={p.sw||1.7}/><circle cx="5.5" cy="17.5" r="1.9" stroke="currentColor" strokeWidth={p.sw||1.7}/><path d="M10.5 6.5H20M10.5 12H20M10.5 17.5H20" stroke="currentColor" strokeWidth={p.sw||1.7} strokeLinecap="round"/></Ic>;

Object.assign(window, {
  Ic, IconSearch, IconBack, IconChevR, IconChevDown, IconClose, IconMic,
  IconLocateDot, IconPin, IconBike, IconClock, IconShield, IconElevation,
  IconLeaf, IconCar, IconWarn, IconPlus, IconLayers, IconStar, IconHome,
  IconBriefcase, IconRoute, IconCommunity, IconUser, IconMapPin2, IconSound,
  IconNavArrow, IconArrowUpRight, IconArrowTurnL, IconArrowTurnR, IconStraight,
  IconConstruction, IconCheck, IconBulb, IconCrash, IconLogout, IconBell, IconCamera, IconMail, IconLock, IconLegend,
});
