/design-system/web
Web pages
The marketing site and any public Quov page. It reads like a datasheet from a serious supplier: ruled structure, data set as data, and the mark’s 2×2 grid as the shape of the page.
Agent filequov-web.en.mdquov-web.es.md
01
Tokens
Every value lives in src/styles/globals.css as a Tailwind 4 token, with the names the apps use. Components use the token names, never a literal color; outside the site, copy the token block from the brand file.
- bg-background
- Page base. The only page background; sections do not alternate bands.
- bg-card
- One step of elevation: screenshot mats, code, an open sheet.
- bg-secondary
- Subtle fills: hover on a ghost control, a tag.
- text-foreground
- Text, the current navigation item, the letters of the mark.
- text-muted-foreground
- Leads, captions, metadata, inactive navigation.
- bg-primary
- The primary button, with text-primary-foreground. One per view.
- border-border
- Every hairline, rule and frame, at 10% alpha.
- ring
- Focus outline: 2 px solid, 3 px offset.
- font-heading
- Aoboshi One. h1 and h2 get it from the base layer.
- font-sans
- Geist, the default on body.
- font-mono
- Geist Mono, for data only.
- rounded-lg
- 0.375rem, the system radius: controls and frames. rounded-md and rounded-sm for smaller parts.
- ease-out-quint
- cubic-bezier(0.22, 1, 0.36, 1), the only easing.
- light:
- Variant for the paper theme, active when <html> carries data-theme="light".
02
Type scale
Fluid, with at least a 1.25 ratio between steps. Aoboshi One for the top three levels, Geist for reading, Geist Mono for data.
Display
The hero statement, once per page.
font-heading text-display: clamp(2.25rem, 1.2rem + 3.4vw, 4.5rem), 1.06
From the first line of code to the last device.
Title
Section titles, the contact title.
font-heading text-title: clamp(1.75rem, 1.3rem + 1.8vw, 3rem), 1.1
Infrastructure
Subtitle
Product names, step titles, the reference project name.
font-heading text-subtitle: clamp(1.375rem, 1.25rem + 0.5vw, 1.625rem), 1.25
Kin
Lead
The paragraph under a section title.
text-lead: clamp(1.125rem, 1.07rem + 0.25vw, 1.25rem), 1.6
Ready-to-use products, built and run by Quov.
Body
Running text.
default: 1.0625rem, 1.65 (1.6 on paper), max-w-[65ch]
When no product fits, Quov designs, builds and operates software for a single client.
Label
Table header cells, small labels.
text-xs font-medium uppercase tracking-wider
Status
Data
Indexes, statuses, domains, the language switch.
font-mono text-[0.8125rem] tabular-nums
01 By invitation kin.quov.io EN / ES
03
Layout
Generous space between sections, tight grouping inside them. Each section is built differently, so the page never turns into a grid of cards.
- Container
- container-page: max-width 76rem, centered, gutters of 1rem on phones, 1.5rem from 40rem wide, 2rem from 64rem.
- Section rhythm
- section-y: padding-block clamp(4rem, 2.75rem + 5vw, 7.5rem). Sections sit on the page background and are separated by one hairline.
- Section head
- A mono index (01 to 04), the title in Aoboshi One, then a lead in muted-foreground under 65 characters.
- Composition
- Asymmetric two columns from lg: the head on the narrow side, the content on the wide side. A single column on phones.
- Depth
- Borders only, at the 10% token. No shadows anywhere. Never a container inside a container.
- Anchors
- The header is fixed, so anchored sections keep a 5rem scroll padding.
04
Components
The site’s pieces, rendered in both themes. Before building something new, use one of these.
Header
Fixed. Transparent at the top, then the background with a bottom hairline once the page scrolls. Mark and wordmark link home; four anchors; the EN / ES switch in mono; the theme toggle; one primary button. Below lg the anchors, switch and toggle move into a side sheet.
dark, default
light, paper
Hero index
The mark is four letters in a 2×2 grid and Quov offers four things, so the hero carries a ruled 2×2 index of them. Each cell is a link to its section: mono index, name in Aoboshi One, one short line. It sits beside the statement from lg and below it on phones.
- 01ProductsKin, Merxes and Heak, built and run by Quov.
- 02Tailored softwareDesigned, built and operated for one client.
- 03InfrastructureNetworks, access rules and storage, as code.
- 04DevicesCompany laptops and phones, managed at scale.
dark, default
- 01ProductsKin, Merxes and Heak, built and run by Quov.
- 02Tailored softwareDesigned, built and operated for one client.
- 03InfrastructureNetworks, access rules and storage, as code.
- 04DevicesCompany laptops and phones, managed at scale.
light, paper
Ledger table
Products as a ruled ledger: name in Aoboshi One, what it does, who it is for, the status in mono, the link in mono. A row without a link shows nothing in that cell, never a disabled control. On phones each row stacks.
| product | what it does | for | status | link |
|---|---|---|---|---|
| Kin | Company email addresses on your own domain, answered from the inbox each person already uses. | Companies | By invitation | kin.quov.io |
| Merxes | Income and expense tracking, bookkeeping and electronic invoices. | Individuals and companies | By invitation | |
| Heak | A weekly menu built around your macros, with an optional chef at home. | Individuals | By invitation |
KinBy invitation
Company email addresses on your own domain, answered from the inbox each person already uses.
Companies
kin.quov.io
MerxesBy invitation
Income and expense tracking, bookkeeping and electronic invoices.
Individuals and companies
HeakBy invitation
A weekly menu built around your macros, with an optional chef at home.
Individuals
Merxes and Heak are independent brands owned by Quov.
dark, default
| product | what it does | for | status | link |
|---|---|---|---|---|
| Kin | Company email addresses on your own domain, answered from the inbox each person already uses. | Companies | By invitation | kin.quov.io |
| Merxes | Income and expense tracking, bookkeeping and electronic invoices. | Individuals and companies | By invitation | |
| Heak | A weekly menu built around your macros, with an optional chef at home. | Individuals | By invitation |
KinBy invitation
Company email addresses on your own domain, answered from the inbox each person already uses.
Companies
kin.quov.io
MerxesBy invitation
Income and expense tracking, bookkeeping and electronic invoices.
Individuals and companies
HeakBy invitation
A weekly menu built around your macros, with an optional chef at home.
Individuals
Merxes and Heak are independent brands owned by Quov.
light, paper
Spec list
Two columns, term and description, ruled. Used for capabilities, never cards.
- Networks
- A network and VPC per environment, isolated from each other.
- Firewall and access
- Inbound and outbound rules, segmentation, least privilege.
- Isolated storage
- Encrypted drives and buckets per team or workload, with backups.
- Defined as code
- Every environment can be reviewed and reproduced.
dark, default
- Networks
- A network and VPC per environment, isolated from each other.
- Firewall and access
- Inbound and outbound rules, segmentation, least privilege.
- Isolated storage
- Encrypted drives and buckets per team or workload, with backups.
- Defined as code
- Every environment can be reviewed and reproduced.
light, paper
Numbered sequence
For steps that happen in order, and only then. Mono index, title, one line. Four columns from lg under one rule; a ruled list on phones.
- 01DefinitionScope, data model, architecture, delivery plan.
- 02BuildComplete flows in a test environment the client reviews.
- 03LaunchProduction, with real operation.
- 04OperationMonitoring, support, evolution.
dark, default
- 01DefinitionScope, data model, architecture, delivery plan.
- 02BuildComplete flows in a test environment the client reviews.
- 03LaunchProduction, with real operation.
- 04OperationMonitoring, support, evolution.
light, paper
Framed screenshot
A real page, 1600 px wide, in grayscale, inside a hairline frame whose top bar names the domain in mono.
femcng.com
dark, default
femcng.com
light, paper
Contact block
Title in Aoboshi One, a short lead, the booking link as the primary action and the email address as the secondary one.
Schedule a call
Tell us what you need: a product, a platform, a network or a device fleet. The first call defines scope and next steps.
Schedule a callcontact@quov.io
dark, default
Schedule a call
Tell us what you need: a product, a platform, a network or a device fleet. The first call defines scope and next steps.
Schedule a callcontact@quov.io
light, paper
Footer
Mark and wordmark, one line on what Quov does, the four anchors, the language switch, the design system link, the email address and the legal line. No identification number.
The technology a company runs on, built and kept running.
- Products
- Software
- Infrastructure
- Devices
dark, default
The technology a company runs on, built and kept running.
- Products
- Software
- Infrastructure
- Devices
light, paper
Buttons and links
One primary button per view. Text links underline with a hairline that darkens on hover; external links add an arrow. Data links (domains, email addresses) are mono.
dark, default
light, paper
05
Motion
Quiet. Two moments in the whole site, and nothing else.
- Entrance
- The hero’s 2×2 index only: each cell fades in and rises a few pixels, staggered, with ease-out-quint. Opacity and transform only.
- Theme switch
- A 300 ms crossfade of color, background and border color.
- Never
- Scroll-triggered reveals, parallax, hover lifts, bounce or elastic easing, animated layout properties.
- Reduced motion
- prefers-reduced-motion collapses every animation and transition to an instant change.
06
Languages
English and Spanish, complete in both. A new string ships in both languages at once.
- Routes
- English at /, Spanish under /es. Route segments and anchor ids stay English in both: #products, #software, #infrastructure, #devices, #contact.
- Document
- <html lang="en"> and <html lang="es-CO">; og:locale en_US and es_CO with the other as alternate; hreflang en, es and x-default; a canonical per locale.
- Switch
- EN / ES in mono in the header and the footer. It links to the same page in the other language and marks the current one with aria-current.
- Copy
- One typed dictionary per locale; the Spanish one is typed from the English one, so a missing key fails the build.
- Register
- English without contractions; Spanish with tú.
- Schedule a call
- Links to the booking page. Until one exists, it is a mailto to contact@quov.io with a subject in the page’s language.
07
Themes
Dark slate is the default for every first visit; the operating system preference is not consulted. Paper is one click away and stays chosen.
- Toggle
- An icon button in the header with an accessible label in the page’s language that names the target (“Switch to light theme”, “Cambiar a tema claro”) and aria-pressed.
- Storage
- localStorage under quov-theme, every access in try/catch. Without storage the site stays dark and still works.
- No flash
- An inline script in <head> sets data-theme="light" on <html> before the first paint.
- Browser color
- theme-color carries both values, and the toggle updates it.
<!-- In <head>, before any stylesheet paints: applies the stored theme. -->
<script>
try {
if (localStorage.getItem('quov-theme') === 'light') {
document.documentElement.dataset.theme = 'light';
}
} catch {
/* No storage: the page stays dark. */
}
</script>08
Imagery and access
- Screenshots
- Real pages of shipped work only, in grayscale, in the bordered frame above. Alt text in both languages says what the image shows and invents nothing.
- Never
- Stock photography, illustrations, 3D shapes, generated images, portraits.
- Contrast
- WCAG 2.2 AA in both themes, checked with a contrast computation, not assumed.
- Keyboard
- The header and the sheet are reachable and operable by keyboard. Focus is always visible: 2 px ring, 3 px offset.
- Structure
- One h1 per page, h2 per section, h3 for items. Decorative SVG carries aria-hidden.
09
Rules
Do
- Build each section from a different structure: index, ledger, spec list, sequence, frame.
- Set data as data: indexes, statuses, domains and figures in mono.
- Ship English and Spanish together, each one complete.
- Check the page at 375 and 1440 px, in both themes and both languages.
Do not
- A grid of identical cards with an icon, a title and a line.
- Hero metrics, logo walls, testimonials, carousels.
- An accent color, a gradient, glass, a shadow or a side-stripe border.
- A booking control that looks disabled, or any link to nothing.
Agent file
The rules of this page as a Markdown file for an agent: in a CLAUDE.md, a system prompt or attached to a request. Load quov-brand first; this file applies it and never overrides it. Identical content in English and Spanish.
curl -fLO https://quov.io/design-system/quov-brand.en.md
curl -fLO https://quov.io/design-system/quov-web.en.md
curl -fLO https://quov.io/design-system/quov-web.es.md