Design System v1

Lộc Minh IELTS
Visual Language

Tokens, components & patterns dùng chung cho tất cả landing page. Tham khảo file này khi tạo trang mới để đảm bảo consistent.

Colors

Color palette dưới dạng CSS variables. Dùng var(--blue-500) thay vì hardcode hex.

Blue scale

--blue-50
#EEF3FF
--blue-100
#DDE6FF
--blue-200
#B8C9F2
--blue-300
#7B98E8
--blue-500
#2F5BE0
--blue-700
#1B3FB2

Ink (text)

--ink
#0B1730
--ink-soft
#3A4663
--ink-mute
#94a0b8

Accent (yellow)

--accent
#FFB72B
--accent-deep
#E89A00
--accent-soft
#FFF4D9

Semantic

--success
#2BC275
--danger
#C8102E

Neutrals

--white
#FFFFFF
--bg-page
#F4F7FF
--bg-soft
#F1F4FB

Typography

2 font families: Inter (body) và Space Grotesk (display/headings).

Display H1 / Space Grotesk

Display H2

Display H3

Body large — Inter 17px, ink-soft. Dùng cho lead paragraphs trong section heads.

Body regular — Inter 15px, ink. Mặc định cho text content.

Body small — Inter 13px, ink-mute. Dùng cho metadata, captions.

font-family: var(--font-body); /* Inter */ font-family: var(--font-display); /* Space Grotesk */ font-family: var(--font-mono); /* Space Grotesk (mono context) */

Shadows & Radii

3 elevation levels và 5 border radius scales.

--shadow-sm
--shadow-md
--shadow-lg

Radii

--radius-sm (8px)
--radius-md (14px)
--radius-lg (22px)
--radius-xl (28px)
--radius-pill

Buttons

3 variants: primary (dark), accent (yellow), ghost (outline). Tất cả đều có ripple hover effect.

<button class="btn btn-primary">Primary</button> <button class="btn btn-accent">Accent</button> <button class="btn btn-ghost">Ghost</button>

Badge pill

Live indicator với pulse animation, dùng cho hero — "Đang mở đăng ký", "Live now", v.v.

Đang mở đăng ký khoá tháng 6
<span class="badge-pill"> <span class="pulse"></span> Text here </span>

Section heads

Cấu trúc tiêu đề chuẩn cho mỗi section: eyebrow + h2 + tagline.

Eyebrow text

Tiêu đề section ở đây

Mô tả ngắn, thường 1-2 dòng để dẫn dắt vào nội dung bên dưới.

Forms

Inline form (horizontal) với input + submit button. Message states cho success/error.

On light background

Message states

Đã gửi thành công! Chúng tôi sẽ liên hệ trong 24 giờ.
Số điện thoại không hợp lệ. Vui lòng kiểm tra lại.

On dark background

Override .form-message.success.error cho dark theme (xem cách [IELTS-Coaching.html](IELTS-Coaching.html) làm trong section .cta-final).

FAQ accordion

Dùng native <details> element — không cần JavaScript.

Câu hỏi đầu tiên?

Trả lời chi tiết ở đây. Có thể nhiều dòng và format markdown nếu cần.

Câu hỏi thứ hai (đang mở)?

Khi bạn click vào summary, dấu + sẽ đổi thành dấu –.

Info trigger

Icon button nhỏ để mở modal/tooltip, đặt inline cạnh text.

Học phí đã bao gồm tài liệu và 1 buổi test trình độ .

Reveal on scroll

Thêm class .reveal + toggle .in bằng IntersectionObserver. Variants: .from-left, .from-right, .zoom, delays .delay-1.delay-4.

<div class="reveal">Fade up</div> <div class="reveal from-left delay-2">Slide from left</div> <div class="reveal zoom delay-3">Zoom in</div>

All tokens reference

Bảng tham chiếu nhanh tất cả CSS variables. File: design-system/tokens.css

CategoryTokenValue
Font--font-bodyInter, sans-serif
Font--font-displaySpace Grotesk, sans-serif
Shadow--shadow-sm0 10px 25px -15px rgba(27,63,178,.35)
Shadow--shadow-md0 18px 40px -20px rgba(27,63,178,.4)
Shadow--shadow-lg0 30px 60px -25px rgba(27,63,178,.35)
Radius--radius-sm8px
Radius--radius-md14px
Radius--radius-lg22px
Radius--radius-xl28px
Radius--radius-pill999px
Layout--container-max1180px
Layout--container-pad24px
Line--linergba(47,91,224,.18)