# Large single customer quote — Section Design Reference

Schema: Design Details SECTION.md v3.2
Source: https://www.affinity.studio/
Website: Affinity
Section ID: 191801e8-d8ac-40ad-83d8-47ea5d8da1c3
Design Details page: https://designdetails.io/sections/affinity-studio--home--testimonials-191801e8
Status: deterministic evidence captured; editorial AI review pending

## Purpose

This is a testimonials section on the Home page. Use the attached crop and measured browser facts to reconstruct its composition. Do not infer unmeasured source values.

## Layout

1440×630px root; block

## Visual signature

bold, typographic, colourful, editorial, dark-theme, software-marketing treatment at 1440×630px. The crop spans 2447–3077px of a 9602px page.

## Components

- Navigation Bar
- Hero
- Logo Strip
- Feature Collection
- Testimonial Card
- Video Frame
- Primary Button
- Footer
- Interactive UI Demo Card
- Typographic Pull Quote

## Evidence note

The geometry, typography, colors, media, and animation parameters below come from saved HTML/CSS/browser evidence when present. Website-level roles are supplied separately. Editorial section judgment remains pending unless the MCP resolves this source ID to a promoted canonical record.

## Build blueprint v3.2

### Purpose and classification

- Canonical type: testimonials
- Source type: testimonials
- Structure: 1440×630px root; block
- Layout: 1440×630px root; block
- Styles: bold, typographic, colourful, editorial, dark-theme, software-marketing
- Components: Navigation Bar, Hero, Logo Strip, Feature Collection, Testimonial Card, Video Frame, Primary Button, Footer, Interactive UI Demo Card, Typographic Pull Quote
- Purpose: testimonials section from the Home page of Affinity.
- Visual signature: rgb(33, 29, 29) with 1440×630px root; block. Inspect the crop for image and content hierarchy.
- Place on the page: 4 of 11, after Feature collection (`affinity-studio:feature-interactive-ui`), before Feature collection (`affinity-studio:feature-cards-standard`)

### Crop and composition

- Crop: 1440×630px; aspect ratio 2.286:1
- Page bounds: 2447–3077px of 9602px
- Guidance: Preserve the documented hierarchy and relationships; exact measurements were not deterministically captured.

### Exact typography evidence

The sectionScale values were measured inside this crop. The siteRoles values explain how those faces function across the source website; they must not replace section measurements.

```json
{
  "sectionScale": [],
  "siteRoles": [
    {
      "role": "display",
      "size": "148px",
      "family": "Affinity Serif Variable",
      "source": "computed",
      "traits": "Regular",
      "weight": "700",
      "evidence": "font-5: computed CSS at 1440×1000; AI role: 148px Affinity Serif Variable used for massive hero headlines.",
      "sampleId": "font-5",
      "confidence": 0.95,
      "lineHeight": "153.9px",
      "letterSpacing": "normal"
    },
    {
      "role": "heading",
      "size": "80px",
      "family": "Affinity Serif Variable",
      "source": "computed",
      "traits": "Regular",
      "weight": "700",
      "evidence": "font-2: computed CSS at 1440×1000; AI role: 80px Affinity Serif Variable used for major section titles.",
      "sampleId": "font-2",
      "confidence": 0.9,
      "lineHeight": "78.4px",
      "letterSpacing": "normal"
    },
    {
      "role": "body",
      "size": "24px",
      "family": "Canva Sans",
      "source": "computed",
      "traits": "Regular",
      "weight": "401",
      "evidence": "font-9: computed CSS at 1440×1000; AI role: 24px Canva Sans used for introductory and prominent paragraph text.",
      "sampleId": "font-9",
      "confidence": 0.9,
      "lineHeight": "33.6px",
      "letterSpacing": "normal"
    }
  ]
}
```

### Exact color evidence

The section samples record where each computed value was used. Functional roles come from the website-level classifier and remain separate.

