/* Mobile First Responsive Design for Relevant Reflex */ /* Base Mobile Styles (up to 576px) */ @media (max-width: 576px) { :root { --font-size-base: 14px; --font-size-lg: 16px; --font-size-xl: 18px; --font-size-2xl: 20px; --font-size-3xl: 24px; --spacing-md: 0.75rem; --spacing-lg: 1rem; --spacing-xl: 1.5rem; } .nav-container { padding: 0 var(--spacing-md); height: 60px; } .brand-name { display: none; } .logo { width: 35px; height: 35px; font-size: var(--font-size-base); } .nav-menu { position: fixed; top: 60px; left: -100%; width: 100%; height: calc(100vh - 60px); background: var(--white); flex-direction: column; padding: var(--spacing-xl); gap: var(--spacing-md); transition: left var(--transition-normal); box-shadow: var(--shadow-xl); z-index: var(--z-modal); overflow-y: auto; } .nav-menu.active { left: 0; } .mobile-toggle { display: flex !important; } .nav-link { justify-content: flex-start; padding: var(--spacing-lg); border-radius: var(--border-radius-xl); font-size: var(--font-size-base); width: 100%; } .nav-link::before { display: none; } .nav-icon { font-size: var(--font-size-lg); } .page-container { padding: 0 var(--spacing-md); } .page-header { flex-direction: column; align-items: flex-start; gap: var(--spacing-md); margin-bottom: var(--spacing-xl); } .page-header h1 { font-size: var(--font-size-3xl); } .header-actions { width: 100%; justify-content: flex-start; flex-wrap: wrap; } .btn { font-size: var(--font-size-sm); padding: var(--spacing-md); min-height: 40px; } .btn-small { padding: var(--spacing-sm) var(--spacing-md); font-size: var(--font-size-xs); min-height: 32px; } .stats-grid { grid-template-columns: 1fr; gap: var(--spacing-md); } .stat-card { padding: var(--spacing-lg); flex-direction: row; gap: var(--spacing-md); } .stat-icon { width: 50px; height: 50px; font-size: 2rem; } .stat-content h3 { font-size: var(--font-size-xl); } .table-container { overflow-x: auto; border-radius: var(--border-radius-lg); } .data-table { min-width: 700px; } .data-table th, .data-table td { padding: var(--spacing-sm) var(--spacing-md); font-size: var(--font-size-xs); } .user-info, .item-info, .panel-info { gap: var(--spacing-sm); } .user-avatar { width: 32px; height: 32px; font-size: var(--font-size-xs); } .action-buttons { flex-direction: column; gap: 2px; } .btn-edit, .btn-delete, .btn-view, .btn-analytics, .btn-track, .btn-launch { min-width: 28px; height: 28px; padding: 2px; } .form-row { grid-template-columns: 1fr; gap: var(--spacing-md); } .table-controls { flex-direction: column; align-items: stretch; gap: var(--spacing-md); } .filter-container { flex-direction: column; gap: var(--spacing-sm); } .search-container { max-width: none; } .modal { padding: var(--spacing-md); } .modal-content { max-height: 95vh; } .modal-form, .settings-form, .support-form { padding: var(--spacing-lg); } } /* Mobile Landscape and Small Tablets (577px - 768px) */ @media (min-width: 577px) and (max-width: 768px) { .nav-menu { position: fixed; top: 70px; left: -100%; width: 100%; height: calc(100vh - 70px); background: var(--white); flex-direction: column; padding: var(--spacing-xl); gap: var(--spacing-md); transition: left var(--transition-normal); box-shadow: var(--shadow-xl); z-index: var(--z-modal); } .nav-menu.active { left: 0; } .mobile-toggle { display: flex; } .nav-link { justify-content: flex-start; padding: var(--spacing-lg); border-radius: var(--border-radius-xl); width: 100%; } .stats-grid { grid-template-columns: repeat(2, 1fr); gap: var(--spacing-lg); } .page-header { flex-direction: column; align-items: flex-start; gap: var(--spacing-md); } .form-row { grid-template-columns: 1fr; gap: var(--spacing-md); } .table-controls { flex-direction: row; flex-wrap: wrap; } .filter-container { flex-direction: row; gap: var(--spacing-md); } } /* Tablets (769px - 992px) */ @media (min-width: 769px) and (max-width: 992px) { .nav-container { padding: 0 var(--spacing-lg); } .page-container { padding: 0 var(--spacing-lg); } .stats-grid { grid-template-columns: repeat(2, 1fr); gap: var(--spacing-lg); } .content-grid { grid-template-columns: 1fr; gap: var(--spacing-xl); } .dashboard-content .content-grid { grid-template-columns: 2fr 1fr; } .footer-grid { grid-template-columns: repeat(2, 1fr); gap: var(--spacing-xl); } .nav-link { padding: var(--spacing-md); font-size: var(--font-size-sm); } .nav-icon { font-size: var(--font-size-sm); } .nav-label { font-size: var(--font-size-sm); } } /* Desktop (993px - 1199px) */ @media (min-width: 993px) and (max-width: 1199px) { .nav-container, .page-container, .footer-container { max-width: 960px; } .stats-grid { grid-template-columns: repeat(4, 1fr); } .content-grid { grid-template-columns: 2fr 1fr; } .footer-grid { grid-template-columns: repeat(4, 1fr); } } /* Large Desktop (1200px and up) */ @media (min-width: 1200px) { .nav-container, .page-container, .footer-container { max-width: 1200px; } .stats-grid { grid-template-columns: repeat(4, 1fr); } .content-grid { grid-template-columns: 2fr 1fr; gap: var(--spacing-2xl); } } /* Extra Large Screens (1400px and up) */ @media (min-width: 1400px) { .nav-container, .page-container, .footer-container { max-width: 1400px; } :root { --spacing-md: 1.25rem; --spacing-lg: 2rem; --spacing-xl: 2.5rem; --spacing-2xl: 3.5rem; } } /* Settings Page Responsive */ .settings-container { display: grid; grid-template-columns: 250px 1fr; gap: var(--spacing-2xl); margin-top: var(--spacing-xl); } .settings-nav { background: var(--white); border-radius: var(--border-radius-xl); padding: var(--spacing-lg); box-shadow: var(--shadow-sm); height: fit-content; position: sticky; top: calc(70px + var(--spacing-lg)); } .settings-tabs { list-style: none; display: flex; flex-direction: column; gap: var(--spacing-sm); } .tab-link { display: block; padding: var(--spacing-md); text-decoration: none; color: var(--gray-600); border-radius: var(--border-radius-lg); transition: all var(--transition-normal); font-weight: var(--font-weight-medium); } .tab-link:hover { background: var(--primary-light); color: var(--primary-color); } .tab-link.active { background: var(--primary-color); color: var(--white); } .settings-content { background: var(--white); border-radius: var(--border-radius-xl); box-shadow: var(--shadow-sm); } .tab-content { display: none; padding: var(--spacing-2xl); } .tab-content.active { display: block; } @media (max-width: 768px) { .settings-container { grid-template-columns: 1fr; gap: var(--spacing-lg); } .settings-nav { position: static; order: -1; } .settings-tabs { flex-direction: row; overflow-x: auto; gap: var(--spacing-xs); padding-bottom: var(--spacing-sm); } .tab-link { white-space: nowrap; padding: var(--spacing-sm) var(--spacing-md); font-size: var(--font-size-sm); } } /* Dashboard Responsive Specific */ .dashboard-container { max-width: 1200px; margin: 0 auto; padding: 0 var(--spacing-md); } @media (max-width: 768px) { .dashboard-container { padding: 0 var(--spacing-md); } .content-grid { grid-template-columns: 1fr; gap: var(--spacing-lg); } .quick-actions-grid { grid-template-columns: repeat(2, 1fr); gap: var(--spacing-md); } } @media (max-width: 480px) { .quick-actions-grid { grid-template-columns: 1fr; } } /* Table Responsive Behavior */ @media (max-width: 768px) { .table-container { border-radius: var(--border-radius-lg); } .data-table th:first-child, .data-table td:first-child { position: sticky; left: 0; background: var(--white); z-index: 10; } .data-table th { background: var(--gray-50); } .data-table tbody tr:hover th:first-child, .data-table tbody tr:hover td:first-child { background: var(--gray-50); } } /* Modal Responsive */ @media (max-width: 768px) { .modal { padding: var(--spacing-md); align-items: flex-start; padding-top: 10vh; } .modal-content { max-height: 85vh; width: 100%; margin: 0; } .modal-header { padding: var(--spacing-lg); } .modal-form, .settings-form, .support-form { padding: var(--spacing-lg); } .modal-large { max-width: none; } } /* Form Responsive */ @media (max-width: 576px) { .form-row { grid-template-columns: 1fr; gap: var(--spacing-md); } .form-actions { flex-direction: column; gap: var(--spacing-md); } .form-actions .btn { width: 100%; justify-content: center; } .table-controls { flex-direction: column; align-items: stretch; } .filter-container { flex-direction: column; gap: var(--spacing-sm); } .search-input, .filter-select { width: 100%; } } /* Stats Grid Responsive */ @media (max-width: 1200px) { .stats-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 768px) { .stats-grid { grid-template-columns: 1fr; } } /* Footer Responsive */ @media (max-width: 992px) { .footer-grid { grid-template-columns: repeat(2, 1fr); gap: var(--spacing-xl); } } @media (max-width: 576px) { .footer-container { padding: var(--spacing-xl) var(--spacing-md) var(--spacing-md); } .footer-grid { grid-template-columns: 1fr; gap: var(--spacing-lg); } .footer-bottom { flex-direction: column; text-align: center; gap: var(--spacing-md); } .legal-links { flex-direction: column; align-items: center; gap: var(--spacing-sm); } .social-links { justify-content: center; } } /* Chart Responsive */ @media (max-width: 768px) { .chart-container canvas { max-width: 100%; height: auto; } .chart-section { padding: var(--spacing-md); } } /* Touch Device Optimizations */ @media (hover: none) and (pointer: coarse) { .btn { min-height: 44px; /* Apple's recommended minimum */ padding: var(--spacing-md) var(--spacing-lg); } .btn-edit, .btn-delete, .btn-view, .btn-analytics { min-width: 44px; min-height: 44px; padding: var(--spacing-md); } .nav-link { min-height: 44px; padding: var(--spacing-md) var(--spacing-lg); } .mobile-toggle { min-width: 44px; min-height: 44px; } /* Remove hover effects on touch devices */ .stat-card:hover { transform: none; box-shadow: var(--shadow-sm); } .btn-primary:hover { transform: none; } } /* High DPI Displays */ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { .logo { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } } /* Landscape Phone Orientation */ @media (max-height: 500px) and (orientation: landscape) { .nav-menu { height: calc(100vh - 70px); padding: var(--spacing-lg); } .modal { padding-top: 2vh; } .page-header { margin-bottom: var(--spacing-lg); } main { padding: var(--spacing-lg) 0; } } /* Print Optimizations */ @media print { .main-header, .main-footer, .btn, .mobile-toggle, .action-buttons, .search-input, .filter-select, .modal { display: none !important; } .page-container { max-width: none; padding: 0; margin: 0; } .stats-grid { grid-template-columns: repeat(4, 1fr); gap: var(--spacing-md); break-inside: avoid; } .stat-card { border: 1px solid var(--gray-300); box-shadow: none; break-inside: avoid; } .table-container { border: 1px solid var(--gray-300); box-shadow: none; } .data-table th { background: var(--gray-100) !important; color: var(--dark-color) !important; } body { font-size: 11pt; line-height: 1.4; color: black !important; background: white !important; } h1, h2, h3, h4 { color: black !important; } .page-header h1 { font-size: 18pt; margin-bottom: 12pt; } } /* High Contrast Mode Support */ @media (prefers-contrast: high) { :root { --primary-color: #0052a3; --secondary-color: #495057; --gray-300: #999999; --gray-600: #333333; } .nav-link { border: 1px solid transparent; } .nav-link.active { border-color: var(--white); } .btn { border: 2px solid currentColor; } .stat-card { border: 1px solid var(--gray-300); } } /* Reduced Motion Support */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } .modal-content { animation: none; } } /* Dark Mode Support */ @media (prefers-color-scheme: dark) { :root { --white: #1a1d20; --light-color: #212529; --gray-50: #2d3436; --gray-100: #495057; --gray-200: #6c757d; --gray-300: #adb5bd; --gray-400: #ced4da; --gray-500: #dee2e6; --gray-600: #e9ecef; --gray-700: #f1f3f4; --gray-800: #f8f9fa; --dark-color: #ffffff; --primary-light: rgba(0, 102, 204, 0.1); } body { background-color: #0d1117; color: var(--dark-color); } .main-header { background: #161b22; border-bottom: 1px solid var(--gray-700); } .nav-link:hover { background: rgba(0, 102, 204, 0.1); } .table-container, .stat-card, .modal-content, .settings-content { background: #161b22; border: 1px solid var(--gray-700); } .data-table th { background: var(--gray-800); } .search-input, .filter-select, input, textarea, select { background: #0d1117; border-color: var(--gray-700); color: var(--dark-color); } .search-input:focus, input:focus, textarea:focus, select:focus { border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(0, 102, 204, 0.1); } } /* Pagination Responsive */ .pagination-container { display: flex; justify-content: space-between; align-items: center; margin-top: var(--spacing-lg); padding: var(--spacing-lg); background: var(--white); border-radius: var(--border-radius-lg); box-shadow: var(--shadow-sm); } .pagination-controls { display: flex; gap: var(--spacing-sm); align-items: center; } .page-number { padding: var(--spacing-sm) var(--spacing-md); border-radius: var(--border-radius); background: var(--gray-100); color: var(--gray-700); font-weight: var(--font-weight-medium); } .page-number.active { background: var(--primary-color); color: var(--white); } @media (max-width: 576px) { .pagination-container { flex-direction: column; gap: var(--spacing-md); text-align: center; } .pagination-info { order: 2; font-size: var(--font-size-sm); } .pagination-controls { order: 1; } } /* Loading States Responsive */ @media (max-width: 576px) { .loading::after { animation-duration: 2s; } } /* Support Page Responsive */ .support-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--spacing-2xl); margin-bottom: var(--spacing-2xl); } @media (max-width: 992px) { .support-grid { grid-template-columns: 1fr; gap: var(--spacing-xl); } } .help-resources { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: var(--spacing-lg); } @media (max-width: 576px) { .help-resources { grid-template-columns: 1fr; } } /* Finance Page Responsive */ .finance-overview { margin-bottom: var(--spacing-2xl); } .finance-content .content-grid { display: grid; grid-template-columns: 2fr 1fr; gap: var(--spacing-2xl); } @media (max-width: 992px) { .finance-content .content-grid { grid-template-columns: 1fr; gap: var(--spacing-xl); } }