Offline event · Sài Gòn tháng 7
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-darkrgba(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.
--font-sansAa Ăă Ââ Đđ Êê Ôô Ơơ Ưư
à á ả ã ạ · ầ ấ ẩ ẫ ậ · ờ ớ ở ỡ ợ
- Aa
300 - Aa
400 - Aa
500 - Aa
600 - Aa
700
--font-monoAa Ăă Ââ Đđ Êê Ôô Ơơ Ưư
à á ả ã ạ · ầ ấ ẩ ẫ ậ · ờ ớ ở ỡ ợ
- Aa
400 - Aa
500 - Aa
600
Công việc & hệ thống
Sản phẩm & công nghệ
Kinh doanh & marketing
Công việc được tổ chức ra sao, vướng ở đâu, thay đổi gì?
Mình học, suy nghĩ, cộng tác và sống ra sao?
Hướng dẫn
.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 / rule | declared | now | used by |
|---|---|---|---|
--container-site | 1280px |
— |
.wrap max content |
--spacing-gutter | clamp(20px, 5.5vw, 80px) |
— |
.wrap padding |
--radius-site | 6px |
— |
.card, input, .program |
.section | padding: clamp(64px, 9vw, 120px) 0; | — | section rhythm |
.section-head | margin-bottom: clamp(36px, 5vw, 64px) | — | head → body |
.grid-2 / .grid-3 | gap: 24px | 24px | cards |
.card | padding: 28px | 28px | card body |
var(--radius).card · input · image999px.btn · .filter · .type-chip1px.eyebrow ::before · .logo
04
Chuyển động
Chuyển động giao diện tôn trọng reduced-motion.
fx="v3"
home · hubs · editorial
beat 1eyebrow → heading linesrv-up .8s+90ms/line→ lead → actionsfx-up .7sbeat 2section bodyfx-in .7s+120ms- trigger
IntersectionObserver .25, once - hover: row hairline
.45s, chip lift2px,↗nudge
fx="calm"
landing · sales · event · shop · catalog
<html data-fx="calm">- no
fx-prescript, no entrances @view-transition { navigation: none }- hover + functional UI only
prefers-reduced-motion
all pages
.v3 * { transition: none; animation: none }@view-transitionofffx.tsinit → 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.
.btn.btn-ink · .arrow-link.btn-primary · .btn-ghost · .btn-disabledeyebrow
.eyebrow · .meta.type-chip.{type} · .lens-tag · .status.ex-filters .filter[aria-pressed] · .ex-tabs.search-box.card
background: var(--paper)
.card.white
background: var(--white)
.card.wash
background: var(--wash)
.card.dark
background: var(--dark)
.card · .card.white · .card.wash · .card.dark<Row> · .row2Video ngắn
Xem tất cả<ShortsStrip> · .ce-short-cardeyebrow
.display-l
.lead
.page-head > .wrap · .eyebrow · .display-l · .lead.t-b1 .cat-up · .cat-archive.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 ý.
text-wrap: wrapHiểu mô hình, dữ liệu, khách hàng và cách vận hành kinh doanh.
balance · NBSPHiểu mô hình, dữ liệu, khách hàng và cách vận hành kinh doanh.
text-wrap: wrapMình học, suy nghĩ, cộng tác và sống ra sao?
balance · NBSPMình học, suy nghĩ, cộng tác và sống ra sao?
- Không ngắt giữa từ.
.v3 h1–h4 { word-break: normal; overflow-wrap: break-word } - 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 - Dấu — – · đi cùng chữ phía trước, không đứng đầu dòng mới.
bindDashes() · h1–h3, .title, .eyebrow - Chỉ tách dòng tại khoảng trắng ASCII.
splitLines() · /[ \t\n\r]+/ - text-wrap: balance
h1, h2, .display-l, .display-xl
07
Khu thành viên
mock/v3/members/PROPOSAL.mdmembers.css @theme
| token | now | v3 |
|---|---|---|
font-sans / font-serif | Inter / Fraunces | Be 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 / bad | tailwind green / yellow / red | #0b6b4f#8a5a00#b42318 |
bg-grad-* | pastel gradients | flat surface-subtle |
hover shadow-md | shadow | none + border line-strong |
radius md / lg · button | 6 / 8 · 6 | 6 / 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.
.card
.card
Không dùng riêng màu sắc để biểu thị trạng thái.
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.
Hiểu mô hình, dữ liệu, khách hàng và cách vận hành kinh doanh.