@import "tailwindcss"; /* RTL Support */ [dir="rtl"] { direction: rtl; text-align: right; } /* Custom components */ .btn-primary { background-color: #1743bb; color: white; padding: 0.5rem 1rem; border-radius: 0.5rem; font-weight: 500; transition: all 0.3s ease; display: inline-block; text-decoration: none; border: none; cursor: pointer; } .btn-primary:hover { background-color: #0d47a1; transform: translateY(-2px); box-shadow: 0 4px 8px rgba(23, 67, 187, 0.3); } .btn-outline-primary { border: 1px solid #1743bb; color: #1743bb; padding: 0.5rem 1rem; border-radius: 0.5rem; font-weight: 500; transition: all 0.3s ease; display: inline-block; text-decoration: none; background: transparent; cursor: pointer; } .btn-outline-primary:hover { background-color: #1743bb; color: white; } .card { background: white; border-radius: 0.5rem; box-shadow: 0 2px 15px -3px rgba(0, 0, 0, 0.07), 0 10px 20px -2px rgba(0, 0, 0, 0.04); padding: 1.5rem; } .navbar { display: flex; align-items: center; justify-content: space-between; padding: 1rem 0; border-bottom: 1px solid #e5e7eb; background-color: #f9fafb; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1); } .nav-link { padding: 0.5rem 0.75rem; border-radius: 0.5rem; color: #6b7280; font-weight: 500; transition: all 0.3s ease; text-decoration: none; display: inline-block; } .nav-link:hover { color: #1743bb; background-color: rgba(23, 67, 187, 0.05); } .dropdown-menu { position: absolute; right: 0; margin-top: 0.5rem; width: 12rem; background: white; border-radius: 0.5rem; box-shadow: 0 4px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); border: 1px solid #e5e7eb; padding: 0.5rem 0; z-index: 50; } .dropdown-item { display: block; padding: 0.5rem 1rem; font-size: 0.875rem; color: #374151; transition: background-color 0.2s ease; text-decoration: none; } .dropdown-item:hover { background-color: #f3f4f6; } .form-control { width: 100%; padding: 0.5rem 0.75rem; border: 1px solid #d1d5db; border-radius: 0.5rem; outline: none; transition: all 0.2s ease; } .form-control:focus { outline: none; ring: 2px; ring-color: #1743bb; border-color: transparent; } .form-label { display: block; font-size: 0.875rem; font-weight: 500; color: #374151; margin-bottom: 0.5rem; } .alert { padding: 0.75rem 1rem; border-radius: 0.5rem; border: 1px solid; } .alert-success { background-color: #f0fdf4; border-color: #bbf7d0; color: #166534; } .alert-danger { background-color: #fef2f2; border-color: #fecaca; color: #991b1b; } .alert-warning { background-color: #fffbeb; border-color: #fed7aa; color: #92400e; } .alert-info { background-color: #eff6ff; border-color: #bfdbfe; color: #1e40af; } .spinner-border { display: inline-block; width: 1rem; height: 1rem; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: spin 1s linear infinite; } .spinner-border-sm { width: 0.75rem; height: 0.75rem; } @keyframes spin { to { transform: rotate(360deg); } } .modal { position: fixed; inset: 0; z-index: 50; overflow-y: auto; } .modal-backdrop { position: fixed; inset: 0; background-color: rgba(0, 0, 0, 0.5); } .modal-content { position: relative; background: white; border-radius: 0.5rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); max-width: 32rem; margin: 5rem auto; } .modal-header { display: flex; align-items: center; justify-content: space-between; padding: 1.5rem; border-bottom: 1px solid #e5e7eb; } .modal-body { padding: 1.5rem; } .modal-footer { display: flex; align-items: center; justify-content: flex-end; gap: 0.75rem; padding: 1.5rem; border-top: 1px solid #e5e7eb; } .btn-close { width: 1.5rem; height: 1.5rem; background: transparent; border: none; color: #9ca3af; cursor: pointer; outline: none; } .btn-close:hover { color: #6b7280; } .btn-close::before { content: "×"; font-size: 1.25rem; font-weight: bold; } /* Custom utilities for RTL */ .text-primary { color: #1743bb; } .bg-primary { background-color: #1743bb; } .border-primary { border-color: #1743bb; } .hover\:bg-primary:hover { background-color: #1743bb; } .hover\:text-primary:hover { color: #1743bb; } .focus\:ring-primary:focus { --tw-ring-color: #1743bb; } /* انیمیشن‌های اضافی */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeInLeft { from { opacity: 0; transform: translateX(-30px); } to { opacity: 1; transform: translateX(0); } } @keyframes fadeInRight { from { opacity: 0; transform: translateX(30px); } to { opacity: 1; transform: translateX(0); } } @keyframes scaleIn { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } } /* کلاس‌های انیمیشن */ .animate-fade-in-up { animation: fadeInUp 0.6s ease-out; } .animate-fade-in-left { animation: fadeInLeft 0.6s ease-out; } .animate-fade-in-right { animation: fadeInRight 0.6s ease-out; } .animate-scale-in { animation: scaleIn 0.6s ease-out; } /* بهبود خط‌بندی متن */ .line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } /* بهبود hover effects */ .hover-lift { transition: transform 0.3s ease, box-shadow 0.3s ease; } .hover-lift:hover { transform: translateY(-4px); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } /* بهبود gradient text */ .gradient-text { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* بهبود backdrop blur */ .backdrop-blur-custom { backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); } /* بهبود responsive spacing */ @media (max-width: 640px) { .container { padding-left: 1rem; padding-right: 1rem; } } /* بهبود focus states */ .focus-ring { transition: all 0.2s ease; } .focus-ring:focus { outline: none; ring: 2px; ring-color: #3b82f6; ring-offset: 2px; } /* بهبود loading states */ .loading-shimmer { background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: shimmer 1.5s infinite; } @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }