causal.so

SaaS और प्रोडक्टिविटीलाइट + डार्क

इस डिज़ाइन को AI के साथ इस्तेमाल करें

अपना AI चुनें, विचार बताएं और प्रॉम्प्ट भेजें।

  • अपने Claude Code प्रोजेक्ट में एजेंट की चैट में प्रॉम्प्ट पेस्ट करें और भेजें।

डाउनलोड करें

नमूना लेआउट

लैंडिंग पेज, इस पैक से बना
इस पैक के मापों से ही बना एक सामान्य पेज: साइट के रंग, टाइपोग्राफी, बटन और स्पेसिंग में नमूना टेक्स्ट।

वेबसाइट का नमूना

1440 px

रंग

10 रंग

कंपोनेंट

Start for freeSolutions
बटन primary
#1a1a1a पर #f9f9f9 टेक्स्ट, r 100px, h 36px, 14px/600
बटन ghost
#f9f9f9 के ऊपर पारदर्शी पर #878787 टेक्स्ट, r 0px, h 20px, 14px/500
कार्ड
#fcfcfc, 1px solid #f2f2f2, r 12px, shadow
लिंक
#1a1a1a, बिना underline, 500
हेडर
68px, sticky, 16px पर 12 लिंक
मुख्य शीर्षक
60px / 700, center अलाइन, अधिकतम 599px
बैज
"0:00 / 4:12": #eaeaea on #555555, 12px/400, 16px tall, radius 8px, padding 5px 8px
बैज
"0:00 / 0:48": #eaeaea on #555555, 12px/400, 16px tall, radius 8px, padding 5px 8px
कोड
code: ui-monospace 12px, #f3f4f6 bg, #1a1a1a text, radius 4px, padding 1px 4px
फ़ॉर्म
0 forms, 0 inputs. Required markers: 0. Help texts: 0. Label placement: no labelled inputs.
आइकन
Icons: 112 inline SVGs, outline/stroke, sizes 12px/16px/20px/14px, stroke 2px/1.5px/4px.

इंटरैक्शन और मोशन

  • button primary "Start for free": hover पर कोई बदलाव नहीं
  • button secondary "Start for free": hover पर कोई बदलाव नहीं
  • nav link "Home": hover पर कोई बदलाव नहीं
  • focus button primary: outline 2px solid rgb(26, 26, 26), offset 2px
  • tooltip: No tooltips: nothing on the page carries tooltip attributes or roles and no tooltip styles exist. Do not add tooltips when rebuilding.
  • मेन्यू: Hover/click menus: below the trigger, 315px gap, shifted right; transparent, radius 0px, padding 0px 0px, shadow none; appears instantly (no fade); stays open after the pointer leaves (click-away or hover-intent grace).
  • मोशन: 190 elements carry transitions; typical 0.15s with cubic-bezier(0.4, 0, 0.2, 1), mostly on opacity, color, rotate. No running keyframe animations at rest. 9 sizable elements sit at opacity 0 before scrolling: scroll-reveal animations are in use (reveal on enter, fade + rise is the usual recipe).

टाइपोग्राफ़ी

3 फ़ैमिली
Manrope Variableस्वयं होस्ट किया गयाInter Variableस्वयं होस्ट किया गयाui-monospaceसिस्टम
headline-displayQuick brown fox60px / 700 / lh 72px
headline-lgQuick brown fox50px / 650 / lh 70px
headline-mdQuick brown fox24px / 600 / lh 38px
body-mdThe quick brown fox jumps over the lazy dog14px / 400 / lh 22.4px
label-mdThe quick brown fox jumps over the lazy dog16px / 500 / lh 23px
buttonThe quick brown fox jumps over the lazy dog20px / 600 / lh 30px
codeconst pack = extract(url)12px / 350 / lh 18px
इस्तेमाल हो रहे साइज़

Spacing

4px यूनिट
481216202432445264120
कंटेंट की चौड़ाई
1200px

Radius

बटन 100pxइनपुट 100pxकार्ड 12pxइमेज 0px

Shadows

4

डार्क थीम

