v3 / utils /css /rtl.css
EGYADMIN's picture
Upload 113 files
3d20a1c verified
/*
* ملف 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;
}