/* * ملف CSS الرئيسي لنظام واهبي لتحليل العقود والمناقصات * Main CSS file for WAHBI Tender Analysis System */ /* ================= المتغيرات العامة ================= */ :root { /* الألوان الرئيسية */ --primary-color: #0B6E4F; --primary-light: #08875D; --primary-dark: #085F45; --secondary-color: #E8F5F0; --accent-color: #FFB100; --accent-light: #FFCB52; --accent-dark: #E69D00; --tertiary-color: #5754FF; --tertiary-light: #7A78FF; --tertiary-dark: #4240D4; /* ألوان حالات التطبيق */ --success-color: #10B981; --success-light: #D1FAE5; --success-dark: #059669; --warning-color: #F59E0B; --warning-light: #FEF3C7; --warning-dark: #D97706; --danger-color: #EF4444; --danger-light: #FEE2E2; --danger-dark: #DC2626; --info-color: #3B82F6; --info-light: #DBEAFE; --info-dark: #2563EB; /* التدرجات اللونية */ --primary-gradient: linear-gradient(135deg, #0B6E4F 0%, #08875D 100%); --success-gradient: linear-gradient(135deg, #10B981 0%, #059669 100%); --danger-gradient: linear-gradient(135deg, #EF4444 0%, #DC2626 100%); --warning-gradient: linear-gradient(135deg, #F59E0B 0%, #D97706 100%); --info-gradient: linear-gradient(135deg, #3B82F6 0%, #2563EB 100%); --accent-gradient: linear-gradient(135deg, #FFB100 0%, #E69D00 100%); --tertiary-gradient: linear-gradient(135deg, #5754FF 0%, #4240D4 100%); --glass-gradient: linear-gradient(135deg, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0.2) 100%); /* ألوان RGB للاستخدام في الشفافية */ --primary-color-rgb: 11, 110, 79; --primary-light-rgb: 8, 135, 93; --primary-dark-rgb: 8, 95, 69; --secondary-color-rgb: 232, 245, 240; --accent-color-rgb: 255, 177, 0; --accent-light-rgb: 255, 203, 82; --accent-dark-rgb: 230, 157, 0; --tertiary-color-rgb: 87, 84, 255; --tertiary-light-rgb: 122, 120, 255; --tertiary-dark-rgb: 66, 64, 212; --success-color-rgb: 16, 185, 129; --success-light-rgb: 209, 250, 229; --success-dark-rgb: 5, 150, 105; --warning-color-rgb: 245, 158, 11; --warning-light-rgb: 254, 243, 199; --warning-dark-rgb: 217, 119, 6; --danger-color-rgb: 239, 68, 68; --danger-light-rgb: 254, 226, 226; --danger-dark-rgb: 220, 38, 38; --info-color-rgb: 59, 130, 246; --info-light-rgb: 219, 234, 254; --info-dark-rgb: 37, 99, 235; /* ألوان محددة لمختلف الأقسام */ --pricing-color: #0B6E4F; --pricing-color-rgb: 11, 110, 79; --contract-color: #10B981; --contract-color-rgb: 16, 185, 129; --risk-color: #EF4444; --risk-color-rgb: 239, 68, 68; --map-color: #F59E0B; --map-color-rgb: 245, 158, 11; --notification-color: #5754FF; --notification-color-rgb: 87, 84, 255; --tracker-color: #08875D; --tracker-color-rgb: 8, 135, 93; --resources-color: #FFB100; --resources-color-rgb: 255, 177, 0; --assistant-color: #5754FF; --assistant-color-rgb: 87, 84, 255; /* ألوان التدرج الرمادي */ --gray-50: #f9fafb; --gray-100: #f3f4f6; --gray-200: #e5e7eb; --gray-300: #d1d5db; --gray-400: #9ca3af; --gray-500: #6b7280; --gray-600: #4b5563; --gray-700: #374151; --gray-800: #1f2937; --gray-900: #111827; /* خصائص الخط */ --font-family: 'Tajawal', 'Cairo', sans-serif; --font-size-base: 16px; --font-size-xs: 0.75rem; --font-size-sm: 0.875rem; --font-size-md: 1rem; --font-size-lg: 1.125rem; --font-size-xl: 1.25rem; --font-size-2xl: 1.5rem; --font-size-3xl: 1.875rem; --font-size-4xl: 2.25rem; --font-size-5xl: 3rem; /* أوزان الخط */ --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; --font-weight-extrabold: 800; /* المسافات */ --spacing-xs: 0.25rem; --spacing-sm: 0.5rem; --spacing-md: 1rem; --spacing-lg: 1.5rem; --spacing-xl: 2rem; --spacing-2xl: 3rem; --spacing-3xl: 4rem; /* الظلال */ --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.05); --shadow: 0 4px 6px rgba(0, 0, 0, 0.1); --shadow-md: 0 6px 10px rgba(0, 0, 0, 0.1); --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1); --shadow-xl: 0 15px 20px rgba(0, 0, 0, 0.1); --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1); --shadow-hover: 0 8px 15px rgba(0, 0, 0, 0.1); --shadow-colored-sm: 0 2px 4px rgba(11, 110, 79, 0.1); --shadow-colored-md: 0 6px 12px rgba(11, 110, 79, 0.15); --shadow-inset: inset 0 2px 4px rgba(0, 0, 0, 0.05); /* الحدود المستديرة */ --border-radius-xs: 2px; --border-radius-sm: 4px; --border-radius: 8px; --border-radius-lg: 12px; --border-radius-xl: 16px; --border-radius-2xl: 24px; --border-radius-circle: 50%; --border-radius-pill: 9999px; /* حدود العناصر */ --border-width: 1px; --border-width-md: 2px; --border-width-lg: 3px; --border-color: var(--gray-200); --border-color-dark: var(--gray-300); /* التحولات والتأثيرات */ --transition-fast: 150ms; --transition-normal: 300ms; --transition-slow: 500ms; --transition-property: all; --transition-timing: cubic-bezier(0.4, 0, 0.2, 1); /* تأثيرات متنوعة */ --blur-sm: blur(4px); --blur-md: blur(8px); --blur-lg: blur(16px); --backdrop-blur: blur(10px); /* مسافات متباعدة */ --letter-spacing-tight: -0.025em; --letter-spacing-normal: 0em; --letter-spacing-wide: 0.025em; /* حجم الخط حسب الموضوع */ --heading-line-height: 1.2; --body-line-height: 1.5; /* تنسيقات طباعة عامة لأجزاء مختلفة من الواجهة */ --container-padding: var(--spacing-lg); --section-spacing: var(--spacing-xl); --card-padding: var(--spacing-lg); } /* ================= أساسيات النمط ================= */ html, body { font-family: var(--font-family); font-size: var(--font-size-base); color: var(--gray-800); line-height: 1.5; background-color: #f8f9fa; margin: 0; padding: 0; } h1, h2, h3, h4, h5, h6 { font-weight: 700; margin-top: 0; margin-bottom: var(--spacing-md); color: var(--gray-900); } h1 { font-size: var(--font-size-2xl); } h2 { font-size: var(--font-size-xl); } h3 { font-size: var(--font-size-lg); } p { margin-top: 0; margin-bottom: var(--spacing-md); } a { color: var(--primary-color); text-decoration: none; transition: color 0.2s; } a:hover { color: var(--primary-dark); text-decoration: underline; } img { max-width: 100%; height: auto; } /* ================= تخصيص Streamlit ================= */ /* إخفاء شريط Streamlit الافتراضي */ .reportview-container .main .block-container { padding-top: 1rem; padding-left: 1.5rem; padding-right: 1.5rem; padding-bottom: 1rem; } .reportview-container { background-color: #f8f9fa; } /* ضبط تباعد الصفحة */ .block-container { padding: var(--spacing-lg) !important; } /* تخصيص الهامش العلوي لتجنب التداخل مع شريط الهيدر */ .main .block-container { margin-top: 2rem; } /* تحسين الهوامش ومظهر الأزرار */ .stButton>button { background-color: var(--primary-color); color: white !important; /* ضمان ظهور النص بالأبيض */ border: none; border-radius: var(--border-radius); padding: 0.5rem 1rem; font-weight: 500; box-shadow: var(--shadow-sm); transition: all 0.3s ease; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); /* إضافة ظل للنص لتحسين القراءة */ } .stButton>button:hover { background-color: var(--primary-dark); box-shadow: var(--shadow); transform: translateY(-2px); } /* شريط الشاشة الجانبي */ .css-1d391kg, .css-12oz5g7 { background-color: white; border-right: 1px solid var(--gray-200); } /* مربعات النصوص والإدخال */ .stTextInput>div>div>input { border: 1px solid var(--gray-300); border-radius: var(--border-radius); padding: 0.5rem; transition: border-color 0.3s; } .stTextInput>div>div>input:focus { border-color: var(--primary-color); box-shadow: 0 0 0 2px rgba(30, 136, 229, 0.2); } /* القوائم المنسدلة */ .stSelectbox>div>div>div { border: 1px solid var(--gray-300); border-radius: var(--border-radius); } /* مربعات الاختيار */ .stCheckbox>div>div>label { display: flex; align-items: center; } .stCheckbox>div>div>label>div { margin-right: 0.5rem; } /* ================= مكونات واجهة المستخدم ================= */ /* البطاقات */ .card { background-color: white; border-radius: var(--border-radius); padding: var(--spacing-lg); box-shadow: var(--shadow); margin-bottom: var(--spacing-lg); transition: all 0.3s ease; } .card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); } /* بطاقات المؤشرات والإحصائيات */ .metric-card { background-color: white; border-radius: var(--border-radius); padding: var(--spacing-lg); box-shadow: var(--shadow); margin-bottom: var(--spacing-lg); display: flex; flex-direction: column; align-items: center; text-align: center; } .metric-value { font-size: var(--font-size-2xl); font-weight: 700; color: var(--primary-color); margin-bottom: var(--spacing-xs); } .metric-label { font-size: var(--font-size-sm); color: var(--gray-600); } /* أزرار بالألوان المختلفة */ .button-primary { background-color: var(--primary-color); color: white; } .button-secondary { background-color: white; color: var(--primary-color); border: 1px solid var(--primary-color); } .button-success { background-color: var(--success-color); color: white; } .button-warning { background-color: var(--warning-color); color: white; } .button-danger { background-color: var(--danger-color); color: white; } /* الشريط العلوي */ .header { background-color: white; box-shadow: var(--shadow); padding: var(--spacing-md) var(--spacing-lg); display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--spacing-lg); } .header-logo { display: flex; align-items: center; } .header-logo img { height: 40px; margin-left: var(--spacing-md); } .header-title { font-size: var(--font-size-lg); font-weight: 700; color: var(--primary-color); margin: 0; } .header-nav { display: flex; align-items: center; } .header-nav-item { margin-left: var(--spacing-md); font-size: var(--font-size-sm); color: var(--gray-600); text-decoration: none; transition: color 0.2s; } .header-nav-item:hover { color: var(--primary-color); } /* التنبيهات والإشعارات */ .alert { padding: var(--spacing-md); border-radius: var(--border-radius); margin-bottom: var(--spacing-lg); display: flex; align-items: flex-start; } .alert-info { background-color: var(--secondary-color); border-right: 4px solid var(--info-color); } .alert-success { background-color: var(--success-light); border-right: 4px solid var(--success-color); } .alert-warning { background-color: var(--warning-light); border-right: 4px solid var(--warning-color); } .alert-danger { background-color: var(--danger-light); border-right: 4px solid var(--danger-color); } .alert-icon { margin-left: var(--spacing-md); } .alert-content { flex: 1; } .alert-title { font-weight: 700; margin-bottom: var(--spacing-xs); } .alert-message { margin: 0; } /* الجداول */ .table { width: 100%; border-collapse: collapse; margin-bottom: var(--spacing-lg); } .table th { background-color: var(--primary-color); color: white; padding: var(--spacing-md); text-align: right; } .table td { padding: var(--spacing-md); border-bottom: 1px solid var(--gray-200); } .table tr:nth-child(even) { background-color: var(--gray-100); } .table tr:hover { background-color: var(--secondary-color); } /* مربعات البحث */ .search-container { position: relative; margin-bottom: var(--spacing-md); } .search-input { width: 100%; padding: var(--spacing-md); padding-right: 2.5rem; border: 1px solid var(--gray-300); border-radius: var(--border-radius); transition: all 0.3s ease; } .search-input:focus { border-color: var(--primary-color); box-shadow: 0 0 0 2px rgba(30, 136, 229, 0.2); outline: none; } .search-icon { position: absolute; top: 50%; right: var(--spacing-md); transform: translateY(-50%); color: var(--gray-500); } /* أشرطة التقدم */ .progress-container { width: 100%; height: 10px; background-color: var(--gray-200); border-radius: 10px; overflow: hidden; margin-bottom: var(--spacing-md); } .progress-bar { height: 100%; border-radius: 10px; transition: width 0.3s; } .progress-primary { background-color: var(--primary-color); } .progress-success { background-color: var(--success-color); } .progress-warning { background-color: var(--warning-color); } .progress-danger { background-color: var(--danger-color); } /* بطاقات المشروع */ .project-card { background-color: white; border-radius: var(--border-radius); padding: var(--spacing-lg); box-shadow: var(--shadow); margin-bottom: var(--spacing-lg); position: relative; transition: all 0.3s ease; } .project-card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); } .project-card::before { content: ''; position: absolute; top: 0; right: 0; height: 100%; width: 4px; background-color: var(--primary-color); border-radius: 0 var(--border-radius) var(--border-radius) 0; } .project-title { font-size: var(--font-size-lg); font-weight: 700; margin-bottom: var(--spacing-sm); } .project-description { color: var(--gray-600); margin-bottom: var(--spacing-md); } .project-meta { display: flex; align-items: center; margin-bottom: var(--spacing-sm); } .project-meta-label { font-weight: 500; margin-left: var(--spacing-sm); color: var(--gray-700); } .project-meta-value { color: var(--gray-600); } .project-footer { display: flex; justify-content: space-between; align-items: center; margin-top: var(--spacing-md); padding-top: var(--spacing-md); border-top: 1px solid var(--gray-200); } /* ثيمات خاصة بأنواع المشاريع */ .project-card.high-priority::before { background-color: var(--danger-color); } .project-card.medium-priority::before { background-color: var(--warning-color); } .project-card.low-priority::before { background-color: var(--success-color); } /* قسم الإجراءات */ .actions-container { display: flex; gap: var(--spacing-md); margin-bottom: var(--spacing-lg); } /* علامات التبويب */ .tabs { display: flex; border-bottom: 1px solid var(--gray-300); margin-bottom: var(--spacing-lg); } .tab-item { padding: var(--spacing-md); cursor: pointer; position: relative; font-weight: 500; color: var(--gray-600); transition: color 0.3s; } .tab-item.active { color: var(--primary-color); } .tab-item.active::after { content: ''; position: absolute; bottom: -1px; right: 0; width: 100%; height: 2px; background-color: var(--primary-color); } .tab-content { display: none; } .tab-content.active { display: block; } /* وحدات نظام واهبي */ .module-card { background-color: white; border-radius: var(--border-radius); padding: var(--spacing-lg); box-shadow: var(--shadow); margin-bottom: var(--spacing-lg); transition: all 0.3s ease; display: flex; flex-direction: column; height: 100%; } .module-card:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); } .module-icon { width: 50px; height: 50px; background-color: var(--secondary-color); border-radius: var(--border-radius-circle); display: flex; align-items: center; justify-content: center; margin-bottom: var(--spacing-md); color: var(--primary-color); font-size: 1.5rem; } .module-title { font-size: var(--font-size-lg); font-weight: 700; margin-bottom: var(--spacing-sm); } .module-description { color: var(--gray-600); margin-bottom: var(--spacing-md); flex: 1; } /* عناصر التحليل والخرائط البيانية */ .chart-container { background-color: white; border-radius: var(--border-radius); padding: var(--spacing-lg); box-shadow: var(--shadow); margin-bottom: var(--spacing-lg); position: relative; overflow: hidden; transition: all var(--transition-normal) var(--transition-timing); } .chart-container:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); } .chart-container::after { content: ''; position: absolute; top: 0; right: 0; width: 4px; height: 100%; background: var(--primary-gradient); opacity: 0.7; } .chart-title { font-size: var(--font-size-lg); font-weight: var(--font-weight-bold); margin-bottom: var(--spacing-sm); color: var(--gray-900); border-bottom: 1px solid var(--gray-200); padding-bottom: var(--spacing-sm); text-align: center; } .chart-description { color: var(--gray-600); margin-bottom: var(--spacing-md); text-align: center; font-size: var(--font-size-sm); } .chart-controls { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-md); } .chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--spacing-sm); margin-top: var(--spacing-md); } .chart-legend-item { display: flex; align-items: center; margin-left: var(--spacing-sm); } .chart-legend-color { width: 12px; height: 12px; border-radius: var(--border-radius-sm); margin-left: var(--spacing-xs); } .chart-legend-label { font-size: var(--font-size-xs); color: var(--gray-700); } .chart-tooltip { background-color: rgba(0, 0, 0, 0.8); color: white; padding: var(--spacing-sm); border-radius: var(--border-radius-sm); font-size: var(--font-size-xs); max-width: 200px; z-index: 10; } .chart-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: var(--spacing-lg); } .chart-tabs { display: flex; border-bottom: 1px solid var(--gray-200); margin-bottom: var(--spacing-md); } .chart-tab { padding: var(--spacing-sm) var(--spacing-md); cursor: pointer; transition: all var(--transition-normal); font-size: var(--font-size-sm); color: var(--gray-600); border-bottom: 2px solid transparent; } .chart-tab:hover { color: var(--primary-color); } .chart-tab.active { color: var(--primary-color); border-bottom-color: var(--primary-color); font-weight: var(--font-weight-medium); } .chart-statistics { display: flex; justify-content: space-evenly; margin-bottom: var(--spacing-md); } .chart-statistic { text-align: center; padding: var(--spacing-sm); } .chart-statistic-value { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); color: var(--primary-color); margin-bottom: var(--spacing-xs); } .chart-statistic-label { font-size: var(--font-size-xs); color: var(--gray-600); } .chart-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(255, 255, 255, 0.7); display: flex; align-items: center; justify-content: center; z-index: 2; } .chart-empty { text-align: center; padding: var(--spacing-lg); color: var(--gray-500); } .chart-loading { width: 40px; height: 40px; border: 3px solid var(--gray-200); border-top-color: var(--primary-color); border-radius: 50%; animation: chart-loading-spin 1s linear infinite; } @keyframes chart-loading-spin { to { transform: rotate(360deg); } } .chart-mini { height: 100px; margin-bottom: var(--spacing-sm); } .chart-mini .chart-title { font-size: var(--font-size-sm); margin-bottom: var(--spacing-xs); text-align: right; padding-bottom: var(--spacing-xs); } .chart-card { background: white; border-radius: var(--border-radius); box-shadow: var(--shadow-card); padding: var(--spacing-md); margin-bottom: var(--spacing-md); position: relative; overflow: hidden; } /* عناصر تصميم خريطة المشروع */ .map-container { background-color: white; border-radius: var(--border-radius); padding: var(--spacing-lg); box-shadow: var(--shadow); margin-bottom: var(--spacing-lg); height: 400px; position: relative; } /* تصميم صفحة التفاصيل */ .detail-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-lg); } .detail-title { font-size: var(--font-size-xl); font-weight: 700; margin: 0; } .detail-actions { display: flex; gap: var(--spacing-sm); } .detail-section { margin-bottom: var(--spacing-xl); } .detail-section-title { font-size: var(--font-size-lg); font-weight: 700; margin-bottom: var(--spacing-md); padding-bottom: var(--spacing-sm); border-bottom: 1px solid var(--gray-200); } /* تنسيق صغحة 404 والأخطاء */ .error-container { text-align: center; padding: var(--spacing-2xl); } .error-code { font-size: 5rem; font-weight: 700; color: var(--primary-color); margin-bottom: var(--spacing-md); } .error-title { font-size: var(--font-size-xl); margin-bottom: var(--spacing-md); } .error-description { color: var(--gray-600); max-width: 500px; margin: 0 auto var(--spacing-lg); } /* ================= مكونات واجهة المستخدم المتقدمة ================= */ /* بطاقات عرض عمليات الحساب والتحليل */ .calculation-card { background-color: white; border-radius: var(--border-radius); padding: var(--spacing-lg); box-shadow: var(--shadow-card); margin-bottom: var(--spacing-lg); position: relative; border-right: var(--border-width-lg) solid var(--primary-color); } .calculation-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-md); padding-bottom: var(--spacing-md); border-bottom: 1px solid var(--border-color); } .calculation-title { font-size: var(--font-size-lg); font-weight: var(--font-weight-bold); color: var(--gray-800); } .calculation-controls { display: flex; gap: var(--spacing-sm); } .calculation-control-button { background-color: var(--gray-100); border: none; border-radius: var(--border-radius-sm); padding: var(--spacing-xs) var(--spacing-sm); color: var(--gray-700); cursor: pointer; transition: background-color var(--transition-normal); } .calculation-control-button:hover { background-color: var(--gray-200); } .calculation-content { margin-bottom: var(--spacing-md); } .calculation-formula { font-family: monospace; background-color: var(--gray-100); padding: var(--spacing-md); border-radius: var(--border-radius-sm); margin-bottom: var(--spacing-md); white-space: pre-wrap; color: var(--gray-800); direction: ltr; /* للصيغ الرياضية */ text-align: left; } .calculation-result { font-weight: var(--font-weight-bold); color: var(--primary-color); font-size: var(--font-size-lg); padding: var(--spacing-md); background-color: var(--secondary-color); border-radius: var(--border-radius-sm); } /* بطاقات الذكاء الاصطناعي والتحليل الذكي */ .ai-insight-card { background-color: white; border-radius: var(--border-radius); padding: var(--spacing-lg); box-shadow: var(--shadow-card); margin-bottom: var(--spacing-lg); position: relative; border-right: var(--border-width-lg) solid var(--tertiary-color); } .ai-insight-header { display: flex; align-items: center; margin-bottom: var(--spacing-md); } .ai-insight-icon { width: 32px; height: 32px; background-color: var(--tertiary-light); border-radius: var(--border-radius-circle); display: flex; align-items: center; justify-content: center; margin-left: var(--spacing-md); color: white; } .ai-insight-title { font-size: var(--font-size-lg); font-weight: var(--font-weight-bold); color: var(--tertiary-color); } .ai-insight-content { padding: var(--spacing-md); border-right: 3px solid var(--tertiary-color); margin-bottom: var(--spacing-md); background-color: var(--gray-50); border-radius: var(--border-radius-sm); } .ai-insight-tag { display: inline-block; background-color: var(--tertiary-light); color: white; font-size: var(--font-size-xs); padding: 2px var(--spacing-sm); border-radius: var(--border-radius-pill); margin-left: var(--spacing-sm); margin-bottom: var(--spacing-sm); } /* محادثة الذكاء الاصطناعي */ .ai-chat-container { background-color: white; border-radius: var(--border-radius); box-shadow: var(--shadow-card); margin-bottom: var(--spacing-lg); max-height: 600px; display: flex; flex-direction: column; } .ai-chat-header { padding: var(--spacing-md); border-bottom: 1px solid var(--border-color); display: flex; align-items: center; } .ai-chat-title { font-weight: var(--font-weight-semibold); color: var(--gray-800); margin: 0; } .ai-chat-messages { padding: var(--spacing-md); overflow-y: auto; flex: 1; } .ai-message { display: flex; margin-bottom: var(--spacing-md); } .ai-message-avatar { width: 36px; height: 36px; border-radius: var(--border-radius-circle); background-color: var(--tertiary-color); display: flex; align-items: center; justify-content: center; color: white; margin-left: var(--spacing-md); font-size: var(--font-size-xs); flex-shrink: 0; } .user-message-avatar { width: 36px; height: 36px; border-radius: var(--border-radius-circle); background-color: var(--primary-color); display: flex; align-items: center; justify-content: center; color: white; margin-left: var(--spacing-md); font-size: var(--font-size-xs); flex-shrink: 0; } .ai-message-content { background-color: var(--gray-100); padding: var(--spacing-md); border-radius: var(--border-radius); max-width: 80%; border-top-right-radius: 0; } .user-message-content { background-color: var(--primary-light); color: white; padding: var(--spacing-md); border-radius: var(--border-radius); max-width: 80%; border-top-right-radius: 0; } .ai-chat-footer { padding: var(--spacing-md); border-top: 1px solid var(--border-color); display: flex; } .ai-chat-input { flex: 1; padding: var(--spacing-sm) var(--spacing-md); border: 1px solid var(--border-color); border-radius: var(--border-radius-pill); margin-left: var(--spacing-sm); } .ai-chat-send { background-color: var(--primary-color); color: white; border: none; border-radius: var(--border-radius-pill); padding: var(--spacing-sm) var(--spacing-md); cursor: pointer; } /* بطاقات المشاريع المحسنة */ .project-card-enhanced { background-color: white; border-radius: var(--border-radius); box-shadow: var(--shadow-card); margin-bottom: var(--spacing-lg); position: relative; overflow: hidden; } .project-card-header { padding: var(--spacing-lg); background: var(--primary-gradient); color: white; } .project-card-title { font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); margin-bottom: var(--spacing-xs); } .project-card-subtitle { font-size: var(--font-size-sm); opacity: 0.9; } .project-card-body { padding: var(--spacing-lg); } .project-card-stats { display: flex; gap: var(--spacing-md); margin-bottom: var(--spacing-md); } .project-card-stat { flex: 1; text-align: center; padding: var(--spacing-sm); background-color: var(--gray-50); border-radius: var(--border-radius-sm); } .project-card-stat-value { font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); color: var(--primary-color); } .project-card-stat-label { font-size: var(--font-size-xs); color: var(--gray-600); } .project-card-content { margin-bottom: var(--spacing-md); } .project-card-footer { border-top: 1px solid var(--border-color); padding-top: var(--spacing-md); display: flex; justify-content: space-between; align-items: center; } .project-tag { display: inline-block; background-color: var(--primary-light); color: white; font-size: var(--font-size-xs); padding: 2px var(--spacing-sm); border-radius: var(--border-radius-pill); margin-left: var(--spacing-sm); margin-bottom: var(--spacing-sm); } /* تصميم المخططات الزمنية */ .timeline-container { padding: var(--spacing-lg); position: relative; } .timeline-line { position: absolute; top: 0; right: 50px; width: 4px; height: 100%; background-color: var(--gray-200); } .timeline-item { display: flex; margin-bottom: var(--spacing-xl); position: relative; } .timeline-icon { width: 40px; height: 40px; background-color: var(--primary-color); border-radius: var(--border-radius-circle); display: flex; align-items: center; justify-content: center; color: white; margin-left: var(--spacing-lg); z-index: 1; position: relative; } .timeline-content { background-color: white; padding: var(--spacing-md); border-radius: var(--border-radius); box-shadow: var(--shadow-card); flex: 1; } .timeline-date { font-size: var(--font-size-sm); color: var(--gray-600); margin-bottom: var(--spacing-xs); } .timeline-title { font-weight: var(--font-weight-bold); color: var(--gray-800); margin-bottom: var(--spacing-xs); } .timeline-description { color: var(--gray-700); } /* واجهة المساعد الذكي */ .assistant-container { display: flex; gap: var(--spacing-lg); margin-bottom: var(--spacing-lg); } .assistant-sidebar { width: 280px; background-color: white; border-radius: var(--border-radius); box-shadow: var(--shadow-card); padding: var(--spacing-md); } .assistant-main { flex: 1; background-color: white; border-radius: var(--border-radius); box-shadow: var(--shadow-card); padding: var(--spacing-md); } .assistant-history-item { padding: var(--spacing-sm); margin-bottom: var(--spacing-sm); border-radius: var(--border-radius-sm); cursor: pointer; transition: background-color var(--transition-normal); } .assistant-history-item:hover { background-color: var(--gray-100); } .assistant-history-item.active { background-color: var(--primary-light); color: white; } /* ================= تطبيق الاستجابة لمختلف الأجهزة ================= */ @media screen and (max-width: 992px) { :root { --font-size-base: 14px; } .header { flex-direction: column; align-items: flex-start; } .header-nav { margin-top: var(--spacing-md); } .assistant-container { flex-direction: column; } .assistant-sidebar { width: 100%; margin-bottom: var(--spacing-md); } .project-card-stats { flex-direction: column; gap: var(--spacing-sm); } } @media screen and (max-width: 768px) { .actions-container { flex-direction: column; } .project-meta { flex-direction: column; align-items: flex-start; } .project-footer { flex-direction: column; align-items: flex-start; } .calculation-header { flex-direction: column; align-items: flex-start; } .calculation-controls { margin-top: var(--spacing-sm); } .timeline-item { flex-direction: column; } .timeline-icon { margin-bottom: var(--spacing-sm); margin-left: 0; } .timeline-line { right: 20px; } } @media screen and (max-width: 576px) { .detail-header { flex-direction: column; align-items: flex-start; } .detail-actions { margin-top: var(--spacing-md); } .ai-message-content, .user-message-content { max-width: 100%; } }