पहुँच: class dark के ज़रिए। लाइट → डार्क:

background#f9f9f9 → #060606
surface#e3e3e5 → #111111
surface-2#abdddf → #3d2b1f
surface-3#d8d8d8 → #1a1a1a
foreground#1a1a1a → #111111
primary#1a1a1a → #e5e5e5
on-primary#ffffff → #111111
secondary#ffc9a0 → #c98a74
border#f2f2f2 → #f2f2f2

डार्क मोड shadows: rgba(0, 0, 0, 0.01) 0px 1px 10px 0px; rgba(0, 0, 0, 0.04) 0px 2px 12px 0px

लोगो और आइकन

6 संदर्भ

ये क्रॉप और इनके माप BRAND.md में हैं। पैक इस्तेमाल करने से पहले जाँच लें कि सही लोगो चुना गया है।

कंपोनेंट इन्वेंटरी

87 में से 21 प्रकार · 41 वैरिएंट · 6 अवस्थाएँ · 1 overlay

हर पंक्ति पेज पर मिली एक दृश्य शैली है। कैप्चर निष्कर्षण के दौरान मिले स्टेट दिखाते हैं। गायब कैप्चर और लाइव सत्यापित न हुए स्टेट अलग चिह्नित हैं। पूरा विवरण COMPONENTS.md और components.css में है।

