401 lines
8.8 KiB
CSS
401 lines
8.8 KiB
CSS
@import "tailwindcss";
|
|
|
|
/* Persian/Farsi font support */
|
|
@import url("https://fonts.googleapis.com/css2?family=Vazirmatn:wght@100..900&display=swap");
|
|
|
|
@theme {
|
|
--font-sans:
|
|
"Vazirmatn", "Inter", ui-sans-serif, system-ui, sans-serif,
|
|
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
|
|
/* Teal color scale */
|
|
--color-teal-50: #f0fdfa;
|
|
--color-teal-100: #ccfbf1;
|
|
--color-teal-200: #99f6e4;
|
|
--color-teal-300: #5eead4;
|
|
--color-teal-400: #2dd4bf;
|
|
--color-teal-500: #14b8a6;
|
|
--color-teal-600: #0d9488;
|
|
--color-teal-700: #0f766e;
|
|
--color-teal-800: #115e59;
|
|
--color-teal-900: #134e4a;
|
|
--color-teal-950: #042f2e;
|
|
|
|
/* Slate color scale */
|
|
--color-slate-50: #f8fafc;
|
|
--color-slate-100: #f1f5f9;
|
|
--color-slate-200: #e2e8f0;
|
|
--color-slate-300: #cbd5e1;
|
|
--color-slate-400: #94a3b8;
|
|
--color-slate-500: #64748b;
|
|
--color-slate-600: #475569;
|
|
--color-slate-700: #334155;
|
|
--color-slate-800: #1e293b;
|
|
--color-slate-900: #0f172a;
|
|
--color-slate-950: #020617;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
@apply bg-background text-foreground;
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
color-scheme: dark;
|
|
}
|
|
}
|
|
|
|
/* RTL Support */
|
|
html[dir="rtl"] {
|
|
direction: rtl;
|
|
}
|
|
|
|
html[dir="rtl"] body {
|
|
text-align: right;
|
|
}
|
|
|
|
@theme inline {
|
|
--radius-sm: calc(var(--radius) - 4px);
|
|
--radius-md: calc(var(--radius) - 2px);
|
|
--radius-lg: var(--radius);
|
|
--radius-xl: calc(var(--radius) + 4px);
|
|
--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);
|
|
}
|
|
|
|
:root {
|
|
--radius: 0.5rem;
|
|
|
|
/* Light theme colors */
|
|
--background: #ffffff;
|
|
--foreground: #0a0a0a;
|
|
--card: #ffffff;
|
|
--card-foreground: #0a0a0a;
|
|
--popover: #ffffff;
|
|
--popover-foreground: #0a0a0a;
|
|
--primary: #22c55e;
|
|
--primary-foreground: #ffffff;
|
|
--secondary: #f5f5f5;
|
|
--secondary-foreground: #0a0a0a;
|
|
--muted: #f5f5f5;
|
|
--muted-foreground: #737373;
|
|
--accent: #f5f5f5;
|
|
--accent-foreground: #0a0a0a;
|
|
--destructive: #ef4444;
|
|
--destructive-foreground: #ffffff;
|
|
--border: #e5e5e5;
|
|
--input: #e5e5e5;
|
|
--ring: #22c55e;
|
|
|
|
/* Primary color scale */
|
|
--color-primary-50: #f0fdf4;
|
|
--color-primary-100: #dcfce7;
|
|
--color-primary-200: #bbf7d0;
|
|
--color-primary-300: #86efac;
|
|
--color-primary-400: #4ade80;
|
|
--color-primary-500: #22c55e;
|
|
--color-primary-600: #16a34a;
|
|
--color-primary-700: #15803d;
|
|
--color-primary-800: #166534;
|
|
--color-primary-900: #14532d;
|
|
--color-primary-950: #052e16;
|
|
|
|
/* Secondary color scale (Blue) */
|
|
--color-secondary-50: #eff6ff;
|
|
--color-secondary-100: #dbeafe;
|
|
--color-secondary-200: #bfdbfe;
|
|
--color-secondary-300: #93c5fd;
|
|
--color-secondary-400: #60a5fa;
|
|
--color-secondary-500: #3b82f6;
|
|
--color-secondary-600: #2563eb;
|
|
--color-secondary-700: #1d4ed8;
|
|
--color-secondary-800: #1e40af;
|
|
--color-secondary-900: #1e3a8a;
|
|
--color-secondary-950: #172554;
|
|
|
|
/* Neutral color scale */
|
|
--color-neutral-50: #fafafa;
|
|
--color-neutral-100: #f5f5f5;
|
|
--color-neutral-200: #e5e5e5;
|
|
--color-neutral-300: #d4d4d4;
|
|
--color-neutral-400: #a3a3a3;
|
|
--color-neutral-500: #737373;
|
|
--color-neutral-600: #525252;
|
|
--color-neutral-700: #404040;
|
|
--color-neutral-800: #262626;
|
|
--color-neutral-900: #171717;
|
|
--color-neutral-950: #0a0a0a;
|
|
|
|
/* Status colors */
|
|
--color-success-50: #f0fdf4;
|
|
--color-success-100: #dcfce7;
|
|
--color-success-500: #22c55e;
|
|
--color-success-600: #16a34a;
|
|
--color-success-700: #15803d;
|
|
--color-success-900: #14532d;
|
|
|
|
--color-error-50: #fef2f2;
|
|
--color-error-100: #fee2e2;
|
|
--color-error-500: #ef4444;
|
|
--color-error-600: #dc2626;
|
|
--color-error-700: #b91c1c;
|
|
--color-error-900: #7f1d1d;
|
|
|
|
--color-warning-50: #fffbeb;
|
|
--color-warning-100: #fef3c7;
|
|
--color-warning-500: #f59e0b;
|
|
--color-warning-600: #d97706;
|
|
--color-warning-700: #b45309;
|
|
--color-warning-900: #78350f;
|
|
|
|
--color-info-50: #eff6ff;
|
|
--color-info-100: #dbeafe;
|
|
--color-info-500: #3b82f6;
|
|
--color-info-600: #2563eb;
|
|
--color-info-700: #1d4ed8;
|
|
--color-info-900: #1e3a8a;
|
|
|
|
/* Teal colors */
|
|
--color-teal-50: #f0fdfa;
|
|
--color-teal-100: #ccfbf1;
|
|
--color-teal-200: #99f6e4;
|
|
--color-teal-300: #5eead4;
|
|
--color-teal-400: #2dd4bf;
|
|
--color-teal-500: #14b8a6;
|
|
--color-teal-600: #0d9488;
|
|
--color-teal-700: #0f766e;
|
|
--color-teal-800: #115e59;
|
|
--color-teal-900: #134e4a;
|
|
|
|
/* Dark colors */
|
|
--color-dark-50: #f8fafc;
|
|
--color-dark-100: #f1f5f9;
|
|
--color-dark-200: #e2e8f0;
|
|
--color-dark-300: #cbd5e1;
|
|
--color-dark-400: #94a3b8;
|
|
--color-dark-500: #64748b;
|
|
--color-dark-600: #475569;
|
|
--color-dark-700: #334155;
|
|
--color-dark-800: #1e293b;
|
|
--color-dark-900: #0f172a;
|
|
--color-dark-950: #020617;
|
|
|
|
/* Login specific colors */
|
|
--color-login-primary: #3aea83;
|
|
--color-login-dark-start: #464861;
|
|
--color-login-dark-end: #111628;
|
|
}
|
|
|
|
.dark {
|
|
/* Dark theme colors */
|
|
--background: #020617;
|
|
--foreground: #f8fafc;
|
|
--card: #0f172a;
|
|
--card-foreground: #f8fafc;
|
|
--popover: #0f172a;
|
|
--popover-foreground: #f8fafc;
|
|
--primary: #22c55e;
|
|
--primary-foreground: #0a0a0a;
|
|
--secondary: #1e293b;
|
|
--secondary-foreground: #f8fafc;
|
|
--muted: #1e293b;
|
|
--muted-foreground: #94a3b8;
|
|
--accent: #1e293b;
|
|
--accent-foreground: #f8fafc;
|
|
--destructive: #ef4444;
|
|
--destructive-foreground: #f8fafc;
|
|
--border: #1e293b;
|
|
--input: #1e293b;
|
|
--ring: #22c55e;
|
|
}
|
|
|
|
@layer base {
|
|
* {
|
|
@apply border-border;
|
|
}
|
|
|
|
body {
|
|
@apply bg-background text-foreground;
|
|
}
|
|
|
|
/* Scrollbar styling */
|
|
::-webkit-scrollbar {
|
|
width: 6px;
|
|
height: 6px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
@apply bg-neutral-100 dark:bg-neutral-800;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
@apply bg-neutral-300 dark:bg-neutral-600 rounded-full;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
@apply bg-neutral-400 dark:bg-neutral-500;
|
|
}
|
|
}
|
|
|
|
/* Persian/Farsi font class */
|
|
.font-persian {
|
|
font-family: "Vazirmatn", "Inter", ui-sans-serif, system-ui, sans-serif;
|
|
}
|
|
|
|
/* Custom utility classes */
|
|
.gradient-primary {
|
|
background: linear-gradient(
|
|
135deg,
|
|
var(--color-primary-500) 0%,
|
|
var(--color-primary-600) 100%
|
|
);
|
|
}
|
|
|
|
.gradient-secondary {
|
|
background: linear-gradient(
|
|
135deg,
|
|
var(--color-secondary-500) 0%,
|
|
var(--color-secondary-600) 100%
|
|
);
|
|
}
|
|
|
|
.gradient-background {
|
|
background: linear-gradient(
|
|
135deg,
|
|
var(--color-neutral-50) 0%,
|
|
var(--color-neutral-100) 100%
|
|
);
|
|
}
|
|
|
|
.dark .gradient-background {
|
|
background: linear-gradient(
|
|
135deg,
|
|
var(--color-neutral-900) 0%,
|
|
var(--color-neutral-800) 100%
|
|
);
|
|
}
|
|
|
|
/* Login page specific styles */
|
|
.login-page {
|
|
background: linear-gradient(
|
|
135deg,
|
|
var(--color-login-dark-start) 0%,
|
|
var(--color-login-dark-end) 100%
|
|
);
|
|
}
|
|
|
|
.login-sidebar {
|
|
background: var(--color-login-primary);
|
|
}
|
|
|
|
/* Animation classes */
|
|
.animate-fade-in {
|
|
animation: fadeIn 0.3s ease-in-out;
|
|
}
|
|
|
|
.animate-slide-up {
|
|
animation: slideUp 0.3s ease-out;
|
|
}
|
|
|
|
.animate-slide-down {
|
|
animation: slideDown 0.3s ease-out;
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes slideUp {
|
|
from {
|
|
transform: translateY(10px);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translateY(0);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes slideDown {
|
|
from {
|
|
transform: translateY(-10px);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translateY(0);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
/* Toast customization for RTL */
|
|
.Toaster__toast {
|
|
direction: rtl;
|
|
text-align: right;
|
|
}
|
|
|
|
/* Form focus styles */
|
|
.form-input:focus-within {
|
|
@apply ring-2 ring-primary/20 border-primary;
|
|
}
|
|
|
|
/* Button hover effects */
|
|
.btn-hover-scale:hover {
|
|
transform: scale(1.02);
|
|
transition: transform 0.2s ease-in-out;
|
|
}
|
|
|
|
/* Custom shadows */
|
|
.shadow-primary {
|
|
box-shadow:
|
|
0 4px 6px -1px rgb(34 197 94 / 0.1),
|
|
0 2px 4px -2px rgb(34 197 94 / 0.1);
|
|
}
|
|
|
|
.shadow-error {
|
|
box-shadow:
|
|
0 4px 6px -1px rgb(239 68 68 / 0.1),
|
|
0 2px 4px -2px rgb(239 68 68 / 0.1);
|
|
}
|
|
|
|
/* Loading states */
|
|
.loading-shimmer {
|
|
background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
|
|
background-size: 200% 100%;
|
|
animation: shimmer 1.5s infinite;
|
|
}
|
|
|
|
.dark .loading-shimmer {
|
|
background: linear-gradient(90deg, #2a2a2a 25%, #3a3a3a 50%, #2a2a2a 75%);
|
|
background-size: 200% 100%;
|
|
}
|
|
|
|
@keyframes shimmer {
|
|
0% {
|
|
background-position: -200% 0;
|
|
}
|
|
100% {
|
|
background-position: 200% 0;
|
|
}
|
|
}
|