Files
workbuddy_skills/open-design/design-systems/vercel/DESIGN-vi.md
T
admin 5afeb6b78a ④段整套同步(六节 + P/S/F/J + 模板)+ open-design 移到技能根
一、④段整套同步(用户选候选 A)
- 新增 `references/stage-proto-doc/assets/产品文档模板.html`(16 KB/247 行,从备份拷、转 LF)。
- ④段 SKILL.md 换成备份 15:28 那版,并按模板口径改齐:
  · 「产品文档框架」从「四块+一附录」改成**六节** —— 页面结构/功能清单/使用场景/操作流程/
    跨页与界面状态/待确认与偏离;与模板同构,⛔ 不从空白页重写结构。
  · 编号从 R/S/F 改成 **P 页面/S 场景/F 功能/J 二级功能**,各自唯一、按展示顺序通排。
  · 保留旧版有价值的要求:每项功能补齐 做什么/入口在哪/输入边界/异常与恢复;重点功能三处标红;
    横向流程图每步写清页面/功能/操作/完成判据。
  · 完成标准「七节」→「六节」,自查清单同步换掉「需求」那批条目,补模板与配图两条。
  · 路径 `designs/<项目>/` → `docs/pm/<项目>/ui/`(2 处)。
  · 补回本机那条「每份产出文档开头都要有一张图」的引用(指向主 skill,段内不复述)。
- 主 skill 同步:四段结构表④行、④段沿革、画图小节(④段画页面结构图 + 用户路径)。

二、open-design 移到技能根(用户选候选 A)
- `git mv product-planning/references/stage-delivery/assets/open-design → open-design/`(4178 文件)。
- `.gitignore` 白名单加 `!/open-design/` —— 否则移出去就不再纳入版本控制。
- 引用改 11 处:路径形态 `assets/open-design/...` → `<技能根>/open-design/...`;
  「随段携带的自带件」改称「同根技能」;「路径怎么找」那条改成自带件(段内相对路径)与
  同根技能(`<技能根>/<技能名>/`)两类分开写。
- open-design 自己的 ATTRIBUTION.md 两处同步(它现在与 oil-ui-pro 同层)。
- 副作用(有益):命名闸门读数由 2063 降到 225 —— 此前它把 open-design 里 919 个第三方 md
  当成规则一起扫了;现在只扫本包 23 个 md。已确认④段的 H1 与 4a/4b/4c 子步仍在检查范围内。

三、验收
- check_naming.py --ws E:/ProgramData/AIProject/contentm_agent = 通过 225 / 失败 0 / 提示 27。
- 活文件里 `assets/open-design` 残留 0;工作区 CRLF 文件 0。
2026-10-15 21:17:28 +08:00

23 KiB
Raw Blame History

Design System Inspired by Vercel

Category: Công cụ dành cho nhà phát triển Triển khai frontend. Độ chính xác đen trắng, font Geist.

1. Chủ đề Hình ảnh & Bầu không khí

