@lacspace/logo 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +3 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/palettes.json","../src/data/fonts.json","../src/data/icons.json","../src/data/moods.json","../src/data/keywords.json","../src/data.ts","../src/brief.ts","../src/rng.ts","../src/text.ts","../src/shapes.ts","../src/engines.ts","../src/render.ts","../src/generate.ts","../src/brand.ts","../src/animate.ts"],"names":["body","n","nn","w","fontSize","tw","h","markSize","gap","background"],"mappings":"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","file":"index.cjs","sourcesContent":["[\n { \"id\": \"midnight-azure\", \"name\": \"Midnight Azure\", \"mood\": [\"tech\", \"trust\", \"bold\", \"corporate\"], \"bg\": \"#0b1020\", \"surface\": \"#141a2e\", \"primary\": \"#3b82f6\", \"accent\": \"#22d3ee\", \"on\": \"#eef4ff\", \"from\": \"#0BB9D9\", \"to\": \"#3B82F6\" },\n { \"id\": \"electric-violet\", \"name\": \"Electric Violet\", \"mood\": [\"tech\", \"creative\", \"bold\", \"future\"], \"bg\": \"#0c0a1a\", \"surface\": \"#171235\", \"primary\": \"#7c3aed\", \"accent\": \"#3b82f6\", \"on\": \"#f3efff\", \"from\": \"#3B82F6\", \"to\": \"#7C3AED\" },\n { \"id\": \"sunset-flame\", \"name\": \"Sunset Flame\", \"mood\": [\"warm\", \"bold\", \"food\", \"energy\"], \"bg\": \"#1a0d08\", \"surface\": \"#2a140b\", \"primary\": \"#f97316\", \"accent\": \"#ef4444\", \"on\": \"#fff4ec\", \"from\": \"#F97316\", \"to\": \"#EF4444\" },\n { \"id\": \"forest-verdant\", \"name\": \"Forest Verdant\", \"mood\": [\"eco\", \"calm\", \"organic\", \"health\"], \"bg\": \"#08140f\", \"surface\": \"#0f2119\", \"primary\": \"#22c55e\", \"accent\": \"#84cc16\", \"on\": \"#eefef4\", \"from\": \"#22C55E\", \"to\": \"#84CC16\" },\n { \"id\": \"royal-gold\", \"name\": \"Royal Gold\", \"mood\": [\"luxe\", \"heritage\", \"premium\", \"elegant\"], \"bg\": \"#12100a\", \"surface\": \"#1e1a10\", \"primary\": \"#d4af37\", \"accent\": \"#b08d2b\", \"on\": \"#fbf6e6\", \"from\": \"#E7C767\", \"to\": \"#B08D2B\" },\n { \"id\": \"rose-blush\", \"name\": \"Rose Blush\", \"mood\": [\"playful\", \"beauty\", \"warm\", \"friendly\"], \"bg\": \"#1a0d14\", \"surface\": \"#2a1420\", \"primary\": \"#f472b6\", \"accent\": \"#fb7185\", \"on\": \"#fff0f7\", \"from\": \"#F472B6\", \"to\": \"#FB7185\" },\n { \"id\": \"ocean-teal\", \"name\": \"Ocean Teal\", \"mood\": [\"calm\", \"trust\", \"medical\", \"clean\"], \"bg\": \"#06141a\", \"surface\": \"#0b2029\", \"primary\": \"#14b8a6\", \"accent\": \"#06b6d4\", \"on\": \"#e8fdfb\", \"from\": \"#14B8A6\", \"to\": \"#06B6D4\" },\n { \"id\": \"slate-mono\", \"name\": \"Slate Mono\", \"mood\": [\"minimal\", \"mono\", \"corporate\", \"modern\"], \"bg\": \"#0a0a0b\", \"surface\": \"#17181b\", \"primary\": \"#e5e7eb\", \"accent\": \"#9ca3af\", \"on\": \"#f8fafc\", \"from\": \"#E5E7EB\", \"to\": \"#9CA3AF\" },\n { \"id\": \"ink-noir\", \"name\": \"Ink Noir\", \"mood\": [\"minimal\", \"mono\", \"luxe\", \"bold\"], \"bg\": \"#0a0a0a\", \"surface\": \"#161616\", \"primary\": \"#fafafa\", \"accent\": \"#d4d4d4\", \"on\": \"#ffffff\", \"from\": \"#FAFAFA\", \"to\": \"#A3A3A3\" },\n { \"id\": \"coral-crush\", \"name\": \"Coral Crush\", \"mood\": [\"playful\", \"food\", \"warm\", \"energy\"], \"bg\": \"#1a0f0c\", \"surface\": \"#2a1712\", \"primary\": \"#fb7185\", \"accent\": \"#fbbf24\", \"on\": \"#fff3ee\", \"from\": \"#FB7185\", \"to\": \"#FBBF24\" },\n { \"id\": \"deep-indigo\", \"name\": \"Deep Indigo\", \"mood\": [\"finance\", \"trust\", \"corporate\", \"tech\"], \"bg\": \"#0a0d1a\", \"surface\": \"#12172b\", \"primary\": \"#6366f1\", \"accent\": \"#818cf8\", \"on\": \"#eef0ff\", \"from\": \"#6366F1\", \"to\": \"#818CF8\" },\n { \"id\": \"emerald-lux\", \"name\": \"Emerald Lux\", \"mood\": [\"luxe\", \"finance\", \"premium\", \"eco\"], \"bg\": \"#06140d\", \"surface\": \"#0c2117\", \"primary\": \"#10b981\", \"accent\": \"#d4af37\", \"on\": \"#eafef4\", \"from\": \"#10B981\", \"to\": \"#D4AF37\" },\n { \"id\": \"cyber-lime\", \"name\": \"Cyber Lime\", \"mood\": [\"tech\", \"bold\", \"future\", \"energy\"], \"bg\": \"#0a0f08\", \"surface\": \"#141d0d\", \"primary\": \"#a3e635\", \"accent\": \"#22d3ee\", \"on\": \"#f4ffe6\", \"from\": \"#A3E635\", \"to\": \"#22D3EE\" },\n { \"id\": \"berry-wine\", \"name\": \"Berry Wine\", \"mood\": [\"luxe\", \"beauty\", \"warm\", \"premium\"], \"bg\": \"#160a12\", \"surface\": \"#25121f\", \"primary\": \"#be185d\", \"accent\": \"#9333ea\", \"on\": \"#fdeef6\", \"from\": \"#BE185D\", \"to\": \"#9333EA\" },\n { \"id\": \"sky-fresh\", \"name\": \"Sky Fresh\", \"mood\": [\"clean\", \"friendly\", \"calm\", \"medical\"], \"bg\": \"#081018\", \"surface\": \"#0f1d2b\", \"primary\": \"#0ea5e9\", \"accent\": \"#38bdf8\", \"on\": \"#eef8ff\", \"from\": \"#0EA5E9\", \"to\": \"#38BDF8\" },\n { \"id\": \"terra-clay\", \"name\": \"Terra Clay\", \"mood\": [\"organic\", \"warm\", \"earthy\", \"heritage\"], \"bg\": \"#150f0a\", \"surface\": \"#241a11\", \"primary\": \"#c2703d\", \"accent\": \"#a3762b\", \"on\": \"#fbf1e6\", \"from\": \"#C2703D\", \"to\": \"#A3762B\" },\n { \"id\": \"grape-soda\", \"name\": \"Grape Soda\", \"mood\": [\"playful\", \"creative\", \"bold\", \"friendly\"], \"bg\": \"#100a1a\", \"surface\": \"#1c122b\", \"primary\": \"#8b5cf6\", \"accent\": \"#ec4899\", \"on\": \"#f4efff\", \"from\": \"#8B5CF6\", \"to\": \"#EC4899\" },\n { \"id\": \"mint-clean\", \"name\": \"Mint Clean\", \"mood\": [\"clean\", \"eco\", \"health\", \"calm\"], \"bg\": \"#08140f\", \"surface\": \"#0f231b\", \"primary\": \"#34d399\", \"accent\": \"#a7f3d0\", \"on\": \"#effef7\", \"from\": \"#34D399\", \"to\": \"#A7F3D0\" },\n { \"id\": \"crimson-bold\", \"name\": \"Crimson Bold\", \"mood\": [\"bold\", \"energy\", \"sport\", \"food\"], \"bg\": \"#160809\", \"surface\": \"#260d0f\", \"primary\": \"#dc2626\", \"accent\": \"#f59e0b\", \"on\": \"#fff0ee\", \"from\": \"#DC2626\", \"to\": \"#F59E0B\" },\n { \"id\": \"steel-blue\", \"name\": \"Steel Blue\", \"mood\": [\"corporate\", \"trust\", \"industrial\", \"tech\"], \"bg\": \"#0a0e12\", \"surface\": \"#141b22\", \"primary\": \"#64748b\", \"accent\": \"#0ea5e9\", \"on\": \"#eef3f8\", \"from\": \"#64748B\", \"to\": \"#0EA5E9\" },\n { \"id\": \"amber-glow\", \"name\": \"Amber Glow\", \"mood\": [\"warm\", \"friendly\", \"energy\", \"food\"], \"bg\": \"#161005\", \"surface\": \"#261c0a\", \"primary\": \"#f59e0b\", \"accent\": \"#fcd34d\", \"on\": \"#fff8e8\", \"from\": \"#F59E0B\", \"to\": \"#FCD34D\" },\n { \"id\": \"aqua-marine\", \"name\": \"Aqua Marine\", \"mood\": [\"calm\", \"clean\", \"travel\", \"fresh\"], \"bg\": \"#06131a\", \"surface\": \"#0b2029\", \"primary\": \"#06b6d4\", \"accent\": \"#2dd4bf\", \"on\": \"#e8fcff\", \"from\": \"#06B6D4\", \"to\": \"#2DD4BF\" },\n { \"id\": \"plum-noir\", \"name\": \"Plum Noir\", \"mood\": [\"luxe\", \"creative\", \"mono\", \"elegant\"], \"bg\": \"#0d0912\", \"surface\": \"#181020\", \"primary\": \"#a855f7\", \"accent\": \"#6b7280\", \"on\": \"#f2ecfb\", \"from\": \"#A855F7\", \"to\": \"#6B7280\" },\n { \"id\": \"graphite-orange\", \"name\": \"Graphite Orange\", \"mood\": [\"industrial\", \"bold\", \"sport\", \"modern\"], \"bg\": \"#0b0b0d\", \"surface\": \"#17181c\", \"primary\": \"#f97316\", \"accent\": \"#e5e7eb\", \"on\": \"#fafafa\", \"from\": \"#F97316\", \"to\": \"#E5E7EB\" },\n { \"id\": \"teal-gold\", \"name\": \"Teal Gold\", \"mood\": [\"luxe\", \"finance\", \"premium\", \"corporate\"], \"bg\": \"#06130f\", \"surface\": \"#0b201a\", \"primary\": \"#0f9d8f\", \"accent\": \"#d4af37\", \"on\": \"#eafcf7\", \"from\": \"#0F9D8F\", \"to\": \"#D4AF37\" },\n { \"id\": \"sunrise-coral\", \"name\": \"Sunrise Coral\", \"mood\": [\"warm\", \"food\", \"friendly\", \"energy\"], \"bg\": \"#1a0e0a\", \"surface\": \"#2a1710\", \"primary\": \"#ff7a59\", \"accent\": \"#ffd166\", \"on\": \"#fff3ee\", \"from\": \"#FF7A59\", \"to\": \"#FFD166\" },\n { \"id\": \"deep-forest\", \"name\": \"Deep Forest\", \"mood\": [\"eco\", \"heritage\", \"calm\", \"organic\"], \"bg\": \"#071310\", \"surface\": \"#0d201b\", \"primary\": \"#2f855a\", \"accent\": \"#a3b18a\", \"on\": \"#eafaf2\", \"from\": \"#2F855A\", \"to\": \"#A3B18A\" },\n { \"id\": \"neon-magenta\", \"name\": \"Neon Magenta\", \"mood\": [\"creative\", \"bold\", \"playful\", \"future\"], \"bg\": \"#120a12\", \"surface\": \"#201220\", \"primary\": \"#e91e8c\", \"accent\": \"#22d3ee\", \"on\": \"#ffeef8\", \"from\": \"#E91E8C\", \"to\": \"#22D3EE\" },\n { \"id\": \"arctic-blue\", \"name\": \"Arctic Blue\", \"mood\": [\"clean\", \"medical\", \"tech\", \"calm\"], \"bg\": \"#07101a\", \"surface\": \"#0d1d2b\", \"primary\": \"#2b8fe0\", \"accent\": \"#8ed1fc\", \"on\": \"#eef7ff\", \"from\": \"#2B8FE0\", \"to\": \"#8ED1FC\" },\n { \"id\": \"charcoal-lime\", \"name\": \"Charcoal Lime\", \"mood\": [\"industrial\", \"tech\", \"bold\", \"sport\"], \"bg\": \"#0c0d0a\", \"surface\": \"#171a12\", \"primary\": \"#c6f135\", \"accent\": \"#64748b\", \"on\": \"#f6ffe6\", \"from\": \"#C6F135\", \"to\": \"#64748B\" },\n { \"id\": \"lavender-dream\", \"name\": \"Lavender Dream\", \"mood\": [\"beauty\", \"playful\", \"calm\", \"friendly\"], \"bg\": \"#100c18\", \"surface\": \"#1b1528\", \"primary\": \"#a78bfa\", \"accent\": \"#f0abfc\", \"on\": \"#f4efff\", \"from\": \"#A78BFA\", \"to\": \"#F0ABFC\" },\n { \"id\": \"ruby-noir\", \"name\": \"Ruby Noir\", \"mood\": [\"luxe\", \"beauty\", \"bold\", \"premium\"], \"bg\": \"#140708\", \"surface\": \"#220d10\", \"primary\": \"#e11d48\", \"accent\": \"#f59e0b\", \"on\": \"#ffeef1\", \"from\": \"#E11D48\", \"to\": \"#F59E0B\" },\n { \"id\": \"honey-amber\", \"name\": \"Honey Amber\", \"mood\": [\"warm\", \"food\", \"heritage\", \"friendly\"], \"bg\": \"#161006\", \"surface\": \"#241a0a\", \"primary\": \"#e0a92e\", \"accent\": \"#c2703d\", \"on\": \"#fff7e6\", \"from\": \"#E0A92E\", \"to\": \"#C2703D\" },\n { \"id\": \"cobalt-electric\", \"name\": \"Cobalt Electric\", \"mood\": [\"tech\", \"bold\", \"future\", \"trust\"], \"bg\": \"#080b1a\", \"surface\": \"#101630\", \"primary\": \"#2f5cff\", \"accent\": \"#22d3ee\", \"on\": \"#eef1ff\", \"from\": \"#2F5CFF\", \"to\": \"#22D3EE\" },\n { \"id\": \"sage-earth\", \"name\": \"Sage Earth\", \"mood\": [\"eco\", \"organic\", \"calm\", \"health\"], \"bg\": \"#0d120c\", \"surface\": \"#171f14\", \"primary\": \"#78a662\", \"accent\": \"#c9a26b\", \"on\": \"#f1f8ea\", \"from\": \"#78A662\", \"to\": \"#C9A26B\" },\n { \"id\": \"peach-cream\", \"name\": \"Peach Cream\", \"mood\": [\"playful\", \"beauty\", \"friendly\", \"kids\"], \"bg\": \"#1a1210\", \"surface\": \"#2a1e18\", \"primary\": \"#ff9e80\", \"accent\": \"#ffcfa3\", \"on\": \"#fff4ee\", \"from\": \"#FF9E80\", \"to\": \"#FFCFA3\" }\n]\n","[\n { \"id\": \"grotesk-modern\", \"display\": \"Space Grotesk\", \"body\": \"Inter\", \"weight\": 700, \"mood\": [\"tech\", \"modern\", \"bold\", \"startup\"], \"stack\": \"'Space Grotesk', 'Inter', system-ui, sans-serif\" },\n { \"id\": \"geist-clean\", \"display\": \"Sora\", \"body\": \"Inter\", \"weight\": 700, \"mood\": [\"tech\", \"clean\", \"corporate\", \"modern\"], \"stack\": \"'Sora', 'Inter', system-ui, sans-serif\" },\n { \"id\": \"poppins-round\", \"display\": \"Poppins\", \"body\": \"Poppins\", \"weight\": 700, \"mood\": [\"playful\", \"friendly\", \"startup\", \"food\"], \"stack\": \"'Poppins', 'Segoe UI', system-ui, sans-serif\" },\n { \"id\": \"montserrat-strong\", \"display\": \"Montserrat\", \"body\": \"Inter\", \"weight\": 800, \"mood\": [\"bold\", \"corporate\", \"sport\", \"modern\"], \"stack\": \"'Montserrat', system-ui, sans-serif\" },\n { \"id\": \"playfair-luxe\", \"display\": \"Playfair Display\", \"body\": \"Lora\", \"weight\": 700, \"mood\": [\"luxe\", \"heritage\", \"elegant\", \"beauty\"], \"stack\": \"'Playfair Display', Georgia, serif\" },\n { \"id\": \"cormorant-lux\", \"display\": \"Cormorant Garamond\", \"body\": \"EB Garamond\", \"weight\": 600, \"mood\": [\"luxe\", \"elegant\", \"premium\", \"heritage\"], \"stack\": \"'Cormorant Garamond', Georgia, serif\" },\n { \"id\": \"dmserif-editorial\", \"display\": \"DM Serif Display\", \"body\": \"DM Sans\", \"weight\": 400, \"mood\": [\"editorial\", \"elegant\", \"creative\", \"premium\"], \"stack\": \"'DM Serif Display', Georgia, serif\" },\n { \"id\": \"archivo-industrial\", \"display\": \"Archivo\", \"body\": \"Archivo\", \"weight\": 800, \"mood\": [\"industrial\", \"bold\", \"sport\", \"modern\"], \"stack\": \"'Archivo', 'Arial Narrow', system-ui, sans-serif\" },\n { \"id\": \"manrope-soft\", \"display\": \"Manrope\", \"body\": \"Manrope\", \"weight\": 700, \"mood\": [\"clean\", \"calm\", \"medical\", \"startup\"], \"stack\": \"'Manrope', system-ui, sans-serif\" },\n { \"id\": \"outfit-geometric\", \"display\": \"Outfit\", \"body\": \"Inter\", \"weight\": 600, \"mood\": [\"modern\", \"minimal\", \"tech\", \"clean\"], \"stack\": \"'Outfit', system-ui, sans-serif\" },\n { \"id\": \"fraunces-craft\", \"display\": \"Fraunces\", \"body\": \"Newsreader\", \"weight\": 600, \"mood\": [\"organic\", \"heritage\", \"craft\", \"warm\"], \"stack\": \"'Fraunces', Georgia, serif\" },\n { \"id\": \"quicksand-friendly\", \"display\": \"Quicksand\", \"body\": \"Nunito\", \"weight\": 700, \"mood\": [\"friendly\", \"playful\", \"beauty\", \"calm\"], \"stack\": \"'Quicksand', 'Nunito', system-ui, sans-serif\" },\n { \"id\": \"orbitron-future\", \"display\": \"Orbitron\", \"body\": \"Rajdhani\", \"weight\": 700, \"mood\": [\"future\", \"tech\", \"sport\", \"bold\"], \"stack\": \"'Orbitron', 'Rajdhani', system-ui, sans-serif\" },\n { \"id\": \"bricolage-quirk\", \"display\": \"Bricolage Grotesque\", \"body\": \"Inter\", \"weight\": 700, \"mood\": [\"creative\", \"startup\", \"modern\", \"playful\"], \"stack\": \"'Bricolage Grotesque', system-ui, sans-serif\" },\n { \"id\": \"lexend-clear\", \"display\": \"Lexend\", \"body\": \"Inter\", \"weight\": 600, \"mood\": [\"education\", \"clean\", \"friendly\", \"medical\", \"calm\"], \"stack\": \"'Lexend', system-ui, sans-serif\" },\n { \"id\": \"anton-impact\", \"display\": \"Anton\", \"body\": \"Inter\", \"weight\": 400, \"mood\": [\"bold\", \"sport\", \"industrial\", \"energy\"], \"stack\": \"'Anton', 'Arial Narrow', system-ui, sans-serif\" },\n { \"id\": \"baloo-kids\", \"display\": \"Baloo 2\", \"body\": \"Nunito\", \"weight\": 700, \"mood\": [\"kids\", \"playful\", \"friendly\", \"food\"], \"stack\": \"'Baloo 2', 'Nunito', system-ui, sans-serif\" },\n { \"id\": \"libre-editorial\", \"display\": \"Libre Franklin\", \"body\": \"Lora\", \"weight\": 700, \"mood\": [\"editorial\", \"corporate\", \"heritage\", \"elegant\", \"legal\"], \"stack\": \"'Libre Franklin', Georgia, serif\" }\n]\n","[\n { \"key\": \"bolt\", \"keywords\": [\"energy\", \"power\", \"fast\", \"electric\", \"speed\", \"charge\", \"quick\"], \"svg\": \"<path d='M13 2 L4 14 H11 L10 22 L20 9 H13 Z'/>\" },\n { \"key\": \"leaf\", \"keywords\": [\"eco\", \"nature\", \"green\", \"organic\", \"plant\", \"garden\", \"bio\", \"sustainable\"], \"svg\": \"<path d='M4 20 C4 10 10 4 20 4 C20 14 14 20 4 20 Z'/><path d='M4 20 C9 15 14 12 18 10'/>\" },\n { \"key\": \"cup\", \"keywords\": [\"coffee\", \"cafe\", \"tea\", \"drink\", \"warm\", \"beverage\", \"espresso\", \"brew\"], \"svg\": \"<path d='M5 8 H17 V13 A5 5 0 0 1 12 18 H10 A5 5 0 0 1 5 13 Z'/><path d='M17 9 H19 A2 2 0 0 1 19 13 H17'/><path d='M8 3 V5 M11 3 V5 M14 3 V5'/>\" },\n { \"key\": \"rocket\", \"keywords\": [\"launch\", \"startup\", \"fast\", \"space\", \"growth\", \"boost\", \"ship\"], \"svg\": \"<path d='M12 3 C15 6 16 10 16 13 L8 13 C8 10 9 6 12 3 Z'/><circle cx='12' cy='9' r='1.5'/><path d='M8 13 L6 17 L9 15 M16 13 L18 17 L15 15'/>\" },\n { \"key\": \"cart\", \"keywords\": [\"shop\", \"store\", \"ecommerce\", \"retail\", \"buy\", \"market\", \"cart\", \"grocery\"], \"svg\": \"<circle cx='9' cy='20' r='1'/><circle cx='17' cy='20' r='1'/><path d='M3 4 H5 L7 15 H18 L20 7 H6'/>\" },\n { \"key\": \"chart\", \"keywords\": [\"finance\", \"growth\", \"analytics\", \"data\", \"stats\", \"trade\", \"invest\", \"report\"], \"svg\": \"<path d='M4 4 V20 H20'/><polyline points='7 15 11 10 14 13 19 6'/>\" },\n { \"key\": \"code\", \"keywords\": [\"dev\", \"tech\", \"software\", \"api\", \"program\", \"developer\", \"engineering\", \"web\"], \"svg\": \"<polyline points='9 8 5 12 9 16'/><polyline points='15 8 19 12 15 16'/>\" },\n { \"key\": \"cloud\", \"keywords\": [\"cloud\", \"saas\", \"storage\", \"hosting\", \"weather\", \"backup\", \"server\"], \"svg\": \"<path d='M7 18 A4 4 0 0 1 7 10 A5 5 0 0 1 17 10 A3.5 3.5 0 0 1 17 18 Z'/>\" },\n { \"key\": \"heart\", \"keywords\": [\"health\", \"care\", \"love\", \"charity\", \"beauty\", \"wellness\", \"dating\"], \"svg\": \"<path d='M12 20 C6 15 3 12 3 8 A4 4 0 0 1 12 6 A4 4 0 0 1 21 8 C21 12 18 15 12 20 Z'/>\" },\n { \"key\": \"star\", \"keywords\": [\"quality\", \"rating\", \"premium\", \"favorite\", \"best\", \"review\", \"award\"], \"svg\": \"<path d='M12 3 L14.6 9 L21 9.5 L16 13.8 L17.6 20 L12 16.5 L6.4 20 L8 13.8 L3 9.5 L9.4 9 Z'/>\" },\n { \"key\": \"shield\", \"keywords\": [\"security\", \"trust\", \"protect\", \"insurance\", \"safe\", \"guard\", \"defense\", \"cyber\"], \"svg\": \"<path d='M12 3 L20 6 V11 C20 16 16 20 12 21 C8 20 4 16 4 11 V6 Z'/>\" },\n { \"key\": \"globe\", \"keywords\": [\"global\", \"world\", \"travel\", \"network\", \"web\", \"international\", \"geo\"], \"svg\": \"<circle cx='12' cy='12' r='9'/><path d='M3 12 H21 M12 3 C15 6 15 18 12 21 C9 18 9 6 12 3'/>\" },\n { \"key\": \"camera\", \"keywords\": [\"photo\", \"media\", \"studio\", \"creative\", \"photography\", \"video\", \"capture\"], \"svg\": \"<rect x='3' y='7' width='18' height='13' rx='2'/><circle cx='12' cy='13' r='3.5'/><path d='M8 7 L9.5 4 H14.5 L16 7'/>\" },\n { \"key\": \"brush\", \"keywords\": [\"art\", \"design\", \"paint\", \"creative\", \"studio\", \"agency\", \"draw\"], \"svg\": \"<path d='M4 20 C4 16 7 15 9 15 C9 18 8 20 4 20 Z'/><path d='M9 15 L18 6 A1.5 1.5 0 0 1 20 8 L11 17'/>\" },\n { \"key\": \"book\", \"keywords\": [\"education\", \"learn\", \"publish\", \"read\", \"school\", \"academy\", \"course\", \"library\"], \"svg\": \"<path d='M4 5 A2 2 0 0 1 6 3 H12 V19 H6 A2 2 0 0 0 4 21 Z'/><path d='M20 5 A2 2 0 0 0 18 3 H12 V19 H18 A2 2 0 0 1 20 21 Z'/>\" },\n { \"key\": \"wrench\", \"keywords\": [\"repair\", \"service\", \"build\", \"tools\", \"fix\", \"maintenance\", \"mechanic\"], \"svg\": \"<path d='M15 4 A5 5 0 0 0 8.5 10.5 L4 15 V20 H9 L13.5 15.5 A5 5 0 0 0 20 9 L16.5 12.5 H11.5 V7.5 Z'/>\" },\n { \"key\": \"gear\", \"keywords\": [\"settings\", \"tech\", \"engineering\", \"config\", \"industrial\", \"system\", \"process\"], \"svg\": \"<circle cx='12' cy='12' r='3.2'/><path d='M12 3 V6 M12 18 V21 M3 12 H6 M18 12 H21 M5.6 5.6 L7.7 7.7 M16.3 16.3 L18.4 18.4 M18.4 5.6 L16.3 7.7 M7.7 16.3 L5.6 18.4'/>\" },\n { \"key\": \"chat\", \"keywords\": [\"message\", \"community\", \"social\", \"support\", \"talk\", \"forum\", \"chat\", \"connect\"], \"svg\": \"<path d='M4 5 H20 V16 H12 L7 20 V16 H4 Z'/>\" },\n { \"key\": \"pin\", \"keywords\": [\"location\", \"map\", \"place\", \"local\", \"travel\", \"navigation\", \"geo\", \"address\"], \"svg\": \"<path d='M12 21 C12 21 5 14 5 9 A7 7 0 0 1 19 9 C19 14 12 21 12 21 Z'/><circle cx='12' cy='9' r='2.5'/>\" },\n { \"key\": \"home\", \"keywords\": [\"home\", \"realestate\", \"house\", \"property\", \"living\", \"estate\", \"build\", \"interior\"], \"svg\": \"<path d='M4 11 L12 4 L20 11'/><path d='M6 10 V20 H18 V10'/>\" },\n { \"key\": \"shop\", \"keywords\": [\"store\", \"market\", \"retail\", \"boutique\", \"business\", \"vendor\", \"mall\"], \"svg\": \"<path d='M4 9 L5 4 H19 L20 9 A3 3 0 0 1 14 9 A3 3 0 0 1 8 9 A3 3 0 0 1 4 9 Z'/><path d='M5 9 V20 H19 V9'/>\" },\n { \"key\": \"truck\", \"keywords\": [\"delivery\", \"logistics\", \"shipping\", \"transport\", \"move\", \"courier\", \"freight\"], \"svg\": \"<rect x='2' y='7' width='12' height='9'/><path d='M14 10 H18 L21 13 V16 H14 Z'/><circle cx='7' cy='18' r='1.5'/><circle cx='17' cy='18' r='1.5'/>\" },\n { \"key\": \"wallet\", \"keywords\": [\"finance\", \"money\", \"pay\", \"bank\", \"wallet\", \"fintech\", \"payment\", \"budget\"], \"svg\": \"<rect x='3' y='6' width='18' height='13' rx='2'/><path d='M3 10 H21'/><circle cx='17' cy='14' r='1'/>\" },\n { \"key\": \"coin\", \"keywords\": [\"money\", \"finance\", \"crypto\", \"currency\", \"pay\", \"token\", \"gold\", \"cash\"], \"svg\": \"<circle cx='12' cy='12' r='8'/><path d='M12 8 V16 M9.5 9.5 H13.5 A2 2 0 0 1 13.5 12 H10.5 A2 2 0 0 0 10.5 14.5 H14.5'/>\" },\n { \"key\": \"phone\", \"keywords\": [\"mobile\", \"contact\", \"call\", \"app\", \"telecom\", \"device\", \"smartphone\"], \"svg\": \"<rect x='7' y='3' width='10' height='18' rx='2'/><path d='M11 18 H13'/>\" },\n { \"key\": \"wifi\", \"keywords\": [\"network\", \"internet\", \"connect\", \"signal\", \"telecom\", \"wireless\", \"isp\"], \"svg\": \"<path d='M4 9 A12 12 0 0 1 20 9'/><path d='M7 12.5 A8 8 0 0 1 17 12.5'/><path d='M10 16 A3.5 3.5 0 0 1 14 16'/><circle cx='12' cy='19' r='0.6'/>\" },\n { \"key\": \"music\", \"keywords\": [\"music\", \"audio\", \"sound\", \"media\", \"entertainment\", \"podcast\", \"song\"], \"svg\": \"<circle cx='7' cy='18' r='2'/><circle cx='17' cy='16' r='2'/><path d='M9 18 V6 L19 4 V16'/>\" },\n { \"key\": \"fork\", \"keywords\": [\"food\", \"restaurant\", \"dining\", \"cafe\", \"kitchen\", \"chef\", \"meal\", \"eat\"], \"svg\": \"<path d='M7 3 V9 A2 2 0 0 0 11 9 V3 M9 9 V21 M15 3 C13 4 13 9 15 10 V21'/>\" },\n { \"key\": \"scissors\", \"keywords\": [\"barber\", \"salon\", \"beauty\", \"craft\", \"cut\", \"hair\", \"tailor\", \"stylist\"], \"svg\": \"<circle cx='7' cy='7' r='2.5'/><circle cx='7' cy='17' r='2.5'/><path d='M9 8.5 L20 17 M9 15.5 L20 7'/>\" },\n { \"key\": \"paw\", \"keywords\": [\"pet\", \"animal\", \"vet\", \"care\", \"dog\", \"cat\", \"wildlife\"], \"svg\": \"<circle cx='8' cy='9' r='1.7'/><circle cx='16' cy='9' r='1.7'/><circle cx='5.5' cy='13' r='1.4'/><circle cx='18.5' cy='13' r='1.4'/><path d='M12 12 C15 12 17 15 16 18 C15 20 9 20 8 18 C7 15 9 12 12 12 Z'/>\" },\n { \"key\": \"sun\", \"keywords\": [\"energy\", \"solar\", \"weather\", \"bright\", \"summer\", \"power\", \"light\"], \"svg\": \"<circle cx='12' cy='12' r='4'/><path d='M12 2 V5 M12 19 V22 M2 12 H5 M19 12 H22 M4.9 4.9 L7 7 M17 17 L19.1 19.1 M19.1 4.9 L17 7 M7 17 L4.9 19.1'/>\" },\n { \"key\": \"mountain\", \"keywords\": [\"travel\", \"outdoor\", \"adventure\", \"nature\", \"peak\", \"hiking\", \"summit\"], \"svg\": \"<path d='M3 19 L9 8 L13 14 L16 9 L21 19 Z'/>\" },\n { \"key\": \"wave\", \"keywords\": [\"water\", \"ocean\", \"flow\", \"fluid\", \"beach\", \"sea\", \"surf\", \"liquid\"], \"svg\": \"<path d='M3 8 C6 5 8 11 12 8 C16 5 18 11 21 8 M3 13 C6 10 8 16 12 13 C16 10 18 16 21 13 M3 18 C6 15 8 21 12 18 C16 15 18 21 21 18'/>\" },\n { \"key\": \"hexagon\", \"keywords\": [\"tech\", \"blockchain\", \"structure\", \"geometric\", \"hex\", \"modular\", \"grid\"], \"svg\": \"<path d='M12 3 L20 7.5 V16.5 L12 21 L4 16.5 V7.5 Z'/>\" },\n { \"key\": \"spark\", \"keywords\": [\"magic\", \"ai\", \"new\", \"creative\", \"shine\", \"smart\", \"innovation\"], \"svg\": \"<path d='M12 3 C12 8 13 11 20 12 C13 13 12 16 12 21 C12 16 11 13 4 12 C11 11 12 8 12 3 Z'/>\" },\n { \"key\": \"drop\", \"keywords\": [\"water\", \"clean\", \"eco\", \"medical\", \"liquid\", \"pure\", \"hydro\", \"laundry\"], \"svg\": \"<path d='M12 3 C12 3 6 10 6 15 A6 6 0 0 0 18 15 C18 10 12 3 12 3 Z'/>\" },\n { \"key\": \"flame\", \"keywords\": [\"fire\", \"energy\", \"hot\", \"cook\", \"passion\", \"grill\", \"heat\", \"bbq\"], \"svg\": \"<path d='M12 21 A6 6 0 0 0 18 15 C18 10 14 9 15 4 C11 6 8 9 8 13 A4 4 0 0 0 10 16 C9 12 11 11 12 10 C12 13 15 13 14 17 A3 3 0 0 1 12 21 Z'/>\" },\n { \"key\": \"cube\", \"keywords\": [\"product\", \"box\", \"package\", \"build\", \"3d\", \"block\", \"logistics\", \"supply\"], \"svg\": \"<path d='M12 3 L20 7.5 V16.5 L12 21 L4 16.5 V7.5 Z'/><path d='M4 7.5 L12 12 L20 7.5 M12 12 V21'/>\" },\n { \"key\": \"eye\", \"keywords\": [\"vision\", \"watch\", \"view\", \"security\", \"media\", \"optics\", \"monitor\"], \"svg\": \"<path d='M2 12 C5 6 9 5 12 5 C15 5 19 6 22 12 C19 18 15 19 12 19 C9 19 5 18 2 12 Z'/><circle cx='12' cy='12' r='3'/>\" },\n { \"key\": \"crown\", \"keywords\": [\"luxe\", \"premium\", \"royal\", \"king\", \"best\", \"vip\", \"elite\", \"gold\"], \"svg\": \"<path d='M4 18 V8 L8 12 L12 5 L16 12 L20 8 V18 Z'/><path d='M4 18 H20'/>\" },\n { \"key\": \"graduation\", \"keywords\": [\"education\", \"school\", \"university\", \"academy\", \"learn\", \"graduate\", \"course\", \"student\"], \"svg\": \"<path d='M2 9 L12 4 L22 9 L12 14 Z'/><path d='M6 11 V16 C6 17.5 9 19 12 19 C15 19 18 17.5 18 16 V11'/><path d='M22 9 V14'/>\" },\n { \"key\": \"dumbbell\", \"keywords\": [\"gym\", \"fitness\", \"workout\", \"sport\", \"health\", \"training\", \"muscle\", \"exercise\"], \"svg\": \"<path d='M3 9 V15 M6 8 V16 M18 8 V16 M21 9 V15 M6 12 H18'/>\" },\n { \"key\": \"scale\", \"keywords\": [\"legal\", \"law\", \"justice\", \"balance\", \"attorney\", \"court\", \"lawyer\", \"compliance\"], \"svg\": \"<path d='M12 3 V20 M5 20 H19 M12 5 L5 9 M12 5 L19 9'/><path d='M2 9 H8 L5 15 A3 3 0 0 0 8 15 Z M16 9 H22 L19 15 A3 3 0 0 0 22 15 Z'/>\" },\n { \"key\": \"key\", \"keywords\": [\"realestate\", \"access\", \"unlock\", \"property\", \"rental\", \"keys\", \"estate\"], \"svg\": \"<circle cx='8' cy='8' r='4'/><path d='M11 11 L20 20 M17 17 L19 15 M15 15 L17 13'/>\" },\n { \"key\": \"plane\", \"keywords\": [\"travel\", \"flight\", \"airline\", \"trip\", \"tourism\", \"journey\", \"holiday\", \"send\"], \"svg\": \"<path d='M3 11 L21 3 L14 21 L11 13 Z'/><path d='M11 13 L21 3'/>\" },\n { \"key\": \"car\", \"keywords\": [\"auto\", \"car\", \"ride\", \"taxi\", \"garage\", \"mechanic\", \"vehicle\", \"drive\", \"rental\"], \"svg\": \"<path d='M3 13 L5 8 H17 L20 13'/><path d='M2 13 H22 V17 H2 Z'/><circle cx='7' cy='17' r='1.5'/><circle cx='17' cy='17' r='1.5'/>\" },\n { \"key\": \"chip\", \"keywords\": [\"tech\", \"hardware\", \"iot\", \"ai\", \"semiconductor\", \"electronics\", \"processor\", \"chip\", \"device\"], \"svg\": \"<rect x='7' y='7' width='10' height='10' rx='1.5'/><path d='M10 3 V6 M14 3 V6 M10 18 V21 M14 18 V21 M3 10 H6 M3 14 H6 M18 10 H21 M18 14 H21'/>\" },\n { \"key\": \"gift\", \"keywords\": [\"gift\", \"ecommerce\", \"reward\", \"celebration\", \"store\", \"present\", \"surprise\", \"loyalty\"], \"svg\": \"<rect x='3' y='9' width='18' height='11' rx='1'/><path d='M3 12 H21 M12 9 V20'/><path d='M12 9 C12 6 9 5 8 6.5 C7 8 9 9 12 9 C12 9 15 9 16 6.5 C15 5 12 6 12 9 Z'/>\" },\n { \"key\": \"calendar\", \"keywords\": [\"schedule\", \"booking\", \"event\", \"planner\", \"date\", \"calendar\", \"appointment\", \"agenda\"], \"svg\": \"<rect x='3' y='5' width='18' height='16' rx='2'/><path d='M3 9 H21 M8 3 V6 M16 3 V6'/><rect x='7' y='12' width='3' height='3'/>\" },\n { \"key\": \"clock\", \"keywords\": [\"time\", \"schedule\", \"fast\", \"productivity\", \"hours\", \"watch\", \"timer\", \"deadline\"], \"svg\": \"<circle cx='12' cy='12' r='9'/><path d='M12 7 V12 L16 14'/>\" },\n { \"key\": \"mail\", \"keywords\": [\"email\", \"contact\", \"newsletter\", \"message\", \"communication\", \"inbox\", \"mailer\", \"crm\"], \"svg\": \"<rect x='3' y='5' width='18' height='14' rx='2'/><path d='M3 7 L12 13 L21 7'/>\" },\n { \"key\": \"lock\", \"keywords\": [\"security\", \"privacy\", \"protect\", \"safe\", \"lock\", \"password\", \"vault\", \"encrypt\"], \"svg\": \"<rect x='5' y='11' width='14' height='9' rx='2'/><path d='M8 11 V8 A4 4 0 0 1 16 8 V11'/>\" },\n { \"key\": \"tag\", \"keywords\": [\"price\", \"sale\", \"retail\", \"label\", \"discount\", \"tag\", \"offer\", \"deal\", \"ecommerce\"], \"svg\": \"<path d='M3 3 H11 L21 13 L13 21 L3 11 Z'/><circle cx='7.5' cy='7.5' r='1.4'/>\" },\n { \"key\": \"brain\", \"keywords\": [\"ai\", \"smart\", \"mind\", \"learning\", \"psychology\", \"brain\", \"intelligence\", \"think\", \"neural\"], \"svg\": \"<path d='M9 4 A3 3 0 0 0 6 7 A3 3 0 0 0 5 12 A3 3 0 0 0 7 17 A3 3 0 0 0 12 19 V4 A2 2 0 0 0 9 4 Z'/><path d='M12 4 A2 2 0 0 1 15 4 A3 3 0 0 1 18 7 A3 3 0 0 1 19 12 A3 3 0 0 1 17 17 A3 3 0 0 1 12 19'/>\" },\n { \"key\": \"flask\", \"keywords\": [\"lab\", \"science\", \"chemistry\", \"research\", \"biotech\", \"experiment\", \"pharma\", \"chemical\"], \"svg\": \"<path d='M9 3 H15 M10 3 V9 L5 18 A2 2 0 0 0 7 21 H17 A2 2 0 0 0 19 18 L14 9 V3'/><path d='M7.5 14 H16.5'/>\" },\n { \"key\": \"cross\", \"keywords\": [\"medical\", \"clinic\", \"pharmacy\", \"health\", \"hospital\", \"aid\", \"plus\", \"emergency\"], \"svg\": \"<rect x='4' y='4' width='16' height='16' rx='3'/><path d='M12 8 V16 M8 12 H16'/>\" },\n { \"key\": \"edit\", \"keywords\": [\"write\", \"content\", \"blog\", \"edit\", \"author\", \"copywriting\", \"note\", \"publish\"], \"svg\": \"<path d='M14 4 L20 10 L9 21 H3 V15 Z'/><path d='M13 5 L19 11'/>\" },\n { \"key\": \"megaphone\", \"keywords\": [\"marketing\", \"ads\", \"promo\", \"announce\", \"pr\", \"campaign\", \"broadcast\", \"launch\", \"advertising\"], \"svg\": \"<path d='M3 10 V14 H6 L14 19 V5 L6 10 Z'/><path d='M17 9 A4 4 0 0 1 17 15'/>\" },\n { \"key\": \"target\", \"keywords\": [\"goal\", \"marketing\", \"focus\", \"aim\", \"strategy\", \"target\", \"objective\", \"precision\", \"growth\"], \"svg\": \"<circle cx='12' cy='12' r='9'/><circle cx='12' cy='12' r='5'/><circle cx='12' cy='12' r='1.5'/>\" },\n { \"key\": \"trophy\", \"keywords\": [\"award\", \"win\", \"sport\", \"achievement\", \"best\", \"trophy\", \"champion\", \"prize\", \"league\"], \"svg\": \"<path d='M8 4 H16 V9 A4 4 0 0 1 8 9 Z'/><path d='M8 6 H5 A2 2 0 0 0 7 10 M16 6 H19 A2 2 0 0 1 17 10'/><path d='M12 13 V16 M9 20 H15 M10 20 V16 H14 V20'/>\" },\n { \"key\": \"building\", \"keywords\": [\"office\", \"corporate\", \"business\", \"company\", \"enterprise\", \"realestate\", \"tower\", \"firm\"], \"svg\": \"<rect x='5' y='3' width='14' height='18'/><path d='M9 7 H11 M13 7 H15 M9 11 H11 M13 11 H15 M9 15 H11 M13 15 H15 M10 21 V18 H14 V21'/>\" },\n { \"key\": \"lightbulb\", \"keywords\": [\"idea\", \"innovation\", \"creative\", \"startup\", \"bright\", \"invention\", \"insight\", \"smart\"], \"svg\": \"<path d='M9 17 H15 M10 20 H14'/><path d='M12 3 A6 6 0 0 0 8 14 H16 A6 6 0 0 0 12 3 Z'/>\" },\n { \"key\": \"gamepad\", \"keywords\": [\"game\", \"gaming\", \"esports\", \"play\", \"entertainment\", \"arcade\", \"console\", \"fun\"], \"svg\": \"<rect x='2' y='8' width='20' height='9' rx='4.5'/><path d='M7 11 V14 M5.5 12.5 H8.5'/><circle cx='16' cy='11.5' r='1'/><circle cx='18.5' cy='13.5' r='1'/>\" },\n { \"key\": \"shirt\", \"keywords\": [\"fashion\", \"clothing\", \"apparel\", \"boutique\", \"retail\", \"tshirt\", \"wear\", \"style\"], \"svg\": \"<path d='M8 4 L4 7 L6 10 L8 9 V20 H16 V9 L18 10 L20 7 L16 4 C16 6 8 6 8 4 Z'/>\" },\n { \"key\": \"balloon\", \"keywords\": [\"kids\", \"party\", \"toy\", \"children\", \"fun\", \"celebration\", \"birthday\", \"playful\"], \"svg\": \"<path d='M12 3 A5 6 0 0 0 12 15 A5 6 0 0 0 12 3 Z'/><path d='M12 15 V17 M11 17 C11 19 13 19 13 21'/>\" },\n { \"key\": \"palette-art\", \"keywords\": [\"art\", \"design\", \"paint\", \"creative\", \"color\", \"artist\", \"gallery\", \"illustration\"], \"svg\": \"<path d='M12 3 A9 9 0 1 0 12 21 A2 2 0 0 0 12 17 A2 2 0 0 1 14 15 H16 A5 5 0 0 0 21 10 C21 6 17 3 12 3 Z'/><circle cx='8' cy='9' r='1'/><circle cx='12' cy='7' r='1'/><circle cx='16' cy='9' r='1'/>\" },\n { \"key\": \"wheat\", \"keywords\": [\"agriculture\", \"farm\", \"organic\", \"grain\", \"harvest\", \"crop\", \"wheat\", \"rural\"], \"svg\": \"<path d='M12 21 V9 M12 9 C10 9 9 7 9 5 C11 5 12 7 12 9 C12 7 13 5 15 5 C15 7 14 9 12 9 M12 13 C10 13 9 11 9 9 M12 13 C14 13 15 11 15 9 M12 17 C10 17 9 15 9 13 M12 17 C14 17 15 15 15 13'/>\" },\n { \"key\": \"umbrella\", \"keywords\": [\"insurance\", \"protection\", \"weather\", \"umbrella\", \"coverage\", \"safe\", \"shelter\"], \"svg\": \"<path d='M12 3 A9 6 0 0 1 21 9 H3 A9 6 0 0 1 12 3 Z'/><path d='M12 9 V19 A2 2 0 0 1 8 19'/>\" },\n { \"key\": \"tooth\", \"keywords\": [\"dental\", \"dentist\", \"tooth\", \"orthodontics\", \"oral\", \"clinic\", \"smile\"], \"svg\": \"<path d='M12 3 C8 3 6 5 6 8 C6 12 7 21 9 21 C10.5 21 10 15 12 15 C14 15 13.5 21 15 21 C17 21 18 12 18 8 C18 5 16 3 12 3 Z'/>\" },\n { \"key\": \"glasses\", \"keywords\": [\"optometry\", \"eyewear\", \"glasses\", \"vision\", \"optical\", \"fashion\", \"sunglasses\"], \"svg\": \"<circle cx='6' cy='13' r='3'/><circle cx='18' cy='13' r='3'/><path d='M9 13 H15 M3 11 L5 8 H8 M21 11 L19 8 H16'/>\" },\n { \"key\": \"headphones\", \"keywords\": [\"audio\", \"dj\", \"music\", \"headphones\", \"support\", \"sound\", \"gaming\", \"helpdesk\"], \"svg\": \"<path d='M4 14 V12 A8 8 0 0 1 20 12 V14'/><rect x='3' y='14' width='3' height='5' rx='1.2'/><rect x='18' y='14' width='3' height='5' rx='1.2'/>\" },\n { \"key\": \"microphone\", \"keywords\": [\"podcast\", \"audio\", \"voice\", \"media\", \"microphone\", \"recording\", \"radio\", \"singer\"], \"svg\": \"<rect x='9' y='3' width='6' height='11' rx='3'/><path d='M6 11 A6 6 0 0 0 18 11 M12 17 V21 M9 21 H15'/>\" },\n { \"key\": \"hardhat\", \"keywords\": [\"construction\", \"build\", \"contractor\", \"hardhat\", \"engineering\", \"safety\", \"builder\"], \"svg\": \"<path d='M4 16 A8 8 0 0 1 20 16 Z'/><path d='M10 8 V4 H14 V8 M2 16 H22'/>\" },\n { \"key\": \"people\", \"keywords\": [\"team\", \"hr\", \"community\", \"people\", \"agency\", \"group\", \"social\", \"recruiting\", \"network\"], \"svg\": \"<circle cx='8' cy='8' r='3'/><circle cx='16' cy='8' r='3'/><path d='M3 20 C3 15 6 14 8 14 C10 14 13 15 13 20 M11 20 C11 16 14 14 16 14 C18 14 21 15 21 20'/>\" },\n { \"key\": \"gem\", \"keywords\": [\"jewelry\", \"luxury\", \"gem\", \"diamond\", \"premium\", \"beauty\", \"boutique\", \"crystal\"], \"svg\": \"<path d='M6 3 H18 L22 9 L12 21 L2 9 Z'/><path d='M2 9 H22 M6 3 L9 9 M18 3 L15 9 M9 9 L12 21 L15 9'/>\" },\n { \"key\": \"anchor\", \"keywords\": [\"marine\", \"nautical\", \"anchor\", \"travel\", \"boat\", \"sea\", \"harbor\", \"shipping\"], \"svg\": \"<circle cx='12' cy='5' r='2'/><path d='M12 7 V21 M5 13 A7 7 0 0 0 19 13 M8 10 H16'/>\" },\n { \"key\": \"compass\", \"keywords\": [\"travel\", \"navigation\", \"compass\", \"adventure\", \"explore\", \"direction\", \"outdoor\", \"guide\"], \"svg\": \"<circle cx='12' cy='12' r='9'/><path d='M15 9 L11 11 L9 15 L13 13 Z'/>\" },\n { \"key\": \"spray\", \"keywords\": [\"cleaning\", \"service\", \"spray\", \"hygiene\", \"sanitize\", \"laundry\", \"housekeeping\"], \"svg\": \"<rect x='7' y='8' width='6' height='12' rx='1'/><path d='M8 8 V5 H12 V8 M13 6 H16 M13 4 H16 M13 8 H16'/>\" },\n { \"key\": \"battery\", \"keywords\": [\"energy\", \"power\", \"battery\", \"ev\", \"charge\", \"electric\", \"tech\", \"solar\"], \"svg\": \"<rect x='3' y='8' width='16' height='8' rx='2'/><path d='M21 11 V13 M6 11 V13 M9 11 V13 M12 11 V13'/>\" }\n]\n","[\n { \"id\": \"techy\", \"name\": \"Techy\", \"keywords\": [\"tech\", \"software\", \"ai\", \"app\", \"saas\", \"digital\", \"cyber\", \"dev\", \"platform\", \"data\", \"cloud\", \"startup\"], \"paletteMood\": [\"tech\", \"future\", \"bold\", \"trust\"], \"fontMood\": [\"tech\", \"modern\", \"startup\"], \"shapes\": [\"hexagon\", \"squircle\", \"rounded\"], \"layouts\": [\"icon-left\", \"icon-top\"], \"engines\": [\"wordmark\", \"abstract\", \"monogram\"] },\n { \"id\": \"minimal\", \"name\": \"Minimal\", \"keywords\": [\"minimal\", \"simple\", \"clean\", \"modern\", \"mono\", \"essential\"], \"paletteMood\": [\"minimal\", \"mono\", \"clean\"], \"fontMood\": [\"minimal\", \"modern\", \"clean\"], \"shapes\": [\"circle\", \"rounded\", \"squircle\"], \"layouts\": [\"icon-left\", \"wordmark-only\"], \"engines\": [\"monogram\", \"wordmark\", \"lettermark\"] },\n { \"id\": \"luxe\", \"name\": \"Luxe\", \"keywords\": [\"luxury\", \"premium\", \"elegant\", \"gold\", \"boutique\", \"exclusive\", \"high-end\", \"couture\"], \"paletteMood\": [\"luxe\", \"premium\", \"elegant\", \"heritage\"], \"fontMood\": [\"luxe\", \"elegant\", \"editorial\"], \"shapes\": [\"seal\", \"circle\", \"diamond\"], \"layouts\": [\"icon-top\", \"emblem\"], \"engines\": [\"emblem\", \"monogram\", \"wordmark\"] },\n { \"id\": \"playful\", \"name\": \"Playful\", \"keywords\": [\"playful\", \"fun\", \"kids\", \"friendly\", \"colorful\", \"bright\", \"toy\", \"game\"], \"paletteMood\": [\"playful\", \"friendly\", \"bold\"], \"fontMood\": [\"playful\", \"friendly\", \"startup\"], \"shapes\": [\"squircle\", \"blob\", \"rounded\"], \"layouts\": [\"icon-top\", \"icon-left\"], \"engines\": [\"wordmark\", \"monogram\", \"abstract\"] },\n { \"id\": \"eco\", \"name\": \"Eco\", \"keywords\": [\"eco\", \"green\", \"organic\", \"nature\", \"sustainable\", \"natural\", \"plant\", \"bio\", \"earth\"], \"paletteMood\": [\"eco\", \"organic\", \"calm\", \"earthy\"], \"fontMood\": [\"organic\", \"craft\", \"clean\"], \"shapes\": [\"circle\", \"blob\", \"seal\"], \"layouts\": [\"icon-left\", \"icon-top\"], \"engines\": [\"wordmark\", \"abstract\", \"emblem\"] },\n { \"id\": \"bold\", \"name\": \"Bold\", \"keywords\": [\"bold\", \"strong\", \"sport\", \"power\", \"dynamic\", \"energy\", \"fitness\", \"gym\"], \"paletteMood\": [\"bold\", \"energy\", \"sport\", \"industrial\"], \"fontMood\": [\"bold\", \"industrial\", \"sport\"], \"shapes\": [\"shield\", \"hexagon\", \"rounded\"], \"layouts\": [\"icon-left\", \"stacked\"], \"engines\": [\"wordmark\", \"monogram\", \"emblem\"] },\n { \"id\": \"food\", \"name\": \"Food\", \"keywords\": [\"food\", \"restaurant\", \"cafe\", \"kitchen\", \"bakery\", \"dining\", \"coffee\", \"eat\", \"meal\"], \"paletteMood\": [\"warm\", \"food\", \"energy\", \"friendly\"], \"fontMood\": [\"friendly\", \"craft\", \"playful\"], \"shapes\": [\"circle\", \"seal\", \"squircle\"], \"layouts\": [\"icon-top\", \"emblem\"], \"engines\": [\"emblem\", \"wordmark\", \"monogram\"] },\n { \"id\": \"medical\", \"name\": \"Medical\", \"keywords\": [\"medical\", \"health\", \"clinic\", \"care\", \"wellness\", \"pharma\", \"hospital\", \"therapy\"], \"paletteMood\": [\"medical\", \"clean\", \"calm\", \"trust\"], \"fontMood\": [\"clean\", \"medical\", \"modern\"], \"shapes\": [\"circle\", \"shield\", \"rounded\"], \"layouts\": [\"icon-left\", \"icon-top\"], \"engines\": [\"wordmark\", \"monogram\", \"abstract\"] },\n { \"id\": \"finance\", \"name\": \"Finance\", \"keywords\": [\"finance\", \"bank\", \"invest\", \"fintech\", \"money\", \"trade\", \"capital\", \"wealth\"], \"paletteMood\": [\"finance\", \"trust\", \"corporate\", \"luxe\"], \"fontMood\": [\"corporate\", \"modern\", \"tech\"], \"shapes\": [\"shield\", \"hexagon\", \"rounded\"], \"layouts\": [\"icon-left\", \"wordmark-only\"], \"engines\": [\"monogram\", \"wordmark\", \"abstract\"] },\n { \"id\": \"creative\", \"name\": \"Creative\", \"keywords\": [\"creative\", \"art\", \"studio\", \"design\", \"agency\", \"media\", \"brand\", \"photography\"], \"paletteMood\": [\"creative\", \"bold\", \"elegant\"], \"fontMood\": [\"creative\", \"editorial\", \"modern\"], \"shapes\": [\"squircle\", \"blob\", \"circle\"], \"layouts\": [\"icon-top\", \"icon-left\"], \"engines\": [\"abstract\", \"wordmark\", \"monogram\"] },\n { \"id\": \"heritage\", \"name\": \"Heritage\", \"keywords\": [\"heritage\", \"classic\", \"traditional\", \"craft\", \"artisan\", \"vintage\", \"estate\", \"co\"], \"paletteMood\": [\"heritage\", \"warm\", \"earthy\", \"luxe\"], \"fontMood\": [\"heritage\", \"craft\", \"elegant\"], \"shapes\": [\"seal\", \"circle\", \"shield\"], \"layouts\": [\"emblem\", \"icon-top\"], \"engines\": [\"emblem\", \"monogram\", \"wordmark\"] },\n { \"id\": \"modern\", \"name\": \"Modern\", \"keywords\": [\"modern\", \"business\", \"company\", \"professional\", \"corporate\", \"service\", \"solutions\"], \"paletteMood\": [\"tech\", \"corporate\", \"modern\", \"trust\"], \"fontMood\": [\"modern\", \"clean\", \"startup\"], \"shapes\": [\"rounded\", \"squircle\", \"circle\"], \"layouts\": [\"icon-left\", \"icon-top\"], \"engines\": [\"wordmark\", \"monogram\", \"abstract\"] },\n { \"id\": \"education\", \"name\": \"Education\", \"keywords\": [\"education\", \"school\", \"university\", \"academy\", \"learn\", \"course\", \"student\", \"tutoring\", \"training\", \"elearning\"], \"paletteMood\": [\"clean\", \"trust\", \"friendly\", \"calm\"], \"fontMood\": [\"education\", \"clean\", \"friendly\"], \"shapes\": [\"rounded\", \"circle\", \"shield\"], \"layouts\": [\"icon-left\", \"icon-top\"], \"engines\": [\"wordmark\", \"monogram\", \"emblem\"] },\n { \"id\": \"legal\", \"name\": \"Legal\", \"keywords\": [\"legal\", \"law\", \"attorney\", \"court\", \"justice\", \"compliance\", \"lawyer\", \"advocate\", \"firm\", \"notary\"], \"paletteMood\": [\"corporate\", \"trust\", \"luxe\", \"heritage\"], \"fontMood\": [\"legal\", \"corporate\", \"elegant\", \"editorial\"], \"shapes\": [\"shield\", \"seal\", \"circle\"], \"layouts\": [\"icon-left\", \"emblem\"], \"engines\": [\"emblem\", \"monogram\", \"wordmark\"] },\n { \"id\": \"realestate\", \"name\": \"Real Estate\", \"keywords\": [\"realestate\", \"property\", \"estate\", \"housing\", \"rent\", \"homes\", \"realty\", \"broker\", \"apartments\", \"land\"], \"paletteMood\": [\"luxe\", \"trust\", \"calm\", \"corporate\"], \"fontMood\": [\"elegant\", \"modern\", \"corporate\"], \"shapes\": [\"rounded\", \"hexagon\", \"shield\"], \"layouts\": [\"icon-left\", \"icon-top\"], \"engines\": [\"wordmark\", \"monogram\", \"abstract\"] },\n { \"id\": \"kids\", \"name\": \"Kids\", \"keywords\": [\"kids\", \"children\", \"toy\", \"daycare\", \"baby\", \"nursery\", \"preschool\", \"playgroup\", \"cartoon\"], \"paletteMood\": [\"playful\", \"friendly\", \"warm\", \"beauty\"], \"fontMood\": [\"kids\", \"playful\", \"friendly\"], \"shapes\": [\"blob\", \"squircle\", \"rounded\"], \"layouts\": [\"icon-top\", \"icon-left\"], \"engines\": [\"wordmark\", \"monogram\", \"abstract\"] }\n]\n","{\n \"colorWords\": {\n \"blue\": \"midnight-azure\", \"azure\": \"midnight-azure\", \"navy\": \"deep-indigo\",\n \"purple\": \"electric-violet\", \"violet\": \"electric-violet\", \"indigo\": \"deep-indigo\",\n \"orange\": \"sunset-flame\", \"amber\": \"amber-glow\", \"sunset\": \"sunset-flame\",\n \"green\": \"forest-verdant\", \"mint\": \"mint-clean\", \"emerald\": \"emerald-lux\",\n \"gold\": \"royal-gold\", \"golden\": \"royal-gold\",\n \"pink\": \"rose-blush\", \"rose\": \"rose-blush\", \"coral\": \"coral-crush\",\n \"teal\": \"ocean-teal\", \"cyan\": \"aqua-marine\", \"aqua\": \"aqua-marine\",\n \"black\": \"ink-noir\", \"mono\": \"slate-mono\", \"grey\": \"slate-mono\", \"gray\": \"slate-mono\", \"monochrome\": \"ink-noir\",\n \"red\": \"crimson-bold\", \"crimson\": \"crimson-bold\",\n \"wine\": \"berry-wine\", \"maroon\": \"berry-wine\", \"burgundy\": \"berry-wine\",\n \"sky\": \"sky-fresh\", \"clay\": \"terra-clay\", \"brown\": \"terra-clay\", \"earth\": \"terra-clay\",\n \"lime\": \"cyber-lime\", \"steel\": \"steel-blue\"\n },\n \"vibeWords\": {\n \"fast\": \"bold\", \"quick\": \"bold\", \"speed\": \"bold\", \"power\": \"bold\", \"strong\": \"bold\",\n \"calm\": \"minimal\", \"quiet\": \"minimal\", \"simple\": \"minimal\", \"clean\": \"minimal\",\n \"fun\": \"playful\", \"friendly\": \"playful\", \"happy\": \"playful\", \"bright\": \"playful\",\n \"premium\": \"luxe\", \"luxury\": \"luxe\", \"elegant\": \"luxe\", \"exclusive\": \"luxe\", \"royal\": \"luxe\",\n \"smart\": \"techy\", \"digital\": \"techy\", \"future\": \"techy\", \"innovative\": \"techy\",\n \"natural\": \"eco\", \"fresh\": \"eco\", \"pure\": \"eco\", \"sustainable\": \"eco\",\n \"trust\": \"finance\", \"secure\": \"finance\", \"reliable\": \"finance\", \"professional\": \"modern\"\n }\n}\n","/** Typed views over the JSON \"brain\". These are bundled into the build. */\nimport palettesJson from \"./data/palettes.json\";\nimport fontsJson from \"./data/fonts.json\";\nimport iconsJson from \"./data/icons.json\";\nimport moodsJson from \"./data/moods.json\";\nimport keywordsJson from \"./data/keywords.json\";\nimport type { FontPair, IconDef, Mood, Palette } from \"./types.js\";\n\nexport const PALETTES = palettesJson as Palette[];\nexport const FONTS = fontsJson as FontPair[];\nexport const ICONS = iconsJson as IconDef[];\nexport const MOODS = moodsJson as Mood[];\nexport const KEYWORDS = keywordsJson as {\n colorWords: Record<string, string>;\n vibeWords: Record<string, string>;\n};\n\nexport const paletteById = (id: string): Palette | undefined => PALETTES.find((p) => p.id === id);\nexport const fontById = (id: string): FontPair | undefined => FONTS.find((f) => f.id === id);\nexport const iconByKey = (key: string): IconDef | undefined => ICONS.find((i) => i.key === key);\nexport const moodById = (id: string): Mood | undefined => MOODS.find((m) => m.id === id);\n","/** Turn a free-text brief + keywords into concrete design choices — no AI. */\nimport { PALETTES, FONTS, ICONS, MOODS, KEYWORDS, paletteById, fontById, iconByKey, moodById } from \"./data.js\";\nimport type { FontPair, IconDef, LogoBrief, Mood, Palette } from \"./types.js\";\nimport type { Rng } from \"./rng.js\";\n\nconst STOP = new Set(\n \"the a an and or for of to with we our is are your you it this that in on at by as be brand company business co inc ltd studio group solutions services\".split(\n /\\s+/,\n ),\n);\n\n/** Normalise keywords + brief text into a clean token list. */\nexport function tokenize(brief: LogoBrief): string[] {\n const raw: string[] = [];\n if (Array.isArray(brief.keywords)) raw.push(...brief.keywords);\n else if (typeof brief.keywords === \"string\") raw.push(...brief.keywords.split(/[,\\s]+/));\n if (brief.brief) raw.push(...brief.brief.split(/[^\\p{L}\\p{N}]+/u));\n if (brief.industry) raw.push(brief.industry);\n if (brief.style) raw.push(brief.style);\n const seen = new Set<string>();\n const out: string[] = [];\n for (const t of raw) {\n const w = t.trim().toLowerCase();\n if (w.length < 2 || STOP.has(w) || seen.has(w)) continue;\n seen.add(w);\n out.push(w);\n }\n return out;\n}\n\nfunction overlap(a: readonly string[], b: readonly string[]): number {\n const set = new Set(b);\n let c = 0;\n for (const x of a) if (set.has(x)) c++;\n return c;\n}\n\n/** Pick the best-scoring mood for the tokens (with vibe-word nudges). */\nexport function chooseMood(tokens: string[], rng: Rng, forced?: string): Mood {\n if (forced) {\n const m = moodById(forced.toLowerCase()) || MOODS.find((x) => x.keywords.includes(forced.toLowerCase()));\n if (m) return m;\n }\n const scored = MOODS.map((m) => {\n let score = overlap(tokens, m.keywords) * 3;\n for (const t of tokens) if (KEYWORDS.vibeWords[t] === m.id) score += 2;\n return { m, score };\n });\n const max = Math.max(...scored.map((s) => s.score));\n const top = scored.filter((s) => s.score === max && max > 0).map((s) => s.m);\n if (top.length) return rng.pick(top);\n return moodById(\"modern\")!;\n}\n\nfunction byMood<T extends { mood: string[] }>(items: T[], tags: string[]): T[] {\n // Prefer the items that overlap the MOST mood tags, not merely any.\n const scored = items.map((i) => ({ i, s: overlap(i.mood, tags) }));\n const max = Math.max(0, ...scored.map((x) => x.s));\n if (max === 0) return items;\n return scored.filter((x) => x.s === max).map((x) => x.i);\n}\n\nexport function choosePalette(tokens: string[], mood: Mood, rng: Rng, forced?: string): Palette {\n if (forced) {\n const p = paletteById(forced);\n if (p) return p;\n }\n for (const t of tokens) {\n const id = KEYWORDS.colorWords[t];\n if (id) {\n const p = paletteById(id);\n if (p) return p;\n }\n }\n return rng.pick(byMood(PALETTES, mood.paletteMood));\n}\n\nexport function chooseFont(mood: Mood, rng: Rng, forced?: string): FontPair {\n if (forced) {\n const f = fontById(forced);\n if (f) return f;\n }\n return rng.pick(byMood(FONTS, mood.fontMood));\n}\n\n/** Best icon for the tokens, or undefined when nothing matches (→ mark/monogram). */\nexport function chooseIcon(tokens: string[], rng: Rng, forced?: string): IconDef | undefined {\n if (forced) {\n const i = iconByKey(forced);\n if (i) return i;\n }\n const scored = ICONS.map((icon) => ({ icon, score: overlap(tokens, icon.keywords) }));\n const max = Math.max(0, ...scored.map((s) => s.score));\n if (max === 0) return undefined;\n return rng.pick(scored.filter((s) => s.score === max).map((s) => s.icon));\n}\n","/** Deterministic hashing + seeded RNG so every logo is reproducible. */\n\n/** FNV-1a style 32-bit string hash. */\nexport function hashString(str: string): number {\n let h = 2166136261 >>> 0;\n for (let i = 0; i < str.length; i++) {\n h ^= str.charCodeAt(i);\n h = Math.imul(h, 16777619);\n }\n return h >>> 0;\n}\n\nexport interface Rng {\n next(): number;\n int(min: number, max: number): number;\n pick<T>(arr: readonly T[]): T;\n chance(p: number): boolean;\n shuffle<T>(arr: readonly T[]): T[];\n}\n\nexport function makeRng(seed: number): Rng {\n let s = seed >>> 0 || 1;\n const next = () => {\n s |= 0;\n s = (s + 0x6d2b79f5) | 0;\n let t = Math.imul(s ^ (s >>> 15), 1 | s);\n t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n };\n const int = (min: number, max: number) => min + Math.floor(next() * (max - min + 1));\n const pick = <T>(arr: readonly T[]): T => arr[Math.floor(next() * arr.length)] ?? (arr[0] as T);\n const chance = (p: number) => next() < p;\n const shuffle = <T>(arr: readonly T[]): T[] => {\n const a = [...arr];\n for (let i = a.length - 1; i > 0; i--) {\n const j = Math.floor(next() * (i + 1));\n [a[i], a[j]] = [a[j]!, a[i]!];\n }\n return a;\n };\n return { next, int, pick, chance, shuffle };\n}\n\n/** Resolve a seed that may be a string, number, or undefined into a uint32. */\nexport function resolveSeed(seed: number | string | undefined, fallback: string): number {\n if (typeof seed === \"number\") return seed >>> 0;\n if (typeof seed === \"string\" && seed.length) return hashString(seed);\n return hashString(fallback);\n}\n","/** Lightweight text helpers — no font metrics needed (SVG renders the real font). */\n\nconst NARROW = new Set(\"iIl.,:;'|!ftrj()[]{} \".split(\"\"));\nconst WIDE = new Set(\"mwMW@%\".split(\"\"));\nconst CAPS = new Set(\"ABCDEFGHKNOQRSUVXYZ\".split(\"\"));\n\n/** Rough advance width of a string at a given font size (em-relative heuristic). */\nexport function estimateTextWidth(text: string, fontSize: number, tracking = 0): number {\n let em = 0;\n for (const ch of text) {\n if (ch === \" \") em += 0.3;\n else if (NARROW.has(ch)) em += 0.3;\n else if (WIDE.has(ch)) em += 0.92;\n else if (CAPS.has(ch)) em += 0.7;\n else em += 0.56;\n }\n return em * fontSize + Math.max(0, text.length - 1) * tracking;\n}\n\n/** Derive a compact monogram (1–3 letters) from a brand name. */\nexport function initials(name: string, max = 2): string {\n const words = name\n .replace(/[^\\p{L}\\p{N}\\s]/gu, \" \")\n .split(/\\s+/)\n .filter(Boolean);\n if (words.length === 0) return \"•\";\n if (words.length === 1) {\n const w = words[0]!;\n return (w.length <= max ? w : w.slice(0, max)).toUpperCase();\n }\n return words\n .slice(0, max)\n .map((w) => w[0]!)\n .join(\"\")\n .toUpperCase();\n}\n\n/** Escape text for safe inclusion in SVG. */\nexport function esc(s: string): string {\n return s.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\");\n}\n\n/** A single-letter cap for lettermark engines. */\nexport function firstLetter(name: string): string {\n const m = name.match(/\\p{L}/u);\n return (m ? m[0] : \"•\").toUpperCase();\n}\n","/** SVG builders: enclosure shapes, gradient defs and icon rendering. */\nimport type { IconDef, ShapeKind } from \"./types.js\";\n\nlet gid = 0;\nexport function gradientId(prefix = \"g\"): string {\n return `${prefix}${(gid = (gid + 1) % 1e6)}`;\n}\n\nexport function linearGradient(id: string, from: string, to: string, angle = 60): string {\n const a = (angle * Math.PI) / 180;\n const x2 = (0.5 + Math.cos(a) / 2).toFixed(3);\n const y2 = (0.5 + Math.sin(a) / 2).toFixed(3);\n const x1 = (0.5 - Math.cos(a) / 2).toFixed(3);\n const y1 = (0.5 - Math.sin(a) / 2).toFixed(3);\n return `<linearGradient id=\"${id}\" x1=\"${x1}\" y1=\"${y1}\" x2=\"${x2}\" y2=\"${y2}\"><stop offset=\"0\" stop-color=\"${from}\"/><stop offset=\"1\" stop-color=\"${to}\"/></linearGradient>`;\n}\n\nconst n = (v: number) => Math.round(v * 100) / 100;\n\n/** An enclosure shape element centred in a `size`×`size` box, filled with `fill`. */\nexport function shapeEl(kind: ShapeKind, size: number, fill: string, stroke?: string, strokeW = 0): string {\n const c = size / 2;\n const pad = size * 0.06;\n const r = c - pad;\n const attrs = `fill=\"${fill}\"${stroke ? ` stroke=\"${stroke}\" stroke-width=\"${strokeW}\"` : \"\"}`;\n\n switch (kind) {\n case \"none\":\n return \"\";\n case \"circle\":\n return `<circle cx=\"${n(c)}\" cy=\"${n(c)}\" r=\"${n(r)}\" ${attrs}/>`;\n case \"rounded\":\n return `<rect x=\"${n(pad)}\" y=\"${n(pad)}\" width=\"${n(size - pad * 2)}\" height=\"${n(size - pad * 2)}\" rx=\"${n(size * 0.16)}\" ${attrs}/>`;\n case \"squircle\":\n return `<rect x=\"${n(pad)}\" y=\"${n(pad)}\" width=\"${n(size - pad * 2)}\" height=\"${n(size - pad * 2)}\" rx=\"${n(size * 0.3)}\" ${attrs}/>`;\n case \"diamond\": {\n const pts = [\n [c, c - r],\n [c + r, c],\n [c, c + r],\n [c - r, c],\n ]\n .map((p) => `${n(p[0]!)},${n(p[1]!)}`)\n .join(\" \");\n return `<polygon points=\"${pts}\" rx=\"8\" ${attrs}/>`;\n }\n case \"hexagon\": {\n const pts = [];\n for (let i = 0; i < 6; i++) {\n const a = (Math.PI / 180) * (60 * i - 90);\n pts.push(`${n(c + r * Math.cos(a))},${n(c + r * Math.sin(a))}`);\n }\n return `<polygon points=\"${pts.join(\" \")}\" ${attrs}/>`;\n }\n case \"shield\": {\n const d = `M ${n(c)} ${n(c - r)} L ${n(c + r * 0.82)} ${n(c - r * 0.55)} L ${n(c + r * 0.82)} ${n(c + r * 0.1)} C ${n(c + r * 0.82)} ${n(c + r * 0.6)} ${n(c + r * 0.45)} ${n(c + r * 0.9)} ${n(c)} ${n(c + r)} C ${n(c - r * 0.45)} ${n(c + r * 0.9)} ${n(c - r * 0.82)} ${n(c + r * 0.6)} ${n(c - r * 0.82)} ${n(c + r * 0.1)} L ${n(c - r * 0.82)} ${n(c - r * 0.55)} Z`;\n return `<path d=\"${d}\" ${attrs}/>`;\n }\n case \"seal\": {\n const teeth = 24;\n const inner = r * 0.9;\n let d = \"\";\n const steps = teeth * 6;\n for (let i = 0; i <= steps; i++) {\n const t = (i / steps) * Math.PI * 2;\n const rad = inner + (r - inner) * (0.5 + 0.5 * Math.cos(teeth * t));\n const x = c + rad * Math.cos(t - Math.PI / 2);\n const y = c + rad * Math.sin(t - Math.PI / 2);\n d += `${i === 0 ? \"M\" : \"L\"} ${n(x)} ${n(y)} `;\n }\n return `<path d=\"${d}Z\" ${attrs}/>`;\n }\n case \"blob\": {\n // A fixed smooth organic blob authored in a 100-box, scaled to size.\n const k = size / 100;\n const p = (x: number, y: number) => `${n(x * k)} ${n(y * k)}`;\n const d = `M ${p(50, 8)} C ${p(74, 8)} ${p(92, 24)} ${p(92, 48)} C ${p(92, 72)} ${p(78, 92)} ${p(52, 92)} C ${p(28, 92)} ${p(8, 78)} ${p(8, 52)} C ${p(8, 28)} ${p(26, 8)} ${p(50, 8)} Z`;\n return `<path d=\"${d}\" ${attrs}/>`;\n }\n default:\n return `<circle cx=\"${n(c)}\" cy=\"${n(c)}\" r=\"${n(r)}\" ${attrs}/>`;\n }\n}\n\n/** Render a line-icon (24-grid) centred at (cx,cy) at box size `box`. */\nexport function iconEl(icon: IconDef, box: number, cx: number, cy: number, color: string, strokeW = 2): string {\n const sc = box / 24;\n const tx = cx - box / 2;\n const ty = cy - box / 2;\n return `<g transform=\"translate(${n(tx)} ${n(ty)}) scale(${n(sc)})\" fill=\"none\" stroke=\"${color}\" stroke-width=\"${strokeW}\" stroke-linecap=\"round\" stroke-linejoin=\"round\">${icon.svg}</g>`;\n}\n","/** The mark engines. Each returns a Mark (SVG body in a size×size box + defs). */\nimport type { Mark, Spec } from \"./render.js\";\nimport { shapeEl, iconEl, linearGradient } from \"./shapes.js\";\nimport { esc } from \"./text.js\";\nimport type { ShapeKind } from \"./types.js\";\n\nconst nn = (v: number) => Math.round(v * 100) / 100;\nconst inkFor = (spec: Spec) => (spec.background === \"transparent\" ? spec.palette.primary : spec.palette.on);\n\n/** Monogram: initials on a gradient enclosure. */\nexport function monogramMark(spec: Spec): Mark {\n const s = spec.size;\n const gid = spec.uid(\"m\");\n const defs = linearGradient(gid, spec.palette.from, spec.palette.to, spec.rng.int(30, 120));\n const shape: ShapeKind = spec.shape === \"none\" ? \"squircle\" : spec.shape;\n const fs = spec.initials.length >= 2 ? s * 0.42 : s * 0.54;\n const body =\n shapeEl(shape, s, `url(#${gid})`) +\n `<text x=\"${nn(s / 2)}\" y=\"${nn(s / 2 + fs * 0.02)}\" font-family=\"${spec.font.stack}\" font-weight=\"${spec.font.weight}\" font-size=\"${nn(fs)}\" fill=\"${spec.palette.on}\" text-anchor=\"middle\" dominant-baseline=\"central\">${esc(spec.initials)}</text>`;\n return { svg: body, size: s, defs };\n}\n\n/** Lettermark: one big display letter, filled with the brand gradient. */\nexport function lettermarkMark(spec: Spec): Mark {\n const s = spec.size;\n const gid = spec.uid(\"l\");\n const defs = linearGradient(gid, spec.palette.from, spec.palette.to, spec.rng.int(20, 120));\n const enclosed = spec.shape !== \"none\" && spec.rng.chance(0.4);\n const fs = s * 0.86;\n let body = \"\";\n let fill = `url(#${gid})`;\n if (enclosed) {\n body += shapeEl(spec.shape, s, `url(#${gid})`);\n fill = spec.palette.on;\n }\n body += `<text x=\"${nn(s / 2)}\" y=\"${nn(s / 2 + fs * 0.03)}\" font-family=\"${spec.font.stack}\" font-weight=\"${spec.font.weight}\" font-size=\"${nn(fs)}\" fill=\"${fill}\" text-anchor=\"middle\" dominant-baseline=\"central\">${esc(spec.letter)}</text>`;\n return { svg: body, size: s, defs };\n}\n\n/** Icon mark: an icon glyph, optionally on a gradient enclosure. */\nexport function iconMark(spec: Spec): Mark {\n const s = spec.size;\n const gid = spec.uid(\"i\");\n const defs = linearGradient(gid, spec.palette.from, spec.palette.to, spec.rng.int(30, 120));\n if (!spec.icon) return monogramMark(spec);\n if (spec.shape === \"none\") {\n const body = iconEl(spec.icon, s * 0.94, s / 2, s / 2, `url(#${gid})`, 2.1);\n return { svg: body, size: s, defs };\n }\n const body =\n shapeEl(spec.shape, s, `url(#${gid})`) +\n iconEl(spec.icon, s * 0.52, s / 2, s / 2, spec.palette.on, 2);\n return { svg: body, size: s, defs };\n}\n\n/** Geometric / abstract mark — seeded generative styles, no text. */\nexport function abstractMark(spec: Spec): Mark {\n const s = spec.size;\n const c = s / 2;\n const gid = spec.uid(\"a\");\n const defs = linearGradient(gid, spec.palette.from, spec.palette.to, spec.rng.int(20, 140));\n const g = `url(#${gid})`;\n const styles = [\"orbit\", \"venn\", \"arcs\", \"burst\", \"waves\", \"grid\"] as const;\n const style = spec.rng.pick(styles);\n let body = \"\";\n\n if (style === \"orbit\") {\n const R = s * 0.34;\n body += `<circle cx=\"${nn(c)}\" cy=\"${nn(c)}\" r=\"${nn(R)}\" fill=\"none\" stroke=\"${g}\" stroke-width=\"${nn(s * 0.035)}\"/>`;\n body += `<circle cx=\"${nn(c)}\" cy=\"${nn(c)}\" r=\"${nn(s * 0.1)}\" fill=\"${g}\"/>`;\n const base = spec.rng.int(0, 360);\n for (let k = 0; k < 3; k++) {\n const a = ((base + k * 120) * Math.PI) / 180;\n const x = c + R * Math.cos(a);\n const y = c + R * Math.sin(a);\n body += `<circle cx=\"${nn(x)}\" cy=\"${nn(y)}\" r=\"${nn(s * 0.06)}\" fill=\"${spec.palette.accent}\"/>`;\n body += `<line x1=\"${nn(c)}\" y1=\"${nn(c)}\" x2=\"${nn(x)}\" y2=\"${nn(y)}\" stroke=\"${g}\" stroke-width=\"${nn(s * 0.02)}\" opacity=\"0.5\"/>`;\n }\n } else if (style === \"venn\") {\n const r = s * 0.24;\n const off = s * 0.14;\n const centers = [\n [c - off, c - off * 0.4],\n [c + off, c - off * 0.4],\n [c, c + off],\n ];\n centers.forEach((p, i) => {\n body += `<circle cx=\"${nn(p[0]!)}\" cy=\"${nn(p[1]!)}\" r=\"${nn(r)}\" fill=\"${i === 0 ? spec.palette.from : i === 1 ? spec.palette.to : spec.palette.accent}\" opacity=\"0.75\"/>`;\n });\n } else if (style === \"arcs\") {\n for (let i = 0; i < 3; i++) {\n const R = s * (0.16 + i * 0.11);\n const a0 = (spec.rng.int(0, 180) * Math.PI) / 180;\n const a1 = a0 + Math.PI * 1.3;\n const x0 = c + R * Math.cos(a0);\n const y0 = c + R * Math.sin(a0);\n const x1 = c + R * Math.cos(a1);\n const y1 = c + R * Math.sin(a1);\n body += `<path d=\"M ${nn(x0)} ${nn(y0)} A ${nn(R)} ${nn(R)} 0 1 1 ${nn(x1)} ${nn(y1)}\" fill=\"none\" stroke=\"${g}\" stroke-width=\"${nn(s * 0.05)}\" stroke-linecap=\"round\"/>`;\n }\n } else if (style === \"burst\") {\n const spokes = spec.rng.int(6, 10);\n const base = spec.rng.int(0, 360);\n for (let k = 0; k < spokes; k++) {\n const a = ((base + (360 / spokes) * k) * Math.PI) / 180;\n const r0 = s * 0.12;\n const r1 = s * 0.4;\n body += `<line x1=\"${nn(c + r0 * Math.cos(a))}\" y1=\"${nn(c + r0 * Math.sin(a))}\" x2=\"${nn(c + r1 * Math.cos(a))}\" y2=\"${nn(c + r1 * Math.sin(a))}\" stroke=\"${g}\" stroke-width=\"${nn(s * 0.035)}\" stroke-linecap=\"round\"/>`;\n }\n body += `<circle cx=\"${nn(c)}\" cy=\"${nn(c)}\" r=\"${nn(s * 0.09)}\" fill=\"${spec.palette.accent}\"/>`;\n } else if (style === \"waves\") {\n for (let i = 0; i < 3; i++) {\n const y = c - s * 0.14 + i * s * 0.14;\n const amp = s * 0.06;\n const d = `M ${nn(s * 0.14)} ${nn(y)} C ${nn(s * 0.32)} ${nn(y - amp)} ${nn(s * 0.42)} ${nn(y + amp)} ${nn(s * 0.5)} ${nn(y)} C ${nn(s * 0.58)} ${nn(y - amp)} ${nn(s * 0.68)} ${nn(y + amp)} ${nn(s * 0.86)} ${nn(y)}`;\n body += `<path d=\"${d}\" fill=\"none\" stroke=\"${g}\" stroke-width=\"${nn(s * 0.045)}\" stroke-linecap=\"round\" opacity=\"${nn(1 - i * 0.22)}\"/>`;\n }\n } else {\n // grid of dots forming a rounded square\n const n = 3;\n const gap = s * 0.2;\n const start = c - gap;\n for (let r = 0; r < n; r++) {\n for (let col = 0; col < n; col++) {\n const x = start + col * gap;\n const y = start + r * gap;\n const rad = s * 0.055 * (1 + ((r + col) % 2) * 0.4);\n body += `<circle cx=\"${nn(x)}\" cy=\"${nn(y)}\" r=\"${nn(rad)}\" fill=\"${(r + col) % 2 ? spec.palette.accent : g}\"/>`;\n }\n }\n }\n\n return { svg: body, size: s, defs };\n}\n\n/** Emblem: a seal/ring with an icon and the brand name curved along the bottom. */\nexport function emblemLogo(spec: Spec): Mark {\n const s = spec.size;\n const c = s / 2;\n const gid = spec.uid(\"e\");\n const defs0 = linearGradient(gid, spec.palette.from, spec.palette.to, spec.rng.int(30, 120));\n const g = `url(#${gid})`;\n const ink = inkFor(spec);\n const R = s * 0.46;\n const arcId = spec.uid(\"arc\");\n // bottom arc for the curved name (left → right along the lower ring)\n const ar = s * 0.34;\n const arcPath = `M ${nn(c - ar)} ${nn(c + ar * 0.35)} A ${nn(ar)} ${nn(ar)} 0 0 0 ${nn(c + ar)} ${nn(c + ar * 0.35)}`;\n const defs = defs0 + `<path id=\"${arcId}\" d=\"${arcPath}\" fill=\"none\"/>`;\n\n let body = \"\";\n body += `<circle cx=\"${nn(c)}\" cy=\"${nn(c)}\" r=\"${nn(R)}\" fill=\"none\" stroke=\"${g}\" stroke-width=\"${nn(s * 0.03)}\"/>`;\n body += `<circle cx=\"${nn(c)}\" cy=\"${nn(c)}\" r=\"${nn(R - s * 0.05)}\" fill=\"none\" stroke=\"${ink}\" stroke-width=\"${nn(s * 0.006)}\" opacity=\"0.6\"/>`;\n if (spec.icon) body += iconEl(spec.icon, s * 0.34, c, c - s * 0.09, g, 2);\n else\n body += `<text x=\"${nn(c)}\" y=\"${nn(c - s * 0.05)}\" font-family=\"${spec.font.stack}\" font-weight=\"${spec.font.weight}\" font-size=\"${nn(s * 0.32)}\" fill=\"${g}\" text-anchor=\"middle\" dominant-baseline=\"central\">${esc(spec.initials)}</text>`;\n // side dot dividers\n body += `<circle cx=\"${nn(c - s * 0.3)}\" cy=\"${nn(c + s * 0.1)}\" r=\"${nn(s * 0.014)}\" fill=\"${ink}\"/>`;\n body += `<circle cx=\"${nn(c + s * 0.3)}\" cy=\"${nn(c + s * 0.1)}\" r=\"${nn(s * 0.014)}\" fill=\"${ink}\"/>`;\n // curved name\n const fs = s * 0.088;\n body += `<text font-family=\"${spec.font.stack}\" font-weight=\"${spec.font.weight}\" font-size=\"${nn(fs)}\" fill=\"${ink}\" letter-spacing=\"${nn(fs * 0.14)}\"><textPath href=\"#${arcId}\" startOffset=\"50%\" text-anchor=\"middle\">${esc(spec.name.toUpperCase())}</textPath></text>`;\n return { svg: body, size: s, defs };\n}\n","/** Shared render context, the wordmark, layout composition and the SVG wrapper. */\nimport type { Background, FontPair, IconDef, Layout, Palette, ShapeKind } from \"./types.js\";\nimport type { Rng } from \"./rng.js\";\nimport { estimateTextWidth, esc } from \"./text.js\";\n\nexport interface Spec {\n name: string;\n initials: string;\n letter: string;\n palette: Palette;\n font: FontPair;\n icon?: IconDef;\n shape: ShapeKind;\n layout: Layout;\n size: number;\n background: Background;\n rng: Rng;\n tokens: string[];\n embedFont: boolean;\n /** Deterministic id generator for gradients/paths (seed-derived, no globals). */\n uid: (prefix?: string) => string;\n}\n\nexport interface Mark {\n /** SVG body drawn in a `size`×`size` box at the origin. */\n svg: string;\n size: number;\n /** Extra <defs> content (gradients) this mark needs. */\n defs?: string;\n}\n\nconst nn = (v: number) => Math.round(v * 100) / 100;\n\n/** Google-fonts @import so a standalone .svg still renders with the right face in a browser. */\nfunction fontImport(font: FontPair): string {\n const fam = font.display.replace(/ /g, \"+\");\n return `<style>@import url('https://fonts.googleapis.com/css2?family=${fam}:wght@${font.weight}&display=swap');</style>`;\n}\n\n/** Colour used for wordmark text given the background. */\nfunction inkColor(spec: Spec): string {\n return spec.background === \"transparent\" ? spec.palette.primary : spec.palette.on;\n}\n\n/** The wordmark text element(s). */\nexport function wordmarkEl(spec: Spec, x: number, y: number, fontSize: number, anchor: \"start\" | \"middle\"): string {\n const isLuxe = spec.font.mood.includes(\"luxe\") || spec.font.mood.includes(\"elegant\");\n const tracking = isLuxe ? fontSize * 0.04 : 0;\n const ls = tracking ? ` letter-spacing=\"${nn(tracking)}\"` : \"\";\n return `<text x=\"${nn(x)}\" y=\"${nn(y)}\" font-family=\"${spec.font.stack}\" font-weight=\"${spec.font.weight}\" font-size=\"${nn(fontSize)}\" fill=\"${inkColor(spec)}\" text-anchor=\"${anchor}\" dominant-baseline=\"middle\"${ls}>${esc(spec.name)}</text>`;\n}\n\nfunction background(spec: Spec, w: number, h: number, defsId: string): string {\n if (spec.background === \"transparent\") return \"\";\n if (spec.background === \"solid\") return `<rect width=\"${w}\" height=\"${h}\" fill=\"${spec.palette.bg}\"/>`;\n if (spec.background === \"surface\") return `<rect width=\"${w}\" height=\"${h}\" fill=\"${spec.palette.surface}\"/>`;\n return `<rect width=\"${w}\" height=\"${h}\" fill=\"url(#${defsId})\"/>`; // gradient\n}\n\n/** Wrap body + defs in a complete, self-contained SVG string. */\nexport function wrapSvg(spec: Spec, w: number, h: number, defs: string, body: string): string {\n const bgId = \"bg\";\n const bgDefs = spec.background === \"gradient\"\n ? `<linearGradient id=\"${bgId}\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"${spec.palette.from}\"/><stop offset=\"1\" stop-color=\"${spec.palette.to}\"/></linearGradient>`\n : \"\";\n const fontStyle = spec.embedFont ? fontImport(spec.font) : \"\";\n return (\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${nn(w)}\" height=\"${nn(h)}\" viewBox=\"0 0 ${nn(w)} ${nn(h)}\" role=\"img\" aria-label=\"${esc(spec.name)} logo\">` +\n fontStyle +\n `<defs>${bgDefs}${defs}</defs>` +\n background(spec, w, h, bgId) +\n body +\n `</svg>`\n );\n}\n\n/** Compose a mark + wordmark into a finished logo per the layout. */\nexport function compose(spec: Spec, mark: Mark): { svg: string; width: number; height: number } {\n const pad = Math.round(spec.size * 0.12);\n const defs = mark.defs ?? \"\";\n\n if (spec.layout === \"mark-only\" || spec.layout === \"emblem\") {\n const w = mark.size + pad * 2;\n const body = `<g transform=\"translate(${pad} ${pad})\">${mark.svg}</g>`;\n return { svg: wrapSvg(spec, w, w, defs, body), width: w, height: w };\n }\n\n if (spec.layout === \"wordmark-only\") {\n const fontSize = Math.round(spec.size * 0.4);\n const tw = estimateTextWidth(spec.name, fontSize, spec.font.mood.includes(\"luxe\") ? fontSize * 0.04 : 0);\n const w = Math.round(tw + pad * 2);\n const h = Math.round(fontSize * 1.5);\n // small accent tick before the word\n const tick = `<rect x=\"${pad - Math.round(spec.size * 0.03)}\" y=\"${Math.round(h / 2 - fontSize * 0.36)}\" width=\"${Math.round(spec.size * 0.014)}\" height=\"${Math.round(fontSize * 0.72)}\" rx=\"2\" fill=\"${spec.palette.primary}\"/>`;\n const body = tick + wordmarkEl(spec, pad, h / 2, fontSize, \"start\");\n return { svg: wrapSvg(spec, w, h, defs, body), width: w, height: h };\n }\n\n if (spec.layout === \"icon-top\" || spec.layout === \"stacked\") {\n const markSize = spec.size;\n const fontSize = Math.round(spec.size * (spec.layout === \"stacked\" ? 0.34 : 0.28));\n const gap = Math.round(spec.size * 0.14);\n const tw = estimateTextWidth(spec.name, fontSize, spec.font.mood.includes(\"luxe\") ? fontSize * 0.04 : 0);\n const w = Math.round(Math.max(markSize, tw) + pad * 2);\n const h = Math.round(markSize + gap + fontSize * 1.3 + pad);\n const markX = (w - markSize) / 2;\n const body =\n `<g transform=\"translate(${nn(markX)} ${pad})\">${mark.svg}</g>` +\n wordmarkEl(spec, w / 2, pad + markSize + gap + fontSize * 0.5, fontSize, \"middle\");\n return { svg: wrapSvg(spec, w, h, defs, body), width: w, height: h };\n }\n\n // icon-left (default lockup)\n const markSize = spec.size;\n const fontSize = Math.round(spec.size * 0.4);\n const gap = Math.round(spec.size * 0.16);\n const tw = estimateTextWidth(spec.name, fontSize, spec.font.mood.includes(\"luxe\") ? fontSize * 0.04 : 0);\n const w = Math.round(markSize + gap + tw + pad * 2);\n const h = Math.round(markSize + pad * 2);\n const body =\n `<g transform=\"translate(${pad} ${pad})\">${mark.svg}</g>` +\n wordmarkEl(spec, pad + markSize + gap, h / 2, fontSize, \"start\");\n return { svg: wrapSvg(spec, w, h, defs, body), width: w, height: h };\n}\n","/** Orchestrator: brief → deterministic design choices → engine → finished SVG logo. */\nimport { tokenize, chooseMood, choosePalette, chooseFont, chooseIcon } from \"./brief.js\";\nimport { makeRng, resolveSeed } from \"./rng.js\";\nimport { initials, firstLetter } from \"./text.js\";\nimport { monogramMark, iconMark, abstractMark, emblemLogo, lettermarkMark } from \"./engines.js\";\nimport { compose, type Mark, type Spec } from \"./render.js\";\nimport type { Engine, Interpreted, Layout, LogoBrief, LogoResult, ShapeKind } from \"./types.js\";\nimport type { Rng } from \"./rng.js\";\nimport type { Mood } from \"./types.js\";\n\nfunction chooseEngine(mood: Mood, rng: Rng, forced?: Engine): Engine {\n if (forced) return forced;\n return rng.pick(mood.engines);\n}\n\nfunction chooseLayout(mood: Mood, engine: Engine, rng: Rng, forced?: Layout): Layout {\n if (forced) return forced;\n if (engine === \"emblem\") return \"emblem\";\n const opts = mood.layouts.filter((l) => l !== \"emblem\");\n return opts.length ? rng.pick(opts) : \"icon-left\";\n}\n\nfunction markFor(engine: Engine, spec: Spec): Mark {\n switch (engine) {\n case \"monogram\":\n return monogramMark(spec);\n case \"lettermark\":\n return lettermarkMark(spec);\n case \"abstract\":\n return abstractMark(spec);\n case \"emblem\":\n return emblemLogo(spec);\n case \"wordmark\":\n default:\n return iconMark(spec);\n }\n}\n\n/** Generate a single deterministic logo from a brief. */\nexport function generateLogo(brief: LogoBrief): LogoResult {\n if (!brief.name || !brief.name.trim()) throw new Error(\"generateLogo: `name` is required.\");\n const seed = resolveSeed(brief.seed, brief.name + \"|\" + (typeof brief.keywords === \"string\" ? brief.keywords : (brief.keywords || []).join(\",\")));\n const rng = makeRng(seed);\n const tokens = tokenize(brief);\n\n const mood = chooseMood(tokens, rng, brief.industry || brief.style);\n const palette = choosePalette(tokens, mood, rng, brief.palette);\n const font = chooseFont(mood, rng, brief.font);\n const iconDef = chooseIcon(tokens, rng, brief.icon);\n const engine = chooseEngine(mood, rng, brief.engine);\n const shape: ShapeKind = brief.shape ?? rng.pick(mood.shapes);\n const layout = chooseLayout(mood, engine, rng, brief.layout);\n\n let idc = 0;\n const uid = (p = \"g\") => `${p}${seed.toString(36)}${idc++}`;\n\n const spec: Spec = {\n name: brief.name.trim(),\n initials: initials(brief.name),\n letter: firstLetter(brief.name),\n palette,\n font,\n icon: iconDef,\n shape,\n layout,\n size: brief.size ?? 480,\n background: brief.background ?? \"surface\",\n rng,\n tokens,\n embedFont: true,\n uid,\n };\n\n const mark = markFor(engine, spec);\n const composed = compose(spec, mark);\n\n const notes: string[] = [\n `mood \"${mood.name}\"${tokens.length ? \" from keywords\" : \" (default)\"}`,\n `palette ${palette.name}`,\n `type ${font.display} / ${font.body}`,\n iconDef ? `icon \"${iconDef.key}\"` : `no icon match → ${engine} mark`,\n `engine ${engine}, layout ${layout}, shape ${shape}`,\n ];\n const interpreted: Interpreted = {\n keywords: tokens,\n mood: mood.id,\n iconKey: iconDef?.key,\n paletteId: palette.id,\n fontId: font.id,\n notes,\n };\n\n return {\n svg: composed.svg,\n width: composed.width,\n height: composed.height,\n engine,\n palette,\n font,\n icon: iconDef?.key,\n shape,\n layout,\n mood: mood.id,\n name: spec.name,\n seed,\n interpreted,\n };\n}\n\n/** Generate N reproducible variations of the same brief (the \"concepts\" grid). */\nexport function generateLogoSet(brief: LogoBrief, count = 12): LogoResult[] {\n const base = resolveSeed(brief.seed, brief.name);\n const out: LogoResult[] = [];\n for (let i = 0; i < count; i++) {\n out.push(generateLogo({ ...brief, seed: (base + i * 0x9e3779b1) >>> 0 }));\n }\n return out;\n}\n\n/** Interpret a brief WITHOUT rendering — see what the generator would choose. */\nexport function suggest(brief: LogoBrief): Interpreted {\n return generateLogo(brief).interpreted;\n}\n","/**\n * Brand-in-a-box: from one brief, a consistent identity — logo variants, a\n * favicon/app-icon set, the colour palette and CSS variables. Everything shares\n * the same seed → the same palette, type and icon across every asset.\n */\nimport { generateLogo } from \"./generate.js\";\nimport type { LogoBrief, LogoResult, Palette, FontPair } from \"./types.js\";\n\nexport interface FaviconSet {\n /** One scalable SVG mark (a filled tile — ideal at any size). */\n svg: string;\n /** The same mark sized for common favicon / app-icon dimensions. */\n sizes: { size: number; svg: string }[];\n /** Ready-to-paste <link> / <meta> tags. */\n links: string;\n /** manifest.webmanifest \"icons\" entries (for PNGs you rasterize via @lacspace/image). */\n manifestIcons: { src: string; sizes: string; type: string }[];\n}\n\nexport interface BrandColor {\n role: string;\n hex: string;\n}\n\nexport interface BrandKit {\n name: string;\n /** Horizontal lockup (icon + wordmark) — the primary logo. */\n primary: LogoResult;\n /** Stacked (icon over wordmark). */\n stacked: LogoResult;\n /** The mark alone (app icon / avatar). */\n mark: LogoResult;\n /** Wordmark only, on transparent. */\n wordmark: LogoResult;\n /** Single-colour version for stamps / watermarks. */\n mono: LogoResult;\n favicon: FaviconSet;\n palette: Palette;\n font: FontPair;\n colors: BrandColor[];\n /** A drop-in CSS custom-property block. */\n css: string;\n}\n\nconst FAVICON_SIZES = [16, 32, 48, 64, 180, 192, 512];\n\nfunction resize(svg: string, size: number): string {\n return svg\n .replace(/width=\"[^\"]*\"/, `width=\"${size}\"`)\n .replace(/height=\"[^\"]*\"/, `height=\"${size}\"`);\n}\n\n/** Build a favicon / app-icon set from a brief (a bold, filled mark tile). */\nexport function generateFavicon(brief: LogoBrief, sizes: number[] = FAVICON_SIZES): FaviconSet {\n const base = generateLogo(brief);\n const mark = generateLogo({\n ...brief,\n seed: base.seed,\n palette: brief.palette ?? base.palette.id,\n engine: base.icon ? \"wordmark\" : \"monogram\",\n icon: base.icon,\n shape: brief.shape && brief.shape !== \"none\" ? brief.shape : \"squircle\",\n layout: \"mark-only\",\n background: \"gradient\",\n size: 512,\n });\n const links =\n `<link rel=\"icon\" href=\"/favicon.svg\" type=\"image/svg+xml\">\\n` +\n `<link rel=\"icon\" href=\"/favicon-32.png\" sizes=\"32x32\" type=\"image/png\">\\n` +\n `<link rel=\"apple-touch-icon\" href=\"/apple-touch-icon.png\" sizes=\"180x180\">`;\n return {\n svg: mark.svg,\n sizes: sizes.map((s) => ({ size: s, svg: resize(mark.svg, s) })),\n links,\n manifestIcons: [192, 512].map((s) => ({ src: `/icon-${s}.png`, sizes: `${s}x${s}`, type: \"image/png\" })),\n };\n}\n\nfunction cssVars(p: Palette, f: FontPair): string {\n return [\n \":root {\",\n ` --brand-bg: ${p.bg};`,\n ` --brand-surface: ${p.surface};`,\n ` --brand-primary: ${p.primary};`,\n ` --brand-accent: ${p.accent};`,\n ` --brand-on: ${p.on};`,\n ` --brand-gradient: linear-gradient(60deg, ${p.from}, ${p.to});`,\n ` --brand-font-display: ${f.stack};`,\n \"}\",\n ].join(\"\\n\");\n}\n\n/** From one brief → a full, consistent brand identity. */\nexport function generateBrandKit(brief: LogoBrief): BrandKit {\n const base = generateLogo({ ...brief, layout: \"icon-left\" });\n // Lock every downstream choice so all assets match the primary logo.\n const lock: Partial<LogoBrief> = {\n seed: base.seed,\n palette: brief.palette ?? base.palette.id,\n font: brief.font ?? base.font.id,\n engine: base.engine,\n icon: base.icon,\n shape: base.shape,\n keywords: brief.keywords,\n industry: brief.industry,\n };\n const variant = (layout: LogoBrief[\"layout\"], background: LogoBrief[\"background\"] = \"surface\") =>\n generateLogo({ ...brief, ...lock, layout, background });\n\n return {\n name: base.name,\n primary: variant(\"icon-left\"),\n stacked: variant(\"icon-top\"),\n mark: variant(\"mark-only\", \"gradient\"),\n wordmark: variant(\"wordmark-only\", \"transparent\"),\n mono: generateLogo({ ...brief, ...lock, palette: \"slate-mono\", layout: \"icon-left\", background: \"transparent\" }),\n favicon: generateFavicon({ ...brief, ...lock }),\n palette: base.palette,\n font: base.font,\n colors: [\n { role: \"primary\", hex: base.palette.primary },\n { role: \"accent\", hex: base.palette.accent },\n { role: \"gradient-from\", hex: base.palette.from },\n { role: \"gradient-to\", hex: base.palette.to },\n { role: \"surface\", hex: base.palette.surface },\n { role: \"on\", hex: base.palette.on },\n ],\n css: cssVars(base.palette, base.font),\n };\n}\n","/**\n * animateLogo — turn any generated logo into a self-contained *animated* SVG\n * that \"crafts itself\" on load: it wipes/scales in and a light shimmer sweeps\n * across the mark. Pure CSS keyframes embedded in the SVG — no JS, works in any\n * browser, README or site. Deterministic; respects prefers-reduced-motion.\n */\nimport { generateLogo } from \"./generate.js\";\nimport type { LogoBrief, LogoResult } from \"./types.js\";\n\nexport interface AnimateOptions {\n /** Total reveal duration in ms (default 1500). */\n duration?: number;\n /** Loop forever instead of playing once (default false). */\n loop?: boolean;\n /** Add the sweeping shimmer highlight (default true). */\n shimmer?: boolean;\n}\n\n/** Wrap a logo (a LogoResult or a brief) in an embedded CSS reveal animation. */\nexport function animateLogo(input: LogoResult | LogoBrief, opts: AnimateOptions = {}): string {\n const result = \"svg\" in input ? (input as LogoResult) : generateLogo(input as LogoBrief);\n const w = result.width;\n const h = result.height;\n const dur = opts.duration ?? 1500;\n const iter = opts.loop ? \"infinite\" : \"1\";\n const shimmer = opts.shimmer !== false;\n\n const style =\n `<style>` +\n `@keyframes lac-in{0%{opacity:0;transform:scale(.9)}60%{opacity:1}100%{opacity:1;transform:scale(1)}}` +\n `@keyframes lac-wipe{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}` +\n `@keyframes lac-shim{0%{transform:translateX(${(-w * 0.6).toFixed(0)}px) skewX(-16deg)}` +\n `55%{transform:translateX(${(w * 1.2).toFixed(0)}px) skewX(-16deg)}` +\n `100%{transform:translateX(${(w * 1.2).toFixed(0)}px) skewX(-16deg)}}` +\n `.lac-root{transform-origin:50% 50%;` +\n `animation:lac-in ${dur}ms cubic-bezier(.2,.75,.2,1) ${iter} both,` +\n `lac-wipe ${Math.round(dur * 0.7)}ms cubic-bezier(.4,0,.2,1) ${iter} both}` +\n `.lac-shim{animation:lac-shim ${Math.round(dur * 1.25)}ms ease ${iter} both;mix-blend-mode:overlay}` +\n `@media(prefers-reduced-motion:reduce){.lac-root{animation:none;clip-path:none}.lac-shim{display:none}}` +\n `</style>`;\n\n const shimDefs = shimmer\n ? `<linearGradient id=\"lac-shim-g\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\"><stop offset=\"0\" stop-color=\"#fff\" stop-opacity=\"0\"/><stop offset=\".5\" stop-color=\"#fff\" stop-opacity=\".55\"/><stop offset=\"1\" stop-color=\"#fff\" stop-opacity=\"0\"/></linearGradient>`\n : \"\";\n const shimRect = shimmer\n ? `<rect class=\"lac-shim\" x=\"0\" y=\"0\" width=\"${(w * 0.4).toFixed(0)}\" height=\"${h}\" fill=\"url(#lac-shim-g)\"/>`\n : \"\";\n\n // Tag the root <svg> so the CSS can target it, inject the style + shimmer defs\n // right after the opening tag, and append the shimmer rect before </svg>.\n let svg = result.svg.replace(/^<svg /, `<svg class=\"lac-root\" `);\n svg = svg.replace(/(<svg\\b[^>]*>)/, `$1${style}<defs>${shimDefs}</defs>`);\n svg = svg.replace(/<\\/svg>\\s*$/, `${shimRect}</svg>`);\n return svg;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/data/palettes.json","../src/data/fonts.json","../src/data/icons.json","../src/data/moods.json","../src/data/keywords.json","../src/data.ts","../src/brief.ts","../src/rng.ts","../src/text.ts","../src/shapes.ts","../src/engines.ts","../src/render.ts","../src/generate.ts","../src/brand.ts","../src/animate.ts"],"names":["body","n","nn","w","fontSize","tw","h","markSize","gap","background"],"mappings":"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","file":"index.cjs","sourcesContent":["[\n { \"id\": \"midnight-azure\", \"name\": \"Midnight Azure\", \"mood\": [\"tech\", \"trust\", \"bold\", \"corporate\"], \"bg\": \"#0b1020\", \"surface\": \"#141a2e\", \"primary\": \"#3b82f6\", \"accent\": \"#22d3ee\", \"on\": \"#eef4ff\", \"from\": \"#0BB9D9\", \"to\": \"#3B82F6\" },\n { \"id\": \"electric-violet\", \"name\": \"Electric Violet\", \"mood\": [\"tech\", \"creative\", \"bold\", \"future\"], \"bg\": \"#0c0a1a\", \"surface\": \"#171235\", \"primary\": \"#7c3aed\", \"accent\": \"#3b82f6\", \"on\": \"#f3efff\", \"from\": \"#3B82F6\", \"to\": \"#7C3AED\" },\n { \"id\": \"sunset-flame\", \"name\": \"Sunset Flame\", \"mood\": [\"warm\", \"bold\", \"food\", \"energy\"], \"bg\": \"#1a0d08\", \"surface\": \"#2a140b\", \"primary\": \"#f97316\", \"accent\": \"#ef4444\", \"on\": \"#fff4ec\", \"from\": \"#F97316\", \"to\": \"#EF4444\" },\n { \"id\": \"forest-verdant\", \"name\": \"Forest Verdant\", \"mood\": [\"eco\", \"calm\", \"organic\", \"health\"], \"bg\": \"#08140f\", \"surface\": \"#0f2119\", \"primary\": \"#22c55e\", \"accent\": \"#84cc16\", \"on\": \"#eefef4\", \"from\": \"#22C55E\", \"to\": \"#84CC16\" },\n { \"id\": \"royal-gold\", \"name\": \"Royal Gold\", \"mood\": [\"luxe\", \"heritage\", \"premium\", \"elegant\"], \"bg\": \"#12100a\", \"surface\": \"#1e1a10\", \"primary\": \"#d4af37\", \"accent\": \"#b08d2b\", \"on\": \"#fbf6e6\", \"from\": \"#E7C767\", \"to\": \"#B08D2B\" },\n { \"id\": \"rose-blush\", \"name\": \"Rose Blush\", \"mood\": [\"playful\", \"beauty\", \"warm\", \"friendly\"], \"bg\": \"#1a0d14\", \"surface\": \"#2a1420\", \"primary\": \"#f472b6\", \"accent\": \"#fb7185\", \"on\": \"#fff0f7\", \"from\": \"#F472B6\", \"to\": \"#FB7185\" },\n { \"id\": \"ocean-teal\", \"name\": \"Ocean Teal\", \"mood\": [\"calm\", \"trust\", \"medical\", \"clean\"], \"bg\": \"#06141a\", \"surface\": \"#0b2029\", \"primary\": \"#14b8a6\", \"accent\": \"#06b6d4\", \"on\": \"#e8fdfb\", \"from\": \"#14B8A6\", \"to\": \"#06B6D4\" },\n { \"id\": \"slate-mono\", \"name\": \"Slate Mono\", \"mood\": [\"minimal\", \"mono\", \"corporate\", \"modern\"], \"bg\": \"#0a0a0b\", \"surface\": \"#17181b\", \"primary\": \"#e5e7eb\", \"accent\": \"#9ca3af\", \"on\": \"#f8fafc\", \"from\": \"#E5E7EB\", \"to\": \"#9CA3AF\" },\n { \"id\": \"ink-noir\", \"name\": \"Ink Noir\", \"mood\": [\"minimal\", \"mono\", \"luxe\", \"bold\"], \"bg\": \"#0a0a0a\", \"surface\": \"#161616\", \"primary\": \"#fafafa\", \"accent\": \"#d4d4d4\", \"on\": \"#ffffff\", \"from\": \"#FAFAFA\", \"to\": \"#A3A3A3\" },\n { \"id\": \"coral-crush\", \"name\": \"Coral Crush\", \"mood\": [\"playful\", \"food\", \"warm\", \"energy\"], \"bg\": \"#1a0f0c\", \"surface\": \"#2a1712\", \"primary\": \"#fb7185\", \"accent\": \"#fbbf24\", \"on\": \"#fff3ee\", \"from\": \"#FB7185\", \"to\": \"#FBBF24\" },\n { \"id\": \"deep-indigo\", \"name\": \"Deep Indigo\", \"mood\": [\"finance\", \"trust\", \"corporate\", \"tech\"], \"bg\": \"#0a0d1a\", \"surface\": \"#12172b\", \"primary\": \"#6366f1\", \"accent\": \"#818cf8\", \"on\": \"#eef0ff\", \"from\": \"#6366F1\", \"to\": \"#818CF8\" },\n { \"id\": \"emerald-lux\", \"name\": \"Emerald Lux\", \"mood\": [\"luxe\", \"finance\", \"premium\", \"eco\"], \"bg\": \"#06140d\", \"surface\": \"#0c2117\", \"primary\": \"#10b981\", \"accent\": \"#d4af37\", \"on\": \"#eafef4\", \"from\": \"#10B981\", \"to\": \"#D4AF37\" },\n { \"id\": \"cyber-lime\", \"name\": \"Cyber Lime\", \"mood\": [\"tech\", \"bold\", \"future\", \"energy\"], \"bg\": \"#0a0f08\", \"surface\": \"#141d0d\", \"primary\": \"#a3e635\", \"accent\": \"#22d3ee\", \"on\": \"#f4ffe6\", \"from\": \"#A3E635\", \"to\": \"#22D3EE\" },\n { \"id\": \"berry-wine\", \"name\": \"Berry Wine\", \"mood\": [\"luxe\", \"beauty\", \"warm\", \"premium\"], \"bg\": \"#160a12\", \"surface\": \"#25121f\", \"primary\": \"#be185d\", \"accent\": \"#9333ea\", \"on\": \"#fdeef6\", \"from\": \"#BE185D\", \"to\": \"#9333EA\" },\n { \"id\": \"sky-fresh\", \"name\": \"Sky Fresh\", \"mood\": [\"clean\", \"friendly\", \"calm\", \"medical\"], \"bg\": \"#081018\", \"surface\": \"#0f1d2b\", \"primary\": \"#0ea5e9\", \"accent\": \"#38bdf8\", \"on\": \"#eef8ff\", \"from\": \"#0EA5E9\", \"to\": \"#38BDF8\" },\n { \"id\": \"terra-clay\", \"name\": \"Terra Clay\", \"mood\": [\"organic\", \"warm\", \"earthy\", \"heritage\"], \"bg\": \"#150f0a\", \"surface\": \"#241a11\", \"primary\": \"#c2703d\", \"accent\": \"#a3762b\", \"on\": \"#fbf1e6\", \"from\": \"#C2703D\", \"to\": \"#A3762B\" },\n { \"id\": \"grape-soda\", \"name\": \"Grape Soda\", \"mood\": [\"playful\", \"creative\", \"bold\", \"friendly\"], \"bg\": \"#100a1a\", \"surface\": \"#1c122b\", \"primary\": \"#8b5cf6\", \"accent\": \"#ec4899\", \"on\": \"#f4efff\", \"from\": \"#8B5CF6\", \"to\": \"#EC4899\" },\n { \"id\": \"mint-clean\", \"name\": \"Mint Clean\", \"mood\": [\"clean\", \"eco\", \"health\", \"calm\"], \"bg\": \"#08140f\", \"surface\": \"#0f231b\", \"primary\": \"#34d399\", \"accent\": \"#a7f3d0\", \"on\": \"#effef7\", \"from\": \"#34D399\", \"to\": \"#A7F3D0\" },\n { \"id\": \"crimson-bold\", \"name\": \"Crimson Bold\", \"mood\": [\"bold\", \"energy\", \"sport\", \"food\"], \"bg\": \"#160809\", \"surface\": \"#260d0f\", \"primary\": \"#dc2626\", \"accent\": \"#f59e0b\", \"on\": \"#fff0ee\", \"from\": \"#DC2626\", \"to\": \"#F59E0B\" },\n { \"id\": \"steel-blue\", \"name\": \"Steel Blue\", \"mood\": [\"corporate\", \"trust\", \"industrial\", \"tech\"], \"bg\": \"#0a0e12\", \"surface\": \"#141b22\", \"primary\": \"#64748b\", \"accent\": \"#0ea5e9\", \"on\": \"#eef3f8\", \"from\": \"#64748B\", \"to\": \"#0EA5E9\" },\n { \"id\": \"amber-glow\", \"name\": \"Amber Glow\", \"mood\": [\"warm\", \"friendly\", \"energy\", \"food\"], \"bg\": \"#161005\", \"surface\": \"#261c0a\", \"primary\": \"#f59e0b\", \"accent\": \"#fcd34d\", \"on\": \"#fff8e8\", \"from\": \"#F59E0B\", \"to\": \"#FCD34D\" },\n { \"id\": \"aqua-marine\", \"name\": \"Aqua Marine\", \"mood\": [\"calm\", \"clean\", \"travel\", \"fresh\"], \"bg\": \"#06131a\", \"surface\": \"#0b2029\", \"primary\": \"#06b6d4\", \"accent\": \"#2dd4bf\", \"on\": \"#e8fcff\", \"from\": \"#06B6D4\", \"to\": \"#2DD4BF\" },\n { \"id\": \"plum-noir\", \"name\": \"Plum Noir\", \"mood\": [\"luxe\", \"creative\", \"mono\", \"elegant\"], \"bg\": \"#0d0912\", \"surface\": \"#181020\", \"primary\": \"#a855f7\", \"accent\": \"#6b7280\", \"on\": \"#f2ecfb\", \"from\": \"#A855F7\", \"to\": \"#6B7280\" },\n { \"id\": \"graphite-orange\", \"name\": \"Graphite Orange\", \"mood\": [\"industrial\", \"bold\", \"sport\", \"modern\"], \"bg\": \"#0b0b0d\", \"surface\": \"#17181c\", \"primary\": \"#f97316\", \"accent\": \"#e5e7eb\", \"on\": \"#fafafa\", \"from\": \"#F97316\", \"to\": \"#E5E7EB\" },\n { \"id\": \"teal-gold\", \"name\": \"Teal Gold\", \"mood\": [\"luxe\", \"finance\", \"premium\", \"corporate\"], \"bg\": \"#06130f\", \"surface\": \"#0b201a\", \"primary\": \"#0f9d8f\", \"accent\": \"#d4af37\", \"on\": \"#eafcf7\", \"from\": \"#0F9D8F\", \"to\": \"#D4AF37\" },\n { \"id\": \"sunrise-coral\", \"name\": \"Sunrise Coral\", \"mood\": [\"warm\", \"food\", \"friendly\", \"energy\"], \"bg\": \"#1a0e0a\", \"surface\": \"#2a1710\", \"primary\": \"#ff7a59\", \"accent\": \"#ffd166\", \"on\": \"#fff3ee\", \"from\": \"#FF7A59\", \"to\": \"#FFD166\" },\n { \"id\": \"deep-forest\", \"name\": \"Deep Forest\", \"mood\": [\"eco\", \"heritage\", \"calm\", \"organic\"], \"bg\": \"#071310\", \"surface\": \"#0d201b\", \"primary\": \"#2f855a\", \"accent\": \"#a3b18a\", \"on\": \"#eafaf2\", \"from\": \"#2F855A\", \"to\": \"#A3B18A\" },\n { \"id\": \"neon-magenta\", \"name\": \"Neon Magenta\", \"mood\": [\"creative\", \"bold\", \"playful\", \"future\"], \"bg\": \"#120a12\", \"surface\": \"#201220\", \"primary\": \"#e91e8c\", \"accent\": \"#22d3ee\", \"on\": \"#ffeef8\", \"from\": \"#E91E8C\", \"to\": \"#22D3EE\" },\n { \"id\": \"arctic-blue\", \"name\": \"Arctic Blue\", \"mood\": [\"clean\", \"medical\", \"tech\", \"calm\"], \"bg\": \"#07101a\", \"surface\": \"#0d1d2b\", \"primary\": \"#2b8fe0\", \"accent\": \"#8ed1fc\", \"on\": \"#eef7ff\", \"from\": \"#2B8FE0\", \"to\": \"#8ED1FC\" },\n { \"id\": \"charcoal-lime\", \"name\": \"Charcoal Lime\", \"mood\": [\"industrial\", \"tech\", \"bold\", \"sport\"], \"bg\": \"#0c0d0a\", \"surface\": \"#171a12\", \"primary\": \"#c6f135\", \"accent\": \"#64748b\", \"on\": \"#f6ffe6\", \"from\": \"#C6F135\", \"to\": \"#64748B\" },\n { \"id\": \"lavender-dream\", \"name\": \"Lavender Dream\", \"mood\": [\"beauty\", \"playful\", \"calm\", \"friendly\"], \"bg\": \"#100c18\", \"surface\": \"#1b1528\", \"primary\": \"#a78bfa\", \"accent\": \"#f0abfc\", \"on\": \"#f4efff\", \"from\": \"#A78BFA\", \"to\": \"#F0ABFC\" },\n { \"id\": \"ruby-noir\", \"name\": \"Ruby Noir\", \"mood\": [\"luxe\", \"beauty\", \"bold\", \"premium\"], \"bg\": \"#140708\", \"surface\": \"#220d10\", \"primary\": \"#e11d48\", \"accent\": \"#f59e0b\", \"on\": \"#ffeef1\", \"from\": \"#E11D48\", \"to\": \"#F59E0B\" },\n { \"id\": \"honey-amber\", \"name\": \"Honey Amber\", \"mood\": [\"warm\", \"food\", \"heritage\", \"friendly\"], \"bg\": \"#161006\", \"surface\": \"#241a0a\", \"primary\": \"#e0a92e\", \"accent\": \"#c2703d\", \"on\": \"#fff7e6\", \"from\": \"#E0A92E\", \"to\": \"#C2703D\" },\n { \"id\": \"cobalt-electric\", \"name\": \"Cobalt Electric\", \"mood\": [\"tech\", \"bold\", \"future\", \"trust\"], \"bg\": \"#080b1a\", \"surface\": \"#101630\", \"primary\": \"#2f5cff\", \"accent\": \"#22d3ee\", \"on\": \"#eef1ff\", \"from\": \"#2F5CFF\", \"to\": \"#22D3EE\" },\n { \"id\": \"sage-earth\", \"name\": \"Sage Earth\", \"mood\": [\"eco\", \"organic\", \"calm\", \"health\"], \"bg\": \"#0d120c\", \"surface\": \"#171f14\", \"primary\": \"#78a662\", \"accent\": \"#c9a26b\", \"on\": \"#f1f8ea\", \"from\": \"#78A662\", \"to\": \"#C9A26B\" },\n { \"id\": \"peach-cream\", \"name\": \"Peach Cream\", \"mood\": [\"playful\", \"beauty\", \"friendly\", \"kids\"], \"bg\": \"#1a1210\", \"surface\": \"#2a1e18\", \"primary\": \"#ff9e80\", \"accent\": \"#ffcfa3\", \"on\": \"#fff4ee\", \"from\": \"#FF9E80\", \"to\": \"#FFCFA3\" }\n]\n","[\n { \"id\": \"grotesk-modern\", \"display\": \"Space Grotesk\", \"body\": \"Inter\", \"weight\": 700, \"mood\": [\"tech\", \"modern\", \"bold\", \"startup\"], \"stack\": \"'Space Grotesk', 'Inter', system-ui, sans-serif\" },\n { \"id\": \"geist-clean\", \"display\": \"Sora\", \"body\": \"Inter\", \"weight\": 700, \"mood\": [\"tech\", \"clean\", \"corporate\", \"modern\"], \"stack\": \"'Sora', 'Inter', system-ui, sans-serif\" },\n { \"id\": \"poppins-round\", \"display\": \"Poppins\", \"body\": \"Poppins\", \"weight\": 700, \"mood\": [\"playful\", \"friendly\", \"startup\", \"food\"], \"stack\": \"'Poppins', 'Segoe UI', system-ui, sans-serif\" },\n { \"id\": \"montserrat-strong\", \"display\": \"Montserrat\", \"body\": \"Inter\", \"weight\": 800, \"mood\": [\"bold\", \"corporate\", \"sport\", \"modern\"], \"stack\": \"'Montserrat', system-ui, sans-serif\" },\n { \"id\": \"playfair-luxe\", \"display\": \"Playfair Display\", \"body\": \"Lora\", \"weight\": 700, \"mood\": [\"luxe\", \"heritage\", \"elegant\", \"beauty\"], \"stack\": \"'Playfair Display', Georgia, serif\" },\n { \"id\": \"cormorant-lux\", \"display\": \"Cormorant Garamond\", \"body\": \"EB Garamond\", \"weight\": 600, \"mood\": [\"luxe\", \"elegant\", \"premium\", \"heritage\"], \"stack\": \"'Cormorant Garamond', Georgia, serif\" },\n { \"id\": \"dmserif-editorial\", \"display\": \"DM Serif Display\", \"body\": \"DM Sans\", \"weight\": 400, \"mood\": [\"editorial\", \"elegant\", \"creative\", \"premium\"], \"stack\": \"'DM Serif Display', Georgia, serif\" },\n { \"id\": \"archivo-industrial\", \"display\": \"Archivo\", \"body\": \"Archivo\", \"weight\": 800, \"mood\": [\"industrial\", \"bold\", \"sport\", \"modern\"], \"stack\": \"'Archivo', 'Arial Narrow', system-ui, sans-serif\" },\n { \"id\": \"manrope-soft\", \"display\": \"Manrope\", \"body\": \"Manrope\", \"weight\": 700, \"mood\": [\"clean\", \"calm\", \"medical\", \"startup\"], \"stack\": \"'Manrope', system-ui, sans-serif\" },\n { \"id\": \"outfit-geometric\", \"display\": \"Outfit\", \"body\": \"Inter\", \"weight\": 600, \"mood\": [\"modern\", \"minimal\", \"tech\", \"clean\"], \"stack\": \"'Outfit', system-ui, sans-serif\" },\n { \"id\": \"fraunces-craft\", \"display\": \"Fraunces\", \"body\": \"Newsreader\", \"weight\": 600, \"mood\": [\"organic\", \"heritage\", \"craft\", \"warm\"], \"stack\": \"'Fraunces', Georgia, serif\" },\n { \"id\": \"quicksand-friendly\", \"display\": \"Quicksand\", \"body\": \"Nunito\", \"weight\": 700, \"mood\": [\"friendly\", \"playful\", \"beauty\", \"calm\"], \"stack\": \"'Quicksand', 'Nunito', system-ui, sans-serif\" },\n { \"id\": \"orbitron-future\", \"display\": \"Orbitron\", \"body\": \"Rajdhani\", \"weight\": 700, \"mood\": [\"future\", \"tech\", \"sport\", \"bold\"], \"stack\": \"'Orbitron', 'Rajdhani', system-ui, sans-serif\" },\n { \"id\": \"bricolage-quirk\", \"display\": \"Bricolage Grotesque\", \"body\": \"Inter\", \"weight\": 700, \"mood\": [\"creative\", \"startup\", \"modern\", \"playful\"], \"stack\": \"'Bricolage Grotesque', system-ui, sans-serif\" },\n { \"id\": \"lexend-clear\", \"display\": \"Lexend\", \"body\": \"Inter\", \"weight\": 600, \"mood\": [\"education\", \"clean\", \"friendly\", \"medical\", \"calm\"], \"stack\": \"'Lexend', system-ui, sans-serif\" },\n { \"id\": \"anton-impact\", \"display\": \"Anton\", \"body\": \"Inter\", \"weight\": 400, \"mood\": [\"bold\", \"sport\", \"industrial\", \"energy\"], \"stack\": \"'Anton', 'Arial Narrow', system-ui, sans-serif\" },\n { \"id\": \"baloo-kids\", \"display\": \"Baloo 2\", \"body\": \"Nunito\", \"weight\": 700, \"mood\": [\"kids\", \"playful\", \"friendly\", \"food\"], \"stack\": \"'Baloo 2', 'Nunito', system-ui, sans-serif\" },\n { \"id\": \"libre-editorial\", \"display\": \"Libre Franklin\", \"body\": \"Lora\", \"weight\": 700, \"mood\": [\"editorial\", \"corporate\", \"heritage\", \"elegant\", \"legal\"], \"stack\": \"'Libre Franklin', Georgia, serif\" }\n]\n","[\n { \"key\": \"bolt\", \"keywords\": [\"energy\", \"power\", \"fast\", \"electric\", \"speed\", \"charge\", \"quick\"], \"svg\": \"<path d='M13 2 L4 14 H11 L10 22 L20 9 H13 Z'/>\" },\n { \"key\": \"leaf\", \"keywords\": [\"eco\", \"nature\", \"green\", \"organic\", \"plant\", \"garden\", \"bio\", \"sustainable\"], \"svg\": \"<path d='M4 20 C4 10 10 4 20 4 C20 14 14 20 4 20 Z'/><path d='M4 20 C9 15 14 12 18 10'/>\" },\n { \"key\": \"cup\", \"keywords\": [\"coffee\", \"cafe\", \"tea\", \"drink\", \"warm\", \"beverage\", \"espresso\", \"brew\"], \"svg\": \"<path d='M5 8 H17 V13 A5 5 0 0 1 12 18 H10 A5 5 0 0 1 5 13 Z'/><path d='M17 9 H19 A2 2 0 0 1 19 13 H17'/><path d='M8 3 V5 M11 3 V5 M14 3 V5'/>\" },\n { \"key\": \"rocket\", \"keywords\": [\"launch\", \"startup\", \"fast\", \"space\", \"growth\", \"boost\", \"ship\"], \"svg\": \"<path d='M12 3 C15 6 16 10 16 13 L8 13 C8 10 9 6 12 3 Z'/><circle cx='12' cy='9' r='1.5'/><path d='M8 13 L6 17 L9 15 M16 13 L18 17 L15 15'/>\" },\n { \"key\": \"cart\", \"keywords\": [\"shop\", \"store\", \"ecommerce\", \"retail\", \"buy\", \"market\", \"cart\", \"grocery\"], \"svg\": \"<circle cx='9' cy='20' r='1'/><circle cx='17' cy='20' r='1'/><path d='M3 4 H5 L7 15 H18 L20 7 H6'/>\" },\n { \"key\": \"chart\", \"keywords\": [\"finance\", \"growth\", \"analytics\", \"data\", \"stats\", \"trade\", \"invest\", \"report\"], \"svg\": \"<path d='M4 4 V20 H20'/><polyline points='7 15 11 10 14 13 19 6'/>\" },\n { \"key\": \"code\", \"keywords\": [\"dev\", \"tech\", \"software\", \"api\", \"program\", \"developer\", \"engineering\", \"web\"], \"svg\": \"<polyline points='9 8 5 12 9 16'/><polyline points='15 8 19 12 15 16'/>\" },\n { \"key\": \"cloud\", \"keywords\": [\"cloud\", \"saas\", \"storage\", \"hosting\", \"weather\", \"backup\", \"server\"], \"svg\": \"<path d='M7 18 A4 4 0 0 1 7 10 A5 5 0 0 1 17 10 A3.5 3.5 0 0 1 17 18 Z'/>\" },\n { \"key\": \"heart\", \"keywords\": [\"health\", \"care\", \"love\", \"charity\", \"beauty\", \"wellness\", \"dating\"], \"svg\": \"<path d='M12 20 C6 15 3 12 3 8 A4 4 0 0 1 12 6 A4 4 0 0 1 21 8 C21 12 18 15 12 20 Z'/>\" },\n { \"key\": \"star\", \"keywords\": [\"quality\", \"rating\", \"premium\", \"favorite\", \"best\", \"review\", \"award\"], \"svg\": \"<path d='M12 3 L14.6 9 L21 9.5 L16 13.8 L17.6 20 L12 16.5 L6.4 20 L8 13.8 L3 9.5 L9.4 9 Z'/>\" },\n { \"key\": \"shield\", \"keywords\": [\"security\", \"trust\", \"protect\", \"insurance\", \"safe\", \"guard\", \"defense\", \"cyber\"], \"svg\": \"<path d='M12 3 L20 6 V11 C20 16 16 20 12 21 C8 20 4 16 4 11 V6 Z'/>\" },\n { \"key\": \"globe\", \"keywords\": [\"global\", \"world\", \"travel\", \"network\", \"web\", \"international\", \"geo\"], \"svg\": \"<circle cx='12' cy='12' r='9'/><path d='M3 12 H21 M12 3 C15 6 15 18 12 21 C9 18 9 6 12 3'/>\" },\n { \"key\": \"camera\", \"keywords\": [\"photo\", \"media\", \"studio\", \"creative\", \"photography\", \"video\", \"capture\"], \"svg\": \"<rect x='3' y='7' width='18' height='13' rx='2'/><circle cx='12' cy='13' r='3.5'/><path d='M8 7 L9.5 4 H14.5 L16 7'/>\" },\n { \"key\": \"brush\", \"keywords\": [\"art\", \"design\", \"paint\", \"creative\", \"studio\", \"agency\", \"draw\"], \"svg\": \"<path d='M4 20 C4 16 7 15 9 15 C9 18 8 20 4 20 Z'/><path d='M9 15 L18 6 A1.5 1.5 0 0 1 20 8 L11 17'/>\" },\n { \"key\": \"book\", \"keywords\": [\"education\", \"learn\", \"publish\", \"read\", \"school\", \"academy\", \"course\", \"library\"], \"svg\": \"<path d='M4 5 A2 2 0 0 1 6 3 H12 V19 H6 A2 2 0 0 0 4 21 Z'/><path d='M20 5 A2 2 0 0 0 18 3 H12 V19 H18 A2 2 0 0 1 20 21 Z'/>\" },\n { \"key\": \"wrench\", \"keywords\": [\"repair\", \"service\", \"build\", \"tools\", \"fix\", \"maintenance\", \"mechanic\"], \"svg\": \"<path d='M15 4 A5 5 0 0 0 8.5 10.5 L4 15 V20 H9 L13.5 15.5 A5 5 0 0 0 20 9 L16.5 12.5 H11.5 V7.5 Z'/>\" },\n { \"key\": \"gear\", \"keywords\": [\"settings\", \"tech\", \"engineering\", \"config\", \"industrial\", \"system\", \"process\"], \"svg\": \"<circle cx='12' cy='12' r='3.2'/><path d='M12 3 V6 M12 18 V21 M3 12 H6 M18 12 H21 M5.6 5.6 L7.7 7.7 M16.3 16.3 L18.4 18.4 M18.4 5.6 L16.3 7.7 M7.7 16.3 L5.6 18.4'/>\" },\n { \"key\": \"chat\", \"keywords\": [\"message\", \"community\", \"social\", \"support\", \"talk\", \"forum\", \"chat\", \"connect\"], \"svg\": \"<path d='M4 5 H20 V16 H12 L7 20 V16 H4 Z'/>\" },\n { \"key\": \"pin\", \"keywords\": [\"location\", \"map\", \"place\", \"local\", \"travel\", \"navigation\", \"geo\", \"address\"], \"svg\": \"<path d='M12 21 C12 21 5 14 5 9 A7 7 0 0 1 19 9 C19 14 12 21 12 21 Z'/><circle cx='12' cy='9' r='2.5'/>\" },\n { \"key\": \"home\", \"keywords\": [\"home\", \"realestate\", \"house\", \"property\", \"living\", \"estate\", \"build\", \"interior\"], \"svg\": \"<path d='M4 11 L12 4 L20 11'/><path d='M6 10 V20 H18 V10'/>\" },\n { \"key\": \"shop\", \"keywords\": [\"store\", \"market\", \"retail\", \"boutique\", \"business\", \"vendor\", \"mall\"], \"svg\": \"<path d='M4 9 L5 4 H19 L20 9 A3 3 0 0 1 14 9 A3 3 0 0 1 8 9 A3 3 0 0 1 4 9 Z'/><path d='M5 9 V20 H19 V9'/>\" },\n { \"key\": \"truck\", \"keywords\": [\"delivery\", \"logistics\", \"shipping\", \"transport\", \"move\", \"courier\", \"freight\"], \"svg\": \"<rect x='2' y='7' width='12' height='9'/><path d='M14 10 H18 L21 13 V16 H14 Z'/><circle cx='7' cy='18' r='1.5'/><circle cx='17' cy='18' r='1.5'/>\" },\n { \"key\": \"wallet\", \"keywords\": [\"finance\", \"money\", \"pay\", \"bank\", \"wallet\", \"fintech\", \"payment\", \"budget\"], \"svg\": \"<rect x='3' y='6' width='18' height='13' rx='2'/><path d='M3 10 H21'/><circle cx='17' cy='14' r='1'/>\" },\n { \"key\": \"coin\", \"keywords\": [\"money\", \"finance\", \"crypto\", \"currency\", \"pay\", \"token\", \"gold\", \"cash\"], \"svg\": \"<circle cx='12' cy='12' r='8'/><path d='M12 8 V16 M9.5 9.5 H13.5 A2 2 0 0 1 13.5 12 H10.5 A2 2 0 0 0 10.5 14.5 H14.5'/>\" },\n { \"key\": \"phone\", \"keywords\": [\"mobile\", \"contact\", \"call\", \"app\", \"telecom\", \"device\", \"smartphone\"], \"svg\": \"<rect x='7' y='3' width='10' height='18' rx='2'/><path d='M11 18 H13'/>\" },\n { \"key\": \"wifi\", \"keywords\": [\"network\", \"internet\", \"connect\", \"signal\", \"telecom\", \"wireless\", \"isp\"], \"svg\": \"<path d='M4 9 A12 12 0 0 1 20 9'/><path d='M7 12.5 A8 8 0 0 1 17 12.5'/><path d='M10 16 A3.5 3.5 0 0 1 14 16'/><circle cx='12' cy='19' r='0.6'/>\" },\n { \"key\": \"music\", \"keywords\": [\"music\", \"audio\", \"sound\", \"media\", \"entertainment\", \"podcast\", \"song\"], \"svg\": \"<circle cx='7' cy='18' r='2'/><circle cx='17' cy='16' r='2'/><path d='M9 18 V6 L19 4 V16'/>\" },\n { \"key\": \"fork\", \"keywords\": [\"food\", \"restaurant\", \"dining\", \"cafe\", \"kitchen\", \"chef\", \"meal\", \"eat\"], \"svg\": \"<path d='M7 3 V9 A2 2 0 0 0 11 9 V3 M9 9 V21 M15 3 C13 4 13 9 15 10 V21'/>\" },\n { \"key\": \"scissors\", \"keywords\": [\"barber\", \"salon\", \"beauty\", \"craft\", \"cut\", \"hair\", \"tailor\", \"stylist\"], \"svg\": \"<circle cx='7' cy='7' r='2.5'/><circle cx='7' cy='17' r='2.5'/><path d='M9 8.5 L20 17 M9 15.5 L20 7'/>\" },\n { \"key\": \"paw\", \"keywords\": [\"pet\", \"animal\", \"vet\", \"care\", \"dog\", \"cat\", \"wildlife\"], \"svg\": \"<circle cx='8' cy='9' r='1.7'/><circle cx='16' cy='9' r='1.7'/><circle cx='5.5' cy='13' r='1.4'/><circle cx='18.5' cy='13' r='1.4'/><path d='M12 12 C15 12 17 15 16 18 C15 20 9 20 8 18 C7 15 9 12 12 12 Z'/>\" },\n { \"key\": \"sun\", \"keywords\": [\"energy\", \"solar\", \"weather\", \"bright\", \"summer\", \"power\", \"light\"], \"svg\": \"<circle cx='12' cy='12' r='4'/><path d='M12 2 V5 M12 19 V22 M2 12 H5 M19 12 H22 M4.9 4.9 L7 7 M17 17 L19.1 19.1 M19.1 4.9 L17 7 M7 17 L4.9 19.1'/>\" },\n { \"key\": \"mountain\", \"keywords\": [\"travel\", \"outdoor\", \"adventure\", \"nature\", \"peak\", \"hiking\", \"summit\"], \"svg\": \"<path d='M3 19 L9 8 L13 14 L16 9 L21 19 Z'/>\" },\n { \"key\": \"wave\", \"keywords\": [\"water\", \"ocean\", \"flow\", \"fluid\", \"beach\", \"sea\", \"surf\", \"liquid\"], \"svg\": \"<path d='M3 8 C6 5 8 11 12 8 C16 5 18 11 21 8 M3 13 C6 10 8 16 12 13 C16 10 18 16 21 13 M3 18 C6 15 8 21 12 18 C16 15 18 21 21 18'/>\" },\n { \"key\": \"hexagon\", \"keywords\": [\"tech\", \"blockchain\", \"structure\", \"geometric\", \"hex\", \"modular\", \"grid\"], \"svg\": \"<path d='M12 3 L20 7.5 V16.5 L12 21 L4 16.5 V7.5 Z'/>\" },\n { \"key\": \"spark\", \"keywords\": [\"magic\", \"ai\", \"new\", \"creative\", \"shine\", \"smart\", \"innovation\"], \"svg\": \"<path d='M12 3 C12 8 13 11 20 12 C13 13 12 16 12 21 C12 16 11 13 4 12 C11 11 12 8 12 3 Z'/>\" },\n { \"key\": \"drop\", \"keywords\": [\"water\", \"clean\", \"eco\", \"medical\", \"liquid\", \"pure\", \"hydro\", \"laundry\"], \"svg\": \"<path d='M12 3 C12 3 6 10 6 15 A6 6 0 0 0 18 15 C18 10 12 3 12 3 Z'/>\" },\n { \"key\": \"flame\", \"keywords\": [\"fire\", \"energy\", \"hot\", \"cook\", \"passion\", \"grill\", \"heat\", \"bbq\"], \"svg\": \"<path d='M12 21 A6 6 0 0 0 18 15 C18 10 14 9 15 4 C11 6 8 9 8 13 A4 4 0 0 0 10 16 C9 12 11 11 12 10 C12 13 15 13 14 17 A3 3 0 0 1 12 21 Z'/>\" },\n { \"key\": \"cube\", \"keywords\": [\"product\", \"box\", \"package\", \"build\", \"3d\", \"block\", \"logistics\", \"supply\"], \"svg\": \"<path d='M12 3 L20 7.5 V16.5 L12 21 L4 16.5 V7.5 Z'/><path d='M4 7.5 L12 12 L20 7.5 M12 12 V21'/>\" },\n { \"key\": \"eye\", \"keywords\": [\"vision\", \"watch\", \"view\", \"security\", \"media\", \"optics\", \"monitor\"], \"svg\": \"<path d='M2 12 C5 6 9 5 12 5 C15 5 19 6 22 12 C19 18 15 19 12 19 C9 19 5 18 2 12 Z'/><circle cx='12' cy='12' r='3'/>\" },\n { \"key\": \"crown\", \"keywords\": [\"luxe\", \"premium\", \"royal\", \"king\", \"best\", \"vip\", \"elite\", \"gold\"], \"svg\": \"<path d='M4 18 V8 L8 12 L12 5 L16 12 L20 8 V18 Z'/><path d='M4 18 H20'/>\" },\n { \"key\": \"graduation\", \"keywords\": [\"education\", \"school\", \"university\", \"academy\", \"learn\", \"graduate\", \"course\", \"student\"], \"svg\": \"<path d='M2 9 L12 4 L22 9 L12 14 Z'/><path d='M6 11 V16 C6 17.5 9 19 12 19 C15 19 18 17.5 18 16 V11'/><path d='M22 9 V14'/>\" },\n { \"key\": \"dumbbell\", \"keywords\": [\"gym\", \"fitness\", \"workout\", \"sport\", \"health\", \"training\", \"muscle\", \"exercise\"], \"svg\": \"<path d='M3 9 V15 M6 8 V16 M18 8 V16 M21 9 V15 M6 12 H18'/>\" },\n { \"key\": \"scale\", \"keywords\": [\"legal\", \"law\", \"justice\", \"balance\", \"attorney\", \"court\", \"lawyer\", \"compliance\"], \"svg\": \"<path d='M12 3 V20 M5 20 H19 M12 5 L5 9 M12 5 L19 9'/><path d='M2 9 H8 L5 15 A3 3 0 0 0 8 15 Z M16 9 H22 L19 15 A3 3 0 0 0 22 15 Z'/>\" },\n { \"key\": \"key\", \"keywords\": [\"realestate\", \"access\", \"unlock\", \"property\", \"rental\", \"keys\", \"estate\"], \"svg\": \"<circle cx='8' cy='8' r='4'/><path d='M11 11 L20 20 M17 17 L19 15 M15 15 L17 13'/>\" },\n { \"key\": \"plane\", \"keywords\": [\"travel\", \"flight\", \"airline\", \"trip\", \"tourism\", \"journey\", \"holiday\", \"send\"], \"svg\": \"<path d='M3 11 L21 3 L14 21 L11 13 Z'/><path d='M11 13 L21 3'/>\" },\n { \"key\": \"car\", \"keywords\": [\"auto\", \"car\", \"ride\", \"taxi\", \"garage\", \"mechanic\", \"vehicle\", \"drive\", \"rental\"], \"svg\": \"<path d='M3 13 L5 8 H17 L20 13'/><path d='M2 13 H22 V17 H2 Z'/><circle cx='7' cy='17' r='1.5'/><circle cx='17' cy='17' r='1.5'/>\" },\n { \"key\": \"chip\", \"keywords\": [\"tech\", \"hardware\", \"iot\", \"ai\", \"semiconductor\", \"electronics\", \"processor\", \"chip\", \"device\"], \"svg\": \"<rect x='7' y='7' width='10' height='10' rx='1.5'/><path d='M10 3 V6 M14 3 V6 M10 18 V21 M14 18 V21 M3 10 H6 M3 14 H6 M18 10 H21 M18 14 H21'/>\" },\n { \"key\": \"gift\", \"keywords\": [\"gift\", \"ecommerce\", \"reward\", \"celebration\", \"store\", \"present\", \"surprise\", \"loyalty\"], \"svg\": \"<rect x='3' y='9' width='18' height='11' rx='1'/><path d='M3 12 H21 M12 9 V20'/><path d='M12 9 C12 6 9 5 8 6.5 C7 8 9 9 12 9 C12 9 15 9 16 6.5 C15 5 12 6 12 9 Z'/>\" },\n { \"key\": \"calendar\", \"keywords\": [\"schedule\", \"booking\", \"event\", \"planner\", \"date\", \"calendar\", \"appointment\", \"agenda\"], \"svg\": \"<rect x='3' y='5' width='18' height='16' rx='2'/><path d='M3 9 H21 M8 3 V6 M16 3 V6'/><rect x='7' y='12' width='3' height='3'/>\" },\n { \"key\": \"clock\", \"keywords\": [\"time\", \"schedule\", \"fast\", \"productivity\", \"hours\", \"watch\", \"timer\", \"deadline\"], \"svg\": \"<circle cx='12' cy='12' r='9'/><path d='M12 7 V12 L16 14'/>\" },\n { \"key\": \"mail\", \"keywords\": [\"email\", \"contact\", \"newsletter\", \"message\", \"communication\", \"inbox\", \"mailer\", \"crm\"], \"svg\": \"<rect x='3' y='5' width='18' height='14' rx='2'/><path d='M3 7 L12 13 L21 7'/>\" },\n { \"key\": \"lock\", \"keywords\": [\"security\", \"privacy\", \"protect\", \"safe\", \"lock\", \"password\", \"vault\", \"encrypt\"], \"svg\": \"<rect x='5' y='11' width='14' height='9' rx='2'/><path d='M8 11 V8 A4 4 0 0 1 16 8 V11'/>\" },\n { \"key\": \"tag\", \"keywords\": [\"price\", \"sale\", \"retail\", \"label\", \"discount\", \"tag\", \"offer\", \"deal\", \"ecommerce\"], \"svg\": \"<path d='M3 3 H11 L21 13 L13 21 L3 11 Z'/><circle cx='7.5' cy='7.5' r='1.4'/>\" },\n { \"key\": \"brain\", \"keywords\": [\"ai\", \"smart\", \"mind\", \"learning\", \"psychology\", \"brain\", \"intelligence\", \"think\", \"neural\"], \"svg\": \"<path d='M9 4 A3 3 0 0 0 6 7 A3 3 0 0 0 5 12 A3 3 0 0 0 7 17 A3 3 0 0 0 12 19 V4 A2 2 0 0 0 9 4 Z'/><path d='M12 4 A2 2 0 0 1 15 4 A3 3 0 0 1 18 7 A3 3 0 0 1 19 12 A3 3 0 0 1 17 17 A3 3 0 0 1 12 19'/>\" },\n { \"key\": \"flask\", \"keywords\": [\"lab\", \"science\", \"chemistry\", \"research\", \"biotech\", \"experiment\", \"pharma\", \"chemical\"], \"svg\": \"<path d='M9 3 H15 M10 3 V9 L5 18 A2 2 0 0 0 7 21 H17 A2 2 0 0 0 19 18 L14 9 V3'/><path d='M7.5 14 H16.5'/>\" },\n { \"key\": \"cross\", \"keywords\": [\"medical\", \"clinic\", \"pharmacy\", \"health\", \"hospital\", \"aid\", \"plus\", \"emergency\"], \"svg\": \"<rect x='4' y='4' width='16' height='16' rx='3'/><path d='M12 8 V16 M8 12 H16'/>\" },\n { \"key\": \"edit\", \"keywords\": [\"write\", \"content\", \"blog\", \"edit\", \"author\", \"copywriting\", \"note\", \"publish\"], \"svg\": \"<path d='M14 4 L20 10 L9 21 H3 V15 Z'/><path d='M13 5 L19 11'/>\" },\n { \"key\": \"megaphone\", \"keywords\": [\"marketing\", \"ads\", \"promo\", \"announce\", \"pr\", \"campaign\", \"broadcast\", \"launch\", \"advertising\"], \"svg\": \"<path d='M3 10 V14 H6 L14 19 V5 L6 10 Z'/><path d='M17 9 A4 4 0 0 1 17 15'/>\" },\n { \"key\": \"target\", \"keywords\": [\"goal\", \"marketing\", \"focus\", \"aim\", \"strategy\", \"target\", \"objective\", \"precision\", \"growth\"], \"svg\": \"<circle cx='12' cy='12' r='9'/><circle cx='12' cy='12' r='5'/><circle cx='12' cy='12' r='1.5'/>\" },\n { \"key\": \"trophy\", \"keywords\": [\"award\", \"win\", \"sport\", \"achievement\", \"best\", \"trophy\", \"champion\", \"prize\", \"league\"], \"svg\": \"<path d='M8 4 H16 V9 A4 4 0 0 1 8 9 Z'/><path d='M8 6 H5 A2 2 0 0 0 7 10 M16 6 H19 A2 2 0 0 1 17 10'/><path d='M12 13 V16 M9 20 H15 M10 20 V16 H14 V20'/>\" },\n { \"key\": \"building\", \"keywords\": [\"office\", \"corporate\", \"business\", \"company\", \"enterprise\", \"realestate\", \"tower\", \"firm\"], \"svg\": \"<rect x='5' y='3' width='14' height='18'/><path d='M9 7 H11 M13 7 H15 M9 11 H11 M13 11 H15 M9 15 H11 M13 15 H15 M10 21 V18 H14 V21'/>\" },\n { \"key\": \"lightbulb\", \"keywords\": [\"idea\", \"innovation\", \"creative\", \"startup\", \"bright\", \"invention\", \"insight\", \"smart\"], \"svg\": \"<path d='M9 17 H15 M10 20 H14'/><path d='M12 3 A6 6 0 0 0 8 14 H16 A6 6 0 0 0 12 3 Z'/>\" },\n { \"key\": \"gamepad\", \"keywords\": [\"game\", \"gaming\", \"esports\", \"play\", \"entertainment\", \"arcade\", \"console\", \"fun\"], \"svg\": \"<rect x='2' y='8' width='20' height='9' rx='4.5'/><path d='M7 11 V14 M5.5 12.5 H8.5'/><circle cx='16' cy='11.5' r='1'/><circle cx='18.5' cy='13.5' r='1'/>\" },\n { \"key\": \"shirt\", \"keywords\": [\"fashion\", \"clothing\", \"apparel\", \"boutique\", \"retail\", \"tshirt\", \"wear\", \"style\"], \"svg\": \"<path d='M8 4 L4 7 L6 10 L8 9 V20 H16 V9 L18 10 L20 7 L16 4 C16 6 8 6 8 4 Z'/>\" },\n { \"key\": \"balloon\", \"keywords\": [\"kids\", \"party\", \"toy\", \"children\", \"fun\", \"celebration\", \"birthday\", \"playful\"], \"svg\": \"<path d='M12 3 A5 6 0 0 0 12 15 A5 6 0 0 0 12 3 Z'/><path d='M12 15 V17 M11 17 C11 19 13 19 13 21'/>\" },\n { \"key\": \"palette-art\", \"keywords\": [\"art\", \"design\", \"paint\", \"creative\", \"color\", \"artist\", \"gallery\", \"illustration\"], \"svg\": \"<path d='M12 3 A9 9 0 1 0 12 21 A2 2 0 0 0 12 17 A2 2 0 0 1 14 15 H16 A5 5 0 0 0 21 10 C21 6 17 3 12 3 Z'/><circle cx='8' cy='9' r='1'/><circle cx='12' cy='7' r='1'/><circle cx='16' cy='9' r='1'/>\" },\n { \"key\": \"wheat\", \"keywords\": [\"agriculture\", \"farm\", \"organic\", \"grain\", \"harvest\", \"crop\", \"wheat\", \"rural\"], \"svg\": \"<path d='M12 21 V9 M12 9 C10 9 9 7 9 5 C11 5 12 7 12 9 C12 7 13 5 15 5 C15 7 14 9 12 9 M12 13 C10 13 9 11 9 9 M12 13 C14 13 15 11 15 9 M12 17 C10 17 9 15 9 13 M12 17 C14 17 15 15 15 13'/>\" },\n { \"key\": \"umbrella\", \"keywords\": [\"insurance\", \"protection\", \"weather\", \"umbrella\", \"coverage\", \"safe\", \"shelter\"], \"svg\": \"<path d='M12 3 A9 6 0 0 1 21 9 H3 A9 6 0 0 1 12 3 Z'/><path d='M12 9 V19 A2 2 0 0 1 8 19'/>\" },\n { \"key\": \"tooth\", \"keywords\": [\"dental\", \"dentist\", \"tooth\", \"orthodontics\", \"oral\", \"clinic\", \"smile\"], \"svg\": \"<path d='M12 3 C8 3 6 5 6 8 C6 12 7 21 9 21 C10.5 21 10 15 12 15 C14 15 13.5 21 15 21 C17 21 18 12 18 8 C18 5 16 3 12 3 Z'/>\" },\n { \"key\": \"glasses\", \"keywords\": [\"optometry\", \"eyewear\", \"glasses\", \"vision\", \"optical\", \"fashion\", \"sunglasses\"], \"svg\": \"<circle cx='6' cy='13' r='3'/><circle cx='18' cy='13' r='3'/><path d='M9 13 H15 M3 11 L5 8 H8 M21 11 L19 8 H16'/>\" },\n { \"key\": \"headphones\", \"keywords\": [\"audio\", \"dj\", \"music\", \"headphones\", \"support\", \"sound\", \"gaming\", \"helpdesk\"], \"svg\": \"<path d='M4 14 V12 A8 8 0 0 1 20 12 V14'/><rect x='3' y='14' width='3' height='5' rx='1.2'/><rect x='18' y='14' width='3' height='5' rx='1.2'/>\" },\n { \"key\": \"microphone\", \"keywords\": [\"podcast\", \"audio\", \"voice\", \"media\", \"microphone\", \"recording\", \"radio\", \"singer\"], \"svg\": \"<rect x='9' y='3' width='6' height='11' rx='3'/><path d='M6 11 A6 6 0 0 0 18 11 M12 17 V21 M9 21 H15'/>\" },\n { \"key\": \"hardhat\", \"keywords\": [\"construction\", \"build\", \"contractor\", \"hardhat\", \"engineering\", \"safety\", \"builder\"], \"svg\": \"<path d='M4 16 A8 8 0 0 1 20 16 Z'/><path d='M10 8 V4 H14 V8 M2 16 H22'/>\" },\n { \"key\": \"people\", \"keywords\": [\"team\", \"hr\", \"community\", \"people\", \"agency\", \"group\", \"social\", \"recruiting\", \"network\"], \"svg\": \"<circle cx='8' cy='8' r='3'/><circle cx='16' cy='8' r='3'/><path d='M3 20 C3 15 6 14 8 14 C10 14 13 15 13 20 M11 20 C11 16 14 14 16 14 C18 14 21 15 21 20'/>\" },\n { \"key\": \"gem\", \"keywords\": [\"jewelry\", \"luxury\", \"gem\", \"diamond\", \"premium\", \"beauty\", \"boutique\", \"crystal\"], \"svg\": \"<path d='M6 3 H18 L22 9 L12 21 L2 9 Z'/><path d='M2 9 H22 M6 3 L9 9 M18 3 L15 9 M9 9 L12 21 L15 9'/>\" },\n { \"key\": \"anchor\", \"keywords\": [\"marine\", \"nautical\", \"anchor\", \"travel\", \"boat\", \"sea\", \"harbor\", \"shipping\"], \"svg\": \"<circle cx='12' cy='5' r='2'/><path d='M12 7 V21 M5 13 A7 7 0 0 0 19 13 M8 10 H16'/>\" },\n { \"key\": \"compass\", \"keywords\": [\"travel\", \"navigation\", \"compass\", \"adventure\", \"explore\", \"direction\", \"outdoor\", \"guide\"], \"svg\": \"<circle cx='12' cy='12' r='9'/><path d='M15 9 L11 11 L9 15 L13 13 Z'/>\" },\n { \"key\": \"spray\", \"keywords\": [\"cleaning\", \"service\", \"spray\", \"hygiene\", \"sanitize\", \"laundry\", \"housekeeping\"], \"svg\": \"<rect x='7' y='8' width='6' height='12' rx='1'/><path d='M8 8 V5 H12 V8 M13 6 H16 M13 4 H16 M13 8 H16'/>\" },\n { \"key\": \"battery\", \"keywords\": [\"energy\", \"power\", \"battery\", \"ev\", \"charge\", \"electric\", \"tech\", \"solar\"], \"svg\": \"<rect x='3' y='8' width='16' height='8' rx='2'/><path d='M21 11 V13 M6 11 V13 M9 11 V13 M12 11 V13'/>\" }\n]\n","[\n { \"id\": \"techy\", \"name\": \"Techy\", \"keywords\": [\"tech\", \"software\", \"ai\", \"app\", \"saas\", \"digital\", \"cyber\", \"dev\", \"platform\", \"data\", \"cloud\", \"startup\"], \"paletteMood\": [\"tech\", \"future\", \"bold\", \"trust\"], \"fontMood\": [\"tech\", \"modern\", \"startup\"], \"shapes\": [\"hexagon\", \"squircle\", \"rounded\"], \"layouts\": [\"icon-left\", \"icon-top\"], \"engines\": [\"wordmark\", \"abstract\", \"monogram\"] },\n { \"id\": \"minimal\", \"name\": \"Minimal\", \"keywords\": [\"minimal\", \"simple\", \"clean\", \"modern\", \"mono\", \"essential\"], \"paletteMood\": [\"minimal\", \"mono\", \"clean\"], \"fontMood\": [\"minimal\", \"modern\", \"clean\"], \"shapes\": [\"circle\", \"rounded\", \"squircle\"], \"layouts\": [\"icon-left\", \"wordmark-only\"], \"engines\": [\"monogram\", \"wordmark\", \"lettermark\"] },\n { \"id\": \"luxe\", \"name\": \"Luxe\", \"keywords\": [\"luxury\", \"premium\", \"elegant\", \"gold\", \"boutique\", \"exclusive\", \"high-end\", \"couture\"], \"paletteMood\": [\"luxe\", \"premium\", \"elegant\", \"heritage\"], \"fontMood\": [\"luxe\", \"elegant\", \"editorial\"], \"shapes\": [\"seal\", \"circle\", \"diamond\"], \"layouts\": [\"icon-top\", \"emblem\"], \"engines\": [\"emblem\", \"monogram\", \"wordmark\"] },\n { \"id\": \"playful\", \"name\": \"Playful\", \"keywords\": [\"playful\", \"fun\", \"kids\", \"friendly\", \"colorful\", \"bright\", \"toy\", \"game\"], \"paletteMood\": [\"playful\", \"friendly\", \"bold\"], \"fontMood\": [\"playful\", \"friendly\", \"startup\"], \"shapes\": [\"squircle\", \"blob\", \"rounded\"], \"layouts\": [\"icon-top\", \"icon-left\"], \"engines\": [\"wordmark\", \"monogram\", \"abstract\"] },\n { \"id\": \"eco\", \"name\": \"Eco\", \"keywords\": [\"eco\", \"green\", \"organic\", \"nature\", \"sustainable\", \"natural\", \"plant\", \"bio\", \"earth\"], \"paletteMood\": [\"eco\", \"organic\", \"calm\", \"earthy\"], \"fontMood\": [\"organic\", \"craft\", \"clean\"], \"shapes\": [\"circle\", \"blob\", \"seal\"], \"layouts\": [\"icon-left\", \"icon-top\"], \"engines\": [\"wordmark\", \"abstract\", \"emblem\"] },\n { \"id\": \"bold\", \"name\": \"Bold\", \"keywords\": [\"bold\", \"strong\", \"sport\", \"power\", \"dynamic\", \"energy\", \"fitness\", \"gym\"], \"paletteMood\": [\"bold\", \"energy\", \"sport\", \"industrial\"], \"fontMood\": [\"bold\", \"industrial\", \"sport\"], \"shapes\": [\"shield\", \"hexagon\", \"rounded\"], \"layouts\": [\"icon-left\", \"stacked\"], \"engines\": [\"wordmark\", \"monogram\", \"emblem\"] },\n { \"id\": \"food\", \"name\": \"Food\", \"keywords\": [\"food\", \"restaurant\", \"cafe\", \"kitchen\", \"bakery\", \"dining\", \"coffee\", \"eat\", \"meal\"], \"paletteMood\": [\"warm\", \"food\", \"energy\", \"friendly\"], \"fontMood\": [\"friendly\", \"craft\", \"playful\"], \"shapes\": [\"circle\", \"seal\", \"squircle\"], \"layouts\": [\"icon-top\", \"emblem\"], \"engines\": [\"emblem\", \"wordmark\", \"monogram\"] },\n { \"id\": \"medical\", \"name\": \"Medical\", \"keywords\": [\"medical\", \"health\", \"clinic\", \"care\", \"wellness\", \"pharma\", \"hospital\", \"therapy\"], \"paletteMood\": [\"medical\", \"clean\", \"calm\", \"trust\"], \"fontMood\": [\"clean\", \"medical\", \"modern\"], \"shapes\": [\"circle\", \"shield\", \"rounded\"], \"layouts\": [\"icon-left\", \"icon-top\"], \"engines\": [\"wordmark\", \"monogram\", \"abstract\"] },\n { \"id\": \"finance\", \"name\": \"Finance\", \"keywords\": [\"finance\", \"bank\", \"invest\", \"fintech\", \"money\", \"trade\", \"capital\", \"wealth\"], \"paletteMood\": [\"finance\", \"trust\", \"corporate\", \"luxe\"], \"fontMood\": [\"corporate\", \"modern\", \"tech\"], \"shapes\": [\"shield\", \"hexagon\", \"rounded\"], \"layouts\": [\"icon-left\", \"wordmark-only\"], \"engines\": [\"monogram\", \"wordmark\", \"abstract\"] },\n { \"id\": \"creative\", \"name\": \"Creative\", \"keywords\": [\"creative\", \"art\", \"studio\", \"design\", \"agency\", \"media\", \"brand\", \"photography\"], \"paletteMood\": [\"creative\", \"bold\", \"elegant\"], \"fontMood\": [\"creative\", \"editorial\", \"modern\"], \"shapes\": [\"squircle\", \"blob\", \"circle\"], \"layouts\": [\"icon-top\", \"icon-left\"], \"engines\": [\"abstract\", \"wordmark\", \"monogram\"] },\n { \"id\": \"heritage\", \"name\": \"Heritage\", \"keywords\": [\"heritage\", \"classic\", \"traditional\", \"craft\", \"artisan\", \"vintage\", \"estate\", \"co\"], \"paletteMood\": [\"heritage\", \"warm\", \"earthy\", \"luxe\"], \"fontMood\": [\"heritage\", \"craft\", \"elegant\"], \"shapes\": [\"seal\", \"circle\", \"shield\"], \"layouts\": [\"emblem\", \"icon-top\"], \"engines\": [\"emblem\", \"monogram\", \"wordmark\"] },\n { \"id\": \"modern\", \"name\": \"Modern\", \"keywords\": [\"modern\", \"business\", \"company\", \"professional\", \"corporate\", \"service\", \"solutions\"], \"paletteMood\": [\"tech\", \"corporate\", \"modern\", \"trust\"], \"fontMood\": [\"modern\", \"clean\", \"startup\"], \"shapes\": [\"rounded\", \"squircle\", \"circle\"], \"layouts\": [\"icon-left\", \"icon-top\"], \"engines\": [\"wordmark\", \"monogram\", \"abstract\"] },\n { \"id\": \"education\", \"name\": \"Education\", \"keywords\": [\"education\", \"school\", \"university\", \"academy\", \"learn\", \"course\", \"student\", \"tutoring\", \"training\", \"elearning\"], \"paletteMood\": [\"clean\", \"trust\", \"friendly\", \"calm\"], \"fontMood\": [\"education\", \"clean\", \"friendly\"], \"shapes\": [\"rounded\", \"circle\", \"shield\"], \"layouts\": [\"icon-left\", \"icon-top\"], \"engines\": [\"wordmark\", \"monogram\", \"emblem\"] },\n { \"id\": \"legal\", \"name\": \"Legal\", \"keywords\": [\"legal\", \"law\", \"attorney\", \"court\", \"justice\", \"compliance\", \"lawyer\", \"advocate\", \"firm\", \"notary\"], \"paletteMood\": [\"corporate\", \"trust\", \"luxe\", \"heritage\"], \"fontMood\": [\"legal\", \"corporate\", \"elegant\", \"editorial\"], \"shapes\": [\"shield\", \"seal\", \"circle\"], \"layouts\": [\"icon-left\", \"emblem\"], \"engines\": [\"emblem\", \"monogram\", \"wordmark\"] },\n { \"id\": \"realestate\", \"name\": \"Real Estate\", \"keywords\": [\"realestate\", \"property\", \"estate\", \"housing\", \"rent\", \"homes\", \"realty\", \"broker\", \"apartments\", \"land\"], \"paletteMood\": [\"luxe\", \"trust\", \"calm\", \"corporate\"], \"fontMood\": [\"elegant\", \"modern\", \"corporate\"], \"shapes\": [\"rounded\", \"hexagon\", \"shield\"], \"layouts\": [\"icon-left\", \"icon-top\"], \"engines\": [\"wordmark\", \"monogram\", \"abstract\"] },\n { \"id\": \"kids\", \"name\": \"Kids\", \"keywords\": [\"kids\", \"children\", \"toy\", \"daycare\", \"baby\", \"nursery\", \"preschool\", \"playgroup\", \"cartoon\"], \"paletteMood\": [\"playful\", \"friendly\", \"warm\", \"beauty\"], \"fontMood\": [\"kids\", \"playful\", \"friendly\"], \"shapes\": [\"blob\", \"squircle\", \"rounded\"], \"layouts\": [\"icon-top\", \"icon-left\"], \"engines\": [\"wordmark\", \"monogram\", \"abstract\"] }\n]\n","{\n \"colorWords\": {\n \"blue\": \"midnight-azure\", \"azure\": \"midnight-azure\", \"navy\": \"deep-indigo\",\n \"purple\": \"electric-violet\", \"violet\": \"electric-violet\", \"indigo\": \"deep-indigo\",\n \"orange\": \"sunset-flame\", \"amber\": \"amber-glow\", \"sunset\": \"sunset-flame\",\n \"green\": \"forest-verdant\", \"mint\": \"mint-clean\", \"emerald\": \"emerald-lux\",\n \"gold\": \"royal-gold\", \"golden\": \"royal-gold\",\n \"pink\": \"rose-blush\", \"rose\": \"rose-blush\", \"coral\": \"coral-crush\",\n \"teal\": \"ocean-teal\", \"cyan\": \"aqua-marine\", \"aqua\": \"aqua-marine\",\n \"black\": \"ink-noir\", \"mono\": \"slate-mono\", \"grey\": \"slate-mono\", \"gray\": \"slate-mono\", \"monochrome\": \"ink-noir\",\n \"red\": \"crimson-bold\", \"crimson\": \"crimson-bold\",\n \"wine\": \"berry-wine\", \"maroon\": \"berry-wine\", \"burgundy\": \"berry-wine\",\n \"sky\": \"sky-fresh\", \"clay\": \"terra-clay\", \"brown\": \"terra-clay\", \"earth\": \"terra-clay\",\n \"lime\": \"cyber-lime\", \"steel\": \"steel-blue\"\n },\n \"vibeWords\": {\n \"fast\": \"bold\", \"quick\": \"bold\", \"speed\": \"bold\", \"power\": \"bold\", \"strong\": \"bold\",\n \"calm\": \"minimal\", \"quiet\": \"minimal\", \"simple\": \"minimal\", \"clean\": \"minimal\",\n \"fun\": \"playful\", \"friendly\": \"playful\", \"happy\": \"playful\", \"bright\": \"playful\",\n \"premium\": \"luxe\", \"luxury\": \"luxe\", \"elegant\": \"luxe\", \"exclusive\": \"luxe\", \"royal\": \"luxe\",\n \"smart\": \"techy\", \"digital\": \"techy\", \"future\": \"techy\", \"innovative\": \"techy\",\n \"natural\": \"eco\", \"fresh\": \"eco\", \"pure\": \"eco\", \"sustainable\": \"eco\",\n \"trust\": \"finance\", \"secure\": \"finance\", \"reliable\": \"finance\", \"professional\": \"modern\"\n }\n}\n","/** Typed views over the JSON \"brain\". These are bundled into the build. */\nimport palettesJson from \"./data/palettes.json\";\nimport fontsJson from \"./data/fonts.json\";\nimport iconsJson from \"./data/icons.json\";\nimport moodsJson from \"./data/moods.json\";\nimport keywordsJson from \"./data/keywords.json\";\nimport type { FontPair, IconDef, Mood, Palette } from \"./types.js\";\n\nexport const PALETTES = palettesJson as Palette[];\nexport const FONTS = fontsJson as FontPair[];\nexport const ICONS = iconsJson as IconDef[];\nexport const MOODS = moodsJson as Mood[];\nexport const KEYWORDS = keywordsJson as {\n colorWords: Record<string, string>;\n vibeWords: Record<string, string>;\n};\n\nexport const paletteById = (id: string): Palette | undefined => PALETTES.find((p) => p.id === id);\nexport const fontById = (id: string): FontPair | undefined => FONTS.find((f) => f.id === id);\nexport const iconByKey = (key: string): IconDef | undefined => ICONS.find((i) => i.key === key);\nexport const moodById = (id: string): Mood | undefined => MOODS.find((m) => m.id === id);\n","/** Turn a free-text brief + keywords into concrete design choices — no AI. */\nimport { PALETTES, FONTS, ICONS, MOODS, KEYWORDS, paletteById, fontById, iconByKey, moodById } from \"./data.js\";\nimport type { FontPair, IconDef, LogoBrief, Mood, Palette } from \"./types.js\";\nimport type { Rng } from \"./rng.js\";\n\nconst STOP = new Set(\n \"the a an and or for of to with we our is are your you it this that in on at by as be brand company business co inc ltd studio group solutions services\".split(\n /\\s+/,\n ),\n);\n\n/** Normalise keywords + brief text into a clean token list. */\nexport function tokenize(brief: LogoBrief): string[] {\n const raw: string[] = [];\n if (Array.isArray(brief.keywords)) raw.push(...brief.keywords);\n else if (typeof brief.keywords === \"string\") raw.push(...brief.keywords.split(/[,\\s]+/));\n if (brief.brief) raw.push(...brief.brief.split(/[^\\p{L}\\p{N}]+/u));\n if (brief.industry) raw.push(brief.industry);\n if (brief.style) raw.push(brief.style);\n const seen = new Set<string>();\n const out: string[] = [];\n for (const t of raw) {\n const w = t.trim().toLowerCase();\n if (w.length < 2 || STOP.has(w) || seen.has(w)) continue;\n seen.add(w);\n out.push(w);\n }\n return out;\n}\n\nfunction overlap(a: readonly string[], b: readonly string[]): number {\n const set = new Set(b);\n let c = 0;\n for (const x of a) if (set.has(x)) c++;\n return c;\n}\n\n/** Pick the best-scoring mood for the tokens (with vibe-word nudges). */\nexport function chooseMood(tokens: string[], rng: Rng, forced?: string): Mood {\n if (forced) {\n const m = moodById(forced.toLowerCase()) || MOODS.find((x) => x.keywords.includes(forced.toLowerCase()));\n if (m) return m;\n }\n const scored = MOODS.map((m) => {\n let score = overlap(tokens, m.keywords) * 3;\n for (const t of tokens) if (KEYWORDS.vibeWords[t] === m.id) score += 2;\n return { m, score };\n });\n const max = Math.max(...scored.map((s) => s.score));\n const top = scored.filter((s) => s.score === max && max > 0).map((s) => s.m);\n if (top.length) return rng.pick(top);\n return moodById(\"modern\")!;\n}\n\nfunction byMood<T extends { mood: string[] }>(items: T[], tags: string[]): T[] {\n // Prefer the items that overlap the MOST mood tags, not merely any.\n const scored = items.map((i) => ({ i, s: overlap(i.mood, tags) }));\n const max = Math.max(0, ...scored.map((x) => x.s));\n if (max === 0) return items;\n return scored.filter((x) => x.s === max).map((x) => x.i);\n}\n\nexport function choosePalette(tokens: string[], mood: Mood, rng: Rng, forced?: string): Palette {\n if (forced) {\n const p = paletteById(forced);\n if (p) return p;\n }\n for (const t of tokens) {\n const id = KEYWORDS.colorWords[t];\n if (id) {\n const p = paletteById(id);\n if (p) return p;\n }\n }\n return rng.pick(byMood(PALETTES, mood.paletteMood));\n}\n\nexport function chooseFont(mood: Mood, rng: Rng, forced?: string): FontPair {\n if (forced) {\n const f = fontById(forced);\n if (f) return f;\n }\n return rng.pick(byMood(FONTS, mood.fontMood));\n}\n\n/** Best icon for the tokens, or undefined when nothing matches (→ mark/monogram). */\nexport function chooseIcon(tokens: string[], rng: Rng, forced?: string): IconDef | undefined {\n if (forced) {\n const i = iconByKey(forced);\n if (i) return i;\n }\n const scored = ICONS.map((icon) => ({ icon, score: overlap(tokens, icon.keywords) }));\n const max = Math.max(0, ...scored.map((s) => s.score));\n if (max === 0) return undefined;\n return rng.pick(scored.filter((s) => s.score === max).map((s) => s.icon));\n}\n","/** Deterministic hashing + seeded RNG so every logo is reproducible. */\n\n/** FNV-1a style 32-bit string hash. */\nexport function hashString(str: string): number {\n let h = 2166136261 >>> 0;\n for (let i = 0; i < str.length; i++) {\n h ^= str.charCodeAt(i);\n h = Math.imul(h, 16777619);\n }\n return h >>> 0;\n}\n\nexport interface Rng {\n next(): number;\n int(min: number, max: number): number;\n pick<T>(arr: readonly T[]): T;\n chance(p: number): boolean;\n shuffle<T>(arr: readonly T[]): T[];\n}\n\nexport function makeRng(seed: number): Rng {\n let s = seed >>> 0 || 1;\n const next = () => {\n s |= 0;\n s = (s + 0x6d2b79f5) | 0;\n let t = Math.imul(s ^ (s >>> 15), 1 | s);\n t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n };\n const int = (min: number, max: number) => min + Math.floor(next() * (max - min + 1));\n const pick = <T>(arr: readonly T[]): T => arr[Math.floor(next() * arr.length)] ?? (arr[0] as T);\n const chance = (p: number) => next() < p;\n const shuffle = <T>(arr: readonly T[]): T[] => {\n const a = [...arr];\n for (let i = a.length - 1; i > 0; i--) {\n const j = Math.floor(next() * (i + 1));\n [a[i], a[j]] = [a[j]!, a[i]!];\n }\n return a;\n };\n return { next, int, pick, chance, shuffle };\n}\n\n/** Resolve a seed that may be a string, number, or undefined into a uint32. */\nexport function resolveSeed(seed: number | string | undefined, fallback: string): number {\n if (typeof seed === \"number\") return seed >>> 0;\n if (typeof seed === \"string\" && seed.length) return hashString(seed);\n return hashString(fallback);\n}\n","/** Lightweight text helpers — no font metrics needed (SVG renders the real font). */\n\nconst NARROW = new Set(\"iIl.,:;'|!ftrj()[]{} \".split(\"\"));\nconst WIDE = new Set(\"mwMW@%\".split(\"\"));\nconst CAPS = new Set(\"ABCDEFGHKNOQRSUVXYZ\".split(\"\"));\n\n/** Rough advance width of a string at a given font size (em-relative heuristic). */\nexport function estimateTextWidth(text: string, fontSize: number, tracking = 0): number {\n let em = 0;\n for (const ch of text) {\n if (ch === \" \") em += 0.3;\n else if (NARROW.has(ch)) em += 0.3;\n else if (WIDE.has(ch)) em += 0.92;\n else if (CAPS.has(ch)) em += 0.7;\n else em += 0.56;\n }\n return em * fontSize + Math.max(0, text.length - 1) * tracking;\n}\n\n/** Derive a compact monogram (1–3 letters) from a brand name. */\nexport function initials(name: string, max = 2): string {\n const words = name\n .replace(/[^\\p{L}\\p{N}\\s]/gu, \" \")\n .split(/\\s+/)\n .filter(Boolean);\n if (words.length === 0) return \"•\";\n if (words.length === 1) {\n const w = words[0]!;\n return (w.length <= max ? w : w.slice(0, max)).toUpperCase();\n }\n return words\n .slice(0, max)\n .map((w) => w[0]!)\n .join(\"\")\n .toUpperCase();\n}\n\n/** Escape text for safe inclusion in SVG. */\nexport function esc(s: string): string {\n return s.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\");\n}\n\n/** A single-letter cap for lettermark engines. */\nexport function firstLetter(name: string): string {\n const m = name.match(/\\p{L}/u);\n return (m ? m[0] : \"•\").toUpperCase();\n}\n","/** SVG builders: enclosure shapes, gradient defs and icon rendering. */\nimport type { IconDef, ShapeKind } from \"./types.js\";\n\nlet gid = 0;\nexport function gradientId(prefix = \"g\"): string {\n return `${prefix}${(gid = (gid + 1) % 1e6)}`;\n}\n\nexport function linearGradient(id: string, from: string, to: string, angle = 60): string {\n const a = (angle * Math.PI) / 180;\n const x2 = (0.5 + Math.cos(a) / 2).toFixed(3);\n const y2 = (0.5 + Math.sin(a) / 2).toFixed(3);\n const x1 = (0.5 - Math.cos(a) / 2).toFixed(3);\n const y1 = (0.5 - Math.sin(a) / 2).toFixed(3);\n return `<linearGradient id=\"${id}\" x1=\"${x1}\" y1=\"${y1}\" x2=\"${x2}\" y2=\"${y2}\"><stop offset=\"0\" stop-color=\"${from}\"/><stop offset=\"1\" stop-color=\"${to}\"/></linearGradient>`;\n}\n\nconst n = (v: number) => Math.round(v * 100) / 100;\n\n/** An enclosure shape element centred in a `size`×`size` box, filled with `fill`. */\nexport function shapeEl(kind: ShapeKind, size: number, fill: string, stroke?: string, strokeW = 0): string {\n const c = size / 2;\n const pad = size * 0.06;\n const r = c - pad;\n const attrs = `fill=\"${fill}\"${stroke ? ` stroke=\"${stroke}\" stroke-width=\"${strokeW}\"` : \"\"}`;\n\n switch (kind) {\n case \"none\":\n return \"\";\n case \"circle\":\n return `<circle cx=\"${n(c)}\" cy=\"${n(c)}\" r=\"${n(r)}\" ${attrs}/>`;\n case \"rounded\":\n return `<rect x=\"${n(pad)}\" y=\"${n(pad)}\" width=\"${n(size - pad * 2)}\" height=\"${n(size - pad * 2)}\" rx=\"${n(size * 0.16)}\" ${attrs}/>`;\n case \"squircle\":\n return `<rect x=\"${n(pad)}\" y=\"${n(pad)}\" width=\"${n(size - pad * 2)}\" height=\"${n(size - pad * 2)}\" rx=\"${n(size * 0.3)}\" ${attrs}/>`;\n case \"diamond\": {\n const pts = [\n [c, c - r],\n [c + r, c],\n [c, c + r],\n [c - r, c],\n ]\n .map((p) => `${n(p[0]!)},${n(p[1]!)}`)\n .join(\" \");\n return `<polygon points=\"${pts}\" rx=\"8\" ${attrs}/>`;\n }\n case \"hexagon\": {\n const pts = [];\n for (let i = 0; i < 6; i++) {\n const a = (Math.PI / 180) * (60 * i - 90);\n pts.push(`${n(c + r * Math.cos(a))},${n(c + r * Math.sin(a))}`);\n }\n return `<polygon points=\"${pts.join(\" \")}\" ${attrs}/>`;\n }\n case \"shield\": {\n const d = `M ${n(c)} ${n(c - r)} L ${n(c + r * 0.82)} ${n(c - r * 0.55)} L ${n(c + r * 0.82)} ${n(c + r * 0.1)} C ${n(c + r * 0.82)} ${n(c + r * 0.6)} ${n(c + r * 0.45)} ${n(c + r * 0.9)} ${n(c)} ${n(c + r)} C ${n(c - r * 0.45)} ${n(c + r * 0.9)} ${n(c - r * 0.82)} ${n(c + r * 0.6)} ${n(c - r * 0.82)} ${n(c + r * 0.1)} L ${n(c - r * 0.82)} ${n(c - r * 0.55)} Z`;\n return `<path d=\"${d}\" ${attrs}/>`;\n }\n case \"seal\": {\n const teeth = 24;\n const inner = r * 0.9;\n let d = \"\";\n const steps = teeth * 6;\n for (let i = 0; i <= steps; i++) {\n const t = (i / steps) * Math.PI * 2;\n const rad = inner + (r - inner) * (0.5 + 0.5 * Math.cos(teeth * t));\n const x = c + rad * Math.cos(t - Math.PI / 2);\n const y = c + rad * Math.sin(t - Math.PI / 2);\n d += `${i === 0 ? \"M\" : \"L\"} ${n(x)} ${n(y)} `;\n }\n return `<path d=\"${d}Z\" ${attrs}/>`;\n }\n case \"blob\": {\n // A fixed smooth organic blob authored in a 100-box, scaled to size.\n const k = size / 100;\n const p = (x: number, y: number) => `${n(x * k)} ${n(y * k)}`;\n const d = `M ${p(50, 8)} C ${p(74, 8)} ${p(92, 24)} ${p(92, 48)} C ${p(92, 72)} ${p(78, 92)} ${p(52, 92)} C ${p(28, 92)} ${p(8, 78)} ${p(8, 52)} C ${p(8, 28)} ${p(26, 8)} ${p(50, 8)} Z`;\n return `<path d=\"${d}\" ${attrs}/>`;\n }\n default:\n return `<circle cx=\"${n(c)}\" cy=\"${n(c)}\" r=\"${n(r)}\" ${attrs}/>`;\n }\n}\n\n/** Render a line-icon (24-grid) centred at (cx,cy) at box size `box`. */\nexport function iconEl(icon: IconDef, box: number, cx: number, cy: number, color: string, strokeW = 2): string {\n const sc = box / 24;\n const tx = cx - box / 2;\n const ty = cy - box / 2;\n return `<g transform=\"translate(${n(tx)} ${n(ty)}) scale(${n(sc)})\" fill=\"none\" stroke=\"${color}\" stroke-width=\"${strokeW}\" stroke-linecap=\"round\" stroke-linejoin=\"round\">${icon.svg}</g>`;\n}\n","/** The mark engines. Each returns a Mark (SVG body in a size×size box + defs). */\nimport type { Mark, Spec } from \"./render.js\";\nimport { shapeEl, iconEl, linearGradient } from \"./shapes.js\";\nimport { esc } from \"./text.js\";\nimport type { ShapeKind } from \"./types.js\";\n\nconst nn = (v: number) => Math.round(v * 100) / 100;\nconst inkFor = (spec: Spec) => (spec.background === \"transparent\" ? spec.palette.primary : spec.palette.on);\n\n/** Monogram: initials on a gradient enclosure. */\nexport function monogramMark(spec: Spec): Mark {\n const s = spec.size;\n const gid = spec.uid(\"m\");\n const defs = linearGradient(gid, spec.palette.from, spec.palette.to, spec.rng.int(30, 120));\n const shape: ShapeKind = spec.shape === \"none\" ? \"squircle\" : spec.shape;\n const fs = spec.initials.length >= 2 ? s * 0.42 : s * 0.54;\n const body =\n shapeEl(shape, s, `url(#${gid})`) +\n `<text x=\"${nn(s / 2)}\" y=\"${nn(s / 2 + fs * 0.02)}\" font-family=\"${spec.font.stack}\" font-weight=\"${spec.font.weight}\" font-size=\"${nn(fs)}\" fill=\"${spec.palette.on}\" text-anchor=\"middle\" dominant-baseline=\"central\">${esc(spec.initials)}</text>`;\n return { svg: body, size: s, defs };\n}\n\n/** Lettermark: one big display letter, filled with the brand gradient. */\nexport function lettermarkMark(spec: Spec): Mark {\n const s = spec.size;\n const gid = spec.uid(\"l\");\n const defs = linearGradient(gid, spec.palette.from, spec.palette.to, spec.rng.int(20, 120));\n const enclosed = spec.shape !== \"none\" && spec.rng.chance(0.4);\n const fs = s * 0.86;\n let body = \"\";\n let fill = `url(#${gid})`;\n if (enclosed) {\n body += shapeEl(spec.shape, s, `url(#${gid})`);\n fill = spec.palette.on;\n }\n body += `<text x=\"${nn(s / 2)}\" y=\"${nn(s / 2 + fs * 0.03)}\" font-family=\"${spec.font.stack}\" font-weight=\"${spec.font.weight}\" font-size=\"${nn(fs)}\" fill=\"${fill}\" text-anchor=\"middle\" dominant-baseline=\"central\">${esc(spec.letter)}</text>`;\n return { svg: body, size: s, defs };\n}\n\n/** Icon mark: an icon glyph, optionally on a gradient enclosure. */\nexport function iconMark(spec: Spec): Mark {\n const s = spec.size;\n const gid = spec.uid(\"i\");\n const defs = linearGradient(gid, spec.palette.from, spec.palette.to, spec.rng.int(30, 120));\n if (!spec.icon) return monogramMark(spec);\n if (spec.shape === \"none\") {\n const body = iconEl(spec.icon, s * 0.94, s / 2, s / 2, `url(#${gid})`, 2.1);\n return { svg: body, size: s, defs };\n }\n const body =\n shapeEl(spec.shape, s, `url(#${gid})`) +\n iconEl(spec.icon, s * 0.52, s / 2, s / 2, spec.palette.on, 2);\n return { svg: body, size: s, defs };\n}\n\n/** Geometric / abstract mark — seeded generative styles, no text. */\nexport function abstractMark(spec: Spec): Mark {\n const s = spec.size;\n const c = s / 2;\n const gid = spec.uid(\"a\");\n const defs = linearGradient(gid, spec.palette.from, spec.palette.to, spec.rng.int(20, 140));\n const g = `url(#${gid})`;\n const styles = [\"orbit\", \"venn\", \"arcs\", \"burst\", \"waves\", \"grid\"] as const;\n const style = spec.rng.pick(styles);\n let body = \"\";\n\n if (style === \"orbit\") {\n const R = s * 0.34;\n body += `<circle cx=\"${nn(c)}\" cy=\"${nn(c)}\" r=\"${nn(R)}\" fill=\"none\" stroke=\"${g}\" stroke-width=\"${nn(s * 0.035)}\"/>`;\n body += `<circle cx=\"${nn(c)}\" cy=\"${nn(c)}\" r=\"${nn(s * 0.1)}\" fill=\"${g}\"/>`;\n const base = spec.rng.int(0, 360);\n for (let k = 0; k < 3; k++) {\n const a = ((base + k * 120) * Math.PI) / 180;\n const x = c + R * Math.cos(a);\n const y = c + R * Math.sin(a);\n body += `<circle cx=\"${nn(x)}\" cy=\"${nn(y)}\" r=\"${nn(s * 0.06)}\" fill=\"${spec.palette.accent}\"/>`;\n body += `<line x1=\"${nn(c)}\" y1=\"${nn(c)}\" x2=\"${nn(x)}\" y2=\"${nn(y)}\" stroke=\"${g}\" stroke-width=\"${nn(s * 0.02)}\" opacity=\"0.5\"/>`;\n }\n } else if (style === \"venn\") {\n const r = s * 0.24;\n const off = s * 0.14;\n const centers = [\n [c - off, c - off * 0.4],\n [c + off, c - off * 0.4],\n [c, c + off],\n ];\n centers.forEach((p, i) => {\n body += `<circle cx=\"${nn(p[0]!)}\" cy=\"${nn(p[1]!)}\" r=\"${nn(r)}\" fill=\"${i === 0 ? spec.palette.from : i === 1 ? spec.palette.to : spec.palette.accent}\" opacity=\"0.75\"/>`;\n });\n } else if (style === \"arcs\") {\n for (let i = 0; i < 3; i++) {\n const R = s * (0.16 + i * 0.11);\n const a0 = (spec.rng.int(0, 180) * Math.PI) / 180;\n const a1 = a0 + Math.PI * 1.3;\n const x0 = c + R * Math.cos(a0);\n const y0 = c + R * Math.sin(a0);\n const x1 = c + R * Math.cos(a1);\n const y1 = c + R * Math.sin(a1);\n body += `<path d=\"M ${nn(x0)} ${nn(y0)} A ${nn(R)} ${nn(R)} 0 1 1 ${nn(x1)} ${nn(y1)}\" fill=\"none\" stroke=\"${g}\" stroke-width=\"${nn(s * 0.05)}\" stroke-linecap=\"round\"/>`;\n }\n } else if (style === \"burst\") {\n const spokes = spec.rng.int(6, 10);\n const base = spec.rng.int(0, 360);\n for (let k = 0; k < spokes; k++) {\n const a = ((base + (360 / spokes) * k) * Math.PI) / 180;\n const r0 = s * 0.12;\n const r1 = s * 0.4;\n body += `<line x1=\"${nn(c + r0 * Math.cos(a))}\" y1=\"${nn(c + r0 * Math.sin(a))}\" x2=\"${nn(c + r1 * Math.cos(a))}\" y2=\"${nn(c + r1 * Math.sin(a))}\" stroke=\"${g}\" stroke-width=\"${nn(s * 0.035)}\" stroke-linecap=\"round\"/>`;\n }\n body += `<circle cx=\"${nn(c)}\" cy=\"${nn(c)}\" r=\"${nn(s * 0.09)}\" fill=\"${spec.palette.accent}\"/>`;\n } else if (style === \"waves\") {\n for (let i = 0; i < 3; i++) {\n const y = c - s * 0.14 + i * s * 0.14;\n const amp = s * 0.06;\n const d = `M ${nn(s * 0.14)} ${nn(y)} C ${nn(s * 0.32)} ${nn(y - amp)} ${nn(s * 0.42)} ${nn(y + amp)} ${nn(s * 0.5)} ${nn(y)} C ${nn(s * 0.58)} ${nn(y - amp)} ${nn(s * 0.68)} ${nn(y + amp)} ${nn(s * 0.86)} ${nn(y)}`;\n body += `<path d=\"${d}\" fill=\"none\" stroke=\"${g}\" stroke-width=\"${nn(s * 0.045)}\" stroke-linecap=\"round\" opacity=\"${nn(1 - i * 0.22)}\"/>`;\n }\n } else {\n // grid of dots forming a rounded square\n const n = 3;\n const gap = s * 0.2;\n const start = c - gap;\n for (let r = 0; r < n; r++) {\n for (let col = 0; col < n; col++) {\n const x = start + col * gap;\n const y = start + r * gap;\n const rad = s * 0.055 * (1 + ((r + col) % 2) * 0.4);\n body += `<circle cx=\"${nn(x)}\" cy=\"${nn(y)}\" r=\"${nn(rad)}\" fill=\"${(r + col) % 2 ? spec.palette.accent : g}\"/>`;\n }\n }\n }\n\n return { svg: body, size: s, defs };\n}\n\n/** Emblem: a seal/ring with an icon and the brand name curved along the bottom. */\nexport function emblemLogo(spec: Spec): Mark {\n const s = spec.size;\n const c = s / 2;\n const gid = spec.uid(\"e\");\n const defs0 = linearGradient(gid, spec.palette.from, spec.palette.to, spec.rng.int(30, 120));\n const g = `url(#${gid})`;\n const ink = inkFor(spec);\n const R = s * 0.46;\n const arcId = spec.uid(\"arc\");\n // bottom arc for the curved name (left → right along the lower ring)\n const ar = s * 0.34;\n const arcPath = `M ${nn(c - ar)} ${nn(c + ar * 0.35)} A ${nn(ar)} ${nn(ar)} 0 0 0 ${nn(c + ar)} ${nn(c + ar * 0.35)}`;\n const defs = defs0 + `<path id=\"${arcId}\" d=\"${arcPath}\" fill=\"none\"/>`;\n\n let body = \"\";\n body += `<circle cx=\"${nn(c)}\" cy=\"${nn(c)}\" r=\"${nn(R)}\" fill=\"none\" stroke=\"${g}\" stroke-width=\"${nn(s * 0.03)}\"/>`;\n body += `<circle cx=\"${nn(c)}\" cy=\"${nn(c)}\" r=\"${nn(R - s * 0.05)}\" fill=\"none\" stroke=\"${ink}\" stroke-width=\"${nn(s * 0.006)}\" opacity=\"0.6\"/>`;\n if (spec.icon) body += iconEl(spec.icon, s * 0.34, c, c - s * 0.09, g, 2);\n else\n body += `<text x=\"${nn(c)}\" y=\"${nn(c - s * 0.05)}\" font-family=\"${spec.font.stack}\" font-weight=\"${spec.font.weight}\" font-size=\"${nn(s * 0.32)}\" fill=\"${g}\" text-anchor=\"middle\" dominant-baseline=\"central\">${esc(spec.initials)}</text>`;\n // side dot dividers\n body += `<circle cx=\"${nn(c - s * 0.3)}\" cy=\"${nn(c + s * 0.1)}\" r=\"${nn(s * 0.014)}\" fill=\"${ink}\"/>`;\n body += `<circle cx=\"${nn(c + s * 0.3)}\" cy=\"${nn(c + s * 0.1)}\" r=\"${nn(s * 0.014)}\" fill=\"${ink}\"/>`;\n // curved name\n const fs = s * 0.088;\n body += `<text font-family=\"${spec.font.stack}\" font-weight=\"${spec.font.weight}\" font-size=\"${nn(fs)}\" fill=\"${ink}\" letter-spacing=\"${nn(fs * 0.14)}\"><textPath href=\"#${arcId}\" startOffset=\"50%\" text-anchor=\"middle\">${esc(spec.name.toUpperCase())}</textPath></text>`;\n return { svg: body, size: s, defs };\n}\n","/** Shared render context, the wordmark, layout composition and the SVG wrapper. */\nimport type { Background, FontPair, IconDef, Layout, Palette, ShapeKind } from \"./types.js\";\nimport type { Rng } from \"./rng.js\";\nimport { estimateTextWidth, esc } from \"./text.js\";\n\nexport interface Spec {\n name: string;\n initials: string;\n letter: string;\n palette: Palette;\n font: FontPair;\n icon?: IconDef;\n shape: ShapeKind;\n layout: Layout;\n size: number;\n background: Background;\n rng: Rng;\n tokens: string[];\n embedFont: boolean;\n /** Deterministic id generator for gradients/paths (seed-derived, no globals). */\n uid: (prefix?: string) => string;\n}\n\nexport interface Mark {\n /** SVG body drawn in a `size`×`size` box at the origin. */\n svg: string;\n size: number;\n /** Extra <defs> content (gradients) this mark needs. */\n defs?: string;\n}\n\nconst nn = (v: number) => Math.round(v * 100) / 100;\n\n/** Google-fonts @import so a standalone .svg still renders with the right face in a browser. */\nfunction fontImport(font: FontPair): string {\n const fam = font.display.replace(/ /g, \"+\");\n return `<style>@import url('https://fonts.googleapis.com/css2?family=${fam}:wght@${font.weight}&display=swap');</style>`;\n}\n\n/** Colour used for wordmark text given the background. */\nfunction inkColor(spec: Spec): string {\n return spec.background === \"transparent\" ? spec.palette.primary : spec.palette.on;\n}\n\n/** The wordmark text element(s). */\nexport function wordmarkEl(spec: Spec, x: number, y: number, fontSize: number, anchor: \"start\" | \"middle\"): string {\n const isLuxe = spec.font.mood.includes(\"luxe\") || spec.font.mood.includes(\"elegant\");\n const tracking = isLuxe ? fontSize * 0.04 : 0;\n const ls = tracking ? ` letter-spacing=\"${nn(tracking)}\"` : \"\";\n return `<text x=\"${nn(x)}\" y=\"${nn(y)}\" font-family=\"${spec.font.stack}\" font-weight=\"${spec.font.weight}\" font-size=\"${nn(fontSize)}\" fill=\"${inkColor(spec)}\" text-anchor=\"${anchor}\" dominant-baseline=\"middle\"${ls}>${esc(spec.name)}</text>`;\n}\n\nfunction background(spec: Spec, w: number, h: number, defsId: string): string {\n if (spec.background === \"transparent\") return \"\";\n if (spec.background === \"solid\") return `<rect width=\"${w}\" height=\"${h}\" fill=\"${spec.palette.bg}\"/>`;\n if (spec.background === \"surface\") return `<rect width=\"${w}\" height=\"${h}\" fill=\"${spec.palette.surface}\"/>`;\n return `<rect width=\"${w}\" height=\"${h}\" fill=\"url(#${defsId})\"/>`; // gradient\n}\n\n/** Wrap body + defs in a complete, self-contained SVG string. */\nexport function wrapSvg(spec: Spec, w: number, h: number, defs: string, body: string): string {\n const bgId = \"bg\";\n const bgDefs = spec.background === \"gradient\"\n ? `<linearGradient id=\"${bgId}\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"${spec.palette.from}\"/><stop offset=\"1\" stop-color=\"${spec.palette.to}\"/></linearGradient>`\n : \"\";\n const fontStyle = spec.embedFont ? fontImport(spec.font) : \"\";\n return (\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${nn(w)}\" height=\"${nn(h)}\" viewBox=\"0 0 ${nn(w)} ${nn(h)}\" role=\"img\" aria-label=\"${esc(spec.name)} logo\">` +\n fontStyle +\n `<defs>${bgDefs}${defs}</defs>` +\n background(spec, w, h, bgId) +\n body +\n `</svg>`\n );\n}\n\n/** Compose a mark + wordmark into a finished logo per the layout. */\nexport function compose(spec: Spec, mark: Mark): { svg: string; width: number; height: number } {\n const pad = Math.round(spec.size * 0.12);\n const defs = mark.defs ?? \"\";\n\n if (spec.layout === \"mark-only\" || spec.layout === \"emblem\") {\n const w = mark.size + pad * 2;\n const body = `<g transform=\"translate(${pad} ${pad})\">${mark.svg}</g>`;\n return { svg: wrapSvg(spec, w, w, defs, body), width: w, height: w };\n }\n\n if (spec.layout === \"wordmark-only\") {\n const fontSize = Math.round(spec.size * 0.4);\n const tw = estimateTextWidth(spec.name, fontSize, spec.font.mood.includes(\"luxe\") ? fontSize * 0.04 : 0);\n const w = Math.round(tw + pad * 2);\n const h = Math.round(fontSize * 1.5);\n // small accent tick before the word\n const tick = `<rect x=\"${pad - Math.round(spec.size * 0.03)}\" y=\"${Math.round(h / 2 - fontSize * 0.36)}\" width=\"${Math.round(spec.size * 0.014)}\" height=\"${Math.round(fontSize * 0.72)}\" rx=\"2\" fill=\"${spec.palette.primary}\"/>`;\n const body = tick + wordmarkEl(spec, pad, h / 2, fontSize, \"start\");\n return { svg: wrapSvg(spec, w, h, defs, body), width: w, height: h };\n }\n\n if (spec.layout === \"icon-top\" || spec.layout === \"stacked\") {\n const markSize = spec.size;\n const fontSize = Math.round(spec.size * (spec.layout === \"stacked\" ? 0.34 : 0.28));\n const gap = Math.round(spec.size * 0.14);\n const tw = estimateTextWidth(spec.name, fontSize, spec.font.mood.includes(\"luxe\") ? fontSize * 0.04 : 0);\n const w = Math.round(Math.max(markSize, tw) + pad * 2);\n const h = Math.round(markSize + gap + fontSize * 1.3 + pad);\n const markX = (w - markSize) / 2;\n const body =\n `<g transform=\"translate(${nn(markX)} ${pad})\">${mark.svg}</g>` +\n wordmarkEl(spec, w / 2, pad + markSize + gap + fontSize * 0.5, fontSize, \"middle\");\n return { svg: wrapSvg(spec, w, h, defs, body), width: w, height: h };\n }\n\n // icon-left (default lockup)\n const markSize = spec.size;\n const fontSize = Math.round(spec.size * 0.4);\n const gap = Math.round(spec.size * 0.16);\n const tw = estimateTextWidth(spec.name, fontSize, spec.font.mood.includes(\"luxe\") ? fontSize * 0.04 : 0);\n const w = Math.round(markSize + gap + tw + pad * 2);\n const h = Math.round(markSize + pad * 2);\n const body =\n `<g transform=\"translate(${pad} ${pad})\">${mark.svg}</g>` +\n wordmarkEl(spec, pad + markSize + gap, h / 2, fontSize, \"start\");\n return { svg: wrapSvg(spec, w, h, defs, body), width: w, height: h };\n}\n","/** Orchestrator: brief → deterministic design choices → engine → finished SVG logo. */\nimport { tokenize, chooseMood, choosePalette, chooseFont, chooseIcon } from \"./brief.js\";\nimport { makeRng, resolveSeed } from \"./rng.js\";\nimport { initials, firstLetter } from \"./text.js\";\nimport { monogramMark, iconMark, abstractMark, emblemLogo, lettermarkMark } from \"./engines.js\";\nimport { compose, type Mark, type Spec } from \"./render.js\";\nimport type { Engine, Interpreted, Layout, LogoBrief, LogoResult, ShapeKind } from \"./types.js\";\nimport type { Rng } from \"./rng.js\";\nimport type { Mood } from \"./types.js\";\n\nfunction chooseEngine(mood: Mood, rng: Rng, forced?: Engine): Engine {\n if (forced) return forced;\n return rng.pick(mood.engines);\n}\n\nfunction chooseLayout(mood: Mood, engine: Engine, rng: Rng, forced?: Layout): Layout {\n if (forced) return forced;\n if (engine === \"emblem\") return \"emblem\";\n const opts = mood.layouts.filter((l) => l !== \"emblem\");\n return opts.length ? rng.pick(opts) : \"icon-left\";\n}\n\nfunction markFor(engine: Engine, spec: Spec): Mark {\n switch (engine) {\n case \"monogram\":\n return monogramMark(spec);\n case \"lettermark\":\n return lettermarkMark(spec);\n case \"abstract\":\n return abstractMark(spec);\n case \"emblem\":\n return emblemLogo(spec);\n case \"wordmark\":\n default:\n return iconMark(spec);\n }\n}\n\n/** Generate a single deterministic logo from a brief. */\nexport function generateLogo(brief: LogoBrief): LogoResult {\n if (!brief.name || !brief.name.trim()) throw new Error(\"generateLogo: `name` is required.\");\n const seed = resolveSeed(brief.seed, brief.name + \"|\" + (typeof brief.keywords === \"string\" ? brief.keywords : (brief.keywords || []).join(\",\")));\n const rng = makeRng(seed);\n const tokens = tokenize(brief);\n\n const mood = chooseMood(tokens, rng, brief.industry || brief.style);\n const palette = choosePalette(tokens, mood, rng, brief.palette);\n const font = chooseFont(mood, rng, brief.font);\n const iconDef = chooseIcon(tokens, rng, brief.icon);\n const engine = chooseEngine(mood, rng, brief.engine);\n const shape: ShapeKind = brief.shape ?? rng.pick(mood.shapes);\n const layout = chooseLayout(mood, engine, rng, brief.layout);\n\n let idc = 0;\n const uid = (p = \"g\") => `${p}${seed.toString(36)}${idc++}`;\n\n const spec: Spec = {\n name: brief.name.trim(),\n initials: initials(brief.name),\n letter: firstLetter(brief.name),\n palette,\n font,\n icon: iconDef,\n shape,\n layout,\n size: brief.size ?? 480,\n background: brief.background ?? \"surface\",\n rng,\n tokens,\n embedFont: true,\n uid,\n };\n\n const mark = markFor(engine, spec);\n const composed = compose(spec, mark);\n\n const notes: string[] = [\n `mood \"${mood.name}\"${tokens.length ? \" from keywords\" : \" (default)\"}`,\n `palette ${palette.name}`,\n `type ${font.display} / ${font.body}`,\n iconDef ? `icon \"${iconDef.key}\"` : `no icon match → ${engine} mark`,\n `engine ${engine}, layout ${layout}, shape ${shape}`,\n ];\n const interpreted: Interpreted = {\n keywords: tokens,\n mood: mood.id,\n iconKey: iconDef?.key,\n paletteId: palette.id,\n fontId: font.id,\n notes,\n };\n\n return {\n svg: composed.svg,\n width: composed.width,\n height: composed.height,\n engine,\n palette,\n font,\n icon: iconDef?.key,\n shape,\n layout,\n mood: mood.id,\n name: spec.name,\n seed,\n interpreted,\n };\n}\n\n/** Generate N reproducible variations of the same brief (the \"concepts\" grid). */\nexport function generateLogoSet(brief: LogoBrief, count = 12): LogoResult[] {\n const base = resolveSeed(brief.seed, brief.name);\n const out: LogoResult[] = [];\n for (let i = 0; i < count; i++) {\n out.push(generateLogo({ ...brief, seed: (base + i * 0x9e3779b1) >>> 0 }));\n }\n return out;\n}\n\n/** Interpret a brief WITHOUT rendering — see what the generator would choose. */\nexport function suggest(brief: LogoBrief): Interpreted {\n return generateLogo(brief).interpreted;\n}\n","/**\n * Brand-in-a-box: from one brief, a consistent identity — logo variants, a\n * favicon/app-icon set, the colour palette and CSS variables. Everything shares\n * the same seed → the same palette, type and icon across every asset.\n */\nimport { generateLogo } from \"./generate.js\";\nimport type { LogoBrief, LogoResult, Palette, FontPair } from \"./types.js\";\n\nexport interface FaviconSet {\n /** One scalable SVG mark (a filled tile — ideal at any size). */\n svg: string;\n /** The same mark sized for common favicon / app-icon dimensions. */\n sizes: { size: number; svg: string }[];\n /** Ready-to-paste <link> / <meta> tags. */\n links: string;\n /** manifest.webmanifest \"icons\" entries (for PNGs you rasterize via @lacspace/image). */\n manifestIcons: { src: string; sizes: string; type: string }[];\n}\n\nexport interface BrandColor {\n role: string;\n hex: string;\n}\n\nexport interface BrandKit {\n name: string;\n /** Horizontal lockup (icon + wordmark) — the primary logo. */\n primary: LogoResult;\n /** Stacked (icon over wordmark). */\n stacked: LogoResult;\n /** The mark alone (app icon / avatar). */\n mark: LogoResult;\n /** Wordmark only, on transparent. */\n wordmark: LogoResult;\n /** Single-colour version for stamps / watermarks. */\n mono: LogoResult;\n favicon: FaviconSet;\n palette: Palette;\n font: FontPair;\n colors: BrandColor[];\n /** A drop-in CSS custom-property block. */\n css: string;\n}\n\nconst FAVICON_SIZES = [16, 32, 48, 64, 180, 192, 512];\n\nfunction resize(svg: string, size: number): string {\n return svg\n .replace(/width=\"[^\"]*\"/, `width=\"${size}\"`)\n .replace(/height=\"[^\"]*\"/, `height=\"${size}\"`);\n}\n\n/** Build a favicon / app-icon set from a brief (a bold, filled mark tile). */\nexport function generateFavicon(brief: LogoBrief, sizes: number[] = FAVICON_SIZES): FaviconSet {\n const base = generateLogo(brief);\n const mark = generateLogo({\n ...brief,\n seed: base.seed,\n palette: brief.palette ?? base.palette.id,\n engine: base.icon ? \"wordmark\" : \"monogram\",\n icon: base.icon,\n shape: brief.shape && brief.shape !== \"none\" ? brief.shape : \"squircle\",\n layout: \"mark-only\",\n background: \"gradient\",\n size: 512,\n });\n const links =\n `<link rel=\"icon\" href=\"/favicon.svg\" type=\"image/svg+xml\">\\n` +\n `<link rel=\"icon\" href=\"/favicon-32.png\" sizes=\"32x32\" type=\"image/png\">\\n` +\n `<link rel=\"apple-touch-icon\" href=\"/apple-touch-icon.png\" sizes=\"180x180\">`;\n return {\n svg: mark.svg,\n sizes: sizes.map((s) => ({ size: s, svg: resize(mark.svg, s) })),\n links,\n manifestIcons: [192, 512].map((s) => ({ src: `/icon-${s}.png`, sizes: `${s}x${s}`, type: \"image/png\" })),\n };\n}\n\nfunction cssVars(p: Palette, f: FontPair): string {\n return [\n \":root {\",\n ` --brand-bg: ${p.bg};`,\n ` --brand-surface: ${p.surface};`,\n ` --brand-primary: ${p.primary};`,\n ` --brand-accent: ${p.accent};`,\n ` --brand-on: ${p.on};`,\n ` --brand-gradient: linear-gradient(60deg, ${p.from}, ${p.to});`,\n ` --brand-font-display: ${f.stack};`,\n \"}\",\n ].join(\"\\n\");\n}\n\n/** From one brief → a full, consistent brand identity. */\nexport function generateBrandKit(brief: LogoBrief): BrandKit {\n const base = generateLogo({ ...brief, layout: \"icon-left\" });\n // Lock every downstream choice so all assets match the primary logo.\n const lock: Partial<LogoBrief> = {\n seed: base.seed,\n palette: brief.palette ?? base.palette.id,\n font: brief.font ?? base.font.id,\n engine: base.engine,\n icon: base.icon,\n shape: base.shape,\n keywords: brief.keywords,\n industry: brief.industry,\n };\n const variant = (layout: LogoBrief[\"layout\"], background: LogoBrief[\"background\"] = \"surface\") =>\n generateLogo({ ...brief, ...lock, layout, background });\n\n return {\n name: base.name,\n primary: variant(\"icon-left\"),\n stacked: variant(\"icon-top\"),\n mark: variant(\"mark-only\", \"gradient\"),\n wordmark: variant(\"wordmark-only\", \"transparent\"),\n mono: generateLogo({ ...brief, ...lock, palette: \"slate-mono\", layout: \"icon-left\", background: \"transparent\" }),\n favicon: generateFavicon({ ...brief, ...lock }),\n palette: base.palette,\n font: base.font,\n colors: [\n { role: \"primary\", hex: base.palette.primary },\n { role: \"accent\", hex: base.palette.accent },\n { role: \"gradient-from\", hex: base.palette.from },\n { role: \"gradient-to\", hex: base.palette.to },\n { role: \"surface\", hex: base.palette.surface },\n { role: \"on\", hex: base.palette.on },\n ],\n css: cssVars(base.palette, base.font),\n };\n}\n","/**\n * animateLogo — turn any generated logo into a self-contained *animated* SVG\n * that \"crafts itself\" on load: it wipes/scales in and a light shimmer sweeps\n * across the mark. Pure CSS keyframes embedded in the SVG — no JS, works in any\n * browser, README or site. Deterministic; respects prefers-reduced-motion.\n */\nimport { generateLogo } from \"./generate.js\";\nimport type { LogoBrief, LogoResult } from \"./types.js\";\n\nexport interface AnimateOptions {\n /** Total reveal duration in ms (default 1500). */\n duration?: number;\n /** Loop forever instead of playing once (default false). */\n loop?: boolean;\n /** Add the sweeping shimmer highlight (default true). */\n shimmer?: boolean;\n}\n\n/** Wrap a logo (a LogoResult or a brief) in an embedded CSS reveal animation. */\nexport function animateLogo(input: LogoResult | LogoBrief, opts: AnimateOptions = {}): string {\n const result = \"svg\" in input ? (input as LogoResult) : generateLogo(input as LogoBrief);\n const w = result.width;\n const h = result.height;\n const dur = opts.duration ?? 1500;\n const iter = opts.loop ? \"infinite\" : \"1\";\n const shimmer = opts.shimmer !== false;\n\n // The reveal animates an INNER <g> (not the root <svg>): transform + opacity on\n // a group are reliable everywhere, and the logo is drawn at rest (visible) with\n // `both` fill so it never gets stuck invisible if the animation can't run. The\n // shimmer is clipped to the mark's own bounding box so it lights the logo, not\n // the empty canvas around it.\n const style =\n `<style>` +\n `@keyframes lac-in{0%{opacity:0;transform:translateY(${Math.round(h * 0.03)}px) scale(.9)}55%{opacity:1}100%{opacity:1;transform:none}}` +\n `@keyframes lac-shim{0%{transform:translateX(${(-w * 0.55).toFixed(0)}px) skewX(-14deg)}` +\n `50%,100%{transform:translateX(${(w * 1.15).toFixed(0)}px) skewX(-14deg)}}` +\n `.lac-in{transform-box:fill-box;transform-origin:center;` +\n `animation:lac-in ${dur}ms cubic-bezier(.2,.8,.2,1) ${iter} both}` +\n `.lac-shim{transform-box:fill-box;transform-origin:center;opacity:.9;mix-blend-mode:overlay;` +\n `animation:lac-shim ${Math.round(dur * 1.2)}ms ease ${Math.round(dur * 0.35)}ms ${iter} both}` +\n `@media(prefers-reduced-motion:reduce){.lac-in{animation:none;opacity:1;transform:none}.lac-shim{display:none}}` +\n `</style>`;\n\n const shimDefs = shimmer\n ? `<linearGradient id=\"lac-shim-g\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\"><stop offset=\"0\" stop-color=\"#fff\" stop-opacity=\"0\"/><stop offset=\".5\" stop-color=\"#fff\" stop-opacity=\".55\"/><stop offset=\"1\" stop-color=\"#fff\" stop-opacity=\"0\"/></linearGradient>`\n : \"\";\n const shimRect = shimmer\n ? `<rect class=\"lac-shim\" x=\"0\" y=\"0\" width=\"${(w * 0.4).toFixed(0)}\" height=\"${h}\" fill=\"url(#lac-shim-g)\"/>`\n : \"\";\n\n // Inject the style + shimmer defs right after the opening <svg>, wrap the whole\n // logo body in an animated <g class=\"lac-in\">, and drop the shimmer sweep on top.\n let svg = result.svg.replace(/(<svg\\b[^>]*>)/, `$1${style}<defs>${shimDefs}</defs><g class=\"lac-in\">`);\n svg = svg.replace(/<\\/svg>\\s*$/, `</g>${shimRect}</svg>`);\n return svg;\n}\n"]}
|