chatbase.co

SaaS والإنتاجيةفاتح + فاتح

استخدم هذا التصميم مع الذكاء الاصطناعي

اختر أداتك وصِف فكرتك ثم أرسل الطلب.

  • الصق الطلب في محادثة الوكيل داخل مشروعك في Claude Code ثم أرسله.

تنزيل

تخطيط نموذجي

صفحة هبوط، مبني من هذه الحزمة
صفحة عامة مركّبة فقط من قياسات هذه الحزمة: نصوص تجريبية بألوان الموقع وخطوطه وأزراره ومسافاته.

الألوان

8 ألوان

المكونات

ProductLoginابدأ الآن
زر ghost
نص #000000 على شفاف, r 8px, h 36px, 14px/400
زر secondary
نص #000000 على شفاف, r 8px, h 36px, 14px/500
زر primary
نص #000000 على #000000, r 9999px, h 55px, 16px/400
بطاقة
transparent, 1px solid #e4e4e7, r 12px, ظل
رابط
#000000, بلا تسطير, 400
ترويسة
61px, sticky, 5 روابط بحجم 16px
العنوان الرئيسي
64px / 500, محاذاة left, الحد الأقصى 550px
شارة
"lookup_order": #eff6ff on #2563eb, 14px/500, 20px tall, radius 4px, padding 0px 4px
شارة
"payment_info": #eff6ff on #2563eb, 14px/500, 20px tall, radius 4px, padding 0px 4px
صورة رمزية
Avatar 44px, radius 50%, border 1px rgba(255, 255, 255, 0.1)
النماذج
0 forms, 0 inputs. Required markers: 0. Help texts: 0. Label placement: no labelled inputs.
الأيقونات
Icons: 138 inline SVGs, filled/mixed; inspect brand references, sizes 20px/29px/24px/16px, stroke 1.5px/2px/1px; icon font classes lucide.

التفاعل والحركة

  • button primary "Login": لا تغيّر عند hover
  • button secondary "Start free trial": لا تغيّر عند hover
  • nav link "Chatbase": لا تغيّر عند hover
  • تركيز button primary: outline 2px solid lab(2.50303 0.210844 -0.773582), offset 2px
  • التلميحات: No tooltip could be triggered from the first viewport, but the stylesheet defines tooltip rules (.context-view.monaco-component.top:has(.monaco-hover[role="tooltip"])): transform: translateY(calc(100% + 25px)).
  • القوائم: Hover/click menus: below the trigger, 2563px gap, right edges aligned; transparent, radius 0px, padding 0px 0px, shadow none; 4 items, 36px tall, 16px, padding 8px 12px, with icons, with descriptions; appears instantly (no fade); stays open after the pointer leaves (click-away or hover-intent grace).
  • الحركة: 205 elements carry transitions; typical 0.15s with cubic-bezier(0.4, 0, 0.2, 1), mostly on color, background-color, border-color. 5 running keyframe animations (test-visual-module__ZcxjhG__spin 0.7s infinite; accordion-up 0.2s 1; chatbase-bubble-entrance 0.18s 1). 18 sizable elements sit at opacity 0 before scrolling: scroll-reveal animations are in use (reveal on enter, fade + rise is the usual recipe).

الخطوط

2 عائلات خطوط
Geistمستضافة ذاتيًاInterمستضافة ذاتيًا
headline-displayQuick brown fox64px / 500 / lh 70.4px / -2.56px
headline-lgQuick brown fox48px / 500 / lh 52.8px / -0.96px
headline-mdQuick brown fox32px / 500 / lh 41.6px / -0.64px
body-mdThe quick brown fox jumps over the lazy dog16px / 500 / lh 24px / -0.32px
label-mdThe quick brown fox jumps over the lazy dog12px / 500 / lh 1.3 / -0.12px
buttonThe quick brown fox jumps over the lazy dog16px / 500 / lh 24px / -0.32px
الأحجام المستخدمة

المسافات

وحدة 8px
81624324880
عرض المحتوى
1238px
نقاط التوقف
360, 640, 768, 1024, 1280px

الاستدارة

زر 9999pxحقل 9999pxبطاقة 12pxصورة 0px

الظلال

4

السمة الفاتحة

يتم الوصول إليها عبر data-theme=light. فاتح → داكن:

