csa-dashboard-sementara/csa-dashboard/app/globals.css

228 lines
4.8 KiB
CSS

@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
/* Light theme - Off-white, Gray tones */
--background: 40 20% 97%;
/* Off-white/Ivory */
--foreground: 0 0% 10%;
--card: 0 0% 100%;
--card-foreground: 0 0% 10%;
--popover: 0 0% 100%;
--popover-foreground: 0 0% 10%;
--primary: 0 0% 20%;
/* Dark Gray */
--primary-foreground: 0 0% 98%;
--secondary: 0 0% 96%;
--secondary-foreground: 0 0% 10%;
--muted: 0 0% 94%;
--muted-foreground: 0 0% 45%;
--accent: 0 0% 35%;
/* Medium Gray */
--accent-foreground: 0 0% 98%;
--destructive: 0 0% 30%;
--destructive-foreground: 0 0% 98%;
--border: 0 0% 88%;
--input: 0 0% 88%;
--ring: 0 0% 20%;
--radius: 0.5rem;
}
.dark {
/* Dark theme - Black and Grays */
--background: 0 0% 6%;
/* Near Black */
--foreground: 0 0% 95%;
--card: 0 0% 10%;
--card-foreground: 0 0% 95%;
--popover: 0 0% 10%;
--popover-foreground: 0 0% 95%;
--primary: 0 0% 85%;
/* Light Gray */
--primary-foreground: 0 0% 10%;
--secondary: 0 0% 15%;
--secondary-foreground: 0 0% 95%;
--muted: 0 0% 15%;
--muted-foreground: 0 0% 60%;
--accent: 0 0% 70%;
/* Medium Light Gray */
--accent-foreground: 0 0% 10%;
--destructive: 0 0% 70%;
--destructive-foreground: 0 0% 10%;
--border: 0 0% 18%;
--input: 0 0% 18%;
--ring: 0 0% 70%;
}
}
@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground;
background: linear-gradient(to bottom right, hsl(var(--background)), hsl(0 0% 8%));
background-attachment: fixed;
}
}
@layer utilities {
.glass {
background: rgba(255, 255, 255, 0.05);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
}
.glass-dark {
background: rgba(0, 0, 0, 0.2);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.05);
}
.glow {
box-shadow:
0 0 20px rgba(255, 255, 255, 0.2),
0 0 40px rgba(255, 255, 255, 0.15),
0 0 60px rgba(255, 255, 255, 0.1);
}
.glow-hover:hover {
box-shadow:
0 0 30px rgba(255, 255, 255, 0.3),
0 0 60px rgba(255, 255, 255, 0.2),
0 0 90px rgba(255, 255, 255, 0.15);
transition: box-shadow 0.3s ease-in-out;
}
.glow-dark {
box-shadow:
0 0 20px rgba(0, 0, 0, 0.3),
0 0 40px rgba(0, 0, 0, 0.2),
0 0 60px rgba(0, 0, 0, 0.1);
}
.glow-gray {
box-shadow:
0 0 20px rgba(150, 150, 150, 0.3),
0 0 40px rgba(150, 150, 150, 0.2),
0 0 60px rgba(150, 150, 150, 0.1);
}
.glow-white {
box-shadow:
0 0 20px rgba(255, 255, 255, 0.25),
0 0 40px rgba(255, 255, 255, 0.15),
0 0 60px rgba(255, 255, 255, 0.1);
}
.animate-glow {
animation: glow-pulse 2s ease-in-out infinite;
}
@keyframes glow-pulse {
0%,
100% {
box-shadow:
0 0 20px rgba(255, 255, 255, 0.2),
0 0 40px rgba(255, 255, 255, 0.15);
}
50% {
box-shadow:
0 0 30px rgba(255, 255, 255, 0.3),
0 0 60px rgba(255, 255, 255, 0.2);
}
}
.liquid-gradient {
background: linear-gradient(135deg,
rgba(255, 255, 255, 0.08) 0%,
rgba(150, 150, 150, 0.05) 50%,
rgba(255, 255, 255, 0.08) 100%);
background-size: 400% 400%;
animation: liquid-flow 15s ease infinite;
}
@keyframes liquid-flow {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
.border-gradient {
border: 2px solid transparent;
background-clip: padding-box;
position: relative;
}
.border-gradient::before {
content: '';
position: absolute;
inset: -2px;
border-radius: inherit;
padding: 2px;
background: linear-gradient(135deg, #fff, #888, #fff);
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
pointer-events: none;
}
.shimmer {
position: relative;
overflow: hidden;
}
.shimmer::after {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg,
transparent,
rgba(255, 255, 255, 0.1),
transparent);
animation: shimmer 3s infinite;
}
@keyframes shimmer {
0% {
left: -100%;
}
100% {
left: 100%;
}
}
@keyframes spin-smooth {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.animate-spin-smooth {
animation: spin-smooth 1s linear infinite;
}
}