@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; } }