diff --git a/src/index.css b/src/index.css
index 55f7559..2b7d3db 100644
--- a/src/index.css
+++ b/src/index.css
@@ -1,72 +1,78 @@
-@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
+@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&display=swap');
@import "tailwindcss";
@theme {
- /* Modern green-based color palette */
- --color-background: oklch(0.985 0.002 120);
- --color-foreground: oklch(0.18 0.01 120);
- --color-card: oklch(1 0 0);
- --color-card-foreground: oklch(0.18 0.01 120);
+ /* Nature-inspired Light Theme - Refined Premium */
+ --color-background: oklch(0.98 0.01 145); /* Very soft cool mint/gray */
+ --color-foreground: oklch(0.15 0.02 145);
+ --color-card: oklch(1 0 0); /* Pure white cards */
+ --color-card-foreground: oklch(0.15 0.02 145);
--color-popover: oklch(1 0 0);
- --color-popover-foreground: oklch(0.18 0.01 120);
- --color-primary: oklch(0.52 0.14 150);
- --color-primary-foreground: oklch(0.99 0 0);
- --color-secondary: oklch(0.965 0.015 150);
- --color-secondary-foreground: oklch(0.30 0.06 150);
- --color-muted: oklch(0.965 0.005 120);
- --color-muted-foreground: oklch(0.48 0.01 120);
- --color-accent: oklch(0.96 0.02 150);
- --color-accent-foreground: oklch(0.30 0.06 150);
+ --color-popover-foreground: oklch(0.15 0.02 145);
+ --color-primary: oklch(0.55 0.12 145); /* Emerald */
+ --color-primary-foreground: oklch(1 0 0);
+ --color-secondary: oklch(0.96 0.01 145);
+ --color-secondary-foreground: oklch(0.35 0.08 145);
+ --color-muted: oklch(0.96 0.01 145);
+ --color-muted-foreground: oklch(0.55 0.02 145);
+ --color-accent: oklch(0.96 0.01 145);
+ --color-accent-foreground: oklch(0.35 0.08 145);
--color-destructive: oklch(0.58 0.18 25);
- --color-destructive-foreground: oklch(0.99 0 0);
- --color-border: oklch(0.92 0.005 120);
- --color-input: oklch(0.92 0.005 120);
- --color-ring: oklch(0.52 0.14 150);
+ --color-destructive-foreground: oklch(1 0 0);
+ --color-border: oklch(0.92 0.01 145); /* Softer borders */
+ --color-input: oklch(0.92 0.01 145);
+ --color-ring: oklch(0.55 0.12 145);
/* Sidebar colors */
- --color-sidebar-background: oklch(0.99 0.002 120);
- --color-sidebar-foreground: oklch(0.40 0.01 120);
- --color-sidebar-primary: oklch(0.52 0.14 150);
+ --color-sidebar-background: oklch(0.985 0.005 100 / 0.8);
+ --color-sidebar-foreground: oklch(0.30 0.02 140);
+ --color-sidebar-primary: oklch(0.55 0.12 145);
--color-sidebar-primary-foreground: oklch(0.99 0 0);
- --color-sidebar-accent: oklch(0.965 0.02 150);
- --color-sidebar-accent-foreground: oklch(0.25 0.06 150);
- --color-sidebar-border: oklch(0.94 0.005 120);
- --color-sidebar-ring: oklch(0.52 0.14 150);
+ --color-sidebar-accent: oklch(0.95 0.02 135);
+ --color-sidebar-accent-foreground: oklch(0.35 0.08 145);
+ --color-sidebar-border: oklch(0.90 0.01 110 / 0.3);
+ --color-sidebar-ring: oklch(0.55 0.12 145);
- /* Refined radius for smoother look */
- --radius-lg: 0.875rem;
- --radius-md: 0.625rem;
- --radius-sm: 0.375rem;
+ /* Rounder, softer radii for premium feel */
+ --radius-lg: 1.5rem;
+ --radius-md: 1rem;
+ --radius-sm: 0.6rem;
+
+ /* Custom shadows - more diffused and elegant */
+ --shadow-soft: 0 4px 20px -2px oklch(0 0 0 / 0.05), 0 0 3px oklch(0 0 0 / 0.02);
+ --shadow-soft-lg: 0 10px 40px -4px oklch(0 0 0 / 0.08), 0 0 4px oklch(0 0 0 / 0.03);
}
.dark {
- --color-background: oklch(0.11 0.01 120);
- --color-foreground: oklch(0.96 0.005 120);
- --color-card: oklch(0.14 0.01 120);
- --color-card-foreground: oklch(0.96 0.005 120);
- --color-popover: oklch(0.14 0.01 120);
- --color-popover-foreground: oklch(0.96 0.005 120);
- --color-primary: oklch(0.62 0.14 150);
- --color-primary-foreground: oklch(0.10 0 0);
- --color-secondary: oklch(0.20 0.02 150);
- --color-secondary-foreground: oklch(0.88 0.02 150);
- --color-muted: oklch(0.20 0.01 120);
- --color-muted-foreground: oklch(0.62 0.01 120);
- --color-accent: oklch(0.20 0.02 150);
- --color-accent-foreground: oklch(0.88 0.02 150);
+ /* Midnight Forest Dark Theme */
+ --color-background: oklch(0.18 0.02 145);
+ --color-foreground: oklch(0.96 0.01 130);
+ --color-card: oklch(0.22 0.02 145);
+ --color-card-foreground: oklch(0.96 0.01 130);
+ --color-popover: oklch(0.22 0.02 145);
+ --color-popover-foreground: oklch(0.96 0.01 130);
+ --color-primary: oklch(0.65 0.15 145);
+ --color-primary-foreground: oklch(0.12 0.02 145);
+ --color-secondary: oklch(0.28 0.03 145);
+ --color-secondary-foreground: oklch(0.92 0.02 145);
+ --color-muted: oklch(0.25 0.02 145);
+ --color-muted-foreground: oklch(0.70 0.02 145);
+ --color-accent: oklch(0.28 0.03 145);
+ --color-accent-foreground: oklch(0.92 0.02 145);
--color-destructive: oklch(0.58 0.18 25);
--color-destructive-foreground: oklch(0.99 0 0);
- --color-border: oklch(0.26 0.01 120);
- --color-input: oklch(0.26 0.01 120);
- --color-ring: oklch(0.62 0.14 150);
- --color-sidebar-background: oklch(0.10 0.01 120);
- --color-sidebar-foreground: oklch(0.68 0.01 120);
- --color-sidebar-primary: oklch(0.62 0.14 150);
- --color-sidebar-primary-foreground: oklch(0.10 0 0);
- --color-sidebar-accent: oklch(0.20 0.02 150);
- --color-sidebar-accent-foreground: oklch(0.88 0.02 150);
- --color-sidebar-border: oklch(0.26 0.01 120);
- --color-sidebar-ring: oklch(0.62 0.14 150);
+ --color-border: oklch(0.32 0.03 145);
+ --color-input: oklch(0.32 0.03 145);
+ --color-ring: oklch(0.65 0.15 145);
+
+ --color-sidebar-background: oklch(0.16 0.02 145 / 0.8);
+ --color-sidebar-foreground: oklch(0.85 0.02 145);
+ --color-sidebar-primary: oklch(0.65 0.15 145);
+ --color-sidebar-primary-foreground: oklch(0.12 0.02 145);
+ --color-sidebar-accent: oklch(0.28 0.03 145);
+ --color-sidebar-accent-foreground: oklch(0.92 0.02 145);
+ --color-sidebar-border: oklch(0.32 0.03 145 / 0.3);
+ --color-sidebar-ring: oklch(0.65 0.15 145);
}
* {
@@ -81,10 +87,21 @@ html {
body {
@apply bg-background text-foreground;
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;
+ font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;
font-size: 14px;
line-height: 1.6;
- letter-spacing: -0.01em;
+ letter-spacing: -0.015em;
+ /* More premium, subtle background */
+ background-image:
+ radial-gradient(circle at 15% 50%, oklch(0.55 0.12 145 / 0.05), transparent 25%),
+ radial-gradient(circle at 85% 30%, oklch(0.65 0.15 170 / 0.06), transparent 25%);
+ background-attachment: fixed;
+}
+
+.dark body {
+ background-image:
+ radial-gradient(circle at 15% 50%, oklch(0.55 0.12 145 / 0.15), transparent 25%),
+ radial-gradient(circle at 85% 30%, oklch(0.65 0.15 170 / 0.15), transparent 25%);
}
/* Smooth scrollbar */
@@ -164,6 +181,10 @@ button {
@apply transition-all duration-150;
}
+button:active:not(:disabled) {
+ transform: scale(0.97);
+}
+
/* Input focus enhancements */
input:focus,
textarea:focus,
@@ -171,14 +192,7 @@ select:focus {
@apply transition-shadow duration-150;
}
-/* Modern shadows */
-.shadow-soft {
- box-shadow: 0 2px 8px -2px oklch(0 0 0 / 0.08), 0 4px 16px -4px oklch(0 0 0 / 0.06);
-}
-.shadow-soft-lg {
- box-shadow: 0 4px 12px -2px oklch(0 0 0 / 0.1), 0 8px 24px -4px oklch(0 0 0 / 0.08);
-}
/* Status colors */
.status-success {
@@ -224,4 +238,33 @@ select:focus {
/* Skeleton loading */
.skeleton {
@apply bg-muted animate-pulse rounded;
+}
+
+/* Glassmorphism Utilities */
+.glass-panel {
+ @apply bg-background/60 backdrop-blur-2xl border-white/40 dark:border-white/10 shadow-soft;
+}
+
+.glass-card {
+ @apply bg-card/80 backdrop-blur-xl border border-white/60 dark:border-white/10 shadow-soft transition-all duration-300;
+}
+
+.glass-card:hover {
+ @apply shadow-soft-lg -translate-y-1 bg-card/90 border-white/80 dark:border-white/20;
+}
+
+/* Page Transitions */
+.animate-fade-in-up {
+ animation: fadeInUp 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
+}
+
+@keyframes fadeInUp {
+ from {
+ opacity: 0;
+ transform: translateY(12px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
}
\ No newline at end of file
diff --git a/src/layouts/AdminLayout.tsx b/src/layouts/AdminLayout.tsx
index 25a70f0..c7e43d8 100644
--- a/src/layouts/AdminLayout.tsx
+++ b/src/layouts/AdminLayout.tsx
@@ -145,9 +145,9 @@ function NavItemComponent({ item, collapsed, level = 0 }: { item: NavItem; colla