background#ffffff → #ffffff
surface#eaecf7 → #eaecf7
foreground#09090b → #09090b
muted-foreground#71717a → #52525b
primary#000000 → #000000
on-primary#ffffff → #ffffff
secondary#2c41b3 → #2c41b3
border#e4e4e7 → #e4e4e7

ظلال الوضع الفاتح: rgba(0, 0, 0, 0.02) 0px 2px 4px 0px, rgba(0, 0, 0, 0.02) 0px 6px 6px 0px, rgba(0, 0, 0, 0.01) 0px 14px 9px 0px; rgba(0, 0, 0, 0.05) 0px 1px 2px 0px

الشعار والأيقونات

6 مراجع

هذه المقتطعات وقياساتها موجودة في BRAND.md. تحقق من أن الشعار المختار صحيح قبل استخدام الحزمة.

جرد المكوّنات

26 من 87 نوعًا · 51 متغيّرات · 15 حالات · 1 طبقات

يعرض كل صف نمطًا مرئيًا موجودًا في الصفحة. تعرض اللقطات الحالات التي تم الوصول إليها أثناء الاستخراج. تُميّز اللقطات المفقودة والحالات غير المتحقق منها مباشرةً بشكل منفصل. التفاصيل في COMPONENTS.md وcomponents.css.

