/** * Footer Contact Form Styles (Issue #37) * * Estilos para el formulario de contacto que aparece antes del footer principal. * Incluye estilos para validaciones, estados de botones y responsive design. * * @package Apus_Theme * @since 1.0.0 */ /* ==================================================================== Footer Contact Section ==================================================================== */ .footer-contact-section { position: relative; } /* Color naranja principal para iconos */ .text-primary-orange { color: #FF8600 !important; } /* ==================================================================== Contact Info Styles ==================================================================== */ .contact-info h6 { font-weight: 600; font-size: 0.95rem; color: #212529; margin-bottom: 0.25rem; } .contact-info .text-muted { font-size: 0.9rem; } .contact-info i { flex-shrink: 0; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; } /* ==================================================================== Form Styles ==================================================================== */ #footerContactForm .form-control { border: 1px solid #dee2e6; border-radius: 0.375rem; padding: 0.75rem 1rem; font-size: 0.95rem; transition: all 0.2s ease-in-out; background-color: #fff; } #footerContactForm .form-control:focus { border-color: #FF8600; box-shadow: 0 0 0 0.25rem rgba(255, 134, 0, 0.15); outline: 0; } #footerContactForm .form-control::placeholder { color: #adb5bd; opacity: 1; } #footerContactForm textarea.form-control { resize: vertical; min-height: 100px; } /* ==================================================================== Form Validation States ==================================================================== */ #footerContactForm .form-control.is-invalid { border-color: #dc3545; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); background-repeat: no-repeat; background-position: right calc(0.375em + 0.1875rem) center; background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); padding-right: calc(1.5em + 0.75rem); } #footerContactForm .form-control.is-valid { border-color: #198754; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); background-repeat: no-repeat; background-position: right calc(0.375em + 0.1875rem) center; background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); padding-right: calc(1.5em + 0.75rem); } #footerContactForm textarea.form-control.is-invalid, #footerContactForm textarea.form-control.is-valid { background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); } #footerContactForm .form-control.is-invalid:focus { border-color: #dc3545; box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.15); } #footerContactForm .form-control.is-valid:focus { border-color: #198754; box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.15); } /* ==================================================================== Submit Button ==================================================================== */ .btn-contact-submit { background-color: #FF8600; border-color: #FF8600; color: #fff; font-weight: 600; padding: 0.75rem 1.5rem; font-size: 1rem; border-radius: 0.375rem; transition: all 0.3s ease; display: inline-flex; align-items: center; justify-content: center; border: 2px solid #FF8600; } .btn-contact-submit:hover { background-color: #e67800; border-color: #e67800; color: #fff; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(255, 134, 0, 0.3); } .btn-contact-submit:active { background-color: #cc6a00; border-color: #cc6a00; transform: translateY(0); box-shadow: 0 2px 6px rgba(255, 134, 0, 0.2); } .btn-contact-submit:focus { background-color: #e67800; border-color: #e67800; box-shadow: 0 0 0 0.25rem rgba(255, 134, 0, 0.25); outline: 0; } .btn-contact-submit:disabled { background-color: #6c757d; border-color: #6c757d; cursor: not-allowed; opacity: 0.65; transform: none; } /* Loading State */ .btn-contact-submit.loading { position: relative; color: transparent; pointer-events: none; } .btn-contact-submit.loading::after { content: ""; position: absolute; width: 20px; height: 20px; top: 50%; left: 50%; margin-left: -10px; margin-top: -10px; border: 3px solid rgba(255, 255, 255, 0.3); border-top-color: #fff; border-radius: 50%; animation: spinner-border 0.75s linear infinite; } @keyframes spinner-border { to { transform: rotate(360deg); } } /* ==================================================================== Form Messages ==================================================================== */ #footerFormMessage { border-radius: 0.375rem; padding: 1rem; margin-top: 1rem; font-size: 0.95rem; display: none; } #footerFormMessage.show { display: block; } #footerFormMessage.alert-success { background-color: #d1e7dd; border-color: #badbcc; color: #0f5132; } #footerFormMessage.alert-danger { background-color: #f8d7da; border-color: #f5c2c7; color: #842029; } #footerFormMessage.alert-info { background-color: #cff4fc; border-color: #b6effb; color: #055160; } /* ==================================================================== Responsive Design ==================================================================== */ @media (max-width: 991.98px) { .footer-contact-section { padding: 3rem 0 !important; } .footer-contact-section h2 { font-size: 1.5rem; } .contact-info { margin-bottom: 1.5rem; } #footerContactForm .form-control { font-size: 1rem; } } @media (max-width: 767.98px) { .footer-contact-section { padding: 2rem 0 !important; margin-top: 2rem !important; } .footer-contact-section h2 { font-size: 1.35rem; margin-bottom: 1rem !important; } .footer-contact-section p { font-size: 0.95rem; } .contact-info h6 { font-size: 0.9rem; } .contact-info .text-muted { font-size: 0.85rem; } .contact-info i { font-size: 1.1rem !important; } .btn-contact-submit { padding: 0.65rem 1.25rem; font-size: 0.95rem; } #footerContactForm .form-control { padding: 0.65rem 0.85rem; font-size: 0.95rem; } } @media (max-width: 575.98px) { .footer-contact-section { padding: 1.5rem 0 !important; margin-top: 1.5rem !important; } .footer-contact-section .col-lg-10 { padding-left: 0.75rem; padding-right: 0.75rem; } .contact-info .d-flex { margin-bottom: 1rem !important; } .contact-info .d-flex:last-child { margin-bottom: 0 !important; } } /* ==================================================================== Accessibility ==================================================================== */ @media (prefers-reduced-motion: reduce) { .btn-contact-submit, #footerContactForm .form-control { transition: none; } .btn-contact-submit:hover { transform: none; } .btn-contact-submit.loading::after { animation: none; } } /* High Contrast Mode */ @media (prefers-contrast: high) { #footerContactForm .form-control { border-width: 2px; } .btn-contact-submit { border-width: 3px; } #footerContactForm .form-control:focus { outline: 3px solid #FF8600; outline-offset: 2px; } } /* Dark Mode Support (future-proofing) */ @media (prefers-color-scheme: dark) { .footer-contact-section { background-color: rgba(33, 37, 41, 0.15) !important; } .contact-info h6 { color: #f8f9fa; } #footerContactForm .form-control { background-color: #212529; border-color: #495057; color: #f8f9fa; } #footerContactForm .form-control::placeholder { color: #6c757d; } #footerContactForm .form-control:focus { background-color: #212529; border-color: #FF8600; } }