/**
 * Formulario «Solicitar P.O. BOX» de la portada — el paso 1 del registro.
 *
 * Sigue el lenguaje de la web pública (Montserrat y el azul de marca de
 * assets/css/style.css), no el del panel. Lo que añade sobre lo que había son
 * las piezas que faltaban: avisos de error, errores por campo y un estado de
 * envío. Sin ellos un fallo de validación recargaba la portada en silencio.
 */

/* ── Fondo de la sección ──────────────────────────────────────────────── */
/* Sustituye a la foto del buzón amarillo que traía style.css: se estiraba
   con background-size: 70% 100%, el amarillo no está en la paleta y los
   890px de alto fijos dejaban hueco vacío. El azul va muy diluido a
   propósito: los campos llevan borde #14B1FE y el botón es de ese mismo
   azul, y sobre un fondo saturado desaparecerían. */
.pb-section {
    background-image: linear-gradient(180deg, #F0F9FF 0%, #F8FCFF 55%, #FFFFFF 100%) !important;
    /* `.section-two` fija size 70% 100%, no-repeat y position left para la
       foto. Aplicados al degradado dejarían sin pintar el 30% derecho, así
       que las tres se devuelven a su valor por defecto. */
    background-size: auto !important;
    background-repeat: repeat !important;
    background-position: 0 0 !important;
    height: auto !important;
    padding-top: 3.5rem !important;
    padding-bottom: 2rem !important;
    margin-bottom: 1.5rem !important;
}

.pb-wrap {
    max-width: 1040px;
    margin: 0 auto;
    padding: 0 4px;
}

/* ── Montaje partido: fotos a un lado, formulario al otro ─────────────── */
/* Las fotos acompañan, no se ponen debajo de los campos: es el error que
   cometía la foto del buzón, que ocupaba el 70% del ancho por detrás. */
.pb-split {
    display: grid;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
    background: #FFFFFF;
    border: 1px solid #E2E8F0;
    border-radius: 1.5rem;
    overflow: hidden;
    box-shadow: 0 14px 40px rgba(20, 177, 254, 0.12);
}

/* Las dos fotos son los dos servicios que anuncia la marca: aéreo y
   marítimo. Apiladas ocupan la columna entera sin dejar huecos. */
.pb-photos {
    display: grid;
    grid-template-rows: 1fr 1fr;
    min-height: 100%;
}

.pb-photo {
    position: relative;
    margin: 0;
    overflow: hidden;
    min-height: 200px;
}

/* object-fit recorta, no estira: la proporción se respeta a cualquier ancho. */
.pb-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Un velo del color del servicio, para que las dos fotos convivan pese a
   que el barco es mucho más saturado que el avión. */
.pb-photo::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
}
.pb-photo:first-child::after {
    background: linear-gradient(160deg, rgba(20, 177, 254, 0.28), rgba(20, 177, 254, 0.05));
}
.pb-photo:last-child::after {
    background: linear-gradient(160deg, rgba(82, 198, 69, 0.12), rgba(6, 95, 70, 0.42));
}

