{
  "schemaVersion": "starter-sitemap-builder-component-knowledge-v1",
  "generatedAt": "2026-06-03",
  "source": {
    "contractPath": "/Users/iggy/.openclaw/workspaces/iggy-ignite/artifacts/starter-json/2026-05-27/starter-component-contract.json",
    "sourceSchemaVersion": 1,
    "sourceGeneratedAt": "2026-05-27T07:13:53.071Z",
    "notes": "Builder-facing semantic layer derived from the normalised Starter component contract. Source contract remains authoritative for exact prop/slot IDs."
  },
  "sitemapContractRules": {
    "pageSlots": [
      "abovePageSlot",
      "pageSlot",
      "belowPageSlot"
    ],
    "pageStructureComponent": "Template / PS - Empty Page Structure",
    "richTextShape": {
      "innerText": "..."
    },
    "linkShape": {
      "mode": "url",
      "to": "/path"
    },
    "omitBlankProps": [
      "id"
    ],
    "folderCreationApi": "webflow.createPageFolder()",
    "pageSlotSemantics": {
      "abovePageSlot": "Fixed content before the client-reorderable page sections; normally Hero.",
      "pageSlot": "Client can shuffle, add to, and remove sections here.",
      "belowPageSlot": "Fixed content after the client-reorderable page sections; use for things like Section / Next Pages when fixed below page content."
    },
    "propSemantics": {
      "headings": "Headings are generally required when present.",
      "emptyOptionalProps": "Most optional props hide their element when empty; blank values may intentionally override default text, e.g. blank eyebrow to remove eyebrow display.",
      "richText": "Usually plain paragraph text; use rich text where clients need links/bold/etc.",
      "images": "Image props are not currently supported in the builder flow; leave image props blank/unset for now.",
      "links": "Link to relevant pages based on content where appropriate; use external link features where needed."
    },
    "blankPropPolicy": "Omit/leave unset unsupported image props and invalid HTML id props. For optional text props such as eyebrow, a deliberate blank string may be used to override default text and hide the element when the component supports that behavior."
  },
  "recommendedBuilderComponents": [
    {
      "component": "Template / PS - Empty Page Structure",
      "sourceKey": "template.psEmptyPageStructure",
      "sourceId": "bb924798-4857-dbaf-7bd9-19e29620ca20",
      "group": "Templates",
      "role": "pageStructure",
      "description": "Base empty page structure wrapper used before inserting page slot sections.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Hero",
      "sourceKey": "section.hero",
      "sourceId": "f3ec30d4-4f7a-cb0c-4064-5cb639f4b130",
      "group": "Global",
      "role": "pageSection",
      "description": "Use as the first section on any page to establish context and drive a primary action. Suitable for both primary landing pages and secondary interior pages.",
      "useCases": [
        "top-of-page context",
        "primary page intro",
        "landing page opening"
      ],
      "preferredPageSlots": [
        "abovePageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Primary"
        },
        {
          "id": "c85520c8-dad1-33bb-f385-9180dc505c8f",
          "name": "Secondary"
        }
      ],
      "props": [
        {
          "label": "Variant",
          "propId": "16361558-976f-e341-e91f-e882f6911b55",
          "valueType": "variant",
          "defaultValue": "c85520c8-dad1-33bb-f385-9180dc505c8f",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        },
        {
          "label": "Heading",
          "propId": "b0196384-7a72-94eb-58c6-7c5842bb88d7",
          "valueType": "textContent"
        },
        {
          "label": "Heading Size",
          "propId": "e1605938-0b43-2556-6c54-32c99e351067",
          "valueType": "variant",
          "defaultValue": "base",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        },
        {
          "label": "Paragraph",
          "propId": "87989b8c-c6c1-6fb3-a00b-ded2248c7458",
          "valueType": "textContent"
        },
        {
          "label": "Text",
          "propId": "462489e7-da6e-851f-acce-dae4e8ff7012",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Link",
          "propId": "85d8ebce-c505-4d99-3b73-0f4cb7ca25d1",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Image",
          "propId": "8c43faee-e616-ed77-aa7f-957157f187ef",
          "valueType": "imageAsset"
        },
        {
          "label": "Image Position",
          "propId": "9d6af4c3-a84e-e309-4ffe-b0bf24b8e2f1",
          "valueType": "string",
          "defaultValue": "--pos-y: 50%;"
        }
      ],
      "requiredAuthoringProps": [
        "Heading"
      ],
      "recommendedAuthoringProps": [
        "Heading",
        "Paragraph",
        "Text",
        "Link",
        "Variant"
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Primary",
          "inferred": false,
          "useWhen": [
            "Always use on the homepage.",
            "Often use on inner landing-style or gateway pages.",
            "Use when the page needs strongest landing-page emphasis."
          ],
          "avoidWhen": [
            "Routine interior pages that are not landing/gateway pages.",
            "Blog/news listing pages unless specifically custom-designed."
          ],
          "notes": [
            "Confirmed by Sylvain baseline questionnaire 2026-06-03."
          ]
        },
        {
          "id": "c85520c8-dad1-33bb-f385-9180dc505c8f",
          "name": "Secondary",
          "inferred": false,
          "useWhen": [
            "Use for most standard interior pages, excluding /blog or /news style listings."
          ],
          "avoidWhen": [
            "Homepage.",
            "Inner landing-style/gateway page where Primary is more appropriate."
          ],
          "notes": [
            "Confirmed by Sylvain baseline questionnaire 2026-06-03."
          ]
        }
      ]
    },
    {
      "component": "Section / Intro Text",
      "sourceKey": "section.introText",
      "sourceId": "affa612d-ff9b-8e0a-46d5-7cb2e50f21aa",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for large-format text sections with a scroll-driven text reveal animation. Best placed between content sections to create a strong narrative pause. Suitable for mission statements or key messages.",
      "useCases": [
        "mission/key message",
        "narrative pause",
        "large text statement"
      ],
      "preferredPageSlots": [
        "pageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "props": [
        {
          "label": "Hide Section",
          "propId": "aabee4f0-7bf5-35cb-80a1-969d35c1ddf1",
          "valueType": "visibility"
        },
        {
          "label": "Text",
          "propId": "1d086837-4569-8102-ee0f-b76b8c300b9e",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
        },
        {
          "label": "Config",
          "propId": "a4bf2603-4caf-776c-4da2-001ba6fefa14",
          "valueType": "string",
          "defaultValue": "--height: 120vh; --range: contain 30% exit 30%;"
        },
        {
          "label": "Theme",
          "propId": "1f4b3c90-4196-069d-8fa5-0b6d76ca174b",
          "valueType": "string"
        }
      ],
      "requiredAuthoringProps": [
        "Text"
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Two Column Text & Image",
      "sourceKey": "section.twoColumnTextImage",
      "sourceId": "32f2dbd3-b17a-1218-ba09-32ef7a280211",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for content sections pairing text with a supporting image or video. Layout can be flipped between image-left and image-right. Suitable for feature highlights, about sections, and service overviews.",
      "useCases": [
        "feature highlight with image",
        "about section",
        "service/program overview"
      ],
      "preferredPageSlots": [
        "pageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Image Right"
        },
        {
          "id": "78303301-e12d-ef5e-4323-a4f194065dd1",
          "name": "Image Left"
        },
        {
          "id": "f1e9197d-1010-238b-659a-3864216171ed",
          "name": "Image Bottom"
        }
      ],
      "slots": [
        {
          "label": "Additional button slot",
          "id": "36c1abcf-3e2e-78d9-e01c-effcb0607889",
          "group": "Button"
        }
      ],
      "props": [
        {
          "label": "Hide Section",
          "propId": "91481d60-3eea-62a1-fbc9-bc6db7db9a5a",
          "valueType": "visibility"
        },
        {
          "label": "Layout",
          "propId": "de9d79c4-2c06-2093-d830-c89a4774bc94",
          "valueType": "variant",
          "defaultValue": "base",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        },
        {
          "label": "Theme",
          "propId": "b243ae89-fb84-3f79-78b8-8c5ec9f2931f",
          "valueType": "string"
        },
        {
          "label": "Eyebrow",
          "propId": "ffdd8cac-d79d-b590-d952-81ce1d089b70",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet"
        },
        {
          "label": "Heading",
          "propId": "7cb60b3c-24e9-1304-bebf-063fba09f5d4",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet"
        },
        {
          "label": "Paragraph",
          "propId": "268e8143-2267-5745-a457-9dcebc77f9fd",
          "valueType": "richText",
          "defaultValue": {
            "innerText": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat.",
            "objectType": "Object"
          },
          "valueShape": "Use { \"innerText\": \"...\" }, not raw HTML strings."
        },
        {
          "label": "Primary Button Text",
          "propId": "3e230780-5b05-449d-31e4-c15ee131bb8f",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Primary Button Link",
          "propId": "c352d9e5-21d2-361a-20fe-0f988be8067c",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Secondary Button Text",
          "propId": "84cfbe03-1c7b-b641-9d0c-c58e4be4a18d",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Secondary Button Link",
          "propId": "04a903e7-0ac7-0651-ceb3-1fc09cd62235",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Additional button slot",
          "propId": "36c1abcf-3e2e-78d9-e01c-effcb0607889",
          "valueType": "slot",
          "defaultValue": []
        },
        {
          "label": "Image",
          "propId": "417e3f1f-5f80-b9c8-a127-13257a62dccf",
          "valueType": "imageAsset"
        },
        {
          "label": "Image Size",
          "propId": "7d984080-d66a-ee76-adc4-2352f85bff07",
          "valueType": "variant",
          "defaultValue": "c428d57e-eeb9-cecb-862f-efe1b8e0c69f",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        },
        {
          "label": "Custom Settings",
          "propId": "c18959e8-9934-6f6e-45c8-447feadf7480",
          "valueType": "string",
          "defaultValue": "--x: 50%; --y: 50%; --ratio: 16/9; --fit: cover;"
        },
        {
          "label": "MP4 Video Source",
          "propId": "badf75b5-495d-3f9b-c0f1-88402bf9d8e2",
          "valueType": "string"
        },
        {
          "label": "Vimeo Video Link",
          "propId": "91e88698-67d2-3257-202d-b2753f71799a",
          "valueType": "textContent"
        }
      ],
      "recommendedAuthoringProps": [
        "Layout",
        "Eyebrow",
        "Heading",
        "Paragraph",
        "Primary Button Text",
        "Primary Button Link"
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Image Right",
          "inferred": false,
          "useWhen": [
            "Use when content lends itself to an image and page rhythm calls for image on the right.",
            "Alternate with previous/nearby image-left sections."
          ],
          "avoidWhen": [
            "Avoid following another right-image section where rhythm would feel repetitive."
          ],
          "notes": [
            "Image position depends on neighbouring section rhythm. Confirmed by Sylvain baseline questionnaire."
          ]
        },
        {
          "id": "78303301-e12d-ef5e-4323-a4f194065dd1",
          "name": "Image Left",
          "inferred": false,
          "useWhen": [
            "Use when content lends itself to an image and previous similar section used image right.",
            "Alternate image direction down the page."
          ],
          "avoidWhen": [
            "Avoid following another left-image section where rhythm would feel repetitive."
          ],
          "notes": [
            "Image position depends on neighbouring section rhythm. Confirmed by Sylvain baseline questionnaire."
          ]
        },
        {
          "id": "f1e9197d-1010-238b-659a-3864216171ed",
          "name": "Image Bottom",
          "inferred": false,
          "useWhen": [
            "Use for a full-width image/video treatment to break up the page.",
            "Use when side-by-side image/text would feel too constrained."
          ],
          "avoidWhen": [],
          "notes": [
            "Confirmed by Sylvain baseline questionnaire 2026-06-03."
          ]
        }
      ]
    },
    {
      "component": "Section / Cards",
      "sourceKey": "section.cards",
      "sourceId": "4ae230c3-58b5-5ee6-e890-cab2c438576f",
      "role": "pageSection",
      "description": "Use for grid-based content sections displaying multiple cards. Column count is configurable. Add cards via the component slot. Suitable for programs, services, news highlights, or team listings.",
      "useCases": [
        "related pages",
        "program/service grids",
        "feature highlights"
      ],
      "preferredPageSlots": [
        "pageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "57bd2c37-4ff2-afc2-7ec6-93d3afe9394b",
          "group": "Card Slot",
          "accepts": [
            "Element / Card Item"
          ]
        }
      ],
      "props": [
        {
          "label": "Eyebrow Text",
          "propId": "1ca6b870-d930-f8db-382c-5ce54576276f",
          "valueType": "textContent",
          "defaultValue": "subtitle"
        },
        {
          "label": "Heading",
          "propId": "879f6e9f-e8f1-9841-332b-3a8db2a4212c",
          "valueType": "textContent",
          "defaultValue": "Heading"
        },
        {
          "label": "Paragraph",
          "propId": "c0f536ab-597b-ce3c-e2d8-4e18102ab2b6",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla commodo pellentesque sem, at semper lorem fringilla a. Cras at libero non sapien blandit egestas."
        },
        {
          "label": "Slot",
          "propId": "57bd2c37-4ff2-afc2-7ec6-93d3afe9394b",
          "valueType": "slot",
          "defaultValue": []
        },
        {
          "label": "Columns",
          "propId": "19d4fa88-a672-7132-4ed9-88b91c308e78",
          "valueType": "number",
          "defaultValue": 3,
          "valueShape": "Use a number, not a quoted string."
        }
      ],
      "requiredAuthoringProps": [
        "Heading"
      ],
      "recommendedAuthoringProps": [
        "Eyebrow Text",
        "Heading",
        "Paragraph",
        "Columns"
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Element / Card Item",
      "sourceKey": "element.cardItem",
      "sourceId": "466e9914-f7d0-b3ae-fd62-8f510595a63d",
      "role": "slotChild",
      "description": "Card child component for use inside card/grid sections.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "props": [
        {
          "label": "Eyebrow Text",
          "propId": "eb367022-5934-9a66-d694-d920eb6dea6a",
          "valueType": "textContent",
          "defaultValue": "Subtitle"
        },
        {
          "label": "Heading Visual Size",
          "propId": "94edc4b0-11e3-9776-736e-c5d8c804dba3",
          "valueType": "variant",
          "defaultValue": "530ae227-6695-1ad7-93f3-f8656d3b3c12",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        },
        {
          "label": "Link",
          "propId": "f7e2d2f1-8147-27a4-0016-f3efa8071392",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Paragraph",
          "propId": "b8b6c85b-b931-7713-e63e-af6f97f5505f",
          "valueType": "richText",
          "defaultValue": {
            "innerText": "The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.",
            "objectType": "Object"
          },
          "valueShape": "Use { \"innerText\": \"...\" }, not raw HTML strings."
        },
        {
          "label": "Image",
          "propId": "ea61fa36-86bf-a28e-9451-d3b7d3726c28",
          "valueType": "imageAsset"
        },
        {
          "label": "Text",
          "propId": "cf274624-d38a-f240-0da5-899cfcbd48a1",
          "valueType": "textContent",
          "defaultValue": "Read more"
        },
        {
          "label": "Paragraph Size",
          "propId": "29bb071a-61d7-6564-6430-6b614f2a6af6",
          "valueType": "variant",
          "defaultValue": "base",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        }
      ],
      "requiredAuthoringProps": [
        "Eyebrow Text",
        "Paragraph",
        "Text",
        "Link"
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / FAQs",
      "sourceKey": "section.faqs",
      "sourceId": "5271fa12-33bc-796f-5404-737590bceb7f",
      "group": "CMS Sections",
      "role": "pageSection",
      "description": "Use for FAQ sections with an accordion-style list of questions and answers. Add items via the component slot. Includes a contact button for directing unresolved queries. Suitable for admissions, program, or policy FAQs.",
      "useCases": [
        "admissions questions",
        "policy questions",
        "decision-support content"
      ],
      "preferredPageSlots": [
        "pageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "9f8b3d5e-3e1a-5530-f2d1-421a9a18dc7d",
          "accepts": [
            "Component / Accordion Item"
          ]
        }
      ],
      "props": [
        {
          "label": "Text",
          "propId": "f9a506b6-20b1-1d22-9f30-ff55820291d0",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
        },
        {
          "label": "Heading",
          "propId": "7da586c8-5ad6-93cb-5f81-4924e680679e",
          "valueType": "textContent",
          "defaultValue": "Frequently asked questions"
        },
        {
          "label": "Link",
          "propId": "5114bb81-fea0-4399-e09d-07708cafabf8",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Text",
          "propId": "38439ecf-c632-00ed-e537-5a59fa239472",
          "valueType": "textContent",
          "defaultValue": "Contact"
        },
        {
          "label": "Slot",
          "propId": "9f8b3d5e-3e1a-5530-f2d1-421a9a18dc7d",
          "valueType": "slot",
          "defaultValue": []
        }
      ],
      "requiredAuthoringProps": [
        "Heading"
      ],
      "recommendedAuthoringProps": [
        "Heading",
        "Text",
        "Link"
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Component / Accordion Item",
      "sourceKey": "component.accordionItem",
      "sourceId": "3f3e83bc-6403-2920-3f14-a99ab6d9d40f",
      "role": "slotChild",
      "description": "Accordion child item for use inside FAQ sections.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "props": [
        {
          "label": "Title",
          "propId": "55019278-8d36-83d3-831f-feccfa05dcfe",
          "valueType": "textContent",
          "defaultValue": "Accordion title"
        },
        {
          "label": "Content",
          "propId": "8a25a475-c61d-1660-b8c7-ca2527f39c47",
          "valueType": "richText",
          "defaultValue": {
            "innerText": "Id deserunt sit sunt consequat Lorem aute ea eiusmod ut mollit aute. Elit minim qui ea in eu. Id deserunt sit sunt consequat Lorem aute ea eiusmod ut mollit aute. Elit minim qui ea in eu.Id deserunt sit sunt consequat Lorem aute ea eiusmod ut mollit aute. Elit minim qui ea in eu.",
            "objectType": "Object"
          },
          "valueShape": "Use { \"innerText\": \"...\" }, not raw HTML strings."
        },
        {
          "label": "Open?",
          "propId": "0a310317-8bdc-1e0a-4623-8a577f5264f1",
          "valueType": "string"
        }
      ],
      "requiredAuthoringProps": [
        "Title",
        "Content"
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / CTA",
      "sourceKey": "section.cta",
      "sourceId": "7e29a765-7a81-ff3e-e031-40e1fbc52307",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use as a standalone call-to-action section with a heading, supporting text, button, and optional background image. Layout and visual size are configurable. Suitable for enrolment prompts, contact calls, or key conversion points.",
      "useCases": [
        "enrolment prompt",
        "contact prompt",
        "conversion section"
      ],
      "preferredPageSlots": [
        "pageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Image Right"
        },
        {
          "id": "1ec28d1e-14ac-989c-b7d6-992854d51384",
          "name": "Image Left"
        },
        {
          "id": "c897487e-69d9-45c7-a17e-45d7377f1e97",
          "name": "No Image"
        }
      ],
      "props": [
        {
          "label": "Layout",
          "propId": "f406a97d-0bfb-1f71-95e3-31852202e24b",
          "valueType": "variant",
          "defaultValue": "base",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        },
        {
          "label": "Fill Width?",
          "propId": "913f199d-27b0-6030-797f-3a17277d924a",
          "valueType": "number",
          "defaultValue": 0,
          "valueShape": "Use a number, not a quoted string."
        },
        {
          "label": "Visual Size",
          "propId": "5e2f90a1-4bad-bb3f-1d60-d9b236fca104",
          "valueType": "variant",
          "defaultValue": "base",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        },
        {
          "label": "Tag",
          "propId": "4242e2be-97ba-56ac-a5ec-03dd849405d0",
          "valueType": "headingTag",
          "defaultValue": "h2"
        },
        {
          "label": "Heading",
          "propId": "126ab1cc-6e79-76f0-9f0d-145a10356ed1",
          "valueType": "textContent",
          "defaultValue": "Heading"
        },
        {
          "label": "Text Size",
          "propId": "d327b7a5-5cfd-5a81-9922-83e7afe6b95b",
          "valueType": "variant",
          "defaultValue": "base",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        },
        {
          "label": "Text",
          "propId": "60fff78f-1ca0-b6a2-c218-de27d7c83bcd",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla commodo pellentesque sem, at semper lorem fringilla a. Cras at libero non sapien blandit egestas."
        },
        {
          "label": "Hide",
          "propId": "e31d2160-a815-deb4-52c4-06f6b27ca4ab",
          "valueType": "boolean",
          "defaultValue": true,
          "valueShape": "Use true/false booleans."
        },
        {
          "label": "Show Button?",
          "propId": "54d6bc31-d876-8092-c350-1e279b558fdb",
          "valueType": "visibility"
        },
        {
          "label": "Text",
          "propId": "71727660-be31-9947-321a-fd05d68332fd",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Link",
          "propId": "f73426a9-4b8d-46c2-d9b8-1f5cce707dfc",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Image",
          "propId": "7291ac59-c727-913b-3656-78fa45d3bf8a",
          "valueType": "imageAsset"
        },
        {
          "label": "Show Caption",
          "propId": "de911b60-ddd5-1dc9-e2e8-becdc6c2255d",
          "valueType": "boolean",
          "defaultValue": false,
          "valueShape": "Use true/false booleans."
        },
        {
          "label": "Caption",
          "propId": "63f8f7b2-a075-5ee3-b067-10cd625b37e2",
          "valueType": "textContent"
        }
      ],
      "requiredAuthoringProps": [
        "Heading",
        "Text",
        "Link"
      ],
      "recommendedAuthoringProps": [
        "Layout",
        "Heading",
        "Text",
        "Link"
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Image Right",
          "inferred": false,
          "useWhen": [
            "Use when content lends itself to an image and page rhythm calls for image on the right.",
            "Alternate with previous/nearby image-left sections."
          ],
          "avoidWhen": [
            "Avoid following another right-image section where rhythm would feel repetitive."
          ],
          "notes": [
            "Image position depends on neighbouring section rhythm. Confirmed by Sylvain baseline questionnaire."
          ]
        },
        {
          "id": "1ec28d1e-14ac-989c-b7d6-992854d51384",
          "name": "Image Left",
          "inferred": false,
          "useWhen": [
            "Use when content lends itself to an image and previous similar section used image right.",
            "Alternate image direction down the page."
          ],
          "avoidWhen": [
            "Avoid following another left-image section where rhythm would feel repetitive."
          ],
          "notes": [
            "Image position depends on neighbouring section rhythm. Confirmed by Sylvain baseline questionnaire."
          ]
        },
        {
          "id": "c897487e-69d9-45c7-a17e-45d7377f1e97",
          "name": "No Image",
          "inferred": false,
          "useWhen": [
            "Use when the CTA content does not naturally lend itself to an image.",
            "Use for simpler/compact CTA moments."
          ],
          "avoidWhen": [],
          "notes": [
            "Image/no-image depends primarily on content. Confirmed by Sylvain baseline questionnaire."
          ]
        }
      ]
    },
    {
      "component": "Section / Multi CTA",
      "sourceKey": "section.multiCta",
      "sourceId": "8e0a4e56-be59-6e88-9a9d-7217c8c3b50e",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for sections presenting two distinct calls to action side by side. Supports introductory text above two independent CTA cards each with heading, paragraph, button, and image. The section and additional cards can be hidden.",
      "useCases": [
        "enrolment prompt",
        "contact prompt",
        "conversion section"
      ],
      "preferredPageSlots": [
        "pageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "3a3546cc-192e-c340-6c3e-8352d638c353",
          "accepts": [
            "Element / Multi CTA Card"
          ]
        }
      ],
      "props": [
        {
          "label": "Hide Section",
          "propId": "61522e8a-61c9-fef1-2067-bb103cb5359f",
          "valueType": "boolean",
          "defaultValue": true,
          "valueShape": "Use true/false booleans."
        },
        {
          "label": "Theme",
          "propId": "e05d3d8c-8d59-fc5d-2ce2-8c806ccc7233",
          "valueType": "string"
        },
        {
          "label": "Eyebrow Text",
          "propId": "631e9862-e389-d2a4-5064-e2edae8c042c",
          "valueType": "textContent",
          "defaultValue": "subtitle"
        },
        {
          "label": "Heading",
          "propId": "6c336f1f-8858-caca-6657-d7b39ed86f75",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
        },
        {
          "label": "Paragraph Text",
          "propId": "47bd5fc2-b398-092d-d845-7d8b42956f2e",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla commodo pellentesque sem, at semper lorem fringilla a. Cras at libero non sapien blandit egestas."
        },
        {
          "label": "Heading",
          "propId": "ec213931-0aa5-4221-e92b-6a7b4d33e46f",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet."
        },
        {
          "label": "Paragraph",
          "propId": "76ace3fa-0269-3fdf-681a-c5f9ebabe7a7",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
        },
        {
          "label": "Button Text",
          "propId": "25c5a638-8d75-458b-181c-3ac8b24a8edb",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Link",
          "propId": "627ba1d8-ea64-5c67-229e-f8676c99c725",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Image",
          "propId": "d15d7487-9a95-0fb4-384a-7a2b6c0582ae",
          "valueType": "imageAsset"
        },
        {
          "label": "Heading",
          "propId": "2b9b409f-071c-c690-737f-0544efb334a1",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet."
        },
        {
          "label": "Paragraph Text",
          "propId": "fb574650-4008-ed50-0e29-a2c555dae364",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
        },
        {
          "label": "Button Text",
          "propId": "1f092f60-9aa2-9e2f-ae11-f4ea0f9d9c16",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Link",
          "propId": "ba10ca44-4e89-d975-c11b-d4769f43f7b4",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Image",
          "propId": "ee966756-cd13-a36a-d5d8-6b34216c49bb",
          "valueType": "imageAsset"
        },
        {
          "label": "Slot",
          "propId": "3a3546cc-192e-c340-6c3e-8352d638c353",
          "valueType": "slot",
          "defaultValue": []
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Element / Multi CTA Card",
      "sourceKey": "element.multiCTACard",
      "sourceId": "d9919969-2f91-f036-0d9d-df14efb2ae39",
      "role": "slotChild",
      "useCases": [
        "enrolment prompt",
        "contact prompt",
        "conversion section"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "props": [
        {
          "label": "Image",
          "propId": "d36dc8c7-f035-f8f9-deba-40a334ef88a3",
          "valueType": "imageAsset"
        },
        {
          "label": "Heading",
          "propId": "b8a64365-9683-8480-dd4a-a951e6a82ace",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet."
        },
        {
          "label": "Paragraph Text",
          "propId": "ccef33da-4471-7dd8-81a8-deda001da0bd",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
        },
        {
          "label": "Button Text",
          "propId": "927914c4-5d3e-4b93-91e6-6f134c958472",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Link",
          "propId": "3b103a2f-104f-c514-6615-a53be6641699",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Switching Tabs",
      "sourceKey": "section.switchingTabs",
      "sourceId": "02f4988b-72d2-1ce9-8ca0-b43730bbf7f4",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for content sections that present multiple topics or features in a tabbed or accordion-style layout. Suitable for program overviews, service breakdowns, or step-by-step processes. Add items via the component slot.",
      "useCases": [
        "multi-topic breakdown",
        "program overview",
        "service comparison"
      ],
      "preferredPageSlots": [
        "pageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "48ad113e-1f1b-e364-6119-6721e4e827f2",
          "accepts": [
            "Component / Switching Tabs Item"
          ]
        }
      ],
      "props": [
        {
          "label": "Slot",
          "propId": "48ad113e-1f1b-e364-6119-6721e4e827f2",
          "valueType": "slot",
          "defaultValue": []
        },
        {
          "label": "Hide Section",
          "propId": "443ea860-12b2-562e-c389-aa038bf29c22",
          "valueType": "visibility"
        },
        {
          "label": "Theme",
          "propId": "0c128388-e213-3b4b-11da-fa564380d095",
          "valueType": "string"
        },
        {
          "label": "Subtitle",
          "propId": "a1dea62b-2458-89a2-d241-3a7c4c921dcf",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum"
        },
        {
          "label": "Heading",
          "propId": "3a8adb59-10c3-f635-3160-61a6cdfc36be",
          "valueType": "textContent",
          "defaultValue": "Heading"
        },
        {
          "label": "Paragraph",
          "propId": "78b32275-165f-5ee9-a147-7f8217fab563",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere."
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Component / Switching Tabs Item",
      "sourceKey": "component.switchingTabsItem",
      "sourceId": "1589ae29-0312-cd67-3859-b0abc9ea4a17",
      "role": "slotChild",
      "description": "This component goes inside the slot of the `Section / Switching Tabs` component.",
      "useCases": [
        "multi-topic breakdown",
        "program overview",
        "service comparison"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "props": [
        {
          "label": "Tab Heading",
          "propId": "a053bee7-177e-fdde-6e72-426aaf03637a",
          "valueType": "textContent",
          "defaultValue": "Accordion title"
        },
        {
          "label": "Tab Paragraph",
          "propId": "8c260177-906c-f5df-a7d2-ae67ef878f6b",
          "valueType": "richText",
          "defaultValue": {
            "innerText": "Id deserunt sit sunt consequat Lorem aute ea eiusmod ut mollit aute. Elit minim qui ea in eu. Id deserunt sit sunt consequat Lorem aute ea eiusmod ut mollit aute. Elit minim qui ea in eu.Id deserunt sit sunt consequat Lorem aute ea eiusmod ut mollit aute. Elit minim qui ea in eu.",
            "objectType": "Object"
          },
          "valueShape": "Use { \"innerText\": \"...\" }, not raw HTML strings."
        },
        {
          "label": "Tab image",
          "propId": "bd69a613-8b6e-3039-9491-34cbc0a34988",
          "valueType": "imageAsset"
        },
        {
          "label": "Hide",
          "propId": "0ef28c68-a2ff-666f-4806-0a0d3518755a",
          "valueType": "visibility"
        },
        {
          "label": "Open?",
          "propId": "8ac7339e-d17e-0d11-cc9f-b565f3ae4323",
          "valueType": "string"
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Sticky Slide Over",
      "sourceKey": "section.stickySlideOver",
      "sourceId": "5c769986-c7b0-e515-254f-5b02232a5991",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for sections with fixed left-side content and image panels that slide over each other on scroll. Suitable for step-by-step explanations, feature walkthroughs, or program breakdowns.",
      "useCases": [
        "step-by-step explanation",
        "feature walkthrough"
      ],
      "preferredPageSlots": [
        "pageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "581f5283-124b-fc32-bdfe-06ad66ab3b8b",
          "accepts": [
            "Component / Slide Over Block"
          ]
        }
      ],
      "props": [
        {
          "label": "Eyebrow Text",
          "propId": "9ef6f770-4596-8bcc-3a78-af45dc8f0b28",
          "valueType": "textContent",
          "defaultValue": "subtitle"
        },
        {
          "label": "Heading",
          "propId": "0838df2b-a21d-f1dd-dff8-c91250ea770a",
          "valueType": "textContent",
          "defaultValue": "Heading"
        },
        {
          "label": "Paragraph",
          "propId": "89d534b8-df6d-8bc2-9008-dbedfaff2fb5",
          "valueType": "richText",
          "defaultValue": {
            "innerText": "The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.",
            "objectType": "Object"
          },
          "valueShape": "Use { \"innerText\": \"...\" }, not raw HTML strings."
        },
        {
          "label": "Button Text",
          "propId": "9044baac-3612-363f-0c9d-db96a40cbe43",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Button Link",
          "propId": "102c28de-f106-b4ad-70c5-acfa26b20529",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Hide Button",
          "propId": "ae6f8920-af6d-76ad-cb85-19a0df18630c",
          "valueType": "boolean",
          "defaultValue": true,
          "valueShape": "Use true/false booleans."
        },
        {
          "label": "Image",
          "propId": "378e4d09-f15a-10b4-4bef-f5df491f155e",
          "valueType": "imageAsset"
        },
        {
          "label": "Heading",
          "propId": "8bf4001d-936c-e78c-fda8-3dc9b50b7f08",
          "valueType": "textContent",
          "defaultValue": "Heading"
        },
        {
          "label": "Paragraph",
          "propId": "4968b8cc-0d13-fa2a-3ccd-ff293eed930a",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla commodo pellentesque sem, at semper lorem fringilla a. Cras at libero non sapien blandit egestas."
        },
        {
          "label": "Button Text",
          "propId": "7649a868-e043-7606-7212-91228747843d",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Button Link",
          "propId": "15609019-3bd7-f96b-4e6d-f6e3b377f055",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Slot",
          "propId": "581f5283-124b-fc32-bdfe-06ad66ab3b8b",
          "valueType": "slot",
          "defaultValue": []
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Component / Slide Over Block",
      "sourceKey": "component.slideOverBlock",
      "sourceId": "1d3263a5-2ced-991b-8c3a-9f5119278a84",
      "role": "slotChild",
      "description": "To use within the `Section / Slide Over` component slot",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "props": [
        {
          "label": "Image",
          "propId": "f98fddf6-19c8-d07b-07e4-878dc9ff4bd3",
          "valueType": "imageAsset"
        },
        {
          "label": "Heading",
          "propId": "eb770aaa-f840-5982-4306-5b3b049cc56d",
          "valueType": "textContent",
          "defaultValue": "Heading"
        },
        {
          "label": "Paragraph",
          "propId": "4d4f01ba-91fb-65c2-045a-1c728f1d8df6",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla commodo pellentesque sem, at semper lorem fringilla a. Cras at libero non sapien blandit egestas."
        },
        {
          "label": "Button Text",
          "propId": "7591c9db-699e-4ec6-3f69-c02e48a1ba2c",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Link",
          "propId": "a4f0535b-fcfa-4b3c-b9b2-3e1788b3e195",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Testimonial",
      "sourceKey": "section.testimonial",
      "sourceId": "71d4942f-1bc4-1799-569b-9c0016fcdd77",
      "group": "CMS Sections",
      "role": "pageSection",
      "description": "Use to highlight a quote, testimonial, or pull quote alongside a supporting image. Layout variants available. Suitable for social proof, case study highlights, or impactful statements.",
      "useCases": [
        "social proof",
        "pull quote",
        "case-study highlight"
      ],
      "preferredPageSlots": [
        "pageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Image Right"
        },
        {
          "id": "a2e0273c-8f2b-0b33-04cd-d0fa143d1e22",
          "name": "Image Left"
        },
        {
          "id": "a2e0273c-8f2b-0b33-04cd-d0fa143d1e23",
          "name": "Image Bottom"
        }
      ],
      "slots": [
        {
          "label": "Additional button slot",
          "id": "36c1abcf-3e2e-78d9-e01c-effcb0607889",
          "group": "Button"
        }
      ],
      "props": [
        {
          "label": "Hide Section",
          "propId": "91481d60-3eea-62a1-fbc9-bc6db7db9a5a",
          "valueType": "visibility"
        },
        {
          "label": "Theme",
          "propId": "b243ae89-fb84-3f79-78b8-8c5ec9f2931f",
          "valueType": "string"
        },
        {
          "label": "Subtitle",
          "propId": "ffdd8cac-d79d-b590-d952-81ce1d089b70",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet"
        },
        {
          "label": "Quote",
          "propId": "0fa1141a-278a-900a-19ab-9819d81662da",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere."
        },
        {
          "label": "Primary Button Text",
          "propId": "3e230780-5b05-449d-31e4-c15ee131bb8f",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Primary Button Link",
          "propId": "c352d9e5-21d2-361a-20fe-0f988be8067c",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Secondary Button Text",
          "propId": "84cfbe03-1c7b-b641-9d0c-c58e4be4a18d",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Secondary Button Link",
          "propId": "04a903e7-0ac7-0651-ceb3-1fc09cd62235",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Additional button slot",
          "propId": "36c1abcf-3e2e-78d9-e01c-effcb0607889",
          "valueType": "slot",
          "defaultValue": []
        },
        {
          "label": "Image",
          "propId": "417e3f1f-5f80-b9c8-a127-13257a62dccf",
          "valueType": "imageAsset"
        },
        {
          "label": "Image Size",
          "propId": "7d984080-d66a-ee76-adc4-2352f85bff07",
          "valueType": "variant",
          "defaultValue": "c428d57e-eeb9-cecb-862f-efe1b8e0c69f",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        },
        {
          "label": "Custom Settings",
          "propId": "c18959e8-9934-6f6e-45c8-447feadf7480",
          "valueType": "string",
          "defaultValue": "--x: 50%; --y: 50%; --ratio: 16/9; --fit: cover;"
        },
        {
          "label": "Layout",
          "propId": "a2e0273c-8f2b-0b33-04cd-d0fa143d1e21",
          "valueType": "variant",
          "defaultValue": "base",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        },
        {
          "label": "Caption",
          "propId": "4083d769-5da9-323f-6c11-0d24af600ab3",
          "valueType": "textContent"
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Image Right",
          "inferred": true,
          "useWhen": [
            "Use when text should lead and the supporting image should balance the section on the right.",
            "Good default for alternating editorial/content sections."
          ],
          "avoidWhen": [
            "Avoid immediately after another image-right section if page rhythm feels repetitive."
          ],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "a2e0273c-8f2b-0b33-04cd-d0fa143d1e22",
          "name": "Image Left",
          "inferred": true,
          "useWhen": [
            "Use to alternate page rhythm after an image-right section.",
            "Good when the image should lead visually before the text."
          ],
          "avoidWhen": [
            "Avoid if the previous section already places imagery on the left."
          ],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "a2e0273c-8f2b-0b33-04cd-d0fa143d1e23",
          "name": "Image Bottom",
          "inferred": true,
          "useWhen": [
            "Use when text should be read first and imagery should support beneath.",
            "Good for narrower or more editorial layouts where side-by-side feels crowded."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Section / Double Image",
      "sourceKey": "section.doubleImage",
      "sourceId": "b3cbef0e-e5a3-0324-8fd3-cc33652f2709",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for visually rich sections featuring two images alongside text. Supports a large and small image composition. Suitable for portfolio showcases, project highlights, or visual storytelling sections.",
      "preferredPageSlots": [
        "pageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "props": [
        {
          "label": "Eyebrow Text",
          "propId": "8237dff9-ac1f-2611-6acf-90a76da7e752",
          "valueType": "textContent",
          "defaultValue": "subtitle"
        },
        {
          "label": "Heading",
          "propId": "776d9a97-89a9-c786-2f25-4a2342e1a267",
          "valueType": "textContent",
          "defaultValue": "Heading"
        },
        {
          "label": "Top Paragraph Size",
          "propId": "ffc10e75-2e4f-fbff-2973-51940d174f9e",
          "valueType": "variant",
          "defaultValue": "base",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        },
        {
          "label": "Top Paragraph",
          "propId": "2a9b3dc8-4cb9-4d1b-ceb9-5dd37d3d039d",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla commodo pellentesque sem, at semper lorem fringilla a. Cras at libero non sapien blandit egestas."
        },
        {
          "label": "Bottom Paragraph Size",
          "propId": "2a302058-f848-47d1-0f19-a25dd7dc5775",
          "valueType": "variant",
          "defaultValue": "base",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        },
        {
          "label": "Bottom Paragraph",
          "propId": "1ab18c37-4af0-b7a4-c4cc-614967009979",
          "valueType": "richText",
          "defaultValue": {
            "innerText": "The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.",
            "objectType": "Object"
          },
          "valueShape": "Use { \"innerText\": \"...\" }, not raw HTML strings."
        },
        {
          "label": "Large Image",
          "propId": "04aaaf27-96dc-6efc-6d36-002a7bb665aa",
          "valueType": "imageAsset"
        },
        {
          "label": "Small Image",
          "propId": "694c25d5-6472-a9dc-924f-af9e4c89c756",
          "valueType": "imageAsset"
        },
        {
          "label": "Show Button?",
          "propId": "3874d659-48cd-94c3-f77b-96f15eedc577",
          "valueType": "visibility"
        },
        {
          "label": "Type",
          "propId": "6393db93-9d1c-12a2-5173-67920aac98ca",
          "valueType": "variant",
          "defaultValue": "base",
          "valueShape": "Use variant id from options/defaultValue; UI may display option names."
        },
        {
          "label": "Text",
          "propId": "a3bcaf04-c40a-233f-67c4-8ea0f46329e5",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Link",
          "propId": "0263eba5-37fc-96f5-6fb2-e6eb52e96f8e",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Theme",
          "propId": "65a6c83d-32ad-e554-6cb4-4a63cc028258",
          "valueType": "string"
        },
        {
          "label": "Hide Top Text",
          "propId": "035bfda8-79a4-c192-89c9-9acc84ee7db1",
          "valueType": "boolean",
          "defaultValue": true,
          "valueShape": "Use true/false booleans."
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Image Cluster",
      "sourceKey": "section.imageCluster",
      "sourceId": "c66bd95d-9a83-9b85-4de9-54ce3810893d",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for sections featuring a grouped arrangement of multiple images. Suitable for campus or facilities photography, event galleries, or visual overviews. Supports up to four images.",
      "preferredPageSlots": [
        "pageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "props": [
        {
          "label": "Hide Eyebrow Text",
          "propId": "8147f88b-193a-ff4e-a843-fbc08d2f904f",
          "valueType": "boolean",
          "defaultValue": true,
          "valueShape": "Use true/false booleans."
        },
        {
          "label": "Eyebrow Text",
          "propId": "8b94db1d-b6e9-200b-81b6-238d43214ec2",
          "valueType": "textContent",
          "defaultValue": "subtitle"
        },
        {
          "label": "Heading",
          "propId": "9af82923-e317-b931-ef85-5706f309a029",
          "valueType": "textContent",
          "defaultValue": "Heading "
        },
        {
          "label": "Paragraph Text",
          "propId": "3e4fb1d1-1920-fd31-6dec-c4332dc2ea44",
          "valueType": "textContent",
          "defaultValue": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla commodo pellentesque sem, at semper lorem fringilla a. Cras at libero non sapien blandit egestas."
        },
        {
          "label": "Hide Paragraph",
          "propId": "77f6827e-59f2-b7a6-ac5f-932ed723bd07",
          "valueType": "boolean",
          "defaultValue": true,
          "valueShape": "Use true/false booleans."
        },
        {
          "label": "Hide Button?",
          "propId": "c53e3ac5-7120-56c8-dd6a-c2f1016591b3",
          "valueType": "visibility"
        },
        {
          "label": "Text",
          "propId": "a847ea49-fcaa-8e90-60f4-2b6afafa4d2a",
          "valueType": "textContent",
          "defaultValue": "Button"
        },
        {
          "label": "Link",
          "propId": "722a3e75-7735-5a0b-9776-1c1940acb94e",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "to": "#",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Image 1",
          "propId": "566a657b-cbe5-9f1e-c013-403de524ee6b",
          "valueType": "imageAsset"
        },
        {
          "label": "Image 2",
          "propId": "eccc0541-34a3-539a-02db-0b9ce2714319",
          "valueType": "imageAsset"
        },
        {
          "label": "Image 3",
          "propId": "9c6cebc4-c7b6-5a51-e50e-c82fb23382e2",
          "valueType": "imageAsset"
        },
        {
          "label": "Image 4",
          "propId": "7ecc76e5-7376-d503-8958-939a82f87721",
          "valueType": "imageAsset"
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Next Pages",
      "sourceKey": "section.nextPages",
      "sourceId": "b69a219f-faac-3a62-21e1-25f2a6cbdeaa",
      "group": "Global",
      "role": "pageSection",
      "description": "Use at the bottom of pages to guide visitors toward two related pages. Accepts a heading, title, image, and link for each page. Suitable for navigating between departments, programs, or key site sections.",
      "preferredPageSlots": [
        "belowPageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "props": [
        {
          "label": "Title",
          "propId": "8378517a-1807-8642-fb67-9f46fac23b81",
          "valueType": "textContent",
          "defaultValue": "Heading"
        },
        {
          "label": "Image",
          "propId": "88a9b0a3-b7cb-b664-d218-d722220fd88e",
          "valueType": "imageAsset"
        },
        {
          "label": "Link",
          "propId": "2ca49805-e014-f3d8-992f-89b49b3b3e97",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Title",
          "propId": "0902648f-5a2d-bfed-73f9-52038f6f8276",
          "valueType": "textContent",
          "defaultValue": "Heading"
        },
        {
          "label": "Image",
          "propId": "2102a209-5070-a63a-b506-9b44d5b312ce",
          "valueType": "imageAsset"
        },
        {
          "label": "Link",
          "propId": "3c9521d3-a4de-d1f5-f83d-675860982dc7",
          "valueType": "link",
          "defaultValue": {
            "mode": "url",
            "objectType": "Object"
          },
          "valueShape": "Use { \"mode\": \"url\", \"to\": \"/path\" } for internal/static links."
        },
        {
          "label": "Heading",
          "propId": "2ec6da6c-d0b8-0b00-cdde-5cc69336a160",
          "valueType": "textContent",
          "defaultValue": "Next up"
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Template / Form",
      "sourceKey": "template.form",
      "sourceId": "54b88bbb-b1c6-2be2-7f8a-df63d64df95a",
      "group": "Templates",
      "role": "templateBlock",
      "description": "Reusable form block for contact/enquiry pages.",
      "preferredPageSlots": [
        "pageSlot"
      ],
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "requiredAuthoringProps": [
        "Heading",
        "Paragraph"
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    }
  ],
  "recipes": [
    {
      "id": "school-homepage-basic",
      "description": "Starter school homepage with hero, intro, cards, FAQs and CTA.",
      "slots": {
        "abovePageSlot": [
          "Section / Hero"
        ],
        "pageSlot": [
          "Section / Intro Text",
          "Section / Cards",
          "Section / FAQs",
          "Section / CTA"
        ],
        "belowPageSlot": []
      },
      "status": "contextual-example",
      "notDefault": true,
      "guidanceNote": "Use as a starting pattern only when the brief fits; Starter pages are usually custom per project."
    },
    {
      "id": "school-admissions-page",
      "description": "Admissions page focused on journey, questions and enquiry conversion.",
      "slots": {
        "abovePageSlot": [
          "Section / Hero"
        ],
        "pageSlot": [
          "Section / Intro Text",
          "Section / Cards",
          "Section / FAQs",
          "Section / CTA"
        ],
        "belowPageSlot": []
      },
      "status": "contextual-example",
      "notDefault": true,
      "guidanceNote": "Use as a starting pattern only when the brief fits; Starter pages are usually custom per project."
    },
    {
      "id": "school-learning-page",
      "description": "Learning/program overview page with narrative intro and feature cards.",
      "slots": {
        "abovePageSlot": [
          "Section / Hero"
        ],
        "pageSlot": [
          "Section / Intro Text",
          "Section / Cards",
          "Section / Two Column Text & Image",
          "Section / CTA"
        ],
        "belowPageSlot": []
      },
      "status": "contextual-example",
      "notDefault": true,
      "guidanceNote": "Use as a starting pattern only when the brief fits; Starter pages are usually custom per project."
    },
    {
      "id": "contact-page",
      "description": "Contact page pattern: usually hero, form section, then footer.",
      "slots": {
        "abovePageSlot": [
          "Section / Hero"
        ],
        "pageSlot": [
          "Section / Intro Text",
          "Template / Form"
        ],
        "belowPageSlot": []
      },
      "status": "contextual-example",
      "notDefault": true,
      "guidanceNote": "Use as a starting pattern only when the brief fits; Starter pages are usually custom per project."
    }
  ],
  "slotChildRules": [
    {
      "parent": "Section / Cards",
      "slot": "Slot",
      "accepts": [
        "Element / Card Item"
      ],
      "recommendedMin": 3,
      "notes": [
        "Cards usually need at least 3 items."
      ],
      "defaultPopulationPolicy": "Leave empty unless the page brief/content requires child items."
    },
    {
      "parent": "Section / FAQs",
      "slot": "Slot",
      "accepts": [
        "Component / Accordion Item"
      ],
      "recommendedMin": 3,
      "recommendedMax": 5,
      "notes": [
        "FAQs usually need at least 3 items and usually max 5."
      ],
      "defaultPopulationPolicy": "Leave empty unless the page brief/content requires child items."
    },
    {
      "parent": "Section / Multi CTA",
      "slot": "Slot",
      "accepts": [
        "Element / Multi CTA Card"
      ],
      "defaultPopulationPolicy": "Leave empty unless the page brief/content requires child items."
    },
    {
      "parent": "Section / Switching Tabs",
      "slot": "Slot",
      "accepts": [
        "Component / Switching Tabs Item"
      ],
      "recommendedMin": 2,
      "recommendedMax": 5,
      "notes": [
        "Tabs usually need 2–5 items."
      ],
      "defaultPopulationPolicy": "Leave empty unless the page brief/content requires child items."
    },
    {
      "parent": "Section / Sticky Slide Over",
      "slot": "Slot",
      "accepts": [
        "Component / Slide Over Block"
      ],
      "defaultPopulationPolicy": "Leave empty unless the page brief/content requires child items."
    }
  ],
  "allComponentsIndex": [
    {
      "component": "CD Program",
      "key": "cdProgram",
      "group": "",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Link 1",
        "Text 1",
        "Link 2",
        "Text 2",
        "Image",
        "Heading",
        "Text",
        "Link",
        "Text"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Component / Accordion Item",
      "key": "component.accordionItem",
      "group": "",
      "role": "slotChild",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Title",
        "Content",
        "Open?"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Component / Blog Item",
      "key": "component.blogItem",
      "group": "",
      "role": "slotChild",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        },
        {
          "id": "9b83b841-2414-b3bf-11d2-6d4818bc068c",
          "name": "Featured"
        }
      ],
      "propLabels": [
        "Type",
        "Main Image",
        "Category - Name",
        "Name",
        "Post Summary",
        "Link"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "9b83b841-2414-b3bf-11d2-6d4818bc068c",
          "name": "Featured",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Component / Nav Menu",
      "key": "component.navMenu",
      "group": "",
      "role": "slotChild",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Component / Slide Over Block",
      "key": "component.slideOverBlock",
      "group": "",
      "role": "slotChild",
      "description": "To use within the `Section / Slide Over` component slot",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Image",
        "Heading",
        "Paragraph",
        "Button Text",
        "Link"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Component / Switching Tabs Item",
      "key": "component.switchingTabsItem",
      "group": "",
      "role": "slotChild",
      "description": "This component goes inside the slot of the `Section / Switching Tabs` component.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Tab Heading",
        "Tab Paragraph",
        "Tab image",
        "Hide",
        "Open?"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Element / Card Item",
      "key": "element.cardItem",
      "group": "",
      "role": "slotChild",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Eyebrow Text",
        "Heading Visual Size",
        "Link",
        "Paragraph",
        "Image",
        "Text",
        "Paragraph Size"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Element / Multi CTA Card",
      "key": "element.multiCTACard",
      "group": "",
      "role": "slotChild",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Image",
        "Heading",
        "Paragraph Text",
        "Button Text",
        "Link"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Element / Slider Navigation",
      "key": "element.sliderNavigation",
      "group": "",
      "role": "slotChild",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Element / Team Item",
      "key": "element.teamItem",
      "group": "",
      "role": "slotChild",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "LinkedIn Link",
        "Slug",
        "Name",
        "Job Title"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Global / Modal",
      "key": "global.modal",
      "group": "",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Slot",
        "Edit Mode"
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "f90490d8-9f39-5afe-c065-ad1a1354c580",
          "group": null
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Modal / Team Item",
      "key": "modal.teamItem",
      "group": "",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Edit mode",
        "Slug",
        "Profile Picture",
        "Name",
        "Job Title",
        "Bio"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Cards",
      "key": "section.cards",
      "group": "",
      "role": "pageSection",
      "description": "Use for grid-based content sections displaying multiple cards. Column count is configurable. Add cards via the component slot. Suitable for programs, services, news highlights, or team listings.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Eyebrow Text",
        "Heading",
        "Paragraph",
        "Slot",
        "Columns"
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "57bd2c37-4ff2-afc2-7ec6-93d3afe9394b",
          "group": "Card Slot"
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Post Content",
      "key": "section.postContent",
      "group": "",
      "role": "pageSection",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Post Body"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Post Header",
      "key": "section.postHeader",
      "group": "",
      "role": "pageSection",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Category - Name",
        "Name",
        "Published On",
        "Main Image"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / FAQs",
      "key": "section.faqs",
      "group": "CMS Sections",
      "role": "pageSection",
      "description": "Use for FAQ sections with an accordion-style list of questions and answers. Add items via the component slot. Includes a contact button for directing unresolved queries. Suitable for admissions, program, or policy FAQs.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Text",
        "Heading",
        "Link",
        "Text",
        "Slot"
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "9f8b3d5e-3e1a-5530-f2d1-421a9a18dc7d",
          "group": null
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / News Feature Slider",
      "key": "section.newsFeatureSlider",
      "group": "CMS Sections",
      "role": "pageSection",
      "description": "Use for a CMS-driven news or blog feature slider with overlapping cards. Automatically pulls from the blog post collection. Suitable for homepages, news pages, or announcement sections.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Team List",
      "key": "section.teamList",
      "group": "CMS Sections",
      "role": "pageSection",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Hide Section",
        "Filter Members"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Testimonial",
      "key": "section.testimonial",
      "group": "CMS Sections",
      "role": "pageSection",
      "description": "Use to highlight a quote, testimonial, or pull quote alongside a supporting image. Layout variants available. Suitable for social proof, case study highlights, or impactful statements.",
      "variants": [
        {
          "id": "base",
          "name": "Image Right"
        },
        {
          "id": "a2e0273c-8f2b-0b33-04cd-d0fa143d1e22",
          "name": "Image Left"
        },
        {
          "id": "a2e0273c-8f2b-0b33-04cd-d0fa143d1e23",
          "name": "Image Bottom"
        }
      ],
      "propLabels": [
        "Hide Section",
        "Theme",
        "Subtitle",
        "Quote",
        "Primary Button Text",
        "Primary Button Link",
        "Secondary Button Text",
        "Secondary Button Link",
        "Additional button slot",
        "Image",
        "Image Size",
        "Custom Settings",
        "Layout",
        "Caption"
      ],
      "slots": [
        {
          "label": "Additional button slot",
          "id": "36c1abcf-3e2e-78d9-e01c-effcb0607889",
          "group": "Button"
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Image Right",
          "inferred": true,
          "useWhen": [
            "Use when text should lead and the supporting image should balance the section on the right.",
            "Good default for alternating editorial/content sections."
          ],
          "avoidWhen": [
            "Avoid immediately after another image-right section if page rhythm feels repetitive."
          ],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "a2e0273c-8f2b-0b33-04cd-d0fa143d1e22",
          "name": "Image Left",
          "inferred": true,
          "useWhen": [
            "Use to alternate page rhythm after an image-right section.",
            "Good when the image should lead visually before the text."
          ],
          "avoidWhen": [
            "Avoid if the previous section already places imagery on the left."
          ],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "a2e0273c-8f2b-0b33-04cd-d0fa143d1e23",
          "name": "Image Bottom",
          "inferred": true,
          "useWhen": [
            "Use when text should be read first and imagery should support beneath.",
            "Good for narrower or more editorial layouts where side-by-side feels crowded."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Section / CTA",
      "key": "section.cta",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use as a standalone call-to-action section with a heading, supporting text, button, and optional background image. Layout and visual size are configurable. Suitable for enrolment prompts, contact calls, or key conversion points.",
      "variants": [
        {
          "id": "base",
          "name": "Image Right"
        },
        {
          "id": "1ec28d1e-14ac-989c-b7d6-992854d51384",
          "name": "Image Left"
        },
        {
          "id": "c897487e-69d9-45c7-a17e-45d7377f1e97",
          "name": "No Image"
        }
      ],
      "propLabels": [
        "Layout",
        "Fill Width?",
        "Visual Size",
        "Tag",
        "Heading",
        "Text Size",
        "Text",
        "Hide",
        "Show Button?",
        "Text",
        "Link",
        "Image",
        "Show Caption",
        "Caption"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Image Right",
          "inferred": false,
          "useWhen": [
            "Use when content lends itself to an image and page rhythm calls for image on the right.",
            "Alternate with previous/nearby image-left sections."
          ],
          "avoidWhen": [
            "Avoid following another right-image section where rhythm would feel repetitive."
          ],
          "notes": [
            "Image position depends on neighbouring section rhythm. Confirmed by Sylvain baseline questionnaire."
          ]
        },
        {
          "id": "1ec28d1e-14ac-989c-b7d6-992854d51384",
          "name": "Image Left",
          "inferred": false,
          "useWhen": [
            "Use when content lends itself to an image and previous similar section used image right.",
            "Alternate image direction down the page."
          ],
          "avoidWhen": [
            "Avoid following another left-image section where rhythm would feel repetitive."
          ],
          "notes": [
            "Image position depends on neighbouring section rhythm. Confirmed by Sylvain baseline questionnaire."
          ]
        },
        {
          "id": "c897487e-69d9-45c7-a17e-45d7377f1e97",
          "name": "No Image",
          "inferred": false,
          "useWhen": [
            "Use when the CTA content does not naturally lend itself to an image.",
            "Use for simpler/compact CTA moments."
          ],
          "avoidWhen": [],
          "notes": [
            "Image/no-image depends primarily on content. Confirmed by Sylvain baseline questionnaire."
          ]
        }
      ]
    },
    {
      "component": "Section / Double Image",
      "key": "section.doubleImage",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for visually rich sections featuring two images alongside text. Supports a large and small image composition. Suitable for portfolio showcases, project highlights, or visual storytelling sections.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Eyebrow Text",
        "Heading",
        "Top Paragraph Size",
        "Top Paragraph",
        "Bottom Paragraph Size",
        "Bottom Paragraph",
        "Large Image",
        "Small Image",
        "Show Button?",
        "Type",
        "Text",
        "Link",
        "Theme",
        "Hide Top Text"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Image Cluster",
      "key": "section.imageCluster",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for sections featuring a grouped arrangement of multiple images. Suitable for campus or facilities photography, event galleries, or visual overviews. Supports up to four images.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Hide Eyebrow Text",
        "Eyebrow Text",
        "Heading",
        "Paragraph Text",
        "Hide Paragraph",
        "Hide Button?",
        "Text",
        "Link",
        "Image 1",
        "Image 2",
        "Image 3",
        "Image 4"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Intro Text",
      "key": "section.introText",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for large-format text sections with a scroll-driven text reveal animation. Best placed between content sections to create a strong narrative pause. Suitable for mission statements or key messages.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Hide Section",
        "Text",
        "Config",
        "Theme"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Multi CTA",
      "key": "section.multiCta",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for sections presenting two distinct calls to action side by side. Supports introductory text above two independent CTA cards each with heading, paragraph, button, and image. The section and additional cards can be hidden.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Hide Section",
        "Theme",
        "Eyebrow Text",
        "Heading",
        "Paragraph Text",
        "Heading",
        "Paragraph",
        "Button Text",
        "Link",
        "Image",
        "Heading",
        "Paragraph Text",
        "Button Text",
        "Link",
        "Image",
        "Slot"
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "3a3546cc-192e-c340-6c3e-8352d638c353",
          "group": null
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Sticky Slide Over",
      "key": "section.stickySlideOver",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for sections with fixed left-side content and image panels that slide over each other on scroll. Suitable for step-by-step explanations, feature walkthroughs, or program breakdowns.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Eyebrow Text",
        "Heading",
        "Paragraph",
        "Button Text",
        "Button Link",
        "Hide Button",
        "Image",
        "Heading",
        "Paragraph",
        "Button Text",
        "Button Link",
        "Slot"
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "581f5283-124b-fc32-bdfe-06ad66ab3b8b",
          "group": null
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Switching Tabs",
      "key": "section.switchingTabs",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for content sections that present multiple topics or features in a tabbed or accordion-style layout. Suitable for program overviews, service breakdowns, or step-by-step processes. Add items via the component slot.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Slot",
        "Hide Section",
        "Theme",
        "Subtitle",
        "Heading",
        "Paragraph"
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "48ad113e-1f1b-e364-6119-6721e4e827f2",
          "group": null
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Two Column Text & Image",
      "key": "section.twoColumnTextImage",
      "group": "Content Sections",
      "role": "pageSection",
      "description": "Use for content sections pairing text with a supporting image or video. Layout can be flipped between image-left and image-right. Suitable for feature highlights, about sections, and service overviews.",
      "variants": [
        {
          "id": "base",
          "name": "Image Right"
        },
        {
          "id": "78303301-e12d-ef5e-4323-a4f194065dd1",
          "name": "Image Left"
        },
        {
          "id": "f1e9197d-1010-238b-659a-3864216171ed",
          "name": "Image Bottom"
        }
      ],
      "propLabels": [
        "Hide Section",
        "Layout",
        "Theme",
        "Eyebrow",
        "Heading",
        "Paragraph",
        "Primary Button Text",
        "Primary Button Link",
        "Secondary Button Text",
        "Secondary Button Link",
        "Additional button slot",
        "Image",
        "Image Size",
        "Custom Settings",
        "MP4 Video Source",
        "Vimeo Video Link"
      ],
      "slots": [
        {
          "label": "Additional button slot",
          "id": "36c1abcf-3e2e-78d9-e01c-effcb0607889",
          "group": "Button"
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Image Right",
          "inferred": false,
          "useWhen": [
            "Use when content lends itself to an image and page rhythm calls for image on the right.",
            "Alternate with previous/nearby image-left sections."
          ],
          "avoidWhen": [
            "Avoid following another right-image section where rhythm would feel repetitive."
          ],
          "notes": [
            "Image position depends on neighbouring section rhythm. Confirmed by Sylvain baseline questionnaire."
          ]
        },
        {
          "id": "78303301-e12d-ef5e-4323-a4f194065dd1",
          "name": "Image Left",
          "inferred": false,
          "useWhen": [
            "Use when content lends itself to an image and previous similar section used image right.",
            "Alternate image direction down the page."
          ],
          "avoidWhen": [
            "Avoid following another left-image section where rhythm would feel repetitive."
          ],
          "notes": [
            "Image position depends on neighbouring section rhythm. Confirmed by Sylvain baseline questionnaire."
          ]
        },
        {
          "id": "f1e9197d-1010-238b-659a-3864216171ed",
          "name": "Image Bottom",
          "inferred": false,
          "useWhen": [
            "Use for a full-width image/video treatment to break up the page.",
            "Use when side-by-side image/text would feel too constrained."
          ],
          "avoidWhen": [],
          "notes": [
            "Confirmed by Sylvain baseline questionnaire 2026-06-03."
          ]
        }
      ]
    },
    {
      "component": "[DEV] Info Note / Component Context Tooltip",
      "key": "devInfoNote.ComponentContextTooltip",
      "group": "Dev Starters",
      "role": "component",
      "description": "Designer only tooltip to explain specifics within a section context; to leave some dev note.",
      "variants": [
        {
          "id": "base",
          "name": "Top Right"
        },
        {
          "id": "545f61ea-6406-a1e0-3eec-0b61d6ff3deb",
          "name": "Bottom Right"
        },
        {
          "id": "fa998873-6741-b74e-f957-01169ea46eed",
          "name": "Bottom Left"
        },
        {
          "id": "72d9d437-bc68-42d4-207b-36648d838971",
          "name": "Top Left"
        }
      ],
      "propLabels": [
        "Content",
        "Position"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Top Right",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "545f61ea-6406-a1e0-3eec-0b61d6ff3deb",
          "name": "Bottom Right",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "fa998873-6741-b74e-f957-01169ea46eed",
          "name": "Bottom Left",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "72d9d437-bc68-42d4-207b-36648d838971",
          "name": "Top Left",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Atom / Breadcrumb Link",
      "key": "atom.breadcrumbLink",
      "group": "Global",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Visibility",
        "Link",
        "Text",
        "Position"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Atom / Divider",
      "key": "atom.divider",
      "group": "Global",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Component / Breadcrumb",
      "key": "component.breadcrumb",
      "group": "Global",
      "role": "slotChild",
      "description": "Linking page navigation flow and depth. Has SEO microdata in the atom component",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Link",
        "Text",
        "Link",
        "Text",
        "Link",
        "Text",
        "Current Page Title",
        "Show current page?"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Element / Social Links",
      "key": "element.socialLinks",
      "group": "Global",
      "role": "slotChild",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Vertical"
        },
        {
          "id": "cd3219f3-5151-ab40-f49d-0841a6fcaa20",
          "name": "Horizontal"
        },
        {
          "id": "a1fa9d5b-1afb-424f-5628-a76ad7a85811",
          "name": "Inherit"
        }
      ],
      "propLabels": [
        "Variant"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Vertical",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "cd3219f3-5151-ab40-f49d-0841a6fcaa20",
          "name": "Horizontal",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "a1fa9d5b-1afb-424f-5628-a76ad7a85811",
          "name": "Inherit",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / Background Visual",
      "key": "global.backgroundVisual",
      "group": "Global",
      "role": "globalUtility",
      "description": "Background Image",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Image",
        "Show Caption",
        "Caption",
        "Image Position",
        "Show Overlay?",
        "Opacity"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Global / Classes to include in CSS",
      "key": "global.classesToIncludeInCSS",
      "group": "Global",
      "role": "globalUtility",
      "description": "Attach class on div and add it within this parent to include on all pages.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Global / Container",
      "key": "global.container",
      "group": "Global",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Large"
        },
        {
          "id": "b6d457bb-59e9-e3e7-1495-f42eb9597304",
          "name": "Medium"
        },
        {
          "id": "761096fd-b614-fdbb-9029-b9c8156f20ba",
          "name": "Small"
        },
        {
          "id": "f1e7dc5e-51aa-465f-91ee-972b181fd365",
          "name": "None"
        }
      ],
      "propLabels": [
        "Size",
        "Slot",
        "Class"
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "f04c4463-3539-bde1-21a4-d975c8d6bd4c",
          "group": null
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Large",
          "inferred": true,
          "useWhen": [
            "Use for higher emphasis or spacious layouts."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "b6d457bb-59e9-e3e7-1495-f42eb9597304",
          "name": "Medium",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "761096fd-b614-fdbb-9029-b9c8156f20ba",
          "name": "Small",
          "inferred": true,
          "useWhen": [
            "Use for lower-emphasis or space-constrained sections."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "f1e7dc5e-51aa-465f-91ee-972b181fd365",
          "name": "None",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / Eyebrow",
      "key": "global.eyebrow",
      "group": "Global",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Text",
        "Hide"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Global / Heading",
      "key": "global.heading",
      "group": "Global",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Inherit"
        },
        {
          "id": "6c2de545-dccb-a5a4-d394-240d42e9a5f6",
          "name": "H1"
        },
        {
          "id": "75b114e7-c2fc-0b16-06ea-26e9900b2211",
          "name": "H2"
        },
        {
          "id": "a9cb0b38-604f-9327-c4f0-adf0c41cf90e",
          "name": "H3"
        },
        {
          "id": "069ddb0b-b0a1-7bea-88b7-050236b59477",
          "name": "H4"
        },
        {
          "id": "530ae227-6695-1ad7-93f3-f8656d3b3c12",
          "name": "H5"
        },
        {
          "id": "158b4f37-7100-9eb1-602d-4e17cb2b2f06",
          "name": "H6"
        }
      ],
      "propLabels": [
        "Visual Size",
        "Tag",
        "Heading",
        "Switch",
        "Custom Class",
        "Visibility"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Inherit",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "6c2de545-dccb-a5a4-d394-240d42e9a5f6",
          "name": "H1",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "75b114e7-c2fc-0b16-06ea-26e9900b2211",
          "name": "H2",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "a9cb0b38-604f-9327-c4f0-adf0c41cf90e",
          "name": "H3",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "069ddb0b-b0a1-7bea-88b7-050236b59477",
          "name": "H4",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "530ae227-6695-1ad7-93f3-f8656d3b3c12",
          "name": "H5",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "158b4f37-7100-9eb1-602d-4e17cb2b2f06",
          "name": "H6",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / Heading Lockup",
      "key": "global.headingLockup",
      "group": "Global",
      "role": "globalUtility",
      "description": "Standard lockup of eyebrow text, heading, short paragraph, and a button.",
      "variants": [
        {
          "id": "base",
          "name": "Vertical"
        },
        {
          "id": "251444df-f257-f969-fd33-ce409ed9ca8c",
          "name": "Stack"
        },
        {
          "id": "3e2f5c33-b1ab-f434-a5b7-48a4dc0f0522",
          "name": "Horizontal"
        }
      ],
      "propLabels": [
        "Visibility",
        "Variant",
        "Hide Eyebrow Text",
        "Eyebrow Text",
        "Visual Size",
        "Tag",
        "Title",
        "Custom Class",
        "Hide",
        "Text Size",
        "Text",
        "Hide Button?",
        "Text",
        "Link"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Vertical",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "251444df-f257-f969-fd33-ce409ed9ca8c",
          "name": "Stack",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "3e2f5c33-b1ab-f434-a5b7-48a4dc0f0522",
          "name": "Horizontal",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / Icon Sizer",
      "key": "global.iconSizer",
      "group": "Global",
      "role": "globalUtility",
      "description": "Icon wrapper with sizes",
      "variants": [
        {
          "id": "base",
          "name": "1"
        },
        {
          "id": "5f197020-291c-c933-fb88-1c4fa7accf5f",
          "name": "1.5"
        },
        {
          "id": "b21e8f1f-aa7e-89ca-0b65-f4ba1b0bbb5b",
          "name": "2"
        }
      ],
      "propLabels": [
        "Slot",
        "Size"
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "3f860394-dac6-0941-0a08-c262625969e2",
          "group": null
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "1",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "5f197020-291c-c933-fb88-1c4fa7accf5f",
          "name": "1.5",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "b21e8f1f-aa7e-89ca-0b65-f4ba1b0bbb5b",
          "name": "2",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / Logo",
      "key": "global.logo",
      "group": "Global",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Class"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Global / Max Width",
      "key": "global.maxWidth",
      "group": "Global",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "d8b65fba-37e7-bdc0-dbd5-afe58b5c4193",
          "name": "XL"
        },
        {
          "id": "base",
          "name": "L"
        },
        {
          "id": "8b089f5f-6413-2402-119f-0fac874cabf5",
          "name": "M"
        },
        {
          "id": "1368ccdd-0309-d176-6a50-5bb96f5056fb",
          "name": "S"
        },
        {
          "id": "ec688621-3027-01e2-878c-f03c25b1b3ed",
          "name": "XS"
        }
      ],
      "propLabels": [
        "Slot",
        "Variant"
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "db1143e6-abcf-48db-5dcb-bf283958cd19",
          "group": null
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "d8b65fba-37e7-bdc0-dbd5-afe58b5c4193",
          "name": "XL",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "base",
          "name": "L",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "8b089f5f-6413-2402-119f-0fac874cabf5",
          "name": "M",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "1368ccdd-0309-d176-6a50-5bb96f5056fb",
          "name": "S",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "ec688621-3027-01e2-878c-f03c25b1b3ed",
          "name": "XS",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / Paragraph",
      "key": "global.paragraph",
      "group": "Global",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "4bd63bbe-c01c-ce14-d48b-9d4b559d5a03",
          "name": "Small"
        },
        {
          "id": "base",
          "name": "Normal"
        },
        {
          "id": "1310d40e-f949-f815-7886-b87388ace806",
          "name": "Large"
        }
      ],
      "propLabels": [
        "Text Size",
        "Text",
        "Hide",
        "Class"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "4bd63bbe-c01c-ce14-d48b-9d4b559d5a03",
          "name": "Small",
          "inferred": true,
          "useWhen": [
            "Use for lower-emphasis or space-constrained sections."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "base",
          "name": "Normal",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "1310d40e-f949-f815-7886-b87388ace806",
          "name": "Large",
          "inferred": true,
          "useWhen": [
            "Use for higher emphasis or spacious layouts."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / Progressive Blur Overlay",
      "key": "global.progressiveBlurOverlay",
      "group": "Global",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Config"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Global / Rich Text",
      "key": "global.richText",
      "group": "Global",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Normal"
        },
        {
          "id": "9e409bc2-0f61-eac5-55fb-b6113bbddd68",
          "name": "Large"
        }
      ],
      "propLabels": [
        "Paragraph Size",
        "Content",
        "Columns",
        "Hide"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Normal",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "9e409bc2-0f61-eac5-55fb-b6113bbddd68",
          "name": "Large",
          "inferred": true,
          "useWhen": [
            "Use for higher emphasis or spacious layouts."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / Section",
      "key": "global.section",
      "group": "Global",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        },
        {
          "id": "57df5ea0-69d2-34dd-4cd1-a846c237db96",
          "name": "Grey"
        },
        {
          "id": "71cfd673-5d59-8024-f820-a1869d39ac89",
          "name": "Accent Primary"
        },
        {
          "id": "55691afd-d643-3286-3cba-bc14846112a2",
          "name": "Accent Secondary"
        }
      ],
      "propLabels": [
        "Theme",
        "Top Padding",
        "Bottom Padding",
        "Content Container",
        "Theme (`is-full-width` to remove page-padding)",
        "Slot"
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "8749060d-3ad8-ece0-ba67-9a20df675820",
          "group": null
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "57df5ea0-69d2-34dd-4cd1-a846c237db96",
          "name": "Grey",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "71cfd673-5d59-8024-f820-a1869d39ac89",
          "name": "Accent Primary",
          "inferred": true,
          "useWhen": [
            "Use for the highest-priority page or section treatment.",
            "Best when the section needs stronger visual weight or conversion emphasis."
          ],
          "avoidWhen": [
            "Avoid on routine lower-level interior pages where a lighter treatment is more appropriate."
          ],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "55691afd-d643-3286-3cba-bc14846112a2",
          "name": "Accent Secondary",
          "inferred": true,
          "useWhen": [
            "Use for standard interior pages or lower visual emphasis.",
            "Best when content hierarchy matters more than a strong landing-page treatment."
          ],
          "avoidWhen": [
            "Avoid when the page needs the strongest entry point or main conversion hero."
          ],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / Section Padding",
      "key": "global.sectionPadding",
      "group": "Global",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Medium"
        },
        {
          "id": "3d86a015-697e-a0d0-d7d0-4c70417af4b7",
          "name": "Small"
        },
        {
          "id": "e24c1cd3-93b8-0ef7-c11b-5657dc1de6b4",
          "name": "Large"
        },
        {
          "id": "c307241a-a4be-74ec-9bb2-66aa6019ab2f",
          "name": "None"
        }
      ],
      "propLabels": [
        "Size"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Medium",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "3d86a015-697e-a0d0-d7d0-4c70417af4b7",
          "name": "Small",
          "inferred": true,
          "useWhen": [
            "Use for lower-emphasis or space-constrained sections."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "e24c1cd3-93b8-0ef7-c11b-5657dc1de6b4",
          "name": "Large",
          "inferred": true,
          "useWhen": [
            "Use for higher emphasis or spacious layouts."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "c307241a-a4be-74ec-9bb2-66aa6019ab2f",
          "name": "None",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / Theme Setter",
      "key": "global.themeSetter",
      "group": "Global",
      "role": "globalUtility",
      "description": "Changes site color theme on coming into view",
      "variants": [
        {
          "id": "base",
          "name": "None"
        },
        {
          "id": "a84fdd7c-53e1-7022-f50c-eb91ebfec6cb",
          "name": "White"
        },
        {
          "id": "e5c83855-f99f-c3ae-3a98-e6fd27812262",
          "name": "Grey"
        },
        {
          "id": "31fd8a09-4f00-e856-7f79-e9d0b8c2bd67",
          "name": "Primary Accent"
        },
        {
          "id": "082d6f04-e267-e1dd-1e77-16550a7130db",
          "name": "Secondary Accent"
        }
      ],
      "propLabels": [
        "Theme",
        "Slot"
      ],
      "slots": [
        {
          "label": "Slot",
          "id": "19043abc-19c8-5038-c4bd-fde44f39674c",
          "group": null
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "None",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "a84fdd7c-53e1-7022-f50c-eb91ebfec6cb",
          "name": "White",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "e5c83855-f99f-c3ae-3a98-e6fd27812262",
          "name": "Grey",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "31fd8a09-4f00-e856-7f79-e9d0b8c2bd67",
          "name": "Primary Accent",
          "inferred": true,
          "useWhen": [
            "Use for the highest-priority page or section treatment.",
            "Best when the section needs stronger visual weight or conversion emphasis."
          ],
          "avoidWhen": [
            "Avoid on routine lower-level interior pages where a lighter treatment is more appropriate."
          ],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "082d6f04-e267-e1dd-1e77-16550a7130db",
          "name": "Secondary Accent",
          "inferred": true,
          "useWhen": [
            "Use for standard interior pages or lower visual emphasis.",
            "Best when content hierarchy matters more than a strong landing-page treatment."
          ],
          "avoidWhen": [
            "Avoid when the page needs the strongest entry point or main conversion hero."
          ],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / Visual",
      "key": "global.visual",
      "group": "Global",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "16:9"
        },
        {
          "id": "22b4edd4-6870-ef4a-3bf8-57c9df3ca152",
          "name": "3:2"
        },
        {
          "id": "c428d57e-eeb9-cecb-862f-efe1b8e0c69f",
          "name": "Square"
        },
        {
          "id": "20b26dcb-9f70-38ba-8c79-749edd343562",
          "name": "Fill Parent Container"
        },
        {
          "id": "b6684004-c42b-4873-6b6d-2806667a3c93",
          "name": "Absolute"
        },
        {
          "id": "2ad83ceb-e319-2d8c-5e04-5881086a79ea",
          "name": "Auto (Image based)"
        },
        {
          "id": "a340da74-3aac-35b0-169e-a61c9261f764",
          "name": "Custom"
        }
      ],
      "propLabels": [
        "Visibility",
        "Image",
        "Custom Settings",
        "Caption Positon",
        "MP4 Video Source",
        "Size",
        "Vimeo Video Link",
        "Parallax? Set 1 to enable",
        "Caption",
        "Image Radius"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "16:9",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "22b4edd4-6870-ef4a-3bf8-57c9df3ca152",
          "name": "3:2",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "c428d57e-eeb9-cecb-862f-efe1b8e0c69f",
          "name": "Square",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "20b26dcb-9f70-38ba-8c79-749edd343562",
          "name": "Fill Parent Container",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "b6684004-c42b-4873-6b6d-2806667a3c93",
          "name": "Absolute",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "2ad83ceb-e319-2d8c-5e04-5881086a79ea",
          "name": "Auto (Image based)",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "a340da74-3aac-35b0-169e-a61c9261f764",
          "name": "Custom",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Globals",
      "key": "globals",
      "group": "Global",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Show grid",
        "Highlight empty links",
        "Show attribute markers"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Footer",
      "key": "section.footer",
      "group": "Global",
      "role": "pageSection",
      "description": "Global site footer. Place at the bottom of every page. Content is managed via CMS collections and global site settings. Do not use more than once per page.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Section / Hero",
      "key": "section.hero",
      "group": "Global",
      "role": "pageSection",
      "description": "Use as the first section on any page to establish context and drive a primary action. Suitable for both primary landing pages and secondary interior pages.",
      "variants": [
        {
          "id": "base",
          "name": "Primary"
        },
        {
          "id": "c85520c8-dad1-33bb-f385-9180dc505c8f",
          "name": "Secondary"
        }
      ],
      "propLabels": [
        "Variant",
        "Heading",
        "Heading Size",
        "Paragraph",
        "Text",
        "Link",
        "Image",
        "Image Position"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Primary",
          "inferred": false,
          "useWhen": [
            "Always use on the homepage.",
            "Often use on inner landing-style or gateway pages.",
            "Use when the page needs strongest landing-page emphasis."
          ],
          "avoidWhen": [
            "Routine interior pages that are not landing/gateway pages.",
            "Blog/news listing pages unless specifically custom-designed."
          ],
          "notes": [
            "Confirmed by Sylvain baseline questionnaire 2026-06-03."
          ]
        },
        {
          "id": "c85520c8-dad1-33bb-f385-9180dc505c8f",
          "name": "Secondary",
          "inferred": false,
          "useWhen": [
            "Use for most standard interior pages, excluding /blog or /news style listings."
          ],
          "avoidWhen": [
            "Homepage.",
            "Inner landing-style/gateway page where Primary is more appropriate."
          ],
          "notes": [
            "Confirmed by Sylvain baseline questionnaire 2026-06-03."
          ]
        }
      ]
    },
    {
      "component": "Section / Navbar",
      "key": "section.navbar",
      "group": "Global",
      "role": "pageSection",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        },
        {
          "id": "1bbc7067-1955-709d-c94d-71fcb8683053",
          "name": "Dark"
        }
      ],
      "propLabels": [
        "Variant",
        "Class"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "1bbc7067-1955-709d-c94d-71fcb8683053",
          "name": "Dark",
          "inferred": true,
          "useWhen": [
            "Use on dark backgrounds or when the section/header needs dark visual treatment."
          ],
          "avoidWhen": [
            "Avoid on light backgrounds unless the surrounding design expects dark navigation/contrast."
          ],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Section / Next Pages",
      "key": "section.nextPages",
      "group": "Global",
      "role": "pageSection",
      "description": "Use at the bottom of pages to guide visitors toward two related pages. Accepts a heading, title, image, and link for each page. Suitable for navigating between departments, programs, or key site sections.",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Title",
        "Image",
        "Link",
        "Title",
        "Image",
        "Link",
        "Heading"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Block / Button Group",
      "key": "block.buttonGroup",
      "group": "Global / Button",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Left"
        },
        {
          "id": "7208a691-7fa0-7869-d354-20d393399b57",
          "name": "Center"
        }
      ],
      "propLabels": [
        "Buttons Slot",
        "Alignment"
      ],
      "slots": [
        {
          "label": "Buttons Slot",
          "id": "39c27020-1fdc-9313-eb39-2592380c66f0",
          "group": null
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Left",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "7208a691-7fa0-7869-d354-20d393399b57",
          "name": "Center",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / Button",
      "key": "global.button",
      "group": "Global / Button",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Primary"
        },
        {
          "id": "81eb97b7-cf50-1c58-61cc-418fd746197b",
          "name": "Secondary"
        },
        {
          "id": "be415f65-fd32-4c5b-a690-3883f5e92b3a",
          "name": "Link"
        }
      ],
      "propLabels": [
        "Show Button?",
        "Type",
        "Size (0-2)",
        "Text",
        "Add Link?",
        "Link",
        "Link expand to parent?",
        "Icon",
        "Position",
        "Custom Class",
        "Custom Attribute Name",
        "Custom Attribute Value",
        "Styling Class"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Primary",
          "inferred": true,
          "useWhen": [
            "Use for the highest-priority page or section treatment.",
            "Best when the section needs stronger visual weight or conversion emphasis."
          ],
          "avoidWhen": [
            "Avoid on routine lower-level interior pages where a lighter treatment is more appropriate."
          ],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "81eb97b7-cf50-1c58-61cc-418fd746197b",
          "name": "Secondary",
          "inferred": true,
          "useWhen": [
            "Use for standard interior pages or lower visual emphasis.",
            "Best when content hierarchy matters more than a strong landing-page treatment."
          ],
          "avoidWhen": [
            "Avoid when the page needs the strongest entry point or main conversion hero."
          ],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "be415f65-fd32-4c5b-a690-3883f5e92b3a",
          "name": "Link",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 0.25",
      "key": "spacer.0.25",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 0.5",
      "key": "spacer.0.5",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 0.75",
      "key": "spacer.0.75",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 1",
      "key": "spacer.1",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 1.25",
      "key": "spacer.1.25",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 1.5",
      "key": "spacer.1.5",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 1.75",
      "key": "spacer.1.75",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 10",
      "key": "spacer.10",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 2",
      "key": "spacer.2",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 3",
      "key": "spacer.3",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 4",
      "key": "spacer.4",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Visibility"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 5",
      "key": "spacer.5",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 6",
      "key": "spacer.6",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 7",
      "key": "spacer.7",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 8",
      "key": "spacer.8",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Spacer / 9",
      "key": "spacer.9",
      "group": "Global / Element Gap Spacers",
      "role": "component",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Global / Button Icon",
      "key": "global.buttonIcon",
      "group": "Global / Icons",
      "role": "globalUtility",
      "description": "Icons for buttons and links",
      "variants": [
        {
          "id": "base",
          "name": "None"
        },
        {
          "id": "160d5a89-8fd6-bf58-9aa3-b5538ac176ab",
          "name": "Arrow"
        },
        {
          "id": "8c508ec7-4449-2860-0dfb-341d57906217",
          "name": "Close"
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe50",
          "name": "External Link"
        },
        {
          "id": "f3668600-bb03-ddbf-01ff-2af09d58e412",
          "name": "Arrow Left"
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe4f",
          "name": "Download"
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe51",
          "name": "Mail"
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe52",
          "name": "Phone"
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe56",
          "name": "Search"
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe5b",
          "name": "Caret Down"
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe5c",
          "name": "Caret Right"
        }
      ],
      "propLabels": [
        "Icon"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "None",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "160d5a89-8fd6-bf58-9aa3-b5538ac176ab",
          "name": "Arrow",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "8c508ec7-4449-2860-0dfb-341d57906217",
          "name": "Close",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe50",
          "name": "External Link",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "f3668600-bb03-ddbf-01ff-2af09d58e412",
          "name": "Arrow Left",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe4f",
          "name": "Download",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe51",
          "name": "Mail",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe52",
          "name": "Phone",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe56",
          "name": "Search",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe5b",
          "name": "Caret Down",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "2176298e-3ef6-4077-a104-6dc56a11fe5c",
          "name": "Caret Right",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / General Icon",
      "key": "global.generalIcon",
      "group": "Global / Icons",
      "role": "globalUtility",
      "description": "Icon component with all options as variants.\n\nTo set a new icon:\n- Add it to variable panel with SVG data-url\n- Change colored path fill to  `white`\n- Create a variant on icon linking to the variable",
      "variants": [
        {
          "id": "base",
          "name": "Arrow Right"
        },
        {
          "id": "617369d3-7f15-e28e-086f-2519faaf713f",
          "name": "Arrow Left"
        },
        {
          "id": "a1546347-ab62-30a8-bcfb-0102b0787e5a",
          "name": "Download"
        },
        {
          "id": "1885504b-edf5-3fbe-0381-44d652016d36",
          "name": "External Link"
        },
        {
          "id": "0513ee52-17d4-0866-a8ca-2375fc0ca416",
          "name": "Mail"
        },
        {
          "id": "6f18d85e-8f27-db96-1d5c-38a7bf8be994",
          "name": "Phone"
        },
        {
          "id": "af8508ce-c2c4-0e67-100c-5f371153a2a7",
          "name": "Pin"
        },
        {
          "id": "53035ebc-ffe8-4e20-05c6-b59cee887d5c",
          "name": "X (Cross)"
        },
        {
          "id": "daad7709-2142-c151-97ea-ff870676a237",
          "name": "Question"
        },
        {
          "id": "f8a8f212-212c-445d-e61e-f090685e0d83",
          "name": "Search"
        },
        {
          "id": "92baee6b-bc14-23a5-fe49-73c1d4d0caa7",
          "name": "User"
        },
        {
          "id": "6bdad086-0197-e50d-63ae-ec86540df635",
          "name": "Copy"
        },
        {
          "id": "a1637f1d-ce6e-aba6-4432-c941dc885d81",
          "name": "Caret Down"
        },
        {
          "id": "c2e6fa5f-c82f-3a20-720a-ae0df8e830eb",
          "name": "Caret Right"
        },
        {
          "id": "91005640-be4d-5ddb-cd49-0f333c2fc9c9",
          "name": "Play"
        },
        {
          "id": "6cda7ece-db10-050c-8650-ac93599f81cf",
          "name": "Pause"
        }
      ],
      "propLabels": [
        "Icon",
        "Width"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Arrow Right",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "617369d3-7f15-e28e-086f-2519faaf713f",
          "name": "Arrow Left",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "a1546347-ab62-30a8-bcfb-0102b0787e5a",
          "name": "Download",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "1885504b-edf5-3fbe-0381-44d652016d36",
          "name": "External Link",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "0513ee52-17d4-0866-a8ca-2375fc0ca416",
          "name": "Mail",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "6f18d85e-8f27-db96-1d5c-38a7bf8be994",
          "name": "Phone",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "af8508ce-c2c4-0e67-100c-5f371153a2a7",
          "name": "Pin",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "53035ebc-ffe8-4e20-05c6-b59cee887d5c",
          "name": "X (Cross)",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "daad7709-2142-c151-97ea-ff870676a237",
          "name": "Question",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "f8a8f212-212c-445d-e61e-f090685e0d83",
          "name": "Search",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "92baee6b-bc14-23a5-fe49-73c1d4d0caa7",
          "name": "User",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "6bdad086-0197-e50d-63ae-ec86540df635",
          "name": "Copy",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "a1637f1d-ce6e-aba6-4432-c941dc885d81",
          "name": "Caret Down",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "c2e6fa5f-c82f-3a20-720a-ae0df8e830eb",
          "name": "Caret Right",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "91005640-be4d-5ddb-cd49-0f333c2fc9c9",
          "name": "Play",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "6cda7ece-db10-050c-8650-ac93599f81cf",
          "name": "Pause",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Global / Social Icon",
      "key": "global.socialIcon",
      "group": "Global / Icons",
      "role": "globalUtility",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Facebook"
        },
        {
          "id": "97d406a9-0008-a013-cdc2-6288e0e68453",
          "name": "LinkedIn"
        },
        {
          "id": "69bee88f-24db-c8f4-1a78-27ac2cfa5e65",
          "name": "Instagram"
        },
        {
          "id": "83a63bae-fd31-8a47-d74c-a3f13fe7f09c",
          "name": "X (Twitter)"
        }
      ],
      "propLabels": [
        "Variant"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Facebook",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        },
        {
          "id": "97d406a9-0008-a013-cdc2-6288e0e68453",
          "name": "LinkedIn",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "69bee88f-24db-c8f4-1a78-27ac2cfa5e65",
          "name": "Instagram",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        },
        {
          "id": "83a63bae-fd31-8a47-d74c-a3f13fe7f09c",
          "name": "X (Twitter)",
          "inferred": true,
          "useWhen": [
            "Use as the default variant for this component."
          ],
          "avoidWhen": [],
          "notes": [
            "Variant id comes from Webflow export; preserve this id when setting variant props."
          ]
        }
      ]
    },
    {
      "component": "Component / Marquee",
      "key": "component.marquee",
      "group": "Marquee",
      "role": "slotChild",
      "description": "Marquee Track",
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Slot content",
        "Custom Settings"
      ],
      "slots": [
        {
          "label": "Slot content",
          "id": "361d1f96-da91-1ab0-8418-7697370972ba",
          "group": null
        }
      ],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Element / Marquee Image",
      "key": "element.marqueeImage",
      "group": "Marquee",
      "role": "slotChild",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Image"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Template / Form",
      "key": "template.form",
      "group": "Templates",
      "role": "templateBlock",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Template / PS - Empty Page Structure",
      "key": "template.psEmptyPageStructure",
      "group": "Templates",
      "role": "pageStructure",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    },
    {
      "component": "Template / SS - Empty Section Structure",
      "key": "template.ssEmptySectionStructure",
      "group": "Templates",
      "role": "templateBlock",
      "description": null,
      "variants": [
        {
          "id": "base",
          "name": "Base"
        }
      ],
      "propLabels": [
        "Hide Section"
      ],
      "slots": [],
      "variantUsageGuidance": [
        {
          "id": "base",
          "name": "Base",
          "inferred": true,
          "useWhen": [
            "Default/base presentation when no more specific variant is needed."
          ],
          "avoidWhen": [],
          "notes": [
            "This is the base/default variant id in the exported Webflow contract."
          ]
        }
      ]
    }
  ],
  "maintenance": {
    "refreshFlow": [
      "Export raw catalogue from Iggy Webflow Designer app action exportComponentCatalogue.",
      "Normalise raw export into artifacts/starter-json/<date>/starter-component-contract.json.",
      "Cross-check raw changes against this builder-facing manifest and override technical metadata where changed.",
      "Preserve human/agency guidance where component/variant IDs or names still match.",
      "Infer sensible first-pass guidance for new components/variants, mark uncertainty, and generate/share a questionnaire when needed.",
      "Keep a changelog of Starter contract updates."
    ],
    "variantGuidancePolicy": "Variant guidance may be inferred from names for first pass, but should be reviewed by IGNITE/Sylvain and preserved across future raw catalogue refreshes.",
    "lastUpdatedForVariantGuidance": "2026-06-03",
    "lastUpdatedFromQuestionnaire": "2026-06-03",
    "questionnaireResponses": [
      "local-tools/sitemap-builder/questionnaire-responses/starter-update-questionnaire-response-20260603-sylvain-baseline.json"
    ]
  },
  "humanGuidance": {
    "sourceResponse": "local-tools/sitemap-builder/questionnaire-responses/starter-update-questionnaire-response-20260603-sylvain-baseline.json",
    "reviewOwner": "sylvain",
    "capturedAt": "2026-06-03",
    "principles": [
      "Do not assume grouping/categorisation from component names alone. Names are mostly client-facing labels for what can be added.",
      "Components labelled as sections may still be used in the main page context even when their visual role sounds like footer/header/etc.",
      "No universal preferred component set: useful components depend on the site and page context.",
      "Avoid assuming too much; use the questionnaire format when confirmation is needed and keep learning patterns over time."
    ],
    "componentSelection": {
      "recommendedPolicy": "No universal preferred set; select components based on site/page content and context.",
      "discouragedByDefault": [
        "modal components",
        "form components"
      ],
      "discouragedNotes": "Modal and form components are specific to particular use cases; do not insert by default unless the page brief calls for them."
    },
    "sectionOrdering": {
      "hero": "Hero first except more custom pages such as blog/news listings.",
      "homeOrLandingIntro": "Home or landing-style pages often use Section / Intro Text after the hero.",
      "standardInteriorIntro": "Standard interior pages often use Section / Text Content to introduce the page.",
      "nextPages": "Section / Next Pages is always the last section before the footer when used, though it is often integrated into the footer component.",
      "cta": "Section / CTA is usually close to the end or at the end."
    },
    "pageSlotModel": {
      "abovePageSlot": "Fixed content before the client-reorderable page sections; normally Hero.",
      "pageSlot": "Client can shuffle, add to, and remove sections here.",
      "belowPageSlot": "Fixed content after the client-reorderable page sections; use for things like Section / Next Pages when fixed below page content."
    },
    "propRules": {
      "headings": "Headings are generally required when present.",
      "emptyOptionalProps": "Most optional props hide their element when empty; blank values may intentionally override default text, e.g. blank eyebrow to remove eyebrow display.",
      "richText": "Usually plain paragraph text; use rich text where clients need links/bold/etc.",
      "images": "Image props are not currently supported in the builder flow; leave image props blank/unset for now.",
      "links": "Link to relevant pages based on content where appropriate; use external link features where needed."
    },
    "recipesPolicy": {
      "homepage": "No default; custom per project.",
      "admissions": "Learn as we go.",
      "learning": "Learn as we go.",
      "contact": "Usually hero, form section, then footer.",
      "general": "Recipes are examples/patterns, not mandatory defaults."
    },
    "refreshGovernance": {
      "mergePolicy": "Cross-check data and override where there have been changes.",
      "newComponentPolicy": "Infer as much as possible, then generate/share a questionnaire when more info is needed.",
      "removedComponentPolicy": "Removed items are usually replaced by another prop, often based on new prop features; ask questions when needed.",
      "approvalThreshold": "No hard approval threshold; keep a changelog to stay up to date."
    }
  },
  "slotGuidance": {
    "source": "Sylvain baseline questionnaire 2026-06-03",
    "defaultPolicy": "Most component slots should be left empty by default unless the component/content specifically requires child items.",
    "slotAcceptsAttribute": "Where available, prefer catalogue data from slot-accepts attributes on the slot itself.",
    "futureWork": "Next questionnaire should go section-by-section to confirm child rules and avoid/allow combinations.",
    "technicalReality": "Many combinations may be technically possible but should be avoided unless validated."
  }
}
