Brand book.
Trendory Holding's brand guide. Covers color, typography, layout, components, voice, and engineering rules. This page is a working document — the single source of truth for every visual and editorial decision on trendory.vn.
Version 1.0 · Updated 2026-04
1. Brand principles
Five rules. Everything else is derived from them.
- Editorial over marketing. We are a fund and an operator, not a SaaS. Pages read like a publication, not a landing page. No illustrations, no playful icons, no hero videos.
- Serif as identity. The display face (Fraunces) signals capital, long-term thinking, and institutional posture. Sans (Inter) handles body legibility. Mono (JetBrains Mono) is reserved for metadata and eyebrows.
- Warm cream, not cold white. The palette is a warm off-white background with high-contrast ink. Accent orange is used sparingly — a signal, not a decoration.
- Space is a feature. Generous vertical rhythm, wide margins, and intentional emptiness. Density is used only where it earns meaning (tables, bullets, memos).
- Asymmetry with a grid. Text-left / imagery-right is the default hero rhythm. The 12-column grid underneath keeps everything aligned even when the composition looks editorial.
2. Color
All colors live in src/app/globals.css as CSS variables under @theme. Do not hardcode hex values in components — always use the token.
Surface & ink
| Token | Hex | Usage |
|---|---|---|
--color-bg | #faf6ee | Page background. Cards on page background. |
--color-bg-2 | #f2ead9 | Hover states, secondary surfaces, code blocks. |
--color-line | #e4d9c0 | Dividers between sections and list rows. |
--color-ink | #141311 | Primary text. Headings. |
--color-ink-soft | #4a4437 | Body copy, secondary text. |
--color-ink-mute | #8a8068 | Captions, metadata, inactive states. |
Accent
| Token | Hex | Usage |
|---|---|---|
--color-accent | #ca4e2c | Primary CTA, links in prose, <em> in display text. |
--color-gold | #b8914a | Kickers, eyebrow rules, H4 in essays. Never for body. |
Rules
- Accent is signal, not ornament. One accent-color element per viewport at most.
- Gold is for metadata. Kickers, dates, section identifiers. Not for prose.
- Never use pure white or pure black. Cream (
--color-bg) and ink (--color-ink) only.
3. Typography
Faces
| Role | Font | Variable |
|---|---|---|
| Display | Fraunces (variable, opsz 144) | --font-display |
| Body | Inter (300/400/500/600) | --font-body |
| Mono | JetBrains Mono (400/500) | --font-mono |
Fraunces carries the brand. Set font-variation-settings: "opsz" 144 on all display-size uses. <em> inside any heading auto-switches to italic, accent color, and a lighter weight — this is a signature treatment; do not override.
Type scale
| Class | Mobile → Desktop | Use |
|---|---|---|
.text-masthead | 64px → 96px | Hero H1 (home) |
.text-feature | 32px → 48px | Page H1 on non-hero pages |
.text-section | 28px → 40px | Section H2 inside a page |
.text-card | 22px → 26px | Card title |
.body-lg | clamp(16, 1.3vw, 19) | Lead paragraphs |
.body-md | 16px | Standard body copy |
4. Layout
Grid
- Container:
.wrap= max-width 1440px, centered, paddingclamp(20px, 5vw, 80px). - Grid: 12 columns inside
.wrapon desktop, 1 column on mobile. - Text column: cols 1–7 on desktop. Never wider than ~640px measure.
- Auxiliary column: cols 10–12 on desktop.
Vertical rhythm
| Surface | Padding-y |
|---|---|
| Hero | clamp(56, 8vw, 100) |
| Standard section | 72px mobile, 110px desktop |
| Sub-section | 56px mobile, 88px desktop |
Sections are separated by a single 1px line (--color-line) — never by background color alternation.
5. Components
Button — .btn
- Pill (
border-radius: 999px), padding 10px 16px. - Label: mono uppercase, 11.5px, 0.1em tracking.
- Base: transparent background,
--color-line-2border, ink label. - Hover: inverted — ink background, cream label.
.arr(→) slides right 3px. .btn-primary— accent background, white label..btn-ghost— same outline but softer border and ink-soft label.
Rule of one primary per viewport.
Fund card
Free-standing card, cream background (--color-bg), 1px line border, 10px radius, subtle shadow. Inside: label (14px ink), value (display clamp(34, 3vw, 44)), caption (13px ink-mute), CTA (13px accent). Border-radius stays at 10px — institutional, not consumer-app.
6. Iconography
We deliberately do not use an icon system. The only graphic elements:
- Logo mark — the wave-ish symbol in
/public/brand/. Nav 30px, footer 40px, error 64px. - Arrow glyph — the character
→(U+2192). Never a custom SVG arrow. - Gold rule — a 1px × 20–24px span for eyebrow/kicker brackets.
- Plus glyph — the character
+in mono, separating pillars in horizontal strips.
If a concept needs explaining, write one more sentence. Do not reach for an icon.
7. Motion
Principles: subtle, short, purposeful.
| Pattern | Use | Duration |
|---|---|---|
| Stagger-in text | Hero title, page H1 | 0.5s, 0.05s stagger |
| Reveal on scroll | Section content | 0.4–0.6s fade + 8–14px rise |
| Hover transitions | Buttons, links, cards | 0.18–0.25s ease |
| Marquee scroll | Marquee bar | 60s linear infinite |
All motion respects prefers-reduced-motion: reduce.
8. Content tone
The words are part of the design. A spotless visual system cannot save weak copy.
- Vietnamese + English are peers. Every page ships in both locales. Don't treat VI as a translation of EN — write each natively. Industry terms (SPV, LPAC, VCC, ILPA, cap table) stay in English inside VI copy.
- No clichés. No "full-stack ecosystem partner." No "unlocking the future." Write like a partner writing to a founder.
- Short sentences are fine. Short paragraphs too. Break the wall before it forms.
- Numbers are specific. "$100–200K ticket, decided in 3 weeks" beats "fast, founder-friendly checks."
- CTA verbs are direct. "Pitch us," "Request LP deck." Not "Get in touch."
- Legal language stays cold. Privacy and Terms are deliberately plain — no brand voice.
9. Responsive behavior
- Breakpoints (Tailwind defaults): sm 640 · md 768 · lg 1024 · xl 1280 · 2xl 1536. Custom: xs 480.
- Typography scales at md (768) — the single break for most display copy.
- Grid collapses to 1 column below lg (1024).
- Fund card, side rails, secondary imagery hidden below md — content-first on phones.
- Touch targets: minimum 40×40px for any interactive element.
10. Accessibility
- Contrast: all body copy meets WCAG AA against
--color-bg. Ink-mute on cream is the floor — do not go lighter for text that conveys meaning. - Focus states: every interactive element has a visible focus ring. Default
:focus-visibleis acceptable; do not remove it. - Every decorative element has
aria-hidden="true"— gold rules, arrows, background art, marquee, fund card overlay. - All images have
alt. Background images getrole="img"+aria-labelwhen they carry meaning; otherwisearia-hidden. - Respect
prefers-reduced-motion. No infinite loops become background processes on a reduced-motion viewer.
11. Working rules
- Don't hardcode colors or font sizes — use tokens and classes. If something doesn't have a token yet, add one in
globals.cssbefore using it. - Don't add icon libraries. If you think you need one, re-read §6.
- Don't add a new font. If you think you need one, bring it to the team first.
- Don't skip the translation. Every user-facing string lands in both
messages/vi.jsonandmessages/en.json. - Keep the hero one fold. It should render meaningfully without scroll on a 1366×768 laptop.
- Section borders are 1px
--color-line. Not 2px, not colored, not dashed. - One accent per viewport. Orange is rationed.
- Ship with both locales working. Test
/vi/...and/en/...before merging.
12. Contact
Questions, suggestions, or a case the guideline doesn't cover: brand@trendory.vn.