Button, ghost-icon-right (lg)पेज पर 9, जैसे "What is this app for?"#1a1a1a text on transparent, radius 15px, h 78px, padding 24px 0px 24px 0px, 20px/600, icon right 20px
hover, active (pressed), disabled, open: कोई बदलाव नहीं
Button, ghostपेज पर 6#1a1a1a text on transparent, radius 0px, h 36px, padding 0px 4px 0px 4px, 16px/400
active (pressed), open: कोई बदलाव नहीं
Button, ink-icon-rightपेज पर 2, जैसे "Start for free"#f9f9f9 text on #1a1a1a, radius 100px, h 43px, padding 10px 16px 10px 16px, 16px/600, icon right 20px
hover, focus (keyboard): लाइव सत्यापित नहीं
Button, ghost-with-icon (sm)पेज पर 2, जैसे "New space"#555555 text on transparent, radius 12px, h 25px, padding 6px 8px 6px 8px, 14px/500, icon left 12px
सिर्फ़ सामान्य अवस्था
Button, ink-icon-right · headerपेज पर 1, जैसे "Start for free"#f9f9f9 text on #1a1a1a, radius 100px, h 36px, padding 0px 14px 0px 14px, 14px/600, icon right 16px
hover, focus (keyboard): लाइव सत्यापित नहीं
Button, ghost (sm)पेज पर 1, जैसे "A"#000000 text on transparent, radius 8px, h 16px, padding 0px 0px 0px 0px, 13.3333px/400
सिर्फ़ सामान्य अवस्था
Button, ghost-with-icon (sm) · mainपेज पर 1, जैसे "Read Launch sync"#555555 text on transparent, radius 0px, h 17px, padding 0px 0px 0px 0px, 12px/500, icon left 14px
सिर्फ़ सामान्य अवस्था
Icon button, ghostपेज पर 6 · still faded out by a scroll-reveal animation when revisited#1a1a1a text on transparent, radius 8px, h 16px, padding 0px 0px 0px 0px, 13.3333px/400, icon only 11px
rest: पूर्वावलोकन उपलब्ध नहीं
Icon button, ghost · mainपेज पर 2#555555 text on transparent, radius 8px, h 18px, padding 0px 0px 0px 0px, 13.3333px/400, icon only 11px
hover, active (pressed), disabled: कोई बदलाव नहीं
Icon button, ghost · main · 3पेज पर 1#1a1a1a text on transparent, radius 999px, h 14px, padding 0px 0px 0px 0px, 13.3333px/400, icon only 14px
सिर्फ़ सामान्य अवस्था
Icon button, secondaryपेज पर 1#1a1a1a text on #eeeeee, radius 100px, h 36px, padding 0px 0px 0px 0px, 16px/400, icon only 16px
hover, focus (keyboard): लाइव सत्यापित नहीं
Text link, plainपेज पर 7, जैसे "Video brief" · partially outside the capture viewport#1a1a1a, no underline, 16px/400
rest: पूर्वावलोकन उपलब्ध नहींhover, focus (keyboard): लाइव सत्यापित नहीं
Text link, plain · mainपेज पर 2, जैसे "See all"#878787, no underline, 16px/500
focus (keyboard): लाइव सत्यापित नहींhover: कोई बदलाव नहीं
Close / dismiss button, ghostपेज पर 2#555555 text on transparent, radius 8px, h 18px, padding 0px 0px 0px 0px, 13.3333px/400, icon only 12px
hover: कोई बदलाव नहीं
Header / navbarपेज पर 1, जैसे "HomeSolutionsTemplatesPricin"h 68px, sticky, bg transparent, 14 links, CTAs: FoundersPlan the app before you build it. Flows, specs and t, Start for free, Solutions, logo left
rest: पूर्वावलोकन उपलब्ध नहीं
Navigation link, plainपेज पर 2, जैसे "Canvas" · covered by figure.flex#1a1a1a, no underline, 16px/400
rest: पूर्वावलोकन उपलब्ध नहींfocus (keyboard): लाइव सत्यापित नहीं
Navigation link, plain · headerपेज पर 1, जैसे "Home"#1a1a1a, no underline, 14px/500
focus (keyboard): लाइव सत्यापित नहीं
Navigation link, plain · header · 3पेज पर 1, जैसे "Pricing"#878787, no underline, 14px/500
hover, focus (keyboard): लाइव सत्यापित नहीं
Menu / dropdown trigger, ghostपेज पर 3, जैसे "Solutions"#878787 text on transparent, radius 0px, h 20px, padding 0px 0px 0px 0px, 14px/500, icon right 14px
Breadcrumbपेज पर 1, जैसे "Harbour CoffeeRebrand plan"16px #1a1a1a
hover: कोई बदलाव नहीं
Footer link, plainपेज पर 23, जैसे "Features"#878787, no underline, 14px/500
hover: कोई बदलाव नहीं
Counter / notification dot, subtle-filledपेज पर 1, जैसे "A"#1a1a1a on #fcfcfc, border 1px solid #f2f2f2, radius 8px, h 12px, padding 0px 0px 0px 0px, 12px/500
Card, elevatedपेज पर 14, जैसे "ColourCream ground, harbour "bg #fcfcfc, border 1px solid #f2f2f2, radius 12px, padding 19px 19px 10px 19px, shadow rgba(0, 0, 0, 0.01) 0px 1px 10px 0px, about 180×84px, body 14px #1a1a1a, 1 per row
hover: कोई बदलाव नहीं
Card, elevated-media-topपेज पर 9, जैसे "One loud colour and type as "bg #f3f4f6, border none, radius 0px, padding 0px 0px 0px 0px, shadow rgba(0, 0, 0, 0.01) 0px 1px 10px 0px, about 180×180px, media on top 180×180, radius 0px, 1 per row
सिर्फ़ सामान्य अवस्था
Card, filledपेज पर 9, जैसे "Spaced repetitionThe gap bet"bg #eeeeee, border none, radius 15px, padding 0px 0px 0px 0px, no shadow, about 384×384px, body 14px #1a1a1a, 1 per row
सिर्फ़ सामान्य अवस्था
Card, elevated · mainपेज पर 5, जैसे "Branding brief"bg transparent, border none, radius 15px, padding 0px 0px 0px 0px, shadow rgba(0, 0, 0, 0.04) 0px 2px 12px 0px, about 287×86px, 1 per row
सिर्फ़ सामान्य अवस्था
Card, filled-interactive-media-topपेज पर 3bg #eeeeee, border none, radius 15px, padding 0px 0px 0px 0px, no shadow, about 384×384px, media on top 384×384, radius 0px, 1 per row, clickable
सिर्फ़ सामान्य अवस्था
Card, elevated · main · 3पेज पर 2, जैसे "Client call, 2 Oct0:00 / 4:1"bg #fcfcfc, border 1px solid #f2f2f2, radius 12px, padding 20px 20px 20px 20px, shadow rgba(0, 0, 0, 0.01) 0px 1px 10px 0px, about 180×144px, body 12px #555555, 1 per row
सिर्फ़ सामान्य अवस्था
Code block / inline code, inlineपेज पर 1, जैसे "SM-2"inline, ui-monospace 12px, #1a1a1a on #f3f4f6, radius 4px, padding 1px 4px 1px 4px
Blockquoteपेज पर 6, जैसे "I started using it to plan a"16px #1a1a1a on transparent, border none, padding 0px 0px 0px 0px, radius 0px
Image / figure, aspect-1पेज पर 8180×180px, aspect 1, radius 0px, object-fit cover
hover: कोई बदलाव नहीं
Image / figure, aspect-1 · mainपेज पर 658×58px, aspect 1, radius 0px, object-fit cover, captioned
सिर्फ़ सामान्य अवस्था
Image / figure, aspect-1.6पेज पर 4350×219px, aspect 1.6, radius 0px, object-fit fill
सिर्फ़ सामान्य अवस्था
Carousel / sliderपेज पर 30 slides, 0 dots, 0 arrows
hover: कोई बदलाव नहीं
Icon, filled-12pxपेज पर 1012×12px, filled, fill #555555
Icon, outline-16pxपेज पर 716×16px, outline, stroke 2px #ed6c59
सिर्फ़ सामान्य अवस्था
Icon, outline-16px · mainपेज पर 616×16px, outline, stroke 2px #7f7f87
सिर्फ़ सामान्य अवस्था
Dropdown menu 1menu button "Solutions" से click पर खुलता है, Escape से बंद होता है226×226px, below, 36px from the trigger, bg transparent, text #1a1a1a 16px, radius 0px, padding 0px 0px 0px 0px, no shadow, transition opacity 0.26s, closes on Escape