.pb-tag {
    position: absolute;
    left: 1rem;
    bottom: 1rem;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.4rem 0.85rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.94);
    font-family: Montserrat, system-ui, sans-serif;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    box-shadow: 0 2px 10px rgba(15, 23, 42, 0.18);
}
.pb-tag i { font-size: 0.95rem; }
.pb-tag.is-air { color: #0A7FBF; }
.pb-tag.is-sea { color: #047857; }

.pb-form-col { padding: 2.5rem 2.25rem 2rem; min-width: 0; }

.pb-title {
    margin: 0 0 1.25rem;
    font-family: Montserrat, system-ui, sans-serif;
    font-size: 1.85rem;
    font-weight: 600;
    line-height: 1.2;
    color: #14B1FE;
}

/* Debajo de 900px la columna de fotos pasa a ser una banda de dos, y el
   formulario ocupa todo el ancho. */
@media (max-width: 900px) {
    .pb-split { grid-template-columns: 1fr; }
    .pb-photos { grid-template-rows: none; grid-template-columns: 1fr 1fr; }
    .pb-photo { min-height: 150px; }
    .pb-form-col { padding: 1.75rem 1.25rem 1.5rem; }
    .pb-title { font-size: 1.5rem; text-align: center; }
}

@media (max-width: 480px) {
    .pb-split { border-radius: 1rem; }
    .pb-photo { min-height: 118px; }
    .pb-tag { left: 0.6rem; bottom: 0.6rem; padding: 0.3rem 0.6rem; font-size: 0.7rem; }
}

/* ── Progreso del registro ────────────────────────────────────────────── */
/* Mismo lenguaje que /po-reg y la confirmación: el cliente ve el mismo
   indicador en los tres pasos. La sección «pasos» de más abajo cuenta otra
   cosa (cómo funciona el servicio) y numera distinto. */
.pb-steps {
    margin: 0 0 1.75rem;
}

.pb-steps-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.55rem;
}

.pb-steps-label {
    margin: 0;
    font-family: Montserrat, system-ui, sans-serif;
    font-size: 0.95rem;
    color: rgba(0, 0, 0, 0.5);
}
.pb-steps-label strong { color: rgba(0, 0, 0, 0.78); font-weight: 600; }

.pb-steps-pct {
    font-family: Montserrat, system-ui, sans-serif;
    font-size: 0.82rem;
    font-weight: 600;
    color: rgba(0, 0, 0, 0.5);
    background: #F1F5F9;
    border-radius: 6px;
    padding: 0.2rem 0.55rem;
    font-variant-numeric: tabular-nums;
}

.pb-steps-bar {
    height: 8px;
    border-radius: 999px;
    background: #F1F5F9;
    overflow: hidden;
}
.pb-steps-bar > div {
    height: 100%;
    border-radius: 999px;
    background: linear-gradient(90deg, #52C645, #6FD962);
}

.pb-steps-note {
    margin: 0.75rem 0 0;
    font-family: Montserrat, system-ui, sans-serif;
    font-size: 0.9rem;
    line-height: 1.55;
    color: rgba(0, 0, 0, 0.5);
}
.pb-steps-note strong { color: rgba(0, 0, 0, 0.7); font-weight: 600; }

/* ── Avisos ───────────────────────────────────────────────────────────── */
/* Lo más importante de esta pantalla: antes no existían y el cliente no
   llegaba a saber por qué no pasaba nada. */
.pb-alert {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 1.75rem;
    padding: 1rem 1.15rem;
    border-radius: 0.75rem;
    font-family: Montserrat, system-ui, sans-serif;
    font-size: 0.95rem;
    line-height: 1.6;
}
.pb-alert i { font-size: 1.25rem; flex-shrink: 0; margin-top: 1px; }
.pb-alert ul { margin: 0.35rem 0 0; padding-left: 1.15rem; }
.pb-alert li + li { margin-top: 0.25rem; }
.pb-alert a { color: inherit; font-weight: 600; }

.pb-alert-error { background: #FEE2E2; color: #991B1B; }
.pb-alert-success { background: #D1FAE5; color: #065F46; }

/* «Ya tienes cuenta» no es un error ni un éxito: es un reencuentro. Va en
   azul de marca y, sobre todo, con la salida a mano. */
.pb-alert-info { background: #DBEAFE; color: #1E40AF; }
.pb-alert-info p { margin: 0.35rem 0 0; font-size: 0.92rem; line-height: 1.55; }

.pb-alert-acts {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-top: 0.9rem;
}

.pb-btn-solid {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.6rem 1.15rem;
    border-radius: 999px;
    background: #14B1FE;
    color: #FFFFFF !important;
    font-size: 0.9rem;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}
.pb-btn-solid:hover { background: #0A9EE8; }

.pb-btn-plain {
    font-size: 0.9rem;
    font-weight: 600;
    color: #1E40AF !important;
    text-decoration: underline;
    white-space: nowrap;
}

/* ── Campos ───────────────────────────────────────────────────────────── */
.pb-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.1rem;
    margin-bottom: 1.5rem;
}

.pb-field { display: flex; flex-direction: column; min-width: 0; }

.pb-field label {
    font-family: Montserrat, system-ui, sans-serif;
    font-size: 1.05rem;
    font-weight: 600;
    line-height: 1.3;
    color: rgba(0, 0, 0, 0.45);
    margin-bottom: 0.55rem;
}
.pb-field label span { color: #DC2626; }

.pb-field input {
    width: 100%;
    height: 3.6rem;
    padding: 0 1rem;
    background: #FFFFFF;
    border: 2px solid #14B1FE;
    border-radius: 0.6rem;
    font-family: Montserrat, system-ui, sans-serif;
    font-size: 1rem;
    color: rgba(0, 0, 0, 0.8);
    transition: box-shadow 0.18s ease, border-color 0.18s ease;
}
.pb-field input::placeholder {
    font-size: 0.95rem;
    color: rgba(0, 0, 0, 0.37);
}
.pb-field input:focus {
    outline: none;
    box-shadow: 0 0 0 4px rgba(20, 177, 254, 0.18);
}
.pb-field input.is-wrong {
    border-color: #DC2626;
    background: #FEF6F6;
}

.pb-error {
    margin-top: 0.4rem;
    font-family: Montserrat, system-ui, sans-serif;
    font-size: 0.85rem;
    line-height: 1.45;
    color: #DC2626;
}

/* intl-tel-input inyecta su propio contenedor alrededor del input; sin esto
   el selector de país se sale de la caja en móvil. */
.pb-field .iti { width: 100%; display: block; }
.pb-field .iti input { width: 100%; }

/* ── Captcha y envío ──────────────────────────────────────────────────── */
.pb-captcha {
    display: flex;
    justify-content: center;
    margin-bottom: 1.5rem;
}

/* El reCAPTCHA mide 304px y no se encoge: en pantallas estrechas se escala. */
@media (max-width: 360px) {
    .pb-captcha { transform: scale(0.88); transform-origin: center; }
}

.pb-actions {
    display: flex;
    justify-content: center;
}

.pb-submit {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    padding: 1rem 2.75rem;
    border: 2px solid transparent;
    border-radius: 50px;
    background: #14B1FE;
    color: #FFFFFF;
    font-family: Montserrat, system-ui, sans-serif;
    font-size: 1rem;
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    transition: background 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}
.pb-submit:hover {
    background: transparent;
    border-color: #14B1FE;
    color: #14B1FE;
}
.pb-submit[disabled] {
    opacity: 0.65;
    cursor: default;
    background: #14B1FE;
    color: #FFFFFF;
    border-color: transparent;
}

.pb-spinner {
    width: 1rem;
    height: 1rem;
    border: 2px solid rgba(255, 255, 255, 0.4);
    border-top-color: #FFFFFF;
    border-radius: 50%;
    animation: pb-spin 0.7s linear infinite;
}
@keyframes pb-spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
    .pb-field input, .pb-submit { transition: none; }
    .pb-spinner { animation: none; }
}

/* ── Nota legal bajo el formulario ────────────────────────────────────── */
/* `mainreceptauder` no estaba definida en ninguna hoja, así que el bloque
   salía con los valores por defecto de Bootstrap: pegado a la tarjeta de
   arriba y con la cola del <ul> sumándose al relleno de la sección. */
.pb-note {
    margin: 2.5rem 0 0;
    padding: 1.25rem 1.5rem;
    background: #F8FAFC;
    border: 1px solid #E2E8F0;
    border-left: 4px solid #F59E0B;
    border-radius: 0.75rem;
    font-family: Montserrat, system-ui, sans-serif;
}

.pb-note h6 {
    margin: 0 0 0.6rem;
    font-size: 0.95rem;
    font-weight: 600;
    line-height: 1.5;
    color: rgba(0, 0, 0, 0.7);
}
.pb-note h6 b { color: #B45309; }

.pb-note ul {
    margin: 0;
    padding-left: 1.15rem;
    list-style: disc;
}

.pb-note li {
    margin: 0;
    font-size: 0.88rem;
    line-height: 1.6;
    color: rgba(0, 0, 0, 0.55);
}
.pb-note li + li { margin-top: 0.3rem; }

@media (max-width: 767px) {
    .pb-note { margin-top: 1.75rem; padding: 1rem 1.15rem; }
    .pb-note li { font-size: 0.84rem; }
}
