Files
ar.badieiandCursor c2376b3b9e
Build & Push Docker Image / build (push) Has been cancelled
feat: redesign landing page with brand system and section blocks
Refresh the homepage around new hero/services/roadmap sections, shared design tokens, and updated brand assets.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 17:00:55 +03:30

2.4 KiB

Spacing

All spacing must come from the scale below. Arbitrary values (p-[13px], mt-[22px], gap-[0.9rem]) are forbidden unless fixing a temporary third-party bug—and must be replaced before merge.

Scale (px)

Token px Rem Tailwind
1 4 0.25 1
2 8 0.5 2
3 12 0.75 3
4 16 1 4
5 20 1.25 5
6 24 1.5 6
8 32 2 8
10 40 2.5 10
12 48 3 12
16 64 4 16
20 80 5 20
24 96 6 24

Use as p-4, gap-6, mt-8, space-y-4, etc.

Layout-level spacing

Role Token / class Notes
Container gutter px-6 (24) Via layout.container only
Section Y (mobile) py-16 (64) layout.sectionY — adjacent gap = 8rem
Section Y (md+) md:py-20 (80) layout.sectionY — adjacent gap = 10rem
Header clearance pt-28 / md:pt-32 layout.sectionTopWithHeader
Scroll margin scroll-mt-24 (96) Anchors under fixed header

Typography-linked spacing

From lib/typography.ts → typeSpacing:

Token Class Use
eyebrowToHeading mt-2 Eyebrow → title
headingToBody mt-3 Title → body
sectionStack space-y-4 Section intro stack
heroStack space-y-6 Hero copy stack
cardStack gap-1.5 Card title → description
paragraphStack space-y-4 Stacked paragraphs
labelToControl gap-1.5 Label → input

Prefer typeSpacing.* over reinventing the same stacks.

Component spacing norms

Component Internal spacing
Card gap-6, horizontal px-6, vertical py-6
Button Tokenized via --btn-px-* / --btn-gap-* — do not override casually
Field groups gap-7 between fields; gap-3 for checkbox/radio groups
Footer blocks mb-14, pb-14, column gap-10

Rules

  1. Never invent spacing outside the scale.
  2. Prefer consistency with nearest sibling sections over “optical” one-off tweaks.
  3. Vertical rhythm between major sections comes from layout.sectionY alone — do not add extra section margins that change the shared gap.
  4. Icon-to-label gaps inside buttons use button tokens; elsewhere prefer gap-2 / gap-3.