/* ================= المتغيرات الأساسية (عشان الألوان تبقى موحدة) ================= */ :root { --bg-color: #05080f; --surface-color: #0b1221; --border-color: #1a2333; --text-main: #ffffff; --text-muted: #94a3b8; --primary-color: #00c2b8; --primary-hover: #00a39a; --danger-color: #ef4444; --success-color: #10b981; --warning-color: #f59e0b; } body.dashboard-body { margin: 0; padding: 0; background-color: var(--bg-color); color: var(--text-main); font-family: 'Cairo', sans-serif; overflow-x: hidden; } /* ================= الهيكل الأساسي للداشبورد ================= */ .dashboard-layout { display: flex; min-height: 100vh; } /* --- القائمة الجانبية (Sidebar) --- */ .sidebar { width: 260px; background-color: var(--surface-color); border-right: 1px solid var(--border-color); display: flex; flex-direction: column; padding: 20px; position: fixed; height: 100vh; z-index: 100; } .sidebar-header .logo { display: flex; align-items: center; gap: 12px; font-size: 1.5rem; font-weight: 700; color: var(--text-main); text-decoration: none; margin-bottom: 40px; font-family: 'Urbanist', sans-serif; } .sidebar-header .logo i { color: var(--primary-color); font-size: 1.8rem; } .sidebar-menu { list-style: none; padding: 0; margin: 0; flex: 1; } .sidebar-menu li { margin-bottom: 10px; } .sidebar-menu a { display: flex; align-items: center; gap: 15px; padding: 12px 15px; color: var(--text-muted); text-decoration: none; border-radius: 12px; transition: 0.3s; font-weight: 600; } .sidebar-menu li.active a, .sidebar-menu a:hover { background-color: rgba(0, 194, 184, 0.1); color: var(--primary-color); } .sidebar-footer .logout-btn { display: flex; align-items: center; gap: 10px; color: var(--danger-color); text-decoration: none; font-weight: 600; padding: 10px; transition: 0.3s; } /* ================= المحتوى الأساسي (Main Content) ================= */ .main-content { flex: 1; margin-left: 260px; /* نفس عرض السايدبار */ padding: 30px 40px; position: relative; } /* --- الهيدر العلوي (Top Bar) --- */ .highlight-name { background: linear-gradient(135deg, #00c2b8 0%, #1a6bff 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .wave-emoji { display: inline-block; transform-origin: 70% 70%; animation: wave-animation 2.5s infinite; } @keyframes wave-animation { 0% { transform: rotate(0.0deg) } 10% { transform: rotate(14.0deg) } 20% { transform: rotate(-8.0deg) } 30% { transform: rotate(14.0deg) } 40% { transform: rotate(-4.0deg) } 50% { transform: rotate(10.0deg) } 60% { transform: rotate(0.0deg) } 100% { transform: rotate(0.0deg) } } /* ================= الهيدر العلوي (Top Bar) ================= */ .top-bar { display: flex; justify-content: space-between; /* دي اللي بتزق الكلام شمال والزراير يمين */ align-items: center; /* بتخلي الزراير والاسم على نفس الخط الأفقي */ width: 100%; margin-bottom: 40px; position: relative; } /* ================= رسالة الترحيب ================= */ .welcome-text { display: flex; flex-direction: column; align-items: flex-start; /* بنخلي الكلام يبدأ من الشمال */ text-align: left; margin: 0; } .welcome-text h2 { font-family: 'Urbanist', sans-serif; font-size: 2.6rem; font-weight: 900; color: var(--text-main); margin: 0 0 10px 0; display: flex; align-items: center; gap: 12px; line-height: 1; } .highlight-name { background: linear-gradient(135deg, #00c2b8 0%, #1a6bff 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .welcome-text p { font-size: 1.05rem; color: var(--text-muted); font-weight: 600; margin: 0; } /* ================= جزء البروفايل والمحفظة ================= */ .top-actions { position: static; /* لغينا الطيران عشان يمشوا مع مساحة الشاشة صح */ display: flex; align-items: center; gap: 20px; } .wallet-badge { background: rgba(0, 194, 184, 0.1); color: var(--primary-color); transition: transform 0.2s ease-in-out; /* سرعة تأثير التكبير */ text-decoration: none; /* إزالة الخط اللي تحت الرابط */ padding: 8px 15px; border-radius: 20px; font-weight: 600; font-size: 0.95rem; display: flex; align-items: center; gap: 8px; border: 1px solid rgba(0, 194, 184, 0.2); } .wallet-badge:hover { transform: scale(1.08); /* تكبير العنصر بنسبة 8% عند وقوف الماوس */ cursor: pointer; } .theme-toggle i { font-size: 1.3rem; color: var(--text-muted); cursor: pointer; transition: 0.3s; } .user-avatar img { width: 44px; height: 44px; border-radius: 50%; border: 2px solid var(--border-color); } /* ================= قسم الخريطة والجراجات ================= */ .location-section { display: grid; grid-template-columns: 2fr 1fr; gap: 30px; } .map-header, .nearest-garages h3 { margin: 0 0 15px 0; font-size: 1.2rem; color: var(--text-main); display: flex; align-items: center; gap: 10px; } .google-map-placeholder { background: var(--surface-color); border: 1px solid var(--border-color); border-radius: 16px; padding: 10px; } /* ================= كروت الجراجات ================= */ .nearest-garages { display: flex; flex-direction: column; gap: 15px; } .garage-card { background: var(--surface-color); border: 1px solid var(--border-color); border-radius: 16px; padding: 20px; transition: 0.3s; } .garage-card:hover { border-color: var(--primary-color); transform: translateY(-3px); } .garage-info h4 { margin: 0 0 5px 0; font-size: 1.1rem; } .garage-info p { margin: 0 0 15px 0; font-size: 0.85rem; color: var(--text-muted); } .garage-status { display: flex; justify-content: space-between; align-items: center; } .garage-status span { font-weight: 700; font-size: 0.9rem; } .garage-status.success span { color: var(--success-color); } .garage-status.danger span { color: var(--danger-color); } .btn { background: var(--primary-color); color: #fff; border: none; padding: 8px 16px; border-radius: 8px; font-weight: 600; cursor: pointer; transition: 0.3s; } .btn:hover { background: var(--primary-hover); } /* ================= نافذة الحجز (Booking Modal) ================= */ .modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(5, 8, 15, 0.8); backdrop-filter: blur(8px); display: flex; align-items: center; justify-content: center; z-index: 2000; opacity: 0; visibility: hidden; transition: 0.3s ease; } .modal-overlay.active { opacity: 1; visibility: visible; } .booking-card { background: var(--surface-color); border: 1px solid var(--border-color); border-radius: 24px; width: 100%; max-width: 450px; padding: 35px; position: relative; transform: translateY(20px); transition: 0.4s ease; box-shadow: 0 25px 50px rgba(0,0,0,0.3); } .modal-overlay.active .booking-card { transform: translateY(0); } .close-modal { position: absolute; top: 20px; right: 20px; background: transparent; border: none; font-size: 1.2rem; color: var(--text-muted); cursor: pointer; transition: 0.3s; } .close-modal:hover { color: var(--danger-color); transform: rotate(90deg); } .booking-header h3 { font-size: 1.6rem; color: var(--text-main); margin: 0 0 5px 0; font-family: 'Urbanist', sans-serif; font-weight: 800;} .booking-header p { color: var(--text-muted); font-size: 0.95rem; margin-bottom: 25px; font-weight: 600;} /* خيارات نوع الركنة */ .section-subtitle { display: block; margin-bottom: 10px; font-weight: 600; font-size: 0.95rem;} .spot-options { display: flex; gap: 10px; } .spot-radio { flex: 1; cursor: pointer; } .spot-radio input { display: none; } .spot-box { background: var(--bg-color); border: 2px solid var(--border-color); border-radius: 14px; padding: 15px 10px; text-align: center; transition: 0.3s; color: var(--text-muted); } .spot-box i { display: block; font-size: 1.5rem; margin-bottom: 8px; } .spot-box span { font-size: 0.85rem; font-weight: 700; } .spot-radio input:checked + .spot-box { border-color: #00c2b8; background: rgba(0, 194, 184, 0.05); color: var(--text-main); } .spot-radio input:checked + .spot-box i { color: #00c2b8; } /* التحكم في الوقت */ .duration-control { display: flex; align-items: center; justify-content: space-between; background: var(--bg-color); border: 1px solid var(--border-color); border-radius: 14px; padding: 10px; } .dur-btn { background: var(--surface-color); border: 1px solid var(--border-color); color: var(--text-main); width: 40px; height: 40px; border-radius: 10px; cursor: pointer; transition: 0.2s; font-size: 1rem; } .dur-btn:hover { background: #00c2b8; color: #05080f; border-color: #00c2b8; } .dur-value { font-size: 1.5rem; font-weight: 800; color: var(--text-main); font-family: 'Urbanist', sans-serif;} /* السعر */ .price-summary { display: flex; justify-content: space-between; align-items: center; background: linear-gradient(135deg, #0f172a 0%, #1e3a8a 100%); padding: 20px; border-radius: 16px; color: white; margin-bottom: 10px; } .price-summary span { font-size: 0.95rem; font-weight: 600; opacity: 0.9; } .total-price { font-size: 1.8rem; font-weight: 800; font-family: 'Urbanist', sans-serif; } .price-hint { font-size: 0.75rem; color: #00c2b8; font-weight: 600; display: flex; gap: 6px; align-items: center; margin-bottom: 20px;} .btn-primary-action { width: 100%; padding: 15px; border-radius: 12px; background: var(--primary-color); color: #fff; border: none; font-size: 1.1rem; font-weight: 700; cursor: pointer; transition: 0.3s; } .btn-primary-action:hover { background: var(--primary-hover); transform: translateY(-2px); } /* ================= واجهة الملاحة للخريطة (Navigation) ================= */ #nav-top-bar { display: none; position: absolute; top: 10px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: white; padding: 10px 20px; border-radius: 8px; font-weight: bold; z-index: 10; font-size: 1.2rem; } #nav-bottom-bar { display: none; position: absolute; bottom: 0; left: 0; width: 100%; background: #0f172a; padding: 15px 20px; justify-content: space-between; align-items: center; box-sizing: border-box; z-index: 10; } .nav-info { display: flex; flex-direction: column; color: white; } .nav-time { font-size: 1.4rem; font-weight: bold; color: #10b981; } .close-nav-btn { background: #ef4444; color: white; border: none; padding: 10px 20px; border-radius: 8px; font-weight: bold; cursor: pointer; font-size: 1.1rem; } #start-nav-btn { display: none; position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); background: #10b981; color: white; padding: 12px 30px; font-size: 1.2rem; font-weight: bold; border: none; border-radius: 30px; cursor: pointer; z-index: 10; box-shadow: 0 4px 15px rgba(16, 185, 129, 0.4); } /* تأثير النبض وقت التتبع */ @keyframes pulseGlow { 0% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.4); } 70% { box-shadow: 0 0 0 15px rgba(16, 185, 129, 0); } 100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); } } .navigating-active { animation: pulseGlow 2s infinite; border: 2px solid #10b981 !important; } /* ================= Light Mode (لو حابة تشغلي الدارك/لايت) ================= */ .light-mode.dashboard-body { background-color: #f8fafc; color: #0f172a; } .light-mode .sidebar, .light-mode .garage-card, .light-mode .booking-card, .light-mode .google-map-placeholder { background-color: #ffffff; border-color: #e2e8f0; } .light-mode .welcome-text h2 { color: #0f172a; } .light-mode .sidebar-header .logo, .light-mode .map-header, .light-mode .nearest-garages h3, .light-mode .booking-header h3 { color: #0f172a; } .light-mode .sidebar-menu a { color: #64748b; } .light-mode .spot-box, .light-mode .duration-control { background: #f8fafc; border-color: #e2e8f0;} .light-mode .dur-btn { background: #ffffff; color: #0f172a; } /* تصميم مخطط الجراج */ .slots-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 15px; } .slot-box-ui { border-radius: 8px; padding: 15px 10px; text-align: center; transition: 0.3s; display: flex; flex-direction: column; align-items: center; gap: 8px; } /* الركنة المتاحة */ .slot-box-ui.available { border: 2px dashed #10b981; /* أخضر */ background: rgba(16, 185, 129, 0.05); color: #10b981; cursor: pointer; } .slot-box-ui.available:hover { background: rgba(16, 185, 129, 0.15); } .slot-box-ui.available .status-badge { background: #10b981; color: #0f172a; } /* الركنة المشغولة */ .slot-box-ui.occupied { border: 2px dashed #ef4444; /* أحمر */ background: rgba(239, 68, 68, 0.05); color: #ef4444; cursor: not-allowed; } .slot-box-ui.occupied .status-badge { background: #ef4444; color: white; } /* الركنة المقفولة (عشان اليوزر مش مختار الفئة دي) */ .slot-box-ui.locked { border: 2px dashed #475569; background: #1e293b; color: #64748b; cursor: not-allowed; opacity: 0.5; } .slot-box-ui.locked .status-badge { background: #334155; color: white; } .slot-name-ui { font-weight: bold; font-size: 1.1rem; } .status-badge { font-size: 0.8rem; padding: 2px 10px; border-radius: 12px; font-weight: bold; } /* ========================================================================== Profile Dropdown & Right Notification Sidebar Styles ========================================================================== */ /* Notification Bell Styling Base */ .notification-trigger { position: relative; cursor: pointer; background: rgba(255, 255, 255, 0.03); padding: 10px 12px; border-radius: 12px; border: 1px solid var(--border-color); transition: all 0.3s ease; } .notification-trigger:hover { background: rgba(0, 194, 184, 0.1); border-color: var(--primary-color); } .notification-trigger i { font-size: 1.25rem; color: var(--text-muted); } .notification-trigger:hover i { color: var(--primary-color); } .badge-dot { position: absolute; top: 6px; right: 8px; width: 8px; height: 8px; background-color: var(--danger-color); border-radius: 50%; border: 2px solid var(--surface-color); } /* Dropdown Context Container Wrapper */ .profile-dropdown-wrapper { position: relative; } .user-avatar { cursor: pointer; } .dropdown-menu { position: absolute; top: calc(100% + 12px); right: 0; width: 220px; background: var(--surface-color); border: 1px solid var(--border-color); border-radius: 14px; padding: 10px 0; box-shadow: 0 15px 30px rgba(0, 0, 0, 0.5); display: none; flex-direction: column; z-index: 1500; transform: translateY(10px); transition: opacity 0.3s ease, transform 0.3s ease; } .dropdown-menu.active { display: flex; animation: slideDownMenu 0.25s forwards ease-out; } @keyframes slideDownMenu { to { transform: translateY(0); } } .dropdown-header { padding: 10px 20px; display: flex; flex-direction: column; } .dropdown-header strong { color: var(--text-main); font-size: 0.95rem; } .dropdown-header span { color: var(--primary-color); font-size: 0.8rem; font-weight: 600; } .dropdown-menu hr { border: 0; border-top: 1px solid var(--border-color); margin: 8px 0; } .dropdown-menu a { padding: 10px 20px; color: var(--text-muted); text-decoration: none; font-size: 0.9rem; font-weight: 600; display: flex; align-items: center; gap: 12px; transition: 0.2s ease; } .dropdown-menu a:hover { background: rgba(0, 194, 184, 0.08); color: var(--primary-color); } .dropdown-menu a.logout-link { color: var(--danger-color); } .dropdown-menu a.logout-link:hover { background: rgba(239, 68, 68, 0.08); } /* Sliding Right Sidebar Styling Components */ .notif-sidebar { position: fixed; top: 0; right: -360px; width: 340px; height: 100vh; background-color: var(--surface-color); border-left: 1px solid var(--border-color); box-shadow: -10px 0 30px rgba(0, 0, 0, 0.4); z-index: 2500; display: flex; flex-direction: column; transition: right 0.4s cubic-bezier(0.16, 1, 0.3, 1); } .notif-sidebar.active { right: 0; } .notif-sidebar-overlay { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(5, 8, 15, 0.6); backdrop-filter: blur(4px); z-index: 2400; display: none; opacity: 0; transition: opacity 0.3s ease; } .notif-sidebar-overlay.active { display: block; opacity: 1; } .notif-sidebar-header { padding: 24px; border-bottom: 1px solid var(--border-color); display: flex; justify-content: space-between; align-items: center; } .notif-sidebar-header h3 { margin: 0; font-size: 1.15rem; font-weight: 700; color: var(--text-main); display: flex; align-items: center; gap: 10px; } .notif-sidebar-header h3 i { color: var(--primary-color); } #closeNotifBtn { background: transparent; border: none; color: var(--text-muted); font-size: 1.2rem; cursor: pointer; transition: 0.2s ease; } #closeNotifBtn:hover { color: var(--danger-color); transform: scale(1.1); } .notif-sidebar-content { flex: 1; overflow-y: auto; padding: 15px; display: flex; flex-direction: column; gap: 12px; } /* Individual Notification Items Base Design */ .notif-item { background: rgba(255, 255, 255, 0.01); border: 1px solid var(--border-color); border-radius: 12px; padding: 14px; display: flex; gap: 12px; transition: transform 0.2s ease, border-color 0.2s ease; } .notif-item:hover { transform: translateY(-2px); border-color: rgba(0, 194, 184, 0.3); } .notif-item.unread { background: rgba(0, 194, 184, 0.03); border-color: rgba(0, 194, 184, 0.15); } .notif-icon { width: 32px; height: 32px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 0.95rem; flex-shrink: 0; } .notif-icon.info { background: rgba(59, 130, 246, 0.15); color: #3b82f6; } .notif-icon.warning { background: rgba(245, 158, 11, 0.15); color: var(--warning-color); } .notif-icon.success { background: rgba(16, 185, 129, 0.15); color: var(--success-color); } .notif-text p { margin: 0 0 4px 0; font-size: 0.88rem; line-height: 1.4; color: var(--text-main); } .notif-text strong { color: var(--primary-color); } .notif-time { font-size: 0.75rem; color: var(--text-muted); } /* Light Mode Variables Adaptations */ .light-mode .dropdown-menu, .light-mode .notif-sidebar { background-color: #ffffff; border-color: #e2e8f0; } .light-mode .dropdown-header strong, .light-mode .notif-sidebar-header h3 { color: #0f172a; } .light-mode .notif-item { background: #f8fafc; } /* تنسيقات المعاينة والتحكم في أبعاد الصورة الشخصية */ .avatar-preview-container img { width: 100%; height: 100%; object-fit: cover; /* دي أهم خاصية عشان الصورة متتمطش وتملى الدائرة بشكل ذكي */ object-position: center; } /* تحديث لأشكال الصور داخل الأواتار فوق لمنع التشويه */ .user-avatar img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; /* تضمن إن الصورة الجديدة تظهر دائرية ومظبوطة */ border: 2px solid var(--border-color); transition: border-color 0.3s; } .user-avatar:hover img { border-color: var(--primary-color); } /* تنسيق تبويب الإعدادات الجديد في السايدبار */ .sidebar-menu li.settings-tab a:hover { background-color: rgba(0, 194, 184, 0.1); color: var(--primary-color); } /* حالة النشاط (Active) لما اليوزر يكون جوه صفحة الإعدادات */ .sidebar-menu li.settings-tab.active a { background-color: rgba(0, 194, 184, 0.15); color: var(--primary-color); border-left: 3px solid var(--primary-color); border-radius: 0 12px 12px 0; /* انسيابية مع الحواف */ }