# Scroll-linked video sequence

Schema: Design Details SECTION.md v3.2
Website: pliability // #1 mobility, stretching + recovery app
Source: https://pliability.com/
Source section IDs: 082df9c6-b3e3-46ca-8b56-3dfdd432e02b
Status: AI analysed; vocabulary promotion is automated

## Builder's note

What makes it work:
- A sticky left column of short action words sits against full-height photographic video, giving a clear reading path with plenty of negative space.
- Active words read bright white and inactive ones muted gray on a black canvas, so progress is understood through color alone.
- A small mono uppercase label and a data stat tie the process words to evidence, and the matching footage shows the exact movements.

What a screenshot can't show:
- Between about 7 and 11 seconds of scrolling, each word passed swaps the background video and fills the yellow vertical line.
- Step words are 40px with -1.2px tracking and 46px line height. Body copy is 16px medium, and the 12px mono label has 0.2px tracking.

Borrow: Tie a sticky list of short steps to a media panel and a filling progress line, so scroll position alone tells the story.
Leave alone: Don't copy the yellow #EDFD3A line on black, the FK Grotesk type family, or the specific stretching footage; a free neutral grotesk like Inter or Space Grotesk would work instead.

## Classification

- Type: process
- Layout: Two-column split with sticky text navigation on the left and full-height media on the right.
- Styles: bold, photographic, editorial
- Confidence: 95%

## Purpose and structure

A scroll-controlled section where reading through vertical steps triggers background video changes and animates a progress line.

Visual signature: A vertical list of simple words (stretch, move, recover) accompanied by a filling yellow line alongside changing video loops.

## Components

- sticky-container
- text-steps
- progress-line
- background-video

## Typography

- Display: FK Grotesk Regular — 60px 400
- Heading: FK Grotesk Regular — 40px 400
- Body: FK Grotesk Regular — 16px 400
- Mono: FK Grotesk Mono Medium — 12px 500

## Functional palette

- Canvas: canvas #000000
- Text: text #FFFFFF
- Primary-Action: primary action #EDFD3A
- Muted-Text: muted text #8F8F92
- Surface: surface #1C1C1E

## Motion evidence

- 7.0–11.0s — Scrolling down reveals a section with the text 'stretch', 'move', and 'recover' on the left. As the user scrolls past each point, the background video on the right updates and a yellow line graphic fills vertically. (98% confidence)

## Section quality

Overall: 60.35/100 (Good)
Scored coverage: 100%

- Typography: 62 — Clean sans-serif hierarchy with active/inactive contrast (bright white vs muted gray words) and small mono uppercase label 'OUR DATA SAYS' matches documented type tokens. Hierarchy is clear but limited to simple weight/color state changes, no distinctive type craft beyond that. Next tier: Needs more typographic invention (scale shifts, custom treatment of active state) beyond a simple gray-to-white color swap to feel memorable.
- Composition: 65 — Confident two-column split with sticky left-aligned word list against full-bleed photographic video, vertical yellow progress line anchoring the eye, and a small annotation callout tied to the line position. Strong use of negative space and a clear reading path. Next tier: Layout is a fairly standard sticky-scroll split; to reach strong/memorable it would need a more distinctive spatial idea than vertical line + swapping photo, such as asymmetry or layered depth.
- Motion: 58 — Gemini confirms a timestamped, specific behavior: scrolling past each word updates the background video and fills a yellow vertical line, directly visible in the crop progression from empty to filled line. Next tier: Single linear fill and hard image swap is a common scrollytelling pattern; would need added motion nuance (easing, crossfade, parallax) to move past good.
- Content: 60 — Content is tightly integrated: short action words, supporting data stat ('30% increase in mobility'), and matching photography of the exact movements reinforce the narrative purpose of the section. Next tier: The data callout is small and visually secondary; deeper integration (e.g., stat tied directly to each step) would strengthen purpose.
- Originality: 55 — The scroll-linked sticky-text-plus-video-change pattern with a fill progress line is a well-established editorial/product-marketing convention, executed competently but without a distinguishing twist. Next tier: Needs a structural or visual idea not seen in dozens of similar scrollytelling sections (e.g., unconventional line shape, unexpected text behavior) to earn originality credit.
- Adaptability: 60 — Structure (sticky nav list, media panel, progress indicator) is clearly separable from skin (yellow line, black canvas, specific photography), supported by deterministic token and media evidence. Next tier: Dependency on scroll-triggered video swaps tied to specific asset count/timing limits a fully generic rebuild without matching content pacing.

