/* Kayal Aqua - Main Stylesheet */ /* Mobile-First Responsive Design */ /* CSS Variables for consistent theming */ :root { /* Primary Colors */ --primary-navy: #1e3a5f; --primary-yellow: #ffc107; --primary-navy-light: #2c4a6b; --primary-navy-dark: #152d47; --primary-yellow-light: #fff350; --primary-yellow-dark: #e6ac00; /* Neutral Colors */ --white: #ffffff; --light-gray: #f8f9fa; --gray: #6c757d; --dark-gray: #495057; --black: #212529; /* Status Colors */ --success: #28a745; --danger: #dc3545; --warning: #ffc107; --info: #17a2b8; /* Spacing */ --space-xs: 0.25rem; --space-sm: 0.5rem; --space-md: 1rem; --space-lg: 1.5rem; --space-xl: 2rem; --space-xxl: 3rem; /* Typography */ --font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; --font-size-xs: 0.75rem; --font-size-sm: 0.875rem; --font-size-base: 1rem; --font-size-lg: 1.125rem; --font-size-xl: 1.25rem; --font-size-xxl: 1.5rem; /* Border radius */ --border-radius: 0.375rem; --border-radius-lg: 0.5rem; /* Shadows */ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1); --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1); } /* Reset and Base Styles */ * { margin: 0; padding: 0; box-sizing: border-box; } html { font-size: 16px; scroll-behavior: smooth; } body { font-family: var(--font-family); font-size: var(--font-size-base); line-height: 1.6; color: var(--dark-gray); background-color: var(--light-gray); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Layout Components */ .container { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 var(--space-md); } .main-wrapper { min-height: 100vh; display: flex; flex-direction: column; } .content-area { flex: 1; padding: var(--space-md); } /* Header Styles */ .header { background: linear-gradient(135deg, var(--primary-navy) 0%, var(--primary-navy-dark) 100%); color: var(--white); padding: var(--space-md) 0; box-shadow: var(--shadow-md); position: sticky; top: 0; z-index: 1000; } .header-content { display: flex; justify-content: space-between; align-items: center; } .logo { font-size: var(--font-size-xl); font-weight: bold; color: var(--primary-yellow); text-decoration: none; } .logo:hover { color: var(--primary-yellow-light); } /* Navigation */ .nav-toggle { display: block; background: none; border: none; color: var(--white); font-size: 1.5rem; cursor: pointer; padding: var(--space-sm); } .main-nav { position: fixed; top: 0; left: -100%; width: 280px; height: 100vh; background: var(--primary-navy); transition: left 0.3s ease; z-index: 1001; overflow-y: auto; } .main-nav.active { left: 0; } .nav-header { padding: var(--space-lg); background: var(--primary-navy-dark); display: flex; justify-content: space-between; align-items: center; } .nav-close { background: none; border: none; color: var(--white); font-size: 1.5rem; cursor: pointer; } .nav-menu { list-style: none; padding: var(--space-md) 0; } .nav-item { margin-bottom: var(--space-xs); } .nav-link { display: flex; align-items: center; padding: var(--space-md) var(--space-lg); color: var(--white); text-decoration: none; transition: all 0.3s ease; } .nav-link:hover, .nav-link.active { background: var(--primary-yellow); color: var(--primary-navy); } .nav-icon { margin-right: var(--space-md); width: 20px; } /* Overlay for mobile menu */ .nav-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); z-index: 1000; display: none; } .nav-overlay.active { display: block; } /* Card Components */ .card { background: var(--white); border-radius: var(--border-radius); box-shadow: var(--shadow-sm); margin-bottom: var(--space-lg); overflow: hidden; } .card-header { padding: var(--space-lg); background: var(--primary-navy); color: var(--white); border-bottom: 1px solid var(--light-gray); } .card-title { font-size: var(--font-size-lg); font-weight: 600; margin: 0; } .card-body { padding: var(--space-lg); } .card-footer { padding: var(--space-lg); background: var(--light-gray); border-top: 1px solid #dee2e6; } /* Grid System */ .row { display: flex; flex-wrap: wrap; margin: 0 calc(var(--space-md) * -0.5); } .col { flex: 1; padding: 0 calc(var(--space-md) * 0.5); margin-bottom: var(--space-md); } .col-12 { flex: 0 0 100%; } .col-6 { flex: 0 0 50%; } .col-4 { flex: 0 0 33.333333%; } .col-3 { flex: 0 0 25%; } /* Form Elements */ .form-group { margin-bottom: var(--space-lg); } .form-label { display: block; margin-bottom: var(--space-sm); font-weight: 500; color: var(--primary-navy); } .form-control { width: 100%; padding: var(--space-md); border: 1px solid #ced4da; border-radius: var(--border-radius); font-size: var(--font-size-base); background: var(--white); transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } .form-control:focus { outline: none; border-color: var(--primary-yellow); box-shadow: 0 0 0 2px rgba(255, 193, 7, 0.25); } .form-select { appearance: none; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e"); background-position: right 0.75rem center; background-repeat: no-repeat; background-size: 1.5em 1.5em; padding-right: 2.5rem; } /* Buttons */ .btn { display: inline-flex; align-items: center; justify-content: center; padding: var(--space-md) var(--space-lg); border: none; border-radius: var(--border-radius); font-size: var(--font-size-base); font-weight: 500; text-decoration: none; text-align: center; cursor: pointer; transition: all 0.3s ease; min-width: 44px; /* Accessibility - minimum touch target */ min-height: 44px; } .btn-primary { background: var(--primary-navy); color: var(--white); } .btn-primary:hover { background: var(--primary-navy-dark); color: var(--white); } .btn-secondary { background: var(--primary-yellow); color: var(--primary-navy); } .btn-secondary:hover { background: var(--primary-yellow-dark); color: var(--primary-navy); } .btn-success { background: var(--success); color: var(--white); } .btn-danger { background: var(--danger); color: var(--white); } .btn-outline { background: transparent; color: var(--primary-navy); border: 2px solid var(--primary-navy); } .btn-outline:hover { background: var(--primary-navy); color: var(--white); } .btn-sm { padding: var(--space-sm) var(--space-md); font-size: var(--font-size-sm); min-width: 36px; min-height: 36px; } .btn-lg { padding: var(--space-lg) var(--space-xl); font-size: var(--font-size-lg); } .btn-block { width: 100%; } /* Statistics Cards */ .stats-grid { display: grid; grid-template-columns: 1fr; gap: var(--space-md); margin-bottom: var(--space-xl); } .stat-card { background: var(--white); padding: var(--space-lg); border-radius: var(--border-radius); box-shadow: var(--shadow-sm); text-align: center; transition: transform 0.3s ease, box-shadow 0.3s ease; } .stat-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); } .stat-value { font-size: var(--font-size-xxl); font-weight: bold; color: var(--primary-navy); display: block; } .stat-label { font-size: var(--font-size-sm); color: var(--gray); margin-top: var(--space-sm); } .stat-change { font-size: var(--font-size-xs); margin-top: var(--space-xs); } .stat-change.positive { color: var(--success); } .stat-change.negative { color: var(--danger); } /* Tables */ .table-responsive { overflow-x: auto; margin-bottom: var(--space-lg); } .table { width: 100%; margin-bottom: 0; background: var(--white); border-collapse: collapse; } .table th, .table td { padding: var(--space-md); text-align: left; border-bottom: 1px solid #dee2e6; } .table th { background: var(--primary-navy); color: var(--white); font-weight: 600; white-space: nowrap; } .table tbody tr:hover { background: var(--light-gray); } /* Utilities */ .text-center { text-align: center; } .text-right { text-align: right; } .text-left { text-align: left; } .text-primary { color: var(--primary-navy); } .text-secondary { color: var(--primary-yellow); } .text-success { color: var(--success); } .text-danger { color: var(--danger); } .text-warning { color: var(--warning); } .text-info { color: var(--info); } .text-muted { color: var(--gray); } .bg-primary { background-color: var(--primary-navy); } .bg-secondary { background-color: var(--primary-yellow); } .bg-light { background-color: var(--light-gray); } .d-none { display: none; } .d-block { display: block; } .d-flex { display: flex; } .d-inline-flex { display: inline-flex; } .justify-center { justify-content: center; } .justify-between { justify-content: space-between; } .justify-end { justify-content: flex-end; } .items-center { align-items: center; } .items-end { align-items: flex-end; } .m-0 { margin: 0; } .mt-1 { margin-top: var(--space-xs); } .mb-1 { margin-bottom: var(--space-xs); } .mt-2 { margin-top: var(--space-sm); } .mb-2 { margin-bottom: var(--space-sm); } .mt-3 { margin-top: var(--space-md); } .mb-3 { margin-bottom: var(--space-md); } .mt-4 { margin-top: var(--space-lg); } .mb-4 { margin-bottom: var(--space-lg); } .p-0 { padding: 0; } .p-1 { padding: var(--space-xs); } .p-2 { padding: var(--space-sm); } .p-3 { padding: var(--space-md); } .p-4 { padding: var(--space-lg); } /* Footer */ .footer { background: var(--primary-navy); color: var(--white); text-align: center; padding: var(--space-lg) 0; margin-top: auto; } /* Loading Spinner */ .spinner { width: 40px; height: 40px; border: 4px solid var(--light-gray); border-top: 4px solid var(--primary-yellow); border-radius: 50%; animation: spin 1s linear infinite; margin: var(--space-lg) auto; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Alert Messages */ .alert { padding: var(--space-md); margin-bottom: var(--space-lg); border: 1px solid transparent; border-radius: var(--border-radius); } .alert-success { color: #155724; background-color: #d4edda; border-color: #c3e6cb; } .alert-danger { color: #721c24; background-color: #f8d7da; border-color: #f5c6cb; } .alert-warning { color: #856404; background-color: #fff3cd; border-color: #ffeaa7; } .alert-info { color: #0c5460; background-color: #d1ecf1; border-color: #bee5eb; } /* Responsive Design */ @media (min-width: 576px) { .stats-grid { grid-template-columns: repeat(2, 1fr); } } @media (min-width: 768px) { .container { padding: 0 var(--space-lg); } .content-area { padding: var(--space-xl); } .stats-grid { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); } .nav-toggle { display: none; } .main-nav { position: static; width: auto; height: auto; background: transparent; display: flex; align-items: center; } .nav-header { display: none; } .nav-menu { display: flex; padding: 0; margin: 0; } .nav-item { margin-bottom: 0; margin-left: var(--space-md); } .nav-link { padding: var(--space-sm) var(--space-md); border-radius: var(--border-radius); } } @media (min-width: 992px) { .col-lg-12 { flex: 0 0 100%; } .col-lg-6 { flex: 0 0 50%; } .col-lg-4 { flex: 0 0 33.333333%; } .col-lg-3 { flex: 0 0 25%; } .col-lg-2 { flex: 0 0 16.666667%; } }