Skip to content
zeroslop.design

www.firecrawl.dev

Firecrawl

Web data tools with a line grid, monospace labels, and animated ASCII graphics.

Full-page screenshot of the Firecrawl website

Source

www.firecrawl.dev

Web data tools with a line grid, monospace labels, and animated ASCII graphics.

Status

Draft

Captured

developer tools / ASCII / grid

? 1 format finding needs review

Version
20261005T201438Z-26a8cfce
Views
1440 × 900, 390 × 664
Format
1 errors, 1 warnings

DESIGN.md · Firecrawl

Download
---
version: "alpha"
name: "Firecrawl"
description: "Reference design from a website capture. Computed values and representative element roles remain draft."
x-zsd:
  profile: "0.1"
  kind: "reference"
  source:
    method: "generated"
    url: "https://www.firecrawl.dev/"
    captured: "2026-10-05"
  review:
    status: "draft"
  unresolved:
    - "Role assignments use representative DOM elements and need visual inspection."
    - "Audience, design rationale, alternate routes, and theme coverage need inspection."
    - "Interaction states, keyboard behavior, and reduced motion need direct inspection."
    - "Color counts and font declarations do not establish semantic roles."
    - "The capture omits 31 requested assets. Archive coverage needs inspection."
    - "The mobile screenshot omits the lower part of the page."
  layout:
    desktop-viewport: "1440px"
    desktop-content-width: "1440px"
    desktop-display: "block"
    mobile-viewport: "390px"
    mobile-content-width: "390px"
  evidence:
    method: "computed-style"
    scope: "Computed styles and representative visible elements. No interaction-state or visual fidelity review."
    selectors:
      colors.primary: "html > body > main > section:nth-of-type(1) > div:nth-of-type(2) > div:nth-of-type(3) > div > div:nth-of-type(1) > div > a > button"
      colors.on-primary: "html > body > main > section:nth-of-type(1) > div:nth-of-type(2) > div:nth-of-type(3) > div > div:nth-of-type(1) > div > a > button"
      colors.surface: "html > body"
      colors.on-surface: "html > body > main > section:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(4) > p"
      typography.headline-lg: "html > body > main > section:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(4) > h1"
      typography.body-md: "html > body > main > section:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(4) > p"
      typography.label-md: "html > body > main > section:nth-of-type(1) > div:nth-of-type(2) > div:nth-of-type(3) > div > div:nth-of-type(1) > div > a > button"
      typography.headline-md: "html > body > main > section:nth-of-type(2) > div:nth-of-type(1) > div:nth-of-type(3) > div:nth-of-type(2) > h2"
    viewports:
      - {"width": 1440, "height": 900}
      - {"width": 390, "height": 664}
    mobile-typography:
      headline:
        fontFamily: "suisse, \"suisse Fallback\", system-ui, -apple-system, \"system-ui\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\""
        fontSize: "44px"
        fontWeight: 500
        lineHeight: 1.0909
        letterSpacing: "-0.22px"
      body:
        fontFamily: "suisse, \"suisse Fallback\", system-ui, -apple-system, \"system-ui\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\""
        fontSize: "18px"
        fontWeight: 400
        lineHeight: 1.4444
        letterSpacing: "-0.09px"
      action:
        fontFamily: "suisse, \"suisse Fallback\", system-ui, -apple-system, \"system-ui\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\""
        fontSize: "16px"
        fontWeight: 450
        lineHeight: 1.5
        letterSpacing: "0px"
    imagery:
      images: 84
      canvases: 34
      svg: 920
    action-label: "Start for free"
  motion:
    action-transition:
      duration: "0.2s, 0.1s, 0.1s"
      timing: "ease, ease, ease"
  elevation:
    action-shadow: "color(display-p3 0.9804 0.1127 0.098 / 0.2) 0px -6px 12px 0px inset, color(display-p3 0.9804 0.3647 0.098 / 0.12) 0px 2px 4px 0px, color(display-p3 0.9804 0.3647 0.098 / 0.12) 0px 1px 1px 0px, color(display-p3 0.9804 0.3647 0.098 / 0.16) 0px 0.5px 0.5px 0px, color(display-p3 0.9804 0.3647 0.098 / 0.2) 0px 0.25px 0.25px 0px"