Strengths:
- Clear reading path via sticky word list contrasted against full-bleed photographic media
- Progress line gives concrete visual feedback tied to scroll position
- Supporting data stat reinforces narrative purpose of the section

Weaknesses:
- Pattern (sticky text + video swap + progress line) is a common scrollytelling convention without a distinguishing twist
- Active/inactive text state relies only on simple color weight shift
- Data callout is visually minor relative to its narrative value

Why it does not reach the next tier: The section executes a familiar scroll-linked editorial pattern competently and with good hierarchy, but lacks a structural or visual idea that would make it feel hard to substitute or distinctly memorable beyond the vertical fill line.

## Adaptation guidance

- Effort: Medium
- Guidance: Rebuild as a sticky flex layout with a scroll-progress hook driving both line height and media index state; swap in a project's own short video loops and word labels while keeping the same timing logic.

What transfers:
- Sticky two-column layout with word-list navigation and full-height media panel
- Vertical progress line component tied to scroll position
- Pattern of swapping background media per scroll step

Dependencies:
- Sequential photo/video assets matching each step's content
- Scroll-linked animation logic calculating line fill and media index

## Living vocabulary

- No reusable vocabulary candidates were supported by this section.

Only terms with status `active` enter the public taxonomy. Deferred and proposed terms remain available to later AI passes; rejected terms remain as provenance so they are not repeatedly reinvented.

## Provenance and limitations

- Section boundaries and naming: Gemini Pro visual observation
- Motion observations: Gemini Pro direct-video analysis
- Quality judgment: Claude
- Exact design facts: browser/CSS extraction at website scope
- Rubric: Design Details section rubric 3.2 (Typography 20%, Composition 20%, Motion 15%, Content 15%, Originality 15%, Adaptability 15%)
- Motion timing/easing details not fully specified beyond one timestamped observation
- Exact video loop count and transition behavior partially inferred from crop sequence

## Usage guidance

Use this section as design evidence. Create an original implementation; do not reproduce the source copy, assets, or proprietary composition exactly.

## Build blueprint v3.2

### Purpose and classification

- Canonical type: steps
- Source type: process
- Structure: two-column
- Layout: Two-column split with sticky text navigation on the left and full-height media on the right.
- Styles: bold, photographic, editorial
- Components: sticky-container, text-steps, progress-line, background-video
- Purpose: A scroll-controlled section where reading through vertical steps triggers background video changes and animates a progress line.
- Visual signature: A vertical list of simple words (stretch, move, recover) accompanied by a filling yellow line alongside changing video loops.
- Place on the page: 3 of 20, after Feature collection (`pliability-com:C02`), before Call to action (`pliability-com:C04`)

### Crop and composition

- Crop: 1440×1659px; aspect ratio 0.868:1
- Page bounds: 2187–3846px of 26954px
- Guidance: Preserve the visual relationship between the two columns; adapt their ratio to the new content instead of copying the source dimensions.