```json
{
  "sectionUsage": [],
  "functionalPalette": [
    {
      "hex": "#000000",
      "name": "canvas",
      "role": "canvas",
      "source": "computed",
      "evidence": "color-1: computed rgb(0, 0, 0); AI role: #000000 used as the primary background for the page.",
      "sampleId": "color-1",
      "confidence": 0.95
    },
    {
      "hex": "#FFFFFF",
      "name": "text",
      "role": "text",
      "source": "computed",
      "evidence": "color-3: computed rgb(255, 255, 255); AI role: #FFFFFF used extensively for primary headings and body text.",
      "sampleId": "color-3",
      "confidence": 0.95
    },
    {
      "hex": "#A7F175",
      "name": "primary action",
      "role": "primary-action",
      "source": "computed",
      "evidence": "color-14: computed rgb(167, 241, 117); AI role: #A7F175 used for primary 'Get Affinity' call-to-action buttons.",
      "sampleId": "color-14",
      "confidence": 0.95
    },
    {
      "hex": "#211D1D",
      "name": "surface",
      "role": "surface",
      "source": "computed",
      "evidence": "color-2: computed rgb(33, 29, 29); AI role: #211D1D used as a background for feature sections and nested surface areas.",
      "sampleId": "color-2",
      "confidence": 0.85
    },
    {
      "hex": "#C4C4C4",
      "name": "muted text",
      "role": "muted-text",
      "source": "computed",
      "evidence": "color-11: computed rgb(196, 196, 196); AI role: #C4C4C4 used for secondary descriptions and less prominent text.",
      "sampleId": "color-11",
      "confidence": 0.8
    },
    {
      "hex": "#F075F1",
      "name": "accent",
      "role": "accent",
      "source": "computed",
      "evidence": "color-26: computed rgb(240, 117, 241); AI role: #F075F1 used as a vibrant accent color for specific UI states and badges.",
      "sampleId": "color-26",
      "confidence": 0.75
    },
    {
      "hex": "#373434",
      "name": "border",
      "role": "border",
      "source": "computed",
      "evidence": "color-20: computed rgb(55, 52, 52); AI role: #373434 used for subtle borders around UI toggle elements.",
      "sampleId": "color-20",
      "confidence": 0.7
    }
  ]
}
```

### Design tokens

```json
{
  "radius": "Feature cards and media containers use moderately large border radii (approx. 16px-24px). Buttons and tags utilize fully rounded pill shapes.",
  "density": "Low visual density; the layout embraces negative space to emphasize high-impact visuals and oversized text.",
  "evidence": "CSS values confirm #000000 backgrounds paired with white text. Buttons are shaped with border-radius and utilize #A7F175. Typography sizes reach 148px.",
  "borderStyle": "Mostly borderless design relying on background color contrasts. When borders are used (e.g., dark cards, footer separators), they are thin (1px) and subtle.",
  "buttonStyle": "Solid fill primary buttons with fully rounded corners, contrasting sharply with the dark background. Secondary buttons use muted or semi-transparent fills.",
  "cornerStyle": "Distinctively soft and rounded, applied consistently across cards, imagery, and interactive elements.",
  "contentWidth": "Text content is typically constrained to readable column widths (approx. 600-800px), while media cards and marquees often break the grid, extending much wider or full-bleed.",
  "spacingRhythm": "Generous vertical spacing (macro rhythm) separates distinct feature sections, allowing the large typography and media to breathe. Micro rhythm within cards is tighter to group related text and UI elements."
}
```

### Reconstruction specification

This is the implementation contract for the captured desktop viewport. Prefer section-specific facts here over general website descriptions.

- Root: 1440×630px; block; padding {"top":"0px","right":"0px","bottom":"0px","left":"0px"}; gap normal; background rgb(33, 29, 29); radius 0px.
- Representative content widths: 1149, 249px.
- Layout containers: 0; cards/surfaces: 0; media elements: 3; browser animations: 0.

#### Container, grid, and spacing

