Design Tokens

All values are CSS custom properties. The sidebar controls override [data-theme] and [data-fonts] on the root element — copy the same pattern for any project.

Brand palette (current theme)
Brand
--clr-brand
Brand Hi
--clr-brand-hi
Brand Soft
--clr-brand-soft
BG
--clr-bg
Ink
--clr-ink
Ink-2
--clr-ink-2
Muted
--clr-muted
Gold
--clr-gold

Switch theme in the sidebar — swatches below update live.

Shadow scale (current intensity: default)
shadow-xs
shadow-sm
shadow
shadow-md
shadow-lg
Border radius scale
--r-sm 6px
--r 8px
--r-md 10px
--r-lg 12px
--r-xl 20px
--r-pill

Typography

Two fonts per pairing — switch using the sidebar. Headings use the display/serif, body uses the sans. Use italic heading for brand accent moments. Never a third typeface.

Display / H1
heading · 500
clamp(38–58px) · lh 1.15
The future of commerce
Section / H2
heading · 500
clamp(28–40px) · lh 1.15
Why customers choose us
Subheading / H3
body · 600
clamp(22–28px)
Seamless onboarding experience
Body
body · 400 · 15px · lh 1.55
We combine clinically tested ingredients with elegant formulation to deliver results you can feel from the first wash. Trusted by over 40 000 customers across Europe.
Caption / Small
body · 400 · 13px
Free shipping over €50 · 30-day returns · Made in Scandinavia
Eyebrow / Label
body · 700 · 11px
uppercase · ls 0.18em
Why it works
Pull Quote
heading italic · 500 · 19px
"My hair has never felt this soft — the results speak for themselves."

Icons — Phosphor

Use Phosphor Icons exclusively. Never emoji or unicode symbols. Load via CDN: unpkg.com/@phosphor-icons/web@2.1.1. Use the ph + ph-[name] class pattern. Default weight is Regular — use ph-bold class for heavier strokes.

Common UI icons (Regular)
arrow-right
check
x
plus
minus
shopping-cart
star
star-fill
envelope
lock
truck
shield-check
leaf
flask
lightning
heart
gift
user
Icon in context

Buttons — 3 Style Families

Pick one family per project and use it consistently. Do not mix families within the same page. The families are visually distinct enough that mixing reads as inconsistency, not variety.

Family A Warm Solid brand fill · lift + lighten on hover · no offset shadow · editorial feel
Family B Stark Near-black · hard offset shadow · press collapses · bold, product-forward feel
Family C Soft Pill shape · brand-tinted BG · no hard shadows · friendly, SaaS/service feel
On dark background

Forms & Inputs

Focus ring uses brand color. Error state uses brand color at higher opacity. All interactive states transition at 150ms.

Please enter a valid email.
Checkboxes
Radio buttons
Inline email form

No spam. Unsubscribe any time.


Badges, Pills & Eyebrows

One badge maximum per section header. Eyebrows open every section heading — always above the H2, never below.

Badges
New Sale Pro Best Seller In stock Live Available Limited
Eyebrow + heading pattern
The results
What our customers actually say

Cards

Rest state: border only, no shadow. Hover state: translateY(-4px) + shadow-lg. Never apply a heavy resting shadow — it flattens the hover effect.

Product cards
Best seller
Intensive Repair Mask
Deep conditioning for damaged hair
€34.90 €44.90 -22%
Scalp Serum
Clinically tested follicle activation
€49.90
Volume Shampoo
Sulfate-free formula with biotin
€24.90
Feature cards (3 variants)
Clinically tested
Validated by independent dermatologists across 3 clinical trials.
Results in 4 weeks
87% of users reported visible improvement within 28 days.
Vegan & cruelty-free
All ingredients ethically sourced and certified vegan.
Testimonial cards
"I've tried everything. This is the only product that actually worked."
AM
Anna M.
Vilnius, Lithuania
"Ordered for my wife and she refuses to use anything else."
JK
Jonas K.
Kaunas, Lithuania
"My scalp feels healthier after just two weeks of use."
SR
Sofia R.
Riga, Latvia
Pricing cards
Starter
19/ month
1 user
5 projects
Email support



Hero Section

Two-column grid. Text left, media right. Collapses to single column below 900px. The kicker badge, italic H1, subtext, CTA row, and rating strip are all optional but follow this fixed order when present.

Made in Scandinavia

Hair care crafted for real results

Clinically tested formulas developed with dermatologists. Over 40 000 customers trust us.

4.9/5 · 2 340 reviews

Hero — Full Background Image

Content left-aligned over a full-bleed image or gradient. A dark overlay ensures text legibility. Use when the product photo or lifestyle image is the message. Swap .hero-bg-img for a real <img> or background-image.

New 2026 Collection

Designed for those who notice the difference

Premium hair care developed in Scandinavia. Clinically tested formulas trusted by 40 000+ customers.

