aboutsummaryrefslogtreecommitdiff
path: root/aero.css
diff options
context:
space:
mode:
Diffstat (limited to 'aero.css')
-rw-r--r--aero.css166
1 files changed, 166 insertions, 0 deletions
diff --git a/aero.css b/aero.css
new file mode 100644
index 0000000..b7fdf1a
--- /dev/null
+++ b/aero.css
@@ -0,0 +1,166 @@
+/* Frutiger Aero shared stylesheet */
+* { box-sizing: border-box; }
+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,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'><circle cx='10' cy='10' r='5' fill='white' stroke='%234a90d9' stroke-width='1.5' opacity='0.85'/><circle cx='8' cy='8' r='1.5' fill='white'/></svg>") 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; }
+.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); }
+
+/* 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;
+}