Really-amin's picture
Upload 1460 files
96af7c9 verified
/**
* ============================================
* GLASSMORPHISM COMPONENT SYSTEM
* Admin UI Modernization
* ============================================
*
* Modern glass effect components with:
* - Base glass-card class
* - Glass effect variations (light, medium, heavy)
* - Glass borders with gradient effects
* - Inner shadows and highlights
* - Browser fallbacks for unsupported backdrop-filter
*
* Requirements: 1.1, 6.1
*/
/* ===== BASE GLASS CARD ===== */
.glass-card {
/* Glassmorphism background */
background: var(--glass-bg);
backdrop-filter: blur(var(--blur-lg));
-webkit-backdrop-filter: blur(var(--blur-lg));
/* Border with subtle gradient */
border: 1px solid var(--glass-border);
border-radius: var(--radius-xl);
/* Multi-layered shadow for depth */
box-shadow:
var(--shadow-lg),
inset 0 1px 0 rgba(255, 255, 255, 0.1);
/* Positioning for pseudo-elements */
position: relative;
overflow: hidden;
/* Smooth transitions */
transition: var(--transition-all-base);
}
/* Top highlight effect */
.glass-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 1px;
background: linear-gradient(
90deg,
transparent,
rgba(255, 255, 255, 0.2),
transparent
);
pointer-events: none;
}
/* Hover state with elevation */
.glass-card:hover {
transform: translateY(-2px);
box-shadow:
var(--shadow-xl),
var(--shadow-glow),
inset 0 1px 0 rgba(255, 255, 255, 0.15);
border-color: rgba(99, 102, 241, 0.3);
}
/* Active/pressed state */
.glass-card:active {
transform: translateY(0);
box-shadow:
var(--shadow-md),
inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
/* ===== GLASS EFFECT VARIATIONS ===== */
/* Light blur - subtle effect */
.glass-card-light {
background: var(--glass-bg-light);
backdrop-filter: blur(var(--blur-md));
-webkit-backdrop-filter: blur(var(--blur-md));
border: 1px solid var(--glass-border);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-md);
position: relative;
transition: var(--transition-all-base);
}
/* Medium blur - balanced effect (default) */
.glass-card-medium {
background: var(--glass-bg);
backdrop-filter: blur(var(--blur-lg));
-webkit-backdrop-filter: blur(var(--blur-lg));
border: 1px solid var(--glass-border);
border-radius: var(--radius-xl);
box-shadow: var(--shadow-lg);
position: relative;
transition: var(--transition-all-base);
}
/* Heavy blur - strong effect */
.glass-card-heavy {
background: var(--glass-bg-strong);
backdrop-filter: blur(var(--blur-xl));
-webkit-backdrop-filter: blur(var(--blur-xl));
border: 1px solid var(--glass-border-strong);
border-radius: var(--radius-2xl);
box-shadow:
var(--shadow-xl),
inset 0 2px 0 rgba(255, 255, 255, 0.15);
position: relative;
transition: var(--transition-all-base);
}
/* ===== GLASS BORDERS WITH GRADIENT EFFECTS ===== */
/* Gradient border - primary */
.glass-border-gradient {
position: relative;
background: var(--glass-bg);
backdrop-filter: blur(var(--blur-lg));
-webkit-backdrop-filter: blur(var(--blur-lg));
border-radius: var(--radius-xl);
padding: 1px;
overflow: hidden;
}
.glass-border-gradient::before {
content: '';
position: absolute;
inset: 0;
border-radius: inherit;
padding: 1px;
background: var(--gradient-primary);
-webkit-mask:
linear-gradient(#fff 0 0) content-box,
linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
pointer-events: none;
}
/* Gradient border - accent */
.glass-border-accent {
position: relative;
background: var(--glass-bg);
backdrop-filter: blur(var(--blur-lg));
-webkit-backdrop-filter: blur(var(--blur-lg));
border-radius: var(--radius-xl);
border: 1px solid transparent;
background-image:
linear-gradient(var(--bg-primary), var(--bg-primary)),
var(--gradient-accent);
background-origin: border-box;
background-clip: padding-box, border-box;
}
/* Animated gradient border */
.glass-border-animated {
position: relative;
background: var(--glass-bg);
backdrop-filter: blur(var(--blur-lg));
-webkit-backdrop-filter: blur(var(--blur-lg));
border-radius: var(--radius-xl);
border: 2px solid transparent;
background-image:
linear-gradient(var(--bg-primary), var(--bg-primary)),
var(--gradient-rainbow);
background-origin: border-box;
background-clip: padding-box, border-box;
animation: borderRotate 3s linear infinite;
}
@keyframes borderRotate {
0% {
filter: hue-rotate(0deg);
}
100% {
filter: hue-rotate(360deg);
}
}
/* ===== INNER SHADOWS AND HIGHLIGHTS ===== */
/* Inner glow effect */
.glass-inner-glow {
box-shadow:
var(--shadow-lg),
inset 0 0 20px rgba(99, 102, 241, 0.1),
inset 0 1px 0 rgba(255, 255, 255, 0.15);
}
/* Inner shadow for depth */
.glass-inner-shadow {
box-shadow:
var(--shadow-lg),
inset 0 2px 8px rgba(0, 0, 0, 0.2);
}
/* Top highlight */
.glass-highlight-top::after {
content: '';
position: absolute;
top: 0;
left: 5%;
right: 5%;
height: 2px;
background: linear-gradient(
90deg,
transparent,
rgba(255, 255, 255, 0.3),
transparent
);
border-radius: var(--radius-full);
pointer-events: none;
}
/* Bottom highlight */
.glass-highlight-bottom::after {
content: '';
position: absolute;
bottom: 0;
left: 5%;
right: 5%;
height: 1px;
background: linear-gradient(
90deg,
transparent,
rgba(255, 255, 255, 0.15),
transparent
);
pointer-events: none;
}
/* Corner highlights */
.glass-corner-highlights::before,
.glass-corner-highlights::after {
content: '';
position: absolute;
width: 40px;
height: 40px;
border-radius: var(--radius-full);
background: radial-gradient(
circle,
rgba(255, 255, 255, 0.1) 0%,
transparent 70%
);
pointer-events: none;
}
.glass-corner-highlights::before {
top: -10px;
left: -10px;
}
.glass-corner-highlights::after {
bottom: -10px;
right: -10px;
}
/* ===== BROWSER FALLBACKS ===== */
/* Fallback for browsers that don't support backdrop-filter */
@supports not (backdrop-filter: blur(16px)) {
.glass-card,
.glass-card-light,
.glass-card-medium,
.glass-card-heavy,
.glass-border-gradient,
.glass-border-accent,
.glass-border-animated {
background: var(--bg-secondary);
border: 1px solid var(--border-color);
}
.glass-card-heavy {
background: var(--bg-tertiary);
}
}
/* Fallback for older WebKit browsers */
@supports not (-webkit-backdrop-filter: blur(16px)) {
.glass-card,
.glass-card-light,
.glass-card-medium,
.glass-card-heavy {
background: var(--bg-secondary);
}
}
/* ===== UTILITY CLASSES ===== */
/* No hover effect */
.glass-card-static {
cursor: default;
}
.glass-card-static:hover {
transform: none;
box-shadow:
var(--shadow-lg),
inset 0 1px 0 rgba(255, 255, 255, 0.1);
border-color: var(--glass-border);
}
/* Interactive cursor */
.glass-card-interactive {
cursor: pointer;
}
/* Disabled state */
.glass-card-disabled {
opacity: 0.5;
cursor: not-allowed;
pointer-events: none;
}
/* ===== GLASS PANEL VARIANTS ===== */
/* Glass panel for sidebar */
.glass-panel-sidebar {
background: linear-gradient(
180deg,
rgba(15, 23, 42, 0.95) 0%,
rgba(30, 41, 59, 0.95) 100%
);
backdrop-filter: blur(var(--blur-xl));
-webkit-backdrop-filter: blur(var(--blur-xl));
border-right: 1px solid rgba(255, 255, 255, 0.05);
box-shadow: var(--shadow-xl);
position: relative;
}
.glass-panel-sidebar::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: radial-gradient(
circle at top left,
rgba(99, 102, 241, 0.1) 0%,
transparent 50%
);
pointer-events: none;
}
/* Glass panel for topbar */
.glass-panel-topbar {
background: rgba(15, 23, 42, 0.8);
backdrop-filter: blur(var(--blur-xl));
-webkit-backdrop-filter: blur(var(--blur-xl));
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
box-shadow: var(--shadow-md);
}
/* Glass panel for modal */
.glass-panel-modal {
background: var(--glass-bg-strong);
backdrop-filter: blur(var(--blur-2xl));
-webkit-backdrop-filter: blur(var(--blur-2xl));
border: 1px solid var(--glass-border-strong);
border-radius: var(--radius-2xl);
box-shadow: var(--shadow-2xl);
}
/* ===== GLASS CONTAINER ===== */
/* Container with glass effect */
.glass-container {
background: var(--glass-bg);
backdrop-filter: blur(var(--blur-lg));
-webkit-backdrop-filter: blur(var(--blur-lg));
border: 1px solid var(--glass-border);
border-radius: var(--radius-xl);
padding: var(--spacing-lg);
box-shadow: var(--shadow-lg);
}
/* Nested glass container */
.glass-container-nested {
background: rgba(255, 255, 255, 0.03);
backdrop-filter: blur(var(--blur-md));
-webkit-backdrop-filter: blur(var(--blur-md));
border: 1px solid rgba(255, 255, 255, 0.05);
border-radius: var(--radius-lg);
padding: var(--spacing-md);
box-shadow: var(--shadow-sm);
}
/* ===== RESPONSIVE ADJUSTMENTS ===== */
/* Reduce blur on mobile for performance */
@media (max-width: 768px) {
.glass-card,
.glass-card-medium {
backdrop-filter: blur(var(--blur-md));
-webkit-backdrop-filter: blur(var(--blur-md));
}
.glass-card-heavy {
backdrop-filter: blur(var(--blur-lg));
-webkit-backdrop-filter: blur(var(--blur-lg));
}
.glass-panel-sidebar,
.glass-panel-topbar,
.glass-panel-modal {
backdrop-filter: blur(var(--blur-lg));
-webkit-backdrop-filter: blur(var(--blur-lg));
}
}
/* ===== ACCESSIBILITY ===== */
/* Respect reduced motion preference */
@media (prefers-reduced-motion: reduce) {
.glass-card,
.glass-card-light,
.glass-card-medium,
.glass-card-heavy,
.glass-border-animated {
transition: none;
animation: none;
}
}