Button, ink4 في الصفحة, مثل "Start free trial"#ffffff text on #09090b, border 1px solid rgba(255, 255, 255, 0.24), radius 8px, h 48px, padding 12px 20px 12px 20px, 16px/500, tracking -0.32px, shadow rgba(0, 0, 0, 0.1) 0px 1px 2px 0px, rgba(0, 0, 0, 0.1) 0px 1px 3px 0px
hover, active (pressed), disabled: لا تغيير
Button, secondary4 في الصفحة, مثل "Get a demo"#09090b text on #ffffff, border 1px solid #e4e4e7, radius 8px, h 48px, padding 12px 20px 12px 20px, 16px/500, tracking -0.32px, shadow rgba(0, 0, 0, 0.05) 0px 1px 2px 0px
hover, active (pressed), disabled: لا تغيير
Button, outline-with-icon4 في الصفحة, مثل "Cancel subscription" · not visible when revisited#a1a1aa text on transparent, border 1px solid #e4e4e7, radius 3.35544e+07px, h 44px, padding 0px 20px 0px 20px, 16px/400, shadow rgba(0, 0, 0, 0) 0px 3px 7px 0px, rgba(0, 0, 0, 0) 0px 13px 13px 0px, rgba(0, 0, 0, 0) 0px 28px 17px 0px, rgba(0, 0, 0, 0) 0px 51px 20px 0px, icon left 16px
disabled: لم يتم التحقق مباشرةً
Button, ghost (sm)3 في الصفحة, مثل "01BuildConnect your data sou"#09090b text on transparent, radius 0px, h 28px, padding 0px 0px 0px 0px, 16px/400
focus (keyboard): المعاينة غير متاحةdisabled: لم يتم التحقق مباشرةًhover: لا تغيير
Button, ghost-with-icon (sm)2 في الصفحة, مثل "EmailHandle inbound support "#09090b text on transparent, radius 0px, h 24px, padding 0px 0px 0px 24px, 16px/400, icon left 24px
disabled: لم يتم التحقق مباشرةً
Button, secondary (sm)1 في الصفحة, مثل "Login"#09090b text on #ffffff, border 1px solid #e4e4e7, radius 8px, h 36px, padding 8px 16px 8px 16px, 14px/500, tracking -0.28px, shadow rgba(0, 0, 0, 0.05) 0px 1px 2px 0px
focus (keyboard), disabled: لم يتم التحقق مباشرةً
Button, ghost (lg)1 في الصفحة, مثل "03DeployPublish your agent a"#09090b text on transparent, radius 0px, h 108px, padding 0px 0px 0px 0px, 16px/400
disabled: لم يتم التحقق مباشرةً
Button, ghost-with-icon (lg)1 في الصفحة, مثل "ChatYour customers can talk "#09090b text on transparent, radius 0px, h 80px, padding 0px 0px 0px 24px, 16px/400, icon left 24px
disabled: لم يتم التحقق مباشرةً
Icon button, secondary4 في الصفحة#09090b text on #fafafa, border 1px solid #e4e4e7, radius 0px, h 64px, padding 0px 0px 0px 0px, 16px/400
hover, active (pressed): لا تغيير
Icon button, ghost4 في الصفحة#09090b text on transparent, radius 0px, h 80px, padding 0px 0px 0px 0px, 16px/400
focus (keyboard), disabled: المعاينة غير متاحةhover, active (pressed): لا تغيير
Icon button, secondary · main2 في الصفحة#09090b text on #ffffff, border 1px solid #e4e4e7, radius 0px, h 36px, padding 0px 0px 0px 0px, 16px/400, icon only 18px
hover, active (pressed): لا تغيير
Icon button, secondary · main · 31 في الصفحة#09090b text on #ffffff, border 1px solid #e4e4e7, radius 0px, h 64px, padding 0px 0px 0px 0px, 16px/400
disabled: لم يتم التحقق مباشرةً
Text link, plain9 في الصفحة, مثل "Expandable"#09090b, no underline, 16px/400
hover, active (pressed): لا تغيير
Text link, plain · main1 في الصفحة, مثل "Learn more"#09090b, no underline, 16px/400
hover, active (pressed): لا تغيير
Text link, plain · main · 31 في الصفحة, مثل "Learn more"#ffffff, no underline, 16px/500
focus (keyboard): المعاينة غير متاحةhover, active (pressed): لا تغيير
Floating action button, ink1 في الصفحة#09090b text on #000000, radius 9999px, h 55px, padding 0px 0px 0px 0px, 16px/400, shadow rgba(0, 0, 0, 0.2) 0px 4px 8px 0px, icon only 28px
Switch / toggle, custom9 في الصفحة · not visible when revisitedauthor-drawn (appearance none), size 36x20, thumb 16px #ffffff
disabled: لم يتم التحقق مباشرةً
Header / navbar1 في الصفحة, مثل "ChatbaseProduct Solutions Re"h 61px, sticky, bg #fafafa, bottom border 1px solid #e4e4e7, 5 links, CTAs: Login, Product, Solutions, logo left
rest: المعاينة غير متاحة
Navigation link, plain3 في الصفحة, مثل "Customers"#09090b, no underline, 14px/400
hover: لا تغيير
Menu / dropdown trigger, ghost3 في الصفحة, مثل "Product"#09090b text on transparent, radius 8px, h 36px, padding 8px 12px 8px 12px, 14px/400, icon right 12px
open: لا تغيير
Footer1 في الصفحة, مثل "ChatbaseProductSecurityChatb"h 1014px, bg transparent, 7 link columns, 45 links, headings: Chatbase, Product, Security, Chatbase Experts, social links
rest: المعاينة غير متاحة
Footer link, plain30 في الصفحة, مثل "Security"#71717a, no underline, 14px/500
hover: لا تغيير
Social icon links4 في الصفحة4 icons at 24px, #52525b, gap 12px
hover: لا تغيير
Badge / pill / tag, subtle-square2 في الصفحة, مثل "get_subscription"#2563eb on #eff6ff, radius 4px, h 20px, padding 0px 4px 0px 4px, 14px/500, tracking -0.28px
hover: لا تغيير
Badge / pill / tag, info-square2 في الصفحة, مثل "New"#ffffff on #2563eb, radius 4px, h 20px, padding 0px 8px 0px 8px, 12px/600, tracking -0.12px
hover: لا تغيير
Badge / pill / tag, warning-square2 في الصفحة, مثل "On hold"#ffffff on #d97706, radius 4px, h 20px, padding 0px 8px 0px 8px, 12px/600, tracking -0.12px
hover: لا تغيير
Badge / pill / tag, neutral-square2 في الصفحة, مثل "Closed"#71717a on transparent, border 1px solid #e4e4e7, radius 4px, h 20px, padding 0px 8px 0px 8px, 12px/600, tracking -0.12px
حالة السكون فقط
Badge / pill / tag, danger-square1 في الصفحة, مثل "On you"#ffffff on #dc2626, radius 4px, h 20px, padding 0px 8px 0px 8px, 12px/600, tracking -0.12px
حالة السكون فقط
Counter / notification dot, info-filled1 في الصفحة · not visible when revisited#09090b on #2c41b3, radius 0px, h 2px, padding 0px 0px 0px 0px, 16px/400
حالة السكون فقط
Card, flat7 في الصفحة, مثل "Procedures written in plain "bg transparent, border none, radius 0px, padding 32px 32px 32px 32px, no shadow, about 539×439px, body 20px #09090b, 2 per row
hover: لا تغيير
Card, elevated2 في الصفحة, مثل "1.Ask for the email on the a" · not visible when revisitedbg #ffffff, border 1px solid #e4e4e7, radius 14px, padding 20px 20px 20px 20px, shadow rgba(0, 0, 0, 0.02) 0px 2px 4px 0px, rgba(0, 0, 0, 0.02) 0px 6px 6px 0px, rgba(0, 0, 0, 0.01) 0px 14px 9px 0px, about 407×251px, 1 per row
حالة السكون فقط
Card, elevated · main1 في الصفحة, مثل "WordpressWebsite widgetWebsi" · not visible when revisitedbg #ffffff, border 1px solid #e4e4e7, radius 8px, padding 20px 20px 20px 20px, shadow rgba(9, 9, 11, 0.04) 0px 1px 2px 0px, rgba(9, 9, 11, 0.06) 0px 1px 3px 0px, about 419×528px, 1 per row
حالة السكون فقط
Card, elevated-media-top1 في الصفحة, مثل "Your package isIn-transitUpd"bg #ffffff, border 1px solid #e4e4e7, radius 20px, padding 0px 0px 0px 0px, shadow rgba(0, 0, 0, 0.02) 0px 2px 4px 0px, rgba(0, 0, 0, 0.02) 0px 6px 6px 0px, rgba(0, 0, 0, 0.01) 0px 14px 9px 0px, about 344×231px, media on top 737×399, radius 0px, 1 per row
حالة السكون فقط
Card, elevated · main · 31 في الصفحة, مثل "Your package isIn-transitUpd"bg #ffffff, border none, radius 16px, padding 16px 16px 16px 16px, shadow rgba(0, 0, 0, 0.02) 0px 2px 4px 0px, rgba(0, 0, 0, 0.02) 0px 6px 6px 0px, rgba(0, 0, 0, 0.01) 0px 14px 9px 0px, about 328×96px, 1 per row
حالة السكون فقط
Card, elevated · main · 41 في الصفحة, مثل "HelpdeskStatusRequestorTicke"bg #ffffff, border 1px solid #e4e4e7, radius 14px, padding 0px 0px 0px 0px, shadow rgba(0, 0, 0, 0.02) 0px 2px 4px 0px, rgba(0, 0, 0, 0.02) 0px 6px 6px 0px, rgba(0, 0, 0, 0.01) 0px 14px 9px 0px, about 760×413px, body 18px #09090b, 1 per row
حالة السكون فقط
Feature item (icon + title + text), outlined-media-top3 في الصفحة, مثل "GDPRFull compliance with EU "bg transparent, border 1px solid #27272a, radius 0px, padding 0px 0px 0px 0px, no shadow, about 346×336px, media on top 344×218, radius 0px, h3 20px/500, body 16px #a1a1aa, 3 per row
hover: لا تغيير
Stat / metric3 في الصفحة, مثل "4M+Users served" · not visible when revisitedbg transparent, border none, radius 0px, padding 0px 0px 0px 0px, no shadow, about 105×82px, value 48px/500, value above label
حالة السكون فقط
Styled list1 في الصفحة, مثل "1.Ask for the email on the a"7 items, marker none, gap 12px, item padding 0px 0px
Blockquote2 في الصفحة, مثل ""Chatbase is a strong signal"24px #09090b on transparent, border none, padding 0px 0px 0px 0px, radius 0px
Image / figure, aspect-1.179 في الصفحة · covered by img.object-cover346×296px, aspect 1.17, radius 0px, object-fit cover
rest: المعاينة غير متاحةhover: لم يتم التحقق مباشرةً
Image / figure, aspect-2.664 في الصفحة · not visible when revisited85×32px, aspect 2.66, radius 0px, object-fit contain
حالة السكون فقط
Image / figure, aspect-0.884 في الصفحة · covered by div618×699px, aspect 0.88, radius 0px, object-fit cover
rest: المعاينة غير متاحة
Video / media embed2 في الصفحة · covered by div.absolute692×614px, radius 0px, no controls
rest: المعاينة غير متاحة
Icon, outline-24px37 في الصفحة24×24px, outline, stroke 1px none
Icon, outline-29px18 في الصفحة29×29px, outline, stroke 1px none
Icon, outline-16px16 في الصفحة · not visible when revisited16×18px, outline, stroke 1px none
حالة السكون فقط
Popover 1يفتحه icon button عند pointerdown148×44px, above, 1761px from the trigger, bg transparent, text #a1a1aa 16px, radius 3.35544e+07px, padding 0px 20px 0px 20px, shadow rgba(0, 0, 0, 0) 0px 1.00626px 2.34794px 0px, rgba(0, 0, 0, 0) 0px 4.36045px 4.36045px 0px, rgba(0, 0, 0, 0) 0px 9.39174px 5.70213px 0px, rgba(0, 0, 0, 0) 0px 17.1064px 6.70839px 0px, border 1px solid #e4e4e7

