@import "tailwindcss"; @import url(/font/iranfont.css); @theme { /* 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; --color-pr-green: #3aea83; --color-pr-blue: #69c8ea; --color-pr-red: #f76276; --color-pr-gray: #3f415a; } html, body { @apply bg-background text-foreground; @media (prefers-color-scheme: dark) { color-scheme: dark; } } body { font-family: IRANYekanX; direction: rtl; background-color: #cdcdcd; margin: 0; } h1, h2, h3, h4, h5, h6, input, textarea { font-family: IRANYekanX; } /* 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; --color-green: #3aea83; --color-blue: #69c8ea; --color-red: #f76276; /* primary colors */ --color-pr-gray: #3f415a; --color-pr-green: var(--color-green); /* 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: var(--color-green); --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; } } /* Persian/Farsi font class */ .font-persian { font-family: "IRANYekanX"; } /* 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; } } /* Table/container specific custom dark scrollbar */ .custom-scrollbar { scrollbar-width: thin; /* Firefox */ scrollbar-color: rgba(100, 116, 139, 0.6) transparent; /* thumb track */ } .custom-scrollbar::-webkit-scrollbar { width: 2px; height: 2px; } .custom-scrollbar::-webkit-scrollbar-track { background: rgba(241, 245, 249, 0.6); /* slate-100 */ } .custom-scrollbar::-webkit-scrollbar-thumb { background: linear-gradient( to bottom, rgba(16, 185, 129, 0.6), rgba(16, 185, 129, 0.9) ); /* emerald */ border-radius: 9999px; border: 0.5px solid transparent; background-clip: padding-box; } .custom-scrollbar:hover::-webkit-scrollbar-thumb { } .dark .custom-scrollbar { } .dark .custom-scrollbar::-webkit-scrollbar-track { } .dark .custom-scrollbar::-webkit-scrollbar-thumb { } :root { --form-control-color: #3f415a; --form-control-disabled: ##5f6284; --form-background: #3aea83; } input[type="checkbox"] { -webkit-appearance: none; appearance: none; margin: 0; font: inherit; color: #5f6284; background-color: transparent; width: 1.15em; height: 1.15em; border: 1px solid #5f6284; border-radius: 0.15em; transform: translateY(-0.075em); display: grid; place-content: center; cursor: pointer; } input[type="checkbox"]::before { content: ""; width: 0.65em; height: 0.65em; clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%); transform: scale(0); transform-origin: bottom left; transition: 120ms transform ease-in-out; box-shadow: inset 1em 1em var(--form-control-color); } input[type="checkbox"]:checked::before { transform: scale(1); } input[type="checkbox"]:checked { background-color: #3aea83; border: 1px solid transparent; } input[type="checkbox"]:disabled { --form-control-color: var(--form-control-disabled); color: var(--form-control-disabled); cursor: not-allowed; }