# MK Design System
## Overview
- **Framework**: Vue 3.5+
- **Styling**: Tailwind CSS v4 (CSS-first config, no tailwind.config.js)
- **Font**: Roboto variable (self-hosted woff2), Roboto Slab, Material Icons Round
- **Icons**: Material Icons Round via `.material-icons` class
- **Color mode**: Light (CSS custom properties ready for dark mode extension)
- **Token source**: `tokens.json` — `src/style.css` `@theme` block is the live source of truth
---
## Visual Tokens
### Colors
| Token | CSS var | Hex | Usage |
|-------|---------|-----|-------|
| primary | `--color-primary` | #e91e63 | Buttons, links, key UI (pink/rose) |
| secondary | `--color-secondary` | #7b809a | Secondary actions, muted text |
| success | `--color-success` | #4caf50 | Positive states |
| warning | `--color-warning` | #fb8c00 | Warning states |
| danger | `--color-danger` | #f44335 | Error / destructive |
| info | `--color-info` | #1a73e8 | Informational |
| light | `--color-light` | #f0f2f5 | Page backgrounds |
| dark | `--color-dark` | #344767 | Dark text / navy |
All generate `bg-*`, `text-*`, `border-*`, `ring-*` utilities automatically.
### Gradients
195° linear gradients — this angle is the signature of the kit. **Do not change it.**
| Class | Direction |
|-------|-----------|
| `bg-gradient-primary` | #EC407A → #D81B60 |
| `bg-gradient-success` | #66bb6a → #43a047 |
| `bg-gradient-info` | #49a3f1 → #1a73e8 |
| `bg-gradient-dark` | #42424a → #191919 |
| …and 4 more (secondary/warning/danger/light) | |
Pair gradient classes with their colored shadow for the floating-card effect:
```html
```
### Shadows
| Class | Use |
|-------|-----|
| `shadow-soft-xs` | Subtle hover feedback |
| `shadow-soft-sm` | Default card lift |
| `shadow-soft-md` | Standard card |
| `shadow-soft-lg` | Elevated panels |
| `shadow-blur` | Frosted-glass containers |
| `shadow-primary` / `shadow-success` / … | Colored glow — always paired with matching gradient |
### Typography
| Class | Value | Use |
|-------|-------|-----|
| `font-sans` | Roboto variable | Body and UI |
| `font-serif` | Roboto Slab variable | Display/editorial |
| `font-mono` | SFMono / system | Code |
| `font-light` | 300 | Large display headings |
| `font-normal` | 400 | Body copy |
| `font-medium` | 500 | Labels, nav |
| `font-bold` | 700 | Headings, emphasis |
| `font-black` | 900 | Counter cards, hero numbers |
### Spacing
Use Tailwind's default scale. Common values: `p-4` (1rem), `p-6` (1.5rem), `py-16` (4rem) for section padding. No custom spacing tokens.
### Border Radius
| Class | Value | Use |
|-------|-------|-----|
| `rounded-xs` | 0.1rem | Micro elements |
| `rounded-lg` | 0.5rem | Inputs, small cards |
| `rounded-xl` | 0.75rem | Card images, avatars |
| `rounded-2xl` | 1rem | Cards, panels |
| `rounded-full` | 9999px | Badges (pill), avatars (circle) |
---
## Component Patterns
### Button
```html
Get StartedLearn More
```
**Variants**: `contained` (flat fill) · `gradient` (195° gradient + colored shadow) · `outline`
**Colors**: primary / secondary / success / warning / danger / info / light / white / dark
**Sizes**: sm · md (default) · lg
**Do**: Use `variant="gradient"` for primary CTAs. Use `color="white"` on dark/gradient backgrounds.
**Don't**: Use `bg-primary` manually when `MkButton` is available.
### Card (marketing)
```html
Title
Body text.
```
### Navbar
```html
```
Scroll-triggered frosted glass is automatic in transparent mode.
### Form Inputs
```html
I agreeEmail notifications
```
### Hero Section
```html
Get Started
```
### Gradient text
```html
42,000+
```
`text-gradient` clips the background image to the text shape. Always pair with a `bg-gradient-*` class.
### Move-on-hover (interactive cards)
```html
```
---
## Layout & Grid
| Element | Classes |
|---------|---------|
| Page container | `max-w-7xl mx-auto px-4` |
| Section spacing | `py-16` (4rem) or `py-24` (6rem) for hero |
| Grid (3-col) | `grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3` |
| Grid (4-col) | `grid grid-cols-1 gap-6 sm:grid-cols-2 xl:grid-cols-4` |
| Flex row | `flex items-center gap-4` |
| Flex wrap | `flex flex-wrap gap-3` |
Breakpoints (Tailwind v4 defaults): `sm` 640px · `md` 768px · `lg` 1024px · `xl` 1280px.
---
## Naming Conventions
- **CSS custom properties**: `--color-*`, `--shadow-*`, `--radius-*`, `--font-*`, `--background-image-*`
- **Vue components**: PascalCase with `Mk` prefix — `MkButton`, `MkNavbar`, `MkDefaultCounterCard`
- **Custom CSS classes**: kebab-case — `move-on-hover`, `text-gradient`, `rotating-card-container`
- **No Bootstrap class names** anywhere in the codebase
---
## Quick-Start Rules for Code Generation
When generating code using this design system:
1. Use Tailwind v4 utility classes only — no Bootstrap, no custom SCSS
2. Reference colors via semantic class names (`bg-primary`, `text-success`) — never raw hex in HTML
3. Spacing: use Tailwind scale (`mt-4`, `px-6`, `py-16`) — no inline `style` for spacing
4. Primary CTAs: `MkButton variant="gradient" color="primary"` or `bg-gradient-primary shadow-primary text-white rounded-lg px-6 py-2.5`
5. Dark-section buttons: `color="white"` (white background, dark text) — not `color="light"`
6. Cards: `rounded-2xl bg-white shadow-soft-md` as the base; floating headers use `-mt-6 mx-4 rounded-xl overflow-hidden`
7. Page layout: `max-w-7xl mx-auto px-4` container with `grid gap-6` inside
8. Form fields: always use `MkInput`, `MkTextArea`, `MkCheckbox`, `MkSwitch` — not raw ``
9. Images inside cards: `rounded-xl object-cover` for consistent soft appearance
10. Interactive cards: add `move-on-hover` class for hover lift effect
11. Use `Mk*` components throughout — consult `src/components/` for available primitives
12. Navbar scroll blur is automatic; pass `navItems` as data, not hardcoded HTML