/* ==========================================================================
   Contacto — estilos propios de contacto.html
   Usa las variables definidas en estilos.css
   ========================================================================== */

.contact-hero {
    padding-bottom: 0;
}

.contact-section {
    padding-top: 4rem;
}

.contact {
    display: grid;
    gap: 3rem;
}

@media (min-width: 992px) {
    .contact {
        grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
        gap: 4rem;
        align-items: start;
    }
}

/* Datos de contacto */
.contact__list {
    margin: 2rem 0 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 1.5rem;
}

.contact__list li {
    display: grid;
    gap: .25rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid var(--color-border);
}

.contact__list li:last-child {
    border-bottom: 0;
    padding-bottom: 0;
}

.contact__label {
    font-size: .875rem;
    color: var(--color-text-subtle);
}

.contact__list a {
    color: var(--color-text);
    font-size: 1.125rem;
    font-weight: 600;
    text-decoration: none;
    transition: color var(--transition);
}

.contact__list a:hover {
    color: var(--color-accent);
}

/* Caja del formulario */
.contact__form-box {
    padding: 2rem 1.5rem;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
}

@media (min-width: 576px) {
    .contact__form-box { padding: 2.5rem; }
}

.contact__form-title {
    font-size: 1.5rem;
    font-weight: 700;
    letter-spacing: -.02em;
    margin-bottom: 1.75rem;
}

/* Formulario */
.contact-form {
    display: grid;
    gap: 1.25rem;
}

.contact-form__row {
    display: grid;
    gap: 1.25rem;
}

@media (min-width: 576px) {
    .contact-form__row { grid-template-columns: 1fr 1fr; }
}

.field {
    display: grid;
    gap: .5rem;
}

.field label {
    font-size: .875rem;
    font-weight: 600;
    color: var(--color-text);
}

.field__optional {
    font-weight: 400;
    color: var(--color-text-subtle);
}

.field input,
.field select,
.field textarea {
    width: 100%;
    padding: .8rem 1rem;
    font: inherit;
    font-size: 1rem;
    color: var(--color-text);
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    transition: border-color var(--transition), box-shadow var(--transition);
}

.field textarea {
    resize: vertical;
    min-height: 9rem;
}

.field select {
    appearance: none;
    padding-right: 2.75rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23b3b3b3' viewBox='0 0 16 16'%3E%3Cpath d='M1.6 5.1a.5.5 0 0 1 .7 0L8 10.8l5.7-5.7a.5.5 0 0 1 .7.7l-6 6a.5.5 0 0 1-.7 0l-6-6a.5.5 0 0 1 0-.7z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 1rem center;
    cursor: pointer;
}

.field select option,
.field select optgroup {
    background: var(--color-surface);
    color: var(--color-text);
}

.field input:hover,
.field select:hover,
.field textarea:hover {
    border-color: rgba(255, 255, 255, .25);
}

.field input:focus,
.field select:focus,
.field textarea:focus {
    outline: none;
    border-color: var(--color-accent);
    box-shadow: 0 0 0 3px rgba(250, 204, 21, .2);
}

/* Errores: se muestran solo después de intentar enviar */
.field__error {
    display: none;
    margin: 0;
    font-size: .8125rem;
    color: #f87171;
}

.field.is-invalid input,
.field.is-invalid textarea {
    border-color: #f87171;
}

.field.is-invalid .field__error {
    display: block;
}

/* Campo trampa antispam */
.field--trap {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

/* Pie del formulario */
.contact-form__footer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem 1.5rem;
    margin-top: .5rem;
}

.contact-form__submit {
    font-size: 1rem;
    padding: .875rem 1.75rem;
}

.contact-form__submit[disabled] {
    opacity: .6;
    cursor: wait;
}

.contact-form__privacy {
    margin: 0;
    font-size: .8125rem;
    color: var(--color-text-subtle);
}

/* Mensaje de resultado */
.form-status {
    padding: 1rem 1.25rem;
    font-size: .9375rem;
    line-height: 1.5;
    border-radius: var(--radius-sm);
    border: 1px solid;
}

.form-status--ok {
    color: var(--color-text);
    background: rgba(250, 204, 21, .08);
    border-color: var(--color-border-accent);
}

.form-status--error {
    color: #fecaca;
    background: rgba(248, 113, 113, .08);
    border-color: rgba(248, 113, 113, .4);
}
