# Free and Pro pricing — Section Design Reference

Schema: Design Details SECTION.md v3.2
Source: https://pipdot.app/
Website: Pipdot
Section ID: 8807daf9-890f-47b1-91f5-9f11c8931391
Status: deterministic evidence captured; editorial AI review pending

## Purpose

This is a pricing 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×1644px root; block

## Visual signature

minimal, typographic, soft, product-led treatment at 1440×1506px. The crop spans 8820–10326px of a 12621px page.

## Components

- Navigation Bar
- Hero
- Newsletter Form
- Product UI
- Pricing Table
- FAQ Accordion
- Footer
- Feature Collection
- Inline Product Syntax Highlighting

## 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: pricing
- Source type: pricing
- Structure: 1440×1644px root; block
- Layout: 1440×1644px root; block
- Styles: minimal, typographic, soft, product-led
- Components: Navigation Bar, Hero, Newsletter Form, Product UI, Pricing Table, FAQ Accordion, Footer, Feature Collection, Inline Product Syntax Highlighting
- Purpose: pricing section from the Home page of Pipdot.
- Visual signature: rgba(0, 0, 0, 0) with 1440×1644px root; block. Inspect the crop for image and content hierarchy.

### Crop and composition

- Crop: 1440×1506px; aspect ratio 0.956:1
- Page bounds: 8820–10326px of 12621px
- 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": "section heading",
      "family": "Switzer",
      "stack": "Switzer, system-ui, -apple-system, \"Segoe UI\", sans-serif",
      "size": "100.8px",
      "weight": "500",
      "lineHeight": "98.8px",
      "letterSpacing": "-4px",
      "sample": "Days, times, projects, tags.",
      "element": "h2",
      "occurrences": 6,
      "sourceId": "font-1"
    },
    {
      "role": "card/subheading",
      "family": "Switzer",
      "stack": "Switzer, system-ui, -apple-system, \"Segoe UI\", sans-serif",
      "size": "20px",
      "weight": "400",
      "lineHeight": "31px",
      "letterSpacing": "normal",
      "sample": "No forms, no date pickers. Write one line and Pip picks out the day, the time, the project and the t",
      "element": "p",
      "occurrences": 5,
      "sourceId": "font-7"
    },
    {
      "role": "body/supporting copy",
      "family": "Switzer",
      "stack": "Switzer, system-ui, -apple-system, \"Segoe UI\", sans-serif",
      "size": "15px",
      "weight": "400",
      "lineHeight": "23.3px",
      "letterSpacing": "normal",
      "sample": "Days, times, “for” or “in” a project, #tags, deadlines, someday. Anything Pip doesn't recognise stay",
      "element": "p",
      "occurrences": 1,
      "sourceId": "font-15"
    },
    {
      "role": "section heading",
      "family": "Switzer",
      "stack": "Switzer, system-ui, -apple-system, \"Segoe UI\", sans-serif",
      "size": "38px",
      "weight": "500",
      "lineHeight": "43.7px",
      "letterSpacing": "-1.1px",
      "sample": "Call the garage tomorrow morning",
      "element": "span",
      "occurrences": 14,
      "sourceId": "font-23"
    },
    {
      "role": "UI/supporting text",
      "family": "Switzer",
      "stack": "Switzer, system-ui, -apple-system, \"Segoe UI\", sans-serif",
      "size": "11px",
      "weight": "500",
      "lineHeight": "11px",
      "letterSpacing": "1.5px",
      "sample": "Less, on purpose",
      "element": "span",
      "occurrences": 12,
      "sourceId": "font-26"
    },
    {
      "role": "UI/supporting text",
      "family": "Geist Mono",
      "stack": "\"Geist Mono\", ui-monospace, SFMono-Regular, Consolas, monospace",
      "size": "12.5px",
      "weight": "400",
      "lineHeight": "19.4px",
      "letterSpacing": "0.3px",
      "sample": "Tomorrow · 09:00",
      "element": "span",
      "occurrences": 6,
      "sourceId": "font-35"
    }
  ],
  "siteRoles": [
    {
      "role": "display",
      "size": "129.6px",
      "family": "Switzer",
      "source": "computed",
      "traits": "Regular",
      "weight": "500",
      "evidence": "font-3: computed CSS at 1440×1000; AI role: Large 129.6px Switzer font used for the main hero heading 'Say it the way you'd say it.'.",
      "sampleId": "font-3",
      "confidence": 0.95,
      "lineHeight": "121.8px",
      "letterSpacing": "-5.8px"
    },
    {
      "role": "heading",
      "size": "100.8px",
      "family": "Switzer",
      "source": "computed",
      "traits": "Regular",
      "weight": "500",
      "evidence": "font-1: computed CSS at 1440×1000; AI role: Large 100.8px Switzer font used for secondary section headings like 'Days, times, projects, tags.'.",
      "sampleId": "font-1",
      "confidence": 0.9,
      "lineHeight": "98.8px",
      "letterSpacing": "-4px"
    },
    {
      "role": "body",
      "size": "17px",
      "family": "Switzer",
      "source": "computed",
      "traits": "Regular",
      "weight": "400",
      "evidence": "font-6: computed CSS at 1440×1000; AI role: 17px Switzer font used for standard paragraph text, such as in the FAQ answers.",
      "sampleId": "font-6",
      "confidence": 0.85,
      "lineHeight": "27.2px",
      "letterSpacing": "normal"
    },
    {
      "role": "mono",
      "size": "12px",
      "family": "Geist Mono",
      "source": "computed",
      "traits": "Regular",
      "weight": "400",
      "evidence": "font-9: computed CSS at 1440×1000; AI role: 12px Geist Mono used for technical or interface details like 'Pip Notes/Trips/Lisbon in May.md'.",
      "sampleId": "font-9",
      "confidence": 0.9,
      "lineHeight": "18.6px",
      "letterSpacing": "0.2px"
    }
  ]
}
```

### 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": "#FF4D00",
      "cssValue": "rgb(255, 77, 0)",
      "alpha": 1,
      "appliedAs": [
        "background",
        "::before-background",
        "text"
      ],
      "occurrences": 60,
      "sourceId": "color-9"
    }
  ],
  "functionalPalette": [
    {
      "hex": "#0C0C0C",
      "name": "text",
      "role": "text",
      "source": "computed",
      "evidence": "color-1: computed rgb(12, 12, 12); AI role: Near-black (#0C0C0C) used extensively for primary text, headings, and logo.",
      "sampleId": "color-1",
      "confidence": 0.95
    },
    {
      "hex": "#F6F4EF",
      "name": "canvas",
      "role": "canvas",
      "source": "computed",
      "evidence": "color-2: computed rgb(246, 244, 239); AI role: Soft cream color (#F6F4EF) used as the primary background for the page body.",
      "sampleId": "color-2",
      "confidence": 0.9
    },
    {
      "hex": "#FF4D00",
      "name": "accent",
      "role": "accent",
      "source": "computed",
      "evidence": "color-9: computed rgb(255, 77, 0); AI role: Vibrant orange (#FF4D00) used for highlighting text syntax, the main character, and active states.",
      "sampleId": "color-9",
      "confidence": 0.9
    },
    {
      "hex": "#6E6E68",
      "name": "muted text",
      "role": "muted-text",
      "source": "computed",
      "evidence": "color-4: computed rgb(110, 110, 104); AI role: Grey (#6E6E68) used for secondary text, descriptions, and placeholder text.",
      "sampleId": "color-4",
      "confidence": 0.85
    },
    {
      "hex": "#FFFEFB",
      "name": "surface",
      "role": "surface",
      "source": "computed",
      "evidence": "color-3: computed rgb(255, 254, 251); AI role: Off-white (#FFFEFB) used as the background for input fields and some UI panels to contrast slightly with the canvas.",
      "sampleId": "color-3",
      "confidence": 0.8
    },
    {
      "hex": "#E6E3DC",
      "name": "border",
      "role": "border",
      "source": "computed",
      "evidence": "color-12: computed rgb(230, 227, 220); AI role: Light grey (#E6E3DC) used for borders around UI elements and input fields.",
      "sampleId": "color-12",
      "confidence": 0.75
    }
  ]
}
```

