/* Frutiger Aero shared stylesheet + Y2K Chrome theme override */
* { box-sizing: border-box; }
/* smooth crossfade when switching themes */
body, .desk, .win, .glass, .glass::before, .aqua, .titlebar, .icon .glyph, .icon .label,
.taskbar, .start, .photo, .aero-link, .counter, .gate, .enter, .mark, .badge, .bubble,
.theme-switcher, .theme-switcher button {
transition:
background 450ms ease,
background-color 450ms ease,
border-color 450ms ease,
box-shadow 450ms ease,
color 450ms ease,
text-shadow 450ms ease,
filter 450ms ease;
}
html, body {
margin: 0; padding: 0;
font-family: "Segoe UI", Tahoma, "Trebuchet MS", sans-serif;
color: oklch(22% 0.04 245);
overflow: hidden;
cursor: url("data:image/svg+xml;utf8,") 10 10, auto;
}
/* SUNSET SKY */
.sky-warm {
background:
radial-gradient(120% 80% at 80% 105%, oklch(78% 0.15 55) 0%, oklch(82% 0.13 80) 20%, oklch(86% 0.10 140) 42%, oklch(82% 0.12 220) 72%, oklch(68% 0.13 240) 100%);
}
.sky-cool {
background:
radial-gradient(120% 80% at 50% 110%, oklch(88% 0.09 200) 0%, oklch(82% 0.12 220) 35%, oklch(70% 0.14 240) 80%, oklch(55% 0.15 250) 100%);
}
.sky-dawn {
background:
radial-gradient(120% 80% at 25% 100%, oklch(83% 0.13 30) 0%, oklch(86% 0.10 60) 20%, oklch(88% 0.07 200) 55%, oklch(76% 0.13 230) 100%);
}
.sun {
position: absolute; right: 7%; bottom: 10%;
width: 360px; height: 360px; border-radius: 50%;
background: radial-gradient(circle, oklch(96% 0.10 75) 0%, oklch(88% 0.14 60 / 0.7) 25%, oklch(85% 0.16 50 / 0) 65%);
filter: blur(3px); pointer-events: none;
}
.lens-flare {
position: absolute; left: 8%; top: 18%; width: 360px; height: 5px;
background: linear-gradient(90deg, transparent, oklch(98% 0.05 75 / 0.6), transparent);
transform: rotate(-18deg); filter: blur(1.5px); pointer-events: none;
}
.clouds { position: absolute; inset: 0; pointer-events: none; }
/* BUBBLES */
.bubble-field { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 0; }
.bubble {
position: absolute; bottom: -120px; border-radius: 50%;
background: radial-gradient(circle at 30% 28%, rgba(255,255,255,0.95) 0%, rgba(255,255,255,0.3) 18%, rgba(200,230,255,0.12) 55%, rgba(120,180,255,0.06) 100%);
border: 1px solid rgba(255,255,255,0.55);
box-shadow: inset -6px -8px 18px rgba(80,140,200,0.25), inset 4px 6px 12px rgba(255,255,255,0.6), 0 4px 18px rgba(120,180,240,0.15);
animation: aero-rise linear infinite;
}
@keyframes aero-rise {
0% { transform: translate(0, 0) scale(0.9); opacity: 0; }
10% { opacity: 0.7; }
90% { opacity: 0.55; }
100% { transform: translate(var(--drift, 30px), -110vh) scale(1.05); opacity: 0; }
}
/* SHARDS (chrome theme counterpart to bubbles) */
.shard-field { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 0; display: none; }
.chrome-shard {
position: absolute; bottom: -170px;
background: linear-gradient(135deg,
oklch(96% 0.02 240) 0%,
oklch(78% 0.04 280) 30%,
oklch(45% 0.06 290) 52%,
oklch(72% 0.04 240) 75%,
oklch(92% 0.02 240) 100%);
filter:
drop-shadow(0 0 8px oklch(60% 0.20 290 / 0.55))
drop-shadow(0 4px 12px oklch(5% 0.03 270 / 0.7));
animation: shard-rise linear infinite;
}
.chrome-shard.shard { clip-path: polygon(50% 0%, 70% 38%, 56% 100%, 30% 64%); }
.chrome-shard.blade { clip-path: polygon(50% 0%, 57% 50%, 50% 100%, 43% 50%); }
.chrome-shard::before {
content: "";
position: absolute; inset: 0;
background: linear-gradient(115deg,
transparent 20%,
oklch(99% 0.02 200 / 0.65) 42%,
oklch(92% 0.08 320 / 0.35) 50%,
transparent 68%);
background-size: 200% 200%;
animation: shard-streak 3s ease-in-out infinite alternate;
}
@keyframes shard-rise {
0% { transform: translate(0, 0) rotate(var(--rot0, 0deg)); opacity: 0; }
8% { opacity: 0.95; }
90% { opacity: 0.75; }
100% { transform: translate(var(--drift, 0px), -130vh) rotate(var(--rot1, 120deg)); opacity: 0; }
}
@keyframes shard-streak {
0% { background-position: 200% 0%; }
100% { background-position: -20% 0%; }
}
body[data-theme="chrome"] .shard-field { display: block; }
/* GLOSSY AQUA BUTTON */
.aqua {
position: relative; display: inline-flex; align-items: center; gap: 6px;
padding: 10px 22px; font: 600 14px "Segoe UI", Tahoma, sans-serif; color: white;
text-shadow: 0 1px 2px oklch(45% 0.13 240);
border: 1px solid oklch(50% 0.13 240); border-radius: 18px;
background: linear-gradient(to bottom, oklch(92% 0.06 220) 0%, oklch(70% 0.14 230) 48%, oklch(50% 0.13 240) 52%, oklch(70% 0.14 230) 100%);
box-shadow: inset 0 1px 0 rgba(255,255,255,0.8), inset 0 -2px 4px oklch(45% 0.13 240), 0 3px 10px rgba(40,90,140,0.35);
cursor: pointer; transition: transform 150ms;
}
.aqua::before {
content: ""; position: absolute; left: 4px; right: 4px; top: 2px; height: 42%;
border-radius: inherit;
background: linear-gradient(to bottom, rgba(255,255,255,0.85), rgba(255,255,255,0.1));
pointer-events: none;
}
.aqua:hover { transform: translateY(-1px) scale(1.02); }
.aqua.orange {
border-color: oklch(58% 0.15 40);
background: linear-gradient(to bottom, oklch(94% 0.06 70) 0%, oklch(75% 0.16 55) 48%, oklch(58% 0.15 40) 52%, oklch(75% 0.16 55) 100%);
text-shadow: 0 1px 2px oklch(50% 0.15 40);
box-shadow: inset 0 1px 0 rgba(255,255,255,0.8), inset 0 -2px 4px oklch(50% 0.15 40), 0 3px 10px rgba(180,90,40,0.35);
}
.aqua.orange::before { background: linear-gradient(to bottom, rgba(255,255,255,0.9), rgba(255,255,255,0.1)); }
.aqua.green {
border-color: oklch(55% 0.13 155);
background: linear-gradient(to bottom, oklch(94% 0.06 145) 0%, oklch(78% 0.14 145) 48%, oklch(55% 0.13 155) 52%, oklch(78% 0.14 145) 100%);
text-shadow: 0 1px 2px oklch(45% 0.13 155);
}
.aqua.sm { padding: 6px 14px; font-size: 12px; border-radius: 12px; }
.aqua.lg { padding: 14px 32px; font-size: 18px; border-radius: 24px; }
/* GLASS PANEL */
.glass {
position: relative;
background: linear-gradient(to bottom, rgba(255,255,255,0.78), rgba(220,235,255,0.55));
backdrop-filter: blur(18px) saturate(160%);
-webkit-backdrop-filter: blur(18px) saturate(160%);
border: 1px solid rgba(255,255,255,0.85);
border-radius: 18px;
box-shadow: inset 0 1px 0 rgba(255,255,255,0.95), inset 0 -1px 0 rgba(120,160,220,0.25), 0 10px 36px rgba(60,110,160,0.22);
}
.glass::before {
content: ""; position: absolute; left: 1px; right: 1px; top: 1px; height: 45%;
border-radius: inherit;
background: linear-gradient(to bottom, rgba(255,255,255,0.55), rgba(255,255,255,0));
pointer-events: none;
}
.glass.warm {
background: linear-gradient(to bottom, rgba(255,235,210,0.78), rgba(255,200,170,0.5));
border-color: rgba(255,240,220,0.8);
}
.glass.blue {
background: linear-gradient(to bottom, rgba(195,225,255,0.75), rgba(150,200,250,0.55));
}
/* PHOTO PLACEHOLDER */
.photo {
position: relative; border-radius: 10px; overflow: hidden;
background: linear-gradient(135deg, oklch(82% 0.13 60), oklch(80% 0.10 140) 45%, oklch(72% 0.13 230));
box-shadow: inset 0 1px 0 rgba(255,255,255,0.6), 0 2px 8px rgba(60,110,160,0.25);
display: flex; align-items: center; justify-content: center;
font: 11px "Courier New", monospace; color: rgba(255,255,255,0.95);
text-shadow: 0 1px 2px rgba(0,0,0,0.3); letter-spacing: 1px;
}
.photo::before {
content: ""; position: absolute; inset: 0;
background: repeating-linear-gradient(45deg, rgba(255,255,255,0.06) 0 8px, transparent 8px 16px);
}
.photo > span { position: relative; }
/* SPARKLE CURSOR */
.sparkle {
position: fixed; width: 10px; height: 10px; border-radius: 50%;
pointer-events: none; transform: translate(-50%, -50%);
animation: sparkle-fade 900ms ease-out forwards;
z-index: 99999; mix-blend-mode: screen;
}
@keyframes sparkle-fade {
0% { opacity: 1; transform: translate(-50%, -50%) scale(0.5); }
50% { opacity: 0.8; transform: translate(-50%, -50%) scale(1.4); }
100% { opacity: 0; transform: translate(-50%, -50%) scale(0.2) translateY(8px); }
}
/* LINK */
.aero-link {
color: oklch(40% 0.13 245); text-decoration: none;
border-bottom: 1px dotted oklch(55% 0.12 240); transition: color 150ms;
}
.aero-link:hover { color: oklch(60% 0.17 40); border-bottom-color: oklch(60% 0.17 40); }
/* ================================================================
THEME SWITCHER (shared widget — themes restyle it below)
================================================================ */
.theme-switcher {
position: fixed; top: 16px; right: 16px; z-index: 5000;
display: inline-flex; align-items: center; gap: 2px;
padding: 4px;
border-radius: 999px;
background: linear-gradient(to bottom, rgba(255,255,255,0.65), rgba(210,232,250,0.45));
backdrop-filter: blur(16px) saturate(170%);
-webkit-backdrop-filter: blur(16px) saturate(170%);
border: 1px solid rgba(255,255,255,0.85);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.95),
inset 0 -1px 0 rgba(120,160,200,0.25),
0 8px 24px rgba(40,80,140,0.28);
font-family: "Segoe UI", Tahoma, sans-serif;
}
.theme-switcher button {
border: 0; background: transparent;
padding: 6px 14px; border-radius: 999px;
font: 600 11px/1 "Segoe UI", Tahoma, sans-serif;
text-transform: lowercase; letter-spacing: 0.6px;
color: oklch(28% 0.06 240);
cursor: pointer;
white-space: nowrap;
}
.theme-switcher button:hover { color: oklch(45% 0.16 230); }
.theme-switcher button.active {
background: linear-gradient(to bottom,
oklch(95% 0.10 145) 0%, oklch(75% 0.18 145) 48%,
oklch(50% 0.16 150) 52%, oklch(70% 0.18 145) 100%);
color: white;
text-shadow: 0 1px 1px rgba(0,0,0,0.35);
box-shadow: inset 0 1px 0 rgba(255,255,255,0.85), 0 2px 6px rgba(60,140,100,0.4);
}
.theme-switcher .ts-dot {
width: 10px; height: 10px; border-radius: 50%; display: inline-block;
margin-right: 6px; vertical-align: -1px;
box-shadow: inset 0 1px 0 rgba(255,255,255,0.7), inset 0 -1px 1px rgba(0,0,0,0.2);
}
.theme-switcher .ts-dot.aero { background: radial-gradient(circle at 30% 30%, oklch(94% 0.10 145), oklch(55% 0.16 150)); }
.theme-switcher .ts-dot.chrome { background:
conic-gradient(from 30deg, oklch(85% 0.13 30), oklch(85% 0.14 85), oklch(85% 0.14 150),
oklch(85% 0.14 200), oklch(85% 0.16 295), oklch(85% 0.13 350), oklch(85% 0.13 30)); }
/* COUNTER */
.counter {
display: inline-flex; flex-direction: column; align-items: center; gap: 4px;
padding: 8px; border-radius: 8px;
background: linear-gradient(to bottom, oklch(45% 0.04 240), oklch(28% 0.05 250));
border: 1px solid oklch(60% 0.05 240);
box-shadow: inset 0 1px 0 rgba(255,255,255,0.3), 0 3px 10px rgba(0,0,0,0.3);
}
.counter .digits { display: flex; gap: 2px; }
.counter .d {
width: 18px; height: 28px; display: flex; align-items: center; justify-content: center;
background: linear-gradient(to bottom, #0a0a18, #1a1a2a);
border: 1px solid oklch(35% 0.05 240);
color: oklch(85% 0.20 145); font: 700 20px "Courier New", monospace;
text-shadow: 0 0 6px oklch(85% 0.20 145), 0 0 12px oklch(85% 0.20 145 / 0.6);
border-radius: 2px;
}
.counter .label {
font-size: 9px; color: rgba(255,255,255,0.85); letter-spacing: 2px; text-transform: uppercase;
font-family: "Segoe UI", Tahoma, sans-serif;
}
/* ================================================================
THEME: Y2K CHROME (1999-2002 — liquid silver, holographic rims,
navy starfield, iridescent everything)
================================================================ */
body[data-theme="chrome"] {
/* redefine root vars used by inline styles in desktop.html */
--sky:
linear-gradient(180deg, oklch(14% 0.04 250 / 0.35), oklch(8% 0.03 250 / 0.55)),
url("img/wallpaper-chrome.png") center / cover no-repeat,
linear-gradient(180deg, oklch(13% 0.05 250) 0%, oklch(7% 0.03 250) 100%);
--title-bar: linear-gradient(180deg,
oklch(94% 0.01 240) 0%,
oklch(75% 0.02 240) 45%,
oklch(55% 0.02 250) 50%,
oklch(72% 0.02 240) 55%,
oklch(88% 0.01 240) 100%);
--start-btn: linear-gradient(180deg,
oklch(92% 0.06 290) 0%, oklch(65% 0.16 290) 48%,
oklch(35% 0.16 290) 52%, oklch(72% 0.14 290) 100%);
--start-border: oklch(25% 0.10 290);
--icon-blue: linear-gradient(180deg, oklch(96% 0.02 240), oklch(72% 0.04 240) 45%, oklch(32% 0.06 250) 55%, oklch(82% 0.02 240));
--icon-orange: linear-gradient(180deg, oklch(96% 0.02 240), oklch(72% 0.04 280) 45%, oklch(32% 0.06 290) 55%, oklch(82% 0.02 240));
--icon-green: linear-gradient(180deg, oklch(96% 0.02 240), oklch(72% 0.04 200) 45%, oklch(32% 0.06 220) 55%, oklch(82% 0.02 240));
--icon-pink: linear-gradient(180deg, oklch(96% 0.02 240), oklch(72% 0.04 320) 45%, oklch(32% 0.06 330) 55%, oklch(82% 0.02 240));
--icon-silver: linear-gradient(180deg, oklch(96% 0.02 240), oklch(72% 0.02 250) 45%, oklch(32% 0.04 260) 55%, oklch(82% 0.02 240));
background:
linear-gradient(180deg, oklch(14% 0.04 250 / 0.35), oklch(8% 0.03 250 / 0.55)),
url("img/wallpaper-chrome.png") center / cover no-repeat,
linear-gradient(180deg, oklch(13% 0.05 250) 0%, oklch(7% 0.03 250) 100%) !important;
background-attachment: fixed !important;
color: oklch(15% 0.02 250);
}
body[data-theme="chrome"] .desk {
background:
linear-gradient(180deg, oklch(14% 0.04 250 / 0.35), oklch(8% 0.03 250 / 0.55)),
url("img/wallpaper-chrome.png") center / cover no-repeat,
linear-gradient(180deg, oklch(13% 0.05 250) 0%, oklch(7% 0.03 250) 100%) !important;
}
body[data-theme="chrome"] .clouds,
body[data-theme="chrome"] .sun,
body[data-theme="chrome"] .lens-flare,
body[data-theme="chrome"] .bubble-field { display: none !important; }
/* icons — chrome ball with iridescent halo */
body[data-theme="chrome"] .icon .glyph {
background: linear-gradient(180deg,
oklch(96% 0.02 240) 0%,
oklch(75% 0.04 280) 42%,
oklch(30% 0.06 280) 52%,
oklch(70% 0.04 280) 72%,
oklch(88% 0.03 240) 100%) !important;
border: 1px solid oklch(45% 0.04 280);
box-shadow:
inset 0 2px 0 oklch(99% 0.01 240),
inset 0 -2px 4px oklch(15% 0.05 280),
0 0 0 1px oklch(20% 0.05 280),
0 4px 14px oklch(5% 0.04 280),
0 0 12px oklch(60% 0.20 320 / 0.35) !important;
color: oklch(98% 0.02 320) !important;
text-shadow:
0 1px 1px oklch(15% 0.05 280),
0 0 6px oklch(80% 0.20 320),
0 0 10px oklch(80% 0.20 200) !important;
}
body[data-theme="chrome"] .icon .glyph::before {
background: linear-gradient(180deg,
oklch(99% 0.01 240 / 0.95) 0%,
oklch(85% 0.10 200 / 0.45) 60%,
transparent 100%) !important;
}
body[data-theme="chrome"] .icon .label {
color: oklch(92% 0.02 240) !important;
text-shadow: 0 1px 2px oklch(5% 0.04 280), 0 0 6px oklch(50% 0.15 290 / 0.7) !important;
font-weight: 700;
}
/* windows — brushed chrome panel */
body[data-theme="chrome"] .glass {
background:
linear-gradient(180deg,
oklch(94% 0.01 240) 0%,
oklch(82% 0.01 240) 28%,
oklch(72% 0.02 240) 50%,
oklch(84% 0.01 240) 78%,
oklch(92% 0.01 240) 100%) !important;
border: 1px solid oklch(38% 0.03 250) !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
box-shadow:
inset 0 1px 0 oklch(99% 0 0),
inset 0 -1px 0 oklch(45% 0.02 250),
inset 0 0 0 1px oklch(99% 0 0 / 0.35),
0 14px 36px oklch(5% 0.03 270),
0 0 0 1px oklch(20% 0.02 250) !important;
color: oklch(15% 0.02 250) !important;
}
/* iridescent rim overlay */
body[data-theme="chrome"] .glass::before {
background: linear-gradient(180deg,
oklch(99% 0.01 240 / 0.85) 0%,
oklch(92% 0.06 200 / 0.5) 35%,
oklch(92% 0.06 320 / 0.25) 65%,
transparent 100%) !important;
}
body[data-theme="chrome"] .titlebar {
background: linear-gradient(180deg,
oklch(94% 0.01 240) 0%,
oklch(75% 0.02 240) 45%,
oklch(55% 0.02 250) 50%,
oklch(72% 0.02 240) 55%,
oklch(88% 0.01 240) 100%) !important;
color: oklch(12% 0.02 250) !important;
text-shadow: 0 1px 0 oklch(99% 0 0 / 0.85) !important;
border-bottom: 1px solid oklch(35% 0.03 250) !important;
}
body[data-theme="chrome"] .titlebar .dot {
box-shadow:
inset 0 1px 0 oklch(99% 0 0 / 0.85),
inset 0 -1px 1px oklch(15% 0.04 250),
0 0 0 1px oklch(35% 0.03 250) !important;
}
/* aqua buttons → mercury chrome pills */
body[data-theme="chrome"] .aqua,
body[data-theme="chrome"] .aqua.orange,
body[data-theme="chrome"] .aqua.green {
background: linear-gradient(180deg,
oklch(96% 0.01 240) 0%,
oklch(78% 0.02 240) 45%,
oklch(40% 0.03 250) 52%,
oklch(72% 0.02 240) 70%,
oklch(90% 0.01 240) 100%) !important;
border: 1px solid oklch(28% 0.03 250) !important;
color: oklch(98% 0 0) !important;
text-shadow: 0 1px 0 oklch(20% 0.04 250), 0 -1px 0 oklch(99% 0 0 / 0.5) !important;
box-shadow:
inset 0 1px 0 oklch(99% 0 0 / 0.9),
inset 0 -2px 4px oklch(20% 0.04 250),
0 3px 12px oklch(5% 0.03 270) !important;
}
body[data-theme="chrome"] .aqua::before {
background: linear-gradient(180deg, oklch(99% 0 0 / 0.85), oklch(99% 0.05 200 / 0.15)) !important;
}
/* taskbar */
body[data-theme="chrome"] .taskbar {
background: linear-gradient(180deg,
oklch(88% 0.01 240) 0%,
oklch(60% 0.02 250) 50%,
oklch(75% 0.02 240) 100%) !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
border: 1px solid oklch(35% 0.03 250) !important;
box-shadow:
inset 0 1px 0 oklch(99% 0 0),
inset 0 -1px 0 oklch(40% 0.02 250),
0 12px 36px oklch(5% 0.03 270) !important;
}
body[data-theme="chrome"] .tray { color: oklch(15% 0.02 250) !important; }
body[data-theme="chrome"] .clock { color: oklch(15% 0.02 250) !important; }
body[data-theme="chrome"] .taskbar .sep {
background: linear-gradient(to bottom, transparent, oklch(35% 0.03 250), transparent) !important;
}
body[data-theme="chrome"] .start {
background: linear-gradient(180deg,
oklch(92% 0.06 290) 0%,
oklch(65% 0.16 290) 48%,
oklch(35% 0.16 290) 52%,
oklch(72% 0.14 290) 100%) !important;
border: 1px solid oklch(25% 0.10 290) !important;
color: oklch(99% 0.01 240) !important;
text-shadow: 0 1px 1px oklch(15% 0.10 290), 0 0 6px oklch(80% 0.20 320 / 0.6) !important;
box-shadow:
inset 0 1px 0 oklch(99% 0 0 / 0.9),
inset 0 -2px 4px oklch(20% 0.10 290),
0 3px 12px oklch(5% 0.04 280) !important;
}
/* music toggle */
body[data-theme="chrome"] .music-toggle {
background: linear-gradient(180deg, oklch(94% 0.01 240), oklch(70% 0.02 240)) !important;
border: 1px solid oklch(38% 0.03 250) !important;
color: oklch(15% 0.02 250) !important;
}
/* counter — chrome bezel */
body[data-theme="chrome"] .counter {
background: linear-gradient(180deg, oklch(35% 0.04 250), oklch(20% 0.03 260)) !important;
border: 1px solid oklch(60% 0.04 250) !important;
}
/* body text content */
body[data-theme="chrome"] .win .body { color: oklch(15% 0.02 250) !important; }
body[data-theme="chrome"] .win .body a,
body[data-theme="chrome"] .aero-link {
color: oklch(40% 0.18 290) !important;
border-bottom-color: oklch(55% 0.18 290) !important;
}
body[data-theme="chrome"] .aero-link:hover { color: oklch(50% 0.20 320) !important; }
body[data-theme="chrome"] .photo {
background: linear-gradient(135deg,
oklch(85% 0.02 240) 0%,
oklch(55% 0.04 280) 45%,
oklch(80% 0.03 240) 100%) !important;
color: oklch(98% 0 0) !important;
}
body[data-theme="chrome"] .photo::before {
background: repeating-linear-gradient(45deg,
oklch(99% 0 0 / 0.12) 0 8px, transparent 8px 16px) !important;
}
body[data-theme="chrome"] .srv-host { color: oklch(15% 0.02 250) !important; }
body[data-theme="chrome"] .srv-row { border-bottom-color: oklch(50% 0.03 250 / 0.5) !important; }
body[data-theme="chrome"] .film-row { border-bottom-color: oklch(50% 0.03 250 / 0.5) !important; }
body[data-theme="chrome"] .film-title { color: oklch(12% 0.02 250) !important; }
/* counter digits keep their classic green LED — perfect Y2K touch */
/* scanline overlay across entire desk */
/* icons — dark HUD tile with neon outline */
/* windows — smoked glass with neon edge */
/* aqua buttons → neon HUD pills */
/* taskbar HUD */
/* music toggle */
/* counter — green LED on dark — feels right at home */
/* body text content — all bright/cyan/magenta */
/* photo placeholder → CRT readout */
/* servers + films + film posters */
/* form fields in guestbook */
/* ================================================================
THEME SWITCHER per-theme restyle
================================================================ */
body[data-theme="chrome"] .theme-switcher {
background: linear-gradient(180deg, oklch(90% 0.01 240), oklch(62% 0.02 250), oklch(80% 0.01 240)) !important;
border: 1px solid oklch(35% 0.03 250);
backdrop-filter: none;
-webkit-backdrop-filter: none;
box-shadow:
inset 0 1px 0 oklch(99% 0 0),
inset 0 -1px 0 oklch(40% 0.02 250),
0 8px 24px oklch(5% 0.03 270);
}
body[data-theme="chrome"] .theme-switcher button { color: oklch(15% 0.02 250); }
body[data-theme="chrome"] .theme-switcher button.active {
background: linear-gradient(180deg, oklch(92% 0.06 290), oklch(45% 0.16 290));
color: oklch(99% 0 0);
text-shadow: 0 1px 1px oklch(15% 0.10 290);
}
/* ================================================================
WELCOME PAGE overrides
================================================================ */
/* CHROME welcome */
body[data-theme="chrome"].welcome-body { /* set in welcome.html */ }
body[data-theme="chrome"] .gate {
background:
linear-gradient(180deg, oklch(94% 0.01 240) 0%, oklch(78% 0.02 240) 50%, oklch(90% 0.01 240) 100%) !important;
border: 1px solid oklch(35% 0.03 250) !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
box-shadow:
inset 0 1px 0 oklch(99% 0 0),
inset 0 -1px 0 oklch(45% 0.02 250),
inset 0 0 0 1px oklch(99% 0 0 / 0.35),
0 22px 60px oklch(5% 0.03 270) !important;
}
body[data-theme="chrome"] .gate::before {
background: linear-gradient(180deg,
oklch(99% 0.01 240 / 0.85) 0%,
oklch(92% 0.06 200 / 0.4) 40%,
transparent 100%) !important;
}
body[data-theme="chrome"] .mark {
background:
radial-gradient(circle at 30% 28%, oklch(99% 0.01 240) 0%, oklch(85% 0.05 290) 35%, oklch(40% 0.10 290) 100%) !important;
border: 1.5px solid oklch(99% 0 0 / 0.6) !important;
box-shadow:
inset -6px -8px 18px oklch(20% 0.08 280),
inset 4px 6px 12px oklch(99% 0 0 / 0.7),
0 6px 22px oklch(50% 0.20 290 / 0.55),
0 0 18px oklch(75% 0.20 320 / 0.4) !important;
color: oklch(99% 0 0) !important;
text-shadow: 0 1px 2px oklch(15% 0.10 290), 0 0 6px oklch(80% 0.20 320) !important;
}
body[data-theme="chrome"] .title { color: oklch(12% 0.02 250) !important; text-shadow: 0 1px 0 oklch(99% 0 0 / 0.7) !important; }
body[data-theme="chrome"] .title em {
background: linear-gradient(180deg, oklch(75% 0.18 290), oklch(45% 0.16 290) 50%, oklch(72% 0.14 320));
-webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
color: transparent !important;
}
body[data-theme="chrome"] .sub { color: oklch(20% 0.03 250) !important; }
body[data-theme="chrome"] .sub strong { color: oklch(35% 0.18 290) !important; }
body[data-theme="chrome"] .enter {
background: linear-gradient(180deg,
oklch(96% 0.02 240) 0%,
oklch(78% 0.02 240) 45%,
oklch(38% 0.04 250) 52%,
oklch(72% 0.02 240) 70%,
oklch(90% 0.01 240) 100%) !important;
border: 1.5px solid oklch(28% 0.03 250) !important;
color: oklch(98% 0 0) !important;
text-shadow: 0 1px 0 oklch(20% 0.04 250), 0 -1px 0 oklch(99% 0 0 / 0.5) !important;
box-shadow:
inset 0 2px 0 oklch(99% 0 0 / 0.9),
inset 0 -3px 6px oklch(20% 0.04 250),
0 6px 22px oklch(5% 0.03 270),
0 0 14px oklch(60% 0.20 320 / 0.4) !important;
}
body[data-theme="chrome"] .footer-note { color: oklch(90% 0.02 240) !important; text-shadow: 0 1px 2px oklch(5% 0.03 270) !important; }
body[data-theme="chrome"] .footer-note a { color: oklch(80% 0.18 290) !important; }
body[data-theme="chrome"] .meta { color: oklch(35% 0.03 250) !important; text-shadow: 0 1px 0 oklch(99% 0 0 / 0.5) !important; }
body[data-theme="chrome"] .badge {
background: linear-gradient(180deg, oklch(90% 0.01 240), oklch(58% 0.02 250)) !important;
border-color: oklch(30% 0.03 250) !important;
color: oklch(99% 0 0) !important;
text-shadow: 0 1px 1px oklch(15% 0.04 250) !important;
}
body[data-theme="chrome"] .badge.green { background: linear-gradient(180deg, oklch(85% 0.14 145), oklch(45% 0.12 150)) !important; }
body[data-theme="chrome"] .badge.silver { background: linear-gradient(180deg, oklch(94% 0.01 240), oklch(65% 0.02 250)) !important; color: oklch(15% 0.02 250) !important; text-shadow: 0 1px 0 oklch(99% 0 0 / 0.7) !important; }
/* CHROME welcome body background */
body[data-theme="chrome"].welcome-body {
background:
linear-gradient(180deg, oklch(14% 0.04 250 / 0.35), oklch(8% 0.03 250 / 0.55)),
url("img/wallpaper-chrome.png") center / cover no-repeat,
linear-gradient(180deg, oklch(13% 0.05 250) 0%, oklch(7% 0.03 250) 100%) !important;
background-attachment: fixed !important;
}
/* ================================================================
Y2K CHROME — typography upgrade + extra polish
Audiowide (display) · Michroma (UI/labels) · Space Grotesk (body) · IBM Plex Mono (mono)
================================================================ */
/* Window content reads as smooth modern sans */
body[data-theme="chrome"] .win .body,
body[data-theme="chrome"] .win .body * {
font-family: "Space Grotesk", "Segoe UI", Tahoma, sans-serif;
}
/* Numeric/host bits stay mono */
body[data-theme="chrome"] .srv-host,
body[data-theme="chrome"] .clock,
body[data-theme="chrome"] .film-year,
body[data-theme="chrome"] code,
body[data-theme="chrome"] .photo,
body[data-theme="chrome"] textarea {
font-family: "IBM Plex Mono", "Courier New", monospace !important;
letter-spacing: 0;
}
/* Title bars → Michroma, narrow geometric, all-caps */
body[data-theme="chrome"] .titlebar {
font-family: "Michroma", "Segoe UI", Tahoma, sans-serif !important;
font-size: 10px !important;
letter-spacing: 1.5px;
text-transform: uppercase;
font-weight: 400 !important;
position: relative;
height: 34px !important;
}
/* Iridescent seam under titlebar */
body[data-theme="chrome"] .titlebar::after {
content: "";
position: absolute; left: 0; right: 0; bottom: -1px; height: 2px;
background: linear-gradient(90deg,
oklch(85% 0.18 30) 0%,
oklch(88% 0.14 80) 18%,
oklch(88% 0.16 150) 36%,
oklch(88% 0.14 200) 54%,
oklch(85% 0.18 295) 72%,
oklch(85% 0.18 350) 90%,
oklch(85% 0.18 30) 100%);
background-size: 200% 100%;
animation: chromeShimmer 8s linear infinite;
opacity: 0.85;
pointer-events: none;
}
@keyframes chromeShimmer {
0% { background-position: 0% 0%; }
100% { background-position: 200% 0%; }
}
/* Icon labels → Michroma small caps */
body[data-theme="chrome"] .icon .label {
font-family: "Michroma", sans-serif !important;
font-size: 9px !important;
letter-spacing: 1px;
text-transform: uppercase;
font-weight: 400;
line-height: 1.3;
margin-top: 4px;
}
/* Brighten icon halo + cleaner specular */
body[data-theme="chrome"] .icon:hover .glyph {
filter: brightness(1.08);
box-shadow:
inset 0 2px 0 oklch(99% 0.01 240),
inset 0 -2px 4px oklch(15% 0.05 280),
0 0 0 1px oklch(20% 0.05 280),
0 4px 14px oklch(5% 0.04 280),
0 0 18px oklch(65% 0.22 320 / 0.55) !important;
}
/* Start button → Michroma */
body[data-theme="chrome"] .start {
font-family: "Michroma", sans-serif !important;
font-size: 10px !important;
letter-spacing: 2px;
text-transform: uppercase;
}
body[data-theme="chrome"] .start span:first-child { font-size: 14px !important; letter-spacing: 0; }
/* Music toggle */
body[data-theme="chrome"] .music-toggle {
font-family: "Michroma", sans-serif !important;
font-size: 9px !important;
letter-spacing: 1px;
text-transform: uppercase;
}
/* Tray text */
body[data-theme="chrome"] .tray {
font-family: "Michroma", sans-serif !important;
font-size: 9px !important;
letter-spacing: 1px;
text-transform: uppercase;
}
/* Aqua buttons → Michroma */
body[data-theme="chrome"] .aqua,
body[data-theme="chrome"] .aqua.sm,
body[data-theme="chrome"] .aqua.lg {
font-family: "Michroma", sans-serif !important;
letter-spacing: 1.5px;
text-transform: uppercase;
font-size: 10px !important;
}
body[data-theme="chrome"] .aqua.sm { font-size: 9px !important; padding: 7px 14px !important; }
/* Theme switcher pills */
body[data-theme="chrome"] .theme-switcher button {
font-family: "Michroma", sans-serif !important;
font-size: 9px !important;
letter-spacing: 1.5px;
text-transform: uppercase;
padding: 7px 16px !important;
}
/* Body content headings get more presence */
body[data-theme="chrome"] .win .body > div[style*="font-size: 22px"],
body[data-theme="chrome"] .win .body > div > div[style*="font-size: 22px"] {
font-family: "Audiowide", "Space Grotesk", sans-serif !important;
letter-spacing: -0.5px;
text-shadow: 0 1px 0 oklch(99% 0 0 / 0.7) !important;
}
/* Servers list — terminal vibe */
body[data-theme="chrome"] .srv-row { font-family: "IBM Plex Mono", monospace; }
body[data-theme="chrome"] .srv-meta { font-family: "Space Grotesk", sans-serif !important; font-size: 9px !important; letter-spacing: 0.5px; text-transform: uppercase; opacity: 0.7; }
/* Film titles get display font, year stays mono */
body[data-theme="chrome"] .film-title {
font-family: "Audiowide", "Space Grotesk", sans-serif !important;
font-weight: 400 !important;
font-size: 12px !important;
letter-spacing: 0;
}
/* Counter label */
body[data-theme="chrome"] .counter .label {
font-family: "Michroma", sans-serif !important;
letter-spacing: 1.5px;
font-size: 8px !important;
}
body[data-theme="chrome"] .counter .d {
font-family: "IBM Plex Mono", "Courier New", monospace !important;
}
/* Subtle horizontal banding on the chrome glass — looks like rolled steel */
body[data-theme="chrome"] .glass {
background-image:
repeating-linear-gradient(0deg,
oklch(99% 0 0 / 0.04) 0px, oklch(99% 0 0 / 0.04) 1px,
transparent 1px, transparent 3px),
linear-gradient(180deg,
oklch(94% 0.01 240) 0%,
oklch(82% 0.01 240) 28%,
oklch(72% 0.02 240) 50%,
oklch(84% 0.01 240) 78%,
oklch(92% 0.01 240) 100%) !important;
}
/* ================================================================
WELCOME page — push the chrome treatment harder
================================================================ */
body[data-theme="chrome"] .title {
font-family: "Audiowide", sans-serif !important;
font-weight: 400 !important;
font-size: 78px !important;
letter-spacing: -2px !important;
line-height: 0.95;
color: oklch(12% 0.02 250) !important;
background: linear-gradient(180deg,
oklch(96% 0.01 240) 0%,
oklch(85% 0.01 240) 35%,
oklch(35% 0.02 250) 50%,
oklch(78% 0.02 240) 65%,
oklch(94% 0.01 240) 100%) !important;
-webkit-background-clip: text !important;
background-clip: text !important;
-webkit-text-fill-color: transparent !important;
color: transparent !important;
text-shadow: none !important;
filter: drop-shadow(0 2px 0 oklch(99% 0 0 / 0.5)) drop-shadow(0 4px 12px oklch(5% 0.03 270 / 0.6));
}
body[data-theme="chrome"] .title em {
font-family: "Audiowide", sans-serif !important;
font-style: italic;
background: linear-gradient(135deg,
oklch(85% 0.18 30) 0%,
oklch(88% 0.14 80) 20%,
oklch(88% 0.16 150) 40%,
oklch(85% 0.18 200) 60%,
oklch(85% 0.18 295) 80%,
oklch(85% 0.18 350) 100%) !important;
background-size: 200% 200% !important;
-webkit-background-clip: text !important;
background-clip: text !important;
-webkit-text-fill-color: transparent !important;
color: transparent !important;
animation: chromeShimmer 6s linear infinite;
}
body[data-theme="chrome"] .sub {
font-family: "Space Grotesk", sans-serif !important;
font-size: 13px !important;
}
body[data-theme="chrome"] .enter {
font-family: "Michroma", sans-serif !important;
font-size: 16px !important;
letter-spacing: 4px !important;
text-transform: uppercase;
}
body[data-theme="chrome"] .meta {
font-family: "Michroma", sans-serif !important;
font-size: 9px !important;
letter-spacing: 2px;
}
body[data-theme="chrome"] .footer-note {
font-family: "IBM Plex Mono", monospace !important;
font-size: 10px !important;
letter-spacing: 0.5px;
}
body[data-theme="chrome"] .badge {
font-family: "Michroma", sans-serif !important;
font-size: 8px !important;
letter-spacing: 1.5px;
}
/* Holographic shimmer sweep across the welcome glass */
body[data-theme="chrome"] .gate {
position: relative;
overflow: hidden;
}
body[data-theme="chrome"] .gate::after {
content: "";
position: absolute; inset: 0;
background: linear-gradient(115deg,
transparent 30%,
oklch(99% 0.05 200 / 0.18) 45%,
oklch(85% 0.16 320 / 0.12) 50%,
oklch(99% 0.05 200 / 0.18) 55%,
transparent 70%);
background-size: 250% 100%;
animation: chromeSweep 7s ease-in-out infinite;
pointer-events: none;
mix-blend-mode: screen;
border-radius: inherit;
}
@keyframes chromeSweep {
0%, 100% { background-position: 200% 0%; }
50% { background-position: -50% 0%; }
}
/* Welcome mark — chrome orb gets a holographic ring */
body[data-theme="chrome"] .mark {
position: relative;
}
body[data-theme="chrome"] .mark::after {
content: "";
position: absolute; inset: -5px;
border-radius: 50%;
background: conic-gradient(from 0deg,
oklch(85% 0.18 30),
oklch(88% 0.14 80),
oklch(88% 0.16 150),
oklch(85% 0.18 200),
oklch(85% 0.18 295),
oklch(85% 0.18 350),
oklch(85% 0.18 30));
mask: radial-gradient(circle, transparent 56%, black 58%, black 64%, transparent 66%);
-webkit-mask: radial-gradient(circle, transparent 56%, black 58%, black 64%, transparent 66%);
animation: spin 12s linear infinite;
pointer-events: none;
opacity: 0.9;
}
@keyframes spin { to { transform: rotate(360deg); } }
/* ================================================================
AERO — typography upgrade (Plus Jakarta Sans — closest free Frutiger)
================================================================ */
/* Base font for the aero theme (default) */
body[data-theme="aero"],
body[data-theme="aero"] .win .body,
body[data-theme="aero"] .win .body * {
font-family: "Plus Jakarta Sans", "Segoe UI", Tahoma, "Trebuchet MS", sans-serif;
font-feature-settings: "ss01", "cv11";
}
/* Mono bits in aero — consistent with chrome */
body[data-theme="aero"] .srv-host,
body[data-theme="aero"] .clock,
body[data-theme="aero"] .film-year,
body[data-theme="aero"] code,
body[data-theme="aero"] .photo,
body[data-theme="aero"] textarea {
font-family: "IBM Plex Mono", "Courier New", monospace !important;
letter-spacing: 0;
}
/* Title bars — slightly tightened Jakarta */
body[data-theme="aero"] .titlebar {
font-family: "Plus Jakarta Sans", "Segoe UI", Tahoma, sans-serif !important;
font-weight: 700 !important;
font-size: 12px !important;
letter-spacing: 0.2px;
}
/* Icon labels — refined */
body[data-theme="aero"] .icon .label {
font-family: "Plus Jakarta Sans", "Segoe UI", Tahoma, sans-serif !important;
font-weight: 600 !important;
font-size: 12px !important;
letter-spacing: 0.1px;
}
/* Start, tray, music toggle */
body[data-theme="aero"] .start {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 800 !important;
font-size: 13px !important;
letter-spacing: 0.3px;
text-transform: none;
}
body[data-theme="aero"] .tray {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 500 !important;
font-size: 12px !important;
letter-spacing: 0;
text-transform: none;
}
body[data-theme="aero"] .music-toggle {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 500 !important;
font-size: 12px !important;
letter-spacing: 0;
text-transform: none;
}
/* Aqua buttons */
body[data-theme="aero"] .aqua,
body[data-theme="aero"] .aqua.sm,
body[data-theme="aero"] .aqua.lg {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 700 !important;
letter-spacing: 0.2px;
text-transform: none;
}
/* Theme switcher pills */
body[data-theme="aero"] .theme-switcher button {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 700 !important;
font-size: 12px !important;
letter-spacing: 0.3px;
text-transform: lowercase;
}
/* Servers list */
body[data-theme="aero"] .srv-row { font-family: "IBM Plex Mono", monospace; }
body[data-theme="aero"] .srv-meta {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 500 !important;
font-size: 10px !important;
letter-spacing: 0.4px;
text-transform: uppercase;
opacity: 0.7;
}
/* Film titles */
body[data-theme="aero"] .film-title {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 800 !important;
letter-spacing: -0.2px;
}
/* Counter label */
body[data-theme="aero"] .counter .label {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 700 !important;
letter-spacing: 1.5px;
font-size: 9px !important;
text-transform: uppercase;
}
body[data-theme="aero"] .counter .d {
font-family: "IBM Plex Mono", "Courier New", monospace !important;
}
/* ================================================================
WELCOME — aero
================================================================ */
body[data-theme="aero"] .title {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 200 !important;
font-size: 72px !important;
letter-spacing: -2.5px !important;
line-height: 1;
}
body[data-theme="aero"] .title em {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 300 !important;
font-style: italic;
letter-spacing: -2px;
}
body[data-theme="aero"] .sub {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 400 !important;
font-size: 14px !important;
letter-spacing: 0;
line-height: 1.6;
}
body[data-theme="aero"] .sub strong {
font-weight: 700 !important;
}
body[data-theme="aero"] .enter {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 700 !important;
font-size: 22px !important;
letter-spacing: 0.3px !important;
text-transform: lowercase;
}
body[data-theme="aero"] .meta {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 600 !important;
font-size: 10px !important;
letter-spacing: 1.8px;
text-transform: uppercase;
}
body[data-theme="aero"] .footer-note {
font-family: "IBM Plex Mono", monospace !important;
font-size: 11px !important;
letter-spacing: 0.3px;
}
body[data-theme="aero"] .badge {
font-family: "Plus Jakarta Sans", sans-serif !important;
font-weight: 700 !important;
font-size: 9px !important;
letter-spacing: 1.2px;
text-transform: uppercase;
}
/* ================================================================
CURSOR — chrome theme gets a silver Y2K bead instead of the
aero water-droplet. Sparkle trail stays.
================================================================ */
body[data-theme="chrome"],
body[data-theme="chrome"] * {
cursor: url("data:image/svg+xml;utf8,") 11 11, auto;
}
/* hover/pointer state inside chrome — same bead, no change needed */
body[data-theme="chrome"] a,
body[data-theme="chrome"] button,
body[data-theme="chrome"] .icon,
body[data-theme="chrome"] .aqua,
body[data-theme="chrome"] .enter,
body[data-theme="chrome"] .start {
cursor: url("data:image/svg+xml;utf8,") 11 11, pointer;
}
/* ================================================================
CHROME THEME — Resize handles
================================================================ */
body[data-theme="chrome"] .rs-se {
background-image:
linear-gradient(135deg, transparent 0 38%, oklch(80% 0.18 290 / 0.85) 38% 48%, transparent 48% 60%, oklch(82% 0.16 200 / 0.85) 60% 70%, transparent 70%, oklch(85% 0.18 320 / 0.85) 82% 92%, transparent 92%) !important;
opacity: 0.8;
}
body[data-theme="chrome"] .rs-se:hover {
filter: drop-shadow(0 0 6px oklch(70% 0.20 290 / 0.9)) !important;
opacity: 1;
}
/* ================================================================
CHROME THEME — Browser ("Internet" window)
================================================================ */
body[data-theme="chrome"] .browser-toolbar {
background-image:
repeating-linear-gradient(0deg,
oklch(99% 0 0 / 0.05) 0px, oklch(99% 0 0 / 0.05) 1px,
transparent 1px, transparent 3px),
linear-gradient(180deg,
oklch(92% 0.01 240) 0%,
oklch(78% 0.01 240) 50%,
oklch(86% 0.01 240) 100%) !important;
border-bottom: 1px solid oklch(28% 0.03 250) !important;
box-shadow:
inset 0 1px 0 oklch(99% 0 0 / 0.7),
inset 0 -1px 0 oklch(99% 0.05 200 / 0.25);
position: relative;
}
body[data-theme="chrome"] .browser-toolbar::after {
content: "";
position: absolute; left: 0; right: 0; bottom: -1px; height: 1px;
background: linear-gradient(90deg,
transparent 0%,
oklch(75% 0.18 200 / 0.7) 20%,
oklch(75% 0.18 290 / 0.8) 50%,
oklch(75% 0.18 320 / 0.7) 80%,
transparent 100%);
pointer-events: none;
}
body[data-theme="chrome"] .nav-btn {
background: linear-gradient(180deg,
oklch(96% 0.01 240) 0%,
oklch(72% 0.02 245) 50%,
oklch(40% 0.03 250) 51%,
oklch(78% 0.02 240) 100%) !important;
border: 1px solid oklch(28% 0.03 250) !important;
color: oklch(15% 0.02 250) !important;
box-shadow:
inset 0 1px 0 oklch(99% 0 0 / 0.85),
inset 0 -1px 0 oklch(99% 0.05 200 / 0.25),
0 1px 3px oklch(5% 0.03 270 / 0.5) !important;
}
body[data-theme="chrome"] .nav-btn:hover { filter: brightness(1.08) saturate(1.1); }
body[data-theme="chrome"] .url-bar {
background: linear-gradient(180deg,
oklch(14% 0.04 260) 0%,
oklch(18% 0.04 260) 100%) !important;
border: 1px solid oklch(28% 0.04 260) !important;
box-shadow:
inset 0 1px 3px oklch(2% 0.02 270 / 0.7),
inset 0 -1px 0 oklch(75% 0.18 290 / 0.18),
0 0 8px oklch(60% 0.18 290 / 0.12) !important;
font-family: "IBM Plex Mono", monospace !important;
font-size: 11px !important;
color: oklch(80% 0.04 245) !important;
letter-spacing: 0.3px;
}
body[data-theme="chrome"] .url-bar .lock { color: oklch(78% 0.16 145) !important; filter: drop-shadow(0 0 4px oklch(80% 0.18 145 / 0.6)); }
body[data-theme="chrome"] .url-bar .url-scheme { color: oklch(55% 0.08 280) !important; }
body[data-theme="chrome"] .url-bar .url-host { color: oklch(85% 0.14 290) !important; text-shadow: 0 0 6px oklch(70% 0.20 290 / 0.55); font-weight: 500 !important; }
body[data-theme="chrome"] .url-bar .url-path { color: oklch(82% 0.06 220) !important; }
body[data-theme="chrome"] .url-bar .caret { background: oklch(85% 0.18 200) !important; box-shadow: 0 0 6px oklch(75% 0.20 200); }
body[data-theme="chrome"] .nav-btn#br-go {
font-family: "Michroma", sans-serif !important;
font-size: 9px !important;
letter-spacing: 1.5px;
text-transform: uppercase;
}
body[data-theme="chrome"] .browser-bookmarks {
background: linear-gradient(180deg, oklch(28% 0.03 250) 0%, oklch(18% 0.03 255) 100%) !important;
border-bottom: 1px solid oklch(12% 0.03 260) !important;
box-shadow:
inset 0 1px 0 oklch(60% 0.04 250 / 0.4),
inset 0 -1px 0 oklch(2% 0.02 270 / 0.6);
}
body[data-theme="chrome"] .bm {
color: oklch(75% 0.04 245) !important;
font-family: "Michroma", sans-serif !important;
font-size: 9px !important;
letter-spacing: 1.2px;
text-transform: uppercase;
border: 1px solid transparent !important;
}
body[data-theme="chrome"] .bm:hover { background: oklch(35% 0.05 270 / 0.5) !important; border-color: oklch(60% 0.12 290 / 0.5) !important; color: oklch(95% 0.04 280) !important; }
body[data-theme="chrome"] .bm.active {
background: linear-gradient(180deg, oklch(45% 0.10 290 / 0.6), oklch(28% 0.08 280 / 0.6)) !important;
border-color: oklch(70% 0.18 290 / 0.7) !important;
color: oklch(96% 0.04 290) !important;
box-shadow: inset 0 1px 0 oklch(85% 0.14 290 / 0.4), 0 0 8px oklch(70% 0.18 290 / 0.4);
text-shadow: 0 0 6px oklch(80% 0.18 290 / 0.6);
}
body[data-theme="chrome"] .bm .favicon { box-shadow: inset 0 1px 0 oklch(99% 0 0 / 0.4), 0 0 4px oklch(70% 0.18 290 / 0.4); }
body[data-theme="chrome"] .bm.home .favicon { background: linear-gradient(135deg, oklch(85% 0.18 290), oklch(45% 0.16 290) 50%, oklch(72% 0.14 320)) !important; }
body[data-theme="chrome"] .browser-page {
background:
radial-gradient(120% 60% at 100% 0%, oklch(28% 0.10 290 / 0.45) 0%, transparent 55%),
radial-gradient(80% 50% at 0% 100%, oklch(25% 0.10 220 / 0.4) 0%, transparent 55%),
linear-gradient(180deg, oklch(10% 0.03 265) 0%, oklch(7% 0.02 270) 100%) !important;
color: oklch(85% 0.02 245) !important;
font-family: "Space Grotesk", "Segoe UI", sans-serif !important;
}
body[data-theme="chrome"] .idx-hero,
body[data-theme="chrome"] .art-page { position: relative; }
body[data-theme="chrome"] .idx-hero::after,
body[data-theme="chrome"] .art-page::after {
content: "";
position: absolute; inset: 0;
background: repeating-linear-gradient(0deg, oklch(99% 0 0 / 0.025) 0px, oklch(99% 0 0 / 0.025) 1px, transparent 1px, transparent 3px);
pointer-events: none;
}
body[data-theme="chrome"] .browser-page::-webkit-scrollbar-track { background: linear-gradient(to right, oklch(8% 0.02 270), oklch(14% 0.03 265)) !important; }
body[data-theme="chrome"] .browser-page::-webkit-scrollbar-thumb { background: linear-gradient(to right, oklch(60% 0.04 250), oklch(35% 0.03 255)) !important; border: 2px solid oklch(10% 0.03 265) !important; box-shadow: 0 0 4px oklch(70% 0.18 290 / 0.5); }
body[data-theme="chrome"] .idx-hero {
background:
radial-gradient(80% 100% at 100% 0%, oklch(40% 0.18 290 / 0.35) 0%, transparent 60%),
radial-gradient(60% 80% at 0% 100%, oklch(35% 0.14 200 / 0.3) 0%, transparent 60%),
linear-gradient(180deg, oklch(14% 0.04 265) 0%, oklch(10% 0.03 270) 100%) !important;
border-bottom: 1px solid oklch(30% 0.06 280 / 0.6) !important;
padding: 38px 40px 28px !important;
}
body[data-theme="chrome"] .idx-eyebrow { font-family: "Michroma", sans-serif !important; font-size: 9px !important; letter-spacing: 3px !important; color: oklch(75% 0.14 290) !important; text-shadow: 0 0 6px oklch(70% 0.18 290 / 0.4); }
body[data-theme="chrome"] .idx-title { font-family: "Audiowide", "Space Grotesk", sans-serif !important; font-weight: 400 !important; font-size: 36px !important; letter-spacing: -0.5px !important; color: oklch(96% 0.02 240) !important; text-shadow: 0 1px 0 oklch(99% 0 0 / 0.15), 0 2px 12px oklch(40% 0.18 290 / 0.5); }
body[data-theme="chrome"] .idx-title em {
font-family: "Audiowide", sans-serif !important; font-style: italic;
background: linear-gradient(135deg, oklch(85% 0.18 200) 0%, oklch(85% 0.18 290) 50%, oklch(85% 0.18 350) 100%) !important;
background-size: 200% 200% !important;
-webkit-background-clip: text !important; background-clip: text !important;
-webkit-text-fill-color: transparent !important; color: transparent !important;
animation: chromeShimmer 6s linear infinite;
}
body[data-theme="chrome"] .idx-sub { font-family: "Space Grotesk", sans-serif !important; font-style: normal !important; font-size: 13px !important; color: oklch(70% 0.04 250) !important; }
body[data-theme="chrome"] .idx-list { padding: 24px 40px 48px !important; }
body[data-theme="chrome"] .idx-art { border-bottom: 1px solid oklch(28% 0.04 270 / 0.6) !important; padding: 20px 0 !important; position: relative; z-index: 1; }
body[data-theme="chrome"] .idx-art:hover { padding-left: 10px !important; }
body[data-theme="chrome"] .idx-art:hover::before { content: ""; position: absolute; left: 0; top: 12px; bottom: 12px; width: 2px; background: linear-gradient(180deg, oklch(80% 0.18 200), oklch(80% 0.18 290), oklch(80% 0.18 350)); box-shadow: 0 0 8px oklch(70% 0.18 290); }
body[data-theme="chrome"] .idx-art-num { font-family: "IBM Plex Mono", monospace !important; font-weight: 500 !important; color: oklch(55% 0.10 280) !important; text-shadow: 0 0 8px oklch(50% 0.16 290 / 0.5); }
body[data-theme="chrome"] .idx-art-title { font-family: "Audiowide", "Space Grotesk", sans-serif !important; font-weight: 400 !important; font-size: 17px !important; letter-spacing: -0.1px !important; color: oklch(94% 0.02 245) !important; }
body[data-theme="chrome"] .idx-art:hover .idx-art-title { color: oklch(90% 0.14 290) !important; text-shadow: 0 0 10px oklch(70% 0.18 290 / 0.55); text-decoration-color: oklch(70% 0.18 290 / 0.7) !important; }
body[data-theme="chrome"] .idx-art-excerpt { font-family: "Space Grotesk", sans-serif !important; font-size: 13px !important; color: oklch(68% 0.04 250) !important; }
body[data-theme="chrome"] .idx-art-meta { font-family: "IBM Plex Mono", monospace !important; font-size: 10px !important; color: oklch(60% 0.06 270) !important; }
body[data-theme="chrome"] .idx-art-tag { font-family: "Michroma", sans-serif !important; font-size: 8px !important; letter-spacing: 1.5px; text-transform: uppercase; background: linear-gradient(180deg, oklch(28% 0.08 290 / 0.6), oklch(18% 0.06 280 / 0.6)) !important; color: oklch(85% 0.12 290) !important; border: 1px solid oklch(55% 0.14 290 / 0.5); box-shadow: inset 0 1px 0 oklch(70% 0.16 290 / 0.3), 0 0 6px oklch(50% 0.16 290 / 0.3); padding: 2px 7px !important; }
body[data-theme="chrome"] .art-page { padding: 44px 60px 64px !important; max-width: 640px; }
body[data-theme="chrome"] .art-back { font-family: "Michroma", sans-serif !important; font-size: 9px !important; letter-spacing: 2.5px !important; color: oklch(72% 0.14 290) !important; text-shadow: 0 0 5px oklch(60% 0.18 290 / 0.4); }
body[data-theme="chrome"] .art-back:hover { color: oklch(88% 0.16 290) !important; text-shadow: 0 0 8px oklch(70% 0.20 290 / 0.7); }
body[data-theme="chrome"] .art-eyebrow { font-family: "Michroma", sans-serif !important; font-size: 9px !important; letter-spacing: 3px !important; color: oklch(75% 0.14 200) !important; text-shadow: 0 0 5px oklch(60% 0.18 200 / 0.4); }
body[data-theme="chrome"] .art-title { font-family: "Audiowide", "Space Grotesk", sans-serif !important; font-weight: 400 !important; font-size: 30px !important; line-height: 1.2 !important; letter-spacing: -0.3px !important; color: oklch(97% 0.02 240) !important; text-shadow: 0 1px 0 oklch(99% 0 0 / 0.15), 0 2px 10px oklch(40% 0.18 290 / 0.5); margin: 0 0 16px !important; }
body[data-theme="chrome"] .art-title em {
font-family: "Audiowide", sans-serif !important; font-style: italic;
background: linear-gradient(135deg, oklch(85% 0.18 200) 0%, oklch(85% 0.18 290) 50%, oklch(85% 0.18 350) 100%) !important;
background-size: 200% 200% !important;
-webkit-background-clip: text !important; background-clip: text !important;
-webkit-text-fill-color: transparent !important; color: transparent !important;
animation: chromeShimmer 6s linear infinite;
}
body[data-theme="chrome"] .art-byline { font-family: "IBM Plex Mono", monospace !important; font-style: normal !important; font-size: 11px !important; color: oklch(60% 0.06 270) !important; border-bottom-color: oklch(28% 0.04 270 / 0.6) !important; letter-spacing: 0.3px; }
body[data-theme="chrome"] .art-body { font-family: "Space Grotesk", sans-serif !important; font-size: 14.5px !important; line-height: 1.78 !important; color: oklch(82% 0.02 250) !important; }
body[data-theme="chrome"] .art-body p:first-of-type::first-letter {
font-family: "Audiowide", sans-serif !important; font-size: 64px !important; line-height: 0.85 !important; padding: 8px 12px 0 0 !important;
background: linear-gradient(135deg, oklch(85% 0.18 200) 0%, oklch(85% 0.18 290) 50%, oklch(85% 0.18 350) 100%) !important;
background-size: 200% 200% !important;
-webkit-background-clip: text !important; background-clip: text !important;
-webkit-text-fill-color: transparent !important; color: transparent !important;
filter: drop-shadow(0 0 8px oklch(70% 0.18 290 / 0.6));
animation: chromeShimmer 6s linear infinite;
}
body[data-theme="chrome"] .art-body em { color: oklch(88% 0.10 285) !important; font-style: italic; }
body[data-theme="chrome"] .art-body h2 { font-family: "Audiowide", sans-serif !important; font-weight: 400 !important; font-size: 18px !important; color: oklch(94% 0.04 270) !important; letter-spacing: 0 !important; margin: 36px 0 14px !important; text-shadow: 0 0 8px oklch(50% 0.16 290 / 0.3); }
body[data-theme="chrome"] .art-body blockquote { border-left: 2px solid transparent !important; border-image: linear-gradient(180deg, oklch(80% 0.18 200), oklch(80% 0.18 290), oklch(80% 0.18 350)) 1; color: oklch(85% 0.06 280) !important; font-style: italic; background: linear-gradient(90deg, oklch(20% 0.06 280 / 0.35) 0%, transparent 100%); padding: 12px 0 12px 20px !important; margin: 28px 0 !important; }
body[data-theme="chrome"] .art-body a,
body[data-theme="chrome"] .art-body .ilink { color: oklch(82% 0.14 290) !important; text-decoration-color: oklch(70% 0.18 290 / 0.6) !important; text-shadow: 0 0 4px oklch(60% 0.18 290 / 0.4); }
body[data-theme="chrome"] .art-body a:hover,
body[data-theme="chrome"] .art-body .ilink:hover { color: oklch(92% 0.16 290) !important; text-shadow: 0 0 8px oklch(70% 0.20 290 / 0.7); }
body[data-theme="chrome"] .art-body code { font-family: "IBM Plex Mono", monospace !important; background: linear-gradient(180deg, oklch(14% 0.04 270), oklch(10% 0.03 270)) !important; color: oklch(85% 0.14 200) !important; border: 1px solid oklch(28% 0.06 270); padding: 1px 6px !important; box-shadow: inset 0 1px 0 oklch(99% 0.05 200 / 0.06); }
body[data-theme="chrome"] .art-foot { font-family: "IBM Plex Mono", monospace !important; font-size: 11px !important; color: oklch(60% 0.06 270) !important; border-top: 1px solid oklch(28% 0.04 270 / 0.6) !important; margin-top: 48px !important; padding-top: 22px !important; }
body[data-theme="chrome"] .art-foot .more { color: oklch(82% 0.14 290) !important; text-shadow: 0 0 5px oklch(60% 0.18 290 / 0.4); }
body[data-theme="chrome"] .browser-status { background: linear-gradient(180deg, oklch(85% 0.01 240) 0%, oklch(65% 0.02 245) 50%, oklch(78% 0.01 240) 100%) !important; border-top: 1px solid oklch(28% 0.03 250) !important; color: oklch(15% 0.02 250) !important; font-family: "Michroma", sans-serif !important; font-size: 9px !important; letter-spacing: 1.2px; text-transform: uppercase; box-shadow: inset 0 1px 0 oklch(99% 0 0 / 0.5); }
body[data-theme="chrome"] .browser-status .progress { background: oklch(15% 0.04 265) !important; border: 1px solid oklch(28% 0.04 265) !important; box-shadow: inset 0 1px 2px oklch(2% 0.02 270 / 0.7); }
body[data-theme="chrome"] .browser-status .progress-bar { background: linear-gradient(180deg, oklch(85% 0.18 200) 0%, oklch(70% 0.18 290) 50%, oklch(80% 0.18 320) 100%) !important; box-shadow: inset 0 1px 0 oklch(99% 0.05 200 / 0.5), 0 0 6px oklch(70% 0.18 290 / 0.8); }
/* ================================================================
AERO — DEEPER POLISH (Frutiger / web-2.0 indie nostalgia)
Glossy holographic shimmer on glass, water ripple at the
horizon, breathing icon halos, plus widgets that capture the
pre-corporate-internet feel: a sticky note, a webring strip,
and a "Neighbors" buddy list.
================================================================ */
/* Slow holographic sweep across every glass panel (aero only) */
/* (.win is already position: absolute — don't re-set position here or
it'll override the inline drag positioning logic.) */
body[data-theme="aero"] .glass::after {
content: "";
position: absolute; inset: 0;
background: linear-gradient(115deg,
transparent 30%,
oklch(99% 0.04 200 / 0.20) 47%,
oklch(96% 0.10 145 / 0.10) 50%,
oklch(99% 0.04 200 / 0.20) 53%,
transparent 70%);
background-size: 250% 100%;
animation: aeroSheen 11s ease-in-out infinite;
pointer-events: none;
mix-blend-mode: screen;
border-radius: inherit;
/* clip the gradient to the rounded panel without breaking
resize handles which sit outside the panel bounds */
overflow: hidden;
}
@keyframes aeroSheen {
0%, 100% { background-position: 200% 0%; }
50% { background-position: -40% 0%; }
}
/* don't apply sheen to inner glass children like the browser window's
inner page (they're already inside .glass) */
body[data-theme="aero"] .glass .glass::after { display: none; }
/* Icon halo — gentle breathing glow + brighter specular */
body[data-theme="aero"] .icon .glyph {
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.95),
inset 0 -3px 6px rgba(40,80,140,0.4),
0 4px 14px rgba(40,80,140,0.38),
0 0 0 1px rgba(255,255,255,0.25);
transition: transform 220ms ease, box-shadow 220ms ease, filter 220ms ease;
}
body[data-theme="aero"] .icon:hover .glyph {
transform: translateY(-3px) scale(1.05);
filter: saturate(1.15) brightness(1.05);
box-shadow:
inset 0 1px 0 rgba(255,255,255,1),
inset 0 -3px 6px rgba(40,80,140,0.45),
0 8px 22px rgba(40,80,140,0.45),
0 0 22px oklch(85% 0.14 200 / 0.5);
}
body[data-theme="aero"] .icon .glyph::before {
background: linear-gradient(to bottom,
rgba(255,255,255,0.95) 0%,
rgba(255,255,255,0.35) 60%,
transparent 100%);
}
/* Horizon water-ripple at the bottom of the desktop — reflection vibe */
body[data-theme="aero"] .desk::before {
content: "";
position: absolute; left: 0; right: 0; bottom: 0; height: 38%;
background:
radial-gradient(120% 60% at 50% 110%, oklch(86% 0.08 165 / 0.45) 0%, transparent 70%),
repeating-linear-gradient(0deg,
oklch(99% 0.02 200 / 0.06) 0px, oklch(99% 0.02 200 / 0.06) 1px,
transparent 1px, transparent 5px);
pointer-events: none;
z-index: 0;
mask-image: linear-gradient(180deg, transparent 0%, black 60%, black 100%);
-webkit-mask-image: linear-gradient(180deg, transparent 0%, black 60%, black 100%);
}
body[data-theme="aero"] .desk::after {
content: "";
position: absolute; left: 0; right: 0; bottom: -5%; height: 22%;
background:
radial-gradient(80% 100% at 25% 100%, oklch(94% 0.08 145 / 0.35) 0%, transparent 60%),
radial-gradient(80% 100% at 75% 100%, oklch(90% 0.10 200 / 0.35) 0%, transparent 60%);
filter: blur(8px);
pointer-events: none;
z-index: 0;
animation: aeroHorizon 16s ease-in-out infinite alternate;
}
@keyframes aeroHorizon {
0% { transform: translateX(-2%); }
100% { transform: translateX(2%); }
}
/* Aqua buttons — add tasty iridescent rim in aero */
body[data-theme="aero"] .aqua::after {
content: "";
position: absolute; inset: -1px;
border-radius: inherit;
padding: 1px;
background: linear-gradient(135deg,
oklch(98% 0.04 200 / 0.4),
oklch(96% 0.10 145 / 0.3) 50%,
oklch(98% 0.04 200 / 0.4));
-webkit-mask:
linear-gradient(#000 0 0) content-box,
linear-gradient(#000 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
pointer-events: none;
}
/* ============= STICKY NOTE (pinned to desktop) ============= */
.sticky-note {
position: absolute;
width: 200px;
padding: 18px 16px 22px;
background: linear-gradient(180deg, oklch(96% 0.07 95) 0%, oklch(92% 0.11 92) 100%);
border: 1px solid oklch(85% 0.10 92);
box-shadow:
inset 0 1px 0 oklch(99% 0.04 95),
0 1px 0 oklch(80% 0.08 90),
0 18px 30px -10px rgba(80,60,20,0.35),
0 4px 8px rgba(80,60,20,0.15);
font-family: "Caveat", "Comic Sans MS", "Marker Felt", cursive;
font-size: 17px;
line-height: 1.35;
color: oklch(35% 0.08 60);
transform: rotate(-3.2deg);
z-index: 8;
cursor: grab;
user-select: none;
}
.sticky-note::before {
/* tape strip across the top */
content: "";
position: absolute;
left: 50%; top: -10px; transform: translateX(-50%) rotate(-2deg);
width: 70px; height: 18px;
background: linear-gradient(180deg,
oklch(96% 0.02 200 / 0.55) 0%,
oklch(92% 0.04 200 / 0.5) 100%);
border: 1px solid oklch(85% 0.05 200 / 0.5);
border-top-color: oklch(99% 0.02 200 / 0.7);
box-shadow: 0 2px 4px rgba(40,80,140,0.15);
}
.sticky-note::after {
/* faint torn edge at the bottom */
content: "";
position: absolute;
left: 4px; right: 4px; bottom: 0; height: 4px;
background: linear-gradient(180deg, transparent, oklch(80% 0.10 90 / 0.4));
border-radius: 0 0 2px 2px;
}
.sticky-note .sn-head {
font-family: "Plus Jakarta Sans", sans-serif;
font-weight: 800;
font-size: 9px;
letter-spacing: 1.6px;
text-transform: uppercase;
color: oklch(50% 0.12 60);
border-bottom: 1px dashed oklch(70% 0.10 70);
padding-bottom: 4px;
margin-bottom: 6px;
text-align: center;
}
.sticky-note .sn-sig {
display: block;
margin-top: 8px;
font-size: 14px;
color: oklch(45% 0.12 50);
opacity: 0.85;
text-align: right;
}
.sticky-note .sn-underline {
text-decoration: underline;
text-decoration-color: oklch(55% 0.16 30);
text-decoration-thickness: 1.5px;
}
/* chrome theme — sticky note becomes silver foil */
body[data-theme="chrome"] .sticky-note {
background: linear-gradient(180deg,
oklch(90% 0.01 240) 0%,
oklch(78% 0.01 240) 50%,
oklch(88% 0.01 240) 100%);
border: 1px solid oklch(35% 0.03 250);
color: oklch(15% 0.02 250);
font-family: "IBM Plex Mono", monospace;
font-size: 11px;
letter-spacing: 0.3px;
box-shadow:
inset 0 1px 0 oklch(99% 0 0),
inset 0 -1px 0 oklch(45% 0.02 250),
0 18px 30px -10px oklch(5% 0.03 270 / 0.6);
}
body[data-theme="chrome"] .sticky-note::before {
background: linear-gradient(180deg,
oklch(80% 0.06 290 / 0.7),
oklch(60% 0.10 290 / 0.6));
border-color: oklch(35% 0.10 290 / 0.7);
}
body[data-theme="chrome"] .sticky-note .sn-head {
font-family: "Michroma", sans-serif;
color: oklch(75% 0.14 290);
border-bottom-color: oklch(45% 0.06 270);
}
body[data-theme="chrome"] .sticky-note .sn-sig {
font-family: "IBM Plex Mono", monospace;
color: oklch(70% 0.10 290);
}
/* ============= WEBRING STRIP ============= */
.webring {
position: absolute;
left: 50%; transform: translateX(-50%);
top: 16px;
z-index: 150;
display: flex; align-items: center; gap: 0;
padding: 4px 6px;
border-radius: 999px;
background: linear-gradient(to bottom, rgba(255,255,255,0.65), rgba(210,232,250,0.45));
backdrop-filter: blur(16px) saturate(170%);
-webkit-backdrop-filter: blur(16px) saturate(170%);
border: 1px solid rgba(255,255,255,0.85);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.95),
inset 0 -1px 0 rgba(120,160,200,0.25),
0 8px 24px rgba(40,80,140,0.28);
font-family: "Plus Jakarta Sans", "Segoe UI", sans-serif;
font-size: 11px;
font-weight: 700;
color: oklch(28% 0.06 240);
user-select: none;
}
.webring .wr-label {
padding: 0 12px 0 14px;
font-size: 10px;
letter-spacing: 2px;
text-transform: uppercase;
color: oklch(38% 0.13 220);
border-right: 1px solid rgba(120,160,200,0.35);
white-space: nowrap;
}
.webring .wr-label .wr-flower { font-size: 12px; margin-right: 4px; }
.webring .wr-btn {
display: inline-flex; align-items: center; gap: 5px;
padding: 6px 12px; border-radius: 999px;
border: 0; background: transparent;
font: inherit; color: inherit;
cursor: pointer;
text-decoration: none;
letter-spacing: 0.3px;
white-space: nowrap;
}
.webring .wr-btn:hover {
background: rgba(255,255,255,0.55);
color: oklch(40% 0.16 230);
}
.webring .wr-btn.middle {
font-family: "IBM Plex Mono", monospace;
font-weight: 500;
font-size: 10px;
opacity: 0.75;
padding: 6px 8px;
cursor: default;
}
.webring .wr-btn.middle:hover { background: transparent; color: inherit; }
body[data-theme="chrome"] .webring {
background: linear-gradient(180deg,
oklch(90% 0.01 240),
oklch(62% 0.02 250),
oklch(80% 0.01 240));
border: 1px solid oklch(35% 0.03 250);
backdrop-filter: none;
-webkit-backdrop-filter: none;
color: oklch(15% 0.02 250);
box-shadow:
inset 0 1px 0 oklch(99% 0 0),
inset 0 -1px 0 oklch(40% 0.02 250),
0 8px 24px oklch(5% 0.03 270);
}
body[data-theme="chrome"] .webring .wr-label {
font-family: "Michroma", sans-serif;
color: oklch(35% 0.18 290);
border-right-color: oklch(35% 0.03 250);
letter-spacing: 2.5px;
}
body[data-theme="chrome"] .webring .wr-btn {
font-family: "Michroma", sans-serif;
font-size: 9px;
letter-spacing: 1.5px;
text-transform: uppercase;
}
body[data-theme="chrome"] .webring .wr-btn:hover {
background: oklch(45% 0.10 290 / 0.5);
color: oklch(96% 0.04 290);
}
/* ============= NEIGHBORS / BUDDY LIST ============= */
.bud-list { display: flex; flex-direction: column; gap: 0; }
.bud-row {
display: grid;
grid-template-columns: 12px 1fr auto;
align-items: center;
gap: 10px;
padding: 8px 4px;
border-bottom: 1px dotted oklch(72% 0.05 220);
font-size: 12px;
cursor: pointer;
border-radius: 4px;
transition: background 120ms;
}
.bud-row:last-child { border-bottom: 0; }
.bud-row:hover {
background: rgba(255,255,255,0.55);
padding-left: 8px;
}
.bud-led {
width: 8px; height: 8px; border-radius: 50%;
box-shadow: inset 0 1px 0 rgba(255,255,255,0.7);
}
.bud-led.on {
background: radial-gradient(circle at 30% 30%, oklch(96% 0.18 145), oklch(60% 0.18 150));
box-shadow: inset 0 1px 0 rgba(255,255,255,0.7), 0 0 6px oklch(72% 0.18 145 / 0.7);
}
.bud-led.idle {
background: radial-gradient(circle at 30% 30%, oklch(95% 0.16 85), oklch(70% 0.18 75));
box-shadow: inset 0 1px 0 rgba(255,255,255,0.7), 0 0 6px oklch(75% 0.18 80 / 0.5);
}
.bud-led.off {
background: radial-gradient(circle at 30% 30%, oklch(78% 0.02 230), oklch(55% 0.03 235));
box-shadow: inset 0 1px 0 rgba(255,255,255,0.5);
}
.bud-name {
font-weight: 700;
color: oklch(25% 0.06 230);
letter-spacing: -0.1px;
}
.bud-host {
font-family: "IBM Plex Mono", monospace;
font-size: 10px;
opacity: 0.6;
font-weight: 500;
}
.bud-mood {
font-size: 11px;
font-style: italic;
color: oklch(45% 0.10 235);
text-align: right;
max-width: 130px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.bud-foot {
margin-top: 10px;
padding-top: 8px;
border-top: 1px dotted oklch(72% 0.05 220);
display: flex;
justify-content: space-between;
align-items: center;
font-size: 10px;
font-family: "IBM Plex Mono", monospace;
opacity: 0.7;
color: oklch(35% 0.06 230);
}
.bud-foot a {
color: oklch(45% 0.14 230);
text-decoration: none;
border-bottom: 1px dotted oklch(55% 0.14 230);
}
body[data-theme="chrome"] .bud-row { border-bottom-color: oklch(50% 0.03 250 / 0.4); }
body[data-theme="chrome"] .bud-name { color: oklch(12% 0.02 250); font-family: "Audiowide", "Space Grotesk", sans-serif; font-weight: 400; }
body[data-theme="chrome"] .bud-host { color: oklch(60% 0.10 280); }
body[data-theme="chrome"] .bud-mood { color: oklch(42% 0.14 290); }
body[data-theme="chrome"] .bud-foot { border-top-color: oklch(50% 0.03 250 / 0.4); color: oklch(60% 0.08 280); }
body[data-theme="chrome"] .bud-row:hover { background: oklch(35% 0.05 270 / 0.4); }
/* ============= "LAST UPDATED" + UPTIME RIBBON ============= */
.uptime-ribbon {
position: absolute;
left: 20px;
bottom: 88px;
z-index: 7;
display: flex; align-items: center; gap: 8px;
padding: 6px 14px 6px 10px;
border-radius: 999px;
background: linear-gradient(to bottom, rgba(255,255,255,0.65), rgba(210,235,250,0.45));
backdrop-filter: blur(12px) saturate(160%);
-webkit-backdrop-filter: blur(12px) saturate(160%);
border: 1px solid rgba(255,255,255,0.85);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.95),
0 6px 16px rgba(40,80,140,0.25);
font-family: "IBM Plex Mono", monospace;
font-size: 10px;
letter-spacing: 0.4px;
color: oklch(32% 0.06 235);
user-select: none;
white-space: nowrap;
}
.uptime-ribbon .ur-led {
width: 7px; height: 7px; border-radius: 50%;
background: radial-gradient(circle at 30% 30%, oklch(96% 0.18 145), oklch(60% 0.18 150));
box-shadow: inset 0 1px 0 rgba(255,255,255,0.7), 0 0 6px oklch(72% 0.18 145 / 0.7);
animation: led-pulse 2.4s ease-in-out infinite;
}
.uptime-ribbon .ur-sep { opacity: 0.4; }
body[data-theme="chrome"] .uptime-ribbon {
background: linear-gradient(180deg,
oklch(88% 0.01 240),
oklch(62% 0.02 250),
oklch(80% 0.01 240));
border: 1px solid oklch(35% 0.03 250);
backdrop-filter: none;
-webkit-backdrop-filter: none;
color: oklch(15% 0.02 250);
box-shadow:
inset 0 1px 0 oklch(99% 0 0),
0 6px 16px oklch(5% 0.03 270);
}
/* ============= WELCOME — WEBRING + INDIE STRIP ============= */
.welcome-webring {
position: fixed;
left: 50%; transform: translateX(-50%);
bottom: 64px;
z-index: 4;
display: flex; align-items: center; gap: 0;
padding: 5px 6px;
border-radius: 999px;
background: linear-gradient(to bottom, rgba(255,255,255,0.65), rgba(210,232,250,0.45));
backdrop-filter: blur(16px) saturate(170%);
-webkit-backdrop-filter: blur(16px) saturate(170%);
border: 1px solid rgba(255,255,255,0.85);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.95),
0 8px 24px rgba(40,80,140,0.28);
font-family: "Plus Jakarta Sans", sans-serif;
font-weight: 700;
font-size: 11px;
color: oklch(28% 0.06 240);
}
.welcome-webring .wr-label {
padding: 0 12px;
font-size: 9px;
letter-spacing: 2px;
text-transform: uppercase;
color: oklch(38% 0.13 220);
white-space: nowrap;
}
.welcome-webring a {
display: inline-flex; align-items: center; gap: 4px;
padding: 6px 11px;
border-radius: 999px;
text-decoration: none;
color: inherit;
letter-spacing: 0.3px;
white-space: nowrap;
}
.welcome-webring a:hover {
background: rgba(255,255,255,0.55);
color: oklch(40% 0.16 230);
}
.welcome-webring .wr-sep { width: 1px; height: 16px; background: rgba(120,160,200,0.3); }
/* Water droplet decorations on welcome */
.welcome-drops {
position: fixed; inset: 0; pointer-events: none; z-index: 0;
}
.welcome-drops .drop {
position: absolute;
border-radius: 50% 50% 48% 52% / 60% 60% 40% 40%;
background: radial-gradient(circle at 35% 28%,
rgba(255,255,255,0.92) 0%,
rgba(220,245,255,0.45) 18%,
rgba(180,225,250,0.18) 55%,
rgba(140,200,240,0.1) 100%);
border: 1px solid rgba(255,255,255,0.55);
box-shadow:
inset -4px -6px 12px rgba(80,140,200,0.2),
inset 3px 4px 8px rgba(255,255,255,0.5),
0 4px 14px rgba(120,180,240,0.18);
}
.welcome-drops .drop::after {
content: "";
position: absolute;
left: 22%; top: 18%;
width: 22%; height: 16%;
background: rgba(255,255,255,0.85);
border-radius: 50%;
filter: blur(0.4px);
}
/* "Made with love" indie strip — at the top of welcome */
.indie-strip {
position: fixed; top: 22px; left: 26px;
z-index: 4;
display: flex; gap: 8px; flex-direction: column;
font-family: "IBM Plex Mono", monospace;
font-size: 10px;
letter-spacing: 0.4px;
color: oklch(28% 0.06 235);
text-shadow: 0 1px 0 rgba(255,255,255,0.6);
}
.indie-strip .is-line {
display: inline-flex; align-items: center; gap: 6px;
padding: 4px 10px;
border-radius: 999px;
background: rgba(255,255,255,0.5);
border: 1px solid rgba(255,255,255,0.8);
box-shadow: inset 0 1px 0 rgba(255,255,255,0.95);
width: fit-content;
backdrop-filter: blur(10px);
white-space: nowrap;
}
.indie-strip .is-dot {
width: 6px; height: 6px; border-radius: 50%;
background: radial-gradient(circle at 30% 30%, oklch(96% 0.18 145), oklch(60% 0.18 150));
box-shadow: 0 0 4px oklch(70% 0.18 145 / 0.8);
}
body[data-theme="chrome"] .indie-strip { color: oklch(85% 0.02 245); text-shadow: 0 1px 2px oklch(5% 0.03 270); }
body[data-theme="chrome"] .indie-strip .is-line {
background: oklch(15% 0.04 270 / 0.6);
border: 1px solid oklch(50% 0.10 290 / 0.4);
backdrop-filter: blur(10px);
}
body[data-theme="chrome"] .welcome-webring {
background: linear-gradient(180deg,
oklch(90% 0.01 240),
oklch(62% 0.02 250),
oklch(80% 0.01 240));
border: 1px solid oklch(35% 0.03 250);
backdrop-filter: none;
-webkit-backdrop-filter: none;
color: oklch(15% 0.02 250);
font-family: "Michroma", sans-serif;
font-size: 9px;
letter-spacing: 1.5px;
text-transform: uppercase;
}
body[data-theme="chrome"] .welcome-webring .wr-label {
color: oklch(35% 0.18 290);
letter-spacing: 2.5px;
}
body[data-theme="chrome"] .welcome-webring a:hover {
background: oklch(45% 0.10 290 / 0.5);
color: oklch(96% 0.04 290);
}
body[data-theme="chrome"] .welcome-drops .drop {
background: radial-gradient(circle at 35% 28%,
rgba(220,200,255,0.7) 0%,
rgba(160,140,220,0.25) 30%,
rgba(80,60,140,0.12) 80%);
border: 1px solid rgba(200,180,255,0.4);
box-shadow:
inset -4px -6px 12px rgba(40,20,100,0.4),
inset 3px 4px 8px rgba(220,200,255,0.4),
0 4px 14px oklch(40% 0.16 290 / 0.3);
}
/* Caveat for handwritten sticky */
/* (Imported in HTML head — kept here so the file documents the dep) */
/* Welcome gate — aero holographic sheen */
body[data-theme="aero"] .gate {
overflow: hidden;
}
body[data-theme="aero"] .gate::after {
content: "";
position: absolute; inset: 0;
background: linear-gradient(115deg,
transparent 28%,
oklch(99% 0.04 200 / 0.22) 45%,
oklch(96% 0.12 145 / 0.12) 50%,
oklch(99% 0.04 200 / 0.22) 55%,
transparent 72%);
background-size: 260% 100%;
animation: aeroSheen 9s ease-in-out infinite;
pointer-events: none;
mix-blend-mode: screen;
border-radius: inherit;
}
/* Welcome mark — gentle floating ring of light (aero) */
body[data-theme="aero"] .mark::after {
content: "";
position: absolute; inset: -6px;
border-radius: 50%;
background: conic-gradient(from 0deg,
oklch(96% 0.10 145 / 0.0),
oklch(96% 0.14 145 / 0.55),
oklch(96% 0.10 200 / 0.55),
oklch(96% 0.12 145 / 0.0));
mask: radial-gradient(circle, transparent 56%, black 58%, black 64%, transparent 66%);
-webkit-mask: radial-gradient(circle, transparent 56%, black 58%, black 64%, transparent 66%);
animation: spin 18s linear infinite;
pointer-events: none;
opacity: 0.8;
}
/* Disable ambient motion for users who prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
.bubble-field, .shard-field { display: none !important; }
.sparkle { display: none !important; }
}