12 CSS Retro UI Designs10 / 12
Y2K Style Web UI Kit
A glossy Y2K / Aqua interface — candy jelly buttons with specular top-gloss and a 3D push, a pinstripe-animated progress pill, a frosted aqua titlebar with gel orbs, and a glassy toggle switch. Michroma + Rajdhani on an icy aqua-to-lilac gradient with chrome-clip headline type, pure CSS gloss.
Published
The code
<div class="ret-10">
<div class="ret-10__shell">
<div class="ret-10__chrome">
<div class="ret-10__tb">
<b>◈ AquaOS · System Preferences</b>
<span class="ret-10__orbs"><i class="ret-10__orb"></i><i class="ret-10__orb ret-10__orb--c"></i><i class="ret-10__orb ret-10__orb--x"></i></span>
</div>
<div class="ret-10__win">
<div class="ret-10__hero">
<span class="ret-10__chip">Y2K · FUTURE READY · 2001</span>
<h1>Glossy. Glassy.<br>Gloriously Y2K.</h1>
<p>Candy-coated jelly buttons, aqua gradients and pinstripe progress — pure CSS gloss.</p>
</div>
<div class="ret-10__btns">
<button class="ret-10__jelly">Download</button>
<button class="ret-10__jelly ret-10__jelly--g">Install ✓</button>
<button class="ret-10__jelly ret-10__jelly--p">Customize</button>
</div>
<div class="ret-10__panel">
<div class="ret-10__glass">
<small>SYNCING…</small>
<div class="ret-10__load"><i></i></div>
<div class="ret-10__pct">68% — 2.4 MB/s</div>
</div>
<div class="ret-10__glass" style="display:flex;align-items:center">
<input type="checkbox" id="ret-10-sw" class="ret-10__sw" checked>
<label class="ret-10__toggle" for="ret-10-sw">
<span class="ret-10__rail"></span>
<b>Aqua FX</b>
</label>
</div>
</div>
</div>
</div>
</div>
</div><div class="ret-10">
<div class="ret-10__shell">
<div class="ret-10__chrome">
<div class="ret-10__tb">
<b>◈ AquaOS · System Preferences</b>
<span class="ret-10__orbs"><i class="ret-10__orb"></i><i class="ret-10__orb ret-10__orb--c"></i><i class="ret-10__orb ret-10__orb--x"></i></span>
</div>
<div class="ret-10__win">
<div class="ret-10__hero">
<span class="ret-10__chip">Y2K · FUTURE READY · 2001</span>
<h1>Glossy. Glassy.<br>Gloriously Y2K.</h1>
<p>Candy-coated jelly buttons, aqua gradients and pinstripe progress — pure CSS gloss.</p>
</div>
<div class="ret-10__btns">
<button class="ret-10__jelly">Download</button>
<button class="ret-10__jelly ret-10__jelly--g">Install ✓</button>
<button class="ret-10__jelly ret-10__jelly--p">Customize</button>
</div>
<div class="ret-10__panel">
<div class="ret-10__glass">
<small>SYNCING…</small>
<div class="ret-10__load"><i></i></div>
<div class="ret-10__pct">68% — 2.4 MB/s</div>
</div>
<div class="ret-10__glass" style="display:flex;align-items:center">
<input type="checkbox" id="ret-10-sw" class="ret-10__sw" checked>
<label class="ret-10__toggle" for="ret-10-sw">
<span class="ret-10__rail"></span>
<b>Aqua FX</b>
</label>
</div>
</div>
</div>
</div>
</div>
</div>@import url('https://fonts.googleapis.com/css2?family=Michroma&family=Rajdhani:wght@400;500;600;700&display=swap');
.ret-10,
.ret-10 *,
.ret-10 *::before,
.ret-10 *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
.ret-10 ::selection {
background: #00e5ff;
color: #001018;
}
.ret-10 {
--bg1: #aee9ff;
--bg2: #d6c2ff;
--aqua: #00b4ff;
--aqua-d: #0066cc;
--silver: #dfe8f0;
--ink: #0a2540;
--lime: #9dff3c;
font-family: 'Rajdhani',sans-serif;
background: radial-gradient(circle at 20% 15%,#ffffff,transparent 40%), linear-gradient(135deg,var(--bg1),var(--bg2) 60%,#ffd1f5);
min-height: 100vh;
display: grid;
place-items: center;
padding: clamp(16px,4vw,46px);
color: var(--ink);
}
.ret-10__shell {
width: min(700px,100%);
background: linear-gradient(180deg,rgba(255,255,255,.85),rgba(220,235,250,.7));
backdrop-filter: blur(6px);
border-radius: 26px;
padding: 8px;
box-shadow: 0 0 0 1px rgba(255,255,255,.9) inset,0 0 0 2px rgba(0,120,200,.25),0 30px 60px rgba(0,80,160,.35);
}
.ret-10__chrome {
background: linear-gradient(180deg,#fff,#cfe2f2);
border-radius: 20px;
overflow: hidden;
box-shadow: inset 0 1px 0 #fff;
}
/* glossy titlebar */
.ret-10__tb {
display: flex;
align-items: center;
gap: 10px;
padding: 12px 16px;
position: relative;
background: linear-gradient(180deg,#6fc8ff 0%,#1f8fe0 48%,#0a6cc0 52%,#1f8fe0 100%);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),inset 0 -2px 4px rgba(0,0,0,.2);
}
.ret-10__tb::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 45%;
background: linear-gradient(180deg,rgba(255,255,255,.55),transparent);
pointer-events: none;
}
.ret-10__tb b {
font-family: 'Michroma';
color: #fff;
font-size: .92rem;
letter-spacing: .05em;
text-shadow: 0 1px 2px rgba(0,0,0,.4);
position: relative;
z-index: 2;
}
.ret-10__orbs {
margin-left: auto;
display: flex;
gap: 7px;
position: relative;
z-index: 2;
}
.ret-10__orb {
width: 18px;
height: 18px;
border-radius: 50%;
background: radial-gradient(circle at 35% 30%,#fff,#cdd 60%,#889);
box-shadow: 0 1px 2px rgba(0,0,0,.4),inset 0 -2px 3px rgba(0,0,0,.3);
}
.ret-10__orb--c {
background: radial-gradient(circle at 35% 30%,#d6ffb0,var(--lime) 60%,#5a9e00);
}
.ret-10__orb--x {
background: radial-gradient(circle at 35% 30%,#ffd0d0,#ff5555 60%,#aa0000);
}
.ret-10__win {
padding: 24px;
display: grid;
gap: 20px;
}
.ret-10__hero {
text-align: center;
}
.ret-10__chip {
display: inline-block;
font-family: 'Michroma';
font-size: .62rem;
letter-spacing: .25em;
color: var(--aqua-d);
background: linear-gradient(180deg,#fff,#d6ecff);
padding: 6px 14px;
border-radius: 20px;
box-shadow: inset 0 1px 0 #fff,0 1px 3px rgba(0,80,160,.3);
margin-bottom: 14px;
}
.ret-10__hero h1 {
font-family: 'Michroma';
font-size: clamp(1.6rem,6vw,2.8rem);
line-height: 1.05;
letter-spacing: -.01em;
background: linear-gradient(180deg,#0a6cc0,#00b4ff);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
filter: drop-shadow(0 2px 1px rgba(255,255,255,.8));
}
.ret-10__hero p {
font-size: 1.05rem;
font-weight: 500;
margin-top: 10px;
color: #2a5575;
}
/* the glossy jelly buttons */
.ret-10__btns {
display: flex;
gap: 16px;
flex-wrap: wrap;
justify-content: center;
}
.ret-10__jelly {
position: relative;
border: none;
cursor: pointer;
font-family: 'Rajdhani';
font-weight: 700;
font-size: 1.05rem;
letter-spacing: .04em;
color: #fff;
text-shadow: 0 1px 2px rgba(0,0,0,.35);
padding: 15px 34px;
border-radius: 30px;
overflow: hidden;
background: linear-gradient(180deg,#3fc0ff,#0a78d0 52%,#0a6cc0);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 4px 0 #04508f,0 8px 16px rgba(0,80,160,.4);
transition: transform .08s,box-shadow .08s;
}
.ret-10__jelly::before {
content: '';
position: absolute;
top: 3px;
left: 8%;
right: 8%;
height: 42%;
border-radius: 30px;
background: linear-gradient(180deg,rgba(255,255,255,.85),rgba(255,255,255,0));
pointer-events: none;
}
.ret-10__jelly:hover {
filter: brightness(1.06);
}
.ret-10__jelly:active {
transform: translateY(4px);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 0 0 #04508f,0 4px 8px rgba(0,80,160,.4);
}
.ret-10__jelly--g {
background: linear-gradient(180deg,#c8ff7a,#7ec000 52%,#5a9e00);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 4px 0 #437400,0 8px 16px rgba(80,140,0,.4);
color: #1a3000;
text-shadow: 0 1px 1px rgba(255,255,255,.4);
}
.ret-10__jelly--g:active {
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 0 0 #437400,0 4px 8px rgba(80,140,0,.4);
}
.ret-10__jelly--p {
background: linear-gradient(180deg,#ff9be8,#d63caa 52%,#b01f8f);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 4px 0 #8a1570,0 8px 16px rgba(160,0,120,.4);
}
/* progress pill + toggle */
.ret-10__panel {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 18px;
}
@media (max-width: 520px) {
.ret-10__panel {
grid-template-columns: 1fr;
}
.ret-10__hero h1 {
font-size: 1.5rem;
}
}
.ret-10__glass {
background: linear-gradient(180deg,rgba(255,255,255,.9),rgba(210,232,250,.6));
border-radius: 16px;
padding: 16px;
box-shadow: inset 0 1px 0 #fff,0 2px 6px rgba(0,80,160,.18);
}
.ret-10__glass small {
font-family: 'Michroma';
font-size: .6rem;
letter-spacing: .18em;
color: var(--aqua-d);
display: block;
margin-bottom: 10px;
}
.ret-10__load {
height: 18px;
border-radius: 12px;
background: linear-gradient(180deg,#c2d8ea,#e8f2fb);
box-shadow: inset 0 2px 3px rgba(0,60,120,.3);
overflow: hidden;
padding: 2px;
}
.ret-10__load i {
display: block;
height: 100%;
width: 68%;
border-radius: 10px;
background: linear-gradient(180deg,#7fe0ff,#00b4ff 50%,#0078c8);
box-shadow: inset 0 1px 0 rgba(255,255,255,.8);
position: relative;
overflow: hidden;
}
.ret-10__load i::after {
content: '';
position: absolute;
inset: 0;
background: repeating-linear-gradient(45deg,rgba(255,255,255,.3) 0 8px,transparent 8px 16px);
animation: ret-10-stripe 1s linear infinite;
}
@keyframes ret-10-stripe {
to {
background-position: 16px 0;
}
}
.ret-10__pct {
font-weight: 700;
color: var(--aqua-d);
margin-top: 8px;
font-size: .9rem;
}
/* aqua toggle - checkbox hack */
.ret-10__sw {
position: absolute;
opacity: 0;
pointer-events: none;
}
.ret-10__toggle {
display: flex;
align-items: center;
gap: 12px;
cursor: pointer;
}
.ret-10__rail {
width: 64px;
height: 30px;
border-radius: 20px;
background: linear-gradient(180deg,#c2d8ea,#e8f2fb);
box-shadow: inset 0 2px 4px rgba(0,60,120,.35);
position: relative;
transition: background .2s;
}
.ret-10__rail::before {
content: '';
position: absolute;
top: 3px;
left: 3px;
width: 24px;
height: 24px;
border-radius: 50%;
background: radial-gradient(circle at 35% 30%,#fff,#cdd 70%);
box-shadow: 0 2px 3px rgba(0,0,0,.3);
transition: transform .2s;
}
.ret-10__sw:checked ~ .ret-10__toggle .ret-10__rail {
background: linear-gradient(180deg,#7fe0ff,#00b4ff);
}
.ret-10__sw:checked ~ .ret-10__toggle .ret-10__rail::before {
transform: translateX(34px);
background: radial-gradient(circle at 35% 30%,#fff,#aef);
}
.ret-10__toggle b {
font-weight: 700;
font-size: 1rem;
color: var(--ink);
}
@media (prefers-reduced-motion: reduce) {
.ret-10__load i::after {
animation: none;
}
}@import url('https://fonts.googleapis.com/css2?family=Michroma&family=Rajdhani:wght@400;500;600;700&display=swap');
.ret-10,
.ret-10 *,
.ret-10 *::before,
.ret-10 *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
.ret-10 ::selection {
background: #00e5ff;
color: #001018;
}
.ret-10 {
--bg1: #aee9ff;
--bg2: #d6c2ff;
--aqua: #00b4ff;
--aqua-d: #0066cc;
--silver: #dfe8f0;
--ink: #0a2540;
--lime: #9dff3c;
font-family: 'Rajdhani',sans-serif;
background: radial-gradient(circle at 20% 15%,#ffffff,transparent 40%), linear-gradient(135deg,var(--bg1),var(--bg2) 60%,#ffd1f5);
min-height: 100vh;
display: grid;
place-items: center;
padding: clamp(16px,4vw,46px);
color: var(--ink);
}
.ret-10__shell {
width: min(700px,100%);
background: linear-gradient(180deg,rgba(255,255,255,.85),rgba(220,235,250,.7));
backdrop-filter: blur(6px);
border-radius: 26px;
padding: 8px;
box-shadow: 0 0 0 1px rgba(255,255,255,.9) inset,0 0 0 2px rgba(0,120,200,.25),0 30px 60px rgba(0,80,160,.35);
}
.ret-10__chrome {
background: linear-gradient(180deg,#fff,#cfe2f2);
border-radius: 20px;
overflow: hidden;
box-shadow: inset 0 1px 0 #fff;
}
/* glossy titlebar */
.ret-10__tb {
display: flex;
align-items: center;
gap: 10px;
padding: 12px 16px;
position: relative;
background: linear-gradient(180deg,#6fc8ff 0%,#1f8fe0 48%,#0a6cc0 52%,#1f8fe0 100%);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),inset 0 -2px 4px rgba(0,0,0,.2);
}
.ret-10__tb::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 45%;
background: linear-gradient(180deg,rgba(255,255,255,.55),transparent);
pointer-events: none;
}
.ret-10__tb b {
font-family: 'Michroma';
color: #fff;
font-size: .92rem;
letter-spacing: .05em;
text-shadow: 0 1px 2px rgba(0,0,0,.4);
position: relative;
z-index: 2;
}
.ret-10__orbs {
margin-left: auto;
display: flex;
gap: 7px;
position: relative;
z-index: 2;
}
.ret-10__orb {
width: 18px;
height: 18px;
border-radius: 50%;
background: radial-gradient(circle at 35% 30%,#fff,#cdd 60%,#889);
box-shadow: 0 1px 2px rgba(0,0,0,.4),inset 0 -2px 3px rgba(0,0,0,.3);
}
.ret-10__orb--c {
background: radial-gradient(circle at 35% 30%,#d6ffb0,var(--lime) 60%,#5a9e00);
}
.ret-10__orb--x {
background: radial-gradient(circle at 35% 30%,#ffd0d0,#ff5555 60%,#aa0000);
}
.ret-10__win {
padding: 24px;
display: grid;
gap: 20px;
}
.ret-10__hero {
text-align: center;
}
.ret-10__chip {
display: inline-block;
font-family: 'Michroma';
font-size: .62rem;
letter-spacing: .25em;
color: var(--aqua-d);
background: linear-gradient(180deg,#fff,#d6ecff);
padding: 6px 14px;
border-radius: 20px;
box-shadow: inset 0 1px 0 #fff,0 1px 3px rgba(0,80,160,.3);
margin-bottom: 14px;
}
.ret-10__hero h1 {
font-family: 'Michroma';
font-size: clamp(1.6rem,6vw,2.8rem);
line-height: 1.05;
letter-spacing: -.01em;
background: linear-gradient(180deg,#0a6cc0,#00b4ff);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
filter: drop-shadow(0 2px 1px rgba(255,255,255,.8));
}
.ret-10__hero p {
font-size: 1.05rem;
font-weight: 500;
margin-top: 10px;
color: #2a5575;
}
/* the glossy jelly buttons */
.ret-10__btns {
display: flex;
gap: 16px;
flex-wrap: wrap;
justify-content: center;
}
.ret-10__jelly {
position: relative;
border: none;
cursor: pointer;
font-family: 'Rajdhani';
font-weight: 700;
font-size: 1.05rem;
letter-spacing: .04em;
color: #fff;
text-shadow: 0 1px 2px rgba(0,0,0,.35);
padding: 15px 34px;
border-radius: 30px;
overflow: hidden;
background: linear-gradient(180deg,#3fc0ff,#0a78d0 52%,#0a6cc0);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 4px 0 #04508f,0 8px 16px rgba(0,80,160,.4);
transition: transform .08s,box-shadow .08s;
}
.ret-10__jelly::before {
content: '';
position: absolute;
top: 3px;
left: 8%;
right: 8%;
height: 42%;
border-radius: 30px;
background: linear-gradient(180deg,rgba(255,255,255,.85),rgba(255,255,255,0));
pointer-events: none;
}
.ret-10__jelly:hover {
filter: brightness(1.06);
}
.ret-10__jelly:active {
transform: translateY(4px);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 0 0 #04508f,0 4px 8px rgba(0,80,160,.4);
}
.ret-10__jelly--g {
background: linear-gradient(180deg,#c8ff7a,#7ec000 52%,#5a9e00);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 4px 0 #437400,0 8px 16px rgba(80,140,0,.4);
color: #1a3000;
text-shadow: 0 1px 1px rgba(255,255,255,.4);
}
.ret-10__jelly--g:active {
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 0 0 #437400,0 4px 8px rgba(80,140,0,.4);
}
.ret-10__jelly--p {
background: linear-gradient(180deg,#ff9be8,#d63caa 52%,#b01f8f);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 4px 0 #8a1570,0 8px 16px rgba(160,0,120,.4);
}
/* progress pill + toggle */
.ret-10__panel {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 18px;
}
@media (max-width: 520px) {
.ret-10__panel {
grid-template-columns: 1fr;
}
.ret-10__hero h1 {
font-size: 1.5rem;
}
}
.ret-10__glass {
background: linear-gradient(180deg,rgba(255,255,255,.9),rgba(210,232,250,.6));
border-radius: 16px;
padding: 16px;
box-shadow: inset 0 1px 0 #fff,0 2px 6px rgba(0,80,160,.18);
}
.ret-10__glass small {
font-family: 'Michroma';
font-size: .6rem;
letter-spacing: .18em;
color: var(--aqua-d);
display: block;
margin-bottom: 10px;
}
.ret-10__load {
height: 18px;
border-radius: 12px;
background: linear-gradient(180deg,#c2d8ea,#e8f2fb);
box-shadow: inset 0 2px 3px rgba(0,60,120,.3);
overflow: hidden;
padding: 2px;
}
.ret-10__load i {
display: block;
height: 100%;
width: 68%;
border-radius: 10px;
background: linear-gradient(180deg,#7fe0ff,#00b4ff 50%,#0078c8);
box-shadow: inset 0 1px 0 rgba(255,255,255,.8);
position: relative;
overflow: hidden;
}
.ret-10__load i::after {
content: '';
position: absolute;
inset: 0;
background: repeating-linear-gradient(45deg,rgba(255,255,255,.3) 0 8px,transparent 8px 16px);
animation: ret-10-stripe 1s linear infinite;
}
@keyframes ret-10-stripe {
to {
background-position: 16px 0;
}
}
.ret-10__pct {
font-weight: 700;
color: var(--aqua-d);
margin-top: 8px;
font-size: .9rem;
}
/* aqua toggle - checkbox hack */
.ret-10__sw {
position: absolute;
opacity: 0;
pointer-events: none;
}
.ret-10__toggle {
display: flex;
align-items: center;
gap: 12px;
cursor: pointer;
}
.ret-10__rail {
width: 64px;
height: 30px;
border-radius: 20px;
background: linear-gradient(180deg,#c2d8ea,#e8f2fb);
box-shadow: inset 0 2px 4px rgba(0,60,120,.35);
position: relative;
transition: background .2s;
}
.ret-10__rail::before {
content: '';
position: absolute;
top: 3px;
left: 3px;
width: 24px;
height: 24px;
border-radius: 50%;
background: radial-gradient(circle at 35% 30%,#fff,#cdd 70%);
box-shadow: 0 2px 3px rgba(0,0,0,.3);
transition: transform .2s;
}
.ret-10__sw:checked ~ .ret-10__toggle .ret-10__rail {
background: linear-gradient(180deg,#7fe0ff,#00b4ff);
}
.ret-10__sw:checked ~ .ret-10__toggle .ret-10__rail::before {
transform: translateX(34px);
background: radial-gradient(circle at 35% 30%,#fff,#aef);
}
.ret-10__toggle b {
font-weight: 700;
font-size: 1rem;
color: var(--ink);
}
@media (prefers-reduced-motion: reduce) {
.ret-10__load i::after {
animation: none;
}
}Here's a working CSS Retro UI Design from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: Y2K Style Web UI Kit
Source: https://codefronts.com/design-styles/css-retro-designs/y2k-style-web-ui-kit/
A glossy Y2K / Aqua interface — candy jelly buttons with specular top-gloss and a 3D push, a pinstripe-animated progress pill, a frosted aqua titlebar with gel orbs, and a glassy toggle switch. Michroma + Rajdhani on an icy aqua-to-lilac gradient with chrome-clip headline type, pure CSS gloss.
## HTML
```html
<div class="ret-10">
<div class="ret-10__shell">
<div class="ret-10__chrome">
<div class="ret-10__tb">
<b>◈ AquaOS · System Preferences</b>
<span class="ret-10__orbs"><i class="ret-10__orb"></i><i class="ret-10__orb ret-10__orb--c"></i><i class="ret-10__orb ret-10__orb--x"></i></span>
</div>
<div class="ret-10__win">
<div class="ret-10__hero">
<span class="ret-10__chip">Y2K · FUTURE READY · 2001</span>
<h1>Glossy. Glassy.<br>Gloriously Y2K.</h1>
<p>Candy-coated jelly buttons, aqua gradients and pinstripe progress — pure CSS gloss.</p>
</div>
<div class="ret-10__btns">
<button class="ret-10__jelly">Download</button>
<button class="ret-10__jelly ret-10__jelly--g">Install ✓</button>
<button class="ret-10__jelly ret-10__jelly--p">Customize</button>
</div>
<div class="ret-10__panel">
<div class="ret-10__glass">
<small>SYNCING…</small>
<div class="ret-10__load"><i></i></div>
<div class="ret-10__pct">68% — 2.4 MB/s</div>
</div>
<div class="ret-10__glass" style="display:flex;align-items:center">
<input type="checkbox" id="ret-10-sw" class="ret-10__sw" checked>
<label class="ret-10__toggle" for="ret-10-sw">
<span class="ret-10__rail"></span>
<b>Aqua FX</b>
</label>
</div>
</div>
</div>
</div>
</div>
</div>
```
## CSS
```css
@import url('https://fonts.googleapis.com/css2?family=Michroma&family=Rajdhani:wght@400;500;600;700&display=swap');
.ret-10,
.ret-10 *,
.ret-10 *::before,
.ret-10 *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
.ret-10 ::selection {
background: #00e5ff;
color: #001018;
}
.ret-10 {
--bg1: #aee9ff;
--bg2: #d6c2ff;
--aqua: #00b4ff;
--aqua-d: #0066cc;
--silver: #dfe8f0;
--ink: #0a2540;
--lime: #9dff3c;
font-family: 'Rajdhani',sans-serif;
background: radial-gradient(circle at 20% 15%,#ffffff,transparent 40%), linear-gradient(135deg,var(--bg1),var(--bg2) 60%,#ffd1f5);
min-height: 100vh;
display: grid;
place-items: center;
padding: clamp(16px,4vw,46px);
color: var(--ink);
}
.ret-10__shell {
width: min(700px,100%);
background: linear-gradient(180deg,rgba(255,255,255,.85),rgba(220,235,250,.7));
backdrop-filter: blur(6px);
border-radius: 26px;
padding: 8px;
box-shadow: 0 0 0 1px rgba(255,255,255,.9) inset,0 0 0 2px rgba(0,120,200,.25),0 30px 60px rgba(0,80,160,.35);
}
.ret-10__chrome {
background: linear-gradient(180deg,#fff,#cfe2f2);
border-radius: 20px;
overflow: hidden;
box-shadow: inset 0 1px 0 #fff;
}
/* glossy titlebar */
.ret-10__tb {
display: flex;
align-items: center;
gap: 10px;
padding: 12px 16px;
position: relative;
background: linear-gradient(180deg,#6fc8ff 0%,#1f8fe0 48%,#0a6cc0 52%,#1f8fe0 100%);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),inset 0 -2px 4px rgba(0,0,0,.2);
}
.ret-10__tb::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 45%;
background: linear-gradient(180deg,rgba(255,255,255,.55),transparent);
pointer-events: none;
}
.ret-10__tb b {
font-family: 'Michroma';
color: #fff;
font-size: .92rem;
letter-spacing: .05em;
text-shadow: 0 1px 2px rgba(0,0,0,.4);
position: relative;
z-index: 2;
}
.ret-10__orbs {
margin-left: auto;
display: flex;
gap: 7px;
position: relative;
z-index: 2;
}
.ret-10__orb {
width: 18px;
height: 18px;
border-radius: 50%;
background: radial-gradient(circle at 35% 30%,#fff,#cdd 60%,#889);
box-shadow: 0 1px 2px rgba(0,0,0,.4),inset 0 -2px 3px rgba(0,0,0,.3);
}
.ret-10__orb--c {
background: radial-gradient(circle at 35% 30%,#d6ffb0,var(--lime) 60%,#5a9e00);
}
.ret-10__orb--x {
background: radial-gradient(circle at 35% 30%,#ffd0d0,#ff5555 60%,#aa0000);
}
.ret-10__win {
padding: 24px;
display: grid;
gap: 20px;
}
.ret-10__hero {
text-align: center;
}
.ret-10__chip {
display: inline-block;
font-family: 'Michroma';
font-size: .62rem;
letter-spacing: .25em;
color: var(--aqua-d);
background: linear-gradient(180deg,#fff,#d6ecff);
padding: 6px 14px;
border-radius: 20px;
box-shadow: inset 0 1px 0 #fff,0 1px 3px rgba(0,80,160,.3);
margin-bottom: 14px;
}
.ret-10__hero h1 {
font-family: 'Michroma';
font-size: clamp(1.6rem,6vw,2.8rem);
line-height: 1.05;
letter-spacing: -.01em;
background: linear-gradient(180deg,#0a6cc0,#00b4ff);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
filter: drop-shadow(0 2px 1px rgba(255,255,255,.8));
}
.ret-10__hero p {
font-size: 1.05rem;
font-weight: 500;
margin-top: 10px;
color: #2a5575;
}
/* the glossy jelly buttons */
.ret-10__btns {
display: flex;
gap: 16px;
flex-wrap: wrap;
justify-content: center;
}
.ret-10__jelly {
position: relative;
border: none;
cursor: pointer;
font-family: 'Rajdhani';
font-weight: 700;
font-size: 1.05rem;
letter-spacing: .04em;
color: #fff;
text-shadow: 0 1px 2px rgba(0,0,0,.35);
padding: 15px 34px;
border-radius: 30px;
overflow: hidden;
background: linear-gradient(180deg,#3fc0ff,#0a78d0 52%,#0a6cc0);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 4px 0 #04508f,0 8px 16px rgba(0,80,160,.4);
transition: transform .08s,box-shadow .08s;
}
.ret-10__jelly::before {
content: '';
position: absolute;
top: 3px;
left: 8%;
right: 8%;
height: 42%;
border-radius: 30px;
background: linear-gradient(180deg,rgba(255,255,255,.85),rgba(255,255,255,0));
pointer-events: none;
}
.ret-10__jelly:hover {
filter: brightness(1.06);
}
.ret-10__jelly:active {
transform: translateY(4px);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 0 0 #04508f,0 4px 8px rgba(0,80,160,.4);
}
.ret-10__jelly--g {
background: linear-gradient(180deg,#c8ff7a,#7ec000 52%,#5a9e00);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 4px 0 #437400,0 8px 16px rgba(80,140,0,.4);
color: #1a3000;
text-shadow: 0 1px 1px rgba(255,255,255,.4);
}
.ret-10__jelly--g:active {
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 0 0 #437400,0 4px 8px rgba(80,140,0,.4);
}
.ret-10__jelly--p {
background: linear-gradient(180deg,#ff9be8,#d63caa 52%,#b01f8f);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 4px 0 #8a1570,0 8px 16px rgba(160,0,120,.4);
}
/* progress pill + toggle */
.ret-10__panel {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 18px;
}
@media (max-width: 520px) {
.ret-10__panel {
grid-template-columns: 1fr;
}
.ret-10__hero h1 {
font-size: 1.5rem;
}
}
.ret-10__glass {
background: linear-gradient(180deg,rgba(255,255,255,.9),rgba(210,232,250,.6));
border-radius: 16px;
padding: 16px;
box-shadow: inset 0 1px 0 #fff,0 2px 6px rgba(0,80,160,.18);
}
.ret-10__glass small {
font-family: 'Michroma';
font-size: .6rem;
letter-spacing: .18em;
color: var(--aqua-d);
display: block;
margin-bottom: 10px;
}
.ret-10__load {
height: 18px;
border-radius: 12px;
background: linear-gradient(180deg,#c2d8ea,#e8f2fb);
box-shadow: inset 0 2px 3px rgba(0,60,120,.3);
overflow: hidden;
padding: 2px;
}
.ret-10__load i {
display: block;
height: 100%;
width: 68%;
border-radius: 10px;
background: linear-gradient(180deg,#7fe0ff,#00b4ff 50%,#0078c8);
box-shadow: inset 0 1px 0 rgba(255,255,255,.8);
position: relative;
overflow: hidden;
}
.ret-10__load i::after {
content: '';
position: absolute;
inset: 0;
background: repeating-linear-gradient(45deg,rgba(255,255,255,.3) 0 8px,transparent 8px 16px);
animation: ret-10-stripe 1s linear infinite;
}
@keyframes ret-10-stripe {
to {
background-position: 16px 0;
}
}
.ret-10__pct {
font-weight: 700;
color: var(--aqua-d);
margin-top: 8px;
font-size: .9rem;
}
/* aqua toggle - checkbox hack */
.ret-10__sw {
position: absolute;
opacity: 0;
pointer-events: none;
}
.ret-10__toggle {
display: flex;
align-items: center;
gap: 12px;
cursor: pointer;
}
.ret-10__rail {
width: 64px;
height: 30px;
border-radius: 20px;
background: linear-gradient(180deg,#c2d8ea,#e8f2fb);
box-shadow: inset 0 2px 4px rgba(0,60,120,.35);
position: relative;
transition: background .2s;
}
.ret-10__rail::before {
content: '';
position: absolute;
top: 3px;
left: 3px;
width: 24px;
height: 24px;
border-radius: 50%;
background: radial-gradient(circle at 35% 30%,#fff,#cdd 70%);
box-shadow: 0 2px 3px rgba(0,0,0,.3);
transition: transform .2s;
}
.ret-10__sw:checked ~ .ret-10__toggle .ret-10__rail {
background: linear-gradient(180deg,#7fe0ff,#00b4ff);
}
.ret-10__sw:checked ~ .ret-10__toggle .ret-10__rail::before {
transform: translateX(34px);
background: radial-gradient(circle at 35% 30%,#fff,#aef);
}
.ret-10__toggle b {
font-weight: 700;
font-size: 1rem;
color: var(--ink);
}
@media (prefers-reduced-motion: reduce) {
.ret-10__load i::after {
animation: none;
}
}
```Paste this into ChatGPT, Claude, Cursor, or any coding assistant. The block below is pre-framed with everything the AI needs to integrate this demo into your project — markup, styles, scoping notes, and the source URL. Hit Copy and paste straight into your chat.
Here's a working CSS Retro UI Design from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: Y2K Style Web UI Kit
Source: https://codefronts.com/design-styles/css-retro-designs/y2k-style-web-ui-kit/
A glossy Y2K / Aqua interface — candy jelly buttons with specular top-gloss and a 3D push, a pinstripe-animated progress pill, a frosted aqua titlebar with gel orbs, and a glassy toggle switch. Michroma + Rajdhani on an icy aqua-to-lilac gradient with chrome-clip headline type, pure CSS gloss.
## HTML
```html
<div class="ret-10">
<div class="ret-10__shell">
<div class="ret-10__chrome">
<div class="ret-10__tb">
<b>◈ AquaOS · System Preferences</b>
<span class="ret-10__orbs"><i class="ret-10__orb"></i><i class="ret-10__orb ret-10__orb--c"></i><i class="ret-10__orb ret-10__orb--x"></i></span>
</div>
<div class="ret-10__win">
<div class="ret-10__hero">
<span class="ret-10__chip">Y2K · FUTURE READY · 2001</span>
<h1>Glossy. Glassy.<br>Gloriously Y2K.</h1>
<p>Candy-coated jelly buttons, aqua gradients and pinstripe progress — pure CSS gloss.</p>
</div>
<div class="ret-10__btns">
<button class="ret-10__jelly">Download</button>
<button class="ret-10__jelly ret-10__jelly--g">Install ✓</button>
<button class="ret-10__jelly ret-10__jelly--p">Customize</button>
</div>
<div class="ret-10__panel">
<div class="ret-10__glass">
<small>SYNCING…</small>
<div class="ret-10__load"><i></i></div>
<div class="ret-10__pct">68% — 2.4 MB/s</div>
</div>
<div class="ret-10__glass" style="display:flex;align-items:center">
<input type="checkbox" id="ret-10-sw" class="ret-10__sw" checked>
<label class="ret-10__toggle" for="ret-10-sw">
<span class="ret-10__rail"></span>
<b>Aqua FX</b>
</label>
</div>
</div>
</div>
</div>
</div>
</div>
```
## CSS
```css
@import url('https://fonts.googleapis.com/css2?family=Michroma&family=Rajdhani:wght@400;500;600;700&display=swap');
.ret-10,
.ret-10 *,
.ret-10 *::before,
.ret-10 *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
.ret-10 ::selection {
background: #00e5ff;
color: #001018;
}
.ret-10 {
--bg1: #aee9ff;
--bg2: #d6c2ff;
--aqua: #00b4ff;
--aqua-d: #0066cc;
--silver: #dfe8f0;
--ink: #0a2540;
--lime: #9dff3c;
font-family: 'Rajdhani',sans-serif;
background: radial-gradient(circle at 20% 15%,#ffffff,transparent 40%), linear-gradient(135deg,var(--bg1),var(--bg2) 60%,#ffd1f5);
min-height: 100vh;
display: grid;
place-items: center;
padding: clamp(16px,4vw,46px);
color: var(--ink);
}
.ret-10__shell {
width: min(700px,100%);
background: linear-gradient(180deg,rgba(255,255,255,.85),rgba(220,235,250,.7));
backdrop-filter: blur(6px);
border-radius: 26px;
padding: 8px;
box-shadow: 0 0 0 1px rgba(255,255,255,.9) inset,0 0 0 2px rgba(0,120,200,.25),0 30px 60px rgba(0,80,160,.35);
}
.ret-10__chrome {
background: linear-gradient(180deg,#fff,#cfe2f2);
border-radius: 20px;
overflow: hidden;
box-shadow: inset 0 1px 0 #fff;
}
/* glossy titlebar */
.ret-10__tb {
display: flex;
align-items: center;
gap: 10px;
padding: 12px 16px;
position: relative;
background: linear-gradient(180deg,#6fc8ff 0%,#1f8fe0 48%,#0a6cc0 52%,#1f8fe0 100%);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),inset 0 -2px 4px rgba(0,0,0,.2);
}
.ret-10__tb::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 45%;
background: linear-gradient(180deg,rgba(255,255,255,.55),transparent);
pointer-events: none;
}
.ret-10__tb b {
font-family: 'Michroma';
color: #fff;
font-size: .92rem;
letter-spacing: .05em;
text-shadow: 0 1px 2px rgba(0,0,0,.4);
position: relative;
z-index: 2;
}
.ret-10__orbs {
margin-left: auto;
display: flex;
gap: 7px;
position: relative;
z-index: 2;
}
.ret-10__orb {
width: 18px;
height: 18px;
border-radius: 50%;
background: radial-gradient(circle at 35% 30%,#fff,#cdd 60%,#889);
box-shadow: 0 1px 2px rgba(0,0,0,.4),inset 0 -2px 3px rgba(0,0,0,.3);
}
.ret-10__orb--c {
background: radial-gradient(circle at 35% 30%,#d6ffb0,var(--lime) 60%,#5a9e00);
}
.ret-10__orb--x {
background: radial-gradient(circle at 35% 30%,#ffd0d0,#ff5555 60%,#aa0000);
}
.ret-10__win {
padding: 24px;
display: grid;
gap: 20px;
}
.ret-10__hero {
text-align: center;
}
.ret-10__chip {
display: inline-block;
font-family: 'Michroma';
font-size: .62rem;
letter-spacing: .25em;
color: var(--aqua-d);
background: linear-gradient(180deg,#fff,#d6ecff);
padding: 6px 14px;
border-radius: 20px;
box-shadow: inset 0 1px 0 #fff,0 1px 3px rgba(0,80,160,.3);
margin-bottom: 14px;
}
.ret-10__hero h1 {
font-family: 'Michroma';
font-size: clamp(1.6rem,6vw,2.8rem);
line-height: 1.05;
letter-spacing: -.01em;
background: linear-gradient(180deg,#0a6cc0,#00b4ff);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
filter: drop-shadow(0 2px 1px rgba(255,255,255,.8));
}
.ret-10__hero p {
font-size: 1.05rem;
font-weight: 500;
margin-top: 10px;
color: #2a5575;
}
/* the glossy jelly buttons */
.ret-10__btns {
display: flex;
gap: 16px;
flex-wrap: wrap;
justify-content: center;
}
.ret-10__jelly {
position: relative;
border: none;
cursor: pointer;
font-family: 'Rajdhani';
font-weight: 700;
font-size: 1.05rem;
letter-spacing: .04em;
color: #fff;
text-shadow: 0 1px 2px rgba(0,0,0,.35);
padding: 15px 34px;
border-radius: 30px;
overflow: hidden;
background: linear-gradient(180deg,#3fc0ff,#0a78d0 52%,#0a6cc0);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 4px 0 #04508f,0 8px 16px rgba(0,80,160,.4);
transition: transform .08s,box-shadow .08s;
}
.ret-10__jelly::before {
content: '';
position: absolute;
top: 3px;
left: 8%;
right: 8%;
height: 42%;
border-radius: 30px;
background: linear-gradient(180deg,rgba(255,255,255,.85),rgba(255,255,255,0));
pointer-events: none;
}
.ret-10__jelly:hover {
filter: brightness(1.06);
}
.ret-10__jelly:active {
transform: translateY(4px);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 0 0 #04508f,0 4px 8px rgba(0,80,160,.4);
}
.ret-10__jelly--g {
background: linear-gradient(180deg,#c8ff7a,#7ec000 52%,#5a9e00);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 4px 0 #437400,0 8px 16px rgba(80,140,0,.4);
color: #1a3000;
text-shadow: 0 1px 1px rgba(255,255,255,.4);
}
.ret-10__jelly--g:active {
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 0 0 #437400,0 4px 8px rgba(80,140,0,.4);
}
.ret-10__jelly--p {
background: linear-gradient(180deg,#ff9be8,#d63caa 52%,#b01f8f);
box-shadow: inset 0 1px 0 rgba(255,255,255,.7),0 4px 0 #8a1570,0 8px 16px rgba(160,0,120,.4);
}
/* progress pill + toggle */
.ret-10__panel {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 18px;
}
@media (max-width: 520px) {
.ret-10__panel {
grid-template-columns: 1fr;
}
.ret-10__hero h1 {
font-size: 1.5rem;
}
}
.ret-10__glass {
background: linear-gradient(180deg,rgba(255,255,255,.9),rgba(210,232,250,.6));
border-radius: 16px;
padding: 16px;
box-shadow: inset 0 1px 0 #fff,0 2px 6px rgba(0,80,160,.18);
}
.ret-10__glass small {
font-family: 'Michroma';
font-size: .6rem;
letter-spacing: .18em;
color: var(--aqua-d);
display: block;
margin-bottom: 10px;
}
.ret-10__load {
height: 18px;
border-radius: 12px;
background: linear-gradient(180deg,#c2d8ea,#e8f2fb);
box-shadow: inset 0 2px 3px rgba(0,60,120,.3);
overflow: hidden;
padding: 2px;
}
.ret-10__load i {
display: block;
height: 100%;
width: 68%;
border-radius: 10px;
background: linear-gradient(180deg,#7fe0ff,#00b4ff 50%,#0078c8);
box-shadow: inset 0 1px 0 rgba(255,255,255,.8);
position: relative;
overflow: hidden;
}
.ret-10__load i::after {
content: '';
position: absolute;
inset: 0;
background: repeating-linear-gradient(45deg,rgba(255,255,255,.3) 0 8px,transparent 8px 16px);
animation: ret-10-stripe 1s linear infinite;
}
@keyframes ret-10-stripe {
to {
background-position: 16px 0;
}
}
.ret-10__pct {
font-weight: 700;
color: var(--aqua-d);
margin-top: 8px;
font-size: .9rem;
}
/* aqua toggle - checkbox hack */
.ret-10__sw {
position: absolute;
opacity: 0;
pointer-events: none;
}
.ret-10__toggle {
display: flex;
align-items: center;
gap: 12px;
cursor: pointer;
}
.ret-10__rail {
width: 64px;
height: 30px;
border-radius: 20px;
background: linear-gradient(180deg,#c2d8ea,#e8f2fb);
box-shadow: inset 0 2px 4px rgba(0,60,120,.35);
position: relative;
transition: background .2s;
}
.ret-10__rail::before {
content: '';
position: absolute;
top: 3px;
left: 3px;
width: 24px;
height: 24px;
border-radius: 50%;
background: radial-gradient(circle at 35% 30%,#fff,#cdd 70%);
box-shadow: 0 2px 3px rgba(0,0,0,.3);
transition: transform .2s;
}
.ret-10__sw:checked ~ .ret-10__toggle .ret-10__rail {
background: linear-gradient(180deg,#7fe0ff,#00b4ff);
}
.ret-10__sw:checked ~ .ret-10__toggle .ret-10__rail::before {
transform: translateX(34px);
background: radial-gradient(circle at 35% 30%,#fff,#aef);
}
.ret-10__toggle b {
font-weight: 700;
font-size: 1rem;
color: var(--ink);
}
@media (prefers-reduced-motion: reduce) {
.ret-10__load i::after {
animation: none;
}
}
```