578 lines
14 KiB
CSS
578 lines
14 KiB
CSS
@import "tailwindcss";
|
|
@import "tw-animate-css";
|
|
|
|
@custom-variant dark (&:is(.dark *));
|
|
|
|
:root {
|
|
--background: oklch(0.9789 0.0082 121.6272);
|
|
--foreground: oklch(0 0 0);
|
|
--card: oklch(1.0000 0 0);
|
|
--card-foreground: oklch(0 0 0);
|
|
--popover: oklch(1.0000 0 0);
|
|
--popover-foreground: oklch(0 0 0);
|
|
--primary: oklch(0.5106 0.2301 276.9656);
|
|
--primary-foreground: oklch(1.0000 0 0);
|
|
--secondary: oklch(0.7038 0.1230 182.5025);
|
|
--secondary-foreground: oklch(1.0000 0 0);
|
|
--muted: oklch(0.9551 0 0);
|
|
--muted-foreground: oklch(0.3211 0 0);
|
|
--accent: oklch(0.7686 0.1647 70.0804);
|
|
--accent-foreground: oklch(0 0 0);
|
|
--destructive: oklch(0.6368 0.2078 25.3313);
|
|
--destructive-foreground: oklch(1.0000 0 0);
|
|
--border: oklch(0 0 0);
|
|
--input: oklch(0.5555 0 0);
|
|
--ring: oklch(0.7853 0.1041 274.7134);
|
|
--chart-1: oklch(0.5106 0.2301 276.9656);
|
|
--chart-2: oklch(0.7038 0.1230 182.5025);
|
|
--chart-3: oklch(0.7686 0.1647 70.0804);
|
|
--chart-4: oklch(0.6559 0.2118 354.3084);
|
|
--chart-5: oklch(0.7227 0.1920 149.5793);
|
|
--sidebar: oklch(0.9789 0.0082 121.6272);
|
|
--sidebar-foreground: oklch(0 0 0);
|
|
--sidebar-primary: oklch(0.5106 0.2301 276.9656);
|
|
--sidebar-primary-foreground: oklch(1.0000 0 0);
|
|
--sidebar-accent: oklch(0.7686 0.1647 70.0804);
|
|
--sidebar-accent-foreground: oklch(0 0 0);
|
|
--sidebar-border: oklch(0 0 0);
|
|
--sidebar-ring: oklch(0.7853 0.1041 274.7134);
|
|
--radius: 1rem;
|
|
--shadow-x: 0px;
|
|
--shadow-y: 0px;
|
|
--shadow-blur: 0px;
|
|
--shadow-spread: 0px;
|
|
--shadow-opacity: 0.05;
|
|
--shadow-color: #1a1a1a;
|
|
--shadow-2xs: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.03);
|
|
--shadow-xs: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.03);
|
|
--shadow-sm: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 1px 2px -1px hsl(0 0% 10.1961% / 0.05);
|
|
--shadow: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 1px 2px -1px hsl(0 0% 10.1961% / 0.05);
|
|
--shadow-md: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 2px 4px -1px hsl(0 0% 10.1961% / 0.05);
|
|
--shadow-lg: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 4px 6px -1px hsl(0 0% 10.1961% / 0.05);
|
|
--shadow-xl: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 8px 10px -1px hsl(0 0% 10.1961% / 0.05);
|
|
--shadow-2xl: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.13);
|
|
--tracking-normal: normal;
|
|
--spacing: 0.25rem;
|
|
}
|
|
|
|
.dark {
|
|
--background: oklch(0 0 0);
|
|
--foreground: oklch(1.0000 0 0);
|
|
--card: oklch(0.2455 0.0217 257.2823);
|
|
--card-foreground: oklch(1.0000 0 0);
|
|
--popover: oklch(0.2455 0.0217 257.2823);
|
|
--popover-foreground: oklch(1.0000 0 0);
|
|
--primary: oklch(0.6801 0.1583 276.9349);
|
|
--primary-foreground: oklch(0 0 0);
|
|
--secondary: oklch(0.7845 0.1325 181.9120);
|
|
--secondary-foreground: oklch(0 0 0);
|
|
--muted: oklch(0.3211 0 0);
|
|
--muted-foreground: oklch(0.8452 0 0);
|
|
--accent: oklch(0.8790 0.1534 91.6054);
|
|
--accent-foreground: oklch(0 0 0);
|
|
--destructive: oklch(0.7106 0.1661 22.2162);
|
|
--destructive-foreground: oklch(0 0 0);
|
|
--border: oklch(0.4459 0 0);
|
|
--input: oklch(1.0000 0 0);
|
|
--ring: oklch(0.6801 0.1583 276.9349);
|
|
--chart-1: oklch(0.6801 0.1583 276.9349);
|
|
--chart-2: oklch(0.7845 0.1325 181.9120);
|
|
--chart-3: oklch(0.8790 0.1534 91.6054);
|
|
--chart-4: oklch(0.7253 0.1752 349.7607);
|
|
--chart-5: oklch(0.8003 0.1821 151.7110);
|
|
--sidebar: oklch(0 0 0);
|
|
--sidebar-foreground: oklch(1.0000 0 0);
|
|
--sidebar-primary: oklch(0.6801 0.1583 276.9349);
|
|
--sidebar-primary-foreground: oklch(0 0 0);
|
|
--sidebar-accent: oklch(0.8790 0.1534 91.6054);
|
|
--sidebar-accent-foreground: oklch(0 0 0);
|
|
--sidebar-border: oklch(1.0000 0 0);
|
|
--sidebar-ring: oklch(0.6801 0.1583 276.9349);
|
|
--radius: 1rem;
|
|
--shadow-x: 0px;
|
|
--shadow-y: 0px;
|
|
--shadow-blur: 0px;
|
|
--shadow-spread: 0px;
|
|
--shadow-opacity: 0.05;
|
|
--shadow-color: #1a1a1a;
|
|
--shadow-2xs: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.03);
|
|
--shadow-xs: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.03);
|
|
--shadow-sm: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 1px 2px -1px hsl(0 0% 10.1961% / 0.05);
|
|
--shadow: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 1px 2px -1px hsl(0 0% 10.1961% / 0.05);
|
|
--shadow-md: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 2px 4px -1px hsl(0 0% 10.1961% / 0.05);
|
|
--shadow-lg: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 4px 6px -1px hsl(0 0% 10.1961% / 0.05);
|
|
--shadow-xl: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.05), 0px 8px 10px -1px hsl(0 0% 10.1961% / 0.05);
|
|
--shadow-2xl: 0px 0px 0px 0px hsl(0 0% 10.1961% / 0.13);
|
|
}
|
|
|
|
@theme inline {
|
|
--color-background: var(--background);
|
|
--color-foreground: var(--foreground);
|
|
--color-card: var(--card);
|
|
--color-card-foreground: var(--card-foreground);
|
|
--color-popover: var(--popover);
|
|
--color-popover-foreground: var(--popover-foreground);
|
|
--color-primary: var(--primary);
|
|
--color-primary-foreground: var(--primary-foreground);
|
|
--color-secondary: var(--secondary);
|
|
--color-secondary-foreground: var(--secondary-foreground);
|
|
--color-muted: var(--muted);
|
|
--color-muted-foreground: var(--muted-foreground);
|
|
--color-accent: var(--accent);
|
|
--color-accent-foreground: var(--accent-foreground);
|
|
--color-destructive: var(--destructive);
|
|
--color-destructive-foreground: var(--destructive-foreground);
|
|
--color-border: var(--border);
|
|
--color-input: var(--input);
|
|
--color-ring: var(--ring);
|
|
--color-chart-1: var(--chart-1);
|
|
--color-chart-2: var(--chart-2);
|
|
--color-chart-3: var(--chart-3);
|
|
--color-chart-4: var(--chart-4);
|
|
--color-chart-5: var(--chart-5);
|
|
--color-sidebar: var(--sidebar);
|
|
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
--color-sidebar-primary: var(--sidebar-primary);
|
|
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
--color-sidebar-accent: var(--sidebar-accent);
|
|
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
--color-sidebar-border: var(--sidebar-border);
|
|
--color-sidebar-ring: var(--sidebar-ring);
|
|
|
|
--font-sans: 'DM Sans', sans-serif;
|
|
--font-mono: 'Space Mono', monospace;
|
|
--font-serif: 'DM Sans', sans-serif;
|
|
|
|
--radius-sm: calc(var(--radius) - 4px);
|
|
--radius-md: calc(var(--radius) - 2px);
|
|
--radius-lg: var(--radius);
|
|
--radius-xl: calc(var(--radius) + 4px);
|
|
|
|
--shadow-2xs: var(--shadow-2xs);
|
|
--shadow-xs: var(--shadow-xs);
|
|
--shadow-sm: var(--shadow-sm);
|
|
--shadow: var(--shadow);
|
|
--shadow-md: var(--shadow-md);
|
|
--shadow-lg: var(--shadow-lg);
|
|
--shadow-xl: var(--shadow-xl);
|
|
--shadow-2xl: var(--shadow-2xl);
|
|
|
|
--tracking-tighter: calc(var(--tracking-normal) - 0.05em);
|
|
--tracking-tight: calc(var(--tracking-normal) - 0.025em);
|
|
--tracking-normal: var(--tracking-normal);
|
|
--tracking-wide: calc(var(--tracking-normal) + 0.025em);
|
|
--tracking-wider: calc(var(--tracking-normal) + 0.05em);
|
|
--tracking-widest: calc(var(--tracking-normal) + 0.1em);
|
|
|
|
/* Background gradients */
|
|
--bg-main: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 20%, #bbf7d0 40%, #dcfce7 60%, #f0fdf4 80%, #dcfce7 100%);
|
|
--bg-orbs:
|
|
radial-gradient(ellipse at 15% 10%, rgba(99, 102, 241, 0.1) 0%, transparent 40%),
|
|
radial-gradient(ellipse at 85% 20%, rgba(168, 85, 247, 0.08) 0%, transparent 35%),
|
|
radial-gradient(ellipse at 50% 50%, rgba(59, 130, 246, 0.06) 0%, transparent 50%),
|
|
radial-gradient(ellipse at 20% 80%, rgba(34, 197, 94, 0.05) 0%, transparent 40%),
|
|
radial-gradient(ellipse at 80% 85%, rgba(239, 68, 68, 0.05) 0%, transparent 35%);
|
|
}
|
|
|
|
@layer base {
|
|
html {
|
|
scroll-behavior: smooth;
|
|
}
|
|
|
|
* {
|
|
@apply border-border outline-ring/50;
|
|
}
|
|
|
|
body {
|
|
@apply text-foreground;
|
|
font-family: var(--font-sans);
|
|
letter-spacing: var(--tracking-normal);
|
|
background-color: transparent;
|
|
min-height: 100vh;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
body::before {
|
|
content: '';
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background: var(--bg-orbs), var(--bg-main);
|
|
background-size: cover;
|
|
pointer-events: none;
|
|
z-index: -50;
|
|
}
|
|
|
|
/* Dark mode overrides */
|
|
.dark {
|
|
--bg-main: linear-gradient(135deg, #0f0f1a 0%, #1a1a2e 20%, #16213e 40%, #1a1a2e 60%, #0f0f1a 80%, #1a1a2e 100%);
|
|
--bg-orbs:
|
|
radial-gradient(ellipse at 15% 10%, rgba(99, 102, 241, 0.15) 0%, transparent 40%),
|
|
radial-gradient(ellipse at 85% 20%, rgba(168, 85, 247, 0.12) 0%, transparent 35%),
|
|
radial-gradient(ellipse at 50% 50%, rgba(45, 55, 72, 0.1) 0%, transparent 50%),
|
|
radial-gradient(ellipse at 20% 80%, rgba(34, 197, 94, 0.08) 0%, transparent 40%),
|
|
radial-gradient(ellipse at 80% 85%, rgba(239, 68, 68, 0.08) 0%, transparent 35%);
|
|
}
|
|
|
|
/* Calendar styling - optimize cell size */
|
|
.rdp {
|
|
--rdp-cell-size: 40px;
|
|
}
|
|
|
|
/* Make calendar fill available space on mobile */
|
|
@media (max-width: 640px) {
|
|
.rdp {
|
|
--rdp-cell-size: 100%;
|
|
width: 100%;
|
|
margin: 0;
|
|
}
|
|
|
|
.rdp-month {
|
|
width: 100%;
|
|
}
|
|
|
|
.rdp-table {
|
|
width: 100%;
|
|
max-width: 100%;
|
|
display: table;
|
|
table-layout: fixed;
|
|
}
|
|
|
|
.rdp-day {
|
|
width: 100%;
|
|
max-width: none;
|
|
height: auto;
|
|
aspect-ratio: 1;
|
|
}
|
|
|
|
.rdp-head_cell {
|
|
width: 100%;
|
|
}
|
|
}
|
|
|
|
/* Tablet sizing */
|
|
@media (min-width: 641px) and (max-width: 1024px) {
|
|
.rdp {
|
|
--rdp-cell-size: 44px;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Animation keyframes */
|
|
@keyframes fade-in {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes fade-in-up {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes fade-in-down {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(-20px);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes scale-in {
|
|
from {
|
|
opacity: 0;
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes slide-in-right {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateX(20px);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: translateX(0);
|
|
}
|
|
}
|
|
|
|
@keyframes slide-in-left {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateX(-20px);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: translateX(0);
|
|
}
|
|
}
|
|
|
|
@keyframes pulse-subtle {
|
|
|
|
0%,
|
|
100% {
|
|
opacity: 1;
|
|
}
|
|
|
|
50% {
|
|
opacity: 0.7;
|
|
}
|
|
}
|
|
|
|
@keyframes float {
|
|
|
|
0%,
|
|
100% {
|
|
transform: translateY(0);
|
|
}
|
|
|
|
50% {
|
|
transform: translateY(-5px);
|
|
}
|
|
}
|
|
|
|
@keyframes shimmer {
|
|
0% {
|
|
background-position: -200% 0;
|
|
}
|
|
|
|
100% {
|
|
background-position: 200% 0;
|
|
}
|
|
}
|
|
|
|
@keyframes glow {
|
|
|
|
0%,
|
|
100% {
|
|
box-shadow: 0 0 5px rgba(99, 102, 241, 0.5);
|
|
}
|
|
|
|
50% {
|
|
box-shadow: 0 0 20px rgba(99, 102, 241, 0.8);
|
|
}
|
|
}
|
|
|
|
@keyframes confetti {
|
|
0% {
|
|
transform: translateY(0) rotate(0deg);
|
|
opacity: 1;
|
|
}
|
|
|
|
100% {
|
|
transform: translateY(100vh) rotate(720deg);
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
.animate-confetti {
|
|
animation: confetti 3s ease-out forwards;
|
|
}
|
|
|
|
/* Animation utility classes */
|
|
.animate-fade-in {
|
|
animation: fade-in 0.5s ease-out forwards;
|
|
}
|
|
|
|
.animate-fade-in-up {
|
|
animation: fade-in-up 0.5s ease-out forwards;
|
|
}
|
|
|
|
.animate-fade-in-down {
|
|
animation: fade-in-down 0.5s ease-out forwards;
|
|
}
|
|
|
|
.animate-scale-in {
|
|
animation: scale-in 0.4s ease-out forwards;
|
|
}
|
|
|
|
.animate-slide-in-right {
|
|
animation: slide-in-right 0.5s ease-out forwards;
|
|
}
|
|
|
|
.animate-slide-in-left {
|
|
animation: slide-in-left 0.5s ease-out forwards;
|
|
}
|
|
|
|
.animate-pulse-subtle {
|
|
animation: pulse-subtle 2s ease-in-out infinite;
|
|
}
|
|
|
|
.animate-float {
|
|
animation: float 3s ease-in-out infinite;
|
|
}
|
|
|
|
.animate-glow {
|
|
animation: glow 2s ease-in-out infinite;
|
|
}
|
|
|
|
/* Stagger delay utilities */
|
|
.delay-100 {
|
|
animation-delay: 100ms;
|
|
}
|
|
|
|
.delay-200 {
|
|
animation-delay: 200ms;
|
|
}
|
|
|
|
.delay-300 {
|
|
animation-delay: 300ms;
|
|
}
|
|
|
|
.delay-400 {
|
|
animation-delay: 400ms;
|
|
}
|
|
|
|
.delay-500 {
|
|
animation-delay: 500ms;
|
|
}
|
|
|
|
.delay-600 {
|
|
animation-delay: 600ms;
|
|
}
|
|
|
|
/* Start hidden for animations */
|
|
.opacity-0 {
|
|
opacity: 0;
|
|
}
|
|
|
|
/* Smooth transitions */
|
|
.transition-smooth {
|
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
}
|
|
|
|
/* Interactive hover effects */
|
|
.hover-lift {
|
|
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
.hover-lift:hover {
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
.hover-scale {
|
|
transition: transform 0.2s ease;
|
|
}
|
|
|
|
.hover-scale:hover {
|
|
transform: scale(1.02);
|
|
}
|
|
|
|
.hover-glow {
|
|
transition: box-shadow 0.3s ease;
|
|
}
|
|
|
|
.hover-glow:hover {
|
|
box-shadow: 0 0 20px rgba(99, 102, 241, 0.4);
|
|
}
|
|
|
|
/* Glassmorphism effect */
|
|
.glass {
|
|
background: rgba(255, 255, 255, 0.05);
|
|
backdrop-filter: blur(10px);
|
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
.glass-strong {
|
|
background: rgba(255, 255, 255, 0.1);
|
|
backdrop-filter: blur(20px);
|
|
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
}
|
|
|
|
/* Premium card effect */
|
|
.card-premium {
|
|
background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%);
|
|
backdrop-filter: blur(20px);
|
|
border: 1px solid rgba(255, 255, 255, 0.18);
|
|
box-shadow:
|
|
0 8px 32px rgba(0, 0, 0, 0.1),
|
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
/* Gradient text */
|
|
.gradient-text {
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
}
|
|
|
|
.gradient-text-warm {
|
|
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
}
|
|
|
|
/* Subtle inner glow for cards */
|
|
.inner-glow {
|
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
/* Text shadow for better readability */
|
|
.text-shadow {
|
|
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
.text-shadow-sm {
|
|
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
|
|
}
|
|
|
|
/* Gradient borders */
|
|
.gradient-border {
|
|
position: relative;
|
|
}
|
|
|
|
.gradient-border::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
border-radius: inherit;
|
|
padding: 1px;
|
|
background: linear-gradient(135deg, rgba(99, 102, 241, 0.5), rgba(168, 85, 247, 0.5));
|
|
-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;
|
|
}
|
|
|
|
/* Noise texture overlay for depth */
|
|
.noise-overlay {
|
|
position: relative;
|
|
}
|
|
|
|
.noise-overlay::after {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
|
|
opacity: 0.03;
|
|
pointer-events: none;
|
|
border-radius: inherit;
|
|
} |