### 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": "section heading",
      "family": "FK Grotesk Regular",
      "stack": "\"FK Grotesk Regular\", \"FK Grotesk Regular Placeholder\", sans-serif",
      "size": "40px",
      "weight": "400",
      "lineHeight": "46px",
      "letterSpacing": "-1.2px",
      "sample": "stretch",
      "element": "h2",
      "occurrences": 25,
      "sourceId": "font-1"
    },
    {
      "role": "card/subheading",
      "family": "FK Grotesk Regular",
      "stack": "\"FK Grotesk Regular\", \"FK Grotesk Regular Placeholder\", sans-serif",
      "size": "24px",
      "weight": "400",
      "lineHeight": "27.6px",
      "letterSpacing": "-0.2px",
      "sample": "increase flexibility +",
      "element": "span",
      "occurrences": 19,
      "sourceId": "font-2"
    },
    {
      "role": "body/supporting copy",
      "family": "FK Grotesk Medium",
      "stack": "\"FK Grotesk Medium\", \"FK Grotesk Medium Placeholder\", sans-serif",
      "size": "16px",
      "weight": "500",
      "lineHeight": "24px",
      "letterSpacing": "-0.2px",
      "sample": "Users who stretched a minimum of 3x a week saw a 30% increase in their mobility after just 2 weeks o",
      "element": "p",
      "occurrences": 2,
      "sourceId": "font-27"
    },
    {
      "role": "body/supporting copy",
      "family": "FK Grotesk Mono Regular",
      "stack": "\"FK Grotesk Mono Regular\", \"FK Grotesk Mono Regular Placeholder\", monospace",
      "size": "12px",
      "weight": "400",
      "lineHeight": "13.8px",
      "letterSpacing": "0.2px",
      "sample": "Our Data says",
      "element": "p",
      "occurrences": 1,
      "sourceId": "font-31"
    }
  ],
  "siteRoles": [
    {
      "role": "display",
      "size": "60px",
      "family": "FK Grotesk Regular",
      "source": "computed",
      "traits": "Regular",
      "weight": "400",
      "evidence": "font-3: computed CSS at 1440×1000; AI role: FK Grotesk Regular, 60px, -1.8px tracking. Used for prominent headings like 'Daily mobility for everyone.'",
      "sampleId": "font-3",
      "confidence": 0.95,
      "lineHeight": "60px",
      "letterSpacing": "-1.8px"
    },
    {
      "role": "heading",
      "size": "40px",
      "family": "FK Grotesk Regular",
      "source": "computed",
      "traits": "Regular",
      "weight": "400",
      "evidence": "font-1: computed CSS at 1440×1000; AI role: FK Grotesk Regular, 40px, -1.2px tracking. Used for section headings and large statements.",
      "sampleId": "font-1",
      "confidence": 0.9,
      "lineHeight": "46px",
      "letterSpacing": "-1.2px"
    },
    {
      "role": "body",
      "size": "16px",
      "family": "FK Grotesk Regular",
      "source": "computed",
      "traits": "Regular",
      "weight": "400",
      "evidence": "font-12: computed CSS at 1440×1000; AI role: FK Grotesk Regular, 16px. Used for primary descriptive text and paragraphs.",
      "sampleId": "font-12",
      "confidence": 0.9,
      "lineHeight": "24px",
      "letterSpacing": "-0.2px"
    },
    {
      "role": "mono",
      "size": "12px",
      "family": "FK Grotesk Mono Medium",
      "source": "computed",
      "traits": "uppercase",
      "weight": "500",
      "evidence": "font-13: computed CSS at 1440×1000; AI role: FK Grotesk Mono Medium, 12px, 1.9px tracking, uppercase. Used for labels, tags, and secondary metadata.",
      "sampleId": "font-13",
      "confidence": 0.9,
      "lineHeight": "12px",
      "letterSpacing": "1.9px"
    }
  ]
}
```

### 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": [
    {
      "value": "#FFFFFF",
      "cssValue": "rgba(255, 255, 255, 0.3)",
      "alpha": 0.30196078431372547,
      "appliedAs": [
        "background",
        "text"
      ],
      "occurrences": 14,
      "sourceId": "color-9"
    }
  ],
  "functionalPalette": [
    {
      "hex": "#000000",
      "name": "canvas",
      "role": "canvas",
      "source": "computed",
      "evidence": "color-1: computed rgb(0, 0, 0); AI role: Solid black rgb(0, 0, 0) used as the primary background color across most sections.",
      "sampleId": "color-1",
      "confidence": 0.95
    },
    {
      "hex": "#FFFFFF",
      "name": "text",
      "role": "text",
      "source": "computed",
      "evidence": "color-4: computed rgb(255, 255, 255); AI role: White rgb(255, 255, 255) used for primary headings and body copy.",
      "sampleId": "color-4",
      "confidence": 0.95
    },
    {
      "hex": "#EDFD3A",
      "name": "primary action",
      "role": "primary-action",
      "source": "computed",
      "evidence": "color-3: computed rgb(237, 253, 58); AI role: Vivid yellow-green rgb(237, 253, 58) used for 'Start Free' buttons and highlights.",
      "sampleId": "color-3",
      "confidence": 0.95
    },
    {
      "hex": "#8F8F92",
      "name": "muted text",
      "role": "muted-text",
      "source": "computed",
      "evidence": "color-2: computed rgb(143, 143, 146); AI role: Gray rgb(143, 143, 146) used for secondary text and placeholders.",
      "sampleId": "color-2",
      "confidence": 0.9
    },
    {
      "hex": "#1C1C1E",
      "name": "surface",
      "role": "surface",
      "source": "computed",
      "evidence": "color-16: computed rgb(28, 28, 30); AI role: Dark gray rgb(28, 28, 30) used for floating bars and some button backgrounds.",
      "sampleId": "color-16",
      "confidence": 0.85
    }
  ]
}
```

