/* 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; } } /* 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; }