|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.glass-card {
|
|
|
|
|
|
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),
|
|
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
|
|
|
|
|
|
|
|
position: relative;
|
|
|
overflow: hidden;
|
|
|
|
|
|
|
|
|
transition: var(--transition-all-base);
|
|
|
}
|
|
|
|
|
|
|
|
|
.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;
|
|
|
}
|
|
|
|
|
|
|
|
|
.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);
|
|
|
}
|
|
|
|
|
|
|
|
|
.glass-card:active {
|
|
|
transform: translateY(0);
|
|
|
box-shadow:
|
|
|
var(--shadow-md),
|
|
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.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);
|
|
|
}
|
|
|
|
|
|
|
|
|
.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);
|
|
|
}
|
|
|
|
|
|
|
|
|
.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-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;
|
|
|
}
|
|
|
|
|
|
|
|
|
.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;
|
|
|
}
|
|
|
|
|
|
|
|
|
.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);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.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);
|
|
|
}
|
|
|
|
|
|
|
|
|
.glass-inner-shadow {
|
|
|
box-shadow:
|
|
|
var(--shadow-lg),
|
|
|
inset 0 2px 8px rgba(0, 0, 0, 0.2);
|
|
|
}
|
|
|
|
|
|
|
|
|
.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;
|
|
|
}
|
|
|
|
|
|
|
|
|
.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;
|
|
|
}
|
|
|
|
|
|
|
|
|
.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;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@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);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
@supports not (-webkit-backdrop-filter: blur(16px)) {
|
|
|
.glass-card,
|
|
|
.glass-card-light,
|
|
|
.glass-card-medium,
|
|
|
.glass-card-heavy {
|
|
|
background: var(--bg-secondary);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.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);
|
|
|
}
|
|
|
|
|
|
|
|
|
.glass-card-interactive {
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
|
|
|
|
|
|
.glass-card-disabled {
|
|
|
opacity: 0.5;
|
|
|
cursor: not-allowed;
|
|
|
pointer-events: none;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.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-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-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 {
|
|
|
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);
|
|
|
}
|
|
|
|
|
|
|
|
|
.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);
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@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));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
|
.glass-card,
|
|
|
.glass-card-light,
|
|
|
.glass-card-medium,
|
|
|
.glass-card-heavy,
|
|
|
.glass-border-animated {
|
|
|
transition: none;
|
|
|
animation: none;
|
|
|
}
|
|
|
}
|
|
|
|