Trang web của Vercel là luận đề thị giác về hạ tầng dành cho nhà phát triển được làm trở nên vô hình — một hệ thống thiết kế kiềm chế đến mức gần như mang tính triết học. Trang có nền trắng chiếm ưu thế (#ffffff) với văn bản gần đen (#171717), tạo nên sự trống rỗng như trong phòng trưng bày, nơi mỗi yếu tố phải tự chứng minh giá trị từng pixel. Đây không phải là chủ nghĩa tối giản như một phong cách trang trí; đây là chủ nghĩa tối giản như một nguyên tắc kỹ thuật. Hệ thống thiết kế Geist đối xử với giao diện giống như trình biên dịch đối xử với mã — mọi token không cần thiết đều bị loại bỏ cho đến khi chỉ còn lại cấu trúc.

Họ font Geist tùy chỉnh là viên ngọc quý nhất. Geist Sans sử dụng khoảng cách chữ âm cực kỳ mạnh (-2.4px đến -2.88px ở kích thước hiển thị), tạo ra các tiêu đề cảm giác nén chặt, cấp bách và được thiết kế tinh xảo — như mã đã được thu gọn cho môi trường sản xuất. Ở kích thước thân bài, khoảng cách chữ được nới lỏng nhưng độ chính xác hình học vẫn duy trì. Geist Mono hoàn thiện hệ thống như người bạn đồng hành monospace dành cho mã, đầu ra terminal và nhãn kỹ thuật. Cả hai font đều bật "liga" OpenType (chữ ghép) trên toàn cục, thêm vào một lớp tinh tế về mặt typography khi đọc kỹ.

Điều phân biệt Vercel với các hệ thống thiết kế đơn sắc khác là triết lý bóng-thay-viền. Thay vì các viền CSS truyền thống, Vercel sử dụng box-shadow: 0px 0px 0px 1px rgba(0,0,0,0.08) — một bóng không có độ lệch, không có độ mờ, lan rộng 1px tạo ra đường giống viền mà không có hệ quả của box model. Kỹ thuật này cho phép các viền tồn tại trong lớp bóng, giúp các chuyển đổi mượt mà hơn, góc bo tròn không bị cắt xén, và trọng lượng thị giác tinh tế hơn so với viền truyền thống. Toàn bộ hệ thống chiều sâu được xây dựng trên các ngăn xếp bóng đa lớp, nơi mỗi lớp phục vụ một mục đích cụ thể: một lớp cho viền, một lớp cho độ cao mềm mại, một lớp cho chiều sâu xung quanh.

Đặc điểm chính:

  • Geist Sans với khoảng cách chữ âm cực mạnh (-2.4px đến -2.88px ở kích thước hiển thị) — văn bản như hạ tầng được nén
  • Geist Mono cho mã và nhãn kỹ thuật với "liga" OpenType trên toàn cục
  • Kỹ thuật bóng-thay-viền: box-shadow 0px 0px 0px 1px thay thế viền truyền thống xuyên suốt
  • Ngăn xếp bóng đa lớp cho chiều sâu tinh tế (viền + độ cao + xung quanh trong một khai báo)
  • Nền trắng gần thuần với văn bản #171717 — không hoàn toàn đen, tạo độ mềm vi tương phản
  • Màu nhấn theo luồng công việc: Ship Red (#ff5b4f), Preview Pink (#de1d8d), Develop Blue (#0a72ef)
  • Hệ thống vòng focus sử dụng hsla(212, 100%, 48%, 1) — màu xanh bão hòa cao cho khả năng tiếp cận
  • Huy hiệu hình viên thuốc (9999px) với nền tông màu cho các chỉ báo trạng thái

2. Bảng màu & Vai trò

Chính

  • Vercel Black (#171717): Văn bản chính, tiêu đề, nền bề mặt tối. Không phải đen thuần — sắc ấm nhẹ ngăn sự khắc nghiệt.
  • Pure White (#ffffff): Nền trang, bề mặt thẻ, văn bản nút trên nền tối.
  • True Black (#000000): Dùng thứ cấp, --geist-console-text-color-default, dùng trong các bối cảnh console/mã cụ thể.

Màu nhấn theo luồng công việc

  • Ship Red (#ff5b4f): --ship-text, bước luồng công việc "ship to production" — đỏ san hô ấm, cấp bách.
  • Preview Pink (#de1d8d): --preview-text, luồng công việc triển khai xem trước — hồng đậm sặc sỡ.
  • Develop Blue (#0a72ef): --develop-text, luồng công việc phát triển — xanh sáng, tập trung.

Màu Console / Mã

  • Console Blue (#0070f3): --geist-console-text-color-blue, xanh tô sáng cú pháp.
  • Console Purple (#7928ca): --geist-console-text-color-purple, tím tô sáng cú pháp.
  • Console Pink (#eb367f): --geist-console-text-color-pink, hồng tô sáng cú pháp.

Tương tác

  • Link Blue (#0072f5): Màu liên kết chính với trang trí gạch chân.
  • Focus Blue (hsla(212, 100%, 48%, 1)): --ds-focus-color, vòng focus trên các phần tử tương tác.
  • Ring Blue (rgba(147, 197, 253, 0.5)): --tw-ring-color, tiện ích vòng Tailwind.

Thang độ xám

  • Gray 900 (#171717): Văn bản chính, tiêu đề, văn bản điều hướng.
  • Gray 600 (#4d4d4d): Văn bản thứ cấp, nội dung mô tả.
  • Gray 500 (#666666): Văn bản cấp ba, liên kết mờ nhạt.
  • Gray 400 (#808080): Văn bản giữ chỗ, trạng thái vô hiệu hóa.
  • Gray 100 (#ebebeb): Viền, đường viền thẻ, đường phân cách.
  • Gray 50 (#fafafa): Tông bề mặt tinh tế, điểm nổi bật bóng bên trong.

Bề mặt & Lớp phủ

  • Overlay Backdrop (hsla(0, 0%, 98%, 1)): --ds-overlay-backdrop-color, nền tối modal/hộp thoại.
  • Selection Text (hsla(0, 0%, 95%, 1)): --geist-selection-text-color, điểm nổi bật chọn văn bản.
  • Badge Blue Bg (#ebf5ff): Nền huy hiệu hình viên thuốc, bề mặt xanh tông.
  • Badge Blue Text (#0068d6): Văn bản huy hiệu hình viên thuốc, xanh đậm hơn cho dễ đọc.

Bóng & Chiều sâu

  • Border Shadow (rgba(0, 0, 0, 0.08) 0px 0px 0px 1px): Đặc trưng — thay thế viền truyền thống.
  • Subtle Elevation (rgba(0, 0, 0, 0.04) 0px 2px 2px): Nâng tối thiểu cho thẻ.
  • Card Stack (rgba(0,0,0,0.08) 0px 0px 0px 1px, rgba(0,0,0,0.04) 0px 2px 2px, rgba(0,0,0,0.04) 0px 8px 8px -8px, #fafafa 0px 0px 0px 1px): Bóng thẻ đa lớp đầy đủ.
  • Ring Border (rgb(235, 235, 235) 0px 0px 0px 1px): Vòng viền xám nhạt cho tab và hình ảnh.

3. Quy tắc Typography

Họ font

  • Chính: Geist, với các font dự phòng: Arial, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol
  • Monospace: Geist Mono, với các font dự phòng: ui-monospace, SFMono-Regular, Roboto Mono, Menlo, Monaco, Liberation Mono, DejaVu Sans Mono, Courier New
  • Tính năng OpenType: "liga" bật toàn cục trên tất cả văn bản Geist; "tnum" cho số dạng bảng trên các chú thích cụ thể.

Phân cấp

Vai trò Font Cỡ Độ đậm Chiều cao dòng Khoảng cách chữ Ghi chú
Display Hero Geist 48px (3.00rem) 600 1.00–1.17 (chật) -2.4px đến -2.88px Nén tối đa, tác động quảng cáo
Section Heading Geist 40px (2.50rem) 600 1.20 (chật) -2.4px Tiêu đề phần tính năng
Sub-heading Large Geist 32px (2.00rem) 600 1.25 (chật) -1.28px Tiêu đề thẻ, phần phụ
Sub-heading Geist 32px (2.00rem) 400 1.50 -1.28px Tiêu đề phụ nhẹ hơn
Card Title Geist 24px (1.50rem) 600 1.33 -0.96px Thẻ tính năng
Card Title Light Geist 24px (1.50rem) 500 1.33 -0.96px Tiêu đề thẻ thứ cấp
Body Large Geist 20px (1.25rem) 400 1.80 (thoáng) normal Phần giới thiệu, mô tả tính năng
Body Geist 18px (1.13rem) 400 1.56 normal Văn bản đọc tiêu chuẩn
Body Small Geist 16px (1.00rem) 400 1.50 normal Văn bản UI tiêu chuẩn
Body Medium Geist 16px (1.00rem) 500 1.50 normal Điều hướng, văn bản nhấn mạnh
Body Semibold Geist 16px (1.00rem) 600 1.50 -0.32px Nhãn mạnh, trạng thái hoạt động
Button / Link Geist 14px (0.88rem) 500 1.43 normal Nút, liên kết, chú thích
Button Small Geist 14px (0.88rem) 400 1.00 (chật) normal Nút nhỏ gọn
Caption Geist 12px (0.75rem) 400–500 1.33 normal Siêu dữ liệu, thẻ nhãn
Mono Body Geist Mono 16px (1.00rem) 400 1.50 normal Khối mã
Mono Caption Geist Mono 13px (0.81rem) 500 1.54 normal Nhãn mã
Mono Small Geist Mono 12px (0.75rem) 500 1.00 (chật) normal text-transform: uppercase, nhãn kỹ thuật
Micro Badge Geist 7px (0.44rem) 700 1.00 (chật) normal text-transform: uppercase, huy hiệu cực nhỏ

Nguyên tắc

  • Nén như bản sắc: Geist Sans ở kích thước hiển thị sử dụng khoảng cách chữ -2.4px đến -2.88px — khoảng theo dõi âm mạnh nhất trong bất kỳ hệ thống thiết kế lớn nào. Điều này tạo ra văn bản cảm giác thu gọn, như mã được tối ưu hóa cho sản xuất. Khoảng theo dõi dần nới lỏng khi kích thước giảm: -1.28px ở 32px, -0.96px ở 24px, -0.32px ở 16px, và normal ở 14px.
  • Chữ ghép ở khắp nơi: Mọi phần tử văn bản Geist đều bật "liga" OpenType. Chữ ghép không phải để trang trí — chúng mang tính cấu trúc, tạo ra các kết hợp glyph chặt chẽ và hiệu quả hơn.
  • Ba độ đậm, vai trò nghiêm ngặt: 400 (thân bài/đọc), 500 (UI/tương tác), 600 (tiêu đề/nhấn mạnh). Không có đậm (700) ngoại trừ huy hiệu micro cực nhỏ. Phạm vi độ đậm hẹp này tạo ra phân cấp thông qua kích thước và khoảng theo dõi, không phải qua độ đậm.
  • Mono cho bản sắc: Geist Mono in hoa với "tnum" hoặc "liga" đóng vai trò là giọng nói "console dành cho nhà phát triển" — nhãn kỹ thuật nhỏ gọn kết nối trang marketing với sản phẩm.

4. Phong cách Thành phần

Nút

Nút trắng chính (Viền bằng bóng)

  • Nền: #ffffff
  • Văn bản: #171717
  • Đệm: 0px 6px (tối thiểu — rộng theo nội dung)
  • Bán kính: 6px (bo tròn tinh tế)
  • Bóng: rgb(235, 235, 235) 0px 0px 0px 1px (vòng viền)
  • Khi di chuột: nền chuyển sang var(--ds-gray-1000) (tối)
  • Focus: viền 2px solid var(--ds-focus-color) + bóng var(--ds-focus-ring)
  • Dùng: Nút thứ cấp tiêu chuẩn

Nút tối chính (Suy luận từ hệ thống Geist)

  • Nền: #171717
  • Văn bản: #ffffff
  • Đệm: 8px 16px
  • Bán kính: 6px
  • Dùng: CTA chính ("Start Deploying", "Get Started")

Nút / Huy hiệu hình viên thuốc

  • Nền: #ebf5ff (xanh tông)
  • Văn bản: #0068d6
  • Đệm: 0px 10px
  • Bán kính: 9999px (hình viên thuốc đầy)
  • Font: 12px độ đậm 500
  • Dùng: Huy hiệu trạng thái, thẻ nhãn, nhãn tính năng

Hình viên thuốc lớn (Điều hướng)

  • Nền: trong suốt hoặc #171717
  • Bán kính: 64px–100px
  • Dùng: Điều hướng tab, bộ chọn phần

Thẻ & Vùng chứa

  • Nền: #ffffff
  • Viền: thông qua bóng — rgba(0, 0, 0, 0.08) 0px 0px 0px 1px
  • Bán kính: 8px (tiêu chuẩn), 12px (thẻ nổi bật/hình ảnh)
  • Ngăn xếp bóng: rgba(0,0,0,0.08) 0px 0px 0px 1px, rgba(0,0,0,0.04) 0px 2px 2px, #fafafa 0px 0px 0px 1px
  • Thẻ hình ảnh: 1px solid #ebebeb với bán kính trên 12px
  • Khi di chuột: tăng cường bóng tinh tế

Ô nhập & Biểu mẫu

  • Radio: kiểu dáng tiêu chuẩn với focus nền var(--ds-gray-200)
  • Bóng focus: 1px 0 0 0 var(--ds-gray-alpha-600)
  • Viền focus: 2px solid var(--ds-focus-color) — vòng focus xanh nhất quán
  • Viền: thông qua kỹ thuật bóng, không phải viền truyền thống

Điều hướng

  • Điều hướng ngang gọn gàng trên nền trắng, dính
  • Logotype Vercel căn trái, 262x52px
  • Liên kết: Geist 14px độ đậm 500, văn bản #171717
  • Hoạt động: độ đậm 600 hoặc gạch chân
  • CTA: nút hình viên thuốc tối ("Start Deploying", "Contact Sales")
  • Di động: menu hamburger thu gọn
  • Menu thả xuống sản phẩm với menu đa cấp

Xử lý hình ảnh

  • Ảnh chụp màn hình sản phẩm với viền 1px solid #ebebeb
  • Hình ảnh bo tròn trên: bán kính 12px 12px 0px 0px
  • Ảnh chụp màn hình dashboard/xem trước mã chiếm ưu thế trong các phần tính năng
  • Nền gradient mềm mại phía sau hình ảnh hero (pastel đa màu)

Thành phần đặc biệt

Đường ống luồng công việc

  • Đường ống ngang ba bước: Develop → Preview → Ship
  • Mỗi bước có màu nhấn riêng: Xanh → Hồng → Đỏ
  • Kết nối bằng đường/mũi tên
  • Ẩn dụ thị giác cho đề xuất giá trị cốt lõi của Vercel

Thanh tin cậy / Lưới logo

  • Logo công ty (Perplexity, ChatGPT, Cursor, v.v.) ở dạng grayscale
  • Cuộn ngang hoặc bố cục lưới
  • Phân cách viền #ebebeb tinh tế

Thẻ số liệu

  • Hiển thị số lớn (ví dụ: "10x faster")
  • Geist 48px độ đậm 600 cho số liệu
  • Mô tả bên dưới bằng văn bản thân bài màu xám
  • Vùng chứa thẻ có viền bằng bóng

5. Nguyên tắc Bố cục

Hệ thống khoảng cách

  • Đơn vị cơ sở: 8px
  • Thang: 1px, 2px, 3px, 4px, 5px, 6px, 8px, 10px, 12px, 14px, 16px, 32px, 36px, 40px
  • Lưu ý: nhảy từ 16px lên 32px — không có 20px hay 24px trong thang chính

Lưới & Vùng chứa

  • Chiều rộng nội dung tối đa: khoảng 1200px
  • Hero: một cột căn giữa với đệm trên hào phóng
  • Phần tính năng: lưới 2–3 cột cho thẻ
  • Đường phân cách toàn chiều rộng sử dụng border-bottom: 1px solid #171717
  • Ảnh chụp màn hình mã/dashboard toàn chiều rộng hoặc có viền

Triết lý khoảng trắng

  • Sự trống rỗng như phòng trưng bày: Đệm dọc lớn giữa các phần (80px–120px+). Khoảng trắng CHÍNH LÀ thiết kế — nó truyền đạt rằng Vercel không cần chứng minh gì và không có gì cần che giấu.
  • Văn bản nén, không gian mở rộng: Khoảng cách chữ âm mạnh trên tiêu đề được cân bằng bởi khoảng trắng xung quanh rộng rãi. Văn bản dày đặc; không gian xung quanh nó bao la.
  • Nhịp phần: Các phần trắng xen kẽ với các phần trắng — không có sự thay đổi màu sắc giữa các phần. Sự phân tách đến từ viền (viền bóng) và khoảng cách mà thôi.

Thang bán kính bo tròn

  • Micro (2px): Đoạn mã nội dòng, span nhỏ
  • Tinh tế (4px): Vùng chứa nhỏ
  • Tiêu chuẩn (6px): Nút, liên kết, phần tử chức năng
  • Thoải mái (8px): Thẻ, mục danh sách
  • Hình ảnh (12px): Thẻ nổi bật, vùng chứa hình ảnh (bo tròn trên)
  • Lớn (64px): Hình viên thuốc điều hướng tab
  • XL (100px): Liên kết điều hướng lớn
  • Hình viên thuốc đầy (9999px): Huy hiệu, hình viên thuốc trạng thái, thẻ nhãn
  • Tròn (50%): Nút chuyển đổi menu, vùng chứa avatar

6. Chiều sâu & Độ cao

Mức Xử lý Dùng
Phẳng (Mức 0) Không có bóng Nền trang, khối văn bản
Vòng (Mức 1) rgba(0,0,0,0.08) 0px 0px 0px 1px Bóng-thay-viền cho hầu hết các phần tử
Vòng nhạt (Mức 1b) rgb(235,235,235) 0px 0px 0px 1px Vòng nhạt hơn cho tab, hình ảnh
Thẻ tinh tế (Mức 2) Vòng + rgba(0,0,0,0.04) 0px 2px 2px Thẻ tiêu chuẩn với nâng tối thiểu
Thẻ đầy đủ (Mức 3) Vòng + Tinh tế + rgba(0,0,0,0.04) 0px 8px 8px -8px + vòng trong #fafafa Thẻ nổi bật, bảng được làm nổi bật
Focus (Khả năng tiếp cận) Viền 2px solid hsla(212, 100%, 48%, 1) Focus bàn phím trên tất cả phần tử tương tác

Triết lý bóng: Vercel có thể là hệ thống bóng tinh vi nhất trong thiết kế web hiện đại. Thay vì sử dụng bóng cho độ cao theo nghĩa truyền thống của Material Design, Vercel sử dụng các ngăn xếp bóng đa giá trị, trong đó mỗi lớp có một mục đích kiến trúc riêng biệt: một lớp tạo "viền" (lan rộng 0px, 1px), một lớp thêm độ mềm xung quanh (mờ 2px), một lớp xử lý chiều sâu theo khoảng cách (mờ 8px với lan rộng âm), và một vòng trong (#fafafa) tạo ra điểm nổi bật tinh tế khiến thẻ "phát sáng" từ bên trong. Cách tiếp cận nhiều lớp này có nghĩa là các thẻ cảm giác được xây dựng, không phải lơ lửng.

Chiều sâu trang trí

  • Gradient hero: lớp rửa gradient đa màu pastel mềm mại đằng sau nội dung hero (hầu như vô hình, tạo bầu không khí)
  • Viền phần: 1px solid #171717 (đường tối đầy đủ) giữa các phần lớn
  • Không có sự thay đổi màu nền — chiều sâu đến hoàn toàn từ việc xếp lớp bóng và tương phản viền

7. Nên và Không nên

Nên

  • Dùng Geist Sans với khoảng cách chữ âm mạnh ở kích thước hiển thị (-2.4px đến -2.88px ở 48px)
  • Dùng bóng-thay-viền (0px 0px 0px 1px rgba(0,0,0,0.08)) thay vì viền CSS truyền thống
  • Bật "liga" trên tất cả văn bản Geist — chữ ghép mang tính cấu trúc, không phải tùy chọn
  • Dùng hệ thống ba độ đậm: 400 (thân bài), 500 (UI), 600 (tiêu đề)
  • Áp dụng màu nhấn theo luồng công việc (Đỏ/Hồng/Xanh) chỉ trong bối cảnh luồng công việc của chúng
  • Dùng ngăn xếp bóng đa lớp cho thẻ (viền + độ cao + xung quanh + điểm nổi bật bên trong)
  • Giữ bảng màu không màu — các sắc xám từ #171717 đến #ffffff là hệ thống
  • Dùng #171717 thay vì #000000 cho văn bản chính — sắc ấm vi tế quan trọng

Không nên

  • Không dùng khoảng cách chữ dương trên Geist Sans — luôn âm hoặc bằng không
  • Không dùng độ đậm 700 (đậm) trên văn bản thân bài — 600 là tối đa, chỉ dùng cho tiêu đề
  • Không dùng border CSS truyền thống trên thẻ — dùng kỹ thuật viền-bóng
  • Không đưa màu ấm (cam, vàng, xanh lá) vào chrome UI
  • Không áp dụng màu nhấn theo luồng công việc (Ship Red, Preview Pink, Develop Blue) mang tính trang trí
  • Không dùng bóng nặng (> 0.1 độ mờ) — hệ thống bóng ở mức thì thầm
  • Không tăng khoảng cách chữ cho văn bản thân bài — Geist được thiết kế để chạy chặt
  • Không dùng bán kính hình viên thuốc (9999px) trên nút hành động chính — hình viên thuốc chỉ dành cho huy hiệu/thẻ nhãn
  • Không bỏ qua vòng trong #fafafa trong bóng thẻ — đó là ánh sáng tạo nên sự hoạt động của hệ thống

8. Hành vi Responsive

Điểm dừng

Tên Chiều rộng Thay đổi chính
Mobile Small <400px Một cột chặt, đệm tối thiểu
Mobile 400–600px Di động tiêu chuẩn, bố cục xếp chồng
Tablet Small 600–768px Lưới 2 cột bắt đầu
Tablet 768–1024px Lưới thẻ đầy đủ, đệm mở rộng
Desktop Small 1024–1200px Bố cục desktop tiêu chuẩn
Desktop 1200–1400px Bố cục đầy đủ, chiều rộng nội dung tối đa
Large Desktop >1400px Căn giữa, lề rộng rãi

Mục tiêu chạm

  • Nút dùng đệm thoải mái (8px–16px dọc)
  • Liên kết điều hướng ở 14px với khoảng cách đủ
  • Huy hiệu hình viên thuốc có 10px đệm ngang cho mục tiêu chạm
  • Nút chuyển đổi menu di động dùng nút tròn bán kính 50%

Chiến lược thu gọn

  • Hero: hiển thị 48px → thu nhỏ, duy trì khoảng theo dõi âm theo tỷ lệ
  • Điều hướng: liên kết ngang + CTA → menu hamburger
  • Thẻ tính năng: 3 cột → 2 cột → một cột xếp chồng
  • Ảnh chụp màn hình mã: duy trì tỷ lệ khung hình, có thể cuộn ngang
  • Logo thanh tin cậy: lưới → cuộn ngang
  • Footer: nhiều cột → một cột xếp chồng
  • Khoảng cách phần: 80px+ → 48px trên di động

Hành vi hình ảnh

  • Ảnh chụp màn hình dashboard duy trì xử lý viền ở mọi kích thước
  • Gradient hero mềm mại/đơn giản hơn trên di động
  • Ảnh chụp màn hình sản phẩm dùng hình ảnh responsive với bán kính viền nhất quán
  • Các phần toàn chiều rộng duy trì xử lý từ cạnh đến cạnh

9. Hướng dẫn Prompt cho Agent

Tham chiếu màu nhanh

  • CTA chính: Vercel Black (#171717)
  • Nền: Pure White (#ffffff)
  • Văn bản tiêu đề: Vercel Black (#171717)
  • Văn bản thân bài: Gray 600 (#4d4d4d)
  • Viền (bóng): rgba(0, 0, 0, 0.08) 0px 0px 0px 1px
  • Liên kết: Link Blue (#0072f5)
  • Vòng focus: Focus Blue (hsla(212, 100%, 48%, 1))

Ví dụ prompt thành phần

  • "Create a hero section on white background. Headline at 48px Geist weight 600, line-height 1.00, letter-spacing -2.4px, color #171717. Subtitle at 20px Geist weight 400, line-height 1.80, color #4d4d4d. Dark CTA button (#171717, 6px radius, 8px 16px padding) and ghost button (white, shadow-border rgba(0,0,0,0.08) 0px 0px 0px 1px, 6px radius)."
  • "Design a card: white background, no CSS border. Use shadow stack: rgba(0,0,0,0.08) 0px 0px 0px 1px, rgba(0,0,0,0.04) 0px 2px 2px, #fafafa 0px 0px 0px 1px. Radius 8px. Title at 24px Geist weight 600, letter-spacing -0.96px. Body at 16px weight 400, #4d4d4d."
  • "Build a pill badge: #ebf5ff background, #0068d6 text, 9999px radius, 0px 10px padding, 12px Geist weight 500."
  • "Create navigation: white sticky header. Geist 14px weight 500 for links, #171717 text. Dark pill CTA 'Start Deploying' right-aligned. Shadow-border on bottom: rgba(0,0,0,0.08) 0px 0px 0px 1px."
  • "Design a workflow section showing three steps: Develop (text color #0a72ef), Preview (#de1d8d), Ship (#ff5b4f). Each step: 14px Geist Mono uppercase label + 24px Geist weight 600 title + 16px weight 400 description in #4d4d4d."

Hướng dẫn lặp lại

  1. Luôn dùng bóng-thay-viền thay vì viền CSS — 0px 0px 0px 1px rgba(0,0,0,0.08) là nền tảng
  2. Khoảng cách chữ theo tỷ lệ với cỡ font: -2.4px ở 48px, -1.28px ở 32px, -0.96px ở 24px, normal ở 14px
  3. Chỉ ba độ đậm: 400 (đọc), 500 (tương tác), 600 (thông báo)
  4. Màu sắc mang tính chức năng, không bao giờ trang trí — màu luồng công việc (Đỏ/Hồng/Xanh) chỉ đánh dấu các giai đoạn đường ống
  5. Vòng trong #fafafa trong bóng thẻ là thứ tạo ra ánh sáng bên trong đặc trưng của thẻ Vercel
  6. Geist Mono in hoa cho nhãn kỹ thuật, Geist Sans cho mọi thứ còn lại