```json
{
  "viewport": {
    "width": 1440,
    "captureBounds": {
      "top": 2447,
      "bottom": 3077,
      "pageHeight": 9602
    }
  },
  "container": {
    "size": "1440×630px",
    "position": "x 0px, y 2447px",
    "display": "block",
    "positionMode": "static",
    "padding": {
      "top": "0px",
      "right": "0px",
      "bottom": "0px",
      "left": "0px"
    },
    "margin": {
      "top": "0px",
      "right": "0px",
      "bottom": "0px",
      "left": "0px"
    },
    "gap": "normal",
    "columns": "not captured",
    "background": "rgb(33, 29, 29)",
    "radius": "0px",
    "border": "0px none rgb(255, 255, 255)",
    "shadow": "none",
    "overflow": "hidden"
  },
  "spacing": {
    "observedGapsPx": [],
    "representativeContentWidthsPx": [
      1149,
      249
    ]
  },
  "columns": []
}
```

#### Cards and surfaces

```json
{
  "cards": [],
  "surfaces": {
    "radii": [
      "9999px"
    ],
    "borders": [],
    "shadows": [
      "rgba(255, 255, 255, 0.15) 0px 0px 0px 1px inset"
    ]
  }
}
```

#### Media treatment

```json
[
  {
    "element": "picture · _6a1xNA _V8FEA M8w_8w _1wYfzQ",
    "size": "75×40px",
    "position": "x 1289px, y 2918px",
    "aspectRatio": 1.9,
    "objectFit": "fill",
    "objectPosition": "50% 50%",
    "radius": "0px",
    "overflow": "visible",
    "source": "source not captured"
  },
  {
    "element": "img · tExA1Q",
    "size": "75×40px",
    "position": "x 1289px, y 2918px",
    "aspectRatio": 1.9,
    "objectFit": "contain",
    "objectPosition": "50% 50%",
    "radius": "0px",
    "overflow": "clip",
    "source": "https://www.affinity.studio/cdn-cgi/image/width=1600,fit=scale-down,format=auto/https://content-management-files.affinity.studio/2571649b-49cd-4320-ab85-c88cf91ac6a3/hey_white.svg"
  },
  {
    "element": "svg · svg",
    "size": "60×48px",
    "position": "x 76px, y 2567px",
    "aspectRatio": 1.3,
    "objectFit": "fill",
    "objectPosition": "50% 50%",
    "radius": "0px",
    "overflow": "hidden",
    "source": "source not captured"
  }
]
```

#### Browser-exposed animation parameters

```json
[]
```

### Measured geometry, surfaces, media, and animation

These raw values come from the saved element map and computed styles. Empty arrays mean the fact was not captured; they are not permission to invent source values.

```json
{
  "schema": "little-details-section-measurements-v1",
  "source": "saved DOM/CSS element and animation maps",
  "capturedAt": "2026-09-21T04:26:18.868Z",
  "viewportWidth": 1440,
  "bounds": {
    "top": 2447,
    "bottom": 3077,
    "pageHeight": 9602
  },
  "root": {
    "id": "ld-411",
    "tag": "section",
    "role": null,
    "label": "Affinity lets us focus on the work. Having photo editing, vector, and layout in one app means less s",
    "rect": {
      "x": 0,
      "y": 2447,
      "width": 1440,
      "height": 630
    },
    "display": "block",
    "position": "static",
    "padding": {
      "top": "0px",
      "right": "0px",
      "bottom": "0px",
      "left": "0px"
    },
    "margin": {
      "top": "0px",
      "right": "0px",
      "bottom": "0px",
      "left": "0px"
    },
    "gap": "normal",
    "columns": null,
    "background": "rgb(33, 29, 29)",
    "radius": "0px",
    "border": "0px none rgb(255, 255, 255)",
    "shadow": "none",
    "overflow": "hidden"
  },
  "spacing": {
    "gapsPx": [],
    "representativeContentWidthsPx": [
      1149,
      249
    ]
  },
  "columns": [],
  "cards": [],
  "surfaces": {
    "radii": [
      "9999px"
    ],
    "borders": [],
    "shadows": [
      "rgba(255, 255, 255, 0.15) 0px 0px 0px 1px inset"
    ]
  },
  "media": [
    {
      "id": "ld-438",
      "tag": "picture",
      "role": null,
      "label": "_6a1xNA _V8FEA M8w_8w _1wYfzQ",
      "rect": {
        "x": 1289,
        "y": 2918,
        "width": 75,
        "height": 40
      },
      "aspectRatio": 1.9,
      "objectFit": "fill",
      "objectPosition": "50% 50%",
      "radius": "0px",
      "overflow": "visible",
      "media": null
    },
    {
      "id": "ld-440",
      "tag": "img",
      "role": null,
      "label": "tExA1Q",
      "rect": {
        "x": 1289,
        "y": 2918,
        "width": 75,
        "height": 40
      },
      "aspectRatio": 1.9,
      "objectFit": "contain",
      "objectPosition": "50% 50%",
      "radius": "0px",
      "overflow": "clip",
      "media": {
        "src": "https://www.affinity.studio/cdn-cgi/image/width=1600,fit=scale-down,format=auto/https://content-management-files.affinity.studio/2571649b-49cd-4320-ab85-c88cf91ac6a3/hey_white.svg",
        "naturalWidth": 56,
        "naturalHeight": 30,
        "alt": "Hey Studio logo"
      }
    },
    {
      "id": "ld-422",
      "tag": "svg",
      "role": null,
      "label": "svg",
      "rect": {
        "x": 76,
        "y": 2567,
        "width": 60,
        "height": 48
      },
      "aspectRatio": 1.3,
      "objectFit": "fill",
      "objectPosition": "50% 50%",
      "radius": "0px",
      "overflow": "hidden",
      "media": null
    }
  ],
  "animations": [],
  "coverage": {
    "elementsInSection": 8,
    "cards": 0,
    "media": 3,
    "animations": 0
  },
  "limitations": [
    "Values describe the captured desktop viewport and may change at other breakpoints.",
    "Transforms, sticky layers, and virtualized content can make the inferred section root approximate.",
    "Animations include browser-exposed Web Animations API state; CSS or script motion that was inactive at capture time may be absent."
  ]
}
```

