/* * ملف CSS للدعم العربي وتنسيق RTL - مُحسن * Enhanced RTL support and Arabic language CSS file * WAHBi AI - تحليل العقود والمناقصات */ /* ملف الخطوط العربية */ @import url('https://fonts.googleapis.com/css2?family=Almarai:wght@300;400;700;800&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Tajawal:wght@300;400;500;700;800;900&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Cairo:wght@300;400;500;600;700;800;900;1000&display=swap'); :root { --font-family-primary: 'Almarai', 'Tajawal', sans-serif; --font-family-secondary: 'Tajawal', 'Cairo', sans-serif; --font-family-heading: 'Cairo', 'Almarai', sans-serif; --primary-color: #0B6E4F; --primary-light: rgba(11, 110, 79, 0.1); --primary-gradient: linear-gradient(135deg, #0B6E4F 0%, #08875D 100%); --secondary-color: #08603a; --accent-color: #FFB100; --accent-light: rgba(255, 177, 0, 0.1); --tertiary-color: #5754FF; --quaternary-color: #f43f5e; } /* تطبيق الخطوط العربية وتعديل الاتجاه لجميع العناصر */ body, .main-container, .stApp, .stMarkdown, h1, h2, h3, h4, h5, h6, p, div, input, textarea, select, button, th, td, li, span, a, label { font-family: var(--font-family-primary) !important; direction: rtl !important; text-align: right !important; } /* تنسيقات العناوين */ h1, h2, h3 { font-family: var(--font-family-heading) !important; font-weight: 700 !important; } /* تنسيقات Streamlit */ .stTextInput div, .stTextArea div, .stSelectbox div, .stMultiSelect div, .stNumberInput div, .stDateInput div, .stSlider div, .stFileUploader div { direction: rtl !important; text-align: right !important; } /* تنسيقات الأزرار */ button, div[data-testid="stButton"] { direction: rtl !important; } /* تنسيقات القوائم المنسدلة */ select, option, .stSelectbox div, div[data-baseweb="select"] { text-align: right !important; direction: rtl !important; } /* تعديل الشريط الجانبي لدعم RTL */ .stSidebar .sidebar-content, div[data-testid="stSidebar"] { direction: rtl !important; text-align: right !important; left: auto !important; right: 0 !important; border-left: 1px solid #e6e6e6 !important; border-right: none !important; padding-left: 1rem !important; padding-right: 1rem !important; } .stSidebar div { direction: rtl !important; text-align: right !important; } /* تغيير موضع الشريط الجانبي إلى اليمين */ .stApp .main-container { flex-direction: row-reverse !important; } /* تعديل مربعات الإدخال النصي */ input, textarea, .stTextInput input, .stTextArea textarea { text-align: right !important; direction: rtl !important; padding-right: 10px !important; } /* تنسيقات إضافية لمكتبة streamlit_option_menu */ .nav-link-horizontal, .nav-link { text-align: right !important; direction: rtl !important; } .stOptionMenu div:has(> ul) { direction: rtl !important; } /* قائمة الخيارات */ .stOptionMenu li { text-align: right !important; direction: rtl !important; } /* دعم أيقونات Font Awesome بتنسيق RTL */ .fas, .fa, .far, .fal, .fab { margin-left: 5px !important; margin-right: 0 !important; } /* تعديل الجداول لدعم RTL */ .dataframe, table, div[data-testid="stTable"] { direction: rtl !important; text-align: right !important; } th, td { text-align: right !important; } /* تعديلات لمخططات Plotly بدعم RTL */ .js-plotly-plot .plotly { direction: rtl !important; } /* تعديل رسوم Matplotlib */ .stImage img, div[data-testid="stImage"] { direction: rtl !important; } /* تعديل الإشعارات ورسائل الخطأ */ .stAlert, .stWarning, .stError, .stInfo, .stSuccess { direction: rtl !important; text-align: right !important; border-right: 5px solid var(--primary-color) !important; border-left: none !important; padding-right: 15px !important; } /* تعديل مسافات المحتوى الرئيسي مع الشريط الجانبي */ .main .block-container { padding-right: 2rem !important; padding-left: 1rem !important; max-width: 1200px !important; } /* تعديل أقسام الصفحة */ section[data-testid="stSidebar"] { background: white !important; border-left: 1px solid #f0f0f0 !important; border-right: none !important; } /* تطبيق لون الخلفية الأساسي */ .stApp { background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%) !important; } /* تعديلات التصميم المتجاوب للأجهزة المحمولة */ @media (max-width: 768px) { .main .block-container { padding-right: 1rem !important; padding-left: 1rem !important; } h1 { font-size: 1.8rem !important; } h2 { font-size: 1.4rem !important; } } /* تعديلات خاصة بالعناصر الفردية */ /* قائمة الخيارات الموسعة */ details, summary { direction: rtl !important; text-align: right !important; } /* تعديل الخيارات المتعددة وأزرار الاختيار */ div[role="radiogroup"], div[data-testid="stRadio"], div[data-testid="stCheckbox"] { direction: rtl !important; text-align: right !important; } /* تعديل شريط التمرير والنطاق */ div[data-testid="stSlider"] { direction: rtl !important; } /* معالجة خاصة لعناصر الإشعارات الذكية */ .notification-card { direction: rtl !important; text-align: right !important; border-right: 4px solid var(--primary-color) !important; border-left: none !important; } .stOptionMenu ul { direction: rtl !important; padding-right: 0 !important; } /* تحسين وضوح النص في القائمة */ .stOptionMenu span, .stOptionMenu a, .stOptionMenu div { color: #2C3E50 !important; font-weight: normal !important; } .stOptionMenu [data-baseweb="tab"], .stOptionMenu [data-baseweb="tab-list"] { direction: rtl !important; } /* إصلاح مشكلة النص الأبيض على خلفية بيضاء */ .stOptionMenu { color: var(--gray-800) !important; } .sidebar-menu { color: var(--gray-800) !important; } .stOptionMenu span, .stOptionMenu label, .stOptionMenu div { color: var(--gray-800) !important; text-shadow: none !important; } /* إضافة لون خلفية للقوائم المنسدلة لتحسين التباين */ .sidebar-menu-item { background-color: rgba(240, 242, 245, 0.5) !important; margin-bottom: 4px !important; border-radius: 4px !important; transition: all 0.2s ease-in-out !important; } .sidebar-menu-item:hover { background-color: rgba(222, 226, 230, 0.8) !important; } .sidebar-menu-item.active { background-color: var(--primary-color) !important; color: white !important; } .sidebar-menu-item.active span, .sidebar-menu-item.active label, .sidebar-menu-item.active div { color: white !important; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) !important; } /* تعديل المربعات والبطاقات */ .card, .metric-card, .alert, .callout, .project-card, .list-container, .tab-content { direction: rtl; text-align: right; } /* تعديل أيقونات الكتل */ .block-icon { direction: rtl; } /* تعديل الهوامش للدعم العربي */ h1, h2, h3, h4, h5, h6 { padding-right: 10px; padding-left: 0; margin-right: 0; margin-left: 0; border-right: 4px solid #1E88E5; border-left: none; } .button-icon, .fa, .fas, .far, .fab { margin-left: 0.5rem; margin-right: 0; } /* تعديل عناصر القوائم */ ul, ol { padding-right: 20px; padding-left: 0; } li { direction: rtl; text-align: right; } /* تعديل المسافات البادئة */ .indented { margin-right: 1.5rem; margin-left: 0; } /* تعديل مؤشرات الأرقام والنقاط للقوائم */ ul { list-style-position: inside; } /* تعديل ترتيب الأعمدة في الصفوف المرنة */ .row-flex { flex-direction: row-reverse; } /* تنسيق الاتجاهات للنص في المخططات البيانية */ .plotly-chart text { direction: rtl; } /* تحسين الجداول لدعم RTL */ table { direction: rtl; text-align: right; } /* تعديل علامات التبويب */ .tab-item { margin-left: 0; margin-right: 0; } /* تعديل عناصر التنبيهات والإشعارات */ .alert-icon, .callout-icon { margin-left: 0.8rem; margin-right: 0; } /* تعديل شريط البحث */ .search-icon { left: auto; right: 1rem; } .search-input { padding-left: 1rem; padding-right: 3rem; } /* تنسيق الحوارات والرسائل المنبثقة */ .dialog { direction: rtl; text-align: right; } .dialog-header { flex-direction: row-reverse; } /* تعديل شكل المحادثات ورسائل الدردشة */ .chat-message-incoming { align-self: flex-start; border-bottom-left-radius: 0; border-bottom-right-radius: 10px; } .chat-message-outgoing { align-self: flex-end; border-bottom-right-radius: 0; border-bottom-left-radius: 10px; } .chat-avatar { margin-right: 0; margin-left: 0.8rem; } /* تعديل أشكال نماذج الإدخال */ form { direction: rtl; text-align: right; } /* تعديل أزرار الإرسال والإلغاء */ .form-buttons { flex-direction: row-reverse; } /* تعديل مؤشرات الحالة */ .status-indicator { margin-right: 0; margin-left: 0.5rem; } /* تعديل الشريط العلوي */ .topbar { flex-direction: row-reverse; } /* تعديل شريط المعلومات */ .info-bar { flex-direction: row-reverse; } /* تنسيق الأرقام والتواريخ */ .number, .date { direction: ltr; display: inline-block; } /* تعديل شريط التنقل */ .breadcrumbs { direction: rtl; text-align: right; } .breadcrumbs-separator { transform: rotate(180deg); } /* تعديل أشرطة التقدم والعدادات */ .progress-container { direction: rtl; } /* دعم التمرير في الاتجاه العربي */ .overflow-auto { direction: rtl; } /* تعديل الهوامش للعناصر المتتالية */ .consecutive-items > * + * { margin-right: 1rem; margin-left: 0; } /* تعديل المذكرات والتعليقات الجانبية */ .note, .aside { border-right: 4px solid #ccc; border-left: none; padding-right: 1rem; padding-left: 0; } /* تعديل شكل المشاريع المرتبة */ .project-list-item { padding-right: 0; padding-left: 1rem; } /* تخصيص عناصر Streamlit */ .stButton, .stCheckbox, .stRadio { direction: rtl; text-align: right; } .stExpander { direction: rtl; text-align: right; } .stTabs { direction: rtl; } .stDataFrame { direction: rtl; } .stFileUploader { direction: rtl; } /* تعديل خطوط سير العمل والمخططات الزمنية */ .timeline { direction: rtl; } .timeline-item { padding-right: 2rem; padding-left: 0; border-right: 2px solid #ccc; border-left: none; } .timeline-item::before { right: -8px; left: auto; } /* تعديل مربعات الاختيار ومفاتيح التبديل */ .checkbox-label, .switch-label { padding-right: 2rem; padding-left: 0; } .checkbox-custom, .switch-custom { right: 0; left: auto; } /* تعديل القوائم المنسدلة */ .dropdown-content { text-align: right; } /* تعديل الرسائل التنبيهية */ .toast { right: 1rem; left: auto; } /* تعديل أشرطة التقدم */ .stProgress { direction: rtl; } .stProgress > div > div { direction: rtl; } /* تعديلات خاصة بالمكونات المتقدمة */ /* بطاقات عرض عمليات الحساب والتحليل */ .calculation-card { direction: rtl; text-align: right; border-left: none !important; border-right: var(--border-width-lg) solid var(--primary-color) !important; } .calculation-header { flex-direction: row-reverse; } .calculation-controls { flex-direction: row-reverse; } .calculation-formula { direction: ltr; text-align: left; } /* بطاقات الذكاء الاصطناعي والتحليل الذكي */ .ai-insight-card { direction: rtl; text-align: right; border-left: none !important; border-right: var(--border-width-lg) solid var(--tertiary-color) !important; } .ai-insight-header { flex-direction: row-reverse; } .ai-insight-icon { margin-right: var(--spacing-md); margin-left: 0; } .ai-insight-content { border-left: none; border-right: 3px solid var(--tertiary-color); } .ai-insight-tag { margin-right: var(--spacing-sm); margin-left: 0; } /* محادثة الذكاء الاصطناعي */ .ai-chat-container { direction: rtl; } .ai-chat-messages { direction: rtl; } .ai-message { flex-direction: row-reverse; } .ai-message-avatar, .user-message-avatar { margin-right: var(--spacing-md); margin-left: 0; } .ai-message-content { border-top-left-radius: 0; border-top-right-radius: var(--border-radius); } .user-message-content { border-top-left-radius: 0; border-top-right-radius: var(--border-radius); } .ai-chat-footer { flex-direction: row-reverse; } .ai-chat-input { margin-right: var(--spacing-sm); margin-left: 0; } /* بطاقات المشاريع المحسنة */ .project-card-enhanced { direction: rtl; text-align: right; } .project-card-stats { flex-direction: row-reverse; } .project-tag { margin-right: var(--spacing-sm); margin-left: 0; } /* تصميم المخططات الزمنية */ .timeline-container { direction: rtl; } .timeline-line { right: auto; left: 50px; } .timeline-item { flex-direction: row-reverse; } .timeline-icon { margin-right: var(--spacing-lg); margin-left: 0; } /* واجهة المساعد الذكي */ .assistant-container { flex-direction: row-reverse; } .assistant-history-item { direction: rtl; text-align: right; } /* تعديل الاستيراد */ @media (max-width: 768px) { /* تعديلات للأجهزة الصغيرة */ .sidebar-menu-item { padding-right: 0.5rem; padding-left: 0.5rem; } .timeline-icon { margin-right: 0; margin-bottom: var(--spacing-sm); } .timeline-line { left: 20px; right: auto; } } /* جداول تحليل المناقصات والعقود */ .tender-table { width: 100%; direction: rtl; border-collapse: separate; border-spacing: 0; margin-bottom: 2rem; } .tender-table th { background-color: var(--primary-color); color: white; text-align: right; padding: 0.8rem 1rem; font-weight: 700; position: sticky; top: 0; z-index: 10; } .tender-table tr:nth-child(even) { background-color: rgba(11, 110, 79, 0.05); } .tender-table td { padding: 0.8rem 1rem; text-align: right; border-bottom: 1px solid rgba(0, 0, 0, 0.05); } .tender-table tr:hover { background-color: rgba(11, 110, 79, 0.1); } /* تصميم عناصر تحليل البنود */ .item-analysis-container { direction: rtl; text-align: right; } .item-analysis-card { background-color: white; border-radius: 8px; border-right: 4px solid var(--primary-color); border-left: none; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); padding: 1.5rem; margin-bottom: 1.5rem; transition: transform 0.3s ease; } .item-analysis-card:hover { transform: translateY(-5px); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1); } .item-analysis-header { display: flex; flex-direction: row-reverse; justify-content: space-between; margin-bottom: 1rem; padding-bottom: 0.8rem; border-bottom: 1px solid rgba(0, 0, 0, 0.1); } .item-analysis-title { font-size: 1.2rem; font-weight: 700; color: var(--primary-color); } .item-analysis-badge { font-size: 0.8rem; font-weight: 500; padding: 0.3rem 0.8rem; border-radius: 20px; } .item-analysis-badge-high { background-color: rgba(239, 68, 68, 0.1); color: #DC2626; } .item-analysis-badge-medium { background-color: rgba(245, 158, 11, 0.1); color: #D97706; } .item-analysis-badge-low { background-color: rgba(16, 185, 129, 0.1); color: #059669; } .item-details { display: flex; flex-direction: column; gap: 0.8rem; } .item-detail-row { display: flex; flex-direction: row-reverse; justify-content: space-between; } .item-detail-label { font-weight: 600; font-size: 0.9rem; color: #4B5563; } .item-detail-value { font-weight: 400; font-size: 0.9rem; } /* تصميم مقارنة الأسعار */ .price-comparison-chart { direction: rtl; text-align: right; background-color: white; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); padding: 1.5rem; margin-bottom: 2rem; } .price-comparison-title { font-size: 1.2rem; font-weight: 700; color: var(--primary-color); margin-bottom: 1rem; } .price-legend { display: flex; flex-direction: row-reverse; gap: 1.5rem; margin-top: 1rem; } .price-legend-item { display: flex; flex-direction: row-reverse; align-items: center; gap: 0.5rem; } .price-legend-color { width: 12px; height: 12px; border-radius: 2px; } .price-legend-label { font-size: 0.8rem; color: #4B5563; } /* تصميم تحليل المخاطر */ .risk-analysis-section { direction: rtl; text-align: right; } .risk-category { margin-bottom: 1.5rem; } .risk-category-header { background-color: white; padding: 1rem 1.5rem; border-radius: 8px; display: flex; flex-direction: row-reverse; justify-content: space-between; align-items: center; margin-bottom: 1rem; cursor: pointer; } .risk-category-icon { width: 24px; height: 24px; border-radius: 50%; display: flex; justify-content: center; align-items: center; margin-left: 0.8rem; margin-right: 0; color: white; } .risk-category-title { font-weight: 700; font-size: 1rem; } .risk-items { background-color: white; border-radius: 8px; padding: 1rem; margin-right: 2rem; margin-left: 0; } .risk-item { padding: 1rem; border-right: 3px solid; border-left: none; margin-bottom: 1rem; border-radius: 0 4px 4px 0; } .risk-item-high { border-right-color: #DC2626; background-color: rgba(239, 68, 68, 0.05); } .risk-item-medium { border-right-color: #D97706; background-color: rgba(245, 158, 11, 0.05); } .risk-item-low { border-right-color: #059669; background-color: rgba(16, 185, 129, 0.05); } .risk-item-title { font-weight: 600; font-size: 0.95rem; margin-bottom: 0.5rem; } .risk-item-description { font-size: 0.85rem; color: #4B5563; } /* تصميم عناصر التقارير */ .report-container { direction: rtl; text-align: right; } .report-header { background-color: white; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); padding: 2rem; margin-bottom: 2rem; text-align: center; } .report-title { font-size: 1.5rem; font-weight: 800; color: var(--primary-color); margin-bottom: 0.5rem; } .report-subtitle { font-size: 1rem; color: #6B7280; margin-bottom: 1.5rem; } .report-metadata { display: flex; flex-direction: row-reverse; justify-content: center; gap: 3rem; margin-top: 1.5rem; } .report-metadata-item { display: flex; flex-direction: column; align-items: center; } .report-metadata-label { font-size: 0.8rem; color: #9CA3AF; margin-bottom: 0.3rem; } .report-metadata-value { font-weight: 700; font-size: 1rem; color: #1F2937; }