### Design tokens

```json
{
  "radius": "Not explicitly measured in CSS facts, but visually apparent on buttons and UI panels.",
  "density": "Low density, embracing minimal design principles to focus attention on typography and the product interface.",
  "evidence": "Visual inspection of the screenshots and DOM facts, noting layout distribution, button styling in the nav and forms, and border colors.",
  "borderStyle": "Subtle, thin borders (e.g., color-12) define product UI boundaries against the soft canvas.",
  "buttonStyle": "Solid dark background (color-1) with white text, or styled as pill-shaped elements with rounded corners.",
  "cornerStyle": "Rounded corners are present on UI elements like input fields, buttons, and product mockup panels.",
  "contentWidth": "Content is generally centered or aligned to a flexible grid that leaves substantial margins on desktop.",
  "spacingRhythm": "Generous vertical spacing between major sections, creating a calm and uncluttered reading experience."
}
```

### Reconstruction specification

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

- Root: 1440×1644px; block; padding {"top":"0px","right":"0px","bottom":"180px","left":"0px"}; gap normal; background rgba(0, 0, 0, 0); radius 0px.
- Observed gaps: 10px.
- Representative content widths: 1100, 1028, 605, 538, 530, 484px.
- Layout containers: 3; cards/surfaces: 0; media elements: 0; browser animations: 0.