### Design tokens

```json
{
  "radius": "Buttons appear fully rounded (pill-shaped). Cards have medium border radii (e.g., product cards, testimonials).",
  "density": "Low density. High reliance on negative space to draw focus to central animations and large typography.",
  "evidence": "Visual inspection of the crops shows pill buttons, full-width dark backgrounds, and centered alignments.",
  "borderStyle": "Mostly borderless designs relying on background contrast. Occasional subtle semi-transparent white borders (color-24) on inputs or cards.",
  "buttonStyle": "Solid fill (color-3) with contrasting dark text for primary actions. Pill shape.",
  "cornerStyle": "Rounded corners are prominent on interactive elements (buttons, inputs) and product cards.",
  "contentWidth": "Centered layouts with constrained widths for text readability, expanding to full-width for media and grids.",
  "spacingRhythm": "Generous vertical padding between main sections, often leveraging full-viewport heights to accommodate scroll-linked narratives."
}
```

### Reconstruction specification

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

- Root container was not deterministically isolated.
- Representative content widths: 595, 565, 353, 350px.
- Layout containers: 0; cards/surfaces: 0; media elements: 5; browser animations: 0.

#### Container, grid, and spacing

```json
{
  "viewport": {
    "width": 1440,
    "captureBounds": {
      "top": 2187,
      "bottom": 3846,
      "pageHeight": 26954
    }
  },
  "container": null,
  "spacing": {
    "observedGapsPx": [],
    "representativeContentWidthsPx": [
      595,
      565,
      353,
      350
    ]
  },
  "columns": []
}
```

#### Cards and surfaces

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

#### Media treatment