इस पेज पर नहीं: Toggle / segmented control, Button group, Floating action button, Text input, Search field, Textarea, Select (native), Combobox / custom select, Checkbox, Radio, Switch / toggle, Range slider, File input / dropzone, Date / time input, Input with attached button or addon, Field label, Help / hint text, Validation error text, Fieldset / form section, Tabs, Pagination, Stepper / progress steps, Sidebar navigation, Footer, Skip link, Back to top, Social icon links, Theme toggle, Language / region switch, Tooltip, Popover, Dialog / modal, Drawer / sheet / off-canvas, Toast / snackbar, Banner / announcement bar, Cookie / consent notice, Lightbox / media viewer, Badge / pill / tag, Chip (removable / selectable tag), Alert / callout, Progress bar, Spinner / loader, Skeleton / shimmer, Empty state, Rating / stars, Pricing card / plan, Feature item (icon + title + text), Testimonial / quote card, Stat / metric, Styled list, List row / menu row, Table, Table row, Accordion / disclosure, Avatar, Avatar stack, Divider, Keyboard key, Video / media embed, Logo strip, Eyebrow / kicker, FAQ block, Call-to-action band, Newsletter / signup form, Search results / listing row, Sticky bar।

रेस्पॉन्सिव

1440 / 1024 / 768 / 390 px
ViewportकंटेंटGutterBodyशीर्षकहेडरHeroGridsबटन
desktop 14401200px420px16px60px, 2 lines, center68px, 3 links, 1 CTAmedia above text8→1 col; 6→1 col; 6→1 colcontent-width
laptop 1024976px247px15.783px53.2px, 2 lines, center68px, 6 links, 2 CTAmedia above text3→1 col; 8→1 col; 6→1 colcontent-width
tablet 768440px168px15.4733px43.2px, 2 lines, center68px, 6 links, 2 CTAmedia above text3→1 col; 8→1 col; 6→1 col1 full-width
phone 390342px45px15.0159px28.6px, 2 lines, center60px, hamburger (Open menu)media above text5→1 col; 2→1 col; 9→1 col4 full-width
  • H1 goes 60px → 28.6px (48%), 2 → 2 lines.
  • Nav collapses to a hamburger by 390px (first seen at 390px); header 68px → 60px.
  • Card grids: 3 columns → 1 column on phones (gap 12px → 12px).
  • Body text 16px → 15.0159px.
  • Phone side gutter 45px.
  • 4 buttons stretch full-width on phones.
  • Section top padding 48px → 40px.

