---
title: "Get one block"
method: GET
path: "/api/v1/sites/{subdomain}/pages/{pagePath}/blocks/{blockId}"
tags: ["sites"]
---

# Get one block

`GET /api/v1/sites/{subdomain}/pages/{pagePath}/blocks/{blockId}`

## Request

- Base URL: `https://slatehut.com`
- URL: `https://slatehut.com/api/v1/sites/{subdomain}/pages/{pagePath}/blocks/{blockId}`
- Auth: HTTP bearer

## Response `200`

- object
  - `block` union, required: 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
          - `label` string, required
          - `href` string, 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.
          - `label` string, required: Accessible name; used as alt text when imageUrl is set.
          - `imageUrl` string: Optional logo image URL.
        - `highlights` HeroHighlightItem[]: Up to three compact items between subheadline and CTAs (best with centered marketing layouts).
          - `title` string, required
          - `description` string, required
          - `icon` string: Optional Lucide icon id.
        - `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.
          - `title` string, required
          - `meta` string
          - `accentColor` string
          - `actionLabel` string
          - `rotationDeg` number
        - `collageImages` HeroCollageImage[]: Overlapping photos for splitCollagePhotos layout.
          - `url` string, required
          - `alt` string
          - `handle` string
          - `rotationDeg` number
        - `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
          - `title` string, required
          - `description` string, required
          - `icon` string: Optional Lucide icon id (grid layout).
          - `imageUrl` string: Optional image URL (alternating layout).
          - `imageAlt` string: Alt text for item image.
    - 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
          - `url` string, required
          - `alt` string, required
          - `caption` string
          - `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` '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
          - `imageUrl` string
          - `imageAlt` string
          - `heading` string, required
          - `description` string, required
          - `linkHref` string
          - `linkLabel` string
          - `linkIcon` string
          - `anchorId` string
    - 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.
          - `heading` string
          - `description` string
          - `image` string
        - `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
          - `enabled` boolean, required
          - `pageSize` integer, required
    - 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
          - `value` string, required
          - `label` string, 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
          - `quote` string, required
          - `author` string, required
          - `role` string, required
          - `imageUrl` string
          - `company` string
    - 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
          - `title` string, required
          - `description` string, required
          - `icon` string: Optional Lucide icon id.
    - 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
          - `title` string, required
          - `description` string, required
          - `date` string
          - `badge` string
    - 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
          - `label` string, required
          - `leftValue` string, required
          - `rightValue` string, 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
          - `title` string, required
          - `description` string, required
          - `span` '1x1' | '2x1' | '1x2' | '2x2', required
          - `imageUrl` string
          - `imageAlt` string
    - 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
          - `question` string, required
          - `answer` string, 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.
          - `name` string, required: Accessible label; shown when imageUrl is empty.
          - `imageUrl` string: Optional logo image URL (e.g. from media upload).
          - `domain` string: Optional site domain (e.g. acme.com) for favicon-based logo when imageUrl is empty.
    - 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
          - `name` string, required
          - `price` string, required
          - `period` string, required
          - `features` string[], required
          - `buttonLabel` string, required
          - `buttonHref` string, required
          - `buttonIcon` string
          - `highlighted` boolean
    - 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[]
          - `label` string, required
          - `href` string, required
        - `columns` FooterColumn[]
          - `title` string, required
          - `links` FooterLink[], required
            - `label` string, required
            - `href` string, required
        - `socialLinks` SocialLink[]
          - `platform` 'twitter' | 'github' | 'linkedin' | 'instagram' | 'youtube' | 'facebook' | 'website', required
          - `href` string, required
    - 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
          - `id` string, required
          - `type` 'text' | 'email' | 'number' | 'textarea' | 'select' | 'checkbox' | 'date' | 'phone' | 'url', required
          - `label` string, required
          - `placeholder` string
          - `required` boolean
          - `options` string[]
        - `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
          - `name` string, required
          - `role` string, required
          - `bio` string
          - `imageUrl` string
          - `socials` TeamMemberSocial[]
            - `platform` 'twitter' | 'linkedin' | 'github' | 'website', required
            - `href` string, 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
          - `text` string, required
          - `icon` string: Lucide icon id (optional).
        - `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.
          - `label` string, required: Accessible name; used as alt text when imageUrl is set.
          - `imageUrl` string: Optional logo image URL.
        - `highlights` HeroHighlightItem[]: Up to three compact items between subheadline and CTAs (best with centered marketing layouts).
          - `title` string, required
          - `description` string, required
          - `icon` string: Optional Lucide icon id.
        - `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.
          - `title` string, required
          - `meta` string
          - `accentColor` string
          - `actionLabel` string
          - `rotationDeg` number
        - `collageImages` HeroCollageImage[]: Overlapping photos for splitCollagePhotos layout.
          - `url` string, required
          - `alt` string
          - `handle` string
          - `rotationDeg` number
        - `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
          - `imageUrl` string, required
          - `label` string
          - `domain` string
        - `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
          - `eyebrow` string
          - `title` string, required
          - `body` string, required
          - `imageUrl` string, required
          - `imageAlt` string
          - `bullets` string[]
        - `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
          - `value` number, required
          - `suffix` string
          - `prefix` string
          - `label` string, required
          - `decimals` integer
        - `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
          - `title` string, required
          - `highlight` boolean
          - `ctaLabel` string
          - `ctaHref` string
          - `price` string
        - `rows` ComparisonTableRow[], required
          - `feature` string, required
          - `values` union[], required
            - union
              - …
          - `tooltip` string
        - `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
          - `question` string, required
          - `answer` string, 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
          - `imageUrl` string, required
          - `caption` string
          - `alt` string
        - `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[]
          - `label` string, required
        - `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[]
          - `label` string, required
        - `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
          - `title` string, required
          - `description` string, required
          - `span` 'normal' | 'wide' | 'tall'
          - `icon` string
          - `imageUrl` string
          - `accent` 'primary' | 'muted' | 'inverse'
    - 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.
- … truncated; see the full OpenAPI document linked below

## Other responses

- `400`: Validation or conflict error
- `401`: Missing or invalid credentials
- `403`: Not allowed for this resource
- `404`: Resource not found

---

[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)
