redesign: glassmorphism UI with big cards, 3-col layout, ambient orbs
All checks were successful
Deploy to Coolify / deploy (push) Successful in 4s

This commit is contained in:
Cosmo
2026-04-22 10:23:57 +00:00
parent 7e1e2cfd4d
commit ecf69400f6
11 changed files with 789 additions and 532 deletions

View File

@@ -1,24 +1,24 @@
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap');
@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
--bg: #0a0a0f;
--card-bg: rgba(255, 255, 255, 0.05);
--bg: #090912;
--card-bg: rgba(255, 255, 255, 0.04);
--card-border: rgba(255, 255, 255, 0.08);
--text-primary: rgba(255, 255, 255, 0.95);
--text-secondary: rgba(255, 255, 255, 0.5);
--text-secondary: rgba(255, 255, 255, 0.45);
--accent: #6366f1;
--accent-2: #8b5cf6;
}
.light {
--bg: #f0f0f8;
--card-bg: rgba(255, 255, 255, 0.8);
--card-border: rgba(0, 0, 0, 0.08);
--card-bg: rgba(255, 255, 255, 0.75);
--card-border: rgba(0, 0, 0, 0.07);
--text-primary: rgba(15, 15, 30, 0.95);
--text-secondary: rgba(15, 15, 30, 0.5);
--text-secondary: rgba(15, 15, 30, 0.45);
}
* {
@@ -49,7 +49,7 @@ body {
border: 1px solid var(--card-border);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border-radius: 20px;
border-radius: 24px;
transition: background 0.3s ease, border-color 0.3s ease;
}
@@ -61,34 +61,35 @@ body {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: rgba(99, 102, 241, 0.4);
background: rgba(99, 102, 241, 0.35);
border-radius: 2px;
}
/* Custom toggle switch */
/* Big toggle switch (60×32) */
.toggle-track {
position: relative;
width: 52px;
height: 28px;
border-radius: 14px;
width: 60px;
height: 32px;
border-radius: 16px;
cursor: pointer;
transition: background-color 0.3s ease;
flex-shrink: 0;
}
.toggle-thumb {
position: absolute;
top: 3px;
left: 3px;
width: 22px;
height: 22px;
width: 26px;
height: 26px;
border-radius: 50%;
background: white;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.toggle-on .toggle-thumb {
transform: translateX(24px);
transform: translateX(28px);
}
/* Custom range slider */
@@ -113,9 +114,9 @@ input[type='range']::-webkit-slider-thumb {
width: 20px;
height: 20px;
border-radius: 50%;
background: #6366f1;
background: #f59e0b;
cursor: pointer;
box-shadow: 0 0 8px rgba(99, 102, 241, 0.6);
box-shadow: 0 0 10px rgba(245, 158, 11, 0.7);
transition: transform 0.15s ease;
}
@@ -127,10 +128,10 @@ input[type='range']::-moz-range-thumb {
width: 20px;
height: 20px;
border-radius: 50%;
background: #6366f1;
background: #f59e0b;
cursor: pointer;
border: none;
box-shadow: 0 0 8px rgba(99, 102, 241, 0.6);
box-shadow: 0 0 10px rgba(245, 158, 11, 0.7);
}
/* Ambient orbs */
@@ -150,48 +151,78 @@ input[type='range']::-moz-range-thumb {
/* Progress bar */
.progress-bar {
height: 8px;
border-radius: 4px;
background: rgba(255, 255, 255, 0.08);
height: 10px;
border-radius: 5px;
background: rgba(255, 255, 255, 0.07);
overflow: hidden;
}
.light .progress-bar {
background: rgba(0, 0, 0, 0.08);
background: rgba(0, 0, 0, 0.07);
}
.progress-fill {
height: 100%;
border-radius: 4px;
border-radius: 5px;
background: linear-gradient(90deg, #6366f1, #8b5cf6);
transition: width 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
transition: width 0.8s cubic-bezier(0.34, 1.56, 0.64, 1);
}
/* Glow effects */
.glow-indigo {
box-shadow: 0 0 20px rgba(99, 102, 241, 0.3);
}
.glow-emerald {
box-shadow: 0 0 20px rgba(16, 185, 129, 0.3);
}
.glow-rose {
box-shadow: 0 0 20px rgba(244, 63, 94, 0.3);
}
.glow-amber {
box-shadow: 0 0 20px rgba(245, 158, 11, 0.3);
box-shadow: 0 0 24px rgba(245, 158, 11, 0.4);
}
.glow-blue {
box-shadow: 0 0 24px rgba(59, 130, 246, 0.4);
}
.glow-green {
box-shadow: 0 0 24px rgba(16, 185, 129, 0.4);
}
.glow-purple {
box-shadow: 0 0 24px rgba(139, 92, 246, 0.4);
}
/* Modal backdrop */
.modal-backdrop {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.6);
backdrop-filter: blur(8px);
background: rgba(0, 0, 0, 0.65);
backdrop-filter: blur(10px);
z-index: 100;
display: flex;
align-items: center;
justify-content: center;
}
/* Spin animation for air purifier */
@keyframes spin-slow {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.spin-slow {
animation: spin-slow 4s linear infinite;
}
/* Orb animations */
@keyframes orbMove1 {
0%, 100% { transform: translate(0, 0) scale(1); }
33% { transform: translate(40px, -30px) scale(1.05); }
66% { transform: translate(-20px, 20px) scale(0.97); }
}
@keyframes orbMove2 {
0%, 100% { transform: translate(0, 0) scale(1); }
33% { transform: translate(-50px, 30px) scale(1.08); }
66% { transform: translate(30px, -20px) scale(0.95); }
}
@keyframes orbMove3 {
0%, 100% { transform: translate(0, 0) scale(1); }
50% { transform: translate(20px, 40px) scale(1.04); }
}
@keyframes orbMove4 {
0%, 100% { transform: translate(0, 0) scale(1); }
50% { transform: translate(-30px, -20px) scale(1.06); }
}