### Observed motion

No timestamped authored motion is attached. Use only restrained baseline transitions.

The browser animation records above are deterministic parameters captured from active browser animations. The timestamped observations describe what Gemini saw in the video. Treat them as complementary evidence. When either source is empty or they conflict, state the uncertainty instead of inventing timing or easing.

### Responsive contract

- Measured viewport: 1440px wide.
- Mobile/tablet values: not measured by this section evidence unless a separate capture is explicitly listed.
- Preserve hierarchy and sequence; collapse simultaneous columns only where needed, maintain media aspect ratios, and verify touch targets and text wrapping at target breakpoints.

### Structure versus visual skin

- Preserve: content hierarchy, layout relationships, section rhythm, interaction purpose.
- Adapt: brand colors, font family, copy, imagery, icons, decorative details.
- Rule: Preserve the observed design logic while creating original branding, copy, assets, and implementation details.

### Adaptation and dependencies

- Effort: Not assessed
- What transfers: Documented hierarchy and composition
- Dependencies: None recorded
- Guidance: Adapt the pattern to the new product and content.

### Evidence readiness

- Coverage: 6/7
- Can build: Yes
- Missing facts: section-specific computed typography and color samples; timestamped authored motion
- Warning: Buildable with adaptations for these unsupported facts: section-specific computed typography and color samples; timestamped authored motion.

### Agent implementation prompt

Create an original testimonials section inspired by the design evidence titled “Large single customer quote”.

Purpose: testimonials section from the Home page of Affinity.

Structure: 1440×630px root; block. Source layout label: 1440×630px root; block. Preserve the documented hierarchy and relationships; exact measurements were not deterministically captured.

Visual signature to preserve at the pattern level: rgb(33, 29, 29) with 1440×630px root; block. Inspect the crop for image and content hierarchy.

Components: Navigation Bar, Hero, Logo Strip, Feature Collection, Testimonial Card, Video Frame, Primary Button, Footer, Interactive UI Demo Card, Typographic Pull Quote.

Style direction: bold, typographic, colourful, editorial, dark-theme, software-marketing.

Observed crop: 1440×630px (2.286:1). Treat this as evidence of composition, not a mandatory output size.