पैक की फ़ाइलें

95 फ़ाइलें

56 kB गाइड टेक्स्ट से शुरू करें। पैक का पूरा टेक्स्ट 1,008 kB है; ज़रूरत पड़ने पर विस्तृत फ़ाइलें खोलें। इमेज अलग हैं।

START_HERE.md100 लाइनें
# Start here: causal.so

Observed 2026-10-28T00:38:57.026Z; default light theme. This is a compact handoff, not the full evidence archive: everything you need to start is here, the detailed files are one step away.

## How to use this pack

1. Read `START_HERE.md` and `tokens.css` first: the priority values. Keep observed values; a value marked inferred or fallback is a suggestion to resolve against the screenshots.
2. Open `screenshots/desktop-1440-fold.png` and `screenshots/phone-390-fold.png` and match the composition, density, whitespace and image treatment; the values do not carry those. Treat the inside of an image or canvas as a visual inference, not measured DOM.
3. Read `FONTS.md` and load `fonts.css` before `tokens.css`. Keep exact weights and variable-font settings and verify the fonts that actually render. If a font is unavailable, name the substitute and compare its width and apparent weight before touching the type scale.
4. Before drawing any logo or icon, read `BRAND.md` and open `screenshots/brand-logo.png`, `screenshots/brand-symbol.png`, `screenshots/brand-icon-1.png`: for a new product, create an original mark with the observed proportions and treatment; never guess a shape from a label.
5. Before building any control, read `COMPONENTS.md` (every variant and measured state, with a crop of each), use `components.css` for the CSS and `demos/` for a live copy of each component. A component listed as not found does not exist on the site; do not invent it.
6. Read `REGIONS.md` and inspect its context, detail and icon crops: reconstruct outer and inner surfaces, per-layer gradients and shadows and group spacing (`regions.css` has the recipes), then check the whole page again.
7. Read `BEHAVIOR.md` for hover, focus, tooltips, menus, motion, scrolling, tables, forms, text and each breakpoint, and reproduce the behaviour, not only the colours. Build both themes; `DESIGN.md` pairs the colours.
8. `layout.html` is a generic page composed only from this pack's measured values, with placeholder copy (`layout-alt.html` in the other theme): open it to see the colours, type, recipes and spacing working together and to check your own wiring of the fonts and tokens against it. It is not the site's composition; the screenshots are.
9. `DESIGN.md` has the whole system when a value is missing above. `evidence.json` is diagnostic data: never in the first read.
10. When done, render at desktop, 390px and 320px, compare with the screenshots, fix the biggest visible mismatch first (usually type size, whitespace or image treatment), recheck keyboard focus, overflow, navigation and forms, and repeat.
11. For another site's design, run `npx stylepack-cli <host>` in the project (it downloads that pack and records it the same way), or fetch https://stylepack.ai/packs/<host>/pack.zip; one question at a time is at https://stylepack.ai/packs/<host>/fonts, /colors and /buttons.

## Priority values and evidence

Values labeled fallback were not observed for that role; inferred-role means a visible heading was mapped to a display role. Keep observed values, but treat fallbacks as suggestions.
Keep measured sizes, tracking, radii and colors unless the new content requires an explicit adaptation. Do not enlarge the headline simply to fill a different line length.
Content width: 1200px. Inferred spacing base: 4px; sampled scale: 4, 8, 12, 16, 20, 24, 32, 44, 52, 64, 120px. Observed CSS breakpoints: not detected.
Colors: background=#f9f9f9; surface=#e3e3e5; surface-2=#abdddf; surface-3=#d8d8d8; foreground=#1a1a1a; muted-foreground=#878787; primary=#1a1a1a; on-primary=#ffffff; secondary=#ffc9a0; border=#f2f2f2.
- primary: Selected from measured button, link, text, painted-area and theme colors. It is not proof of a filled primary button; follow the observed component recipes.
Radii: button 100px, card 12px, input 100px, image 0px.
Shadows: rgba(0, 0, 0, 0.01) 0px 1px 10px 0px; rgba(0, 0, 0, 0.04) 0px 2px 12px 0px; rgba(0, 0, 0, 0.04) 0px 2px 10px 0px.

