Extract glass system into shared CSS utilities and design tokens
Centralize all hardcoded rgba color values into CSS custom properties and extract glass/glow styles into reusable utility classes (.glass, .glass-inner, .glow-border, .glow-border--animated) in main.css. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -16,9 +16,26 @@
|
||||
--color-text-on-gradient: #ffffff;
|
||||
--color-surface: #fff5f8;
|
||||
--color-card: #ffffff;
|
||||
--color-dark-base: #1B1730;
|
||||
|
||||
/* Glass system */
|
||||
--color-glass: rgba(255, 255, 255, 0.1);
|
||||
--color-glass-strong: rgba(255, 255, 255, 0.15);
|
||||
--color-glass-subtle: rgba(255, 255, 255, 0.05);
|
||||
--color-glass-border: rgba(255, 255, 255, 0.18);
|
||||
--color-glass-border-hover: rgba(255, 255, 255, 0.3);
|
||||
--color-glass-hover: rgba(255, 255, 255, 0.18);
|
||||
--color-glass-inner: rgba(27, 23, 48, 0.55);
|
||||
--color-glass-overlay: rgba(27, 23, 48, 0.4);
|
||||
|
||||
/* Text on gradient (opacity variants) */
|
||||
--color-text-muted: rgba(255, 255, 255, 0.5);
|
||||
--color-text-secondary: rgba(255, 255, 255, 0.7);
|
||||
--color-text-soft: rgba(255, 255, 255, 0.85);
|
||||
--color-text-bright: rgba(255, 255, 255, 0.9);
|
||||
|
||||
/* Glow border */
|
||||
--gradient-glow: conic-gradient(from 135deg, var(--color-gradient-start), var(--color-gradient-mid), var(--color-gradient-end), var(--color-gradient-start));
|
||||
|
||||
/* Gradient */
|
||||
--gradient-primary: linear-gradient(135deg, #f06292 0%, #ab47bc 50%, #5c6bc0 100%);
|
||||
@@ -63,7 +80,7 @@ html {
|
||||
|
||||
body {
|
||||
min-height: 100vh;
|
||||
background-color: #1B1730;
|
||||
background-color: var(--color-dark-base);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@@ -71,7 +88,7 @@ body::before {
|
||||
content: '';
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background-color: #1B1730;
|
||||
background-color: var(--color-dark-base);
|
||||
background-image:
|
||||
radial-gradient(at 70% 20%, rgba(240, 98, 146, 0.55) 0px, transparent 50%),
|
||||
radial-gradient(at 25% 50%, rgba(171, 71, 188, 0.5) 0px, transparent 55%),
|
||||
@@ -194,6 +211,68 @@ textarea.form-field {
|
||||
100% { background-position: -200% 0; }
|
||||
}
|
||||
|
||||
/* ── Glass System ── */
|
||||
|
||||
/* Glass surface: passive containers on gradient (cards, icon boxes) */
|
||||
.glass {
|
||||
background: linear-gradient(135deg, var(--color-glass-strong) 0%, var(--color-glass-subtle) 100%);
|
||||
border: 1px solid var(--color-glass-border);
|
||||
box-shadow: var(--shadow-card);
|
||||
backdrop-filter: blur(16px);
|
||||
-webkit-backdrop-filter: blur(16px);
|
||||
}
|
||||
|
||||
.glass:hover {
|
||||
background: var(--color-glass-hover);
|
||||
border-color: var(--color-glass-border-hover);
|
||||
}
|
||||
|
||||
/* Glass interactive inner: dark translucent fill for interactive elements (FAB, CTA) */
|
||||
.glass-inner {
|
||||
background: var(--color-glass-inner);
|
||||
backdrop-filter: blur(16px);
|
||||
-webkit-backdrop-filter: blur(16px);
|
||||
}
|
||||
|
||||
/* Glow border: conic gradient wrapper with halo (static) */
|
||||
.glow-border {
|
||||
background: var(--gradient-glow);
|
||||
padding: 2px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.glow-border::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: -4px;
|
||||
border-radius: inherit;
|
||||
background: var(--gradient-glow);
|
||||
filter: blur(8px);
|
||||
opacity: 0.3;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
/* Glow border animated variant */
|
||||
@property --glow-angle {
|
||||
syntax: '<angle>';
|
||||
initial-value: 0deg;
|
||||
inherits: false;
|
||||
}
|
||||
|
||||
.glow-border--animated {
|
||||
background: conic-gradient(from var(--glow-angle), var(--color-gradient-start), var(--color-gradient-mid), var(--color-gradient-end), var(--color-gradient-start));
|
||||
animation: glow-rotate 4s linear infinite;
|
||||
}
|
||||
|
||||
.glow-border--animated::before {
|
||||
background: conic-gradient(from var(--glow-angle), var(--color-gradient-start), var(--color-gradient-mid), var(--color-gradient-end), var(--color-gradient-start));
|
||||
animation: glow-rotate 4s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes glow-rotate {
|
||||
to { --glow-angle: 360deg; }
|
||||
}
|
||||
|
||||
/* Utility */
|
||||
.text-center {
|
||||
text-align: center;
|
||||
|
||||
Reference in New Issue
Block a user