```json
[
  {
    "element": "img · img",
    "size": "1440×1000px",
    "position": "x 0px, y 2251px",
    "aspectRatio": 1.4,
    "objectFit": "cover",
    "objectPosition": "50% 50%",
    "radius": "0px",
    "overflow": "clip",
    "source": "https://pliability.com/__cdn/framerusercontent.com/images/U5gXaRO1dSm9BNjFIoTvYTsK7z4.webp?scale-down-to=2048&width=3200&height=1800"
  },
  {
    "element": "img · img",
    "size": "1440×1000px",
    "position": "x 0px, y 2251px",
    "aspectRatio": 1.4,
    "objectFit": "cover",
    "objectPosition": "50% 50%",
    "radius": "0px",
    "overflow": "clip",
    "source": "https://pliability.com/__cdn/framerusercontent.com/images/SkfuYWyLQjxCLobY7pxSBLW6PLs.webp?scale-down-to=2048&width=3200&height=1800"
  },
  {
    "element": "img · img",
    "size": "1440×1000px",
    "position": "x 0px, y 2251px",
    "aspectRatio": 1.4,
    "objectFit": "cover",
    "objectPosition": "50% 50%",
    "radius": "0px",
    "overflow": "clip",
    "source": "https://pliability.com/__cdn/framerusercontent.com/images/RdOV3e1Q7qLgGPf4c60mE8Z0cG0.webp?scale-down-to=2048&width=3200&height=1800"
  },
  {
    "element": "img · img",
    "size": "37×26px",
    "position": "x 738px, y 2401px",
    "aspectRatio": 1.4,
    "objectFit": "cover",
    "objectPosition": "50% 50%",
    "radius": "0px",
    "overflow": "clip",
    "source": "https://framerusercontent.com/images/57LcojpXCXcaiJCxONo8X6FKQ.svg?width=37&height=26"
  },
  {
    "element": "svg · svg",
    "size": "23×23px",
    "position": "x 108px, y 3060px",
    "aspectRatio": 1,
    "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
{
  "root": null,
  "cards": [],
  "media": [
    {
      "id": "ld-322",
      "tag": "img",
      "rect": {
        "x": 0,
        "y": 2251,
        "width": 1440,
        "height": 1000
      },
      "role": null,
      "label": "img",
      "media": {
        "alt": "",
        "src": "https://pliability.com/__cdn/framerusercontent.com/images/U5gXaRO1dSm9BNjFIoTvYTsK7z4.webp?scale-down-to=2048&width=3200&height=1800",
        "naturalWidth": 1440,
        "naturalHeight": 810
      },
      "radius": "0px",
      "overflow": "clip",
      "objectFit": "cover",
      "aspectRatio": 1.4,
      "objectPosition": "50% 50%"
    },
    {
      "id": "ld-325",
      "tag": "img",
      "rect": {
        "x": 0,
        "y": 2251,
        "width": 1440,
        "height": 1000
      },
      "role": null,
      "label": "img",
      "media": {
        "alt": "",
        "src": "https://pliability.com/__cdn/framerusercontent.com/images/SkfuYWyLQjxCLobY7pxSBLW6PLs.webp?scale-down-to=2048&width=3200&height=1800",
        "naturalWidth": 1440,
        "naturalHeight": 810
      },
      "radius": "0px",
      "overflow": "clip",
      "objectFit": "cover",
      "aspectRatio": 1.4,
      "objectPosition": "50% 50%"
    },
    {
      "id": "ld-328",
      "tag": "img",
      "rect": {
        "x": 0,
        "y": 2251,
        "width": 1440,
        "height": 1000
      },
      "role": null,
      "label": "img",
      "media": {
        "alt": "",
        "src": "https://pliability.com/__cdn/framerusercontent.com/images/RdOV3e1Q7qLgGPf4c60mE8Z0cG0.webp?scale-down-to=2048&width=3200&height=1800",
        "naturalWidth": 1440,
        "naturalHeight": 810
      },
      "radius": "0px",
      "overflow": "clip",
      "objectFit": "cover",
      "aspectRatio": 1.4,
      "objectPosition": "50% 50%"
    },
    {
      "id": "ld-314",
      "tag": "img",
      "rect": {
        "x": 738,
        "y": 2401,
        "width": 37,
        "height": 26
      },
      "role": null,
      "label": "img",
      "media": {
        "alt": "",
        "src": "https://framerusercontent.com/images/57LcojpXCXcaiJCxONo8X6FKQ.svg?width=37&height=26",
        "naturalWidth": 37,
        "naturalHeight": 26
      },
      "radius": "0px",
      "overflow": "clip",
      "objectFit": "cover",
      "aspectRatio": 1.4,
      "objectPosition": "50% 50%"
    },
    {
      "id": "ld-298",
      "tag": "svg",
      "rect": {
        "x": 108,
        "y": 3060,
        "width": 23,
        "height": 23
      },
      "role": null,
      "label": "svg",
      "media": null,
      "radius": "0px",
      "overflow": "hidden",
      "objectFit": "fill",
      "aspectRatio": 1,
      "objectPosition": "50% 50%"
    }
  ],
  "bounds": {
    "top": 2187,
    "bottom": 3846,
    "pageHeight": 26954
  },
  "schema": "little-details-section-measurements-v1",
  "source": "saved DOM/CSS element and animation maps",
  "columns": [],
  "spacing": {
    "gapsPx": [],
    "representativeContentWidthsPx": [
      595,
      565,
      353,
      350
    ]
  },
  "coverage": {
    "cards": 0,
    "media": 5,
    "animations": 0,
    "elementsInSection": 13
  },
  "surfaces": {
    "radii": [],
    "borders": [],
    "shadows": []
  },
  "animations": [],
  "capturedAt": "2026-10-24T08:09:11.680Z",
  "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."
  ],
  "viewportWidth": 1440
}
```

### Observed motion

