// lucide-icons.jsx — inline SVG icons, zero network dependency
// All paths from lucide.dev (ISC license). Stroke: 1.5, linecap: round, linejoin: round.
// Usage: <LI name="zap" size={20} color={T.green} />

const LUCIDE_PATHS = {
  zap:            'M13 2L3 14h9l-1 8 10-12h-9l1-8z',
  home:           'M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z M9 22V12h6v10',
  gauge:          'M12 2a10 10 0 00-6.88 17.22M12 2a10 10 0 016.88 17.22M12 12l4-4M12 12v6',
  car:            'M5 17H3a2 2 0 01-2-2V9a2 2 0 012-2h1l2-4h8l2 4h1a2 2 0 012 2v6a2 2 0 01-2 2h-2 M6.5 17a1.5 1.5 0 100-3 1.5 1.5 0 000 3z M17.5 17a1.5 1.5 0 100-3 1.5 1.5 0 000 3z',
  sun:            'M12 2v2M12 20v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M2 12h2M20 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42 M12 17a5 5 0 100-10 5 5 0 000 10z',
  thermometer:    'M14 14.76V3.5a2.5 2.5 0 00-5 0v11.26a4.5 4.5 0 105 0z',
  upload:         'M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M17 8l-5-5-5 5M12 3v12',
  download:       'M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12 15V3',
  utensils:       'M3 2v7c0 1.1.9 2 2 2h4a2 2 0 002-2V2M7 2v20M21 15V2a2 2 0 00-4 0v6.5A2.5 2.5 0 0019.5 11H17V2',
  shirt:          'M20.38 3.46L16 2a4 4 0 01-8 0L3.62 3.46a2 2 0 00-1.34 2.23l.58 3.57a1 1 0 00.99.84H6v10c0 1.1.9 2 2 2h8a2 2 0 002-2V10h2.15a1 1 0 00.99-.84l.58-3.57a2 2 0 00-1.34-2.23z',
  battery:        'M6 7H4a2 2 0 00-2 2v6a2 2 0 002 2h16a2 2 0 002-2V9a2 2 0 00-2-2h-2 M22 11v2',
  'battery-charging': 'M6 7H4a2 2 0 00-2 2v6a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-2 M22 11v2 M13 7l-4 5h6l-4 5',
  shield:         'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z',
  'shield-alert': 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z M12 8v4M12 16h.01',
  user:           'M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2 M12 11a4 4 0 100-8 4 4 0 000 8z',
  users:          'M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2 M9 7a4 4 0 100-8 4 4 0 000 8zM23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75',
  settings:       'M12 20a8 8 0 100-16 8 8 0 000 16z M12 14a2 2 0 100-4 2 2 0 000 4z 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',
  'file-text':    'M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z M14 2v6h6 M16 13H8M16 17H8M10 9H8',
  plus:           'M12 5v14M5 12h14',
  check:          'M20 6L9 17l-5-5',
  x:              'M18 6L6 18M6 6l12 12',
  'chevron-right':'M9 18l6-6-6-6',
  'chevron-down': 'M6 9l6 6 6-6',
  'alert-triangle':'M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z M12 9v4M12 17h.01',
  wifi:           'M5 12.55a11 11 0 0114.08 0M1.42 9a16 16 0 0121.16 0M8.53 16.11a6 6 0 016.95 0 M12 20h.01',
  cpu:            'M9 3H5a2 2 0 00-2 2v4m6-6h10a2 2 0 012 2v4M9 3v18m0 0h10a2 2 0 002-2V9M9 21H5a2 2 0 01-2-2V9m0 0h18 M7 9h10M7 13h10M7 17h4',
  plug:           'M6.5 6.5l11 11M17 6.5V4a1 1 0 00-2 0v2.5M7 6.5V4a1 1 0 00-2 0v2.5M3 10h18 M12 10v12',
  'toggle-right': 'M21 12a9 9 0 11-18 0 9 9 0 0118 0z M15 12a3 3 0 11-6 0 3 3 0 016 0z',
  activity:       'M22 12h-4l-3 9L9 3l-3 9H2',
  leaf:           'M11 20A7 7 0 015 9l7-7 7 7a7 7 0 01-6 11z M11 20V9',
  'bar-chart-2':  'M18 20V10M12 20V4M6 20v-6',
  'dollar-sign':  'M12 1v22M17 5H9.5a3.5 3.5 0 000 7h5a3.5 3.5 0 010 7H6',
  map:            'M1 6v16l7-4 8 4 7-4V2l-7 4-8-4-7 4z M8 2v16M16 6v16',
  'refresh-cw':   'M23 4v6h-6M1 20v-6h6 M3.51 9a9 9 0 0114.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0020.49 15',
  lock:           'M19 11H5a2 2 0 00-2 2v7a2 2 0 002 2h14a2 2 0 002-2v-7a2 2 0 00-2-2z M17 11V7a5 5 0 00-10 0v4',
  'save':         'M19 21H5a2 2 0 01-2-2V5a2 2 0 012-2h11l5 5v11a2 2 0 01-2 2z M17 21v-8H7v8M7 3v5h8',
  trash:          'M3 6h18M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a1 1 0 011-1h4a1 1 0 011 1v2',
  cloud:          'M17.5 19a4.5 4.5 0 100-9h-1.8A7 7 0 104 14.9',
  'cloud-sun':    'M12 2v2M5.22 5.22l1.42 1.42M20 12h2M15.97 6.03l1.42-1.42 M8 13a4 4 0 117.5 2 M13 16a4 4 0 00-4-4H7a5 5 0 000 10h10a4 4 0 000-8 4 4 0 00-4 2z',
  'cloud-rain':   'M16 13a4 4 0 00-4-4H8a5 5 0 000 10h8a4 4 0 000-8 4 4 0 00-4 2z M8 19v2M12 19v3M16 19v2',
};

function LI({ name, size = 16, color = 'currentColor', strokeWidth = 1.5, style = {} }) {
  const d = LUCIDE_PATHS[name];
  if (!d) return <span style={{ display: 'inline-block', width: size, height: size }} />;
  // Handle multi-path icons (joined by space+M)
  const paths = d.split(' M').map((p, i) => i === 0 ? p : 'M' + p);
  return (
    <svg
      width={size} height={size} viewBox="0 0 24 24"
      fill="none" stroke={color} strokeWidth={strokeWidth}
      strokeLinecap="round" strokeLinejoin="round"
      style={{ display: 'inline-block', flexShrink: 0, verticalAlign: 'middle', ...style }}
    >
      {paths.map((p, i) => <path key={i} d={p}/>)}
    </svg>
  );
}

// IconBox — square container with tinted background, used in cards
function IconBox({ name, size = 20, color, bg, boxSize = 36, radius = 10 }) {
  return (
    <div style={{
      width: boxSize, height: boxSize, borderRadius: radius,
      background: bg || `${color}22`,
      display: 'flex', alignItems: 'center', justifyContent: 'center',
      flexShrink: 0,
    }}>
      <LI name={name} size={size} color={color}/>
    </div>
  );
}

Object.assign(window, { LUCIDE_PATHS, LI, IconBox });
