.reservas-hero { background: linear-gradient(135deg, var(--navy) 0%, #0055b3 100%); padding: 8rem 0 3.5rem; color: white; text-align: center; }
.reservas-hero h1 { font-size: 2.2rem; font-weight: 800; margin-bottom: .4rem; }
.reservas-hero p { opacity: .8; font-size: 1rem; }

.buscar-card {
    background: white; border-radius: 24px;
    box-shadow: 0 12px 48px rgba(0,53,128,.12);
    overflow: hidden; max-width: 480px; margin: 0 auto;
}
.buscar-card-top {
    background: linear-gradient(135deg, #003580 0%, #0069cc 100%);
    padding: 2rem; position: relative; overflow: hidden;
    display: flex; flex-direction: column; align-items: center;
}
.buscar-card-top::before {
    content: ''; position: absolute; width: 180px; height: 180px;
    border-radius: 50%; background: rgba(255,255,255,.07);
    top: -50px; right: -30px; z-index: 0; pointer-events: none;
}
.buscar-card-top .card-top-icon { font-size: 2.2rem; margin-bottom: .6rem; position: relative; z-index:1; }
.buscar-card-top h3 { color: white; font-size: 1.25rem; font-weight: 700; margin: 0; position: relative; z-index:1; }
.buscar-card-top p { color: rgba(255,255,255,.72); font-size: .87rem; margin: .3rem 0 0; position: relative; z-index:1; }
.buscar-card-body { padding: 2rem; }

.field-group { margin-bottom: 1.1rem; }
.field-group label { display: block; font-size: .78rem; font-weight: 600; color: #4a5568; margin-bottom: .4rem; letter-spacing: .03em; text-transform: uppercase; }
.field-wrap { position: relative; }
.field-wrap .f-icon { position: absolute; left: 13px; top: 50%; transform: translateY(-50%); color: #a0aec0; pointer-events: none; display: flex; }
.field-wrap input {
    width: 100%; border: 1.5px solid #e2e8f0; border-radius: 12px;
    padding: .75rem 1rem .75rem 2.8rem; font-size: .95rem; color: #1a202c;
    background: #f8faff; transition: border-color .2s, box-shadow .2s, background .2s;
    outline: none; font-family: inherit;
}
.field-wrap input:focus { border-color: #0069cc; background: white; box-shadow: 0 0 0 3px rgba(0,105,204,.1); }
.field-wrap input::placeholder { color: #cbd5e0; }

.auth-error {
    display: flex; align-items: center; gap: .6rem;
    background: #fff5f5; border: 1px solid #fed7d7; border-radius: 10px;
    padding: .7rem .9rem; color: #c53030; font-size: .875rem; font-weight: 500;
    margin-bottom: 1.1rem;
}
.btn-buscar {
    width: 100%; background: linear-gradient(135deg, #003580, #0069cc);
    color: white; border: none; border-radius: 12px; padding: .88rem;
    font-weight: 700; font-size: .98rem; cursor: pointer; transition: all .2s;
    box-shadow: 0 4px 14px rgba(0,105,204,.35); letter-spacing: .02em;
    display: flex; align-items: center; justify-content: center;
}
.btn-buscar:hover { box-shadow: 0 6px 20px rgba(0,105,204,.45); transform: translateY(-1px); }
.btn-buscar:active { transform: translateY(0); }
.buscar-hint { text-align: center; margin-top: 1.2rem; font-size: .86rem; color: #718096; }
.buscar-hint a { color: #0069cc; font-weight: 600; text-decoration: none; }
.buscar-hint a:hover { text-decoration: underline; }
.resultado-card { background: white; border-radius: 16px; box-shadow: 0 4px 24px rgba(0,0,0,.08); overflow: hidden; max-width: 680px; margin: 0 auto; }
.resultado-header { background: linear-gradient(135deg, var(--navy), #0055b3); padding: 1.5rem 2rem; color: white; }
.resultado-header h3 { margin: 0; font-weight: 800; font-size: 1.1rem; }
.localizador-grande { font-size: 1.8rem; font-weight: 800; letter-spacing: .12em; margin: .3rem 0 0; }
.resultado-body { padding: 1.5rem 2rem; }
.vuelo-bloque { border: 1px solid #e8ecf0; border-radius: 12px; margin-bottom: 1rem; overflow: hidden; }
.vuelo-bloque-header { background: var(--off-white); padding: .8rem 1.2rem; display: flex; justify-content: space-between; align-items: center; }
.vuelo-ruta { font-weight: 700; color: var(--navy); font-size: .95rem; }
.vuelo-meta { font-size: .8rem; color: #888; }
.estado-badge { border-radius: 50px; padding: .2rem .7rem; font-size: .75rem; font-weight: 700; }
.estado-Programado { background: #d4edda; color: #155724; }
.estado-Retrasado  { background: #fff3cd; color: #856404; }
.estado-Cancelado  { background: #f8d7da; color: #721c24; }
.pasajero-fila { display: flex; align-items: center; gap: .8rem; padding: .6rem 1.2rem; border-bottom: 1px solid #f5f5f5; }
.pasajero-fila:last-child { border-bottom: none; }
.asiento-chip { background: linear-gradient(135deg, #003580, #0069cc); color: white; border-radius: 6px; padding: .18rem .55rem; font-weight: 700; font-size: .82rem; min-width: 36px; text-align: center; }
.resumen-total { background: var(--off-white); padding: 1rem 2rem; display: flex; justify-content: space-between; align-items: center; }
.resumen-total strong { font-size: 1.2rem; color: var(--navy); }
.vuelo-horario-mini { font-size: .85rem; color: #555; font-weight: 600; }

@media(max-width:768px) {
    .reservas-hero { padding: 9rem 0 3rem; }
    .reservas-hero h1 { font-size: 1.75rem; }
    .buscar-card { border-radius: 18px; }
    .buscar-card-top { padding: 1.5rem; }
    .buscar-card-body { padding: 1.5rem; }
    .resultado-header { padding: 1.2rem 1.5rem; }
    .resultado-body { padding: 1.2rem 1.5rem; }
    .resumen-total { padding: .85rem 1.5rem; }
}
@media(max-width:480px) {
    .reservas-hero { padding: 8rem 0 2.5rem; }
    .reservas-hero h1 { font-size: 1.4rem; }
    .reservas-hero p { font-size: .88rem; }
    .buscar-card { border-radius: 14px; }
    .buscar-card-top { padding: 1.25rem; }
    .buscar-card-top h3 { font-size: 1.1rem; }
    .buscar-card-body { padding: 1.25rem; }
    .field-wrap input { font-size: .88rem; padding: .65rem .85rem .65rem 2.5rem; }
    .resultado-header { padding: 1rem 1.2rem; }
    .localizador-grande { font-size: 1.4rem; letter-spacing: .08em; }
    .resultado-body { padding: 1rem 1.2rem; }
    .vuelo-bloque-header { flex-wrap: wrap; gap: .4rem; padding: .65rem 1rem; }
    .vuelo-ruta { font-size: .88rem; }
    .pasajero-fila { padding: .55rem 1rem; gap: .5rem; }
    .resumen-total { padding: .75rem 1.2rem; flex-direction: column; align-items: flex-start; gap: .25rem; }
    .resumen-total strong { font-size: 1.05rem; }
}