غير موجودة في هذه الصفحة: Toggle / segmented control, Button group, Close / dismiss button, Text input, Search field, Textarea, Select (native), Combobox / custom select, Checkbox, Radio, 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, Breadcrumb, Tabs, Pagination, Stepper / progress steps, Sidebar navigation, Skip link, Back to top, Theme toggle, Language / region switch, Tooltip, Dropdown menu, Dialog / modal, Drawer / sheet / off-canvas, Toast / snackbar, Banner / announcement bar, Cookie / consent notice, Lightbox / media viewer, Chip (removable / selectable tag), Alert / callout, Progress bar, Spinner / loader, Skeleton / shimmer, Empty state, Rating / stars, Pricing card / plan, Testimonial / quote card, List row / menu row, Table, Table row, Accordion / disclosure, Avatar, Avatar stack, Divider, Code block / inline code, Keyboard key, Carousel / slider, Logo strip, Eyebrow / kicker, FAQ block, Call-to-action band, Newsletter / signup form, Search results / listing row, Sticky bar.

التجاوب

1440 / 1024 / 768 / 390 px
العرضالمحتوىالهامشالمتنالعنوانالترويسةالواجهة الرئيسيةالشبكاتالأزرار
desktop 14401238px181px16px64px, 3 lines, left61px, 5 links, 1 CTAmedia above text2→2 col; 3→3 col; 2→1 colcontent-width
laptop 1024711px81px16px64px, 4 lines, left61px, 5 links, 1 CTAmedia above text2→2 col; 3→3 col; 2→1 colcontent-width
tablet 768720px24px16px48px, 2 lines, left59px, hamburger (Open menu)media above text2→2 col; 2→2 col; 2→2 col12 full-width
phone 390342px24px16px48px, 4 lines, left59px, hamburger (Open menu)media above text2→2 col; 2→2 col; 2→2 col12 full-width
  • H1 goes 64px → 48px (75%), 3 → 4 lines.
  • Nav collapses to a hamburger by 390px (first seen at 768px); header 61px → 59px.
  • Card grids: 3 columns → 1 column on phones (gap 20px → 24px).
  • Body text is 16px at the sampled desktop and phone widths.
  • Phone side gutter 24px.
  • 12 buttons stretch full-width on phones.
  • Section top padding 80px → 44px.

