# Thomas Sanlis Customer Testimonial — Section Design Reference

Schema: Design Details SECTION.md v3.2
Source: https://getfernand.com/
Website: Fernand
Section ID: 01a9d009-a420-4561-80ed-e3276dcbd4c3
Status: deterministic evidence captured; editorial AI review pending

## Purpose

This is a testimonial-card 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×293px root; block

## Visual signature

soft, minimal, corporate, saas-interface treatment at 1440×357px. The crop spans 9771–10128px of a 14377px page.

## Components

- Navigation Bar
- Hero
- Product UI
- Feature Card
- Feature Collection
- Testimonial Card
- Logo Strip
- Floating Product Card
- Primary Button
- Ghost Button
- Outline Button
- Footer
- Tag
- Mockup Driven Storytelling
- Sticky CTA Widget

## 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: testimonial card
- Source type: testimonial-card
- Structure: 1440×293px root; block
- Layout: 1440×293px root; block
- Styles: soft, minimal, corporate, saas-interface
- Components: Navigation Bar, Hero, Product UI, Feature Card, Feature Collection, Testimonial Card, Logo Strip, Floating Product Card, Primary Button, Ghost Button, Outline Button, Footer, Tag, Mockup Driven Storytelling, Sticky CTA Widget
- Purpose: testimonial-card section from the Home page of Fernand.
- Visual signature: rgba(0, 0, 0, 0) with 1440×293px root; block. Inspect the crop for image and content hierarchy.

### Crop and composition

