/* Kayal Aqua 2025 - Modern Professional Stylesheet */ /* Import Professional Font - Inter */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); :root { /* Professional Color Palette - Ocean Theme */ --primary-color: #0f4c81; --primary-dark: #0a3359; --primary-light: #1a6bb3; --accent-color: #f8f9fa; --secondary-color: #64b5f6; /* Background Colors */ --bg-main: #f5f7fa; --bg-card: #ffffff; --bg-hover: #f0f2f5; /* Text Colors */ --text-primary: #2c3e50; --text-secondary: #6c757d; --text-light: #95a5a6; /* Border & Shadow */ --border-color: #e1e8ed; --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08); --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1); --shadow-lg: 0 10px 25px rgba(0, 0, 0, 0.12); /* Status Colors */ --success: #27ae60; --warning: #f39c12; --danger: #e74c3c; --info: #3498db; /* Spacing */ --spacing-xs: 0.5rem; --spacing-sm: 1rem; --spacing-md: 1.5rem; --spacing-lg: 2rem; --spacing-xl: 3rem; /* Border Radius */ --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px; --radius-full: 50px; } /* Reset & Base Styles */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: var(--bg-main); color: var(--text-primary); line-height: 1.6; font-size: 15px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Container */ .container { width: 100%; max-width: 1400px; margin: 0 auto; padding: 0 var(--spacing-md); } /* Header */ .header { background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-dark) 100%); color: var(--accent-color); padding: 0; box-shadow: var(--shadow-md); position: sticky; top: 0; z-index: 1000; } .header-content { display: flex; justify-content: space-between; align-items: center; padding: var(--spacing-sm) var(--spacing-md); } .logo-container { display: flex; align-items: center; gap: var(--spacing-sm); } .logo-icon { font-size: 2rem; } .logo-text { font-size: 1.5rem; font-weight: 700; letter-spacing: -0.5px; } .logo-subtitle { font-size: 0.75rem; opacity: 0.9; display: block; margin-top: -4px; font-weight: 400; } /* Navigation */ .nav-toggle { display: none; background: transparent; border: none; color: var(--accent-color); font-size: 1.5rem; cursor: pointer; padding: var(--spacing-xs); } .main-nav { display: flex; } .main-nav ul { display: flex; list-style: none; gap: var(--spacing-xs); } .main-nav a { color: var(--accent-color); text-decoration: none; padding: var(--spacing-sm) var(--spacing-md); border-radius: var(--radius-md); font-weight: 500; transition: all 0.3s ease; display: flex; align-items: center; gap: var(--spacing-xs); } .main-nav a:hover, .main-nav a.active { background: rgba(255, 255, 255, 0.15); transform: translateY(-2px); } .main-nav i { font-size: 1.1rem; } /* Cards */ .card { background: var(--bg-card); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); margin-bottom: var(--spacing-lg); overflow: hidden; transition: box-shadow 0.3s ease; } .card:hover { box-shadow: var(--shadow-md); } .card-header { background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-light) 100%); color: var(--accent-color); padding: var(--spacing-md); display: flex; justify-content: space-between; align-items: center; } .card-header h2 { font-size: 1.25rem; font-weight: 600; display: flex; align-items: center; gap: var(--spacing-sm); } .card-body { padding: var(--spacing-lg); } /* Forms */ .form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: var(--spacing-md); margin-bottom: var(--spacing-md); } .form-group { display: flex; flex-direction: column; } .form-group label { font-weight: 500; margin-bottom: var(--spacing-xs); color: var(--text-primary); font-size: 0.9rem; } .form-control, input[type="text"], input[type="number"], input[type="date"], input[type="tel"], input[type="password"], input[type="email"], select, textarea { width: 100%; padding: 0.75rem var(--spacing-sm); border: 2px solid var(--border-color); border-radius: var(--radius-md); font-size: 0.95rem; font-family: inherit; transition: all 0.3s ease; background: var(--bg-card); } .form-control:focus, input:focus, select:focus, textarea:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(15, 76, 129, 0.1); } .checkbox-group { display: flex; align-items: center; gap: var(--spacing-sm); padding: var(--spacing-sm) 0; } .checkbox-group input[type="checkbox"] { width: 20px; height: 20px; cursor: pointer; } /* Buttons */ .btn { padding: 0.75rem 1.5rem; border: none; border-radius: var(--radius-md); font-size: 0.95rem; font-weight: 500; cursor: pointer; transition: all 0.3s ease; display: inline-flex; align-items: center; gap: var(--spacing-xs); text-decoration: none; font-family: inherit; } .btn-primary { background: var(--primary-color); color: var(--accent-color); } .btn-primary:hover { background: var(--primary-dark); transform: translateY(-2px); box-shadow: var(--shadow-md); } .btn-success { background: var(--success); color: white; } .btn-success:hover { background: #229954; transform: translateY(-2px); } .btn-secondary { background: var(--text-secondary); color: white; } .btn-secondary:hover { background: #5a6268; } .btn-sm { padding: 0.5rem 1rem; font-size: 0.85rem; } .btn-export { background: var(--secondary-color); color: white; } .btn-export:hover { background: #42a5f5; } /* Tables */ .table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; border-radius: var(--radius-md); } .data-table { width: 100%; border-collapse: collapse; font-size: 0.9rem; } .data-table thead { background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-light) 100%); color: var(--accent-color); } .data-table th { padding: 1rem; text-align: left; font-weight: 600; white-space: nowrap; } .data-table td { padding: 1rem; border-bottom: 1px solid var(--border-color); } .data-table tbody tr { transition: background-color 0.2s ease; } .data-table tbody tr:hover { background-color: var(--bg-hover); } .data-table tbody tr:last-child td { border-bottom: none; } /* Action Buttons in Tables */ .action-btns { display: flex; gap: var(--spacing-xs); } .btn-edit, .btn-delete { padding: 0.5rem 0.75rem; border-radius: var(--radius-sm); color: white; text-decoration: none; font-size: 0.85rem; transition: all 0.3s ease; display: inline-flex; align-items: center; gap: 0.25rem; } .btn-edit { background: var(--info); } .btn-edit:hover { background: #2980b9; transform: scale(1.05); } .btn-delete { background: var(--danger); } .btn-delete:hover { background: #c0392b; transform: scale(1.05); } /* Dashboard Stats */ .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: var(--spacing-md); margin-bottom: var(--spacing-lg); } .stat-card { background: var(--bg-card); padding: var(--spacing-lg); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); border-left: 4px solid var(--primary-color); transition: all 0.3s ease; } .stat-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); } .stat-header { display: flex; align-items: center; gap: var(--spacing-sm); margin-bottom: var(--spacing-sm); color: var(--text-secondary); font-size: 0.9rem; font-weight: 500; } .stat-icon { font-size: 1.5rem; color: var(--primary-color); } .stat-value { font-size: 2rem; font-weight: 700; color: var(--text-primary); } /* Alerts/Flash Messages */ .alert { padding: var(--spacing-md); border-radius: var(--radius-md); margin-bottom: var(--spacing-md); display: flex; align-items: center; gap: var(--spacing-sm); } .alert-success { background: #d4edda; color: #155724; border-left: 4px solid var(--success); } .alert-error { background: #f8d7da; color: #721c24; border-left: 4px solid var(--danger); } .alert-info { background: #d1ecf1; color: #0c5460; border-left: 4px solid var(--info); } /* Pagination */ .pagination { display: flex; justify-content: center; align-items: center; gap: var(--spacing-xs); margin-top: var(--spacing-lg); flex-wrap: wrap; } .pagination a { padding: 0.5rem 0.75rem; border: 1px solid var(--border-color); border-radius: var(--radius-sm); color: var(--text-primary); text-decoration: none; transition: all 0.3s ease; min-width: 40px; text-align: center; } .pagination a:hover { background: var(--primary-color); color: white; border-color: var(--primary-color); } .pagination a.active { background: var(--primary-color); color: white; border-color: var(--primary-color); } .pagination-ellipsis { padding: 0.5rem; color: var(--text-secondary); } /* Login Page */ .login-container { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: var(--spacing-md); background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-dark) 100%); } .login-card { background: var(--bg-card); padding: var(--spacing-xl); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); width: 100%; max-width: 400px; } .login-header { text-align: center; margin-bottom: var(--spacing-lg); } .login-logo { font-size: 3rem; color: var(--primary-color); margin-bottom: var(--spacing-sm); } .login-title { font-size: 1.75rem; font-weight: 700; color: var(--text-primary); margin-bottom: 0.25rem; } .login-subtitle { color: var(--text-secondary); font-size: 0.9rem; } /* Mobile Responsive Design */ @media screen and (max-width: 768px) { .container { padding: 0 var(--spacing-sm); } .header-content { padding: var(--spacing-sm); } .logo-text { font-size: 1.25rem; } .logo-subtitle { font-size: 0.7rem; } .nav-toggle { display: block; } .main-nav { position: fixed; top: 60px; left: -100%; width: 80%; max-width: 300px; height: calc(100vh - 60px); background: var(--primary-dark); transition: left 0.3s ease; box-shadow: var(--shadow-lg); overflow-y: auto; } .main-nav.active { left: 0; } .main-nav ul { flex-direction: column; padding: var(--spacing-md); } .main-nav li { width: 100%; } .main-nav a { width: 100%; justify-content: flex-start; padding: var(--spacing-md); } /* Mobile Table Optimization */ .data-table { font-size: 0.85rem; } .data-table thead { display: none; } .data-table tbody tr { display: block; margin-bottom: var(--spacing-md); border: 1px solid var(--border-color); border-radius: var(--radius-md); overflow: hidden; } .data-table td { display: flex; justify-content: space-between; align-items: center; padding: var(--spacing-sm); border: none; border-bottom: 1px solid var(--border-color); } .data-table td:last-child { border-bottom: none; } .data-table td::before { content: attr(data-label); font-weight: 600; color: var(--text-secondary); } /* Mobile Form Grid */ .form-grid { grid-template-columns: 1fr; } /* Mobile Stats Grid */ .stats-grid { grid-template-columns: 1fr; } .stat-value { font-size: 1.75rem; } /* Mobile Cards */ .card-body { padding: var(--spacing-md); } /* Mobile Buttons */ .btn { width: 100%; justify-content: center; } .action-btns { width: 100%; justify-content: flex-end; } .action-btns .btn-edit, .action-btns .btn-delete { width: auto; } } @media screen and (max-width: 480px) { .logo-text { font-size: 1.1rem; } .logo-subtitle { display: none; } .card-header h2 { font-size: 1.1rem; } .stat-value { font-size: 1.5rem; } } /* Utility Classes */ .text-center { text-align: center; } .text-right { text-align: right; } .mt-1 { margin-top: var(--spacing-xs); } .mt-2 { margin-top: var(--spacing-sm); } .mt-3 { margin-top: var(--spacing-md); } .mt-4 { margin-top: var(--spacing-lg); } .mb-1 { margin-bottom: var(--spacing-xs); } .mb-2 { margin-bottom: var(--spacing-sm); } .mb-3 { margin-bottom: var(--spacing-md); } .mb-4 { margin-bottom: var(--spacing-lg); } .hidden { display: none; } /* Loading Spinner */ .spinner { border: 3px solid var(--border-color); border-top: 3px solid var(--primary-color); border-radius: 50%; width: 40px; height: 40px; animation: spin 1s linear infinite; margin: var(--spacing-lg) auto; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Print Styles */ @media print { .header, .nav-toggle, .main-nav, .btn, .action-btns { display: none !important; } .card { box-shadow: none; page-break-inside: avoid; } }