ملفات الحزمة

115 ملفات

ابدأ بـ 59 كيلوبايت من نص الدليل. كل نص الحزمة 1.2 م.ب؛ افتح الملفات التفصيلية عند الحاجة. الصور منفصلة.

START_HERE.md97 سطر
# Start here: chatbase.co

Observed 2026-10-28T00:41:22.808Z; 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-icon-1.png`, `screenshots/brand-icon-2.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: 1238px. Inferred spacing base: 8px; sampled scale: 8, 16, 24, 32, 48, 80px. Observed CSS breakpoints: 360, 640, 768, 1024, 1280px.
Colors: background=#ffffff; surface=#eaecf7; foreground=#09090b; muted-foreground=#52525b; primary=#000000; on-primary=#ffffff; secondary=#2c41b3; border=#e4e4e7.
- 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 9999px, card 12px, input 9999px, image 0px.
Shadows: rgba(0, 0, 0, 0.02) 0px 2px 4px 0px, rgba(0, 0, 0, 0.02) 0px 6px 6px 0px, rgba(0, 0, 0, 0.01) 0px 14px 9px 0px; rgba(9, 9, 11, 0.04) 0px 1px 2px 0px, rgba(9, 9, 11, 0.06) 0px 1px 3px 0px; rgba(0, 0, 0, 0.05) 0px 1px 2px 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.
- Geist: observed weights 500; source loading recipe in fonts.css.
- Inter: observed weights 500; source loading recipe in fonts.css.
- Geist delivery by face: confirmed 100 900 normal, 100 900 normal, 100 900 normal, 100 900 normal, 100 900 normal, 100 900 normal, 100 900 normal; failed none; unverified 100 900 italic. 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 delivery by face: confirmed 100 900 normal; failed none; unverified 100 900 normal, 100 900 normal, 100 900 normal, 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: Geist; 64px/70.4px; weight 500; tracking -2.56px; observed, source h1.
- headline-lg: Geist; 48px/52.8px; weight 500; tracking -0.96px; observed, source h2.
- headline-md: Geist; 32px/41.6px; weight 500; tracking -0.64px; observed, source h3.
- body-md: Geist; 16px/24px; weight 500; tracking -0.32px; observed, source body.
- label-md: Inter; 12px/1.3; weight 500; tracking -0.12px; observed, source label.
- button: Geist; 16px/24px; weight 500; tracking -0.32px; observed, source button.
- Font Geist: 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: 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.