#### Container, grid, and spacing

```json
{
  "viewport": {
    "width": 1440,
    "captureBounds": {
      "top": 16320,
      "bottom": 17826,
      "pageHeight": 20121
    }
  },
  "container": {
    "size": "1440×1644px",
    "position": "x 0px, y 16325px",
    "display": "block",
    "positionMode": "static",
    "padding": {
      "top": "0px",
      "right": "0px",
      "bottom": "180px",
      "left": "0px"
    },
    "margin": {
      "top": "0px",
      "right": "0px",
      "bottom": "0px",
      "left": "0px"
    },
    "gap": "normal",
    "columns": "not captured",
    "background": "rgba(0, 0, 0, 0)",
    "radius": "0px",
    "border": "0px none rgb(12, 12, 12)",
    "shadow": "none",
    "overflow": "visible"
  },
  "spacing": {
    "observedGapsPx": [
      10
    ],
    "representativeContentWidthsPx": [
      1100,
      1028,
      605,
      538,
      530,
      484
    ]
  },
  "columns": [
    {
      "element": "span · Pricing",
      "size": "1100×11px",
      "position": "x 96px, y 16325px",
      "display": "flex",
      "template": "not captured",
      "direction": "row",
      "gap": "10px"
    },
    {
      "element": "span · Free",
      "size": "538×11px",
      "position": "x 133px, y 16877px",
      "display": "flex",
      "template": "not captured",
      "direction": "row",
      "gap": "10px"
    },
    {
      "element": "span · Pro",
      "size": "538×11px",
      "position": "x 769px, y 16877px",
      "display": "flex",
      "template": "not captured",
      "direction": "row",
      "gap": "10px"
    }
  ]
}
```

#### Cards and surfaces

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

#### Media treatment

```json
[]
```

