Y2K
Millennium plastic and chrome: glossy jelly buttons and Aqua pinstripes.
Y2K
Millennium plastic and chrome: glossy jelly buttons and Aqua pinstripes.
AaExo 2
- Family
- Bold
- Fonts
- Exo 2
- Radius
- pill controls · 20px surfaces
- Edges & depth
- chrome frames · gloss · soft drop shadow
- Motion
- 160 / 280ms
Use it
import "@camaleo/styles/base.css";
import "@camaleo/styles/y2k.css";
<StyleProvider styleName="y2k">…</StyleProvider>
Fonts are not bundled. The skin asks for Exo 2 by name, so any loader that registers that family works: next/font (below), a <link> to a font service or your own @font-face.
// app/layout.tsx
import { Exo_2 } from "next/font/google";
const exo2 = Exo_2({ subsets: ["latin"], variable: "--font-exo2" });
<html className={`${exo2.variable}`}>
When to use it
Good fit
- Music, fashion and nostalgic brands
- Campaign pages and limited editions
Think twice
- Sober B2B products
- Data-dense screens: frames and stripes compete with the data
Light and dark
Both modes are designed, not inverted, and pass the same contrast checks. The brand comes from the preview bar.
Weekly report
Sent every Monday at 9:00.
Weekly report
Sent every Monday at 9:00.
Components in Y2K
Real components from the library, in Y2K, with the mode and brand from the preview bar.
As it appears on your ID. We print it on invoices.
Scheduled maintenance on Sunday
Sign-in will be unavailable from 2:00 to 2:15 AM UTC on November 2. Your data is not affected.
October 2026
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Acme Store
Online store · created on 03/02/2025
Shown on invoices and in emails to customers.
- Cart
- Shipping
- Payment
- Review
| Invoice | Status | Amount |
|---|---|---|
| INV-4029 | Paid | $340.00 |
| INV-4028 | Pending | $1,280.50 |
| INV-4027 | Overdue | $75.00 |
Order placed
Order #48920, 3 items, $214.90.
Payment approved
Visa ending in 4242.
Delivered
Signed for by the front desk.
Preview every component page in Y2K →
Tokens
The values this skin sets, read from y2k.css. Override any of them on a parent element to adjust it locally.
All 152 custom properties this skin sets
- --cml-y2k-chrome-1
- light-dark(#ffffff, #3d4a6e)
- --cml-y2k-chrome-2
- light-dark(#f0f3f8, #2c3758)
- --cml-y2k-chrome-3
- light-dark(#dfe5ef, #1f2848)
- --cml-y2k-chrome-4
- light-dark(#eef1f7, #2a3555)
- --cml-y2k-chrome
- linear-gradient(180deg, var(--cml-y2k-chrome-1) 0%, var(--cml-y2k-chrome-2) 48%, var(--cml-y2k-chrome-3) 52%, var(--cml-y2k-chrome-4) 100%)
- --cml-y2k-chrome-line
- light-dark(#7f8aa6, #6e7a9c)
- --cml-y2k-chrome-soft-line
- light-dark(#a9b4c8, #4a5577)
- --cml-y2k-gleam
- light-dark(#ffffff, rgb(255 255 255 / 0.16))
- --cml-y2k-frame
- linear-gradient(180deg, light-dark(#b8c2d3, #6a7699) 0%, light-dark(#8f9bb3, #3c4769) 42%, light-dark(#eef1f6, #7c88aa) 56%, light-dark(#7d89a3, #2e3858) 100%)
- --cml-y2k-fill
- linear-gradient(var(--cml-surface-raised), var(--cml-surface-raised))
- --cml-y2k-recess
- linear-gradient(180deg, light-dark(#cfd7e4, #070c1e), light-dark(#e9edf4, #131b38))
- --cml-y2k-recess-line
- light-dark(#8f9bb3, #4a5577)
- --cml-y2k-recess-shadow
- inset 0 1px 2px light-dark(rgb(11 21 48 / 0.22), rgb(0 0 0 / 0.55)), 0 1px 0 light-dark(#ffffff, rgb(255 255 255 / 0.05))
- --cml-y2k-bead
- radial-gradient(circle at 38% 30%, #ffffff 0 16%, light-dark(#e3e8f1, #c9d1e2) 48%, light-dark(#9fabc2, #6f7c9c) 100%)
- --cml-y2k-rim
- color-mix(in oklab, var(--cml-accent) 72%, #000000)
- --cml-y2k-danger-rim
- color-mix(in oklab, var(--cml-danger) 72%, #000000)
- --cml-y2k-glow
- radial-gradient(50% 100% at 50% 100%, rgb(255 255 255 / 0.42), rgb(255 255 255 / 0))
- --cml-y2k-shine
- linear-gradient(180deg, rgb(255 255 255 / 0.78), rgb(255 255 255 / 0.2))
- --cml-y2k-gel
- linear-gradient(180deg, rgb(255 255 255 / 0.5), rgb(255 255 255 / 0) 55%)
- --cml-y2k-shade
- light-dark(rgb(11 21 48 / 0.2), rgb(0 0 0 / 0.45))
- --cml-y2k-pressed
- inset 0 2px 4px rgb(0 0 0 / 0.25)
- --cml-y2k-iris
- linear-gradient(90deg, light-dark(#9be7ff, #3aa7cf), light-dark(#c4b5fd, #8b7be0) 35%, light-dark(#fbcfe8, #c779a8) 65%, light-dark(#fde68a, #c9a54a))
- --cml-y2k-iris-soft
- linear-gradient(100deg, light-dark(#d4f1ff, #17385a) 0%, light-dark(#e2dbff, #2c2a62) 38%, light-dark(#ffdcef, #4b2550) 68%, light-dark(#fff0c9, #4a3a1c) 100%)
- --cml-y2k-ink-section
- light-dark(#3a4766, #b9c2dc)
- --cml-y2k-hair
- light-dark(#e3e8f0, #26304f)
- --cml-y2k-zebra
- light-dark(#f4f6fb, #172042)
- --cml-y2k-backdrop
- repeating-linear-gradient(180deg, light-dark(rgb(255 255 255 / 0.5), rgb(255 255 255 / 0.035)) 0 2px, rgb(255 255 255 / 0) 2px 4px), radial-gradient(ellipse 60% 45% at 88% 0%, light-dark(rgb(255 255 255 / 0), rgb(124 92 255 / 0.14)), rgb(124 92 255 / 0) 70%), linear-gradient(180deg, light-dark(#e7ecf5, #0c1430), light-dark(#dde4f0, #070c20))
- --cml-font-body
- "Exo 2", system-ui, sans-serif
- --cml-font-display
- "Exo 2", system-ui, sans-serif
- --cml-font-size
- 0.875rem
- --cml-font-size-control
- 0.875rem
- --cml-font-size-control-sm
- 0.8125rem
- --cml-font-size-control-lg
- 0.9375rem
- --cml-font-size-field
- 0.875rem
- --cml-font-size-label
- 0.8125rem
- --cml-font-size-help
- 0.8125rem
- --cml-font-weight-control
- 600
- --cml-font-weight-label
- 600
- --cml-font-weight-display
- 700
- --cml-font-weight-error
- 600
- --cml-letter-spacing-control
- 0.01em
- --cml-surface
- light-dark(#e2e8f2, #0a1128)
- --cml-surface-raised
- light-dark(#ffffff, #121b3a)
- --cml-fg
- light-dark(#0b1530, #eef2ff)
- --cml-fg-secondary
- light-dark(#2f3b57, #c3cbe2)
- --cml-fg-muted
- light-dark(#4a5672, #a0abc9)
- --cml-border
- var(--cml-y2k-hair)
- --cml-border-control
- light-dark(#6b7896, #7884a6)
- --cml-accent
- light-dark(var(--cml-brand-600), var(--cml-brand-500))
- --cml-accent-fg
- light-dark(var(--cml-brand-600-fg), var(--cml-brand-500-fg))
- --cml-accent-hover
- light-dark(var(--cml-brand-600-hover), var(--cml-brand-500-hover))
- --cml-backdrop
- light-dark(rgb(20 32 72 / 0.42), rgb(2 5 18 / 0.66))
- --cml-item-highlight
- light-dark(rgb(11 21 48 / 0.06), rgb(255 255 255 / 0.08))
- --cml-danger
- light-dark(#b42318, #f97066)
- --cml-danger-fg
- light-dark(#ffffff, #000000)
- --cml-success
- light-dark(#166534, #4ade80)
- --cml-warning
- light-dark(#854d0e, #facc15)
- --cml-disabled-opacity
- 0.5
- --cml-radius-control
- 999px
- --cml-radius-control-sm
- 999px
- --cml-radius-control-lg
- 999px
- --cml-radius-surface
- 20px
- --cml-radius-popover
- 18px
- --cml-radius-check
- 7px
- --cml-radius-item
- 999px
- --cml-radius-field
- 999px
- --cml-shadow-control
- inset 0 1px 0 var(--cml-y2k-gleam), 0 1px 2px light-dark(rgb(11 21 48 / 0.14), rgb(0 0 0 / 0.4))
- --cml-shadow-control-active
- inset 0 2px 3px light-dark(rgb(11 21 48 / 0.2), rgb(0 0 0 / 0.45))
- --cml-shadow-surface
- 0 18px 40px -16px light-dark(rgb(11 21 48 / 0.6), rgb(0 0 0 / 0.75))
- --cml-shadow-popover
- 0 10px 24px -12px light-dark(rgb(11 21 48 / 0.4), rgb(0 0 0 / 0.7)), 0 1px 2px light-dark(rgb(11 21 48 / 0.08), rgb(0 0 0 / 0.3))
- --cml-control-height
- 2.25rem
- --cml-control-height-sm
- 1.875rem
- --cml-control-height-lg
- 2.75rem
- --cml-control-padding
- 1rem
- --cml-control-padding-sm
- 0.75rem
- --cml-control-padding-lg
- 1.375rem
- --cml-item-height
- 2rem
- --cml-duration-fast
- 160ms
- --cml-motion-scale
- 0.96
- --cml-press-translate
- 1px
- --cml-button-solid-shadow
- inset 0 -1px 0 rgb(255 255 255 / 0.22), 0 1px 1px var(--cml-y2k-shade), 0 3px 8px -3px color-mix(in srgb, var(--cml-accent) 60%, transparent)
- --cml-button-danger-shadow
- inset 0 -1px 0 rgb(255 255 255 / 0.22), 0 1px 1px var(--cml-y2k-shade), 0 3px 8px -3px color-mix(in srgb, var(--cml-danger) 55%, transparent)
- --cml-button-outline-bg
- var(--cml-y2k-chrome-2)
- --cml-button-outline-border
- var(--cml-y2k-chrome-line)
- --cml-button-outline-shadow
- var(--cml-shadow-control)
- --cml-toggle-pressed-bg
- var(--cml-accent)
- --cml-toggle-pressed-fg
- var(--cml-accent-fg)
- --cml-toggle-pressed-shadow
- var(--cml-button-solid-shadow)
- --cml-field-height
- 2.375rem
- --cml-field-padding
- 1rem
- --cml-field-bg
- light-dark(#ffffff, #0a1230)
- --cml-field-shadow
- inset 0 2px 3px light-dark(rgb(11 21 48 / 0.1), rgb(0 0 0 / 0.4)), 0 1px 0 light-dark(#ffffff, rgb(255 255 255 / 0.05))
- --cml-field-focus-halo
- 0 0 0 6px color-mix(in srgb, var(--cml-accent) 14%, transparent)
- --cml-check-size
- 1.25rem
- --cml-check-border-width
- 1.5px
- --cml-check-shadow
- inset 0 1px 0 var(--cml-y2k-gleam), 0 1px 1px light-dark(rgb(11 21 48 / 0.12), rgb(0 0 0 / 0.4))
- --cml-check-on-image
- var(--cml-y2k-gel)
- --cml-check-on-border
- var(--cml-y2k-rim)
- --cml-switch-width
- 2.625rem
- --cml-switch-height
- 1.5rem
- --cml-switch-border
- 1.5px
- --cml-switch-pad
- 2px
- --cml-switch-knob
- 18px
- --cml-switch-knob-on
- 18px
- --cml-switch-track
- var(--cml-y2k-chrome-3)
- --cml-switch-on-shadow
- inset 0 1px 2px rgb(0 0 0 / 0.2)
- --cml-switch-knob-bg
- light-dark(#e3e8f1, #c9d1e2)
- --cml-switch-knob-on-bg
- light-dark(#e3e8f1, #c9d1e2)
- --cml-switch-knob-shadow
- 0 0 0 1px light-dark(#5d6a88, #0a1128), 0 1px 2px var(--cml-y2k-shade)
- --cml-switch-knob-on-shadow
- 0 0 0 1px var(--cml-y2k-rim), 0 1px 2px var(--cml-y2k-shade)
- --cml-slider-track-h
- 10px
- --cml-slider-track
- var(--cml-y2k-chrome-3)
- --cml-slider-fill-inset
- -1px
- --cml-slider-fill-image
- linear-gradient(180deg, rgb(255 255 255 / 0.45), rgb(255 255 255 / 0) 60%)
- --cml-slider-thumb-w
- 1.375rem
- --cml-slider-thumb-h
- 1.375rem
- --cml-slider-thumb-bg
- light-dark(#e3e8f1, #c9d1e2)
- --cml-slider-thumb-border
- 1.5px solid light-dark(#4f5b78, #0a1128)
- --cml-slider-thumb-shadow
- 0 1px 3px light-dark(rgb(11 21 48 / 0.32), rgb(0 0 0 / 0.6))
- --cml-number-weight
- 600
- --cml-number-btn-size
- 2.5rem
- --cml-number-btn-bg
- var(--cml-y2k-chrome-2)
- --cml-number-divider
- 1px solid var(--cml-y2k-chrome-soft-line)
- --cml-select-trigger-shadow
- var(--cml-shadow-control)
- --cml-popover-bg
- var(--cml-surface-raised)
- --cml-popover-border
- transparent
- --cml-popover-border-width
- 2px
- --cml-popover-padding
- 5px
- --cml-item-padding
- 0.75rem
- --cml-item-highlight-fg
- var(--cml-accent-fg)
- --cml-dialog-border
- transparent
- --cml-tabs-gap
- 2px
- --cml-tabs-list-bg
- var(--cml-y2k-chrome-3)
- --cml-tabs-list-border
- var(--cml-y2k-recess-line)
- --cml-tabs-list-shadow
- var(--cml-y2k-recess-shadow)
- --cml-tabs-list-padding
- 3px
- --cml-tabs-list-radius
- 999px
- --cml-tab-radius
- 999px
- --cml-tab-active-fg
- var(--cml-fg)
- --cml-tab-active-shadow
- inset 0 0 0 1px var(--cml-y2k-chrome-line), 0 1px 3px light-dark(rgb(11 21 48 / 0.28), rgb(0 0 0 / 0.5))
- --cml-card-border
- transparent
- --cml-card-shadow
- 0 1px 2px light-dark(rgb(11 21 48 / 0.08), rgb(0 0 0 / 0.3)), 0 14px 30px -18px light-dark(rgb(11 21 48 / 0.35), rgb(0 0 0 / 0.7))
- --cml-avatar-ring
- var(--cml-surface-raised)
- --cml-skeleton
- light-dark(#dfe5ef, #1e2747)
- --cml-tooltip-bg
- light-dark(#121c3a, #c3cbdc)
- --cml-tooltip-fg
- light-dark(#f4f7ff, #0b1530)
- --cml-scrollbar-size
- 12px
- --cml-scrollbar-track
- var(--cml-y2k-chrome-3)
- --cml-scrollbar-track-shadow
- inset 0 0 0 1px var(--cml-y2k-recess-line), inset 0 1px 2px light-dark(rgb(11 21 48 / 0.22), rgb(0 0 0 / 0.55))
- --cml-scrollbar-thumb
- var(--cml-accent)
- --cml-scrollbar-thumb-shadow
- inset 0 0 0 1px var(--cml-y2k-rim)
- --cml-scrollbar-idle-opacity
- 1
Same family
Other skins in the Bold family. Compare side by side →