- Crop: 1440×357px; aspect ratio 4.034:1
- Page bounds: 9771–10128px of 14377px
- 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": [
    {
      "role": "card/subheading",
      "family": "Inter",
      "stack": "Inter, system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\"",
      "size": "22px",
      "weight": "400",
      "lineHeight": "34.1px",
      "letterSpacing": "normal",
      "sample": "\"Fernand is the bedrock of my solo business. It's the reason I'm able to stay solo and move quick wh",
      "element": "p",
      "occurrences": 2,
      "sourceId": "font-11"
    },
    {
      "role": "UI/supporting text",
      "family": "Inter",
      "stack": "Inter, system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\"",
      "size": "15px",
      "weight": "600",
      "lineHeight": "15px",
      "letterSpacing": "normal",
      "sample": "Jack Friks",
      "element": "strong",
      "occurrences": 2,
      "sourceId": "font-28"
    }
  ],
  "siteRoles": [
    {
      "role": "display",
      "size": "38px",
      "family": "Inter",
      "source": "computed",
      "traits": "Regular",
      "weight": "400",
      "evidence": "font-5: computed CSS at 1440×1000; AI role: 38px Inter used for the main hero headline 'The free customer support platform...'.",
      "sampleId": "font-5",
      "confidence": 0.95,
      "lineHeight": "48px",
      "letterSpacing": "normal"
    },
    {
      "role": "heading",
      "size": "30px",
      "family": "Inter",
      "source": "computed",
      "traits": "Regular",
      "weight": "400",
      "evidence": "font-3: computed CSS at 1440×1000; AI role: 30px Inter used for section headings like 'Consolidate all your support channels...'.",
      "sampleId": "font-3",
      "confidence": 0.9,
      "lineHeight": "38px",
      "letterSpacing": "normal"
    },
    {
      "role": "body",
      "size": "16px",
      "family": "Inter",
      "source": "computed",
      "traits": "Regular",
      "weight": "400",
      "evidence": "font-7: computed CSS at 1440×1000; AI role: 16px Inter used for standard paragraph text describing features.",
      "sampleId": "font-7",
      "confidence": 0.9,
      "lineHeight": "26px",
      "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": "#1A2035",
      "name": "text",
      "role": "text",
      "source": "computed",
      "evidence": "color-5: computed rgb(26, 32, 53); AI role: #1A2035 used for primary headings and high-contrast text.",
      "sampleId": "color-5",
      "confidence": 0.95
    },
    {
      "hex": "#FFFFFF",
      "name": "canvas",
      "role": "canvas",
      "source": "computed",
      "evidence": "color-1: computed rgb(255, 255, 255); AI role: White used extensively for page backgrounds and card backgrounds.",
      "sampleId": "color-1",
      "confidence": 0.9
    },
    {
      "hex": "#717583",
      "name": "muted text",
      "role": "muted-text",
      "source": "computed",
      "evidence": "color-6: computed rgb(113, 117, 131); AI role: #717583 used for secondary text and descriptions.",
      "sampleId": "color-6",
      "confidence": 0.9
    },
    {
      "hex": "#00A0FF",
      "name": "primary action",
      "role": "primary-action",
      "source": "computed",
      "evidence": "color-24: computed rgb(0, 160, 255); AI role: #00A0FF used for primary buttons ('Start for free').",
      "sampleId": "color-24",
      "confidence": 0.9
    },
    {
      "hex": "#F7FAFC",
      "name": "surface",
      "role": "surface",
      "source": "computed",
      "evidence": "color-2: computed rgb(247, 250, 252); AI role: #F7FAFC used as a subtle off-white background for specific sections to differentiate them from the main canvas.",
      "sampleId": "color-2",
      "confidence": 0.85
    },
    {
      "hex": "#151618",
      "name": "surface",
      "role": "surface",
      "source": "computed",
      "evidence": "color-7: computed rgb(21, 22, 24); AI role: #151618 used for the dark footer background.",
      "sampleId": "color-7",
      "confidence": 0.8
    }
  ]
}
```

### Design tokens

```json
{
  "radius": "Large radii on UI mockups and smaller, but noticeable, radii on buttons and smaller cards.",
  "density": "Low density; the design prioritizes whitespace and clear separation of elements over packing information tightly.",
  "evidence": "Observation of layout structure in screenshots, consistent application of border-radius in UI elements, and distinct button variations.",
  "borderStyle": "Subtle, light borders (e.g., color-8, color-35) used to define cards and form elements without adding visual noise.",
  "buttonStyle": "Solid fill for primary actions, outline or subtle backgrounds for secondary actions, often with rounded corners.",
  "cornerStyle": "Consistent use of rounded corners on buttons, cards, and product UI mockups.",
  "contentWidth": "Centered content with a constrained maximum width to ensure readability, though background images/gradients often bleed to the edges.",
  "spacingRhythm": "Generous spacing with significant whitespace between major sections, contributing to the 'calm' aesthetic."
}
```

### Reconstruction specification

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

- Root: 1440×293px; block; padding {"top":"0px","right":"0px","bottom":"0px","left":"0px"}; gap normal; background rgba(0, 0, 0, 0); radius 0px.
- Observed gaps: 4px.
- Representative content widths: 720px.
- Layout containers: 1; cards/surfaces: 0; media elements: 1; browser animations: 0.

#### Container, grid, and spacing

```json
{
  "viewport": {
    "width": 1440,
    "captureBounds": {
      "top": 9771,
      "bottom": 10128,
      "pageHeight": 14377
    }
  },
  "container": {
    "size": "1440×293px",
    "position": "x 0px, y 9798px",
    "display": "block",
    "positionMode": "relative",
    "padding": {
      "top": "0px",
      "right": "0px",
      "bottom": "0px",
      "left": "0px"
    },
    "margin": {
      "top": "0px",
      "right": "0px",
      "bottom": "120px",
      "left": "0px"
    },
    "gap": "normal",
    "columns": "not captured",
    "background": "rgba(0, 0, 0, 0)",
    "radius": "0px",
    "border": "0px none rgb(19, 30, 64)",
    "shadow": "none",
    "overflow": "visible"
  },
  "spacing": {
    "observedGapsPx": [
      4
    ],
    "representativeContentWidthsPx": [
      720
    ]
  },
  "columns": [
    {
      "element": "footer · Thomas SanlisFounder of Uneed",
      "size": "720×95px",
      "position": "x 360px, y 9996px",
      "display": "flex",
      "template": "not captured",
      "direction": "column",
      "gap": "4px"
    }
  ]
}
```

#### Cards and surfaces

```json
{
  "cards": [],
  "surfaces": {
    "radii": [
      "50%"
    ],
    "borders": [],
    "shadows": []
  }
}
```

#### Media treatment

```json
[
  {
    "element": "img · testimonial__avatar",
    "size": "48×48px",
    "position": "x 696px, y 9996px",
    "aspectRatio": 1,
    "objectFit": "cover",
    "objectPosition": "50% 50%",
    "radius": "50%",
    "overflow": "clip",
    "source": "https://getfernand.com/images/customers/avatars/avatar-thomas-sanlis-uneed-customer-fernand.png"
  }
]
```

#### 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-10-16T21:18:07.710Z",
  "viewportWidth": 1440,
  "bounds": {
    "top": 9771,
    "bottom": 10128,
    "pageHeight": 14377
  },
  "root": {
    "id": "ld-764",
    "tag": "section",
    "role": null,
    "label": "\"I used to feel overwhelmed handling support. I either ignored messages, or I got sucked into endles",
    "rect": {
      "x": 0,
      "y": 9798,
      "width": 1440,
      "height": 293
    },
    "display": "block",
    "position": "relative",
    "padding": {
      "top": "0px",
      "right": "0px",
      "bottom": "0px",
      "left": "0px"
    },
    "margin": {
      "top": "0px",
      "right": "0px",
      "bottom": "120px",
      "left": "0px"
    },
    "gap": "normal",
    "columns": null,
    "background": "rgba(0, 0, 0, 0)",
    "radius": "0px",
    "border": "0px none rgb(19, 30, 64)",
    "shadow": "none",
    "overflow": "visible"
  },
  "spacing": {
    "gapsPx": [
      4
    ],
    "representativeContentWidthsPx": [
      720
    ]
  },
  "columns": [
    {
      "id": "ld-768",
      "tag": "footer",
      "role": null,
      "label": "Thomas SanlisFounder of Uneed",
      "rect": {
        "x": 360,
        "y": 9996,
        "width": 720,
        "height": 95
      },
      "display": "flex",
      "columns": null,
      "direction": "column",
      "gap": "4px"
    }
  ],
  "cards": [],
  "surfaces": {
    "radii": [
      "50%"
    ],
    "borders": [],
    "shadows": []
  },
  "media": [
    {
      "id": "ld-769",
      "tag": "img",
      "role": null,
      "label": "testimonial__avatar",
      "rect": {
        "x": 696,
        "y": 9996,
        "width": 48,
        "height": 48
      },
      "aspectRatio": 1,
      "objectFit": "cover",
      "objectPosition": "50% 50%",
      "radius": "50%",
      "overflow": "clip",
      "media": {
        "src": "https://getfernand.com/images/customers/avatars/avatar-thomas-sanlis-uneed-customer-fernand.png",
        "naturalWidth": 64,
        "naturalHeight": 64,
        "alt": "Thomas Sanlis"
      }
    }
  ],
  "animations": [],
  "coverage": {
    "elementsInSection": 6,
    "cards": 0,
    "media": 1,
    "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: 7/7
- Can build: Yes
- Missing facts: timestamped authored motion
- Warning: Buildable with adaptations for these unsupported facts: timestamped authored motion.

### Agent implementation prompt

Create an original testimonial card section inspired by the design evidence titled “Thomas Sanlis Customer Testimonial”.

Purpose: testimonial-card section from the Home page of Fernand.

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

Visual signature to preserve at the pattern level: rgba(0, 0, 0, 0) with 1440×293px root; block. Inspect the crop for image and content hierarchy.

Components: Navigation Bar, Hero, Product UI, Feature Card, Feature Collection, Testimonial Card, Logo Strip, Floating Product Card, Primary Button, Ghost Button, Outline Button, Footer, Tag, Mockup Driven Storytelling, Sticky CTA Widget.

Style direction: soft, minimal, corporate, saas-interface.

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

Typography evidence: {"role":"display","size":"38px","family":"Inter","source":"computed","traits":"Regular","weight":"400","evidence":"font-5: computed CSS at 1440×1000; AI role: 38px Inter used for the main hero headline 'The free customer support platform...'.","sampleId":"font-5","confidence":0.95,"lineHeight":"48px","letterSpacing":"normal"} {"role":"heading","size":"30px","family":"Inter","source":"computed","traits":"Regular","weight":"400","evidence":"font-3: computed CSS at 1440×1000; AI role: 30px Inter used for section headings like 'Consolidate all your support channels...'.","sampleId":"font-3","confidence":0.9,"lineHeight":"38px","letterSpacing":"normal"} {"role":"body","size":"16px","family":"Inter","source":"computed","traits":"Regular","weight":"400","evidence":"font-7: computed CSS at 1440×1000; AI role: 16px Inter used for standard paragraph text describing features.","sampleId":"font-7","confidence":0.9,"lineHeight":"26px","letterSpacing":"normal"}

Color evidence: {"hex":"#1A2035","name":"text","role":"text","source":"computed","evidence":"color-5: computed rgb(26, 32, 53); AI role: #1A2035 used for primary headings and high-contrast text.","sampleId":"color-5","confidence":0.95} {"hex":"#FFFFFF","name":"canvas","role":"canvas","source":"computed","evidence":"color-1: computed rgb(255, 255, 255); AI role: White used extensively for page backgrounds and card backgrounds.","sampleId":"color-1","confidence":0.9} {"hex":"#717583","name":"muted text","role":"muted-text","source":"computed","evidence":"color-6: computed rgb(113, 117, 131); AI role: #717583 used for secondary text and descriptions.","sampleId":"color-6","confidence":0.9} {"hex":"#00A0FF","name":"primary action","role":"primary-action","source":"computed","evidence":"color-24: computed rgb(0, 160, 255); AI role: #00A0FF used for primary buttons ('Start for free').","sampleId":"color-24","confidence":0.9} {"hex":"#F7FAFC","name":"surface","role":"surface","source":"computed","evidence":"color-2: computed rgb(247, 250, 252); AI role: #F7FAFC used as a subtle off-white background for specific sections to differentiate them from the main canvas.","sampleId":"color-2","confidence":0.85} {"hex":"#151618","name":"surface","role":"surface","source":"computed","evidence":"color-7: computed rgb(21, 22, 24); AI role: #151618 used for the dark footer background.","sampleId":"color-7","confidence":0.8}

Typography measured inside this section: {"id":"font-11","family":"Inter","fontStack":"Inter, system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\"","weight":"400","size":"22px","lineHeight":"34.1px","letterSpacing":"normal","traits":"Regular","count":2,"contexts":[{"tag":"p","text":"\"Fernand is the bedrock of my solo business. It's the reason I'm able to stay solo and move quick wh","top":4048,"property":"font"},{"tag":"p","text":"\"I used to feel overwhelmed handling support. I either ignored messages, or I got sucked into endles","top":9798,"property":"font"}]} {"id":"font-28","family":"Inter","fontStack":"Inter, system-ui, -apple-system, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\"","weight":"600","size":"15px","lineHeight":"15px","letterSpacing":"normal","traits":"Regular","count":2,"contexts":[{"tag":"strong","text":"Jack Friks","top":4308,"property":"font"},{"tag":"strong","text":"Thomas Sanlis","top":10058,"property":"font"}]}

No section-bounded color samples were measured.

Exact section measurements from the saved element map: root {"rect":{"x":0,"y":9798,"width":1440,"height":293},"padding":{"top":"0px","right":"0px","bottom":"0px","left":"0px"},"gap":"normal","columns":null,"overflow":"visible"}; spacing {"gapsPx":[4],"representativeContentWidthsPx":[720]}; surfaces {"radii":["50%"],"borders":[],"shadows":[]}; media [{"tag":"img","rect":{"x":696,"y":9996,"width":48,"height":48},"aspectRatio":1,"objectFit":"cover","objectPosition":"50% 50%","radius":"50%"}]

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.
