/** * Find Training Page Styles * * Styles for the Find Training page with Google Maps integration. * * @package HVAC_Community_Events * @since 2.2.0 */ /* ========================================================================== Page Layout ========================================================================== */ .hvac-find-training-page { padding: 30px 0 60px; } .hvac-find-training-page .ast-container { max-width: 1400px; } .hvac-find-training-page .hvac-page-title { color: #164B60; font-size: 2.5rem; font-weight: 700; margin-bottom: 20px; text-align: center; } /* Intro Section */ .hvac-find-training-intro { max-width: 900px; margin: 0 auto 30px; text-align: center; color: #333; line-height: 1.7; } .hvac-find-training-intro p { margin-bottom: 12px; } /* ========================================================================== Map and Filters Layout ========================================================================== */ .hvac-map-filters-wrapper { display: grid; grid-template-columns: 2fr 1fr; gap: 30px; margin-bottom: 40px; } @media (max-width: 991px) { .hvac-map-filters-wrapper { grid-template-columns: 1fr; } } /* ========================================================================== Map Section ========================================================================== */ .hvac-map-section { position: relative; } .hvac-google-map { width: 100%; height: 500px; background: #f5f5f5; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } .hvac-map-loading { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; color: #666; } .hvac-map-loading .dashicons { font-size: 48px; width: 48px; height: 48px; margin-bottom: 15px; color: #00b3a4; } /* Map Legend */ .hvac-map-legend { display: flex; gap: 20px; padding: 12px 16px; background: #fff; border-radius: 0 0 8px 8px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08); } .hvac-legend-item { display: flex; align-items: center; gap: 8px; font-size: 14px; color: #555; } .hvac-legend-marker { width: 16px; height: 16px; border-radius: 50%; } .hvac-legend-trainer { background: #00b3a4; } .hvac-legend-venue { background: #f5a623; } /* ========================================================================== Filters Section ========================================================================== */ .hvac-filters-section { background: #fff; border-radius: 8px; padding: 24px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } /* Search Box */ .hvac-search-box { position: relative; margin-bottom: 16px; } .hvac-search-input { width: 100%; padding: 12px 40px 12px 16px; font-size: 15px; border: 1px solid #ddd; border-radius: 6px; transition: border-color 0.2s, box-shadow 0.2s; } .hvac-search-input:focus { outline: none; border-color: #00b3a4; box-shadow: 0 0 0 3px rgba(0, 179, 164, 0.1); } .hvac-search-box .dashicons { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); color: #999; } /* Near Me Button */ .hvac-near-me-btn { width: 100%; padding: 12px 16px; background: #164B60; color: #fff; border: none; border-radius: 6px; font-size: 15px; font-weight: 600; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 8px; margin-bottom: 20px; transition: background 0.2s; } .hvac-near-me-btn:hover { background: #1a5a73; } .hvac-near-me-btn:disabled { background: #ccc; cursor: not-allowed; } .hvac-near-me-btn .dashicons { font-size: 18px; } /* Filters Header */ .hvac-filters-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; } .hvac-filters-label { font-weight: 600; color: #333; } .hvac-clear-filters { background: none; border: none; color: #00b3a4; font-size: 13px; cursor: pointer; padding: 0; } .hvac-clear-filters:hover { text-decoration: underline; } /* Filter Groups */ .hvac-filter-group { margin-bottom: 16px; } .hvac-filter-group label { display: block; font-size: 13px; font-weight: 500; color: #555; margin-bottom: 6px; } .hvac-filter-select { width: 100%; padding: 10px 12px; font-size: 14px; border: 1px solid #ddd; border-radius: 6px; background: #fff; cursor: pointer; } .hvac-filter-select:focus { outline: none; border-color: #00b3a4; } /* Marker Toggles */ .hvac-marker-toggles { margin: 20px 0; padding: 16px 0; border-top: 1px solid #eee; border-bottom: 1px solid #eee; } .hvac-toggle { display: flex; align-items: center; cursor: pointer; margin-bottom: 10px; } .hvac-toggle:last-child { margin-bottom: 0; } .hvac-toggle input { position: absolute; opacity: 0; pointer-events: none; } .hvac-toggle-slider { width: 40px; height: 22px; background: #ccc; border-radius: 11px; position: relative; transition: background 0.2s; margin-right: 10px; flex-shrink: 0; } .hvac-toggle-slider::after { content: ''; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; background: #fff; border-radius: 50%; transition: transform 0.2s; } .hvac-toggle input:checked + .hvac-toggle-slider { background: #00b3a4; } .hvac-toggle input:checked + .hvac-toggle-slider::after { transform: translateX(18px); } .hvac-toggle-label { font-size: 14px; color: #333; } /* Active Filters */ .hvac-active-filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; } .hvac-active-filter { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; background: #e8f5f4; color: #00736a; border-radius: 20px; font-size: 13px; } .hvac-active-filter button { background: none; border: none; color: inherit; cursor: pointer; padding: 0; line-height: 1; } /* Results Count */ .hvac-results-count { text-align: center; color: #666; font-size: 14px; padding-top: 16px; border-top: 1px solid #eee; } /* ========================================================================== Trainer Directory Grid ========================================================================== */ .hvac-trainer-directory-section { margin-bottom: 40px; } .hvac-trainer-directory-section h2 { color: #164B60; font-size: 1.75rem; margin-bottom: 24px; } .hvac-trainer-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px; } .hvac-grid-loading { grid-column: 1 / -1; text-align: center; padding: 40px; color: #666; } .hvac-spin { animation: hvac-spin 1s linear infinite; } @keyframes hvac-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } /* Trainer Card */ .hvac-trainer-card { background: #fff; border-radius: 8px; padding: 20px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); cursor: pointer; transition: transform 0.2s, box-shadow 0.2s; display: flex; gap: 16px; } .hvac-trainer-card:hover { transform: translateY(-2px); box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12); } .hvac-trainer-card-image { width: 80px; height: 80px; flex-shrink: 0; position: relative; } .hvac-trainer-card-image img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; } .hvac-trainer-card-avatar { width: 100%; height: 100%; background: #e8f5f4; border-radius: 50%; display: flex; align-items: center; justify-content: center; } .hvac-trainer-card-avatar .dashicons { font-size: 32px; color: #00b3a4; } .hvac-mq-badge-small { position: absolute; bottom: 0; right: 0; width: 24px; height: 24px; } .hvac-trainer-card-info { flex: 1; min-width: 0; } .hvac-trainer-card-name { font-weight: 600; color: #164B60; margin-bottom: 4px; font-size: 16px; } .hvac-trainer-card-location { color: #666; font-size: 14px; margin-bottom: 8px; } .hvac-trainer-card-certs { display: flex; flex-wrap: wrap; gap: 6px; } .hvac-cert-badge { display: inline-block; padding: 4px 8px; background: #e8f5f4; color: #00736a; border-radius: 4px; font-size: 12px; font-weight: 500; } /* Load More */ .hvac-load-more-wrapper { text-align: center; margin-top: 24px; } /* ========================================================================== CTA Section ========================================================================== */ .hvac-cta-section { text-align: center; padding: 40px; background: #f8fafa; border-radius: 8px; } .hvac-cta-section p { font-size: 18px; color: #333; margin-bottom: 20px; } /* ========================================================================== Buttons ========================================================================== */ .hvac-btn-primary { display: inline-block; padding: 14px 28px; background: #00b3a4; color: #fff; border: none; border-radius: 6px; font-size: 16px; font-weight: 600; text-decoration: none; cursor: pointer; transition: background 0.2s; } .hvac-btn-primary:hover { background: #009688; color: #fff; } .hvac-btn-secondary { display: inline-block; padding: 12px 24px; background: #fff; color: #164B60; border: 2px solid #164B60; border-radius: 6px; font-size: 15px; font-weight: 600; text-decoration: none; cursor: pointer; transition: all 0.2s; } .hvac-btn-secondary:hover { background: #164B60; color: #fff; } /* ========================================================================== Modal Styles ========================================================================== */ .hvac-training-modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 99999; display: flex; align-items: center; justify-content: center; padding: 20px; } .hvac-modal-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); } .hvac-modal-content { position: relative; background: #fff; border-radius: 12px; max-width: 600px; width: 100%; max-height: 90vh; overflow-y: auto; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2); } .hvac-modal-loading { padding: 60px; text-align: center; color: #666; } .hvac-modal-close { position: absolute; top: 16px; right: 16px; background: #f5f5f5; border: none; width: 36px; height: 36px; border-radius: 50%; font-size: 24px; cursor: pointer; display: flex; align-items: center; justify-content: center; z-index: 10; } .hvac-modal-close:hover { background: #eee; } /* Trainer Modal Content */ .hvac-training-modal-header { padding: 24px 24px 0; } .hvac-training-modal-header h2 { color: #164B60; font-size: 1.5rem; margin: 0; padding-right: 40px; } .hvac-training-modal-body { padding: 24px; } .hvac-training-profile-section { margin-bottom: 24px; } .hvac-training-profile-header { display: flex; gap: 20px; margin-bottom: 20px; } .hvac-training-profile-image { width: 100px; height: 100px; border-radius: 50%; object-fit: cover; } .hvac-training-profile-avatar { width: 100px; height: 100px; background: #e8f5f4; border-radius: 50%; display: flex; align-items: center; justify-content: center; } .hvac-training-profile-avatar .dashicons { font-size: 48px; color: #00b3a4; } .hvac-training-profile-info { flex: 1; } .hvac-training-location { color: #666; margin-bottom: 8px; } .hvac-training-certifications { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; } .hvac-training-company { color: #555; margin-bottom: 8px; } .hvac-training-events-count { color: #333; } .hvac-training-detail { padding: 10px 0; border-bottom: 1px solid #eee; } .hvac-training-events { margin-top: 20px; } .hvac-training-events h4 { color: #164B60; margin-bottom: 12px; } .hvac-events-list { list-style: none; padding: 0; margin: 0; } .hvac-events-list li { padding: 8px 0; border-bottom: 1px solid #eee; } .hvac-events-list li:last-child { border-bottom: none; } .hvac-events-list a { color: #00b3a4; text-decoration: none; } .hvac-events-list a:hover { text-decoration: underline; } .hvac-event-date { display: block; font-size: 13px; color: #666; margin-top: 2px; } /* Contact Form in Modal */ .hvac-training-contact-section { border-top: 1px solid #eee; padding-top: 24px; } .hvac-training-contact-section h4 { color: #164B60; margin-bottom: 16px; } .hvac-training-contact-form .hvac-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 12px; } .hvac-training-contact-form .hvac-form-field { margin-bottom: 12px; } .hvac-training-contact-form input, .hvac-training-contact-form textarea { width: 100%; padding: 10px 12px; font-size: 14px; border: 1px solid #ddd; border-radius: 6px; } .hvac-training-contact-form input:focus, .hvac-training-contact-form textarea:focus { outline: none; border-color: #00b3a4; } .hvac-form-message { padding: 12px 16px; border-radius: 6px; margin-top: 16px; } .hvac-form-success { background: #d4edda; color: #155724; } .hvac-form-error { background: #f8d7da; color: #721c24; } /* Venue Modal */ .hvac-venue-modal-header { padding: 24px 24px 0; } .hvac-venue-modal-header h2 { color: #164B60; font-size: 1.5rem; margin: 0; padding-right: 40px; } .hvac-venue-modal-body { padding: 24px; } .hvac-venue-address { color: #666; margin-bottom: 20px; } .hvac-venue-events h4 { color: #164B60; margin-bottom: 12px; } .hvac-venue-events-list { list-style: none; padding: 0; margin: 0 0 20px; } .hvac-venue-events-list li { padding: 8px 0; border-bottom: 1px solid #eee; } .hvac-venue-directions { display: inline-flex; align-items: center; gap: 6px; } /* ========================================================================== Google Maps Info Windows ========================================================================== */ .hvac-info-window { padding: 12px; max-width: 280px; } .hvac-info-window-title { font-weight: 600; color: #164B60; margin-bottom: 6px; font-size: 15px; } .hvac-info-window-location { color: #666; font-size: 13px; margin-bottom: 8px; } .hvac-info-window-cert { display: inline-block; padding: 3px 8px; background: #e8f5f4; color: #00736a; border-radius: 4px; font-size: 12px; margin-bottom: 10px; } .hvac-info-window-btn { display: inline-block; padding: 8px 16px; background: #00b3a4; color: #fff; border: none; border-radius: 4px; font-size: 13px; font-weight: 500; cursor: pointer; text-decoration: none; } .hvac-info-window-btn:hover { background: #009688; } /* Venue Info Window */ .hvac-info-window-venue { padding: 12px; max-width: 250px; } .hvac-info-window-address { color: #666; font-size: 13px; margin-bottom: 8px; } .hvac-info-window-events-count { font-size: 13px; color: #00736a; margin-bottom: 10px; } /* ========================================================================== Responsive Styles ========================================================================== */ @media (max-width: 768px) { .hvac-find-training-page { padding: 20px 0 40px; } .hvac-find-training-page .hvac-page-title { font-size: 1.75rem; } .hvac-google-map { height: 350px; } .hvac-trainer-card { flex-direction: column; align-items: center; text-align: center; } .hvac-trainer-card-certs { justify-content: center; } .hvac-training-profile-header { flex-direction: column; align-items: center; text-align: center; } .hvac-training-contact-form .hvac-form-row { grid-template-columns: 1fr; } .hvac-modal-content { max-height: 85vh; } } @media (max-width: 480px) { .hvac-map-legend { flex-direction: column; gap: 10px; } .hvac-trainer-grid { grid-template-columns: 1fr; } } /* ========================================================================== Location Error Message ========================================================================== */ .hvac-location-error { display: flex; align-items: center; gap: 8px; margin-top: 10px; padding: 10px 14px; background: #fef2f2; border: 1px solid #fecaca; border-radius: 6px; color: #991b1b; font-size: 0.875rem; } .hvac-location-error .dashicons { color: #dc2626; flex-shrink: 0; } .hvac-location-error .hvac-dismiss-error { margin-left: auto; background: none; border: none; color: #991b1b; cursor: pointer; font-size: 1.25rem; line-height: 1; padding: 0; opacity: 0.7; } .hvac-location-error .hvac-dismiss-error:hover { opacity: 1; }