SHIP WITH CLAUDE Build App nội bộ cho công ty. Ship app của riêng bạn với Claude Code Đăng ký →

Design system

Hệ thị giác v3

Bố cục có cấu trúc, chữ lớn nét nhẹ, màu dùng theo token và sơ đồ làm rõ thông tin thay vì chỉ để trang trí.

app.css @themesite.css .v3fx.tst-*.css

01

Màu

Màu được quản lý bằng token trong mã nguồn, không lấy giá trị trực tiếp từ ảnh chụp màn hình.

Bảng màu v3

  • white --color-white · --white #ffffff ———
  • ink --color-ink · --ink #0a0f14 ———
  • dark --color-dark · --dark #051c2c ———
  • accent --color-accent · --accent #2251ff ———
  • paper --color-paper · --paper #f7f8fa ———
  • wash --color-wash · --wash #eef2ff ———
  • muted --color-muted · --muted #5b6675 ———
  • line --color-line · --line #e3e7ee ———
  • line-dark --color-line-dark · --line-dark rgba(255, 255, 255, .14) ———
  • accent-on-dark --color-accent-on-dark · --accent-on-dark #8ea2ff ———

Trạng thái

  • green --color-green #0b6b4f ———
  • green-soft --color-green-soft #edf8f3 ———
  • amber --color-amber #8a5a00 ———
  • amber-soft --color-amber-soft #fff6d6 ———
  • red --color-red #be123c ———
  • red-soft --color-red-soft #fff1f2 ———

Màu dữ liệu

  • sq-note --sq-note #5d7391 —
  • sq-explainer --sq-explainer #8ea2ff —
  • sq-evidence --sq-evidence #5fd3a8 —
  • sq-guide --sq-guide #ffffff —
  • tl-work --tl-work #8ea2ff —
  • tl-tech --tl-tech #2251ff —
  • tl-biz --tl-biz #ffffff —
  • tl-life --tl-life #5d7391 —

Tên cũ trỏ về v3

  • --color-soft#5b6675
  • --color-faint#8a94a3
  • --color-bg#ffffff
  • --color-card#ffffff
  • --color-border#e3e7ee
  • --color-border-light#eef1f5
  • --color-accent-soft#eef2ff
  • --color-accent-mid#cdd8ff

02

Kiểu chữ

Be Vietnam Pro là phông chữ chính; tiêu đề lớn dùng nét Light, còn thân bài, nhãn và nút có kiểu riêng.

Be Vietnam Pro--font-sans

Aa Ăă Ââ Đđ Êê Ôô Ơơ Ưư

à á ả ã ạ · ầ ấ ẩ ẫ ậ · ờ ớ ở ỡ ợ

  • Aa300
  • Aa400
  • Aa500
  • Aa600
  • Aa700
JetBrains Mono--font-mono

Aa Ăă Ââ Đđ Êê Ôô Ơơ Ưư

à á ả ã ạ · ầ ấ ẩ ẫ ậ · ờ ớ ở ỡ ợ

  • Aa400
  • Aa500
  • Aa600
.display-xl --text-display-xl clamp(48px, 7.2vw, 104px)
size
—
weight
—
line
—
track
—

Công việc & hệ thống

.display-l --text-display-l clamp(36px, 5vw, 72px)
size
—
weight
—
line
—
track
—

Sản phẩm & công nghệ

.title --text-title clamp(24px, 2.4vw, 34px)
size
—
weight
—
line
—
track
—

Kinh doanh & marketing

.lead --text-body-l clamp(18px, 1.5vw, 22px)
size
—
weight
—
line
—
track
—

Công việc được tổ chức ra sao, vướng ở đâu, thay đổi gì?

.body --text-body-m 17px
size
—
weight
—
line
—
track
—

Mình học, suy nghĩ, cộng tác và sống ra sao?

.label --text-label 13px
size
—
weight
—
line
—
track
—

Học hỏi & cuộc sống

.eyebrow --text-label 13px
size
—
weight
—
line
—
track
—

Hướng dẫn

code --font-mono
size
—
weight
—
line
—
track
—
.v3 .eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: var(--label);
  font-weight: 500;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 20px;
}

03

Khoảng cách và bố cục

Bố cục theo lưới rõ ràng, thẻ nội dung có cấu trúc, đường phân cách và khoảng trống hợp lý.

token / ruledeclarednowused by
--container-site1280px — .wrap max content
--spacing-gutterclamp(20px, 5.5vw, 80px) — .wrap padding
--radius-site6px — .card, input, .program
.sectionpadding: clamp(64px, 9vw, 120px) 0;—section rhythm
.section-headmargin-bottom: clamp(36px, 5vw, 64px)—head → body
.grid-2 / .grid-3gap: 24px24pxcards
.cardpadding: 28px28pxcard body
  • var(--radius).card · input · image
  • 999px.btn · .filter · .type-chip
  • 1px.eyebrow ::before · .logo

04

Chuyển động

Chuyển động giao diện tôn trọng reduced-motion.

fx="v3"