#### 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-13T19:04:41.064Z",
  "viewportWidth": 1440,
  "bounds": {
    "top": 16320,
    "bottom": 17826,
    "pageHeight": 20121
  },
  "root": {
    "id": "ld-971",
    "tag": "section",
    "role": null,
    "label": "Pricing Free on one device. Pro for everywhere else. Pip is free on one computer, with no account an",
    "rect": {
      "x": 0,
      "y": 16325,
      "width": 1440,
      "height": 1644
    },
    "display": "block",
    "position": "static",
    "padding": {
      "top": "0px",
      "right": "0px",
      "bottom": "180px",
      "left": "0px"
    },
    "margin": {
      "top": "0px",
      "right": "0px",
      "bottom": "0px",
      "left": "0px"
    },
    "gap": "normal",
    "columns": null,
    "background": "rgba(0, 0, 0, 0)",
    "radius": "0px",
    "border": "0px none rgb(12, 12, 12)",
    "shadow": "none",
    "overflow": "visible"
  },
  "spacing": {
    "gapsPx": [
      10
    ],
    "representativeContentWidthsPx": [
      1100,
      1028,
      605,
      538,
      530,
      484
    ]
  },
  "columns": [
    {
      "id": "ld-974",
      "tag": "span",
      "role": null,
      "label": "Pricing",
      "rect": {
        "x": 96,
        "y": 16325,
        "width": 1100,
        "height": 11
      },
      "display": "flex",
      "columns": null,
      "direction": "row",
      "gap": "10px"
    },
    {
      "id": "ld-980",
      "tag": "span",
      "role": null,
      "label": "Free",
      "rect": {
        "x": 133,
        "y": 16877,
        "width": 538,
        "height": 11
      },
      "display": "flex",
      "columns": null,
      "direction": "row",
      "gap": "10px"
    },
    {
      "id": "ld-988",
      "tag": "span",
      "role": null,
      "label": "Pro",
      "rect": {
        "x": 769,
        "y": 16877,
        "width": 538,
        "height": 11
      },
      "display": "flex",
      "columns": null,
      "direction": "row",
      "gap": "10px"
    }
  ],
  "cards": [],
  "surfaces": {
    "radii": [],
    "borders": [],
    "shadows": []
  },
  "media": [],
  "animations": [],
  "coverage": {
    "elementsInSection": 47,
    "cards": 0,
    "media": 0,
    "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 pricing section inspired by the design evidence titled “Free and Pro pricing”.

Purpose: pricing section from the Home page of Pipdot.

Structure: 1440×1644px root; block. Source layout label: 1440×1644px 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×1644px root; block. Inspect the crop for image and content hierarchy.

Components: Navigation Bar, Hero, Newsletter Form, Product UI, Pricing Table, FAQ Accordion, Footer, Feature Collection, Inline Product Syntax Highlighting.

Style direction: minimal, typographic, soft, product-led.

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

Typography evidence: {"role":"display","size":"129.6px","family":"Switzer","source":"computed","traits":"Regular","weight":"500","evidence":"font-3: computed CSS at 1440×1000; AI role: Large 129.6px Switzer font used for the main hero heading 'Say it the way you'd say it.'.","sampleId":"font-3","confidence":0.95,"lineHeight":"121.8px","letterSpacing":"-5.8px"} {"role":"heading","size":"100.8px","family":"Switzer","source":"computed","traits":"Regular","weight":"500","evidence":"font-1: computed CSS at 1440×1000; AI role: Large 100.8px Switzer font used for secondary section headings like 'Days, times, projects, tags.'.","sampleId":"font-1","confidence":0.9,"lineHeight":"98.8px","letterSpacing":"-4px"} {"role":"body","size":"17px","family":"Switzer","source":"computed","traits":"Regular","weight":"400","evidence":"font-6: computed CSS at 1440×1000; AI role: 17px Switzer font used for standard paragraph text, such as in the FAQ answers.","sampleId":"font-6","confidence":0.85,"lineHeight":"27.2px","letterSpacing":"normal"} {"role":"mono","size":"12px","family":"Geist Mono","source":"computed","traits":"Regular","weight":"400","evidence":"font-9: computed CSS at 1440×1000; AI role: 12px Geist Mono used for technical or interface details like 'Pip Notes/Trips/Lisbon in May.md'.","sampleId":"font-9","confidence":0.9,"lineHeight":"18.6px","letterSpacing":"0.2px"}

Color evidence: {"hex":"#0C0C0C","name":"text","role":"text","source":"computed","evidence":"color-1: computed rgb(12, 12, 12); AI role: Near-black (#0C0C0C) used extensively for primary text, headings, and logo.","sampleId":"color-1","confidence":0.95} {"hex":"#F6F4EF","name":"canvas","role":"canvas","source":"computed","evidence":"color-2: computed rgb(246, 244, 239); AI role: Soft cream color (#F6F4EF) used as the primary background for the page body.","sampleId":"color-2","confidence":0.9} {"hex":"#FF4D00","name":"accent","role":"accent","source":"computed","evidence":"color-9: computed rgb(255, 77, 0); AI role: Vibrant orange (#FF4D00) used for highlighting text syntax, the main character, and active states.","sampleId":"color-9","confidence":0.9} {"hex":"#6E6E68","name":"muted text","role":"muted-text","source":"computed","evidence":"color-4: computed rgb(110, 110, 104); AI role: Grey (#6E6E68) used for secondary text, descriptions, and placeholder text.","sampleId":"color-4","confidence":0.85} {"hex":"#FFFEFB","name":"surface","role":"surface","source":"computed","evidence":"color-3: computed rgb(255, 254, 251); AI role: Off-white (#FFFEFB) used as the background for input fields and some UI panels to contrast slightly with the canvas.","sampleId":"color-3","confidence":0.8} {"hex":"#E6E3DC","name":"border","role":"border","source":"computed","evidence":"color-12: computed rgb(230, 227, 220); AI role: Light grey (#E6E3DC) used for borders around UI elements and input fields.","sampleId":"color-12","confidence":0.75}

Typography measured inside this section: {"id":"font-1","family":"Switzer","fontStack":"Switzer, system-ui, -apple-system, \"Segoe UI\", sans-serif","weight":"500","size":"100.8px","lineHeight":"98.8px","letterSpacing":"-4px","traits":"Regular","count":6,"contexts":[{"tag":"h2","text":"Days, times, projects, tags.","top":9319,"property":"font"},{"tag":"h2","text":"Notes are files you own.","top":14117,"property":"font"},{"tag":"h2","text":"One dot for everything.","top":15308,"property":"font"}]} {"id":"font-7","family":"Switzer","fontStack":"Switzer, system-ui, -apple-system, \"Segoe UI\", sans-serif","weight":"400","size":"20px","lineHeight":"31px","letterSpacing":"normal","traits":"Regular","count":5,"contexts":[{"tag":"p","text":"No forms, no date pickers. Write one line and Pip picks out the day, the time, the project and the t","top":9545,"property":"font"},{"tag":"p","text":"Pip makes a folder called Pip Notes, wherever you want it. Every note inside is a plain Markdown fil","top":14244,"property":"font"},{"tag":"p","text":"Tasks and notes go in the same way. Start a line with note and it becomes a Markdown file. Start wit","top":15435,"property":"font"}]} {"id":"font-15","family":"Switzer","fontStack":"Switzer, system-ui, -apple-system, \"Segoe UI\", sans-serif","weight":"400","size":"15px","lineHeight":"23.3px","letterSpacing":"normal","traits":"Regular","count":1,"contexts":[{"tag":"p","text":"Days, times, “for” or “in” a project, #tags, deadlines, someday. Anything Pip doesn't recognise stay","top":10295,"property":"font"}]} {"id":"font-23","family":"Switzer","fontStack":"Switzer, system-ui, -apple-system, \"Segoe UI\", sans-serif","weight":"500","size":"38px","lineHeight":"43.7px","letterSpacing":"-1.1px","traits":"Regular","count":14,"contexts":[{"tag":"span","text":"Call the garage tomorrow morning","top":9757,"property":"font"},{"tag":"span","text":"tomorrow morning","top":9755,"property":"font"},{"tag":"span","text":"Renew the insurance for car fri 3pm","top":9845,"property":"font"}]} {"id":"font-26","family":"Switzer","fontStack":"Switzer, system-ui, -apple-system, \"Segoe UI\", sans-serif","weight":"500","size":"11px","lineHeight":"11px","letterSpacing":"1.5px","traits":"uppercase","count":12,"contexts":[{"tag":"span","text":"Less, on purpose","top":5582,"property":"font"},{"tag":"span","text":"Capture","top":9280,"property":"font"},{"tag":"span","text":"iPhone","top":10574,"property":"font"}]} {"id":"font-35","family":"Geist Mono","fontStack":"\"Geist Mono\", ui-monospace, SFMono-Regular, Consolas, monospace","weight":"400","size":"12.5px","lineHeight":"19.4px","letterSpacing":"0.3px","traits":"Regular","count":6,"contexts":[{"tag":"span","text":"Tomorrow · 09:00","top":9779,"property":"font"},{"tag":"span","text":"Friday · 15:00 · Car","top":9868,"property":"font"},{"tag":"span","text":"This evening · 21:00","top":9957,"property":"font"}]}

Colors measured inside this section: {"id":"color-9","hex":"#FF4D00","alpha":1,"cssValue":"rgb(255, 77, 0)","count":60,"contexts":[{"tag":"i","text":"","top":31,"property":"background"},{"tag":"span","text":"Less, on purpose","top":5582,"property":"::before-background"},{"tag":"span","text":"tomorrow morning","top":9755,"property":"text"}]}

Exact section measurements from the saved element map: root {"rect":{"x":0,"y":16325,"width":1440,"height":1644},"padding":{"top":"0px","right":"0px","bottom":"180px","left":"0px"},"gap":"normal","columns":null,"overflow":"visible"}; spacing {"gapsPx":[10],"representativeContentWidthsPx":[1100,1028,605,538,530,484]}; surfaces {"radii":[],"borders":[],"shadows":[]}

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.