## Typography

Load fonts.css before applying tokens.css. FONTS.md contains the observed face/weight inventory and rendered-font checks. A CSS family name alone does not load a font.
Copy the supplied @font-face sources verbatim; do not replace a captured face with Google Fonts merely because its name looks similar. Keep fonts.css linked (or inline it verbatim for a single HTML deliverable). It includes measured semantic font defaults; tokens.css supplies scale and spacing. Use each role as a complete recipe: family, exact numeric weight, size, line height, tracking, font-feature-settings (including cv/ss stylistic sets), optical sizing and variable-font settings. A font shorthand resets feature settings; reapply the supplied longhands after it. Do not round 510 to 500/600, or turn a measured light style into a bold heading.
Use the captured family first. Self-hosted is a hosting location, not an availability verdict. An unverified probe is not evidence of failure; do not choose the optional fallback merely because it is familiar. Substitute only after an actual failed destination request or missing licensed source; record that reason and the replacement. A transient network error merits a retry before redesigning the typography.
Fallback roles are unmeasured suggestions. If a role is absent, start from the nearest observed text treatment; do not assume headings must be bold.
- Manrope Variable: observed weights 500, 600, 650, 700; source loading recipe in fonts.css.
- Inter Variable: observed weights 400; source loading recipe in fonts.css.
- ui-monospace: observed weights 350; system stack, platform-dependent.
- Manrope Variable delivery by face: confirmed 200 800 normal, 200 800 normal, 200 800 normal, 200 800 normal, 200 800 normal, 200 800 normal; failed none; unverified none. Confirmation is from one isolated-origin check, not every deployment. Keep confirmed faces; attempt unverified faces. A failed unused face does not invalidate a working regular/bold face.
- Inter Variable delivery by face: confirmed 100 900 normal, 100 900 normal, 100 900 normal, 100 900 normal; failed none; unverified 100 900 normal, 100 900 normal, 100 900 normal, 100 900 normal, 100 900 normal. Confirmation is from one isolated-origin check, not every deployment. Keep confirmed faces; attempt unverified faces. A failed unused face does not invalidate a working regular/bold face.
After loading, inspect the browser's Rendered Fonts for the headline, body and button. Computed font-family/font-weight and document.fonts.check() alone do not prove which face drew the glyphs.

- headline-display: Manrope Variable; 60px/72px; weight 700; tracking normal; observed, source h1.
- headline-lg: Manrope Variable; 50px/70px; weight 650; tracking normal; observed, source h2.
- headline-md: Manrope Variable; 24px/38px; weight 600; tracking normal; observed, source h3.
- body-md: Inter Variable; 14px/22.4px; weight 400; tracking normal; observed, source body.
- label-md: Manrope Variable; 16px/23px; weight 500; tracking normal; observed, source label.
- button: Manrope Variable; 20px/30px; weight 600; tracking normal; observed, source button.
- code: ui-monospace; 12px/18px; weight 350; tracking normal; observed, source code.
- Font Manrope Variable: self-hosted; use its captured loader first. Self-hosted does not imply unavailable or licensed for reuse; substitution is conditional, not a second design choice.
- Font Inter Variable: self-hosted; use its captured loader first. Self-hosted does not imply unavailable or licensed for reuse; substitution is conditional, not a second design choice.
- Font ui-monospace: system; use its captured loader first. Self-hosted does not imply unavailable or licensed for reuse; substitution is conditional, not a second design choice.

## Regional composition