home · hubs · editorial

  1. beat 1 eyebrow → heading lines rv-up .8s +90ms/line → lead → actions fx-up .7s
  2. beat 2 section body fx-in .7s +120ms
  3. trigger IntersectionObserver .25, once
  4. hover: row hairline .45s, chip lift 2px, ↗ nudge
fx="calm"

landing · sales · event · shop · catalog

  1. <html data-fx="calm">
  2. no fx-pre script, no entrances
  3. @view-transition { navigation: none }
  4. hover + functional UI only
prefers-reduced-motion

all pages

  1. .v3 * { transition: none; animation: none }
  2. @view-transition off
  3. fx.ts init → static from first paint
--ease-sitecubic-bezier(.2, .7, .2, 1)

beat 1

eyebrow → heading → lead

fx-item · --d

05

Thành phần

Các biến thể của chương trình dùng chung hệ token cơ bản.

Button · light.btn.btn-ink · .arrow-link
Button · dark.btn-primary · .btn-ghost · .btn-disabled

eyebrow

meta · 19 tháng 10, 2026

Eyebrow · meta.eyebrow · .meta
Ghi chépGiải thíchThử nghiệmLiên kếtHướng dẫnGhi chép
Công việc & hệ thống Sản phẩm & công nghệ Kinh doanh & marketing Học hỏi & cuộc sống
openended
Type chip · lens tag · status.type-chip.{type} · .lens-tag · .status
Chủ đề
Loại nội dung
Filter chips · tabs.ex-filters .filter[aria-pressed] · .ex-tabs
Search box.search-box
01

.card

background: var(--paper)

card-foot
02

.card.white

background: var(--white)

card-foot
03

.card.wash

background: var(--wash)

card-foot
04

.card.dark

background: var(--dark)

card-foot
Card · light / dark.card · .card.white · .card.wash · .card.dark
Row<Row> · .row2
Short video<ShortsStrip> · .ce-short-card

eyebrow

.display-l

.lead

Page head.page-head > .wrap · .eyebrow · .display-l · .lead
Event · catalog.t-b1 .cat-up · .cat-archive
Shop card.t-b2 .sx-filter · .sx-card · <Cover>

06

Tiêu đề tiếng Việt

Khi tiêu đề chưa vừa khung, hãy điều chỉnh bố cục và ngắt dòng thay vì sửa chữ hay cắt bớt ý.

Trình duyệt tự ngắt text-wrap: wrap

Hiểu mô hình, dữ liệu, khách hàng và cách vận hành kinh doanh.

Quy tắc v3 balance · NBSP

Hiểu mô hình, dữ liệu, khách hàng và cách vận hành kinh doanh.

Trình duyệt tự ngắt text-wrap: wrap

Mình học, suy nghĩ, cộng tác và sống ra sao?

Quy tắc v3 balance · NBSP

Mình học, suy nghĩ, cộng tác và sống ra sao?

  1. Không ngắt giữa từ..v3 h1–h4 { word-break: normal; overflow-wrap: break-word }
  2. Giữ các cụm ngắn (≤ 16 ký tự) quanh dấu phẩy hoặc dấu hai chấm trên cùng một dòng.nowrapPhrases() · h1, .display-l, .display-xl
  3. Dấu — – · đi cùng chữ phía trước, không đứng đầu dòng mới.bindDashes() · h1–h3, .title, .eyebrow
  4. Chỉ tách dòng tại khoảng trắng ASCII.splitLines() · /[ \t\n\r]+/
  5. text-wrap: balanceh1, h2, .display-l, .display-xl

07

Khu thành viên

mock/v3/members/PROPOSAL.mdmembers.css @theme

tokennowv3
font-sans / font-serifInter / FrauncesBe Vietnam Pro / Be Vietnam Pro 300
ink base / muted / subtle / inverse#09090b #52525b #71717a #fafafa#0a0f14#5b6675#6b7584#ffffff
surface base / subtle / muted / inverse#ffffff #fafafa #f4f4f5 #09090b#ffffff#f7f8fa#eef1f5#051c2c
line / line-strong#e4e4e7 #d4d4d8#e3e7ee#cfd6e2
accent / hover / muted#4f46e5 #4338ca #eef2ff#2251ff#1a40d9#eef2ff
ok / warn / badtailwind green / yellow / red#0b6b4f#8a5a00#b42318
bg-grad-*pastel gradientsflat surface-subtle
hover shadow-mdshadownone + border line-strong
radius md / lg · button6 / 8 · 66 / 8 · rounded-full

08

Nên và không nên

Tránh dùng hiệu ứng chuyển màu hoặc đổ bóng tùy tiện.

01

.card

Nên
01

.card

Không nên

Không dùng riêng màu sắc để biểu thị trạng thái.

openended
Nên
Không nên

Không cắt bớt hoặc đổi nghĩa tiêu đề cho vừa khung; hãy chỉnh bố cục hoặc ngắt dòng.

Hiểu mô hình, dữ liệu, khách hàng và cách vận hành kinh doanh.

Nên

Hiểu mô hình, dữ liệu, khách hàng và cách vận hành kinh doanh.

Không nên
—
0:00

Chia sẻ ảnh

Bắt đầu gõ để tìm kiếm...