colors:
  primary: "#FF4C00"
  on-primary: "#FFFFFF"
  surface: "#F9F9F9"
  on-surface: "#262626"
typography:
  headline-lg:
    fontFamily: "suisse, \"suisse Fallback\", system-ui, -apple-system, \"system-ui\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\""
    fontSize: "60px"
    fontWeight: 500
    lineHeight: 1.0667
    letterSpacing: "-0.3px"
  body-md:
    fontFamily: "suisse, \"suisse Fallback\", system-ui, -apple-system, \"system-ui\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\""
    fontSize: "16px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "0px"
  label-md:
    fontFamily: "suisse, \"suisse Fallback\", system-ui, -apple-system, \"system-ui\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\""
    fontSize: "14px"
    fontWeight: 450
    lineHeight: 1.4286
    letterSpacing: "0px"
  headline-md:
    fontFamily: "suisse, \"suisse Fallback\", system-ui, -apple-system, \"system-ui\", \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\""
    fontSize: "52px"
    fontWeight: 500
    lineHeight: 1.0769
    letterSpacing: "-0.52px"
spacing:
  space-1: "1px"
  space-2: "2px"
  space-3: "3px"
  space-4: "4px"
  space-5: "6px"
  space-6: "8px"
  space-7: "10px"
  space-8: "12px"
  space-9: "16px"
  space-10: "20px"
  space-11: "25px"
  space-12: "40px"
  action-x: "8px"
  action-y: "8px"
  control-height: "36px"
rounded:
  action: "10px"
components:
  action-primary:
    backgroundColor: "{colors.primary}"
    textColor: "{colors.on-primary}"
    typography: "{typography.label-md}"
    height: "{spacing.control-height}"
    rounded: "{rounded.action}"
---

# Firecrawl

## Overview

A reference record of the captured page. Values come from visible elements and computed styles at the recorded viewports.
Role assignments remain draft. Compare the record with the source screenshots before use.

## Colors

- `primary`: Use for the sampled action surface.
- `on-primary`: Use for text on the sampled action.
- `surface`: Use for the observed page surface.
- `on-surface`: Use for the sampled body text.

## Typography

- `headline-lg`: Use for the sampled page title.
- `body-md`: Use for the sampled body text.
- `label-md`: Use for the sampled action label.
- `headline-md`: Use for the sampled section title.

## Layout

`x-zsd.layout.desktop-content-width` records the sampled main element width.
`x-zsd.layout.desktop-viewport` records its viewport.
Spacing tokens record observed intervals. They do not establish an approved spacing scale.

### Responsive behavior

Compare `x-zsd.layout.mobile-content-width` at `x-zsd.layout.mobile-viewport` with the desktop observation.
Intermediate widths, overflow rules, and layout breakpoints need direct inspection.

## Elevation & Depth

`x-zsd.elevation.action-shadow` records the sampled action shadow. Other depth rules need direct inspection.

## Shapes

- `action`: Use for the sampled action radius.

## Components

### Action

Use `action-primary` for the representative action. Use `action-x` and `action-y` for its horizontal and vertical padding.
Use `control-height` for its observed height.
Hover, focus, pressed, disabled, loading, empty, error, and success states need direct inspection.

## Do's and Don'ts

- Do keep the source URL and capture date with this reference.
- Do compare representative roles with the source screenshots.
- Do keep missing behavior explicit.
- Do not substitute the plugin starter values.
- Do not treat a format check as visual approval.
- Do not infer interaction behavior from static screenshots.

## Motion

`x-zsd.motion.action-transition` records the sampled action transition. Animation timing and reduced motion need direct inspection.

## Iconography

Icon sources and stroke rules need direct inspection.

## Imagery

`x-zsd.evidence.imagery` records counts for images and graphics. Image treatment and crop rules need direct inspection.

## Accessibility

Token contrast checks apply to the sampled pairs. Keyboard paths, labels, and screen reader behavior need direct inspection.
This reference does not establish accessibility conformance.