4.9/5 · 2 340 verified reviews

Hero — Full Video Background

Centered content over an ambient video loop. The play button is optional — use it when the video itself is a key part of the story. Replace .hero-video-bg with a <video autoplay muted loop playsinline> element absolutely positioned to fill the container.

Live experience

Feel it from the very first drop

The scent. The texture. The results. Experience the full Hårkontroll ritual — now available across Europe.

How to wire a real video
<div class="hero-video">
  <video class="hero-video-bg"
    autoplay muted loop playsinline
    style="object-fit:cover;width:100%;height:100%;position:absolute;inset:0;">
    <source src="hero.mp4" type="video/mp4" />
  </video>
  <div class="hero-video-overlay"></div>
  <div class="hero-video-inner">
    <!-- content -->
  </div>
</div>

Trust Band

Dark background, 5-column grid of proof points. Place immediately after the hero or before a pricing section. Use Phosphor icons above each label.

40k+ Customers
Clinically Tested
Vegan Formula
Free Returns
4.9 / 5 Rating

How It Works / Steps

3-column grid. Large faded number from Newsreader. No icons needed — the numeral is the visual anchor.

The process

Three steps to healthier hair

01
Cleanse
Remove buildup while preserving the scalp's natural moisture barrier.
02
Treat
Apply active serum to deliver peptides and biotin to the follicle.
03
Strengthen
Daily conditioning builds cumulative strength — results improve week over week.

FAQ Accordion

One open at a time. Border top on each item, border bottom on the last. Icon toggles between ph-plus and ph-minus.

Common questions

Frequently asked

Most customers notice improved texture within 2 weeks. Significant hair density improvement typically takes 6–8 weeks of consistent use.
Yes. All formulas are sulphate-free and safe for coloured or bleached hair.
30-day satisfaction guarantee. Contact us and we will arrange a full refund — no questions asked.

CTA Section

Full-width dark gradient. Brand color bleeds in from both sides. Centered text, max-width 680px, single primary CTA.

Limited offer

Ready to transform your hair?

Join 40 000+ customers. Free shipping on your first order.



Design Principles

Non-negotiable rules. Every one-pager built from this system must follow these.

One primary CTA per viewport
Never compete two primary buttons in the same visual zone. One action wins per screen area.
Fluid type with clamp()
All headings use clamp(min, vw, max). Body text stays fixed at 15–17px. Never hardcode px for a heading.
cursor: default on all buttons
No pointer cursor on buttons or interactive elements. Consistent product feel across every component.
No emoji — Phosphor only
Every icon uses Phosphor Icons. No emoji, no unicode symbols, no other icon library. Consistent stroke weight throughout.
Depth only on hover
Cards rest flat (border only, no shadow). Shadow appears on hover. Keeps the page clean, makes interactivity legible.
Mobile-first grid
Layouts start single-column. Breakpoints: 540px, 768px, 900px, 1024px. Container max-width 1160px, 28px gutter (18px mobile).
Spring easing everywhere
All transitions use cubic-bezier(0.16, 1, 0.3, 1). Quick: 150ms. Hover: 200ms. Reveals: 650ms. Always respect prefers-reduced-motion.
Two fonts maximum
One heading face, one body face. Italic heading for brand accent moments. Never a third typeface on the same page.
Brand color = signal, not decoration
90% of the page is ink + white + off-white. Brand color appears on CTAs, italic emphasis, selected states, and badges only.
Pick one button family per project
Warm, Stark, or Soft — choose one and use it everywhere. Mixing families within a page reads as inconsistency, not variety.

Architecture & Reuse

How to inherit this design system in any new project — HTML, PHP, or React.

The three-layer model
Layer 1 — CSS Tokens (this file)
Copy the :root + [data-theme] + [data-fonts] blocks. Works in plain HTML, PHP, Svelte, Vue, React — zero dependencies. This is your design contract.
Layer 2 — Component CSS classes (this file)
The .btn-warm, .card, .nav, etc. classes are portable. Copy them into any project stylesheet. They reference only Layer 1 tokens — no hardcoded colors.
Layer 3 — Framework wrappers (project-specific)
For React/Next.js: wrap the CSS classes in typed components (<Button family="warm" size="lg" />). They emit the same HTML + classes. No logic duplication. For plain HTML/PHP: use the classes directly.
Startup instructions — reflects current settings Live

        
MCP / API — when to add it
A design system MCP server makes sense once you have 3+ live projects consuming it and you're tired of copying the CSS block manually. At that point build a lightweight Node.js server with endpoints:

GET /tokens — returns all CSS custom properties as JSON
GET /component/:name — returns the HTML + CSS for a named component
GET /section/:name — returns a full section block ready to paste

Claude can call this server via an MCP connector at session start instead of reading this file. Until then, reading this file is equivalent and has zero infrastructure cost.