---
title: "Create a site"
method: POST
path: "/api/v1/sites"
tags: ["sites"]
---

# Create a site

`POST /api/v1/sites`

## Request

- Base URL: `https://slatehut.com`
- URL: `https://slatehut.com/api/v1/sites`
- Auth: HTTP bearer

## Request body

- CreateSiteRequest: Creating a site matches “new site” in the dashboard. Optional fields mirror site-wide settings in the editor.
  - `subdomain` string: Optional; random `site-xxxxxxxx` if omitted
  - `title` string: Defaults from template or "Untitled site"
  - `description` string: Default meta description (editor “Site settings”)
  - `socialImageUrl` string: Default Open Graph / social share image URL
  - `faviconUrl` string: Tab icon URL (often from media upload)
  - `headScripts` string: Trusted snippets for head (sanitized like the editor)
  - `templateId` string: Built-in template id from `GET /api/v1/templates` (e.g. aiSaas, financialAdvisor, lawFirm, medicalAesthetic, realEstate, executiveCoach, agency, boutiqueHotel, weddingVenue, interiorDesign, dtcProduct, onlineCourse, fineDining, luxuryPortfolio, comingSoon).
  - `blank` boolean: If true, home page has no blocks (empty canvas) instead of a template
  - `pages` SitePageDef[]: Full multi-page site for programmatic or BYO-LLM builds; if set, templateId is ignored. Does **not** call SlateHut models (no AI credits). Validate first with `POST /api/v1/sites/validate`. Include `dynamic` with collectionId + templateBlocks for CMS detail URLs.
    - `slug` string, required
    - `title` string
    - `seo` SitePageSeo
      - `metaTitle` string
      - `description` string
      - `socialImageUrl` string
      - `noIndex` boolean
    - `blocks` PageBlock[], required
      - union: Discriminated union: `type` selects which `*BlockProps` schema applies. Image URLs may be absolute; upload binaries via POST /api/v1/media/upload first.
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'navbar', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` NavbarBlockProps, required
            - `brandLabel` string, required
            - `logoUrl` string: Public image URL (e.g. from POST /api/v1/media/upload).
            - `logoIcon` string: Lucide icon id when logoUrl is empty (e.g. sparkles). Prefer for API-generated sites without a logo asset.
            - `variant` 'standard' | 'minimal' | 'elevated' | 'dense' | 'splitCentered' | 'withPromoStrip': Layout: standard (default bar), minimal (no border), elevated (shadow), dense (compact), splitCentered (nav centered between brand and CTA on md+), withPromoStrip (announcement strip above bar).
            - `promoStripText` string
            - `secondaryCtaLabel` string
            - `secondaryCtaHref` string
            - `links` NavLinkItem[], required
              - …
            - `ctaLabel` string
            - `ctaHref` string
            - `ctaIcon` string: Lucide icon id (optional).
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'hero', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` HeroBlockProps, required
            - `variant` 'marketingCenteredGradient' | 'marketingCenteredSolid' | 'splitTextLeftImageRight' | 'splitImageLeftTextRight' | 'stackedCenteredWithWideImageBelow' | 'editorialStart' | 'photoFloatingCards' | 'splitCollagePhotos' | 'splitDeviceMockup' | 'centeredGlassOnPhoto' | 'editorialMinimalPill': Hero layout: marketingCenteredGradient (centered, default theme gradient band); marketingCenteredSolid (centered, default solid band); editorialStart (left-aligned band, default solid); split layouts (text vs featured image); stackedCenteredWithWideImageBelow (compact centered band + optional wide image below). Base fill is separate via backgroundFill.
            - `eyebrow` string: Optional short label above the headline.
            - `headline` string, required
            - `subheadline` string, required
            - `primaryCtaLabel` string, required
            - `primaryCtaHref` string, required
            - `primaryCtaIcon` string
            - `secondaryCtaLabel` string, required
            - `secondaryCtaHref` string, required
            - `secondaryCtaIcon` string
            - `secondaryCtaVariant` 'outline' | 'text': Secondary CTA: outline button vs text link.
            - `backgroundFill` 'themeGradientBand' | 'solidPageBackground' | 'photoWithThemeTint': Hero band base layer: themeGradientBand (optional blended background photo), solidPageBackground, or photoWithThemeTint (full-bleed cover + theme scrim). Omit for defaults (marketingCenteredSolid and editorialStart → solid page band; other layouts → theme gradient band). photoWithThemeTint without backgroundImageUrl falls back to those defaults.
            - `backgroundImageUrl` string
            - `featuredImageUrl` string
            - `featuredImageAlt` string
            - `backgroundImagePosition` 'center' | 'top' | 'bottom' | 'left' | 'right' | 'top left' | 'top right' | 'bottom left' | 'bottom right': Focal point for object-position / background position
            - `featuredImagePosition` 'center' | 'top' | 'bottom' | 'left' | 'right' | 'top left' | 'top right' | 'bottom left' | 'bottom right': Focal point for object-position / background position
            - `featuredImageFit` 'cover' | 'contain': CSS object-fit for images
            - `announcementText` string: Optional pill above eyebrow (e.g. funding news).
            - `announcementHref` string: Optional link for the announcement pill.
            - `headlineEmphasis` string: Substring of headline to emphasize (gradient or outlined box); first match only.
            - `headlineEmphasisStyle` 'accentGradientText' | 'softBadgeOutline' | 'thickUnderlineAccent' | 'translucentMarker' | 'solidAccentPill': How headlineEmphasis substring is styled: accentGradientText (gradient fill), softBadgeOutline, thickUnderlineAccent, translucentMarker (wash), solidAccentPill (filled pill).
            - `backgroundPattern` 'none' | 'subtleLineGrid' | 'subtleDotGrid' | 'diagonalFineLines' | 'radialCornerWash': Subtle overlay on the hero band (all layouts, including split text column).
            - `trustCaption` string: Small caption above trust logos (e.g. “Trusted by”).
            - `trustItems` HeroTrustItem[]: Optional trust row below CTAs.
              - …
            - `highlights` HeroHighlightItem[]: Up to three compact items between subheadline and CTAs (best with centered marketing layouts).
              - …
            - `featuredPresentation` 'banner' | 'mockup': For featured image below copy (centered marketing + stacked layouts): full-width banner vs card mockup with shadow.
            - `featuredTilt` boolean: When featuredPresentation is mockup, apply a subtle 3D tilt (respects reduced motion).
            - `copyEntrance` 'none' | 'fadeRise': Optional one-shot entrance animation for the hero copy stack (fade + slight rise). Respects reduced motion.
            - `floatingCards` HeroFloatingCard[]: Tilted floating UI cards for photoFloatingCards layout.
              - …
            - `collageImages` HeroCollageImage[]: Overlapping photos for splitCollagePhotos layout.
              - …
            - `ratingText` string: Star rating line e.g. "4.9/5 from 1,000+ users".
            - `socialProofQuote` string
            - `socialProofAvatars` string[]: Avatar image URLs for social proof row.
            - `checklistItems` string[]: Checklist bullets for splitDeviceMockup layout.
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'features', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` FeaturesBlockProps, required
            - `heading` string, required
            - `subheading` string
            - `layout` 'grid' | 'alternating' | 'splitMockupLeft' | 'splitMockupRight' | 'darkBandChecklist': grid: icon cards; alternating: zig-zag image + copy; splitMockup*: device/map mockup; darkBandChecklist: inverted band with checklist.
            - `eyebrow` string
            - `checklistItems` string[]
            - `ctaLabel` string
            - `ctaHref` string
            - `mockupImageUrl` string
            - `mockupImageAlt` string
            - `items` FeatureItem[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'text', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` TextBlockProps, required
            - `heading` string, required
            - `body` string, required
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'rich', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` RichBlockProps, required
            - `doc` TipTapDoc, required: TipTap/ProseMirror JSON: root `{ type: "doc", content: [...] }`. Paragraphs, headings, lists, links, etc. Use `{ type: "doc", content: [{ type: "paragraph" }] }` as empty default.
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'imageText', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` ImageTextBlockProps, required
            - `imageUrl` string, required
            - `imageAlt` string, required
            - `imageSide` 'left' | 'right', required
            - `heading` string, required
            - `body` string, required
            - `imagePosition` 'center' | 'top' | 'bottom' | 'left' | 'right' | 'top left' | 'top right' | 'bottom left' | 'bottom right': Focal point for object-position / background position
            - `imageFit` 'cover' | 'contain': CSS object-fit for images
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'imageGallery', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` ImageGalleryBlockProps, required
            - `heading` string, required
            - `columns` 2 | 3 | 4, required
            - `images` GalleryImage[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'list', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` ListBlockProps, required
            - `heading` string, required
            - `layout` 'list' | 'grid', required
            - `columns` 2 | 3 | 4, required
            - `showImages` boolean, required
            - `items` ListItem[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'collectionList', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` CollectionListBlockProps, required
            - `heading` string, required
            - `layout` 'list' | 'grid', required
            - `columns` 2 | 3 | 4, required
            - `showImages` boolean, required
            - `collectionId` string, required: CMS collection id (`GET /api/v1/sites/{subdomain}/collections`).
            - `fieldMap` CollectionListFieldMap: Deprecated: list cards use the collection schema. Kept for older sites.
              - …
            - `visibleFields` string[]: Optional field ids to show on cards; omit to show all non-primary fields.
            - `limit` integer: Max items when pagination is disabled.
            - `sortField` string: Field id or `updatedAt`.
            - `sortOrder` 'asc' | 'desc'
            - `pagination` object
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'collectionDetail', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` CollectionDetailBlockProps, required
            - `layout` 'standard' | 'wide' | 'sidebar': Detail template width / grid style.
            - `variant` 'article' | 'listing' | 'profile': Deprecated; use layout.
            - `showImage` boolean, required
            - `showDate` boolean, required
            - `showFields` string[]: Deprecated; use visibleFields.
            - `visibleFields` string[]: Field ids to render below main content; empty = no extra fields.
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'stats', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` StatsBlockProps, required
            - `heading` string, required
            - `stats` StatItem[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'cta', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` CtaBlockProps, required
            - `heading` string, required
            - `body` string, required
            - `buttonLabel` string, required
            - `buttonHref` string, required
            - `buttonIcon` string
            - `variant` 'solid' | 'outline' | 'muted' | 'fullWidthDarkBand': solid: brand primary band; outline: bordered light section; muted: soft muted background; fullWidthDarkBand: dark full-width CTA band.
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'testimonial', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` TestimonialBlockProps, required
            - `quote` string, required
            - `author` string, required
            - `role` string, required
            - `imageUrl` string: Optional avatar image URL.
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'testimonials', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` TestimonialsBlockProps, required
            - `heading` string
            - `layout` 'grid' | 'featured' | 'marquee' | 'cardGridWithAvatars': grid: responsive cards; featured: first quote prominent; marquee: horizontal scrolling strip; cardGridWithAvatars: avatar cards in a grid.
            - `items` TestimonialsItem[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'steps', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` StepsBlockProps, required
            - `heading` string, required
            - `subheading` string
            - `layout` 'default' | 'numberedCards': numberedCards: stepped cards with large step numbers.
            - `steps` StepItem[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'timeline', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` TimelineBlockProps, required
            - `heading` string, required
            - `items` TimelineItem[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'comparison', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` ComparisonBlockProps, required
            - `heading` string, required
            - `leftTitle` string, required
            - `rightTitle` string, required
            - `rows` ComparisonRow[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'bentoFeatures', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` BentoFeaturesBlockProps, required
            - `heading` string, required
            - `cells` BentoCell[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'faq', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` FaqBlockProps, required
            - `heading` string, required
            - `items` FaqItem[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'logos', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` LogosBlockProps, required
            - `heading` string, required
            - `names` string[]: Text pills when `logos` is absent or has no images. Omit or empty when using `logos` only.
            - `logos` LogoStripItem[]: Name + optional imageUrl per slot; when any imageUrl is set, drives the strip layout.
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'split', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` SplitBlockProps, required
            - `heading` string, required
            - `body` string, required
            - `asideHeading` string, required
            - `asideBody` string, required
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'pricing', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` PricingBlockProps, required
            - `heading` string, required
            - `subheading` string
            - `layout` 'default' | 'tierHighlightPill': tierHighlightPill: highlighted tier with pill badge.
            - `tiers` PricingTier[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'divider', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` DividerBlockProps, required
            - `variant` 'line' | 'dotted' | 'blank', required
            - `heightPx` integer: Used when variant is blank.
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'footer', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` FooterBlockProps, required
            - `brand` string, required
            - `tagline` string, required
            - `copyrightYear` integer
            - `variant` 'default' | 'illustratedBand': illustratedBand: bottom illustration band with watermark brand.
            - `illustrationImageUrl` string
            - `watermarkText` string
            - `legalLinks` FooterLink[]
              - …
            - `columns` FooterColumn[]
              - …
            - `socialLinks` SocialLink[]
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'youtube', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` YoutubeBlockProps, required
            - `videoUrl` string, required
            - `title` string
            - `aspectRatio` '16:9' | '4:3' | '1:1'
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'map', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` MapBlockProps, required
            - `embedUrl` string
            - `query` string
            - `height` integer
            - `zoom` integer
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'embed', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` EmbedBlockProps, required
            - `html` string, required: Iframe HTML; sanitized when rendered.
            - `caption` string
            - `maxWidth` integer
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'form', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` FormBlockProps, required
            - `formName` string, required: Human-facing title on the page and in submissions (e.g. Contact us). Avoid snake_case internal ids.
            - `description` string
            - `fields` FormField[], required
              - …
            - `submitLabel` string, required
            - `submitIcon` string
            - `successMessage` string, required
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'banner', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` BannerBlockProps, required
            - `text` string, required
            - `href` string
            - `linkLabel` string
            - `icon` string: Lucide icon id (optional).
            - `variant` 'info' | 'success' | 'warning' | 'accent': Visual style: info (blue), success (green), warning (amber), accent (primary).
            - `dismissible` boolean
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'team', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` TeamBlockProps, required
            - `heading` string, required
            - `subheading` string
            - `columns` 2 | 3 | 4, required
            - `members` TeamMember[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'newsletter', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` NewsletterBlockProps, required
            - `heading` string, required
            - `description` string
            - `inputPlaceholder` string, required
            - `buttonLabel` string, required
            - `buttonIcon` string: Lucide icon id (optional).
            - `successMessage` string, required
            - `variant` 'inline' | 'stacked': inline: input + button side by side; stacked: vertical.
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'marquee', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` MarqueeBlockProps, required
            - `items` MarqueeItem[], required
              - …
            - `speed` 'slow' | 'normal' | 'fast'
            - `direction` 'left' | 'right'
            - `pauseOnHover` boolean
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'callout', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` CalloutBlockProps, required
            - `heading` string
            - `body` string, required
            - `icon` string: Lucide icon id; defaults to variant icon.
            - `variant` 'info' | 'tip' | 'warning' | 'important': Visual style: info (blue), tip (green), warning (amber), important (red).
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'section', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` SectionBlockProps, required
            - `label` string, required: Display name in the editor block list.
            - `intent` string: Semantic hint when using optional AI assist on this block.
            - `prompt` string: Authoring prompt for generate/regenerate.
            - `html` string, required: Sanitized HTML fragment; Tailwind and theme CSS variables. No script/iframe/form/button.
            - `css` string: Optional scoped CSS; selectors start with .ai-custom-root (or .in-view .ai-custom-root).
            - `generationModel` string: Model id used for last generation (informational).
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'animatedHero', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` AnimatedHeroBlockProps, required
            - `variant` 'marketingCenteredGradient' | 'marketingCenteredSolid' | 'splitTextLeftImageRight' | 'splitImageLeftTextRight' | 'stackedCenteredWithWideImageBelow' | 'editorialStart' | 'photoFloatingCards' | 'splitCollagePhotos' | 'splitDeviceMockup' | 'centeredGlassOnPhoto' | 'editorialMinimalPill': Hero layout: marketingCenteredGradient (centered, default theme gradient band); marketingCenteredSolid (centered, default solid band); editorialStart (left-aligned band, default solid); split layouts (text vs featured image); stackedCenteredWithWideImageBelow (compact centered band + optional wide image below). Base fill is separate via backgroundFill.
            - `eyebrow` string: Optional short label above the headline.
            - `headline` string, required
            - `subheadline` string, required
            - `primaryCtaLabel` string, required
            - `primaryCtaHref` string, required
            - `primaryCtaIcon` string
            - `secondaryCtaLabel` string, required
            - `secondaryCtaHref` string, required
            - `secondaryCtaIcon` string
            - `secondaryCtaVariant` 'outline' | 'text': Secondary CTA: outline button vs text link.
            - `backgroundFill` 'themeGradientBand' | 'solidPageBackground' | 'photoWithThemeTint': Hero band base layer: themeGradientBand (optional blended background photo), solidPageBackground, or photoWithThemeTint (full-bleed cover + theme scrim). Omit for defaults (marketingCenteredSolid and editorialStart → solid page band; other layouts → theme gradient band). photoWithThemeTint without backgroundImageUrl falls back to those defaults.
            - `backgroundImageUrl` string
            - `featuredImageUrl` string
            - `featuredImageAlt` string
            - `backgroundImagePosition` 'center' | 'top' | 'bottom' | 'left' | 'right' | 'top left' | 'top right' | 'bottom left' | 'bottom right': Focal point for object-position / background position
            - `featuredImagePosition` 'center' | 'top' | 'bottom' | 'left' | 'right' | 'top left' | 'top right' | 'bottom left' | 'bottom right': Focal point for object-position / background position
            - `featuredImageFit` 'cover' | 'contain': CSS object-fit for images
            - `announcementText` string: Optional pill above eyebrow (e.g. funding news).
            - `announcementHref` string: Optional link for the announcement pill.
            - `headlineEmphasis` string: Substring of headline to emphasize (gradient or outlined box); first match only.
            - `headlineEmphasisStyle` 'accentGradientText' | 'softBadgeOutline' | 'thickUnderlineAccent' | 'translucentMarker' | 'solidAccentPill': How headlineEmphasis substring is styled: accentGradientText (gradient fill), softBadgeOutline, thickUnderlineAccent, translucentMarker (wash), solidAccentPill (filled pill).
            - `backgroundPattern` 'none' | 'subtleLineGrid' | 'subtleDotGrid' | 'diagonalFineLines' | 'radialCornerWash': Subtle overlay on the hero band (all layouts, including split text column).
            - `trustCaption` string: Small caption above trust logos (e.g. “Trusted by”).
            - `trustItems` HeroTrustItem[]: Optional trust row below CTAs.
              - …
            - `highlights` HeroHighlightItem[]: Up to three compact items between subheadline and CTAs (best with centered marketing layouts).
              - …
            - `featuredPresentation` 'banner' | 'mockup': For featured image below copy (centered marketing + stacked layouts): full-width banner vs card mockup with shadow.
            - `featuredTilt` boolean: When featuredPresentation is mockup, apply a subtle 3D tilt (respects reduced motion).
            - `copyEntrance` 'none' | 'fadeRise': Optional one-shot entrance animation for the hero copy stack (fade + slight rise). Respects reduced motion.
            - `floatingCards` HeroFloatingCard[]: Tilted floating UI cards for photoFloatingCards layout.
              - …
            - `collageImages` HeroCollageImage[]: Overlapping photos for splitCollagePhotos layout.
              - …
            - `ratingText` string: Star rating line e.g. "4.9/5 from 1,000+ users".
            - `socialProofQuote` string
            - `socialProofAvatars` string[]: Avatar image URLs for social proof row.
            - `checklistItems` string[]: Checklist bullets for splitDeviceMockup layout.
            - `marqueeWords` string[], required: Words shown in a scrolling strip below the hero.
            - `gradientMotion` 'aurora' | 'mesh' | 'pulse' | 'shimmer' | 'drift' | 'none'
            - `floatingShapes` boolean
            - `marqueeSpeed` 'slow' | 'normal' | 'fast': Horizontal speed of the optional marquee word strip.
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'logoCloud', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` LogoCloudBlockProps, required
            - `items` LogoCloudItem[], required
              - …
            - `style` 'row' | 'marquee' | 'grid3Rows' | 'infiniteScroll'
            - `grayscale` boolean
            - `speed` 'slow' | 'normal' | 'fast'
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'featureShowcase', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` FeatureShowcaseBlockProps, required
            - `heading` string
            - `items` FeatureShowcaseItem[], required
              - …
            - `stickyScroll` boolean
            - `mediaSide` 'left' | 'right' | 'alternate'
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'metricsBand', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` MetricsBandBlockProps, required
            - `heading` string
            - `items` MetricsBandItem[], required
              - …
            - `style` 'minimal' | 'card' | 'split'
            - `countUp` boolean
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'comparisonTable', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` ComparisonTableBlockProps, required
            - `heading` string
            - `columns` ComparisonTableColumn[], required
              - …
            - `rows` ComparisonTableRow[], required
              - …
            - `stickyHeader` boolean
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'faqAccordion', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` FaqAccordionBlockProps, required
            - `heading` string
            - `items` FaqAccordionItem[], required
              - …
            - `style` 'grouped' | 'flat' | 'twoColumn' | 'borderedCards'
            - `allowMultiple` boolean
            - `startOpenIndex` integer
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'gallery3d', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` Gallery3dBlockProps, required
            - `heading` string
            - `items` Gallery3dItem[], required
              - …
            - `effect` 'parallax' | 'tiltStack' | 'coverflow' | 'mosaic'
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'spotlightHero', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` SpotlightHeroBlockProps, required
            - `eyebrow` string
            - `headline` string, required
            - `headlineEmphasis` string
            - `subheadline` string, required
            - `primaryCtaLabel` string, required
            - `primaryCtaHref` string, required
            - `primaryCtaIcon` string
            - `secondaryCtaLabel` string
            - `secondaryCtaHref` string
            - `badges` SpotlightHeroBadge[]
              - …
            - `trustCaption` string
            - `glowColor` string
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'auroraHero', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` AuroraHeroBlockProps, required
            - `eyebrow` string
            - `headline` string, required
            - `headlineEmphasis` string
            - `subheadline` string, required
            - `primaryCtaLabel` string, required
            - `primaryCtaHref` string, required
            - `primaryCtaIcon` string
            - `secondaryCtaLabel` string
            - `secondaryCtaHref` string
            - `badges` SpotlightHeroBadge[]
              - …
            - `trustCaption` string
            - `intensity` 'subtle' | 'bold'
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'bento3dFeatures', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` Bento3dFeaturesBlockProps, required
            - `heading` string, required
            - `items` Bento3dItem[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'marqueeTestimonials', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` MarqueeTestimonialsBlockProps, required
            - `heading` string
            - `items` TestimonialsItem[], required
              - …
            - `speed` 'slow' | 'normal' | 'fast'
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'glowingPricing', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` GlowingPricingBlockProps, required
            - `heading` string, required
            - `subheading` string
            - `tiers` GlowingPricingTier[], required
              - …
            - `glowColor` string
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'processBeam', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` ProcessBeamBlockProps, required
            - `heading` string, required
            - `steps` ProcessBeamStep[], required
              - …
        - object
          - `id` string, required: Stable unique id (UUID recommended).
          - `type` 'featuresAccordion', required
          - `anchorId` string: Optional HTML id for in-page anchors (e.g. "pricing"). Navbar links can point to "#pricing" to scroll here.
          - `fullWidth` boolean: When true, section spans full viewport width on the published site (navbar/footer always full width).
          - `colorOverrides` BlockColorOverrides: Optional hex overrides applied as CSS variables on the block wrapper. primary/muted/accent tune `--primary`, `--muted`, `--accent` (and card/secondary when muted is set) within the section.
            - `background` string
            - `foreground` string
            - `primary` string
            - `primaryForeground` string
            - `muted` string
            - `mutedForeground` string
            - `accent` string
            - `accentForeground` string
            - `gradientFrom` string
            - `gradientTo` string
            - `heroText` string
            - `footerBg` string
            - `footerText` string
            - `footerMuted` string
          - `animation` BlockAnimation: Optional entrance animation for any block; scroll trigger uses intersection; load runs on paint.
            - `preset` 'none' | 'fadeUp' | 'fadeIn' | 'slideLeft' | 'slideRight' | 'zoomIn' | 'blurIn' | 'stagger', required
            - `trigger` 'scroll' | 'load'
            - `delayMs` integer
            - `durationMs` integer
            - `once` boolean
          - `frame` BlockFrame: Layout band for the block wrapper: width, surface, and vertical padding. Mirrors the editor frame controls.
            - `widthMode` 'narrow' | 'contained' | 'wide' | 'fullBleed'
            - `surfaceMode` 'theme' | 'mutedBand' | 'inverseBand' | 'accentBand'
            - `paddingMode` 'tight' | 'normal' | 'hero'
          - `props` FeaturesAccordionBlockProps, required
            - `heading` string, required
            - `subheading` string
            - `items` FeaturesAccordionItem[], required
              - …
            - `activeColor` string: Optional accent override.
    - `dynamic` SitePageDynamic: Makes this page a CMS index at `/{slug}` and detail pages at `/{slug}/{itemSlug}` using templateBlocks.
      - `collectionId` string, required
      - `templateBlocks` PageBlock[], required
        - union: Discriminated union: `type` selects which `*BlockProps` schema applies. Image URLs may be absolute; upload binaries via POST /api/v1/media/upload first.
          - object
- … truncated; see the full OpenAPI document linked below

## Response `201`

Created

- object
  - `subdomain` string, required
  - `url` string, required

## Other responses

- `400`: Validation or conflict error
- `401`: Missing or invalid credentials
- `409`: Validation or conflict error
- `503`: Validation or conflict error

---

[API](https://skmtc.dev/slatehut/apis/slatehut-api.md) · [All operations](https://skmtc.dev/slatehut/apis/slatehut-api/llms.txt) · [OpenAPI document](https://skmtc.dev/slatehut/apis/slatehut-api/revisions/32dae277550c?raw)
