@vectoriox/iox-ui 5.46.0 → 5.47.0
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/fesm2022/vectoriox-iox-ui-generation-core.mjs +224 -78
- package/fesm2022/vectoriox-iox-ui-generation-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-harness-core.mjs +4109 -0
- package/fesm2022/vectoriox-iox-ui-harness-core.mjs.map +1 -0
- package/generation-core/index.d.ts +145 -17
- package/harness-core/index.d.ts +2479 -0
- package/harness-core/package.json +3 -0
- package/package.json +5 -1
- package/src/generation-core/public-api.ts +1 -0
- package/src/generation-core/shape-check.ts +92 -0
- package/src/generation-core/site-spec.generated.ts +131 -2
- package/src/generation-core/validate-site-plan.ts +9 -62
- package/src/harness-core/business-types.ts +141 -0
- package/src/harness-core/harness-spec.generated.ts +3528 -0
- package/src/harness-core/lint.ts +94 -0
- package/src/harness-core/look.ts +32 -0
- package/src/harness-core/motion.ts +67 -0
- package/src/harness-core/needs.ts +42 -0
- package/src/harness-core/prompt-context.ts +91 -0
- package/src/harness-core/public-api.ts +18 -0
- package/src/harness-core/rank.ts +226 -0
- package/src/harness-core/site-analysis.ts +180 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectoriox-iox-ui-harness-core.mjs","sources":["../../../projects/iox-ui/src/harness-core/harness-spec.generated.ts","../../../projects/iox-ui/src/harness-core/business-types.ts","../../../projects/iox-ui/src/harness-core/look.ts","../../../projects/iox-ui/src/harness-core/rank.ts","../../../projects/iox-ui/src/harness-core/motion.ts","../../../projects/iox-ui/src/harness-core/needs.ts","../../../projects/iox-ui/src/harness-core/lint.ts","../../../projects/iox-ui/src/harness-core/site-analysis.ts","../../../projects/iox-ui/src/harness-core/prompt-context.ts","../../../projects/iox-ui/src/harness-core/public-api.ts","../../../projects/iox-ui/src/harness-core/vectoriox-iox-ui-harness-core.ts"],"sourcesContent":["// GENERATED from iox-ai-guidance flavor-spec.v1.json — do not edit; re-run scripts/gen-flavor-spec.mjs\n// (npm run gen:flavor-spec). The JSON is itself generated by iox-ai-guidance\n// architecture/builder/design-system/build-spec.mjs: change a value THERE, then regenerate both.\n/* eslint-disable */\nexport const SPEC_HARNESS_SOURCE = {\n \"repo\": \"nextlevelbuilder/ui-ux-pro-max-skill\",\n \"sha\": \"d14efff8ed1faa4187f004f79926f428c8074ec7\",\n \"date\": \"2026-10-23\",\n \"licence\": \"MIT — Copyright (c) 2024 Next Level Builder\",\n \"notice\": \"Business-type rules adapted from UI UX Pro Max (MIT, Copyright (c) 2024 Next Level Builder).\"\n} as const;\n\nexport const SPEC_NEEDS = {\n \"collection\": {\n \"label\": \"Your work or products\",\n \"archetype\": \"collection\"\n },\n \"detail\": {\n \"label\": \"A page for each item\",\n \"archetype\": \"detail\"\n },\n \"services\": {\n \"label\": \"Services\",\n \"archetype\": \"services\"\n },\n \"prices\": {\n \"label\": \"Prices\",\n \"archetype\": \"services\"\n },\n \"menu\": {\n \"label\": \"Menu\",\n \"archetype\": \"collection\"\n },\n \"visit\": {\n \"label\": \"Hours and how to find you\",\n \"archetype\": \"contact\"\n },\n \"team\": {\n \"label\": \"The team\",\n \"archetype\": \"about\"\n },\n \"about\": {\n \"label\": \"About you\",\n \"archetype\": \"about\"\n },\n \"faq\": {\n \"label\": \"Questions people ask\",\n \"archetype\": \"about\"\n },\n \"blog\": {\n \"label\": \"News or a journal\",\n \"archetype\": \"collection\"\n },\n \"gallery\": {\n \"label\": \"A gallery\",\n \"archetype\": \"collection\"\n },\n \"booking-request\": {\n \"label\": \"A booking request form\",\n \"archetype\": \"contact\"\n },\n \"sign-up-form\": {\n \"label\": \"A sign-up form\",\n \"archetype\": \"contact\"\n },\n \"contact\": {\n \"label\": \"Contact\",\n \"archetype\": \"contact\"\n }\n} as const;\n\nexport const SPEC_USER_AVOIDS = {\n \"dark-pages\": {\n \"when\": {\n \"mode\": [\n \"dark\"\n ]\n },\n \"say\": \"You asked for no dark backgrounds.\"\n },\n \"loud-colour\": {\n \"when\": {\n \"moods\": [\n \"bold\",\n \"energetic\"\n ]\n },\n \"say\": \"You asked for nothing loud.\"\n },\n \"lots-of-motion\": {\n \"when\": {\n \"motion\": [\n \"snappy\",\n \"lively\"\n ]\n },\n \"say\": \"You asked for little movement.\"\n },\n \"too-cute\": {\n \"when\": {\n \"moods\": [\n \"playful\"\n ]\n },\n \"say\": \"You asked for nothing cute or childish.\"\n },\n \"too-corporate\": {\n \"when\": {\n \"moods\": [\n \"trustworthy\",\n \"technical\"\n ]\n },\n \"say\": \"You asked for nothing corporate.\"\n }\n} as const;\n\nexport const SPEC_STRUCTURES = {\n \"studio\": {\n \"label\": \"Studio\",\n \"blurb\": \"Your work, what you do, and a way to reach you.\",\n \"pages\": [\n \"Home\",\n \"Work\",\n \"Project (one per project)\",\n \"About\",\n \"Contact\"\n ],\n \"shipped\": true\n },\n \"practice\": {\n \"label\": \"Practice\",\n \"blurb\": \"Services, prices and a clear way to book.\",\n \"pages\": [\n \"Home\",\n \"Services\",\n \"Prices\",\n \"About\",\n \"Contact\"\n ],\n \"shipped\": false\n },\n \"place\": {\n \"label\": \"Place\",\n \"blurb\": \"A menu, opening hours and how to find you.\",\n \"pages\": [\n \"Home\",\n \"Menu\",\n \"Visit (hours + map)\",\n \"About\",\n \"Contact\"\n ],\n \"shipped\": false\n }\n} as const;\n\nexport const SPEC_BUSINESS_TYPES = [\n {\n \"id\": \"photographer\",\n \"label\": \"Photographer\",\n \"he\": \"צלם/ת\",\n \"group\": \"Creative work\",\n \"uupm\": \"53 Photography Studio\",\n \"match\": [\n \"photographer\",\n \"photography\",\n \"photo studio\",\n \"צלם\",\n \"צילום\"\n ],\n \"good\": [\n {\n \"preset\": \"night-gallery\",\n \"reason\": \"Pictures sit on black, as in a darkened gallery.\"\n },\n {\n \"preset\": \"gallery-minimal\",\n \"reason\": \"White space and a quiet serif keep every eye on the photos.\"\n },\n {\n \"preset\": \"frosted-portfolio\",\n \"reason\": \"Soft grey glass frames the pictures without competing.\"\n },\n {\n \"preset\": \"swiss-grid\",\n \"reason\": \"A strict grid lines your photos up like contact sheets.\"\n }\n ],\n \"colour\": {\n \"mood\": \"black, white and one quiet accent\",\n \"swatches\": [\n \"#18181B\",\n \"#3F4A5A\",\n \"#8B9BB4\"\n ]\n },\n \"fonts\": \"elegant and minimal\",\n \"tone\": \"Few words. Let the pictures speak; one line per project.\",\n \"motion\": \"calm\",\n \"moves\": {\n \"scroll\": \"extra\",\n \"animate\": \"subtle\",\n \"between\": \"cinematic\"\n },\n \"imagery\": \"Your own photos only, large and uncropped; never stock.\",\n \"pages\": [\n \"home\",\n \"work (collection)\",\n \"project (detail)\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"detail\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.full-bleed-media\",\n \"collection.masonry-gallery\",\n \"proof.testimonial-single\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"playful\"\n ]\n },\n \"say\": \"Loud colour and bouncy shapes fight the photos for attention.\"\n },\n {\n \"check\": \"needs-family\",\n \"family\": \"collection\",\n \"say\": \"Show the work: a site like this needs a gallery or a grid of projects on the home page.\"\n },\n {\n \"check\": \"image-hero\",\n \"say\": \"Lead with a picture: the first screen should show the place or the work, not only words.\"\n },\n {\n \"check\": \"copy-length\",\n \"max\": \"standard\",\n \"say\": \"Heavy text buries the pictures.\"\n }\n ],\n \"words\": [\n \"capturing memories\",\n \"stunning\",\n \"passionate\"\n ],\n \"structure\": \"studio\",\n \"slice\": true,\n \"stock\": false,\n \"booking\": \"sometimes\"\n },\n {\n \"id\": \"interior-design\",\n \"label\": \"Interior designer\",\n \"he\": \"מעצב/ת פנים\",\n \"group\": \"Creative work\",\n \"uupm\": \"161 Home Decoration & Interior Design · 84 Architecture / Interior\",\n \"match\": [\n \"interior\",\n \"interiors\",\n \"עיצוב פנים\",\n \"decor\"\n ],\n \"good\": [\n {\n \"preset\": \"gallery-minimal\",\n \"reason\": \"Calm white rooms let the materials show.\"\n },\n {\n \"preset\": \"quiet-luxury\",\n \"reason\": \"Warm bronze says considered and high-end.\"\n },\n {\n \"preset\": \"warm-editorial\",\n \"reason\": \"Reads like a design magazine feature about your rooms.\"\n },\n {\n \"preset\": \"frosted-portfolio\",\n \"reason\": \"Light, airy panels around big project photos.\"\n }\n ],\n \"colour\": {\n \"mood\": \"warm neutrals with one material accent\",\n \"swatches\": [\n \"#7A5B36\",\n \"#78716C\",\n \"#5E6B3A\"\n ]\n },\n \"fonts\": \"architectural and elegant\",\n \"tone\": \"Calm and specific: materials, light, the brief.\",\n \"motion\": \"calm\",\n \"moves\": {\n \"scroll\": \"extra\",\n \"animate\": \"subtle\",\n \"between\": \"cinematic\"\n },\n \"imagery\": \"Wide, bright room shots; details of materials.\",\n \"pages\": [\n \"home\",\n \"projects (collection)\",\n \"project (detail)\",\n \"services\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"detail\",\n \"services\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"collection.card-grid\",\n \"feature.triad\",\n \"proof.testimonial-carousel\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"playful\"\n ]\n },\n \"say\": \"Playful shapes cheapen a portfolio of finished rooms.\"\n },\n {\n \"when\": {\n \"density\": [\n \"compact\"\n ]\n },\n \"say\": \"A cramped page is the opposite of a well-designed room.\"\n },\n {\n \"check\": \"needs-family\",\n \"family\": \"collection\",\n \"say\": \"Show the work: a site like this needs a gallery or a grid of projects on the home page.\"\n },\n {\n \"check\": \"image-hero\",\n \"say\": \"Lead with a picture: the first screen should show the place or the work, not only words.\"\n }\n ],\n \"words\": [\n \"dream home\",\n \"luxurious\",\n \"stunning\"\n ],\n \"structure\": \"studio\",\n \"slice\": true,\n \"stock\": false,\n \"booking\": \"none\"\n },\n {\n \"id\": \"architecture\",\n \"label\": \"Architect\",\n \"he\": \"אדריכל/ית\",\n \"group\": \"Creative work\",\n \"uupm\": \"84 Architecture / Interior · 51 Construction/Architecture\",\n \"match\": [\n \"architect\",\n \"architecture\",\n \"אדריכל\"\n ],\n \"good\": [\n {\n \"preset\": \"swiss-grid\",\n \"reason\": \"A strict grid and clean type, like a drawing set.\"\n },\n {\n \"preset\": \"gallery-minimal\",\n \"reason\": \"Big images and generous margins, like a monograph.\"\n },\n {\n \"preset\": \"night-gallery\",\n \"reason\": \"Buildings at dusk on a dark page.\"\n },\n {\n \"preset\": \"frosted-portfolio\",\n \"reason\": \"Soft glass over large project photos.\"\n }\n ],\n \"colour\": {\n \"mood\": \"monochrome and one accent\",\n \"swatches\": [\n \"#171717\",\n \"#3F4A5A\",\n \"#A16207\"\n ]\n },\n \"fonts\": \"architectural, precise\",\n \"tone\": \"Precise and brief: the project, the place, the year.\",\n \"motion\": \"calm\",\n \"moves\": {\n \"scroll\": \"smooth\",\n \"animate\": \"subtle\",\n \"between\": \"fade\"\n },\n \"imagery\": \"Large project photos and drawings.\",\n \"pages\": [\n \"home\",\n \"projects (collection)\",\n \"project (detail)\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"detail\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.full-bleed-media\",\n \"collection.card-grid\",\n \"story.quote-break\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"playful\"\n ]\n },\n \"say\": \"Playful shapes undercut the precision clients pay for.\"\n },\n {\n \"check\": \"brand-hue\",\n \"from\": 270,\n \"to\": 335,\n \"minChroma\": 0.12,\n \"say\": \"A purple-pink brand is the colour of AI tools right now; on this kind of site it can read as generic.\"\n },\n {\n \"check\": \"needs-family\",\n \"family\": \"collection\",\n \"say\": \"Show the work: a site like this needs a gallery or a grid of projects on the home page.\"\n },\n {\n \"check\": \"image-hero\",\n \"say\": \"Lead with a picture: the first screen should show the place or the work, not only words.\"\n }\n ],\n \"words\": [\n \"iconic\",\n \"world-class\",\n \"cutting-edge\"\n ],\n \"structure\": \"studio\",\n \"slice\": false,\n \"stock\": false,\n \"booking\": \"none\"\n },\n {\n \"id\": \"creative-studio\",\n \"label\": \"Design or branding studio\",\n \"he\": \"סטודיו לעיצוב\",\n \"group\": \"Creative work\",\n \"uupm\": \"10 Creative Agency\",\n \"match\": [\n \"design studio\",\n \"branding\",\n \"agency\",\n \"graphic design\",\n \"סטודיו לעיצוב\",\n \"מיתוג\"\n ],\n \"good\": [\n {\n \"preset\": \"zine\",\n \"reason\": \"Shows you take risks with type and colour.\"\n },\n {\n \"preset\": \"tech-studio\",\n \"reason\": \"Dark and exact, for digital work.\"\n },\n {\n \"preset\": \"bold-maker\",\n \"reason\": \"Loud outlines that clients remember.\"\n },\n {\n \"preset\": \"swiss-grid\",\n \"reason\": \"Confident, classic design-studio grid.\"\n }\n ],\n \"colour\": {\n \"mood\": \"bold primaries, artistic freedom\",\n \"swatches\": [\n \"#3D5AFE\",\n \"#FF5C39\",\n \"#111827\"\n ]\n },\n \"fonts\": \"bold and expressive\",\n \"tone\": \"Confident, short, a little witty.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"smooth\",\n \"animate\": \"lively\",\n \"between\": \"slide\"\n },\n \"imagery\": \"Case-study images of your own work.\",\n \"pages\": [\n \"home\",\n \"work (collection)\",\n \"case study (detail)\",\n \"services\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"detail\",\n \"services\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.stacked-editorial\",\n \"collection.card-grid\",\n \"feature.triad\",\n \"proof.logo-strip\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"check\": \"needs-family\",\n \"family\": \"collection\",\n \"say\": \"Show the work: a site like this needs a gallery or a grid of projects on the home page.\"\n },\n {\n \"check\": \"no-pattern\",\n \"pattern\": \"pricing.tiers\",\n \"say\": \"Studios that sell projects rarely list fixed prices; a price table can undersell you.\"\n }\n ],\n \"words\": [\n \"synergy\",\n \"cutting-edge\",\n \"solutions\"\n ],\n \"structure\": \"studio\",\n \"slice\": false,\n \"stock\": false,\n \"booking\": \"none\"\n },\n {\n \"id\": \"artist\",\n \"label\": \"Artist or illustrator\",\n \"he\": \"אמן/ית\",\n \"group\": \"Creative work\",\n \"uupm\": \"11 Portfolio/Personal · Museum/Gallery\",\n \"match\": [\n \"artist\",\n \"painter\",\n \"illustrator\",\n \"אמנית\",\n \"אמן\",\n \"ציור\",\n \"איור\"\n ],\n \"good\": [\n {\n \"preset\": \"zine\",\n \"reason\": \"Hand-made energy that suits an illustrator.\"\n },\n {\n \"preset\": \"gallery-minimal\",\n \"reason\": \"A white-cube gallery for your pieces.\"\n },\n {\n \"preset\": \"night-gallery\",\n \"reason\": \"Work glowing on a dark wall.\"\n },\n {\n \"preset\": \"warm-editorial\",\n \"reason\": \"Like a catalogue from a small gallery.\"\n }\n ],\n \"colour\": {\n \"mood\": \"your work's own palette; a neutral page\",\n \"swatches\": [\n \"#3D5AFE\",\n \"#3F4A5A\",\n \"#9A4F2B\"\n ]\n },\n \"fonts\": \"expressive\",\n \"tone\": \"Personal, first person, short.\",\n \"motion\": \"calm\",\n \"moves\": {\n \"scroll\": \"smooth\",\n \"animate\": \"standard\",\n \"between\": \"fade\"\n },\n \"imagery\": \"Your pieces, photographed flat and true to colour.\",\n \"pages\": [\n \"home\",\n \"works (collection)\",\n \"work (detail)\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"collection.masonry-gallery\",\n \"about.story\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"trustworthy\"\n ],\n \"flavor\": [\n \"crisp\"\n ]\n },\n \"say\": \"A corporate look makes an artist look like a firm.\"\n },\n {\n \"check\": \"needs-family\",\n \"family\": \"collection\",\n \"say\": \"Show the work: a site like this needs a gallery or a grid of projects on the home page.\"\n }\n ],\n \"words\": [\n \"unique\",\n \"passionate\"\n ],\n \"structure\": \"studio\",\n \"slice\": false,\n \"stock\": false,\n \"booking\": \"none\"\n },\n {\n \"id\": \"makers\",\n \"label\": \"Ceramics, crafts and makers\",\n \"he\": \"קרמיקה ויוצרים\",\n \"group\": \"Creative work\",\n \"uupm\": \"no row — nearest: Nature Distilled, Anti-Polish styles; Indie/Craft pairing\",\n \"match\": [\n \"ceramic\",\n \"ceramics\",\n \"pottery\",\n \"stoneware\",\n \"handmade\",\n \"crafts\",\n \"maker\",\n \"workshop\",\n \"קרמיקה\",\n \"כלי חרס\",\n \"עבודת יד\",\n \"סדנ\"\n ],\n \"good\": [\n {\n \"preset\": \"warm-editorial\",\n \"reason\": \"Cream and terracotta echo clay; a serif with a hand-made feel.\"\n },\n {\n \"preset\": \"bold-maker\",\n \"reason\": \"Proud, chunky outlines for a maker with a voice.\"\n },\n {\n \"preset\": \"corner-cafe\",\n \"reason\": \"Friendly and round for workshops and classes.\"\n },\n {\n \"preset\": \"gallery-minimal\",\n \"reason\": \"Pieces shown like objects in a gallery.\"\n }\n ],\n \"colour\": {\n \"mood\": \"earth, clay and glaze\",\n \"swatches\": [\n \"#9A4F2B\",\n \"#5E6B3A\",\n \"#7A5B36\"\n ]\n },\n \"fonts\": \"warm, hand-made\",\n \"tone\": \"Warm and plain; how it is made, who makes it.\",\n \"motion\": \"calm\",\n \"moves\": {\n \"scroll\": \"normal\",\n \"animate\": \"lively\",\n \"between\": \"slide\"\n },\n \"imagery\": \"Your pieces and hands at work; natural light.\",\n \"pages\": [\n \"home\",\n \"pieces (collection)\",\n \"piece (detail)\",\n \"workshops\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"detail\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"collection.card-grid\",\n \"feature.triad\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"technical\"\n ]\n },\n \"say\": \"A cold, technical look hides the hand that made the work.\"\n },\n {\n \"check\": \"needs-family\",\n \"family\": \"collection\",\n \"say\": \"Show the work: a site like this needs a gallery or a grid of projects on the home page.\"\n }\n ],\n \"words\": [\n \"perfect\",\n \"premium quality\",\n \"mass-produced\"\n ],\n \"structure\": \"studio\",\n \"slice\": true,\n \"stock\": false,\n \"booking\": \"sometimes\"\n },\n {\n \"id\": \"jewellery\",\n \"label\": \"Jewellery\",\n \"he\": \"תכשיטים\",\n \"group\": \"Creative work\",\n \"uupm\": \"33 Luxury/Premium Brand · 4 E-commerce Luxury\",\n \"match\": [\n \"jewel\",\n \"jewellery\",\n \"jewelry\",\n \"rings\",\n \"תכשיט\"\n ],\n \"good\": [\n {\n \"preset\": \"quiet-luxury\",\n \"reason\": \"Bronze and serif: precious without shouting.\"\n },\n {\n \"preset\": \"gallery-minimal\",\n \"reason\": \"Each piece alone on white, like a vitrine.\"\n },\n {\n \"preset\": \"night-gallery\",\n \"reason\": \"Metal and stones shine on black.\"\n },\n {\n \"preset\": \"frosted-portfolio\",\n \"reason\": \"Soft glass, clean and premium.\"\n }\n ],\n \"colour\": {\n \"mood\": \"black, gold, white\",\n \"swatches\": [\n \"#7A5B36\",\n \"#1C1917\",\n \"#3F4A5A\"\n ]\n },\n \"fonts\": \"elegant, refined\",\n \"tone\": \"Few, exact words: the metal, the stone, the making.\",\n \"motion\": \"calm\",\n \"moves\": {\n \"scroll\": \"extra\",\n \"animate\": \"subtle\",\n \"between\": \"cinematic\"\n },\n \"imagery\": \"Close-ups on a plain ground.\",\n \"pages\": [\n \"home\",\n \"collection\",\n \"piece (detail)\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"detail\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"collection.card-grid\",\n \"about.story\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"playful\"\n ]\n },\n \"say\": \"Playful colours read as costume jewellery.\"\n },\n {\n \"when\": {\n \"motion\": [\n \"snappy\",\n \"lively\"\n ]\n },\n \"say\": \"Fast animation feels cheap next to fine pieces.\"\n }\n ],\n \"words\": [\n \"cheap\",\n \"bargain\",\n \"bling\"\n ],\n \"structure\": \"studio\",\n \"slice\": false,\n \"stock\": false,\n \"booking\": \"none\"\n },\n {\n \"id\": \"tattoo\",\n \"label\": \"Tattoo or barber studio\",\n \"he\": \"סטודיו קעקועים / ברבר\",\n \"group\": \"Creative work\",\n \"uupm\": \"no row\",\n \"match\": [\n \"tattoo\",\n \"barber\",\n \"piercing\",\n \"קעקוע\",\n \"ברבר\",\n \"מספרה לגברים\"\n ],\n \"good\": [\n {\n \"preset\": \"ink-studio\",\n \"reason\": \"Black, sharp and orange: a studio with attitude.\"\n },\n {\n \"preset\": \"after-dark\",\n \"reason\": \"Dark and bold, open late.\"\n },\n {\n \"preset\": \"zine\",\n \"reason\": \"Flash-sheet energy.\"\n },\n {\n \"preset\": \"night-gallery\",\n \"reason\": \"Your work on black, like a portfolio book.\"\n }\n ],\n \"colour\": {\n \"mood\": \"black and one hot accent\",\n \"swatches\": [\n \"#EA580C\",\n \"#DB2777\",\n \"#111827\"\n ]\n },\n \"fonts\": \"bold, condensed\",\n \"tone\": \"Direct, a bit of attitude.\",\n \"motion\": \"snappy\",\n \"moves\": {\n \"scroll\": \"normal\",\n \"animate\": \"standard\",\n \"between\": \"slide\"\n },\n \"imagery\": \"Healed work, clean photos.\",\n \"pages\": [\n \"home\",\n \"work (collection)\",\n \"artists\",\n \"faq\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"faq\",\n \"contact\"\n ],\n \"home\": [\n \"hero.full-bleed-media\",\n \"collection.masonry-gallery\",\n \"faq.accordion\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"romantic\"\n ]\n },\n \"say\": \"Soft pastels don't match the shop people expect.\"\n },\n {\n \"check\": \"needs-family\",\n \"family\": \"collection\",\n \"say\": \"Show the work: a site like this needs a gallery or a grid of projects on the home page.\"\n }\n ],\n \"words\": [\n \"cheap\",\n \"walk-ins guaranteed\"\n ],\n \"structure\": \"studio\",\n \"slice\": false,\n \"stock\": false,\n \"booking\": \"must\"\n },\n {\n \"id\": \"spa\",\n \"label\": \"Spa and massage\",\n \"he\": \"ספא ועיסוי\",\n \"group\": \"Wellness and beauty\",\n \"uupm\": \"32 Beauty/Spa/Wellness Service\",\n \"match\": [\n \"spa\",\n \"massage\",\n \"wellness\",\n \"ספא\",\n \"עיסוי\",\n \"טיפולי\"\n ],\n \"good\": [\n {\n \"preset\": \"soft-spa\",\n \"reason\": \"Rose cream, a fine serif and slow motion: calm before they arrive.\"\n },\n {\n \"preset\": \"morning-glass\",\n \"reason\": \"Fresh, frosted and light.\"\n },\n {\n \"preset\": \"quiet-luxury\",\n \"reason\": \"For a high-end spa: bronze and space.\"\n },\n {\n \"preset\": \"garden-party\",\n \"reason\": \"Soft and warm, for a friendly day spa.\"\n }\n ],\n \"colour\": {\n \"mood\": \"soft pastels — pink, sage, cream — with gold\",\n \"swatches\": [\n \"#7D4E5E\",\n \"#5E6B3A\",\n \"#7A5B36\"\n ]\n },\n \"fonts\": \"elegant and calming\",\n \"tone\": \"Soft, unhurried, second person.\",\n \"motion\": \"calm\",\n \"moves\": {\n \"scroll\": \"smooth\",\n \"animate\": \"subtle\",\n \"between\": \"fade\"\n },\n \"imagery\": \"Rooms, textures, hands; no faces needed.\",\n \"pages\": [\n \"home\",\n \"treatments (services)\",\n \"prices\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"services\",\n \"prices\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"feature.triad\",\n \"proof.testimonial-carousel\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"mode\": [\n \"dark\"\n ]\n },\n \"say\": \"Dark pages feel like a night club, not a place to rest.\"\n },\n {\n \"when\": {\n \"moods\": [\n \"bold\",\n \"energetic\"\n ]\n },\n \"say\": \"Loud, bright colour is the opposite of a quiet room.\"\n },\n {\n \"when\": {\n \"motion\": [\n \"snappy\",\n \"lively\"\n ]\n },\n \"say\": \"Fast, bouncy motion works against the calm people come for.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"hours\",\n \"say\": \"People look for your opening hours first; a site without them sends them elsewhere.\"\n }\n ],\n \"words\": [\n \"deal\",\n \"hurry\",\n \"cheap\"\n ],\n \"structure\": \"practice\",\n \"slice\": true,\n \"stock\": true,\n \"booking\": \"must\"\n },\n {\n \"id\": \"salon\",\n \"label\": \"Hair and beauty salon\",\n \"he\": \"מספרה וסלון יופי\",\n \"group\": \"Wellness and beauty\",\n \"uupm\": \"32 Beauty/Spa/Wellness Service (salon keyword)\",\n \"match\": [\n \"salon\",\n \"hair\",\n \"nails\",\n \"beauty\",\n \"lashes\",\n \"מספרה\",\n \"סלון\",\n \"ציפורניים\",\n \"קוסמטיקה\"\n ],\n \"good\": [\n {\n \"preset\": \"soft-spa\",\n \"reason\": \"Elegant and soft for a beauty salon.\"\n },\n {\n \"preset\": \"coral-studio\",\n \"reason\": \"Bright and fun for a busy hair studio.\"\n },\n {\n \"preset\": \"garden-party\",\n \"reason\": \"Warm, friendly and a little romantic.\"\n },\n {\n \"preset\": \"gallery-minimal\",\n \"reason\": \"Minimal and chic, lets the cuts speak.\"\n }\n ],\n \"colour\": {\n \"mood\": \"soft pinks or warm coral\",\n \"swatches\": [\n \"#7D4E5E\",\n \"#E5484D\",\n \"#7D5260\"\n ]\n },\n \"fonts\": \"elegant or friendly\",\n \"tone\": \"Friendly, upbeat, short.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"smooth\",\n \"animate\": \"standard\",\n \"between\": \"fade\"\n },\n \"imagery\": \"Your own before-and-after photos.\",\n \"pages\": [\n \"home\",\n \"services\",\n \"prices\",\n \"gallery\",\n \"contact\"\n ],\n \"needs\": [\n \"services\",\n \"prices\",\n \"gallery\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"feature.triad\",\n \"collection.masonry-gallery\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"technical\"\n ]\n },\n \"say\": \"A technical look feels clinical in a salon.\"\n },\n {\n \"check\": \"needs-family\",\n \"family\": \"collection\",\n \"say\": \"Show the work: a site like this needs a gallery or a grid of projects on the home page.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"hours\",\n \"say\": \"People look for your opening hours first; a site without them sends them elsewhere.\"\n }\n ],\n \"words\": [\n \"cheap\",\n \"flawless\"\n ],\n \"structure\": \"practice\",\n \"slice\": true,\n \"stock\": true,\n \"booking\": \"must\"\n },\n {\n \"id\": \"yoga\",\n \"label\": \"Yoga or pilates studio\",\n \"he\": \"סטודיו ליוגה / פילאטיס\",\n \"group\": \"Wellness and beauty\",\n \"uupm\": \"141 Yoga & Stretching Guide (app)\",\n \"match\": [\n \"yoga\",\n \"pilates\",\n \"meditation\",\n \"יוגה\",\n \"פילאטיס\",\n \"מדיטציה\"\n ],\n \"good\": [\n {\n \"preset\": \"morning-glass\",\n \"reason\": \"Fresh air and soft light, like a morning class.\"\n },\n {\n \"preset\": \"soft-spa\",\n \"reason\": \"Calm and warm.\"\n },\n {\n \"preset\": \"kind-community\",\n \"reason\": \"Open and welcoming for a community studio.\"\n },\n {\n \"preset\": \"fresh-practice\",\n \"reason\": \"Light and gentle.\"\n }\n ],\n \"colour\": {\n \"mood\": \"sage, terracotta, cream\",\n \"swatches\": [\n \"#0E8A89\",\n \"#5E6B3A\",\n \"#9A4F2B\"\n ]\n },\n \"fonts\": \"warm, humanist\",\n \"tone\": \"Gentle and inviting; who it is for.\",\n \"motion\": \"calm\",\n \"moves\": {\n \"scroll\": \"extra\",\n \"animate\": \"subtle\",\n \"between\": \"fade\"\n },\n \"imagery\": \"The room, real classes, daylight.\",\n \"pages\": [\n \"home\",\n \"classes\",\n \"schedule\",\n \"teachers\",\n \"prices\",\n \"contact\"\n ],\n \"needs\": [\n \"prices\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"feature.triad\",\n \"pricing.tiers\",\n \"faq.accordion\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"bold\"\n ]\n },\n \"say\": \"Bold, loud design fights the calm a class promises.\"\n },\n {\n \"when\": {\n \"motion\": [\n \"snappy\",\n \"lively\"\n ]\n },\n \"say\": \"Fast, bouncy motion works against the calm people come for.\"\n }\n ],\n \"words\": [\n \"burn fat\",\n \"no pain no gain\"\n ],\n \"structure\": \"practice\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"must\"\n },\n {\n \"id\": \"fitness\",\n \"label\": \"Trainer, gym or dance\",\n \"he\": \"מאמן/ת, חדר כושר, מחול\",\n \"group\": \"Wellness and beauty\",\n \"uupm\": \"35 Fitness/Gym App\",\n \"match\": [\n \"gym\",\n \"fitness\",\n \"trainer\",\n \"crossfit\",\n \"dance\",\n \"boxing\",\n \"כושר\",\n \"מאמן\",\n \"מחול\",\n \"ריקוד\"\n ],\n \"good\": [\n {\n \"preset\": \"coral-studio\",\n \"reason\": \"Warm, energetic and bouncy.\"\n },\n {\n \"preset\": \"fresh-market\",\n \"reason\": \"Bright green energy.\"\n },\n {\n \"preset\": \"after-dark\",\n \"reason\": \"Dark and intense for a serious gym.\"\n },\n {\n \"preset\": \"bold-maker\",\n \"reason\": \"Loud and direct.\"\n },\n {\n \"preset\": \"festival\",\n \"reason\": \"Poster energy for a dance or boxing studio.\"\n }\n ],\n \"colour\": {\n \"mood\": \"energetic orange or green\",\n \"swatches\": [\n \"#E5484D\",\n \"#00B86B\",\n \"#EA580C\"\n ]\n },\n \"fonts\": \"bold, motivational\",\n \"tone\": \"Short, motivating, active verbs.\",\n \"motion\": \"lively\",\n \"moves\": {\n \"scroll\": \"normal\",\n \"animate\": \"lively\",\n \"between\": \"slide\"\n },\n \"imagery\": \"Real people training; movement.\",\n \"pages\": [\n \"home\",\n \"classes\",\n \"prices\",\n \"coaches\",\n \"contact\"\n ],\n \"needs\": [\n \"prices\",\n \"contact\"\n ],\n \"home\": [\n \"hero.full-bleed-media\",\n \"feature.triad\",\n \"pricing.tiers\",\n \"proof.testimonial-carousel\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"motion\": [\n \"off\",\n \"calm\"\n ]\n },\n \"say\": \"A still, slow site feels low-energy for training.\"\n },\n {\n \"when\": {\n \"moods\": [\n \"luxurious\"\n ]\n },\n \"say\": \"Hushed luxury can feel unwelcoming to beginners.\"\n }\n ],\n \"words\": [\n \"guaranteed results\",\n \"lose 10 kilos\"\n ],\n \"structure\": \"practice\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"must\"\n },\n {\n \"id\": \"therapist\",\n \"label\": \"Therapist or counsellor\",\n \"he\": \"מטפל/ת\",\n \"group\": \"Wellness and beauty\",\n \"uupm\": \"22 Mental Health App (nearest)\",\n \"match\": [\n \"therapist\",\n \"therapy\",\n \"psychologist\",\n \"counsellor\",\n \"counselor\",\n \"מטפל\",\n \"פסיכולוג\",\n \"טיפול רגשי\"\n ],\n \"good\": [\n {\n \"preset\": \"fresh-practice\",\n \"reason\": \"Soft and reassuring; nothing sharp.\"\n },\n {\n \"preset\": \"morning-glass\",\n \"reason\": \"Calm, light and open.\"\n },\n {\n \"preset\": \"clear-care\",\n \"reason\": \"Clear and professional.\"\n },\n {\n \"preset\": \"kind-community\",\n \"reason\": \"Warm and human.\"\n }\n ],\n \"colour\": {\n \"mood\": \"calm pastels and trust colours\",\n \"swatches\": [\n \"#0284C7\",\n \"#0E8A89\",\n \"#3B6939\"\n ]\n },\n \"fonts\": \"calming, readable\",\n \"tone\": \"Gentle, plain, never salesy.\",\n \"motion\": \"calm\",\n \"moves\": {\n \"scroll\": \"normal\",\n \"animate\": \"subtle\",\n \"between\": \"none\"\n },\n \"imagery\": \"A calm room, daylight; your portrait.\",\n \"pages\": [\n \"home\",\n \"how I work\",\n \"about\",\n \"faq\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"about\",\n \"faq\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"feature.triad\",\n \"faq.accordion\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"bold\",\n \"energetic\"\n ]\n },\n \"say\": \"Bright, loud design can feel overwhelming to someone looking for help.\"\n },\n {\n \"when\": {\n \"motion\": [\n \"snappy\",\n \"lively\"\n ]\n },\n \"say\": \"Fast, bouncy motion works against the calm people come for.\"\n },\n {\n \"check\": \"no-pattern\",\n \"pattern\": \"proof.testimonial-carousel\",\n \"say\": \"Client quotes can reveal who saw you; ask before showing any.\"\n }\n ],\n \"words\": [\n \"fix\",\n \"cure\",\n \"guaranteed\"\n ],\n \"structure\": \"practice\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"must\"\n },\n {\n \"id\": \"clinic\",\n \"label\": \"Clinic or practice\",\n \"he\": \"מרפאה\",\n \"group\": \"Health\",\n \"uupm\": \"58 Medical Clinic\",\n \"match\": [\n \"clinic\",\n \"doctor\",\n \"physio\",\n \"physiotherapy\",\n \"medical\",\n \"מרפאה\",\n \"רופא\",\n \"פיזיותרפיה\"\n ],\n \"good\": [\n {\n \"preset\": \"clear-care\",\n \"reason\": \"Clean and readable; trust first.\"\n },\n {\n \"preset\": \"fresh-practice\",\n \"reason\": \"Friendly, light and calm.\"\n },\n {\n \"preset\": \"trusted-advisor\",\n \"reason\": \"Firm and professional.\"\n },\n {\n \"preset\": \"morning-glass\",\n \"reason\": \"Modern and calm.\"\n }\n ],\n \"colour\": {\n \"mood\": \"medical blue and white\",\n \"swatches\": [\n \"#0E7490\",\n \"#0284C7\",\n \"#1E3A8A\"\n ]\n },\n \"fonts\": \"professional, readable\",\n \"tone\": \"Clear and plain; what you treat, how to book.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"normal\",\n \"animate\": \"subtle\",\n \"between\": \"fade\"\n },\n \"imagery\": \"Your team and rooms; no stock doctors.\",\n \"pages\": [\n \"home\",\n \"treatments (services)\",\n \"team\",\n \"faq\",\n \"contact\"\n ],\n \"needs\": [\n \"services\",\n \"team\",\n \"faq\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"feature.triad\",\n \"faq.accordion\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"playful\"\n ]\n },\n \"say\": \"Playful design can make patients doubt the care.\"\n },\n {\n \"check\": \"brand-hue\",\n \"from\": 270,\n \"to\": 335,\n \"minChroma\": 0.12,\n \"say\": \"A purple-pink brand is the colour of AI tools right now; on this kind of site it can read as generic.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"phone\",\n \"say\": \"A phone number is the first thing people need here.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"hours\",\n \"say\": \"People look for your opening hours first; a site without them sends them elsewhere.\"\n }\n ],\n \"words\": [\n \"cure\",\n \"guaranteed\",\n \"miracle\",\n \"best in town\"\n ],\n \"structure\": \"practice\",\n \"slice\": true,\n \"stock\": true,\n \"booking\": \"must\"\n },\n {\n \"id\": \"dental\",\n \"label\": \"Dental practice\",\n \"he\": \"מרפאת שיניים\",\n \"group\": \"Health\",\n \"uupm\": \"60 Dental Practice\",\n \"match\": [\n \"dental\",\n \"dentist\",\n \"orthodont\",\n \"שיניים\",\n \"רופא שיניים\"\n ],\n \"good\": [\n {\n \"preset\": \"fresh-practice\",\n \"reason\": \"Fresh blue and soft shapes: a friendly smile.\"\n },\n {\n \"preset\": \"clear-care\",\n \"reason\": \"Clean and trustworthy.\"\n },\n {\n \"preset\": \"morning-glass\",\n \"reason\": \"Bright and modern.\"\n }\n ],\n \"colour\": {\n \"mood\": \"fresh blue, white, a touch of yellow\",\n \"swatches\": [\n \"#0284C7\",\n \"#0E7490\",\n \"#0E8A89\"\n ]\n },\n \"fonts\": \"friendly, professional\",\n \"tone\": \"Reassuring, plain.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"normal\",\n \"animate\": \"subtle\",\n \"between\": \"fade\"\n },\n \"imagery\": \"Your clinic and team.\",\n \"pages\": [\n \"home\",\n \"treatments\",\n \"team\",\n \"faq\",\n \"contact\"\n ],\n \"needs\": [\n \"services\",\n \"team\",\n \"faq\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"feature.triad\",\n \"proof.testimonial-carousel\",\n \"faq.accordion\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"mode\": [\n \"dark\"\n ]\n },\n \"say\": \"Dark pages feel heavy for a dental practice.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"phone\",\n \"say\": \"A phone number is the first thing people need here.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"hours\",\n \"say\": \"People look for your opening hours first; a site without them sends them elsewhere.\"\n }\n ],\n \"words\": [\n \"painless\",\n \"guaranteed\",\n \"perfect smile\"\n ],\n \"structure\": \"practice\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"must\"\n },\n {\n \"id\": \"vet\",\n \"label\": \"Vet or pet care\",\n \"he\": \"וטרינר / טיפוח חיות\",\n \"group\": \"Health\",\n \"uupm\": \"61 Veterinary Clinic\",\n \"match\": [\n \"vet\",\n \"veterinary\",\n \"pet\",\n \"dog\",\n \"groom\",\n \"וטרינר\",\n \"כלבים\",\n \"חיות\"\n ],\n \"good\": [\n {\n \"preset\": \"little-ones\",\n \"reason\": \"Round, warm and playful.\"\n },\n {\n \"preset\": \"kind-community\",\n \"reason\": \"Friendly and caring.\"\n },\n {\n \"preset\": \"fresh-practice\",\n \"reason\": \"Clean and reassuring for a clinic.\"\n },\n {\n \"preset\": \"clear-care\",\n \"reason\": \"Professional, for a medical practice.\"\n }\n ],\n \"colour\": {\n \"mood\": \"caring blue or teal, warm accents\",\n \"swatches\": [\n \"#006A6A\",\n \"#3B6939\",\n \"#0284C7\"\n ]\n },\n \"fonts\": \"friendly, welcoming\",\n \"tone\": \"Warm, practical.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"normal\",\n \"animate\": \"standard\",\n \"between\": \"fade\"\n },\n \"imagery\": \"Real animals you treat (with permission).\",\n \"pages\": [\n \"home\",\n \"services\",\n \"team\",\n \"faq\",\n \"contact\"\n ],\n \"needs\": [\n \"services\",\n \"team\",\n \"faq\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"feature.triad\",\n \"faq.accordion\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"mode\": [\n \"dark\"\n ]\n },\n \"say\": \"Dark pages feel unfriendly for pet owners.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"phone\",\n \"say\": \"A phone number is the first thing people need here.\"\n }\n ],\n \"words\": [\n \"guaranteed\",\n \"cure\"\n ],\n \"structure\": \"practice\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"must\"\n },\n {\n \"id\": \"restaurant\",\n \"label\": \"Restaurant\",\n \"he\": \"מסעדה\",\n \"group\": \"Food and drink\",\n \"uupm\": \"34 Restaurant/Food Service\",\n \"match\": [\n \"restaurant\",\n \"bistro\",\n \"kitchen\",\n \"chef\",\n \"מסעדה\",\n \"שף\",\n \"ביסטרו\"\n ],\n \"good\": [\n {\n \"preset\": \"warm-editorial\",\n \"reason\": \"Warm paper and serif, like a printed menu.\"\n },\n {\n \"preset\": \"corner-cafe\",\n \"reason\": \"Friendly and casual.\"\n },\n {\n \"preset\": \"after-dark\",\n \"reason\": \"Dark and lively for an evening place.\"\n },\n {\n \"preset\": \"quiet-luxury\",\n \"reason\": \"For fine dining.\"\n }\n ],\n \"colour\": {\n \"mood\": \"warm — orange, red, brown\",\n \"swatches\": [\n \"#9A4F2B\",\n \"#9C4146\",\n \"#7A5B36\"\n ]\n },\n \"fonts\": \"appetising, clear\",\n \"tone\": \"Inviting, sensory, short.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"smooth\",\n \"animate\": \"standard\",\n \"between\": \"fade\"\n },\n \"imagery\": \"Your own food and room photos.\",\n \"pages\": [\n \"home\",\n \"menu\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"menu\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.full-bleed-media\",\n \"feature.triad\",\n \"proof.testimonial-carousel\",\n \"contact.split-map\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"technical\"\n ]\n },\n \"say\": \"A cold, technical look kills appetite.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"hours\",\n \"say\": \"People look for your opening hours first; a site without them sends them elsewhere.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"address\",\n \"say\": \"Visitors need the address to find you.\"\n },\n {\n \"check\": \"image-hero\",\n \"say\": \"Lead with a picture: the first screen should show the place or the work, not only words.\"\n }\n ],\n \"words\": [\n \"best food in town\",\n \"world-class\",\n \"mouth-watering\"\n ],\n \"structure\": \"place\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"tables\"\n },\n {\n \"id\": \"cafe-bakery\",\n \"label\": \"Café or bakery\",\n \"he\": \"בית קפה / מאפייה\",\n \"group\": \"Food and drink\",\n \"uupm\": \"63 Bakery/Cafe\",\n \"match\": [\n \"cafe\",\n \"café\",\n \"coffee\",\n \"bakery\",\n \"patisserie\",\n \"בית קפה\",\n \"קפה\",\n \"מאפייה\",\n \"קונדיטוריה\"\n ],\n \"good\": [\n {\n \"preset\": \"corner-cafe\",\n \"reason\": \"Warm, round and cheerful.\"\n },\n {\n \"preset\": \"warm-editorial\",\n \"reason\": \"Cream and brown, like a paper bag.\"\n },\n {\n \"preset\": \"fresh-market\",\n \"reason\": \"Bright and fresh for a juice or brunch spot.\"\n },\n {\n \"preset\": \"garden-party\",\n \"reason\": \"Soft and sweet for a patisserie.\"\n }\n ],\n \"colour\": {\n \"mood\": \"warm brown, cream, appetising accents\",\n \"swatches\": [\n \"#9C4146\",\n \"#9A4F2B\",\n \"#7D5260\"\n ]\n },\n \"fonts\": \"warm, inviting\",\n \"tone\": \"Friendly, short, a little playful.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"smooth\",\n \"animate\": \"standard\",\n \"between\": \"slide\"\n },\n \"imagery\": \"Your bakes and drinks, close up.\",\n \"pages\": [\n \"home\",\n \"menu\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"menu\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"feature.triad\",\n \"collection.masonry-gallery\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"mode\": [\n \"dark\"\n ]\n },\n \"say\": \"A café is a daytime place; dark pages feel closed.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"hours\",\n \"say\": \"People look for your opening hours first; a site without them sends them elsewhere.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"address\",\n \"say\": \"Visitors need the address to find you.\"\n }\n ],\n \"words\": [\n \"best coffee in town\",\n \"to die for\"\n ],\n \"structure\": \"place\",\n \"slice\": true,\n \"stock\": true,\n \"booking\": \"none\"\n },\n {\n \"id\": \"bar-winery\",\n \"label\": \"Bar, winery or brewery\",\n \"he\": \"בר / יקב / מבשלה\",\n \"group\": \"Food and drink\",\n \"uupm\": \"64 Brewery/Winery\",\n \"match\": [\n \"bar\",\n \"wine\",\n \"winery\",\n \"brewery\",\n \"cocktail\",\n \"יקב\",\n \"בר\",\n \"יין\",\n \"בירה\"\n ],\n \"good\": [\n {\n \"preset\": \"quiet-luxury\",\n \"reason\": \"Bronze and serif, like a good label.\"\n },\n {\n \"preset\": \"after-dark\",\n \"reason\": \"Dark and lively, open late.\"\n },\n {\n \"preset\": \"warm-editorial\",\n \"reason\": \"Heritage and story.\"\n },\n {\n \"preset\": \"ink-studio\",\n \"reason\": \"Craft-beer attitude.\"\n }\n ],\n \"colour\": {\n \"mood\": \"deep amber, burgundy, gold\",\n \"swatches\": [\n \"#7A5B36\",\n \"#9C4146\",\n \"#DB2777\"\n ]\n },\n \"fonts\": \"artisanal, heritage\",\n \"tone\": \"Story-led: the place, the people, the craft.\",\n \"motion\": \"calm\",\n \"moves\": {\n \"scroll\": \"smooth\",\n \"animate\": \"subtle\",\n \"between\": \"cinematic\"\n },\n \"imagery\": \"The cellar, the bar, the bottle.\",\n \"pages\": [\n \"home\",\n \"menu or wines\",\n \"our story\",\n \"visit\",\n \"contact\"\n ],\n \"needs\": [\n \"menu\",\n \"visit\",\n \"contact\"\n ],\n \"home\": [\n \"hero.full-bleed-media\",\n \"about.story\",\n \"collection.card-grid\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"flavor\": [\n \"bloom\"\n ]\n },\n \"say\": \"Round, bouncy design reads as a kids' brand, not a cellar.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"hours\",\n \"say\": \"People look for your opening hours first; a site without them sends them elsewhere.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"address\",\n \"say\": \"Visitors need the address to find you.\"\n }\n ],\n \"words\": [\n \"best wine\",\n \"award-winning (unless you are)\"\n ],\n \"structure\": \"place\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"none\"\n },\n {\n \"id\": \"boutique\",\n \"label\": \"Fashion or lifestyle shop\",\n \"he\": \"בוטיק\",\n \"group\": \"Shops\",\n \"uupm\": \"3 E-commerce · 4 E-commerce Luxury\",\n \"match\": [\n \"boutique\",\n \"fashion\",\n \"clothing\",\n \"shop\",\n \"store\",\n \"בוטיק\",\n \"אופנה\",\n \"חנות\"\n ],\n \"good\": [\n {\n \"preset\": \"gallery-minimal\",\n \"reason\": \"Clean and chic; the products lead.\"\n },\n {\n \"preset\": \"quiet-luxury\",\n \"reason\": \"Premium and calm.\"\n },\n {\n \"preset\": \"bold-maker\",\n \"reason\": \"A brand with a loud voice.\"\n },\n {\n \"preset\": \"zine\",\n \"reason\": \"Indie and edgy.\"\n }\n ],\n \"colour\": {\n \"mood\": \"your brand colour on a quiet page\",\n \"swatches\": [\n \"#3F4A5A\",\n \"#7A5B36\",\n \"#FF5C39\"\n ]\n },\n \"fonts\": \"refined or bold\",\n \"tone\": \"Short and confident.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"smooth\",\n \"animate\": \"standard\",\n \"between\": \"slide\"\n },\n \"imagery\": \"Product photos on plain grounds; real people wearing them.\",\n \"pages\": [\n \"home\",\n \"collection\",\n \"product (detail)\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"detail\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"collection.card-grid\",\n \"proof.logo-strip\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"check\": \"copy-length\",\n \"max\": \"standard\",\n \"say\": \"Text-heavy pages slow down shoppers.\"\n },\n {\n \"check\": \"needs-family\",\n \"family\": \"collection\",\n \"say\": \"Show the work: a site like this needs a gallery or a grid of projects on the home page.\"\n }\n ],\n \"words\": [\n \"cheap\",\n \"must-have\"\n ],\n \"structure\": \"studio\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"none\"\n },\n {\n \"id\": \"florist\",\n \"label\": \"Florist or plant shop\",\n \"he\": \"חנות פרחים\",\n \"group\": \"Shops\",\n \"uupm\": \"62 Florist/Plant Shop\",\n \"match\": [\n \"florist\",\n \"flowers\",\n \"plants\",\n \"bouquet\",\n \"פרחים\",\n \"צמחים\",\n \"זרים\"\n ],\n \"good\": [\n {\n \"preset\": \"garden-party\",\n \"reason\": \"Soft, romantic and full of colour.\"\n },\n {\n \"preset\": \"kind-community\",\n \"reason\": \"Leaf green and friendly.\"\n },\n {\n \"preset\": \"fresh-market\",\n \"reason\": \"Bright, like a flower stall.\"\n },\n {\n \"preset\": \"soft-spa\",\n \"reason\": \"Elegant for a design florist.\"\n }\n ],\n \"colour\": {\n \"mood\": \"natural green with floral pinks\",\n \"swatches\": [\n \"#3B6939\",\n \"#7D5260\",\n \"#00B86B\"\n ]\n },\n \"fonts\": \"elegant, natural\",\n \"tone\": \"Seasonal, warm.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"smooth\",\n \"animate\": \"standard\",\n \"between\": \"fade\"\n },\n \"imagery\": \"Your own arrangements in daylight.\",\n \"pages\": [\n \"home\",\n \"flowers (collection)\",\n \"weddings and events\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"collection.masonry-gallery\",\n \"feature.triad\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"mode\": [\n \"dark\"\n ]\n },\n \"say\": \"Flowers lose their colour on a dark page.\"\n },\n {\n \"check\": \"needs-family\",\n \"family\": \"collection\",\n \"say\": \"Show the work: a site like this needs a gallery or a grid of projects on the home page.\"\n }\n ],\n \"words\": [\n \"cheap\",\n \"best prices\"\n ],\n \"structure\": \"studio\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"none\"\n },\n {\n \"id\": \"home-goods\",\n \"label\": \"Furniture or home goods\",\n \"he\": \"רהיטים ועיצוב הבית\",\n \"group\": \"Shops\",\n \"uupm\": \"161 Home Decoration & Interior Design\",\n \"match\": [\n \"furniture\",\n \"home goods\",\n \"homeware\",\n \"decor shop\",\n \"רהיטים\",\n \"כלי בית\"\n ],\n \"good\": [\n {\n \"preset\": \"warm-editorial\",\n \"reason\": \"Warm and tactile, like a catalogue.\"\n },\n {\n \"preset\": \"gallery-minimal\",\n \"reason\": \"Clean and calm; each piece stands alone.\"\n },\n {\n \"preset\": \"quiet-luxury\",\n \"reason\": \"Premium pieces deserve it.\"\n },\n {\n \"preset\": \"frosted-portfolio\",\n \"reason\": \"Soft glass and space.\"\n }\n ],\n \"colour\": {\n \"mood\": \"neutral interior palette, a material accent\",\n \"swatches\": [\n \"#78716C\",\n \"#9A4F2B\",\n \"#7A5B36\"\n ]\n },\n \"fonts\": \"professional, clean\",\n \"tone\": \"Clear and specific: size, material, care.\",\n \"motion\": \"calm\",\n \"moves\": {\n \"scroll\": \"smooth\",\n \"animate\": \"subtle\",\n \"between\": \"fade\"\n },\n \"imagery\": \"Pieces in real rooms and on plain grounds.\",\n \"pages\": [\n \"home\",\n \"collection\",\n \"product (detail)\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"detail\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"collection.card-grid\",\n \"feature.alternating-rows\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"playful\"\n ]\n },\n \"say\": \"Excessive decoration distracts from the pieces.\"\n },\n {\n \"check\": \"needs-family\",\n \"family\": \"collection\",\n \"say\": \"Show the work: a site like this needs a gallery or a grid of projects on the home page.\"\n }\n ],\n \"words\": [\n \"luxury\",\n \"cheap\"\n ],\n \"structure\": \"studio\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"none\"\n },\n {\n \"id\": \"consultant\",\n \"label\": \"Consultant\",\n \"he\": \"יועץ/ת\",\n \"group\": \"Professional services\",\n \"uupm\": \"5 B2B Service (consult keyword)\",\n \"match\": [\n \"consult\",\n \"consultant\",\n \"advisor\",\n \"strategy\",\n \"יועץ\",\n \"ייעוץ\"\n ],\n \"good\": [\n {\n \"preset\": \"trusted-advisor\",\n \"reason\": \"Navy and plain type: serious and clear.\"\n },\n {\n \"preset\": \"swiss-grid\",\n \"reason\": \"Sharp and modern.\"\n },\n {\n \"preset\": \"tech-studio\",\n \"reason\": \"For tech and data consultants.\"\n },\n {\n \"preset\": \"clear-care\",\n \"reason\": \"Light and approachable.\"\n }\n ],\n \"colour\": {\n \"mood\": \"professional blue and neutral grey\",\n \"swatches\": [\n \"#1E3A8A\",\n \"#111827\",\n \"#0E7490\"\n ]\n },\n \"fonts\": \"formal, clear\",\n \"tone\": \"Plain and specific: problems you solve, results.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"normal\",\n \"animate\": \"subtle\",\n \"between\": \"fade\"\n },\n \"imagery\": \"Your portrait; diagrams over stock.\",\n \"pages\": [\n \"home\",\n \"services\",\n \"case studies\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"services\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"feature.triad\",\n \"proof.stat-row\",\n \"proof.testimonial-carousel\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"playful\"\n ]\n },\n \"say\": \"Playful reads as unserious to a client buying advice.\"\n },\n {\n \"check\": \"brand-hue\",\n \"from\": 270,\n \"to\": 335,\n \"minChroma\": 0.12,\n \"say\": \"A purple-pink brand is the colour of AI tools right now; on this kind of site it can read as generic.\"\n }\n ],\n \"words\": [\n \"synergy\",\n \"guaranteed ROI\",\n \"world-class\"\n ],\n \"structure\": \"practice\",\n \"slice\": true,\n \"stock\": true,\n \"booking\": \"sometimes\"\n },\n {\n \"id\": \"coach\",\n \"label\": \"Life or business coach\",\n \"he\": \"מאמן/ת אישי/ת\",\n \"group\": \"Professional services\",\n \"uupm\": \"no row\",\n \"match\": [\n \"life coach\",\n \"business coach\",\n \"mentor\",\n \"coaching\",\n \"מאמנת\",\n \"אימון אישי\",\n \"קואצ'ינג\"\n ],\n \"good\": [\n {\n \"preset\": \"morning-glass\",\n \"reason\": \"Fresh and hopeful.\"\n },\n {\n \"preset\": \"trusted-advisor\",\n \"reason\": \"Credible for business coaching.\"\n },\n {\n \"preset\": \"warm-editorial\",\n \"reason\": \"Warm and personal, story-led.\"\n },\n {\n \"preset\": \"coral-studio\",\n \"reason\": \"Energetic and upbeat.\"\n }\n ],\n \"colour\": {\n \"mood\": \"warm and hopeful\",\n \"swatches\": [\n \"#0E8A89\",\n \"#E5484D\",\n \"#1E3A8A\"\n ]\n },\n \"fonts\": \"warm, clear\",\n \"tone\": \"Personal, encouraging, first person.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"smooth\",\n \"animate\": \"standard\",\n \"between\": \"fade\"\n },\n \"imagery\": \"Your portrait, working with people.\",\n \"pages\": [\n \"home\",\n \"how it works\",\n \"programmes\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"feature.triad\",\n \"pricing.tiers\",\n \"faq.accordion\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"technical\"\n ]\n },\n \"say\": \"A cold, technical look is the opposite of personal.\"\n }\n ],\n \"words\": [\n \"life-changing\",\n \"guaranteed\"\n ],\n \"structure\": \"practice\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"must\"\n },\n {\n \"id\": \"law-accounting\",\n \"label\": \"Law or accounting firm\",\n \"he\": \"משרד עורכי דין / רואי חשבון\",\n \"group\": \"Professional services\",\n \"uupm\": \"40 Legal Services\",\n \"match\": [\n \"law\",\n \"lawyer\",\n \"attorney\",\n \"legal\",\n \"accountant\",\n \"accounting\",\n \"עורך דין\",\n \"עורכת דין\",\n \"רואה חשבון\",\n \"משפט\"\n ],\n \"good\": [\n {\n \"preset\": \"trusted-advisor\",\n \"reason\": \"Navy and gold: authority without fuss.\"\n },\n {\n \"preset\": \"swiss-grid\",\n \"reason\": \"Precise and modern.\"\n },\n {\n \"preset\": \"clear-care\",\n \"reason\": \"Clear and approachable.\"\n },\n {\n \"preset\": \"quiet-luxury\",\n \"reason\": \"For a boutique firm.\"\n }\n ],\n \"colour\": {\n \"mood\": \"navy, gold, white\",\n \"swatches\": [\n \"#1E3A8A\",\n \"#111827\",\n \"#7A5B36\"\n ]\n },\n \"fonts\": \"professional, authoritative\",\n \"tone\": \"Formal, exact, no promises you cannot keep.\",\n \"motion\": \"calm\",\n \"moves\": {\n \"scroll\": \"normal\",\n \"animate\": \"still\",\n \"between\": \"none\"\n },\n \"imagery\": \"Your team; your office.\",\n \"pages\": [\n \"home\",\n \"practice areas (services)\",\n \"team\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"services\",\n \"team\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"feature.triad\",\n \"proof.stat-row\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"flavor\": [\n \"pop\",\n \"bloom\"\n ]\n },\n \"say\": \"Playful design undermines the trust clients need.\"\n },\n {\n \"when\": {\n \"motion\": [\n \"lively\"\n ]\n },\n \"say\": \"Bouncy motion feels out of place for legal or financial advice.\"\n },\n {\n \"check\": \"brand-hue\",\n \"from\": 270,\n \"to\": 335,\n \"minChroma\": 0.12,\n \"say\": \"A purple-pink brand is the colour of AI tools right now; on this kind of site it can read as generic.\"\n }\n ],\n \"words\": [\n \"guarantee\",\n \"win your case\",\n \"best lawyer\"\n ],\n \"structure\": \"practice\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"sometimes\"\n },\n {\n \"id\": \"real-estate\",\n \"label\": \"Real estate agent\",\n \"he\": \"נדל\\\"ן\",\n \"group\": \"Professional services\",\n \"uupm\": \"36 Real Estate/Property\",\n \"match\": [\n \"real estate\",\n \"realtor\",\n \"property\",\n \"apartments\",\n \"נדל\\\"ן\",\n \"נדלן\",\n \"דירות\"\n ],\n \"good\": [\n {\n \"preset\": \"holiday-light\",\n \"reason\": \"Bright glass and big photos.\"\n },\n {\n \"preset\": \"trusted-advisor\",\n \"reason\": \"Professional and trustworthy.\"\n },\n {\n \"preset\": \"quiet-luxury\",\n \"reason\": \"For luxury property.\"\n },\n {\n \"preset\": \"frosted-portfolio\",\n \"reason\": \"Clean and modern.\"\n }\n ],\n \"colour\": {\n \"mood\": \"trust blue, gold, white\",\n \"swatches\": [\n \"#0A66E8\",\n \"#1E3A8A\",\n \"#7A5B36\"\n ]\n },\n \"fonts\": \"professional, confident\",\n \"tone\": \"Clear and factual.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"smooth\",\n \"animate\": \"standard\",\n \"between\": \"slide\"\n },\n \"imagery\": \"Your own property photos; never stock.\",\n \"pages\": [\n \"home\",\n \"properties (collection)\",\n \"property (detail)\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"detail\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.full-bleed-media\",\n \"collection.card-grid\",\n \"proof.testimonial-carousel\",\n \"contact.split-map\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"playful\"\n ]\n },\n \"say\": \"Playful design doesn't fit a large purchase.\"\n },\n {\n \"check\": \"image-hero\",\n \"say\": \"Lead with a picture: the first screen should show the place or the work, not only words.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"phone\",\n \"say\": \"A phone number is the first thing people need here.\"\n }\n ],\n \"words\": [\n \"dream home\",\n \"guaranteed\",\n \"once in a lifetime\"\n ],\n \"structure\": \"studio\",\n \"slice\": false,\n \"stock\": false,\n \"booking\": \"sometimes\"\n },\n {\n \"id\": \"nonprofit\",\n \"label\": \"Nonprofit or community\",\n \"he\": \"עמותה\",\n \"group\": \"Community and places\",\n \"uupm\": \"44 Non-profit/Charity\",\n \"match\": [\n \"nonprofit\",\n \"non-profit\",\n \"charity\",\n \"ngo\",\n \"volunteer\",\n \"community\",\n \"עמותה\",\n \"מתנדבים\",\n \"קהילה\"\n ],\n \"good\": [\n {\n \"preset\": \"kind-community\",\n \"reason\": \"Warm, open and welcoming.\"\n },\n {\n \"preset\": \"clear-care\",\n \"reason\": \"Clear and credible.\"\n },\n {\n \"preset\": \"warm-editorial\",\n \"reason\": \"For telling stories.\"\n },\n {\n \"preset\": \"little-ones\",\n \"reason\": \"For children's causes.\"\n }\n ],\n \"colour\": {\n \"mood\": \"cause colours, trust, warmth\",\n \"swatches\": [\n \"#3B6939\",\n \"#0E7490\",\n \"#9A4F2B\"\n ]\n },\n \"fonts\": \"heartfelt, readable\",\n \"tone\": \"Honest, specific about impact.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"normal\",\n \"animate\": \"standard\",\n \"between\": \"fade\"\n },\n \"imagery\": \"Real people you help (with permission).\",\n \"pages\": [\n \"home\",\n \"what we do\",\n \"stories\",\n \"get involved\",\n \"contact\"\n ],\n \"needs\": [\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"proof.stat-row\",\n \"story.long-form\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"luxurious\"\n ]\n },\n \"say\": \"Looking expensive makes donors ask where the money goes.\"\n }\n ],\n \"words\": [\n \"donate now!!\",\n \"save the world\"\n ],\n \"structure\": \"practice\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"none\"\n },\n {\n \"id\": \"venue-events\",\n \"label\": \"Venue, weddings or events\",\n \"he\": \"אולם, חתונות ואירועים\",\n \"group\": \"Community and places\",\n \"uupm\": \"39 Wedding/Event Planning · 70 Event Management\",\n \"match\": [\n \"venue\",\n \"wedding\",\n \"events\",\n \"event\",\n \"hall\",\n \"festival\",\n \"אולם\",\n \"חתונות\",\n \"אירועים\",\n \"גן אירועים\"\n ],\n \"good\": [\n {\n \"preset\": \"garden-party\",\n \"reason\": \"Romantic and warm for weddings.\"\n },\n {\n \"preset\": \"quiet-luxury\",\n \"reason\": \"Elegant for a premium venue.\"\n },\n {\n \"preset\": \"after-dark\",\n \"reason\": \"Dark and lively for parties.\"\n },\n {\n \"preset\": \"festival\",\n \"reason\": \"Poster energy for festivals.\"\n }\n ],\n \"colour\": {\n \"mood\": \"soft pink, gold, cream — or event colours\",\n \"swatches\": [\n \"#7D5260\",\n \"#7A5B36\",\n \"#FF4FA3\"\n ]\n },\n \"fonts\": \"elegant or bold\",\n \"tone\": \"Evocative; the day, the place, the people.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"extra\",\n \"animate\": \"standard\",\n \"between\": \"cinematic\"\n },\n \"imagery\": \"Real events at your venue.\",\n \"pages\": [\n \"home\",\n \"spaces\",\n \"gallery\",\n \"faq\",\n \"contact\"\n ],\n \"needs\": [\n \"gallery\",\n \"faq\",\n \"contact\"\n ],\n \"home\": [\n \"hero.full-bleed-media\",\n \"collection.masonry-gallery\",\n \"faq.accordion\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"technical\"\n ]\n },\n \"say\": \"A technical look takes the romance out of the day.\"\n },\n {\n \"check\": \"needs-family\",\n \"family\": \"collection\",\n \"say\": \"Show the work: a site like this needs a gallery or a grid of projects on the home page.\"\n },\n {\n \"check\": \"image-hero\",\n \"say\": \"Lead with a picture: the first screen should show the place or the work, not only words.\"\n }\n ],\n \"words\": [\n \"fairy tale\",\n \"once in a lifetime\"\n ],\n \"structure\": \"place\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"tables\"\n },\n {\n \"id\": \"hotel-bnb\",\n \"label\": \"Hotel, B&B or guesthouse\",\n \"he\": \"מלון / צימר\",\n \"group\": \"Community and places\",\n \"uupm\": \"38 Hotel/Hospitality\",\n \"match\": [\n \"hotel\",\n \"b&b\",\n \"guesthouse\",\n \"cabin\",\n \"zimmer\",\n \"מלון\",\n \"צימר\",\n \"אירוח\"\n ],\n \"good\": [\n {\n \"preset\": \"holiday-light\",\n \"reason\": \"Sea-blue glass: makes people want to go.\"\n },\n {\n \"preset\": \"quiet-luxury\",\n \"reason\": \"For a boutique hotel.\"\n },\n {\n \"preset\": \"warm-editorial\",\n \"reason\": \"Warm and personal for a B&B.\"\n },\n {\n \"preset\": \"morning-glass\",\n \"reason\": \"Fresh and calm.\"\n }\n ],\n \"colour\": {\n \"mood\": \"warm neutrals, gold — or sea blue\",\n \"swatches\": [\n \"#0A66E8\",\n \"#7A5B36\",\n \"#0E8A89\"\n ]\n },\n \"fonts\": \"elegant, welcoming\",\n \"tone\": \"Welcoming, sensory.\",\n \"motion\": \"calm\",\n \"moves\": {\n \"scroll\": \"extra\",\n \"animate\": \"subtle\",\n \"between\": \"cinematic\"\n },\n \"imagery\": \"Rooms, views, breakfast; your own photos.\",\n \"pages\": [\n \"home\",\n \"rooms (collection)\",\n \"room (detail)\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"collection\",\n \"detail\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.full-bleed-media\",\n \"collection.card-grid\",\n \"proof.testimonial-carousel\",\n \"faq.accordion\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"technical\"\n ]\n },\n \"say\": \"Cold and technical is the opposite of a welcome.\"\n },\n {\n \"check\": \"image-hero\",\n \"say\": \"Lead with a picture: the first screen should show the place or the work, not only words.\"\n },\n {\n \"check\": \"needs-fact\",\n \"fact\": \"address\",\n \"say\": \"Visitors need the address to find you.\"\n }\n ],\n \"words\": [\n \"paradise\",\n \"luxury (unless rated)\"\n ],\n \"structure\": \"place\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"tables\"\n },\n {\n \"id\": \"classes\",\n \"label\": \"Teacher, tutor or classes\",\n \"he\": \"מורה, חוגים ושיעורים\",\n \"group\": \"Community and places\",\n \"uupm\": \"153 Music Instrument Learning · 56 Childcare/Daycare\",\n \"match\": [\n \"tutor\",\n \"lessons\",\n \"teacher\",\n \"classes\",\n \"school\",\n \"music lessons\",\n \"kids\",\n \"מורה\",\n \"שיעורים\",\n \"חוג\",\n \"חוגים\",\n \"ילדים\"\n ],\n \"good\": [\n {\n \"preset\": \"little-ones\",\n \"reason\": \"Playful and safe for children.\"\n },\n {\n \"preset\": \"kind-community\",\n \"reason\": \"Warm and open.\"\n },\n {\n \"preset\": \"coral-studio\",\n \"reason\": \"Energetic for dance or music.\"\n },\n {\n \"preset\": \"fresh-market\",\n \"reason\": \"Bright and lively.\"\n }\n ],\n \"colour\": {\n \"mood\": \"warm, energetic\",\n \"swatches\": [\n \"#006A6A\",\n \"#E5484D\",\n \"#3B6939\"\n ]\n },\n \"fonts\": \"friendly, large\",\n \"tone\": \"Encouraging, clear for parents.\",\n \"motion\": \"standard\",\n \"moves\": {\n \"scroll\": \"normal\",\n \"animate\": \"lively\",\n \"between\": \"slide\"\n },\n \"imagery\": \"Real classes (with permission).\",\n \"pages\": [\n \"home\",\n \"classes\",\n \"prices\",\n \"about\",\n \"contact\"\n ],\n \"needs\": [\n \"prices\",\n \"about\",\n \"contact\"\n ],\n \"home\": [\n \"hero.split\",\n \"feature.triad\",\n \"pricing.tiers\",\n \"faq.accordion\",\n \"cta.banner\"\n ],\n \"avoid\": [\n {\n \"when\": {\n \"moods\": [\n \"luxurious\"\n ]\n },\n \"say\": \"An expensive look puts off parents comparing classes.\"\n },\n {\n \"when\": {\n \"motion\": [\n \"off\"\n ]\n },\n \"say\": \"A still site feels low-energy for a class.\"\n }\n ],\n \"words\": [\n \"guaranteed\",\n \"genius\"\n ],\n \"structure\": \"practice\",\n \"slice\": false,\n \"stock\": true,\n \"booking\": \"must\"\n }\n] as const;\n\nexport const SPEC_ANALYSIS_SHAPE = {\n \"analysis\": {\n \"businessType\": \"string — a harness.businessTypes id\",\n \"alternatives\": \"[string, string] — the two nearest business types\",\n \"business\": \"business\",\n \"needs\": \"need[] — what the site needs: the owner's (from: you) and the type's (from: type)\",\n \"facts\": \"{ [fact]: factRead } — site.facts keys, only what the prompt states; every quote is words of the prompt\",\n \"missingFacts\": \"string[] — site.facts keys the prompt does not state\",\n \"voice\": \"voice\",\n \"moods\": \"string[] — ≤ 3 moods\",\n \"avoid\": \"string[] — harness.userAvoids ids the owner asked for\",\n \"hero\": \"hero\",\n \"locale\": \"'he' | 'en'\"\n },\n \"business\": {\n \"name\": \"string — the business as the owner names it\",\n \"audience\": \"string — who it is for, one short line\"\n },\n \"need\": {\n \"id\": \"string — a harness.needs id\",\n \"from\": \"'you' | 'type'\",\n \"name?\": \"string — the owner's own word for it\"\n },\n \"factRead\": {\n \"value\": \"string — the fact\",\n \"quote\": \"string — the words of the prompt it came from\"\n },\n \"voice\": {\n \"tone\": \"string — one line\",\n \"person\": \"'we' | 'I'\",\n \"formality\": \"'casual' | 'neutral' | 'formal'\",\n \"avoidWords\": \"string[]\"\n },\n \"hero\": {\n \"headline\": \"string — the hero headline\",\n \"lead\": \"string — the hero lead\"\n }\n} as const;\n\nexport const SPEC_HARNESS_EXAMPLES = [\n {\n \"id\": \"kadar\",\n \"locale\": \"he\",\n \"dir\": \"rtl\",\n \"prompt\": \"סטודיו קדר — כלי חרס בעבודת יד מסטודיו קטן ביפו. רוצה אתר שמציג את הכלים החדשים, מסביר על סדנאות יום שישי ומאפשר להשאיר פרטים להרשמה. בלי משהו קר או טכנולוגי.\",\n \"business\": {\n \"name\": \"סטודיו קדר\",\n \"latin\": \"Studio Kadar\",\n \"facts\": {\n \"email\": \"hello@studiokadar.co.il\"\n }\n },\n \"analysis\": {\n \"businessType\": \"makers\",\n \"alternatives\": [\n \"artist\",\n \"classes\"\n ],\n \"moods\": [\n \"warm\",\n \"crafted\",\n \"calm\"\n ],\n \"avoid\": [\n \"too-corporate\"\n ],\n \"copyLength\": \"standard\",\n \"sentences\": [\n [\n \"The business\",\n \"A small ceramics studio in Jaffa that makes stoneware by hand.\",\n \"כלי חרס בעבודת יד מסטודיו קטן ביפו\"\n ],\n [\n \"Who it is for\",\n \"People who buy hand-made tableware, and beginners who want to try the wheel.\",\n \"סדנאות יום שישי\"\n ],\n [\n \"What the site should do\",\n \"Show the new pieces and get people to sign up for a Friday workshop.\",\n \"ומאפשר להשאיר פרטים להרשמה\"\n ],\n [\n \"How it should feel\",\n \"Warm, hand-made and calm.\",\n \"בלי משהו קר או טכנולוגי\"\n ],\n [\n \"Put first\",\n \"New pieces from the kiln · Friday workshops · Made by hand in Jaffa\",\n \"הכלים החדשים\"\n ]\n ],\n \"hero\": {\n \"eyebrow\": \"כלי חרס · יפו\",\n \"headline\": \"סטודיו קדר\",\n \"lead\": \"כלי חרס בעבודת יד מסטודיו קטן ביפו.\"\n },\n \"missing\": [\n \"phone\",\n \"city\",\n \"address\",\n \"hours\"\n ],\n \"voice\": {\n \"tone\": \"Warm and plain, like the potter talking at the wheel. Short sentences.\",\n \"person\": \"we\",\n \"formality\": \"casual\",\n \"sample\": \"כל כלי יוצא מהתנור שלנו ביפו, ואין שניים זהים.\",\n \"avoid\": [\n \"מושלם\",\n \"יוקרתי\",\n \"ייצור המוני\"\n ]\n }\n },\n \"plan\": {\n \"homePatterns\": [\n \"hero.split\",\n \"collection.card-grid\",\n \"feature.triad\",\n \"cta.banner\"\n ],\n \"heroHasImage\": true,\n \"facts\": {\n \"email\": \"x\"\n }\n },\n \"said\": [\n {\n \"id\": \"collection\",\n \"name\": \"New pieces\"\n },\n {\n \"id\": \"services\",\n \"name\": \"Friday workshops\"\n },\n {\n \"id\": \"sign-up-form\",\n \"name\": \"Workshop sign-up\"\n }\n ],\n \"read\": {\n \"sources\": [\n {\n \"kind\": \"site\",\n \"ref\": \"harastudio.example\"\n }\n ],\n \"palette\": [\n {\n \"hex\": \"#EFE5D6\",\n \"share\": 0.46\n },\n {\n \"hex\": \"#3B2F2A\",\n \"share\": 0.22\n },\n {\n \"hex\": \"#8E4A2C\",\n \"share\": 0.18\n },\n {\n \"hex\": \"#7A8B6F\",\n \"share\": 0.08\n }\n ],\n \"brand\": \"#8E4A2C\",\n \"ground\": \"light\",\n \"shape\": \"soft\",\n \"density\": \"airy\",\n \"motion\": \"some\",\n \"headings\": \"serif\",\n \"moods\": [\n \"warm\",\n \"crafted\",\n \"calm\"\n ]\n }\n },\n {\n \"id\": \"spa\",\n \"locale\": \"en\",\n \"dir\": \"ltr\",\n \"prompt\": \"Tamar Spa is a small day spa in Haifa: massages, facials and a quiet garden. I want people to see the treatments and prices and book by phone. It should feel calm and natural, nothing flashy, and please no dark backgrounds.\",\n \"business\": {\n \"name\": \"Tamar Spa\",\n \"facts\": {\n \"city\": \"Haifa\"\n }\n },\n \"analysis\": {\n \"businessType\": \"spa\",\n \"alternatives\": [\n \"salon\",\n \"yoga\"\n ],\n \"moods\": [\n \"calm\",\n \"natural\",\n \"elegant\"\n ],\n \"avoid\": [\n \"dark-pages\",\n \"loud-colour\"\n ],\n \"copyLength\": \"standard\",\n \"sentences\": [\n [\n \"The business\",\n \"A small day spa in Haifa with massages, facials and a garden.\",\n \"a small day spa in Haifa\"\n ],\n [\n \"Who it is for\",\n \"Locals who want a quiet few hours; gift buyers.\",\n \"a quiet garden\"\n ],\n [\n \"What the site should do\",\n \"Show treatments and prices, and get people to call to book.\",\n \"book by phone\"\n ],\n [\n \"How it should feel\",\n \"Calm and natural; nothing flashy.\",\n \"calm and natural, nothing flashy\"\n ],\n [\n \"Put first\",\n \"Treatments · Prices · The garden · How to book\",\n \"treatments and prices\"\n ]\n ],\n \"hero\": {\n \"eyebrow\": \"Day spa · Haifa\",\n \"headline\": \"A quiet afternoon in Haifa\",\n \"lead\": \"Massages, facials and a garden to rest in.\"\n },\n \"missing\": [\n \"phone\",\n \"address\",\n \"hours\"\n ],\n \"voice\": {\n \"tone\": \"Soft and unhurried; speaks to the guest.\",\n \"person\": \"we\",\n \"formality\": \"neutral\",\n \"sample\": \"Leave the week at the gate. The garden is quiet until four.\",\n \"avoid\": [\n \"deal\",\n \"hurry\",\n \"cheap\"\n ]\n }\n },\n \"plan\": {\n \"homePatterns\": [\n \"hero.split\",\n \"feature.triad\",\n \"pricing.tiers\",\n \"proof.testimonial-carousel\",\n \"cta.banner\"\n ],\n \"heroHasImage\": true,\n \"facts\": {\n \"city\": \"Haifa\"\n }\n },\n \"said\": [\n {\n \"id\": \"services\",\n \"name\": \"Treatments\"\n },\n {\n \"id\": \"prices\",\n \"name\": \"Prices\"\n }\n ],\n \"read\": {\n \"sources\": [\n {\n \"kind\": \"image\",\n \"ref\": \"garden-terrace.jpg\"\n },\n {\n \"kind\": \"image\",\n \"ref\": \"linen-towels.jpg\"\n }\n ],\n \"palette\": [\n {\n \"hex\": \"#E9DFD3\",\n \"share\": 0.5\n },\n {\n \"hex\": \"#A3B18A\",\n \"share\": 0.2\n },\n {\n \"hex\": \"#4F5E46\",\n \"share\": 0.15\n },\n {\n \"hex\": \"#C9A27E\",\n \"share\": 0.1\n }\n ],\n \"brand\": \"#4F5E46\",\n \"ground\": \"light\",\n \"shape\": \"round\",\n \"density\": \"airy\",\n \"motion\": \"some\",\n \"headings\": \"serif\",\n \"moods\": [\n \"calm\",\n \"natural\",\n \"elegant\"\n ]\n }\n },\n {\n \"id\": \"physio\",\n \"locale\": \"en\",\n \"dir\": \"ltr\",\n \"prompt\": \"Levi Physio — sports and back physiotherapy in Tel Aviv, two therapists. I need a professional, modern site: what we treat, the team, and a way to book an appointment. Patients are mostly runners and office workers.\",\n \"business\": {\n \"name\": \"Levi Physio\",\n \"facts\": {\n \"email\": \"clinic@leviphysio.co.il\",\n \"city\": \"Tel Aviv\"\n }\n },\n \"analysis\": {\n \"businessType\": \"clinic\",\n \"alternatives\": [\n \"fitness\",\n \"therapist\"\n ],\n \"moods\": [\n \"professional\",\n \"trustworthy\",\n \"calm\"\n ],\n \"avoid\": [],\n \"copyLength\": \"standard\",\n \"sentences\": [\n [\n \"The business\",\n \"A physiotherapy clinic in Tel Aviv for sports injuries and back pain, with two therapists.\",\n \"sports and back physiotherapy in Tel Aviv\"\n ],\n [\n \"Who it is for\",\n \"Runners and office workers with pain.\",\n \"mostly runners and office workers\"\n ],\n [\n \"What the site should do\",\n \"Explain what you treat, introduce the team, and get people to book.\",\n \"a way to book an appointment\"\n ],\n [\n \"How it should feel\",\n \"Professional and modern.\",\n \"professional, modern\"\n ],\n [\n \"Put first\",\n \"What we treat · The team · Book an appointment\",\n \"what we treat, the team\"\n ]\n ],\n \"hero\": {\n \"eyebrow\": \"Physiotherapy · Tel Aviv\",\n \"headline\": \"Back to running, sooner\",\n \"lead\": \"Sports and back physiotherapy in Tel Aviv.\"\n },\n \"missing\": [\n \"phone\",\n \"address\",\n \"hours\"\n ],\n \"voice\": {\n \"tone\": \"Clear and confident; plain words a patient understands.\",\n \"person\": \"we\",\n \"formality\": \"neutral\",\n \"sample\": \"We find what is causing the pain, then build a plan to get you moving.\",\n \"avoid\": [\n \"cure\",\n \"guaranteed\",\n \"miracle\"\n ]\n }\n },\n \"plan\": {\n \"homePatterns\": [\n \"hero.split\",\n \"feature.triad\",\n \"faq.accordion\",\n \"cta.banner\"\n ],\n \"heroHasImage\": false,\n \"facts\": {\n \"email\": \"x\",\n \"city\": \"x\"\n }\n },\n \"said\": [\n {\n \"id\": \"services\",\n \"name\": \"What we treat\"\n },\n {\n \"id\": \"team\",\n \"name\": \"The team\"\n },\n {\n \"id\": \"booking-request\",\n \"name\": \"Book an appointment\"\n }\n ],\n \"read\": null\n }\n] as const;\n","import type { DensityId, DesignMotion, MoodId, MotionId, TintId } from '@vectoriox/iox-ui/design-core';\nimport type { FactKey } from '@vectoriox/iox-ui/generation-core';\n\nimport {\n SPEC_BUSINESS_TYPES, SPEC_HARNESS_SOURCE, SPEC_NEEDS, SPEC_STRUCTURES, SPEC_USER_AVOIDS,\n} from './harness-spec.generated';\n\n/**\n * The design harness's knowledge (AI plan rev 3 §3f, H2): the 30 kinds of business IOX serves, each with the\n * styles that suit it (best first, with the reason), its look rules and content rules (one closed grammar,\n * read by the ranker and the lint), its voice, its motion, the pages it needs and its home sections.\n * Generated 1:1 from the contract (`harness`, gated in build-spec.mjs). Seeded from UI UX Pro Max — the\n * attribution travels with the data (`HARNESS_SOURCE.notice`).\n */\nexport const HARNESS_SOURCE = SPEC_HARNESS_SOURCE;\n\n/** What a site may need — the closed list an analysis returns; each maps to the archetype a plan writes. */\nexport type NeedId = keyof typeof SPEC_NEEDS;\nexport const NEED_IDS = Object.keys(SPEC_NEEDS) as ReadonlyArray<NeedId>;\nexport interface NeedDef {\n readonly label: string;\n readonly archetype: string;\n}\nexport const NEEDS: Readonly<Record<NeedId, NeedDef>> = SPEC_NEEDS;\n\n/** What an owner may ask to avoid (\"no dark backgrounds\") — each one look rule. */\nexport type UserAvoidId = keyof typeof SPEC_USER_AVOIDS;\nexport const USER_AVOID_IDS = Object.keys(SPEC_USER_AVOIDS) as ReadonlyArray<UserAvoidId>;\n\n/** The structures a site is built from (Studio · Practice · Place). */\nexport type StructureId = keyof typeof SPEC_STRUCTURES;\nexport const STRUCTURES = SPEC_STRUCTURES;\n\n/** How much a kind of business needs \"book a slot\" — the next product bet (off this road). */\nexport enum BookingNeed {\n Must = 'must',\n Tables = 'tables',\n Sometimes = 'sometimes',\n None = 'none',\n}\n\n/** The content checks of the avoid grammar (a look rule is the other kind). */\nexport enum AvoidCheck {\n NeedsFamily = 'needs-family',\n NeedsFact = 'needs-fact',\n ImageHero = 'image-hero',\n NoPattern = 'no-pattern',\n BrandHue = 'brand-hue',\n CopyLength = 'copy-length',\n}\n\n/** How much text a site carries, shortest first. */\nexport enum CopyLength {\n Short = 'short',\n Standard = 'standard',\n Rich = 'rich',\n}\nexport const COPY_LENGTH_ORDER: ReadonlyArray<`${CopyLength}`> = [CopyLength.Short, CopyLength.Standard, CopyLength.Rich];\n\n/** A look a business should not wear: each named axis lists the values that match (all named axes must). */\nexport interface LookCondition {\n readonly flavor?: ReadonlyArray<string>;\n readonly mode?: ReadonlyArray<string>;\n readonly motion?: ReadonlyArray<MotionId>;\n readonly moods?: ReadonlyArray<MoodId>;\n readonly tint?: ReadonlyArray<TintId>;\n readonly density?: ReadonlyArray<DensityId>;\n readonly scroll?: ReadonlyArray<string>;\n readonly animate?: ReadonlyArray<string>;\n readonly between?: ReadonlyArray<string>;\n}\n\nexport interface LookRule {\n readonly when: LookCondition;\n readonly say: string;\n}\n\nexport type CheckRule =\n | { readonly check: `${AvoidCheck.NeedsFamily}`; readonly family: string; readonly say: string }\n | { readonly check: `${AvoidCheck.NeedsFact}`; readonly fact: FactKey; readonly say: string }\n | { readonly check: `${AvoidCheck.ImageHero}`; readonly say: string }\n | { readonly check: `${AvoidCheck.NoPattern}`; readonly pattern: string; readonly say: string }\n | { readonly check: `${AvoidCheck.BrandHue}`; readonly from: number; readonly to: number; readonly minChroma: number; readonly say: string }\n | { readonly check: `${AvoidCheck.CopyLength}`; readonly max: `${CopyLength}`; readonly say: string };\n\nexport type AvoidRule = LookRule | CheckRule;\n\nexport const isLookRule = (rule: AvoidRule): rule is LookRule => 'when' in rule;\n\nexport interface GoodFit {\n readonly preset: string;\n readonly reason: string;\n}\n\nexport interface BusinessType {\n readonly id: string;\n readonly label: string;\n readonly he: string;\n readonly group: string;\n readonly uupm: string;\n /** Keywords (English + Hebrew): the eval's expected answer and the no-model fallback. */\n readonly match: ReadonlyArray<string>;\n /** The styles that suit it, best first, each with why. */\n readonly good: ReadonlyArray<GoodFit>;\n readonly colour: { readonly mood: string; readonly swatches: ReadonlyArray<string> };\n readonly fonts: string;\n readonly tone: string;\n /** The motion TIMING it suits (the design axis — hover lift, durations). */\n readonly motion: MotionId;\n /** How its site usually scrolls, how animated it is and what plays between pages (rev 3.1). */\n readonly moves: Readonly<DesignMotion>;\n readonly imagery: string;\n readonly pages: ReadonlyArray<string>;\n /** The needs its page set implies, in page order (derived from `pages` at contract build). */\n readonly needs: ReadonlyArray<NeedId>;\n /** The home page's sections, library ids. */\n readonly home: ReadonlyArray<string>;\n readonly avoid: ReadonlyArray<AvoidRule>;\n /** Words its copy must not use. */\n readonly words: ReadonlyArray<string>;\n readonly structure: StructureId;\n /** In the M1-alpha slice. */\n readonly slice: boolean;\n /** Stock photos may fill its pictures (never the work itself). */\n readonly stock: boolean;\n readonly booking: `${BookingNeed}`;\n}\n\n/** The 30, in the board's order. Assignment here proves the generated data fits the type. */\nexport const BUSINESS_TYPES: ReadonlyArray<BusinessType> = SPEC_BUSINESS_TYPES;\n\nexport function businessTypeById(id: string | null | undefined): BusinessType | undefined {\n return id ? BUSINESS_TYPES.find(t => t.id === id) : undefined;\n}\n\nexport const BUSINESS_TYPE_IDS: ReadonlyArray<string> = BUSINESS_TYPES.map(t => t.id);\n\n/** The user-avoid rule for an id, or undefined. */\nexport function userAvoidRule(id: string): LookRule | undefined {\n return (SPEC_USER_AVOIDS as Readonly<Record<string, LookRule>>)[id];\n}\n","import type { DesignChoices, DesignMode, DesignMotion, StylePreset } from '@vectoriox/iox-ui/design-core';\n\nimport { LookCondition } from './business-types';\n\n/** The parts of a look a rule can name: the design's choices (motion included) in one colour mode. */\nexport type LookDesign = Pick<DesignChoices, 'flavorId' | 'motion' | 'density'> & Partial<Pick<DesignChoices, 'tint'>>\n & Partial<DesignMotion> & { mode: DesignMode };\n\nconst LIST_AXES = ['flavor', 'mode', 'motion', 'tint', 'density', 'scroll', 'animate', 'between'] as const;\ntype ListAxis = (typeof LIST_AXES)[number];\nconst DESIGN_KEY: Readonly<Record<ListAxis, keyof LookDesign>> = {\n flavor: 'flavorId', mode: 'mode', motion: 'motion', tint: 'tint', density: 'density',\n scroll: 'scroll', animate: 'animate', between: 'between',\n};\n\n/** True when `design` (worn with `moods`) is the look `when` describes — every axis it names must match. */\nexport function lookMatches(when: LookCondition, design: LookDesign, moods: ReadonlyArray<string>): boolean {\n for (const axis of LIST_AXES) {\n const values = when[axis] as ReadonlyArray<string> | undefined;\n if (values && !values.includes(String(design[DESIGN_KEY[axis]] ?? ''))) return false;\n }\n if (when.moods && !when.moods.some(m => moods.includes(m))) return false;\n return true;\n}\n\n/** A style preset as a rule sees it, in `mode` (default: the mode it opens in). */\nexport function presetLook(preset: StylePreset, mode: DesignMode = preset.modes[0]): LookDesign {\n return {\n flavorId: preset.flavorId, motion: preset.motion, density: preset.density, tint: preset.tint, mode,\n ...preset.moves,\n };\n}\n","import {\n DensityId, flavorPackById, MOOD_LABELS, MoodId, parseFontFamilies, ShapeId, STYLE_PRESETS, StylePreset, TintId,\n} from '@vectoriox/iox-ui/design-core';\nimport type { AnimateId } from '@vectoriox/iox-ui/design-core';\n\nimport { AvoidRule, BUSINESS_TYPES, BusinessType, isLookRule, LookRule, userAvoidRule } from './business-types';\nimport { lookMatches, presetLook } from './look';\n\n/**\n * Which styles suit a business, best first (AI plan rev 3 §3f, H3) — Design ▸ Look's order. Pure and\n * deterministic: the browser and the server give the same order, and the eval asserts it.\n */\n\n/** What the ranker reads of an analysis. */\nexport interface RankInput {\n businessType?: string | null;\n moods?: ReadonlyArray<string>;\n /** What the owner asked to avoid (`USER_AVOID_IDS`). */\n avoid?: ReadonlyArray<string>;\n}\n\nexport enum PresetFit {\n Good = 'good',\n Ok = 'ok',\n Poor = 'poor',\n}\n\n/** Why a style sits where it does — the line Design ▸ Look shows. */\nexport enum RankReason {\n /** The business type names it as a good fit (`reason` = the type's line). */\n GoodFit = 'good-fit',\n /** A type rule advises against its look (`reason` = the rule's line). */\n TypeAvoid = 'type-avoid',\n /** The owner asked to avoid its look (`reason` = the rule's line). */\n UserAvoid = 'user-avoid',\n /** It shares the analysis's moods (`sharedMoods`). */\n SharedMoods = 'shared-moods',\n None = 'none',\n}\n\nexport interface RankedPreset {\n id: string;\n fit: PresetFit;\n score: number;\n reasonKind: RankReason;\n /** In English, from the contract (the UI may localise `reasonKind` + `sharedMoods` instead). */\n reason: string;\n sharedMoods: MoodId[];\n /** Catalogue position — ties keep it. */\n order: number;\n /** With references (`rankWithReferences`): the boost the reading gave it, and whether it is the nearest. */\n refBoost?: number;\n nearest?: boolean;\n}\n\n/** The ranking's weights: the type's own order, then moods, then motion character, minus what is advised against. */\nexport const RANK_WEIGHTS = {\n firstGoodFit: 100,\n goodFitStep: 10,\n sharedMood: 6,\n sharedMove: 2,\n typeAvoid: 60,\n userAvoid: 80,\n} as const;\n\nconst MOVE_KEYS = ['scroll', 'animate', 'between'] as const;\n\n/**\n * The rule among `rules` that `preset`'s look matches — in EVERY mode it offers (a preset that can switch to a\n * mode escaping a mode-only rule is judged in that mode: Night gallery offers light). The rule reported is the\n * one its default mode matches.\n */\nfunction ruleHit(preset: StylePreset, rules: ReadonlyArray<LookRule>): LookRule | null {\n for (const mode of preset.modes) {\n if (!rules.some(r => lookMatches(r.when, presetLook(preset, mode), preset.moods))) return null;\n }\n return rules.find(r => lookMatches(r.when, presetLook(preset), preset.moods)) ?? null;\n}\n\nconst lookRules = (rules: ReadonlyArray<AvoidRule>): LookRule[] => rules.filter(isLookRule);\n\nfunction moodsLine(moods: ReadonlyArray<MoodId>): string {\n return `${moods.map(m => MOOD_LABELS[m]).join(' and ')}, like your description.`;\n}\n\n/**\n * Every preset, best first: score = the type's own order (a good fit 100, 90, 80…) + 6 per mood shared with\n * the analysis + 2 per motion choice shared with the type, − 60 for a look the type advises against, − 80 for\n * one the owner said to avoid. Ties keep catalogue order. With no matching type, moods alone order them.\n */\nexport function rankStylePresets(\n input: RankInput,\n presets: ReadonlyArray<StylePreset> = STYLE_PRESETS,\n types: ReadonlyArray<BusinessType> = BUSINESS_TYPES,\n): RankedPreset[] {\n const type = input.businessType ? types.find(t => t.id === input.businessType) : undefined;\n const typeRules = type ? lookRules(type.avoid) : [];\n const userRules = (input.avoid ?? []).map(userAvoidRule).filter((r): r is LookRule => !!r);\n const moods = input.moods ?? [];\n return presets.map((preset, order) => {\n const goodAt = type ? type.good.findIndex(g => g.preset === preset.id) : -1;\n const sharedMoods = preset.moods.filter(m => moods.includes(m));\n let score = goodAt >= 0 ? RANK_WEIGHTS.firstGoodFit - RANK_WEIGHTS.goodFitStep * goodAt : 0;\n score += RANK_WEIGHTS.sharedMood * sharedMoods.length;\n if (type) score += RANK_WEIGHTS.sharedMove * MOVE_KEYS.filter(k => preset.moves[k] === type.moves[k]).length;\n const typeHit = ruleHit(preset, typeRules);\n const userHit = ruleHit(preset, userRules);\n if (typeHit) score -= RANK_WEIGHTS.typeAvoid;\n if (userHit) score -= RANK_WEIGHTS.userAvoid;\n const fit = typeHit || userHit ? PresetFit.Poor : goodAt >= 0 ? PresetFit.Good : PresetFit.Ok;\n const [reasonKind, reason] = userHit ? [RankReason.UserAvoid, userHit.say]\n : typeHit ? [RankReason.TypeAvoid, typeHit.say]\n : goodAt >= 0 && type ? [RankReason.GoodFit, type.good[goodAt].reason]\n : sharedMoods.length ? [RankReason.SharedMoods, moodsLine(sharedMoods)]\n : [RankReason.None, ''];\n return { id: preset.id, fit, score, reasonKind, reason, sharedMoods, order };\n }).sort((a, b) => b.score - a.score || a.order - b.order);\n}\n\n// ── References: a reading of pictures or a site, as style (plan §3k, R4) ─────────────────────────────────\nexport enum StyleReadSourceKind {\n Image = 'image',\n Site = 'site',\n}\nexport enum StyleReadGround {\n Light = 'light',\n Dark = 'dark',\n Mixed = 'mixed',\n}\nexport enum StyleReadMotion {\n None = 'none',\n Some = 'some',\n Lots = 'lots',\n}\nexport enum StyleReadHeadings {\n Serif = 'serif',\n Sans = 'sans',\n Display = 'display',\n Mono = 'mono',\n}\n\n/** What a reader measured (palette) and saw (moods, shape…) — never their CSS, text or pictures. */\nexport interface StyleRead {\n sources: ReadonlyArray<{ kind: `${StyleReadSourceKind}`; ref: string }>;\n /** ≤ 6, MEASURED, never asked of a model. */\n palette: ReadonlyArray<{ hex: string; share: number }>;\n /** The most frequent saturated colour — a CANDIDATE seed: the AA audit decides. */\n brand?: string;\n ground: `${StyleReadGround}`;\n shape?: ShapeId;\n density?: DensityId;\n motion?: `${StyleReadMotion}`;\n headings?: `${StyleReadHeadings}`;\n moods: ReadonlyArray<MoodId>;\n}\n\n/** The boosts a reading gives each preset, and the defaults it suggests. */\nexport interface StyleHints {\n boost: Record<string, number>;\n seed: string | null;\n tint: TintId;\n shape?: ShapeId;\n density?: DensityId;\n animate: AnimateId | null;\n}\n\nexport const READ_WEIGHTS = {\n sharedMood: 8,\n ground: 10,\n shape: 6,\n density: 4,\n serifHeadings: 6,\n} as const;\n\n/** How much motion a reading saw → How animated. */\nexport const READ_ANIMATE: Readonly<Record<`${StyleReadMotion}`, AnimateId>> = {\n [StyleReadMotion.None]: 'still',\n [StyleReadMotion.Some]: 'subtle',\n [StyleReadMotion.Lots]: 'standard',\n};\n\nconst SERIF_GENERIC = 'serif';\n\n/** True when the preset's pairing sets headings in a serif (its display stack ends in the serif generic). */\nexport function presetHasSerifHeadings(preset: StylePreset): boolean {\n const pair = flavorPackById(preset.flavorId)?.pairs.find(p => p.id === preset.pairId);\n return parseFontFamilies(pair?.tokens['font-display'] ?? '').includes(SERIF_GENERIC);\n}\n\n/** A reading → a score boost per preset and the defaults it suggests (pure, deterministic). */\nexport function mapStyleRead(read: StyleRead, presets: ReadonlyArray<StylePreset> = STYLE_PRESETS): StyleHints {\n const boost: Record<string, number> = {};\n for (const p of presets) {\n let b = READ_WEIGHTS.sharedMood * p.moods.filter(m => read.moods.includes(m)).length;\n if (read.ground !== StyleReadGround.Mixed && p.modes[0] === read.ground) b += READ_WEIGHTS.ground;\n if (read.shape && p.shape === read.shape) b += READ_WEIGHTS.shape;\n if (read.density && p.density === read.density) b += READ_WEIGHTS.density;\n if (read.headings === StyleReadHeadings.Serif && presetHasSerifHeadings(p)) b += READ_WEIGHTS.serifHeadings;\n boost[p.id] = b;\n }\n return {\n boost,\n seed: read.brand ?? null,\n tint: read.palette.length && read.ground === StyleReadGround.Light ? 'subtle' : 'neutral',\n ...(read.shape ? { shape: read.shape } : {}),\n ...(read.density ? { density: read.density } : {}),\n animate: read.motion ? READ_ANIMATE[read.motion] : null,\n };\n}\n\n/** `rankStylePresets` + the reading's boost; `nearest` = the best-boosted style that is not a poor fit. */\nexport function rankWithReferences(\n input: RankInput,\n read: StyleRead | null | undefined,\n presets: ReadonlyArray<StylePreset> = STYLE_PRESETS,\n types: ReadonlyArray<BusinessType> = BUSINESS_TYPES,\n): RankedPreset[] {\n const ranked = rankStylePresets(input, presets, types);\n if (!read) return ranked;\n const { boost } = mapStyleRead(read, presets);\n const out = ranked.map(x => ({ ...x, score: x.score + (boost[x.id] ?? 0), refBoost: boost[x.id] ?? 0 }))\n .sort((a, b) => b.score - a.score || a.order - b.order);\n const nearest = out.filter(x => x.fit !== PresetFit.Poor)\n .reduce<RankedPreset | null>((a, b) => (!a || (b.refBoost ?? 0) > (a.refBoost ?? 0) ? b : a), null);\n return out.map(x => ({ ...x, nearest: !!nearest && x.id === nearest.id }));\n}\n","import { DesignMotion, SPEC_AXES, STYLE_PRESETS, StylePreset } from '@vectoriox/iox-ui/design-core';\n\nimport { BUSINESS_TYPES, BusinessType } from './business-types';\nimport { READ_ANIMATE, StyleRead } from './rank';\n\n/**\n * Where Design ▸ Motion starts (AI plan rev 3.1 §3p, MO-D3) — and what \"Build with these\" takes. Pure.\n * Scrolling and Between pages are the BUSINESS's (a spa scrolls softly whatever its look); How animated is the\n * CALMER of the business's (or what the references show) and the style's — so a quiet serif look never gets\n * bouncing cards. The owner's \"little movement\" caps all three. No matching type → the style's own.\n */\n\nexport interface MotionInput {\n businessType?: string | null;\n avoid?: ReadonlyArray<string>;\n}\n\nexport interface MotionStart extends DesignMotion {\n /** Why, in English — one line per step the start took. */\n why: string[];\n}\n\n/** The owner asked for little movement (`USER_AVOID_IDS`). */\nexport const LITTLE_MOVEMENT_AVOID = 'lots-of-motion';\n/** What \"little movement\" caps each choice at. */\nexport const LITTLE_MOVEMENT_CAP: Readonly<DesignMotion> = { scroll: 'smooth', animate: 'subtle', between: 'fade' };\n\ntype Axis = keyof DesignMotion;\nconst TABLES = { scroll: SPEC_AXES.scrolls, animate: SPEC_AXES.animations, between: SPEC_AXES.betweens } as const;\nconst ORDER: Readonly<Record<Axis, ReadonlyArray<string>>> = {\n scroll: Object.keys(SPEC_AXES.scrolls), animate: Object.keys(SPEC_AXES.animations), between: Object.keys(SPEC_AXES.betweens),\n};\n\n/** The stiller of two choices on one axis (the axes are ordered stillest first). */\nexport function calmerChoice<A extends Axis>(axis: A, a: DesignMotion[A], b: DesignMotion[A]): DesignMotion[A] {\n return ORDER[axis].indexOf(a) <= ORDER[axis].indexOf(b) ? a : b;\n}\n\nconst label = (axis: Axis, id: string) => (TABLES[axis] as Readonly<Record<string, { label: string }>>)[id]?.label ?? id;\nconst triple = (m: DesignMotion) => `${label('scroll', m.scroll)} · ${label('animate', m.animate)} · ${label('between', m.between)}`;\n\nexport function motionFor(\n input: MotionInput,\n presetId: string,\n read: StyleRead | null = null,\n types: ReadonlyArray<BusinessType> = BUSINESS_TYPES,\n presets: ReadonlyArray<StylePreset> = STYLE_PRESETS,\n): MotionStart {\n const type = input.businessType ? types.find(t => t.id === input.businessType) : undefined;\n const preset = presets.find(p => p.id === presetId) ?? presets[0];\n const base = type ? type.moves : preset.moves;\n const ref = read?.motion ? READ_ANIMATE[read.motion] : null;\n const wanted = ref ?? base.animate;\n let out: DesignMotion = { scroll: base.scroll, animate: calmerChoice('animate', wanted, preset.moves.animate), between: base.between };\n const why = [type ? `${type.label}: ${triple(base)}` : `${preset.name}: the style's own`];\n if (out.animate !== wanted) why.push(`${preset.name} moves less (${label('animate', preset.moves.animate)})`);\n if (ref && type) why.push(`your references: ${label('animate', ref)}`);\n if ((input.avoid ?? []).includes(LITTLE_MOVEMENT_AVOID)) {\n out = {\n scroll: calmerChoice('scroll', out.scroll, LITTLE_MOVEMENT_CAP.scroll),\n animate: calmerChoice('animate', out.animate, LITTLE_MOVEMENT_CAP.animate),\n between: calmerChoice('between', out.between, LITTLE_MOVEMENT_CAP.between),\n };\n why.push('you asked for little movement');\n }\n return { ...out, why };\n}\n","import { BookingNeed, BUSINESS_TYPES, BusinessType, NeedId } from './business-types';\n\n/** Who asked for a need: the owner named it, or the kind of business needs it (\"we added\"). */\nexport enum NeedSource {\n You = 'you',\n Type = 'type',\n}\n\nexport interface SiteNeed {\n id: NeedId;\n from: `${NeedSource}`;\n /** The owner's own word for it (\"Friday workshops\"). */\n name?: string;\n}\n\n/** The needs that already let a visitor ask for a slot. */\nconst BOOKING_NEEDS: ReadonlyArray<NeedId> = ['booking-request', 'sign-up-form'];\nconst BOOKING_REQUEST: NeedId = 'booking-request';\n\n/**\n * What the site needs (AI plan rev 3 §3d, H3): what the owner named, then what this kind of business needs and\n * they did not name — its page set, in order, and a booking request for a business that must take bookings —\n * each marked `from: 'type'` (the Analysis step's \"we added\"). Pure; an unknown type adds nothing.\n */\nexport function inferNeeds(\n typeId: string | null | undefined,\n said: ReadonlyArray<Omit<SiteNeed, 'from'>> = [],\n types: ReadonlyArray<BusinessType> = BUSINESS_TYPES,\n): SiteNeed[] {\n const type = typeId ? types.find(t => t.id === typeId) : undefined;\n const out: SiteNeed[] = said.map(n => ({ ...n, from: NeedSource.You }));\n const have = new Set<NeedId>(said.map(n => n.id));\n for (const id of type?.needs ?? []) {\n if (have.has(id)) continue;\n have.add(id);\n out.push({ id, from: NeedSource.Type });\n }\n if (type?.booking === BookingNeed.Must && !BOOKING_NEEDS.some(id => have.has(id))) {\n out.push({ id: BOOKING_REQUEST, from: NeedSource.Type });\n }\n return out;\n}\n","import { DesignChoices, DesignMotion, parseHexColor, rgbToOklab, SPEC_AXES } from '@vectoriox/iox-ui/design-core';\nimport type { FactKey } from '@vectoriox/iox-ui/generation-core';\n\nimport { AvoidCheck, BUSINESS_TYPES, BusinessType, COPY_LENGTH_ORDER, CopyLength, isLookRule } from './business-types';\nimport { lookMatches } from './look';\n\n/**\n * Design advice (AI plan rev 3 §3f, H5's core): the business type's avoid rules run against a built site's\n * look, home sections, facts and copy length. ADVICE only — Needs attention and the Publish dialog show it,\n * \"Keep it\" dismisses it, and nothing is ever refused on it (H-D9).\n */\n\nexport enum LintKind {\n Look = 'look',\n Content = 'content',\n Fact = 'fact',\n}\n\nexport interface LintFinding {\n kind: LintKind;\n say: string;\n fact?: FactKey;\n}\n\n/** What the lint reads of a site. */\nexport interface LintSite {\n design: Pick<DesignChoices, 'flavorId' | 'seed' | 'motion' | 'density' | 'mode'> & Partial<Pick<DesignChoices, 'tint'>> & Partial<DesignMotion>;\n moods?: ReadonlyArray<string>;\n /** The home page's section patterns. */\n homePatterns?: ReadonlyArray<string>;\n /** Every page's section patterns (defaults to the home page's). */\n allPatterns?: ReadonlyArray<string>;\n facts?: Partial<Record<FactKey, string>>;\n copyLength?: `${CopyLength}`;\n heroHasImage?: boolean;\n}\n\nconst DEGREES = 180 / Math.PI;\nconst FULL_TURN = 360;\n/** How far a site may move above what its kind of business usually wears before the lint says so. */\nexport const ANIMATE_ADVICE_STEPS = 2;\nconst ANIMATE_ORDER = Object.keys(SPEC_AXES.animations);\n\n/** A colour's OKLCH hue (degrees) and chroma, through design-core's one OKLab conversion. */\nexport function oklchHue(hex: string): { hue: number; chroma: number } | null {\n const rgb = parseHexColor(hex);\n if (!rgb) return null;\n const { a, b } = rgbToOklab(rgb);\n return { hue: (Math.atan2(b, a) * DEGREES + FULL_TURN) % FULL_TURN, chroma: Math.hypot(a, b) };\n}\n\nconst familyOf = (patternId: string) => patternId.split('.')[0];\n\nexport function lintDesign(site: LintSite, typeId: string, types: ReadonlyArray<BusinessType> = BUSINESS_TYPES): LintFinding[] {\n const type = types.find(t => t.id === typeId);\n if (!type) return [];\n const out: LintFinding[] = [];\n const home = site.homePatterns ?? [];\n const all = site.allPatterns ?? home;\n for (const rule of type.avoid) {\n if (isLookRule(rule)) {\n if (lookMatches(rule.when, site.design, site.moods ?? [])) out.push({ kind: LintKind.Look, say: rule.say });\n continue;\n }\n switch (rule.check) {\n case AvoidCheck.NeedsFamily:\n if (!home.some(id => familyOf(id) === rule.family)) out.push({ kind: LintKind.Content, say: rule.say });\n break;\n case AvoidCheck.NeedsFact:\n if (!site.facts?.[rule.fact]) out.push({ kind: LintKind.Fact, say: rule.say, fact: rule.fact });\n break;\n case AvoidCheck.ImageHero:\n if (!site.heroHasImage) out.push({ kind: LintKind.Content, say: rule.say });\n break;\n case AvoidCheck.NoPattern:\n if (all.includes(rule.pattern)) out.push({ kind: LintKind.Content, say: rule.say });\n break;\n case AvoidCheck.CopyLength:\n if (site.copyLength && COPY_LENGTH_ORDER.indexOf(site.copyLength) > COPY_LENGTH_ORDER.indexOf(rule.max)) out.push({ kind: LintKind.Content, say: rule.say });\n break;\n case AvoidCheck.BrandHue: {\n const hue = oklchHue(site.design.seed);\n if (hue && hue.chroma >= rule.minChroma && hue.hue >= rule.from && hue.hue <= rule.to) out.push({ kind: LintKind.Look, say: rule.say });\n break;\n }\n }\n }\n // Rev 3.1: two levels above what this kind of business usually wears (Subtle → Lively) is advice, never a block.\n if (site.design.animate && ANIMATE_ORDER.indexOf(site.design.animate) >= ANIMATE_ORDER.indexOf(type.moves.animate) + ANIMATE_ADVICE_STEPS) {\n const usual = (SPEC_AXES.animations as Readonly<Record<string, { label: string }>>)[type.moves.animate].label;\n out.push({ kind: LintKind.Look, say: `${type.label} sites usually move less (${usual}); this much movement as people scroll can feel restless.` });\n }\n return out;\n}\n","import { MOOD_IDS, MoodId } from '@vectoriox/iox-ui/design-core';\nimport {\n FACT_KEYS, FactKey, isPlainObject, PathIssue, PathIssueCollector, pathAt, PlainObject, requiredShapeKeys, ShapeEntry,\n shapeKeys,\n} from '@vectoriox/iox-ui/generation-core';\n\nimport { BUSINESS_TYPE_IDS, NEED_IDS, USER_AVOID_IDS, UserAvoidId } from './business-types';\nimport { SPEC_ANALYSIS_SHAPE } from './harness-spec.generated';\nimport { NeedSource, SiteNeed } from './needs';\n\n/**\n * What the reading of a prompt returns (AI plan rev 3 §3d): one of the 30 kinds of business (and the two\n * nearest), who it is for, what the site needs, the facts the prompt STATES (each with the words it came from)\n * and those it does not, the owner's voice, moods, what they asked to avoid, a hero line, the language. A model\n * writes it; `validateSiteAnalysis` is the gate — it refuses with a path and never repairs (a model gets the\n * issues back and rewrites; the caller decides what to drop).\n */\n\nexport enum AnalysisLocale {\n He = 'he',\n En = 'en',\n}\nexport enum VoicePerson {\n We = 'we',\n I = 'I',\n}\nexport enum VoiceFormality {\n Casual = 'casual',\n Neutral = 'neutral',\n Formal = 'formal',\n}\n\nexport interface FactRead {\n value: string;\n /** The words of the prompt it came from — checked: every quote is in the prompt. */\n quote: string;\n}\n\nexport interface SiteAnalysis {\n businessType: string;\n alternatives: [string, string];\n business: { name: string; audience: string };\n needs: SiteNeed[];\n facts: Partial<Record<FactKey, FactRead>>;\n missingFacts: FactKey[];\n voice: { tone: string; person: `${VoicePerson}`; formality: `${VoiceFormality}`; avoidWords: string[] };\n moods: MoodId[];\n avoid: UserAvoidId[];\n hero: { headline: string; lead: string };\n locale: `${AnalysisLocale}`;\n}\n\nexport enum AnalysisIssueCode {\n Shape = 'shape',\n UnknownKey = 'unknown-key',\n Duplicate = 'duplicate',\n UnknownBusinessType = 'unknown-business-type',\n UnknownNeed = 'unknown-need',\n UnknownFact = 'unknown-fact',\n /** A fact's quote is not words of the prompt: it was not stated, so it may not be filled. */\n QuoteNotInPrompt = 'quote-not-in-prompt',\n /** A fact reported both found and missing. */\n FactFoundAndMissing = 'fact-found-and-missing',\n UnknownMood = 'unknown-mood',\n TooManyMoods = 'too-many-moods',\n UnknownAvoid = 'unknown-avoid',\n InvalidValue = 'invalid-value',\n}\n\nexport type AnalysisIssue = PathIssue<AnalysisIssueCode>;\n\nexport interface AnalysisValidation {\n valid: boolean;\n issues: AnalysisIssue[];\n}\n\nexport interface AnalysisContext {\n /** The owner's own words — every fact's quote must be found in them. */\n prompt: string;\n}\n\n/** At most this many moods (the closed list a preset carries too). */\nexport const MAX_ANALYSIS_MOODS = 3;\nconst ALTERNATIVES = 2;\n\nconst SHAPE: Readonly<Record<string, ShapeEntry>> = SPEC_ANALYSIS_SHAPE;\nconst KEYS = Object.fromEntries(Object.keys(SHAPE).map(k => [k, shapeKeys(SHAPE[k])])) as Record<string, string[]>;\nconst REQUIRED = Object.fromEntries(Object.keys(SHAPE).map(k => [k, requiredShapeKeys(SHAPE[k])])) as Record<string, string[]>;\n\nclass Collector extends PathIssueCollector<AnalysisIssueCode> {\n constructor() {\n super('analysis', { shape: AnalysisIssueCode.Shape, unknownKey: AnalysisIssueCode.UnknownKey, duplicate: AnalysisIssueCode.Duplicate });\n }\n /** An object of `shape` at `path`: no unknown key, every required key present. */\n object(value: unknown, shape: string, path: string): PlainObject | null {\n if (!isPlainObject(value)) { this.add(AnalysisIssueCode.Shape, path, 'must be an object'); return null; }\n this.keys(value, KEYS[shape], path);\n for (const key of REQUIRED[shape]) if (value[key] === undefined) this.add(AnalysisIssueCode.Shape, pathAt(path, key), 'is required');\n return value;\n }\n oneOf(obj: PlainObject, key: string, allowed: ReadonlyArray<string>, path: string, code = AnalysisIssueCode.InvalidValue): void {\n const v = obj[key];\n if (v !== undefined && (typeof v !== 'string' || !allowed.includes(v))) this.add(code, pathAt(path, key), `must be one of ${allowed.join(', ')}`);\n }\n strings(obj: PlainObject, key: string, path: string): string[] {\n const list = this.array(obj, key, path);\n list.forEach((v, i) => { if (typeof v !== 'string') this.add(AnalysisIssueCode.Shape, `${pathAt(path, key)}[${i}]`, 'must be a string'); });\n return list.filter((v): v is string => typeof v === 'string');\n }\n}\n\n/** Whitespace and case never decide whether words are the prompt's. */\nconst normalise = (s: string) => s.toLowerCase().replace(/\\s+/g, ' ').trim();\n\nexport function validateSiteAnalysis(value: unknown, ctx: AnalysisContext): AnalysisValidation {\n const c = new Collector();\n const a = c.object(value, 'analysis', '');\n if (!a) return { valid: false, issues: c.issues };\n\n c.oneOf(a, 'businessType', BUSINESS_TYPE_IDS, '', AnalysisIssueCode.UnknownBusinessType);\n const alternatives = c.strings(a, 'alternatives', '');\n if (Array.isArray(a['alternatives']) && a['alternatives'].length !== ALTERNATIVES) c.add(AnalysisIssueCode.Shape, 'alternatives', `must name ${ALTERNATIVES} business types`);\n alternatives.forEach((id, i) => {\n if (!BUSINESS_TYPE_IDS.includes(id)) c.add(AnalysisIssueCode.UnknownBusinessType, `alternatives[${i}]`, `\"${id}\" is not a business type`);\n else if (id === a['businessType']) c.add(AnalysisIssueCode.Duplicate, `alternatives[${i}]`, 'is the business type itself');\n });\n\n const business = c.object(a['business'], 'business', 'business');\n if (business) { c.string(business, 'name', 'business'); c.string(business, 'audience', 'business'); }\n\n const needs = c.array(a, 'needs', '');\n c.unique(needs.map(n => (isPlainObject(n) && typeof n['id'] === 'string' ? n['id'] : null)), i => `needs[${i}].id`, 'need');\n needs.forEach((raw, i) => {\n const path = `needs[${i}]`;\n const need = c.object(raw, 'need', path);\n if (!need) return;\n c.oneOf(need, 'id', NEED_IDS, path, AnalysisIssueCode.UnknownNeed);\n c.oneOf(need, 'from', Object.values(NeedSource), path);\n c.string(need, 'name', path, false);\n });\n\n const promptWords = normalise(ctx.prompt ?? '');\n const found = new Set<string>();\n if (!isPlainObject(a['facts'])) c.add(AnalysisIssueCode.Shape, 'facts', 'must be an object');\n else for (const [key, raw] of Object.entries(a['facts'])) {\n const path = `facts.${key}`;\n if (!(FACT_KEYS as ReadonlyArray<string>).includes(key)) { c.add(AnalysisIssueCode.UnknownFact, path, `\"${key}\" is not a fact (${FACT_KEYS.join(', ')})`); continue; }\n const fact = c.object(raw, 'factRead', path);\n if (!fact) continue;\n c.string(fact, 'value', path);\n const quote = c.string(fact, 'quote', path);\n if (quote && !promptWords.includes(normalise(quote))) c.add(AnalysisIssueCode.QuoteNotInPrompt, pathAt(path, 'quote'), 'is not words of the prompt — a fact the prompt does not state is missing, never filled');\n found.add(key);\n }\n c.strings(a, 'missingFacts', '').forEach((key, i) => {\n if (!(FACT_KEYS as ReadonlyArray<string>).includes(key)) c.add(AnalysisIssueCode.UnknownFact, `missingFacts[${i}]`, `\"${key}\" is not a fact`);\n else if (found.has(key)) c.add(AnalysisIssueCode.FactFoundAndMissing, `missingFacts[${i}]`, `\"${key}\" is also in facts`);\n });\n\n const voice = c.object(a['voice'], 'voice', 'voice');\n if (voice) {\n c.string(voice, 'tone', 'voice');\n c.oneOf(voice, 'person', Object.values(VoicePerson), 'voice');\n c.oneOf(voice, 'formality', Object.values(VoiceFormality), 'voice');\n c.strings(voice, 'avoidWords', 'voice');\n }\n\n const moods = c.strings(a, 'moods', '');\n if (moods.length > MAX_ANALYSIS_MOODS) c.add(AnalysisIssueCode.TooManyMoods, 'moods', `at most ${MAX_ANALYSIS_MOODS}`);\n moods.forEach((m, i) => { if (!(MOOD_IDS as ReadonlyArray<string>).includes(m)) c.add(AnalysisIssueCode.UnknownMood, `moods[${i}]`, `\"${m}\" is not a mood`); });\n c.strings(a, 'avoid', '').forEach((id, i) => {\n if (!(USER_AVOID_IDS as ReadonlyArray<string>).includes(id)) c.add(AnalysisIssueCode.UnknownAvoid, `avoid[${i}]`, `\"${id}\" is not something an owner may ask to avoid`);\n });\n\n const hero = c.object(a['hero'], 'hero', 'hero');\n if (hero) { c.string(hero, 'headline', 'hero'); c.string(hero, 'lead', 'hero'); }\n c.oneOf(a, 'locale', Object.values(AnalysisLocale), '');\n\n return { valid: c.issues.length === 0, issues: c.issues };\n}\n","import { DesignChoices, presetChoices } from '@vectoriox/iox-ui/design-core';\nimport { FactKey, patternById, SITE_FACT_LABELS, SPEC_SITE_LIBRARY } from '@vectoriox/iox-ui/generation-core';\n\nimport { BusinessType, businessTypeById, isLookRule } from './business-types';\nimport { SiteNeed } from './needs';\nimport { SiteAnalysis } from './site-analysis';\n\n/**\n * What the PLAN prompt is given (AI plan rev 3 §3f \"Retrieval, not the whole knowledge base\"): the one matched\n * business rule, the analysis the owner corrected, the style they picked, and the sections that rule's home\n * uses — never the 30 rules or the 24 presets. Design ▸ Look and the prompt read the same rule. Pure; the M1\n * caller serialises it.\n */\n\nexport interface PromptSection {\n id: string;\n family: string;\n /** The composed pattern's label; null while the library has not composed it yet (track L). */\n label: string | null;\n composed: boolean;\n}\n\nexport interface PromptContext {\n type: {\n id: string;\n label: string;\n tone: string;\n /** Words the copy must not use — the type's and the owner's. */\n avoidWords: string[];\n imagery: string;\n fonts: string;\n colourMood: string;\n structure: BusinessType['structure'];\n booking: BusinessType['booking'];\n /** What this kind of site should not look like — the look rules' lines. */\n lookAdvice: string[];\n } | null;\n business: SiteAnalysis['business'];\n voice: SiteAnalysis['voice'];\n needs: SiteNeed[];\n facts: Partial<Record<FactKey, string>>;\n /** The facts the prompt did not state — placeholders, never invented. */\n missingFacts: Array<{ key: FactKey; label: string }>;\n moods: SiteAnalysis['moods'];\n hero: SiteAnalysis['hero'];\n locale: SiteAnalysis['locale'];\n design: DesignChoices | null;\n sections: PromptSection[];\n}\n\nexport interface PromptContextOptions {\n /** The style the owner picked on Design ▸ Look. */\n presetId?: string | null;\n /** …or the exact choices (after Colour / Type / Shape / Motion edits) — wins over `presetId`. */\n design?: DesignChoices | null;\n}\n\nconst FAMILY_OF: ReadonlyMap<string, string> = new Map(SPEC_SITE_LIBRARY.map(e => [e.id, e.family]));\n\nexport function analysisPromptContext(analysis: SiteAnalysis, opts: PromptContextOptions = {}): PromptContext {\n const type = businessTypeById(analysis.businessType);\n const facts: Partial<Record<FactKey, string>> = {};\n for (const [key, read] of Object.entries(analysis.facts) as Array<[FactKey, { value: string }]>) facts[key] = read.value;\n return {\n type: type ? {\n id: type.id,\n label: type.label,\n tone: type.tone,\n avoidWords: [...new Set([...type.words, ...analysis.voice.avoidWords])],\n imagery: type.imagery,\n fonts: type.fonts,\n colourMood: type.colour.mood,\n structure: type.structure,\n booking: type.booking,\n lookAdvice: type.avoid.filter(isLookRule).map(r => r.say),\n } : null,\n business: analysis.business,\n voice: analysis.voice,\n needs: analysis.needs,\n facts,\n missingFacts: analysis.missingFacts.map(key => ({ key, label: SITE_FACT_LABELS[key] })),\n moods: analysis.moods,\n hero: analysis.hero,\n locale: analysis.locale,\n design: opts.design ?? (opts.presetId ? presetChoices(opts.presetId) : null),\n sections: (type?.home ?? []).map(id => {\n const pattern = patternById(id);\n return { id, family: pattern?.family ?? FAMILY_OF.get(id) ?? id.split('.')[0], label: pattern?.label ?? null, composed: !!pattern };\n }),\n };\n}\n","/**\n * @vectoriox/iox-ui/harness-core — the design HARNESS (AI plan rev 3 §3f, decision N18), FRAMEWORK-FREE: the 30\n * kinds of business and their rules (generated 1:1 from iox-ai-guidance `flavor-spec.v1.json` `harness`), the\n * `SiteAnalysis` gate, what a site needs, the style ranking (+ references), where Motion starts, the design\n * lint and what the plan prompt is given. Pure: no transport, no clock, no randomness. Consumed by iox-cms (the\n * AI pipeline), the wizard and the boards. Depends on design-core and generation-core; neither depends on it.\n * ⚠️ Consumers wire the usual trio — ng-package raw-ts assets, jest moduleNameMapper, tsconfig paths — or\n * `nest start` dies with ERR_REQUIRE_ESM while jest and build both pass.\n */\nexport * from './harness-spec.generated';\nexport * from './business-types';\nexport * from './look';\nexport * from './rank';\nexport * from './motion';\nexport * from './needs';\nexport * from './lint';\nexport * from './site-analysis';\nexport * from './prompt-context';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|