/* * HVAC Mobile Responsive Optimizations * Comprehensive mobile-first responsive design improvements * * Addresses critical mobile usability issues: * - Non-responsive tables converted to card layouts * - Touch-friendly interactions (44x44px minimum) * - Improved form layouts and spacing * - Enhanced navigation for mobile devices * * @version 1.0.0 * @author HVAC Community Events Plugin */ /* ==================================== CRITICAL MOBILE PADDING FIXES ==================================== */ /* Fix cramped mobile layout - ensure minimum 20px padding on all sides */ @media screen and (max-width: 768px) { /* Global mobile container padding */ .hvac-page-wrapper, .hvac-trainer-dashboard-page, .hvac-trainer-profile-page, .hvac-trainer-registration-page, .hvac-community-login-wrapper, .hvac-certificate-reports-page, .hvac-generate-certificates-page, .hvac-venue-page, .hvac-organizer-page, .hvac-training-leads-page { padding-left: max(20px, env(safe-area-inset-left)) !important; padding-right: max(20px, env(safe-area-inset-right)) !important; box-sizing: border-box !important; } /* Container elements that need proper mobile spacing */ .container, .hvac-content, .site-main, #primary, #main { padding-left: max(20px, env(safe-area-inset-left)) !important; padding-right: max(20px, env(safe-area-inset-right)) !important; box-sizing: border-box !important; width: 100% !important; max-width: none !important; } /* Override theme constraints that cause narrow content */ .ast-container, .ast-single-post .entry-content, .ast-page-content, .entry-content { padding-left: max(20px, env(safe-area-inset-left)) !important; padding-right: max(20px, env(safe-area-inset-right)) !important; margin-left: 0 !important; margin-right: 0 !important; width: 100% !important; max-width: none !important; } /* Plugin-specific content areas */ .hvac-dashboard-content, .hvac-profile-content, .hvac-certificate-content, .hvac-venue-content, .hvac-organizer-content, .hvac-registration-content { padding: 20px !important; margin: 0 !important; box-sizing: border-box !important; } /* Cards and panels need internal padding while maintaining outer spacing */ .hvac-stat-card, .hvac-event-card, .hvac-profile-card, .hvac-form-card { margin-left: 10px !important; margin-right: 10px !important; padding: 15px !important; box-sizing: border-box !important; } /* Ensure form containers have proper spacing */ .hvac-form-container, .hvac-registration-form-container { padding: 20px !important; margin: 0 !important; box-sizing: border-box !important; } } /* Extra small mobile devices need more conservative spacing */ @media screen and (max-width: 375px) { /* Reduce padding slightly on very small screens but maintain minimum 15px */ .hvac-page-wrapper, .hvac-trainer-dashboard-page, .hvac-trainer-profile-page, .hvac-trainer-registration-page { padding-left: max(15px, env(safe-area-inset-left)) !important; padding-right: max(15px, env(safe-area-inset-right)) !important; } .container, .hvac-content, .site-main, #primary, #main { padding-left: max(15px, env(safe-area-inset-left)) !important; padding-right: max(15px, env(safe-area-inset-right)) !important; } /* Smaller internal card padding on tiny screens */ .hvac-stat-card, .hvac-event-card, .hvac-profile-card { margin-left: 5px !important; margin-right: 5px !important; padding: 12px !important; } } /* ==================================== MOBILE-FIRST RESPONSIVE TABLES ==================================== */ /* Dashboard Events Table - Mobile Card Layout */ @media screen and (max-width: 768px) { /* Hide table structure on mobile */ .hvac-events-table-wrapper .events-table, .hvac-events-table-wrapper .events-table thead, .hvac-events-table-wrapper .events-table tbody, .hvac-events-table-wrapper .events-table th, .hvac-events-table-wrapper .events-table td, .hvac-events-table-wrapper .events-table tr { display: block; } /* Hide table headers on mobile */ .hvac-events-table-wrapper .events-table thead tr { position: absolute; top: -9999px; left: -9999px; } /* Style each table row as a card */ .hvac-events-table-wrapper .events-table tbody tr { background: #fff; border: 1px solid #e0e0e0; border-radius: 8px; margin-bottom: 15px; padding: 15px; position: relative; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } /* Style table cells as stacked content */ .hvac-events-table-wrapper .events-table td { border: none; padding: 8px 0; position: relative; padding-left: 35% !important; word-wrap: break-word; hyphens: auto; } /* Add labels to each cell using pseudo-elements */ .hvac-events-table-wrapper .events-table td:before { content: attr(data-label) ": "; position: absolute; left: 6px; width: 30%; padding-right: 10px; white-space: nowrap; font-weight: 600; color: #333; text-align: left; } /* Specific labels for each column */ .hvac-events-table-wrapper .events-table .column-status:before { content: "Status"; } .hvac-events-table-wrapper .events-table .column-title:before { content: "Event"; } .hvac-events-table-wrapper .events-table .column-date:before { content: "Date"; } .hvac-events-table-wrapper .events-table .column-organizer:before { content: "Organizer"; } .hvac-events-table-wrapper .events-table .column-capacity:before { content: "Capacity"; } .hvac-events-table-wrapper .events-table .column-sold:before { content: "Sold"; } .hvac-events-table-wrapper .events-table .column-revenue:before { content: "Revenue"; } .hvac-events-table-wrapper .events-table .column-actions:before { content: "Actions"; } /* Make actions more touch-friendly */ .hvac-events-table-wrapper .events-table .column-actions { padding-left: 10px !important; } .hvac-events-table-wrapper .events-table .column-actions a { display: inline-block; margin: 2px 5px; padding: 8px 12px; background: #0073aa; color: white !important; text-decoration: none; border-radius: 4px; min-height: 44px; min-width: 60px; text-align: center; line-height: 1.4; font-size: 14px; box-sizing: border-box; } .hvac-events-table-wrapper .events-table .column-actions a:hover { background: #005a87; color: white !important; } } /* Certificate Reports Table - Mobile Card Layout */ @media screen and (max-width: 768px) { /* Certificate table responsive styling */ .hvac-certificate-table-wrapper .hvac-certificate-table, .hvac-certificate-table-wrapper .hvac-certificate-table thead, .hvac-certificate-table-wrapper .hvac-certificate-table tbody, .hvac-certificate-table-wrapper .hvac-certificate-table th, .hvac-certificate-table-wrapper .hvac-certificate-table td, .hvac-certificate-table-wrapper .hvac-certificate-table tr { display: block; } /* Hide certificate table headers */ .hvac-certificate-table-wrapper .hvac-certificate-table thead tr { position: absolute; top: -9999px; left: -9999px; } /* Certificate cards styling */ .hvac-certificate-table-wrapper .hvac-certificate-table tbody tr { background: #fff; border: 1px solid #e0e0e0; border-radius: 8px; margin-bottom: 15px; padding: 15px; position: relative; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } /* Certificate table cells */ .hvac-certificate-table-wrapper .hvac-certificate-table td { border: none; padding: 8px 0; position: relative; padding-left: 35% !important; } /* Certificate labels */ .hvac-certificate-table-wrapper .hvac-certificate-table td:before { content: attr(data-label) ": "; position: absolute; left: 6px; width: 30%; padding-right: 10px; white-space: nowrap; font-weight: 600; color: #333; } /* Certificate action buttons */ .hvac-certificate-table-wrapper .hvac-certificate-actions button { display: inline-block; margin: 2px 5px; padding: 8px 12px; min-height: 44px; min-width: 60px; font-size: 14px; } } /* ==================================== REGISTRATION FORM MOBILE UX ==================================== */ @media screen and (max-width: 768px) { /* Registration form container improvements */ .hvac-trainer-registration-page .container, .hvac-registration-form-container { padding: 10px; max-width: 100%; } /* Form sections as collapsible cards */ .hvac-registration-section { background: #fff; border: 1px solid #e0e0e0; border-radius: 8px; margin-bottom: 20px; overflow: hidden; } .hvac-registration-section-header { background: #f8f9fa; padding: 15px 20px; border-bottom: 1px solid #e0e0e0; cursor: pointer; display: flex; justify-content: space-between; align-items: center; user-select: none; -webkit-tap-highlight-color: transparent; min-height: 44px; } .hvac-registration-section-header h3 { margin: 0; font-size: 18px; color: #333; } .hvac-registration-section-toggle { font-size: 20px; color: #666; transition: transform 0.2s ease; } .hvac-registration-section.collapsed .hvac-registration-section-toggle { transform: rotate(-90deg); } .hvac-registration-section-content { padding: 20px; max-height: 2000px; overflow: hidden; transition: max-height 0.3s ease; } .hvac-registration-section.collapsed .hvac-registration-section-content { max-height: 0; padding-top: 0; padding-bottom: 0; } /* Form fields mobile styling */ .hvac-form-field, .hvac-registration-form .form-field { margin-bottom: 20px; } .hvac-form-field label, .hvac-registration-form label { display: block; margin-bottom: 8px; font-weight: 600; color: #333; font-size: 16px; } .hvac-form-field input, .hvac-form-field select, .hvac-form-field textarea, .hvac-registration-form input, .hvac-registration-form select, .hvac-registration-form textarea { width: 100%; padding: 12px 15px; font-size: 16px; /* Prevent zoom on iOS */ border: 2px solid #e0e0e0; border-radius: 6px; background: #fff; box-sizing: border-box; min-height: 44px; -webkit-appearance: none; transition: border-color 0.2s ease; } .hvac-form-field input:focus, .hvac-form-field select:focus, .hvac-form-field textarea:focus, .hvac-registration-form input:focus, .hvac-registration-form select:focus, .hvac-registration-form textarea:focus { outline: none; border-color: #0073aa; box-shadow: 0 0 0 3px rgba(0, 115, 170, 0.1); } /* File upload styling */ .hvac-form-field input[type="file"] { padding: 10px; background: #f8f9fa; } /* Checkbox and radio improvements */ .hvac-form-field input[type="checkbox"], .hvac-form-field input[type="radio"] { width: auto; margin-right: 10px; min-height: 20px; min-width: 20px; } /* Multi-select checkboxes */ .hvac-checkbox-group { display: flex; flex-direction: column; gap: 12px; } .hvac-checkbox-item { display: flex; align-items: center; padding: 12px; background: #f8f9fa; border-radius: 6px; min-height: 44px; } .hvac-checkbox-item label { margin: 0 0 0 12px; font-weight: normal; cursor: pointer; flex: 1; } /* Submit button */ .hvac-form-submit, .hvac-registration-form input[type="submit"], .hvac-registration-form button[type="submit"] { width: 100%; padding: 15px 20px; font-size: 18px; font-weight: 600; background: #0073aa; color: white; border: none; border-radius: 6px; cursor: pointer; min-height: 52px; margin-top: 20px; transition: background-color 0.2s ease; -webkit-tap-highlight-color: transparent; } .hvac-form-submit:hover, .hvac-registration-form input[type="submit"]:hover, .hvac-registration-form button[type="submit"]:hover { background: #005a87; } } /* ==================================== MOBILE NAVIGATION ENHANCEMENTS ==================================== */ @media screen and (max-width: 768px) { /* Trainer navigation mobile improvements */ .hvac-trainer-navigation { background: #fff; border-bottom: 2px solid #e0e0e0; padding: 0; position: relative; } /* Mobile menu toggle */ .hvac-mobile-menu-toggle { display: block; background: none; border: none; padding: 15px 20px; font-size: 18px; cursor: pointer; width: 100%; text-align: left; color: #333; min-height: 54px; position: relative; -webkit-tap-highlight-color: transparent; } .hvac-mobile-menu-toggle:after { content: "☰"; float: right; font-size: 20px; line-height: 1.2; } .hvac-mobile-menu-toggle.active:after { content: "✕"; } /* Navigation menu mobile layout */ .hvac-trainer-nav-menu { display: none; background: #fff; border-top: 1px solid #e0e0e0; position: absolute; top: 100%; left: 0; right: 0; z-index: 1000; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } .hvac-trainer-nav-menu.active { display: block; } .hvac-trainer-nav-menu ul { list-style: none; margin: 0; padding: 0; } .hvac-trainer-nav-menu > ul > li { border-bottom: 1px solid #f0f0f0; } .hvac-trainer-nav-menu a { display: block; padding: 15px 20px; color: #333; text-decoration: none; font-size: 16px; min-height: 54px; line-height: 1.5; box-sizing: border-box; -webkit-tap-highlight-color: transparent; } .hvac-trainer-nav-menu a:hover, .hvac-trainer-nav-menu a:focus { background: #f8f9fa; color: #0073aa; } /* Submenu styling */ .hvac-trainer-nav-menu .has-submenu > a:after { content: "▸"; float: right; transition: transform 0.2s ease; } .hvac-trainer-nav-menu .has-submenu.active > a:after { transform: rotate(90deg); } .hvac-trainer-nav-menu .submenu { display: none; background: #f8f9fa; } .hvac-trainer-nav-menu .has-submenu.active .submenu { display: block; } .hvac-trainer-nav-menu .submenu a { padding-left: 40px; font-size: 15px; color: #666; } /* Help menu positioning */ .hvac-trainer-nav-help { position: absolute; top: 15px; right: 20px; z-index: 1001; } .hvac-trainer-nav-help a { display: block; width: 44px; height: 44px; line-height: 44px; text-align: center; background: #0073aa; color: white; border-radius: 22px; text-decoration: none; font-size: 18px; font-weight: bold; } } /* ==================================== DASHBOARD STATS MOBILE LAYOUT ==================================== */ @media screen and (max-width: 480px) { /* Single column layout on very small screens */ .hvac-stats-row { flex-direction: column; margin: 0; } .hvac-stat-col { padding: 5px 0; min-width: 100%; flex: none; } .hvac-stat-card { margin-bottom: 15px; padding: 20px 15px; } .hvac-stat-card .metric-value, .hvac-stat-card p { font-size: 28px; } .hvac-stat-card h3 { font-size: 16px; margin-bottom: 10px; } } /* ==================================== FORM CONTROLS MOBILE LAYOUT ==================================== */ @media screen and (max-width: 768px) { /* Table controls responsive */ .hvac-table-controls { flex-direction: column; align-items: stretch; padding: 15px; gap: 15px; } .hvac-search-box input, .hvac-date-filters input, .hvac-per-page select { width: 100%; padding: 12px 15px; font-size: 16px; border: 2px solid #e0e0e0; border-radius: 6px; min-height: 44px; box-sizing: border-box; } .hvac-date-filters { display: flex; flex-direction: column; gap: 10px; } .hvac-date-filters label { font-weight: 600; margin-bottom: 5px; } /* Event filters mobile */ .hvac-event-filters { flex-direction: column; align-items: stretch; gap: 10px; } .hvac-event-filters span { margin-bottom: 10px; } .hvac-filter { width: 100%; text-align: center; padding: 12px 15px !important; margin: 2px 0 !important; min-height: 44px; box-sizing: border-box; } } /* ==================================== MODAL AND POPUP MOBILE STYLES ==================================== */ @media screen and (max-width: 768px) { /* Modal responsive adjustments */ .hvac-modal, .hvac-popup { position: fixed; top: 0; left: 0; right: 0; bottom: 0; max-width: none; max-height: none; border-radius: 0; margin: 0; } .hvac-modal-content, .hvac-popup-content { height: 100%; overflow-y: auto; padding: 20px; box-sizing: border-box; } .hvac-modal-header { position: sticky; top: 0; background: #fff; border-bottom: 1px solid #e0e0e0; padding: 15px 0; z-index: 10; } .hvac-modal-close { position: absolute; top: 15px; right: 15px; width: 44px; height: 44px; line-height: 44px; text-align: center; font-size: 20px; background: #f0f0f0; border-radius: 22px; text-decoration: none; color: #333; } } /* ==================================== ACCESSIBILITY IMPROVEMENTS ==================================== */ /* Enhanced focus styles for mobile */ @media screen and (max-width: 768px) { /* Larger focus indicators for touch devices */ *:focus { outline: 3px solid #0073aa; outline-offset: 2px; } /* Button focus improvements */ .hvac-button:focus, .hvac-form-submit:focus, button:focus, input[type="submit"]:focus { outline: 3px solid #0073aa; outline-offset: 3px; box-shadow: 0 0 0 6px rgba(0, 115, 170, 0.2); } /* Link focus improvements */ a:focus { outline: 3px solid #0073aa; outline-offset: 2px; background-color: rgba(0, 115, 170, 0.1); border-radius: 3px; } } /* ==================================== UTILITY CLASSES FOR MOBILE ==================================== */ /* Touch-friendly sizing */ .hvac-touch-target { min-height: 44px; min-width: 44px; padding: 12px 15px; box-sizing: border-box; } /* Mobile-only visibility */ .hvac-mobile-only { display: none; } @media screen and (max-width: 768px) { .hvac-mobile-only { display: block; } .hvac-desktop-only { display: none !important; } } /* Text sizing for mobile */ @media screen and (max-width: 768px) { .hvac-mobile-text-sm { font-size: 14px; } .hvac-mobile-text-base { font-size: 16px; } .hvac-mobile-text-lg { font-size: 18px; } } /* Mobile spacing utilities */ @media screen and (max-width: 768px) { .hvac-mobile-p-0 { padding: 0 !important; } .hvac-mobile-p-1 { padding: 10px !important; } .hvac-mobile-p-2 { padding: 20px !important; } .hvac-mobile-m-0 { margin: 0 !important; } .hvac-mobile-m-1 { margin: 10px !important; } .hvac-mobile-m-2 { margin: 20px !important; } .hvac-mobile-mb-0 { margin-bottom: 0 !important; } .hvac-mobile-mb-1 { margin-bottom: 10px !important; } .hvac-mobile-mb-2 { margin-bottom: 20px !important; } } /* ==================================== ADDITIONAL MOBILE FIXES ==================================== */ /* Touch feedback styling */ .hvac-touch-active { opacity: 0.7; transform: scale(0.98); transition: opacity 0.1s ease, transform 0.1s ease; } /* Prevent body scrolling when modal is open on mobile */ body.hvac-modal-open { overflow: hidden; position: fixed; width: 100%; height: 100%; } /* Swipe feedback for mobile modals */ .hvac-swipe-feedback { opacity: 0.8; transition: opacity 0.2s ease; } /* Horizontal scroll indicator for tables */ .has-horizontal-scroll::after { content: "← Scroll to see more →"; display: block; text-align: center; padding: 10px; background: #f8f9fa; color: #666; font-size: 12px; border-top: 1px solid #e0e0e0; } /* Enhanced button sizing for mobile */ @media screen and (max-width: 768px) { .hvac-button, .hvac-form-submit, button, input[type="submit"], input[type="button"] { min-height: 48px; font-size: 16px; padding: 12px 16px; border-radius: 6px; } /* Ensure select dropdowns are large enough */ select { min-height: 48px; font-size: 16px; padding: 10px 12px; } } /* Fix for iOS Safari form element styling */ @supports (-webkit-appearance: none) { input[type="text"], input[type="email"], input[type="password"], input[type="url"], input[type="tel"], input[type="number"], select, textarea { -webkit-appearance: none; border-radius: 6px; } } /* WordPress admin bar mobile adjustments */ @media screen and (max-width: 768px) { .admin-bar .hvac-page-wrapper { padding-top: 20px; /* Account for mobile admin bar */ } } /* Better handling of long content in mobile cards */ @media screen and (max-width: 768px) { .hvac-events-table-wrapper .events-table td, .hvac-certificate-table-wrapper .hvac-certificate-table td { word-break: break-word; hyphens: auto; -webkit-hyphens: auto; -ms-hyphens: auto; } /* Truncate very long URLs or content */ .hvac-events-table-wrapper .events-table .column-title a, .hvac-certificate-table-wrapper .hvac-certificate-table td a { max-width: 200px; display: inline-block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; vertical-align: middle; } } /* Improved focus handling for touch devices */ @media screen and (max-width: 768px) { .hvac-touch-device *:focus { outline: 3px solid #0073aa; outline-offset: 3px; } /* Remove focus on tap for touch devices */ .hvac-touch-device button:focus:not(:focus-visible), .hvac-touch-device input:focus:not(:focus-visible), .hvac-touch-device select:focus:not(:focus-visible), .hvac-touch-device textarea:focus:not(:focus-visible) { outline: none; } } /* ==================================== PRINT STYLES OPTIMIZATION ==================================== */ @media print { /* Hide mobile-specific elements when printing */ .hvac-mobile-menu-toggle, .hvac-trainer-nav-help, .hvac-mobile-only { display: none !important; } /* Restore table layout for printing */ .hvac-events-table-wrapper .events-table, .hvac-certificate-table-wrapper .hvac-certificate-table { display: table !important; } .hvac-events-table-wrapper .events-table tr, .hvac-certificate-table-wrapper .hvac-certificate-table tr { display: table-row !important; } .hvac-events-table-wrapper .events-table td, .hvac-events-table-wrapper .events-table th, .hvac-certificate-table-wrapper .hvac-certificate-table td, .hvac-certificate-table-wrapper .hvac-certificate-table th { display: table-cell !important; padding: 5px !important; } .hvac-events-table-wrapper .events-table td:before, .hvac-certificate-table-wrapper .hvac-certificate-table td:before { display: none !important; } }