1. **scroll** — Scrolling down reveals a section with the text 'stretch', 'move', and 'recover' on the left. As the user scrolls past each point, the background video on the right updates and a yellow line graphic fills vertically. (7s–11s; 98% confidence). Recreate the interaction principle with project-appropriate timing and easing; the evidence does not guarantee source easing values.

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: medium
- What transfers: Sticky two-column layout with word-list navigation and full-height media panel; Vertical progress line component tied to scroll position; Pattern of swapping background media per scroll step
- Dependencies: Sequential photo/video assets matching each step's content; Scroll-linked animation logic calculating line fill and media index
- Guidance: Rebuild as a sticky flex layout with a scroll-progress hook driving both line height and media index state; swap in a project's own short video loops and word labels while keeping the same timing logic.

### Evidence readiness

- Coverage: 7/7
- Can build: Yes
- Missing facts: None


### Agent implementation prompt

Create an original steps section inspired by the design evidence titled “Scroll-linked video sequence”.

Purpose: A scroll-controlled section where reading through vertical steps triggers background video changes and animates a progress line.

Structure: two-column. Source layout label: Two-column split with sticky text navigation on the left and full-height media on the right.. Preserve the visual relationship between the two columns; adapt their ratio to the new content instead of copying the source dimensions.

Visual signature to preserve at the pattern level: A vertical list of simple words (stretch, move, recover) accompanied by a filling yellow line alongside changing video loops.

Components: sticky-container, text-steps, progress-line, background-video.

Style direction: bold, photographic, editorial.

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

Typography evidence: {"role":"display","size":"60px","family":"FK Grotesk Regular","source":"computed","traits":"Regular","weight":"400","evidence":"font-3: computed CSS at 1440×1000; AI role: FK Grotesk Regular, 60px, -1.8px tracking. Used for prominent headings like 'Daily mobility for everyone.'","sampleId":"font-3","confidence":0.95,"lineHeight":"60px","letterSpacing":"-1.8px"} {"role":"heading","size":"40px","family":"FK Grotesk Regular","source":"computed","traits":"Regular","weight":"400","evidence":"font-1: computed CSS at 1440×1000; AI role: FK Grotesk Regular, 40px, -1.2px tracking. Used for section headings and large statements.","sampleId":"font-1","confidence":0.9,"lineHeight":"46px","letterSpacing":"-1.2px"} {"role":"body","size":"16px","family":"FK Grotesk Regular","source":"computed","traits":"Regular","weight":"400","evidence":"font-12: computed CSS at 1440×1000; AI role: FK Grotesk Regular, 16px. Used for primary descriptive text and paragraphs.","sampleId":"font-12","confidence":0.9,"lineHeight":"24px","letterSpacing":"-0.2px"} {"role":"mono","size":"12px","family":"FK Grotesk Mono Medium","source":"computed","traits":"uppercase","weight":"500","evidence":"font-13: computed CSS at 1440×1000; AI role: FK Grotesk Mono Medium, 12px, 1.9px tracking, uppercase. Used for labels, tags, and secondary metadata.","sampleId":"font-13","confidence":0.9,"lineHeight":"12px","letterSpacing":"1.9px"}

Color evidence: {"hex":"#000000","name":"canvas","role":"canvas","source":"computed","evidence":"color-1: computed rgb(0, 0, 0); AI role: Solid black rgb(0, 0, 0) used as the primary background color across most sections.","sampleId":"color-1","confidence":0.95} {"hex":"#FFFFFF","name":"text","role":"text","source":"computed","evidence":"color-4: computed rgb(255, 255, 255); AI role: White rgb(255, 255, 255) used for primary headings and body copy.","sampleId":"color-4","confidence":0.95} {"hex":"#EDFD3A","name":"primary action","role":"primary-action","source":"computed","evidence":"color-3: computed rgb(237, 253, 58); AI role: Vivid yellow-green rgb(237, 253, 58) used for 'Start Free' buttons and highlights.","sampleId":"color-3","confidence":0.95} {"hex":"#8F8F92","name":"muted text","role":"muted-text","source":"computed","evidence":"color-2: computed rgb(143, 143, 146); AI role: Gray rgb(143, 143, 146) used for secondary text and placeholders.","sampleId":"color-2","confidence":0.9} {"hex":"#1C1C1E","name":"surface","role":"surface","source":"computed","evidence":"color-16: computed rgb(28, 28, 30); AI role: Dark gray rgb(28, 28, 30) used for floating bars and some button backgrounds.","sampleId":"color-16","confidence":0.85}

