// ============ TaskQuest — icons (Lucide-style strokes) ============
const Ic = {};
function mk(paths, opts = {}) {
  return function Icon({ size = 16, sw = 2, className, style }) {
    return (
      <svg width={size} height={size} viewBox="0 0 24 24" fill={opts.fill || "none"}
        stroke={opts.fill ? "none" : "currentColor"} strokeWidth={sw} strokeLinecap="round" strokeLinejoin="round"
        className={className} style={style}>
        {paths}
      </svg>
    );
  };
}
Ic.Chevron   = mk(<path d="M6 9l6 6 6-6" />);
Ic.ChevDown  = Ic.Chevron;
Ic.ChevLeft  = mk(<path d="M15 18l-6-6 6-6" />);
Ic.ChevRight = mk(<path d="M9 18l6-6-6-6" />);
Ic.Bell      = mk(<><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" /><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0" /></>);
Ic.Plus      = mk(<><path d="M12 5v14" /><path d="M5 12h14" /></>);
Ic.X         = mk(<><path d="M18 6 6 18" /><path d="m6 6 12 12" /></>);
Ic.Check     = mk(<path d="M20 6 9 17l-5-5" />);
Ic.Calendar  = mk(<><rect x="3" y="4" width="18" height="18" rx="2" /><path d="M16 2v4M8 2v4M3 10h18" /></>);
Ic.Clock     = mk(<><circle cx="12" cy="12" r="9" /><path d="M12 7v5l3 2" /></>);
Ic.Trophy    = mk(<><path d="M6 9H4.5a2.5 2.5 0 0 1 0-5H6" /><path d="M18 9h1.5a2.5 2.5 0 0 0 0-5H18" /><path d="M4 22h16" /><path d="M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22" /><path d="M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22" /><path d="M18 2H6v7a6 6 0 0 0 12 0V2Z" /></>);
Ic.Medal     = mk(<><path d="M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15" /><path d="M11 12 5.12 2.2M13 12l5.88-9.8M8 7h8" /><circle cx="12" cy="17" r="5" /><path d="M12 18v-2h-.5" /></>);
Ic.Star      = mk(<path d="M11.5 2.5 14 8l6 .5-4.5 4 1.5 6-5.5-3.5L6.5 18.5 8 12.5 3.5 8.5 9.5 8z" />);
Ic.Sparkle   = mk(<path d="M12 3l1.6 4.4L18 9l-4.4 1.6L12 15l-1.6-4.4L6 9l4.4-1.6L12 3z" />);
Ic.Target    = mk(<><circle cx="12" cy="12" r="9" /><circle cx="12" cy="12" r="5" /><circle cx="12" cy="12" r="1" /></>);
Ic.Coins     = mk(<><circle cx="8" cy="8" r="6" /><path d="M18.09 10.37A6 6 0 1 1 10.34 18M7 6h1v4M16.71 13.88l.7.71-2.82 2.82" /></>);
Ic.TrendUp   = mk(<><path d="M22 7 13.5 15.5l-5-5L2 17" /><path d="M16 7h6v6" /></>);
Ic.User      = mk(<><circle cx="12" cy="8" r="4" /><path d="M4 21a8 8 0 0 1 16 0" /></>);
Ic.Users     = mk(<><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" /><circle cx="9" cy="7" r="4" /><path d="M22 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75" /></>);
Ic.Folder    = mk(<path d="M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z" />);
Ic.Msg       = mk(<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" />);
Ic.Send      = mk(<><path d="M14.54 9.46 3 21l2.5-9L3 3l18 9-6.46 3.46" /></>);
Ic.Sun       = mk(<><circle cx="12" cy="12" r="4" /><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4" /></>);
Ic.Moon      = mk(<path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" />);
Ic.Pause     = mk(<><rect x="6" y="4" width="4" height="16" rx="1" /><rect x="14" y="4" width="4" height="16" rx="1" /></>);
Ic.Flag      = mk(<><path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V4s-1 1-4 1-5-2-8-2-4 1-4 1z" /><path d="M4 22V4" /></>);
Ic.Alert     = mk(<><circle cx="12" cy="12" r="9" /><path d="M12 8v4M12 16h.01" /></>);
Ic.CheckCircle = mk(<><circle cx="12" cy="12" r="9" /><path d="m8 12 3 3 5-6" /></>);
Ic.Arrow     = mk(<><path d="M5 12h14M13 6l6 6-6 6" /></>);
Ic.Gift      = mk(<><rect x="3" y="8" width="18" height="4" rx="1" /><path d="M12 8v13M5 12v9h14v-9" /><path d="M12 8C12 5 9 3 7.5 4.5S7 8 12 8ZM12 8c0-3 3-5 4.5-3.5S17 8 12 8Z" /></>);
Ic.Edit      = mk(<><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" /><path d="M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4Z" /></>);
Ic.Inbox     = mk(<><path d="M22 12h-6l-2 3h-4l-2-3H2" /><path d="M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z" /></>);
Ic.Crown     = mk(<path d="M2 18h20M3 18l-1-11 6 5 4-8 4 8 6-5-1 11" />);
Ic.Layers    = mk(<><path d="m12 2 9 5-9 5-9-5 9-5Z" /><path d="m3 12 9 5 9-5M3 17l9 5 9-5" /></>);
Ic.Eye       = mk(<><path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z" /><circle cx="12" cy="12" r="3" /></>);
Ic.EyeOff    = mk(<><path d="M10.7 5.1A10.4 10.4 0 0 1 12 5c6.5 0 10 7 10 7a16.9 16.9 0 0 1-3.3 4M6.6 6.6A16.7 16.7 0 0 0 2 12s3.5 7 10 7a10 10 0 0 0 4.3-1M3 3l18 18M9.9 9.9a3 3 0 0 0 4.2 4.2" /></>);
Ic.Lock      = mk(<><rect x="4" y="11" width="16" height="10" rx="2" /><path d="M8 11V7a4 4 0 0 1 8 0v4" /></>);
Ic.Logout    = mk(<><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" /><path d="M16 17l5-5-5-5M21 12H9" /></>);
Ic.Trash     = mk(<><path d="M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6" /><path d="M10 11v6M14 11v6" /></>);
Ic.Search    = mk(<><circle cx="11" cy="11" r="7" /><path d="m21 21-4.3-4.3" /></>);
window.Ic = Ic;