Read REGIONS.md and open the referenced context, detail and icon crops before drawing complex previews. Build outer shell, inset content panel and internal groups as distinct layers where observed. Preserve which surface owns each gradient, border and shadow; do not apply one generic card treatment to every layer.
For images, canvas, video and external SVG, use the rendered crops to infer visible internal groupings. Keep those inferences separate from measured DOM facts. Do not treat an illustration as a functional app or paste the screenshot as the finished UI. Return to the whole-page screenshots to match scale and placement.
- r1: 1440×1411.2px at page (0, 116); 24 measured layers, 12 icon samples, 9 opaque media layers. screenshots/region-r1-context.jpg, screenshots/region-r1-detail.png
- r2: 1440×900px at page (0, 1527.2); 24 measured layers, 6 icon samples, 9 opaque media layers. screenshots/region-r2-context.jpg, screenshots/region-r2-detail.png, screenshots/region-r2-icons.png
- r3: 1440×833px at page (0, 5163.2); 24 measured layers, 12 icon samples, 2 opaque media layers. screenshots/region-r3-context.jpg, screenshots/region-r3-detail.png

## Component recipes

- primary button: bg #1a1a1a; text #f9f9f9; border none; radius 100px; height 36px; padding 0px 14px; type 14px/600; shadow none.
- ghost button: bg transparent; text #878787; border none; radius 0px; height 20px; padding 0px 0px; type 14px/500; shadow none.
- Card: {"bg":"#fcfcfc","border":"1px solid #f2f2f2","radius":"12px","padding":"20px","shadow":"rgba(0, 0, 0, 0.01) 0px 1px 10px 0px","w":300,"h":218}.

## Responsive and interaction evidence

- desktop 1440px: content 1200px, gutter 420px, H1 60px, 2 lines, center, header 68px, 3 links, 1 CTA, grids 8→1 col; 6→1 col; 6→1 col.
- laptop 1024px: content 976px, gutter 247px, H1 53.2px, 2 lines, center, header 68px, 6 links, 2 CTA, grids 3→1 col; 8→1 col; 6→1 col.
- tablet 768px: content 440px, gutter 168px, H1 43.2px, 2 lines, center, header 68px, 6 links, 2 CTA, grids 3→1 col; 8→1 col; 6→1 col.
- phone 390px: content 342px, gutter 45px, H1 28.6px, 2 lines, center, header 60px, hamburger (Open menu), grids 5→1 col; 2→1 col; 9→1 col.
H1 goes 60px → 28.6px (48%), 2 → 2 lines.
Nav collapses to a hamburger by 390px (first seen at 390px); header 68px → 60px.
Card grids: 3 columns → 1 column on phones (gap 12px → 12px).
Body text 16px → 15.0159px.
- Hover button-primary: no visible change.
- Hover button-secondary: no visible change.
- Hover nav-link: no visible change.
- Focus button-primary: outline 2px solid rgb(26, 26, 26), offset 2px.
190 elements carry transitions; typical 0.15s with cubic-bezier(0.4, 0, 0.2, 1), mostly on opacity, color, rotate. No running keyframe animations at rest.
Alternate dark theme observed; use DESIGN.md for paired colors.

## Logo and icons

Logo lockup: 22×24px, filled. See BRAND.md and its crops for shape evidence.
Icon: 14×14px; outline/stroke; stroke 1.5px, caps round.
Icon: 16×16px; outline/stroke; stroke 2px, caps round.

## First images to open

- screenshots/desktop-1440-fold.png: Desktop 1440, above the fold
- screenshots/brand-logo.png: primary logo lockup
- screenshots/brand-symbol.png: possible standalone brand symbol
- screenshots/phone-390-fold.png: Phone 390, above the fold

## Verify the build

Render at desktop, 390px and 320px. Inspect the result, compare against the supplied references, fix the largest visible mismatch, and recheck keyboard focus, overflow, navigation and form behavior. Match the visual language while following the requested product content.
Page background comes from body; large surface colors remain in the palette.
The primary action colour is the ink colour (monochrome palette); chromatic colours appear only as small accents.