Typography measured inside this section: {"id":"font-1","size":"40px","count":25,"family":"FK Grotesk Regular","traits":"Regular","weight":"400","contexts":[{"tag":"h2","top":2401,"text":"stretch","property":"font"},{"tag":"h2","top":2449,"text":"move","property":"font"},{"tag":"h2","top":2497,"text":"recover","property":"font"}],"fontStack":"\"FK Grotesk Regular\", \"FK Grotesk Regular Placeholder\", sans-serif","lineHeight":"46px","letterSpacing":"-1.2px"} {"id":"font-2","size":"24px","count":19,"family":"FK Grotesk Regular","traits":"Regular","weight":"400","contexts":[{"tag":"span","top":2433,"text":"increase flexibility +","property":"font"},{"tag":"span","top":2461,"text":"mobility","property":"font"},{"tag":"h5","top":13609,"text":"DailyRoutines","property":"font"}],"fontStack":"\"FK Grotesk Regular\", \"FK Grotesk Regular Placeholder\", sans-serif","lineHeight":"27.6px","letterSpacing":"-0.2px"} {"id":"font-27","size":"16px","count":2,"family":"FK Grotesk Medium","traits":"Regular","weight":"500","contexts":[{"tag":"p","top":3131,"text":"Users who stretched a minimum of 3x a week saw a 30% increase in their mobility after just 2 weeks o","property":"font"},{"tag":"span","top":26454,"text":"Contact support.","property":"font"}],"fontStack":"\"FK Grotesk Medium\", \"FK Grotesk Medium Placeholder\", sans-serif","lineHeight":"24px","letterSpacing":"-0.2px"} {"id":"font-31","size":"12px","count":1,"family":"FK Grotesk Mono Regular","traits":"uppercase","weight":"400","contexts":[{"tag":"p","top":3107,"text":"Our Data says","property":"font"}],"fontStack":"\"FK Grotesk Mono Regular\", \"FK Grotesk Mono Regular Placeholder\", monospace","lineHeight":"13.8px","letterSpacing":"0.2px"}

Colors measured inside this section: {"id":"color-9","hex":"#FFFFFF","alpha":0.30196078431372547,"count":14,"contexts":[{"tag":"div","top":2401,"text":"","property":"background"},{"tag":"p","top":6809,"text":"Sciatica-friendly mobility routine","property":"text"}],"cssValue":"rgba(255, 255, 255, 0.3)"}

Exact section measurements from the saved element map: spacing {"gapsPx":[],"representativeContentWidthsPx":[595,565,353,350]}; surfaces {"radii":[],"borders":[],"shadows":[]}; media [{"tag":"img","rect":{"x":0,"y":2251,"width":1440,"height":1000},"aspectRatio":1.4,"objectFit":"cover","objectPosition":"50% 50%","radius":"0px"},{"tag":"img","rect":{"x":0,"y":2251,"width":1440,"height":1000},"aspectRatio":1.4,"objectFit":"cover","objectPosition":"50% 50%","radius":"0px"},{"tag":"img","rect":{"x":0,"y":2251,"width":1440,"height":1000},"aspectRatio":1.4,"objectFit":"cover","objectPosition":"50% 50%","radius":"0px"},{"tag":"img","rect":{"x":738,"y":2401,"width":37,"height":26},"aspectRatio":1.4,"objectFit":"cover","objectPosition":"50% 50%","radius":"0px"}]

Motion evidence: scroll: Scrolling down reveals a section with the text 'stretch', 'move', and 'recover' on the left. As the user scrolls past each point, the background video on the right updates and a yellow line graphic fills vertically. (98% confidence)

Transfer these principles: Sticky two-column layout with word-list navigation and full-height media panel; Vertical progress line component tied to scroll position; Pattern of swapping background media per scroll step.

Dependencies: Sequential photo/video assets matching each step's content; Scroll-linked animation logic calculating line fill and media index.

Adaptation guidance: Rebuild as a sticky flex layout with a scroll-progress hook driving both line height and media index state; swap in a project's own short video loops and word labels while keeping the same timing logic.

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