Typography evidence: {"role":"display","size":"148px","family":"Affinity Serif Variable","source":"computed","traits":"Regular","weight":"700","evidence":"font-5: computed CSS at 1440×1000; AI role: 148px Affinity Serif Variable used for massive hero headlines.","sampleId":"font-5","confidence":0.95,"lineHeight":"153.9px","letterSpacing":"normal"} {"role":"heading","size":"80px","family":"Affinity Serif Variable","source":"computed","traits":"Regular","weight":"700","evidence":"font-2: computed CSS at 1440×1000; AI role: 80px Affinity Serif Variable used for major section titles.","sampleId":"font-2","confidence":0.9,"lineHeight":"78.4px","letterSpacing":"normal"} {"role":"body","size":"24px","family":"Canva Sans","source":"computed","traits":"Regular","weight":"401","evidence":"font-9: computed CSS at 1440×1000; AI role: 24px Canva Sans used for introductory and prominent paragraph text.","sampleId":"font-9","confidence":0.9,"lineHeight":"33.6px","letterSpacing":"normal"}

Color evidence: {"hex":"#000000","name":"canvas","role":"canvas","source":"computed","evidence":"color-1: computed rgb(0, 0, 0); AI role: #000000 used as the primary background for the page.","sampleId":"color-1","confidence":0.95} {"hex":"#FFFFFF","name":"text","role":"text","source":"computed","evidence":"color-3: computed rgb(255, 255, 255); AI role: #FFFFFF used extensively for primary headings and body text.","sampleId":"color-3","confidence":0.95} {"hex":"#A7F175","name":"primary action","role":"primary-action","source":"computed","evidence":"color-14: computed rgb(167, 241, 117); AI role: #A7F175 used for primary 'Get Affinity' call-to-action buttons.","sampleId":"color-14","confidence":0.95} {"hex":"#211D1D","name":"surface","role":"surface","source":"computed","evidence":"color-2: computed rgb(33, 29, 29); AI role: #211D1D used as a background for feature sections and nested surface areas.","sampleId":"color-2","confidence":0.85} {"hex":"#C4C4C4","name":"muted text","role":"muted-text","source":"computed","evidence":"color-11: computed rgb(196, 196, 196); AI role: #C4C4C4 used for secondary descriptions and less prominent text.","sampleId":"color-11","confidence":0.8} {"hex":"#F075F1","name":"accent","role":"accent","source":"computed","evidence":"color-26: computed rgb(240, 117, 241); AI role: #F075F1 used as a vibrant accent color for specific UI states and badges.","sampleId":"color-26","confidence":0.75} {"hex":"#373434","name":"border","role":"border","source":"computed","evidence":"color-20: computed rgb(55, 52, 52); AI role: #373434 used for subtle borders around UI toggle elements.","sampleId":"color-20","confidence":0.7}

No section-bounded typography samples were measured.

No section-bounded color samples were measured.

Exact section measurements from the saved element map: root {"rect":{"x":0,"y":2447,"width":1440,"height":630},"padding":{"top":"0px","right":"0px","bottom":"0px","left":"0px"},"gap":"normal","columns":null,"overflow":"hidden"}; spacing {"gapsPx":[],"representativeContentWidthsPx":[1149,249]}; surfaces {"radii":["9999px"],"borders":[],"shadows":["rgba(255, 255, 255, 0.15) 0px 0px 0px 1px inset"]}; media [{"tag":"picture","rect":{"x":1289,"y":2918,"width":75,"height":40},"aspectRatio":1.9,"objectFit":"fill","objectPosition":"50% 50%","radius":"0px"},{"tag":"img","rect":{"x":1289,"y":2918,"width":75,"height":40},"aspectRatio":1.9,"objectFit":"contain","objectPosition":"50% 50%","radius":"0px"},{"tag":"svg","rect":{"x":76,"y":2567,"width":60,"height":48},"aspectRatio":1.3,"objectFit":"fill","objectPosition":"50% 50%","radius":"0px"}]

Do not invent signature motion. Use only restrained baseline transitions if the product needs them.

Transfer the documented hierarchy and composition rather than source copy or assets.

No explicit dependencies were recorded.

Adapt the pattern to the new product and content.

Use new copy, imagery, branding, and implementation details. Do not reproduce the source website or its proprietary assets.