## 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: 1240×1147px at page (100, 61); 24 measured layers, 11 icon samples, 13 opaque media layers. screenshots/region-r1-context.jpg, screenshots/region-r1-detail.png, screenshots/region-r1-icons.png
- r2: 1240×1241.7px at page (100, 1288); 15 measured layers, 0 icon samples, 4 opaque media layers. screenshots/region-r2-context.jpg, screenshots/region-r2-detail.png
- r3: 1078×1278.9px at page (181, 3855.1); 24 measured layers, 12 icon samples, 1 opaque media layers. screenshots/region-r3-context.jpg, screenshots/region-r3-detail.png, screenshots/region-r3-icons.png

## Component recipes

- ghost button: bg transparent; text #000000; border none; radius 8px; height 36px; padding 8px 12px; type 14px/400; shadow none.
- secondary button: bg transparent; text #000000; border 1px solid transparent; radius 8px; height 36px; padding 8px 16px; type 14px/500; shadow rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.05) 0px 1px 2px 0px.
- primary button: bg #000000; text #000000; border none; radius 9999px; height 55px; padding 0px 0px; type 16px/400; shadow rgba(0, 0, 0, 0.2) 0px 4px 8px 0px.
- Card: {"bg":"transparent","border":"1px solid #e4e4e7","radius":"14px","padding":"20px","shadow":"rgba(0, 0, 0, 0.02) 0px 2px 4px 0px, rgba(0, 0, 0, 0.02) 0px 6px 6px 0px, rgba(0, 0, 0, 0.01) 0px 14px 9px 0px","w":293,"h":242}.

## Responsive and interaction evidence

- desktop 1440px: content 1238px, gutter 181px, H1 64px, 3 lines, left, header 61px, 5 links, 1 CTA, grids 2→2 col; 3→3 col; 2→1 col.
- laptop 1024px: content 711px, gutter 81px, H1 64px, 4 lines, left, header 61px, 5 links, 1 CTA, grids 2→2 col; 3→3 col; 2→1 col.
- tablet 768px: content 720px, gutter 24px, H1 48px, 2 lines, left, header 59px, hamburger (Open menu), grids 2→2 col; 2→2 col; 2→2 col.
- phone 390px: content 342px, gutter 24px, H1 48px, 4 lines, left, header 59px, hamburger (Open menu), grids 2→2 col; 2→2 col; 2→2 col.
H1 goes 64px → 48px (75%), 3 → 4 lines.
Nav collapses to a hamburger by 390px (first seen at 768px); header 61px → 59px.
Card grids: 3 columns → 1 column on phones (gap 20px → 24px).
Body text is 16px at the sampled desktop and phone widths.
- Hover button-primary: no visible change.
- Hover button-secondary: no visible change.
- Hover nav-link: no visible change.
- Focus button-primary: outline 2px solid lab(2.50303 0.210844 -0.773582), offset 2px.
205 elements carry transitions; typical 0.15s with cubic-bezier(0.4, 0, 0.2, 1), mostly on color, background-color, border-color. 5 running keyframe animations (test-visual-module__ZcxjhG__spin 0.7s infinite; accordion-up 0.2s 1; chatbase-bubble-entrance 0.18s 1).
Alternate light theme observed; use DESIGN.md for paired colors.

## Logo and icons

Logo lockup: 143×24px, filled. See BRAND.md and its crops for shape evidence.
Icon: 12×12px; outline/stroke; stroke 2px, caps round.
Icon: 24×24px; filled; stroke none observed, caps not applicable.

## First images to open

- screenshots/desktop-1440-fold.png: Desktop 1440, above the fold
- screenshots/brand-logo.png: primary logo lockup
- 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.