﻿:root {
    --navy: #071f3b;
    --navy-2: #0b2f57;
    --blue: #1269aa;
    --blue-light: #28a8e6;
    --surface: #ffffff;
    --background: #f2f6fa;
    --text: #10243b;
    --muted: #74869b;
    --border: #dce6ef;
    --danger: #d9343a;
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
html { min-height: 100%; background: var(--navy); }
body { margin: 0; color: var(--text); }
a { color: inherit; text-decoration: none; }
button, input { font: inherit; }
button { cursor: pointer; }

.mobile-login-body {
    min-height: 100dvh;
    background:
        radial-gradient(circle at 15% 8%, rgba(40,168,230,.23), transparent 28%),
        linear-gradient(155deg, var(--navy) 0%, #0a3c6d 55%, #081e39 100%);
    padding: max(24px, env(safe-area-inset-top)) 18px max(24px, env(safe-area-inset-bottom));
}

.mobile-login-shell {
    min-height: calc(100dvh - 48px);
    display: grid;
    place-items: center;
}

.mobile-login-card {
    width: min(100%, 430px);
    background: rgba(255,255,255,.98);
    border-radius: 28px;
    padding: 30px 24px 22px;
    box-shadow: 0 24px 70px rgba(0,0,0,.28);
}

.mobile-login-logo { text-align: center; }
.mobile-login-logo img { width: 160px; max-height: 72px; object-fit: contain; }
.mobile-login-logo span { display: block; margin-top: 8px; color: var(--blue); font-size: .72rem; font-weight: 800; letter-spacing: .18em; }
.mobile-login-heading { text-align: center; margin: 24px 0; }
.mobile-login-heading h1 { margin: 0; font-size: 2rem; }
.mobile-login-heading p { margin: 8px 0 0; color: var(--muted); }

.validation-summary:empty { display: none; }
.validation-summary { margin-bottom: 16px; padding: 12px 14px; border-radius: 12px; background: #fff0f0; border: 1px solid #ffc7c9; color: var(--danger); font-size: .9rem; }
.validation-summary ul { margin: 0; padding-left: 20px; }
.field-group { margin-bottom: 17px; }
.field-group label { display: block; margin-bottom: 7px; font-size: .88rem; font-weight: 750; }
.input-wrap { display: flex; align-items: center; min-height: 54px; border: 1px solid var(--border); border-radius: 14px; background: #fbfdff; transition: .2s; }
.input-wrap:focus-within { border-color: var(--blue-light); box-shadow: 0 0 0 4px rgba(40,168,230,.14); }
.input-wrap > span { padding-left: 15px; color: #8094a9; }
.input-wrap input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; padding: 15px 12px; color: var(--text); }
.show-password { border: 0; background: transparent; padding: 16px 14px; color: var(--blue); font-size: .82rem; font-weight: 700; }
.field-error { display: block; margin-top: 5px; color: var(--danger); font-size: .8rem; }
.remember-row { display: flex; align-items: center; gap: 9px; color: var(--muted); font-size: .88rem; margin: 6px 0 19px; }
.remember-row input { width: 17px; height: 17px; accent-color: var(--blue); }
.mobile-login-button, .install-button, .secondary-install-button { width: 100%; border: 0; border-radius: 14px; font-weight: 800; }
.mobile-login-button { min-height: 55px; display: flex; justify-content: center; align-items: center; gap: 12px; color: white; background: linear-gradient(100deg, #0d4f8d, #177bb7); box-shadow: 0 12px 25px rgba(13,79,141,.22); }
.secondary-install-button { margin-top: 12px; min-height: 48px; background: #eaf5fc; color: var(--blue); }
.mobile-login-card footer { margin-top: 24px; text-align: center; color: #93a3b3; font-size: .76rem; }

.mobile-app-body { min-height: 100dvh; background: var(--background); padding-bottom: calc(82px + env(safe-area-inset-bottom)); }
.mobile-topbar { position: sticky; top: 0; z-index: 10; min-height: 70px; padding: max(10px, env(safe-area-inset-top)) 16px 10px; display: flex; align-items: center; justify-content: space-between; background: rgba(255,255,255,.96); border-bottom: 1px solid var(--border); backdrop-filter: blur(12px); }
.mobile-brand img { width: 115px; height: 45px; object-fit: contain; }
.mobile-user-actions { display: flex; align-items: center; gap: 10px; }
.mobile-user-copy { text-align: right; max-width: 145px; }
.mobile-user-copy strong, .mobile-user-copy small { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.mobile-user-copy strong { font-size: .82rem; }
.mobile-user-copy small { color: var(--muted); font-size: .72rem; }
.icon-button { width: 38px; height: 38px; border: 0; border-radius: 12px; background: #edf4f9; color: var(--blue); font-size: 1.1rem; }
.mobile-content { width: min(100%, 720px); margin: 0 auto; padding: 18px 16px 30px; }
.mobile-hero-card { min-height: 178px; padding: 24px; border-radius: 24px; display: flex; justify-content: space-between; align-items: flex-start; color: white; background: linear-gradient(135deg, #08294c, #126aa9); box-shadow: 0 16px 35px rgba(7,31,59,.2); }
.eyebrow { color: var(--blue-light); font-size: .72rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.mobile-hero-card h1 { margin: 12px 0 8px; font-size: 1.8rem; line-height: 1.1; }
.mobile-hero-card p { max-width: 270px; margin: 0; color: rgba(255,255,255,.78); line-height: 1.5; }
.member-badge { min-width: 48px; height: 48px; display: grid; place-items: center; border-radius: 16px; background: rgba(255,255,255,.15); border: 1px solid rgba(255,255,255,.22); font-size: 1.2rem; font-weight: 900; }
.quick-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 16px 0; }
.quick-action { min-height: 152px; padding: 18px; border-radius: 20px; background: white; border: 1px solid var(--border); box-shadow: 0 9px 25px rgba(24,52,78,.06); }
.quick-action strong, .quick-action small { display: block; }
.quick-action strong { margin: 14px 0 6px; }
.quick-action small { color: var(--muted); line-height: 1.35; }
.quick-icon { width: 44px; height: 44px; display: grid; place-items: center; border-radius: 14px; background: #eaf5fc; color: var(--blue); font-size: 1.25rem; }
.primary-action { color: white; border: 0; background: linear-gradient(145deg, #0d558f, #1385c1); }
.primary-action small { color: rgba(255,255,255,.76); }
.primary-action .quick-icon { background: rgba(255,255,255,.16); color: white; }
.mobile-panel { padding: 20px; border-radius: 20px; background: white; border: 1px solid var(--border); }
.mobile-panel h2 { margin: 7px 0 0; font-size: 1.25rem; }
.mobile-panel p { color: var(--muted); line-height: 1.55; }
.install-button { min-height: 49px; color: white; background: var(--blue); }
.mobile-bottom-nav { position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; min-height: 68px; padding: 7px 12px max(7px, env(safe-area-inset-bottom)); display: flex; justify-content: space-around; background: rgba(255,255,255,.97); border-top: 1px solid var(--border); backdrop-filter: blur(14px); }
.mobile-bottom-nav a, .mobile-bottom-nav button { min-width: 64px; border: 0; background: transparent; color: #8292a2; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; }
.mobile-bottom-nav span { font-size: 1.2rem; }
.mobile-bottom-nav small { font-size: .68rem; }
.mobile-bottom-nav .active { color: var(--blue); font-weight: 750; }

@media (max-width: 380px) {
    .mobile-login-card { padding-inline: 18px; border-radius: 22px; }
    .mobile-user-copy { display: none; }
    .quick-actions { grid-template-columns: 1fr; }
}

/* =========================================================
   AeroFlex Next Mobile v0.3.1.0
   Base visual del portal de socios
   ========================================================= */

button, input, a { font: inherit; }
button { cursor: pointer; }
a { color: inherit; text-decoration: none; }

.mobile-content { padding-top: 20px; }
.mobile-topbar { box-shadow: 0 4px 18px rgba(20, 55, 84, .04); }
.mobile-brand { display: inline-flex; align-items: center; }
.mobile-brand img { width: 122px; }
.icon-button { display: grid; place-items: center; transition: transform .18s ease, background .18s ease; }
.icon-button:active { transform: scale(.94); }

.hero-copy { min-width: 0; }
.mobile-hero-card { position: relative; overflow: hidden; }
.mobile-hero-card::after {
    content: '';
    position: absolute;
    width: 190px;
    height: 190px;
    right: -88px;
    bottom: -112px;
    border-radius: 50%;
    background: rgba(255,255,255,.07);
}
.mobile-hero-card h1 { text-transform: none; }
.member-badge { flex: 0 0 auto; position: relative; z-index: 1; }

.section-heading { display: flex; align-items: end; justify-content: space-between; margin: 24px 2px 12px; }
.section-heading h2 { margin: 5px 0 0; font-size: 1.18rem; }

.quick-action {
    position: relative;
    width: 100%;
    text-align: left;
    color: var(--text);
    transition: transform .18s ease, box-shadow .18s ease;
}
.quick-action:active { transform: scale(.985); }
.quick-action .coming-soon {
    display: inline-flex;
    margin-top: 13px;
    padding: 5px 9px;
    border-radius: 999px;
    color: #66798b;
    background: #eef3f7;
    font-size: .66rem;
    font-weight: 800;
    letter-spacing: .02em;
}
.primary-action .coming-soon { color: white; background: rgba(255,255,255,.16); }

.panel-heading { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.panel-icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 14px; color: var(--blue); background: #eaf5fc; font-size: 1.15rem; font-weight: 900; }
.install-panel { margin-top: 4px; }
.ios-install-note, .login-install-help { margin: 12px 0 0; padding: 11px 13px; border-radius: 12px; color: #496377; background: #edf6fc; font-size: .82rem; line-height: 1.45; }
.login-install-help { text-align: center; }

.mobile-bottom-nav button.nav-disabled { opacity: .58; cursor: default; }
.mobile-bottom-nav a, .mobile-bottom-nav button { border-radius: 12px; }
.mobile-bottom-nav .active { background: #edf6fc; }

.app-toast {
    position: fixed;
    left: 50%;
    bottom: calc(88px + env(safe-area-inset-bottom));
    z-index: 100;
    width: max-content;
    max-width: calc(100% - 32px);
    padding: 11px 15px;
    border-radius: 12px;
    color: white;
    background: rgba(7, 31, 59, .94);
    box-shadow: 0 12px 32px rgba(0,0,0,.22);
    font-size: .84rem;
    font-weight: 700;
    text-align: center;
    opacity: 0;
    transform: translate(-50%, 10px);
    transition: opacity .18s ease, transform .18s ease;
}
.app-toast.visible { opacity: 1; transform: translate(-50%, 0); }

@media (min-width: 721px) {
    .mobile-bottom-nav { left: 50%; right: auto; width: 720px; transform: translateX(-50%); border-left: 1px solid var(--border); border-right: 1px solid var(--border); border-radius: 18px 18px 0 0; }
}

@media (display-mode: standalone) {
    #installAppButton,
    #installAppButtonCard,
    #installAppButtonLogin,
    #iosInstallHelp { display: none !important; }
}

/* v0.3.1.1 - Mis reservas */
.page-heading-card { padding: 22px; border-radius: 22px; display: flex; justify-content: space-between; align-items: flex-start; color: white; background: linear-gradient(135deg, #08294c, #126aa9); box-shadow: 0 14px 30px rgba(7,31,59,.16); }
.page-heading-card h1 { margin: 8px 0 5px; font-size: 1.65rem; }
.page-heading-card p { margin: 0; max-width: 420px; color: rgba(255,255,255,.78); line-height: 1.45; }
.heading-icon { width: 48px; height: 48px; flex: 0 0 48px; display: grid; place-items: center; border-radius: 15px; background: rgba(255,255,255,.14); font-size: 1.25rem; }
.reservation-filters { margin: 15px 0; padding: 5px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; border-radius: 15px; background: #e4edf4; }
.reservation-filters a { min-height: 42px; display: grid; place-items: center; border-radius: 11px; color: #687c91; font-size: .84rem; font-weight: 750; }
.reservation-filters a.active { color: var(--blue); background: white; box-shadow: 0 5px 14px rgba(24,52,78,.09); }
.reservation-list { display: grid; gap: 13px; }
.reservation-card { padding: 18px; border: 1px solid var(--border); border-radius: 20px; background: white; box-shadow: 0 8px 24px rgba(24,52,78,.055); }
.reservation-card header { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.reservation-code { color: var(--blue); font-size: .72rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.reservation-card h2 { margin: 5px 0 0; font-size: 1.03rem; }
.status-pill { flex: 0 0 auto; padding: 7px 9px; border-radius: 999px; font-size: .68rem; font-weight: 850; }
.status-pending { color: #8a5a00; background: #fff3cf; }
.status-confirmed { color: #0b6f44; background: #dcf7e9; }
.status-completed { color: #1b5e85; background: #dff2fc; }
.status-cancelled { color: #a52e34; background: #ffe4e5; }
.route-row { margin: 20px 0 17px; display: grid; grid-template-columns: minmax(58px, auto) 1fr minmax(58px, auto); align-items: center; gap: 12px; }
.airport-code strong, .airport-code small { display: block; }
.airport-code strong { font-size: 1.35rem; letter-spacing: .04em; }
.airport-code small { margin-top: 2px; color: var(--muted); font-size: .68rem; }
.airport-code.destination { text-align: right; }
.route-line { position: relative; height: 1px; background: #cfdce7; text-align: center; }
.route-line::before, .route-line::after { content: ''; position: absolute; top: -3px; width: 7px; height: 7px; border-radius: 50%; background: #b5c8d8; }
.route-line::before { left: 0; }
.route-line::after { right: 0; }
.route-line span { position: relative; top: -12px; padding: 0 7px; color: var(--blue); background: white; }
.reservation-meta-grid { padding-top: 14px; display: grid; grid-template-columns: 1.25fr 1fr .55fr; gap: 10px; border-top: 1px solid #edf2f6; }
.reservation-meta-grid span, .reservation-meta-grid strong { display: block; }
.reservation-meta-grid span { margin-bottom: 4px; color: var(--muted); font-size: .68rem; }
.reservation-meta-grid strong { font-size: .78rem; line-height: 1.3; }
.empty-state-card { padding: 34px 22px; text-align: center; border: 1px solid var(--border); border-radius: 21px; background: white; }
.empty-state-icon { width: 62px; height: 62px; margin: 0 auto 16px; display: grid; place-items: center; border-radius: 20px; color: var(--blue); background: #eaf5fc; font-size: 1.65rem; }
.empty-state-card h2 { margin: 0 0 8px; font-size: 1.2rem; }
.empty-state-card p { margin: 0 auto 18px; max-width: 350px; color: var(--muted); line-height: 1.5; }
.secondary-link-button { min-height: 44px; padding: 0 18px; display: inline-flex; align-items: center; justify-content: center; border-radius: 13px; color: white; background: var(--blue); font-weight: 750; }
@media (max-width: 430px) {
    .reservation-meta-grid { grid-template-columns: 1fr 1fr; }
    .reservation-meta-grid > div:last-child { grid-column: 1 / -1; }
}

/* =========================================================
   AeroFlex Next Mobile v0.3.1.1a
   Itinerario completo en tarjetas de reserva
   ========================================================= */
.reservation-card-itinerary .route-row { display: none; }
.itinerary-block {
    margin: 18px 0 16px;
    padding: 15px;
    border: 1px solid #e2ebf2;
    border-radius: 16px;
    background: #f7fafc;
}
.itinerary-heading {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 11px;
    color: #61768a;
    font-size: .7rem;
    font-weight: 850;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.itinerary-plane {
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border-radius: 9px;
    color: var(--blue);
    background: #e5f3fb;
    font-size: .86rem;
}
.itinerary-segments { display: grid; gap: 8px; }
.itinerary-segment {
    min-height: 39px;
    padding: 7px 10px;
    display: grid;
    grid-template-columns: 24px minmax(42px, auto) 22px minmax(42px, auto);
    align-items: center;
    justify-content: start;
    column-gap: 8px;
    border-radius: 11px;
    background: white;
    box-shadow: inset 0 0 0 1px #e9f0f5;
}
.itinerary-segment strong {
    color: #10243b;
    font-size: 1rem;
    letter-spacing: .04em;
}
.segment-number {
    width: 22px;
    height: 22px;
    display: grid;
    place-items: center;
    border-radius: 7px;
    color: #4b6b84;
    background: #eaf1f6;
    font-size: .66rem;
    font-weight: 850;
}
.segment-arrow {
    color: var(--blue);
    font-size: 1.05rem;
    font-weight: 900;
    text-align: center;
}
.remaining-segments {
    margin-top: 10px;
    color: var(--blue);
    font-size: .75rem;
    font-weight: 800;
}
.itinerary-empty {
    padding: 10px 0 2px;
    color: var(--muted);
    font-size: .83rem;
}
@media (max-width: 360px) {
    .itinerary-segment { grid-template-columns: 22px minmax(36px, auto) 18px minmax(36px, auto); column-gap: 6px; }
    .itinerary-segment strong { font-size: .9rem; }
}

/* AeroFlex Next Mobile v0.3.1.2 - Nueva reserva */
.hero-symbol{display:grid;place-items:center;width:48px;height:48px;flex:0 0 48px;border-radius:16px;color:#fff;background:rgba(255,255,255,.14);font-size:1.35rem}
.reservation-form{display:grid;gap:14px;padding-bottom:94px}.form-panel{padding:20px}.form-field{display:grid;gap:7px;min-width:0}.form-field label{color:#365574;font-size:.78rem;font-weight:800}.form-field select,.form-field input,.form-field textarea{box-sizing:border-box;width:100%;min-height:48px;border:1px solid #cbdbea;border-radius:13px;background:#fff;color:#0b2946;padding:11px 13px;font:inherit;outline:none}.form-field textarea{resize:vertical}.form-field select:focus,.form-field input:focus,.form-field textarea:focus{border-color:#0b75bc;box-shadow:0 0 0 3px rgba(11,117,188,.12)}.field-validation{min-height:16px;color:#c62828;font-size:.75rem;font-weight:700}.validation-summary{color:#9b1c1c;background:#fff1f1;border:1px solid #ffcaca;border-radius:14px;padding:12px 15px}.validation-summary:empty{display:none}.validation-summary ul{margin:0;padding-left:18px}
.segmented-control{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;background:#e7eff7;border-radius:14px}.segmented-control label{cursor:pointer}.segmented-control input{position:absolute;opacity:0;pointer-events:none}.segmented-control span{display:grid;place-items:center;min-height:42px;padding:8px;border-radius:10px;color:#5d7892;font-size:.8rem;font-weight:800;text-align:center}.segmented-control input:checked+span{background:#fff;color:#0565a8;box-shadow:0 4px 12px rgba(26,66,102,.1)}
.switch-row{display:flex;justify-content:space-between;align-items:center;gap:15px;padding-top:8px}.switch-row span{display:grid;gap:3px}.switch-row small{color:#65809a}.switch-row input{width:22px;height:22px;accent-color:#0878bd}.route-form-grid{display:grid;grid-template-columns:minmax(0,1fr) 26px minmax(0,1fr);align-items:end;gap:8px}.route-swap{display:grid;place-items:center;height:48px;color:#0878bd;font-weight:900}.date-time-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:10px;margin-top:14px}.return-route-preview{display:flex;justify-content:center;align-items:center;gap:16px;margin-bottom:14px;padding:13px;border-radius:14px;background:#edf5fb;color:#0c4f82}.form-help{margin:12px 0 0;color:#617b94;font-size:.82rem;line-height:1.45}
.sticky-form-actions{position:fixed;z-index:30;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:calc(72px + env(safe-area-inset-bottom));display:grid;grid-template-columns:.75fr 1.25fr;gap:10px;max-width:688px;margin:0 auto;padding:10px;border:1px solid rgba(203,219,234,.9);border-radius:18px;background:rgba(255,255,255,.96);box-shadow:0 12px 30px rgba(15,48,78,.18);backdrop-filter:blur(10px)}.primary-button,.secondary-button{display:grid;place-items:center;min-height:48px;border:0;border-radius:13px;font-weight:850;text-decoration:none;cursor:pointer}.primary-button{color:#fff;background:linear-gradient(135deg,#075e9b,#0985c9)}.primary-button:disabled{opacity:.65;cursor:wait}.secondary-button{color:#315b7c;background:#eaf1f7}.success-banner{display:flex;align-items:center;gap:10px;margin-bottom:14px;padding:13px 15px;border:1px solid #bcebd2;border-radius:14px;color:#08713d;background:#e9faf1}.success-banner span{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;color:#fff;background:#13a05b}
@media(max-width:430px){.route-form-grid{grid-template-columns:1fr}.route-swap{height:22px;transform:rotate(90deg)}.date-time-grid{grid-template-columns:1fr 1fr}}

/* =========================================================
   AeroFlex Next Mobile v0.3.1.2a
   Wizard UX de nueva solicitud
   ========================================================= */
.reservation-wizard{display:grid;gap:18px;padding-bottom:104px}.wizard-header{display:flex;align-items:center;gap:14px;padding:4px 2px}.wizard-header h1{margin:4px 0 0;font-size:1.25rem}.wizard-back-link{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--border);border-radius:14px;background:#fff;color:var(--blue);font-size:1.35rem;font-weight:900;box-shadow:0 5px 14px rgba(24,52,78,.06)}
.wizard-progress{display:grid;grid-template-columns:auto 1fr auto 1fr auto 1fr auto;align-items:start;padding:6px 8px}.wizard-progress i{height:2px;margin-top:17px;background:#d9e5ef}.wizard-progress-item{display:grid;justify-items:center;gap:5px;padding:0;border:0;background:transparent;color:#8295a8;font:inherit}.wizard-progress-item span{width:34px;height:34px;display:grid;place-items:center;border:1px solid #c9d8e5;border-radius:50%;background:#fff;font-size:.77rem;font-weight:900}.wizard-progress-item small{font-size:.65rem;font-weight:750}.wizard-progress-item.active{color:var(--blue)}.wizard-progress-item.active span,.wizard-progress-item.complete span{border-color:#0878bd;color:#fff;background:#0878bd}.wizard-progress-item.complete span{font-size:0}.wizard-progress-item.complete span::after{content:'✓';font-size:.85rem}.wizard-progress-item.complete+i{background:#0878bd}
.wizard-validation{margin:0}.wizard-step{display:none;animation:wizardFade .22s ease}.wizard-step.active{display:block}.wizard-step-heading{margin-bottom:17px}.wizard-step-heading>span{color:#7188a0;font-size:.7rem;font-weight:850;letter-spacing:.1em;text-transform:uppercase}.wizard-step-heading h2{margin:7px 0 6px;font-size:1.5rem;line-height:1.15}.wizard-step-heading p{margin:0;color:var(--muted);font-size:.86rem;line-height:1.45}@keyframes wizardFade{from{opacity:.35;transform:translateY(5px)}to{opacity:1;transform:none}}
.mission-card-list{display:grid;gap:12px}.mission-choice-card{position:relative;min-height:104px;padding:18px 45px 18px 16px;display:grid;grid-template-columns:48px 1fr;align-items:center;gap:14px;border:1px solid #d4e0ea;border-radius:18px;background:#fff;cursor:pointer;transition:.18s ease}.mission-choice-card:hover{border-color:#7ab7df}.mission-choice-card:has(input:checked){border:2px solid #0878bd;padding:17px 44px 17px 15px;box-shadow:0 8px 24px rgba(8,120,189,.11)}.mission-choice-card input{position:absolute;opacity:0;pointer-events:none}.mission-choice-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:15px;background:#eaf5fc;font-size:1.35rem}.mission-choice-copy{display:grid;gap:5px}.mission-choice-copy strong{font-size:.96rem}.mission-choice-copy small{color:#667e95;font-size:.78rem;line-height:1.45}.mission-choice-check{position:absolute;right:15px;top:15px;width:23px;height:23px;display:grid;place-items:center;border:1px solid #cbd9e5;border-radius:50%;color:transparent;font-size:.72rem}.mission-choice-card:has(input:checked) .mission-choice-check{border-color:#0878bd;color:#fff;background:#0878bd}
.wizard-info-card{display:flex;align-items:flex-start;gap:11px;margin-top:16px;padding:14px;border-radius:14px;color:#365b7d;background:#edf6fc;font-size:.8rem;line-height:1.45}.wizard-info-card>span{width:23px;height:23px;flex:0 0 23px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#0878bd;font-size:.7rem;font-weight:900}.wizard-info-card p{margin:1px 0 0;color:inherit}
.trip-type-tabs{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;padding:5px;border:1px solid #d4e1ec;border-radius:15px;background:#f7fafc}.trip-type-tabs label{cursor:pointer}.trip-type-tabs input{position:absolute;opacity:0}.trip-type-tabs span,.trip-type-tabs button{min-height:43px;padding:8px;display:grid;place-items:center;border:0;border-radius:11px;color:#45647f;background:transparent;font-size:.76rem;font-weight:850;text-align:center}.trip-type-tabs input:checked+span{color:#fff;background:#0878bd;box-shadow:0 5px 14px rgba(8,120,189,.22)}.trip-type-tabs button:disabled{opacity:.52}
.route-selector-card{position:relative;margin-top:14px;border:1px solid #d5e2ec;border-radius:18px;background:#fff;overflow:hidden}.route-airport-field{min-height:102px;padding:16px 58px 14px 16px;display:grid;grid-template-columns:30px 1fr;align-items:start;gap:10px}.route-airport-field+.route-airport-field{border-top:1px solid #e3ebf2}.route-field-icon{margin-top:21px;color:#0878bd;font-size:1.7rem;line-height:1}.route-airport-field .form-field label{font-size:.67rem;letter-spacing:.12em;text-transform:uppercase}.route-airport-field select{min-height:46px;padding:8px 4px;border:0;border-radius:0;background:transparent;font-size:.92rem;font-weight:800;box-shadow:none!important}.swap-airports-button{position:absolute;z-index:2;right:14px;top:50%;width:44px;height:44px;transform:translateY(-50%);border:1px solid #cce0ef;border-radius:13px;color:#0878bd;background:#fff;font-size:1.25rem;font-weight:900}
.wizard-dates-card{margin-top:14px;display:grid;grid-template-columns:1fr 1fr;border:1px solid #d5e2ec;border-radius:18px;background:#fff;overflow:hidden}.wizard-dates-card>div{padding:15px}.wizard-dates-card>div+div{border-left:1px solid #dce6ee}.date-card-label{display:block;margin-bottom:8px;color:#6a8298;font-size:.68rem;font-weight:850;letter-spacing:.11em;text-transform:uppercase}.wizard-date-grid{grid-template-columns:1fr;gap:6px;margin:0}.wizard-date-grid .form-field label{position:absolute;width:1px;height:1px;overflow:hidden}.wizard-date-grid input{min-height:42px;padding:7px 5px;border:0;border-bottom:1px solid #edf2f6;border-radius:0;box-shadow:none!important;font-size:.87rem}.duration-notice{display:flex;align-items:center;gap:9px;margin-top:13px;padding:12px 14px;border-radius:13px;color:#386485;background:#edf6fc;font-size:.78rem}.duration-notice.warning{color:#8a5a00;background:#fff4d6}
.wizard-details-panel{display:grid;gap:24px}.details-question{display:grid;gap:11px}.yes-no-control{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;border-radius:14px;background:#e7eff7}.yes-no-control input{position:absolute;opacity:0}.yes-no-control span{min-height:42px;display:grid;place-items:center;border-radius:10px;color:#5d7892;font-size:.8rem;font-weight:850}.yes-no-control input:checked+span{color:#fff;background:#0878bd}.notes-field{position:relative}.textarea-counter{position:absolute;right:10px;bottom:22px;color:#7890a6;font-size:.69rem}.shared-coming-soon>span{background:#6a57b8}
.confirmation-card{padding:18px;border:1px solid #d4e1eb;border-radius:19px;background:#fff;box-shadow:0 9px 24px rgba(24,52,78,.05)}.confirmation-card header{display:flex;align-items:center;gap:11px}.confirmation-card header>div{display:grid;gap:3px}.confirmation-card header small{color:var(--muted)}.confirmation-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#eaf5fc;font-size:1.2rem}.summary-trip-pill{margin-left:auto;padding:6px 9px;border-radius:999px;color:#08713d;background:#def7e9;font-size:.67rem;font-weight:850}.confirmation-route{margin:20px 0;padding:18px 10px;display:flex;align-items:center;justify-content:center;gap:12px;border-top:1px solid #edf2f6;border-bottom:1px solid #edf2f6;color:#0c2945}.confirmation-route span{color:#0878bd}.confirmation-data{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:14px}.confirmation-data div:last-child{grid-column:1/-1}.confirmation-data dt{color:#7890a6;font-size:.67rem}.confirmation-data dd{margin:4px 0 0;font-size:.79rem;font-weight:850}
.wizard-actions{position:fixed;z-index:30;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:calc(72px + env(safe-area-inset-bottom));display:grid;grid-template-columns:.8fr 1.2fr;gap:10px;max-width:688px;margin:0 auto;padding:10px;border:1px solid rgba(203,219,234,.9);border-radius:18px;background:rgba(255,255,255,.97);box-shadow:0 12px 30px rgba(15,48,78,.18);backdrop-filter:blur(10px)}.wizard-actions .primary-button span{margin-left:7px}.confirm-button{background:linear-gradient(135deg,#159b55,#22ba6b)}
@media(max-width:390px){.wizard-progress-item small{font-size:.59rem}.wizard-step-heading h2{font-size:1.32rem}.mission-choice-card{grid-template-columns:42px 1fr}.mission-choice-icon{width:42px;height:42px}.trip-type-tabs span,.trip-type-tabs button{font-size:.68rem}.wizard-dates-card{grid-template-columns:1fr}.wizard-dates-card>div+div{border-left:0;border-top:1px solid #dce6ee}.confirmation-route{gap:8px;font-size:.88rem}}
[hidden] { display: none !important; }
.airport-native-select { position: absolute !important; width: 1px !important; height: 1px !important; opacity: 0 !important; pointer-events: none !important; }
.airport-picker-field { position: relative; }
.airport-picker-button { width: 100%; border: 0; background: transparent; padding: 2px 0 0; text-align: left; color: inherit; cursor: pointer; }
.airport-picker-button strong, .airport-picker-button small { display: block; }
.airport-picker-primary { color: #64788e; font-size: 1rem; font-weight: 750; line-height: 1.35; }
.airport-picker-button.selected .airport-picker-primary { color: #0b2444; }
.airport-picker-secondary { margin-top: 4px; color: #8191a5; font-size: .78rem; line-height: 1.35; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.airport-search-open { overflow: hidden; }
.airport-search-overlay { position: fixed; inset: 0; z-index: 3000; display: flex; align-items: flex-end; justify-content: center; padding: 0; background: rgba(4, 19, 38, .46); opacity: 0; transition: opacity .18s ease; }
.airport-search-overlay.open { opacity: 1; }
.airport-search-sheet { width: min(100%, 620px); max-height: min(84vh, 760px); overflow: hidden; background: #fff; border-radius: 24px 24px 0 0; box-shadow: 0 -12px 44px rgba(0, 38, 76, .2); transform: translateY(24px); transition: transform .18s ease; }
.airport-search-overlay.open .airport-search-sheet { transform: translateY(0); }
.airport-search-sheet::before { content: ''; display: block; width: 42px; height: 4px; margin: 9px auto 2px; border-radius: 999px; background: #cad4df; }
.airport-search-header { display: flex; align-items: center; gap: 10px; padding: 12px 18px 14px; border-bottom: 1px solid #e6edf4; }
.airport-search-header h2 { margin: 0; color: #102844; font-size: 1rem; }
.airport-search-close { width: 34px; height: 34px; border: 0; background: transparent; color: #637487; font-size: 1.7rem; line-height: 1; cursor: pointer; }
.airport-search-body { padding: 18px 16px 22px; overflow-y: auto; max-height: calc(min(84vh, 760px) - 62px); }
.airport-search-body > label { display: block; margin-bottom: 9px; color: #59718c; font-size: .78rem; }
.airport-search-input-wrap { display: flex; align-items: center; gap: 9px; min-height: 54px; padding: 0 15px; border: 1.5px solid #0d6fca; border-radius: 18px; box-shadow: 0 0 0 3px rgba(13,111,202,.07); }
.airport-search-input-wrap span { color: #12375d; font-size: 1.25rem; }
.airport-search-input-wrap input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; color: #122842; font-size: 1rem; }
.airport-search-results { margin-top: 14px; }
.airport-result-item { display: flex; width: 100%; gap: 13px; align-items: flex-start; padding: 15px 6px; border: 0; border-bottom: 1px solid #e5edf4; background: transparent; text-align: left; cursor: pointer; }
.airport-result-item:active { background: #f2f8fd; }
.airport-result-pin { flex: 0 0 30px; color: #079188; font-size: 1.55rem; line-height: 1.2; }
.airport-result-copy { min-width: 0; }
.airport-result-copy strong { display: block; color: #132c49; font-size: .9rem; line-height: 1.35; }
.airport-result-copy small { display: block; margin-top: 3px; color: #8996a7; font-size: .8rem; line-height: 1.35; }
.airport-search-empty { padding: 30px 10px; color: #74869a; text-align: center; }
@media (min-width: 700px) {
  .airport-search-overlay { align-items: center; padding: 24px; }
  .airport-search-sheet { border-radius: 24px; }
  .airport-search-sheet::before { display: none; }
}
.swap-airports-button.swapping { animation: airport-swap-spin .36s ease; }
@keyframes airport-swap-spin { 50% { transform: rotate(180deg) scale(1.08); } 100% { transform: rotate(360deg); } }
.wizard-actions { grid-template-columns: minmax(0, .72fr) minmax(0, 1.28fr); }
.wizard-actions > button { margin: 0; }


/* =========================================================
   AeroFlex Next Mobile v0.3.1.2a.3
   Validación estática de fechas y ocupantes
   ========================================================= */
.date-validation-alert{display:flex;align-items:flex-start;gap:12px;margin-top:13px;padding:14px;border:1px solid #f4b8bd;border-radius:14px;color:#8f1f2b;background:#fff0f1;box-shadow:0 6px 18px rgba(143,31,43,.06)}
.date-validation-icon{width:27px;height:27px;flex:0 0 27px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#c83243;font-weight:900}
.date-validation-alert strong{display:block;font-size:.85rem}.date-validation-alert p{margin:4px 0 0;font-size:.77rem;line-height:1.45}
.wizard-dates-card.has-date-error{border-color:#e56c77;box-shadow:0 0 0 3px rgba(229,108,119,.1)}
.wizard-dates-card.has-date-error input{color:#a51f2d}
.wizard-actions .primary-button:disabled{color:#8fa0af;background:#dce4eb;box-shadow:none;cursor:not-allowed}
.passenger-counters{display:grid;gap:13px}.passenger-counters h3,.confirmation-passengers-card h3{margin:0;font-size:.9rem}
.passenger-counter-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.passenger-counter-card{display:grid;gap:12px;padding:14px;border:1px solid #d8e3ec;border-radius:15px;background:#fff}.passenger-counter-card>div:first-child{display:grid;gap:3px}.passenger-counter-card strong{font-size:.78rem}.passenger-counter-card small{color:#7890a6;font-size:.66rem}
.counter-control{display:grid;grid-template-columns:38px 1fr 38px;align-items:center;gap:7px}.counter-control button{width:38px;height:38px;border:0;border-radius:12px;color:#0878bd;background:#eaf5fc;font-size:1.25rem;font-weight:900;cursor:pointer}.counter-control button:disabled{opacity:.4;cursor:not-allowed}.counter-control output{display:grid;place-items:center;min-height:38px;color:#0c2945;font-size:1.12rem;font-weight:900}
.occupants-summary{display:grid;gap:8px;padding:14px;border-radius:14px;background:#f4f8fb}.occupants-summary>div{display:flex;align-items:center;justify-content:space-between;gap:16px;color:#526d86;font-size:.77rem}.occupants-summary strong{color:#0c2945}.occupants-summary .occupants-total{margin-top:3px;padding-top:10px;border-top:1px solid #dce6ee;color:#0c2945;font-weight:850}
.confirmation-passengers-card{margin-top:14px;padding:16px;border:1px solid #d4e1eb;border-radius:17px;background:#fff}.confirmation-passengers-card dl{margin:12px 0 0;display:grid;gap:9px}.confirmation-passengers-card dl>div{display:flex;align-items:center;justify-content:space-between;gap:14px}.confirmation-passengers-card dt{color:#6b8298;font-size:.76rem}.confirmation-passengers-card dd{margin:0;color:#0c2945;font-size:.79rem;font-weight:850}.confirmation-passengers-total{margin-top:2px;padding-top:10px;border-top:1px solid #e5edf3}.confirmation-passengers-total dt,.confirmation-passengers-total dd{color:#0c2945!important;font-weight:900!important}
@media(max-width:390px){.passenger-counter-grid{grid-template-columns:1fr}.counter-control{max-width:180px}}

/* =========================================================
   AeroFlex Next Mobile v0.3.1.2a.4 - Entrega 2/2
   Ajustes generales del asistente y compatibilidad móvil
   ========================================================= */
.wizard-route-card {
  position: relative;
  overflow: visible;
}

.airport-picker-button {
  min-height: 62px;
  -webkit-tap-highlight-color: transparent;
}

.airport-picker-button:focus-visible {
  outline: 3px solid rgba(17, 116, 199, .22);
  outline-offset: 4px;
  border-radius: 12px;
}

.airport-picker-button.base-airport .airport-picker-primary::after {
  content: 'Base';
  display: inline-flex;
  margin-left: 7px;
  padding: 2px 7px;
  vertical-align: middle;
  border-radius: 999px;
  background: #dcf4e7;
  color: #167347;
  font-size: .59rem;
  font-weight: 850;
}

.swap-airports-button {
  -webkit-tap-highlight-color: transparent;
  transform-origin: center;
}

.swap-airports-button.swapping {
  pointer-events: none;
}

.wizard-actions {
  padding-bottom: max(10px, env(safe-area-inset-bottom));
}

@media (max-width: 520px) {
  .airport-picker-secondary {
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
  }

  .wizard-route-airports {
    gap: 0;
  }

  .wizard-route-point {
    min-height: 90px;
  }

  .wizard-actions {
    position: sticky;
    bottom: 0;
    z-index: 25;
    margin-inline: -4px;
    padding-top: 10px;
    background: linear-gradient(to top, rgba(244, 248, 252, 1) 74%, rgba(244, 248, 252, 0));
  }
}

@media (prefers-reduced-motion: reduce) {
  .swap-airports-button.swapping,
  .wizard-step,
  .wizard-progress-item,
  .primary-button,
  .secondary-button {
    animation: none !important;
    transition: none !important;
  }
}

/* PATCH v0.3.1.2b - Entrega 1/2: misiones compartidas disponibles */
.shared-missions-section{margin-top:22px;padding-top:20px;border-top:1px solid #dce6ee}.shared-missions-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.shared-missions-heading>div{display:grid;gap:3px}.shared-missions-heading span{color:#0878bd;font-size:.69rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.shared-missions-heading h3{margin:0;color:#17324a;font-size:1rem;line-height:1.3}.shared-missions-heading>small{flex:0 0 auto;padding:5px 9px;border-radius:999px;background:#eaf5fc;color:#0878bd;font-size:.68rem;font-weight:800}.shared-mission-list{display:grid;gap:11px}.shared-mission-card{width:100%;display:grid;grid-template-columns:54px minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px;border:1px solid #d4e0ea;border-radius:17px;background:#fff;color:inherit;text-align:left;cursor:pointer;box-shadow:0 5px 16px rgba(28,69,99,.05);transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.shared-mission-card:hover,.shared-mission-card:focus-visible{border-color:#68add8;box-shadow:0 9px 24px rgba(8,120,189,.11);transform:translateY(-1px);outline:0}.shared-mission-date{height:54px;display:grid;place-content:center;text-align:center;border-radius:14px;background:#eaf5fc;color:#0878bd}.shared-mission-date strong{font-size:1.15rem;line-height:1}.shared-mission-date small{margin-top:3px;font-size:.61rem;font-weight:900}.shared-mission-content{min-width:0;display:grid;gap:4px}.shared-mission-route{display:flex;align-items:center;gap:8px;color:#17324a}.shared-mission-route strong{font-size:1rem}.shared-mission-route i{color:#7d93a7;font-style:normal}.shared-mission-content>small{overflow:hidden;color:#60788e;font-size:.72rem;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.shared-mission-meta{display:flex;flex-wrap:wrap;gap:5px}.shared-mission-meta b{padding:3px 7px;border-radius:999px;background:#f2f6f9;color:#536d83;font-size:.62rem;font-weight:750}.shared-mission-action{display:flex;align-items:center;gap:5px;color:#0878bd;font-size:.73rem;font-weight:850;white-space:nowrap}.shared-mission-action i{font-style:normal}@media(max-width:430px){.shared-mission-card{grid-template-columns:48px minmax(0,1fr);padding:11px}.shared-mission-date{height:48px}.shared-mission-action{grid-column:2;justify-self:start}.shared-missions-heading{align-items:center}.shared-missions-heading h3{font-size:.91rem}.shared-mission-content>small{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}

/* PATCH v0.3.1.2b - selección de misión compartida */
.shared-mission-card.selected{border-color:#0878bd;background:#f1f9fe;box-shadow:0 10px 26px rgba(8,120,189,.16)}
.shared-mission-card.selected .shared-mission-action{padding:5px 9px;border-radius:999px;background:#0878bd;color:#fff}
.shared-mission-card.selected .shared-mission-action i{display:none}
.shared-mission-card.selected .shared-mission-action::before{content:'✓'}

/* PATCH v0.3.1.3 - Mis reservas por sección y año */
.reservation-year-filter {
    margin: -2px 0 16px;
    padding: 12px 14px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    border: 1px solid #dfe8ef;
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 7px 20px rgba(24, 52, 78, .06);
}

.reservation-year-filter label {
    color: #496176;
    font-size: .86rem;
    font-weight: 800;
}

.reservation-year-filter select {
    min-width: 112px;
    min-height: 40px;
    padding: 7px 34px 7px 12px;
    border: 1px solid #cbd9e4;
    border-radius: 11px;
    color: #18344e;
    background: #f8fbfd;
    font: inherit;
    font-weight: 800;
}

.reservation-card-labels {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 7px;
}

.participation-pill {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 3px 8px;
    border-radius: 999px;
    font-size: .7rem;
    font-weight: 850;
    line-height: 1;
}

.participation-requester {
    color: #155a91;
    background: #e6f2fb;
}

.participation-participant {
    color: #6f4a08;
    background: #fff2cf;
}

@media (max-width: 420px) {
    .reservation-filters a {
        padding-inline: 5px;
        font-size: .79rem;
    }

    .reservation-card-labels {
        max-width: 100%;
    }
}

/* PATCH v0.3.1.3 - Entrega 2/2: contadores y cierre visual */
.reservation-filters a {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
}

.reservation-filters a > strong {
    min-width: 22px;
    height: 22px;
    display: inline-grid;
    place-items: center;
    padding: 0 6px;
    border-radius: 999px;
    color: #62788d;
    background: #edf3f7;
    font-size: .67rem;
    font-weight: 900;
    line-height: 1;
}

.reservation-filters a.active > strong {
    color: #fff;
    background: #0878bd;
}

.reservation-year-filter select:focus-visible {
    outline: 3px solid rgba(8, 120, 189, .18);
    outline-offset: 2px;
}

@media (max-width: 390px) {
    .reservation-filters a {
        gap: 4px;
        font-size: .73rem;
    }

    .reservation-filters a > strong {
        min-width: 19px;
        height: 19px;
        padding-inline: 5px;
        font-size: .61rem;
    }
}

/* PATCH v0.3.1.4 - Entrega 1/2: multidestino y filtro anual visible */
.multi-destination-panel {
    margin-top: 16px;
    padding: 16px;
    border: 1px solid #d9e5ee;
    border-radius: 16px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(24, 52, 78, .06);
}

.multi-destination-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 14px;
}

.multi-destination-heading h3 {
    margin: 3px 0 4px;
    color: #18344e;
    font-size: 1rem;
}

.multi-destination-heading p,
.multi-destination-help {
    margin: 0;
    color: #6a7f91;
    font-size: .8rem;
}

.add-segment-button,
.remove-segment-button {
    border: 0;
    border-radius: 10px;
    font: inherit;
    font-weight: 850;
    cursor: pointer;
}

.add-segment-button {
    min-height: 40px;
    padding: 8px 12px;
    color: #0878bd;
    background: #eaf5fc;
    white-space: nowrap;
}

.add-segment-button:disabled {
    opacity: .5;
    cursor: default;
}

.multi-destination-list {
    display: grid;
    gap: 12px;
}

.multi-destination-segment {
    padding: 14px;
    border: 1px solid #dce7ef;
    border-radius: 14px;
    background: #f8fbfd;
}

.multi-destination-segment > header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
    color: #18344e;
}

.remove-segment-button {
    padding: 6px 9px;
    color: #a12d2d;
    background: #fdecec;
    font-size: .74rem;
}

.multi-segment-airports {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: end;
    gap: 10px;
    margin-bottom: 12px;
}

.multi-segment-airports > span {
    padding-bottom: 12px;
    color: #0878bd;
    font-weight: 900;
}

.multi-destination-segment select {
    width: 100%;
    min-height: 46px;
    padding: 8px 10px;
    border: 1px solid #cbd9e4;
    border-radius: 11px;
    color: #18344e;
    background: #fff;
    font: inherit;
}

.multi-destination-help {
    margin-top: 10px;
    text-align: center;
}

@media (max-width: 520px) {
    .multi-destination-heading {
        display: grid;
    }

    .add-segment-button {
        width: 100%;
    }

    .multi-segment-airports {
        grid-template-columns: 1fr;
    }

    .multi-segment-airports > span {
        padding: 0;
        text-align: center;
        transform: rotate(90deg);
    }
}


/* PATCH v0.3.1.4 - Entrega 2/2 */
.confirmation-itinerary {
    margin: 1rem 0;
    padding: 1rem;
    border-radius: 16px;
    background: rgba(15, 76, 129, .06);
}

.confirmation-itinerary h3 {
    margin: 0 0 .75rem;
    font-size: .9rem;
}

.confirmation-itinerary-row {
    display: grid;
    grid-template-columns: 30px minmax(0, 1fr);
    gap: .7rem;
    align-items: center;
    padding: .65rem 0;
    border-top: 1px solid rgba(15, 76, 129, .12);
}

.confirmation-itinerary-row:first-child {
    border-top: 0;
}

.confirmation-itinerary-row > span {
    display: grid;
    place-items: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    font-size: .78rem;
    font-weight: 800;
    background: #0f4c81;
    color: #fff;
}

.confirmation-itinerary-row div {
    min-width: 0;
}

.confirmation-itinerary-row strong,
.confirmation-itinerary-row small {
    display: block;
}

.confirmation-itinerary-row small {
    margin-top: .15rem;
    color: #64748b;
}


/* PATCH v0.3.1.5 - Entrega 1/2: acceso a edición de solicitudes */
.reservation-card-actions {
    display: flex;
    justify-content: flex-end;
    margin-top: 14px;
}

.reservation-edit-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 44px;
    padding: 10px 16px;
    border: 1px solid rgba(20, 83, 132, .22);
    border-radius: 12px;
    background: rgba(232, 243, 252, .9);
    color: #145384;
    font-weight: 700;
    text-decoration: none;
}

.reservation-edit-button:active {
    transform: translateY(1px);
}

.reservation-error-banner {
    margin-bottom: 16px;
}

@media (max-width: 520px) {
    .reservation-card-actions,
    .reservation-edit-button {
        width: 100%;
    }
}

/* HOTFIX v0.3.1.5.2 - Fecha/hora y buscador multidestino */
.multi-airport-field {
    min-width: 0;
}

.multi-airport-picker {
    min-height: 74px;
    padding: 11px 12px;
    border: 1px solid #cbd9e4;
    border-radius: 12px;
    background: #fff;
}

.multi-airport-picker.selected {
    border-color: #0b8fcd;
    box-shadow: 0 0 0 3px rgba(11, 143, 205, .10);
}

.multi-airport-picker .airport-picker-primary,
.multi-airport-picker .airport-picker-secondary {
    overflow-wrap: anywhere;
    white-space: normal;
}

.multi-airport-picker .airport-picker-primary {
    line-height: 1.22;
}

.multi-airport-picker .airport-picker-secondary {
    margin-top: 4px;
    line-height: 1.28;
}

@media (max-width: 520px) {
    .multi-airport-picker {
        min-height: 68px;
    }
}

/* PATCH v0.3.1.6 - Calendario de disponibilidad */
.calendar-page {
    display: grid;
    gap: 16px;
    padding-bottom: 18px;
}

.calendar-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 22px;
    border-radius: 22px;
    color: #fff;
    background: linear-gradient(135deg, #0b3158 0%, #137cba 100%);
    box-shadow: 0 16px 34px rgba(9, 48, 86, .18);
}

.calendar-hero h1,
.calendar-hero p {
    margin: 0;
}

.calendar-hero h1 {
    margin-top: 5px;
    font-size: clamp(1.45rem, 5vw, 2rem);
}

.calendar-hero p {
    margin-top: 7px;
    max-width: 460px;
    line-height: 1.45;
    color: rgba(255, 255, 255, .88);
}

.calendar-hero .eyebrow {
    color: #54c8ff;
}

.calendar-hero-icon {
    display: grid;
    flex: 0 0 auto;
    place-items: center;
    width: 52px;
    height: 52px;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 16px;
    background: rgba(255, 255, 255, .12);
    font-size: 1.55rem;
}

.calendar-card,
.calendar-day-panel {
    border: 1px solid #d6e1ea;
    border-radius: 22px;
    background: #fff;
    box-shadow: 0 12px 28px rgba(31, 66, 98, .08);
}

.calendar-card {
    padding: 14px;
}

.calendar-month-navigation {
    display: grid;
    grid-template-columns: 44px 1fr 44px;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
}

.calendar-month-navigation h2 {
    margin: 0;
    text-align: center;
    font-size: 1.05rem;
}

.calendar-month-navigation a {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border: 1px solid #d5e2ec;
    border-radius: 13px;
    color: #0f5f98;
    background: #f7fbfe;
    text-decoration: none;
    font-size: 1.8rem;
    line-height: 1;
}

.calendar-weekdays,
.member-calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
}

.calendar-weekdays {
    margin-bottom: 6px;
    color: #71849a;
    font-size: .7rem;
    font-weight: 800;
    text-align: center;
    text-transform: uppercase;
}

.member-calendar-grid {
    overflow: hidden;
    border: 1px solid #e0e8ef;
    border-radius: 16px;
    background: #e0e8ef;
    gap: 1px;
}

.calendar-day {
    position: relative;
    display: flex;
    min-width: 0;
    min-height: 62px;
    padding: 8px 5px;
    border: 0;
    flex-direction: column;
    align-items: center;
    justify-content: space-between;
    color: #17324d;
    background: #fff;
    font: inherit;
}

.calendar-day.outside-month {
    color: #aab6c2;
    background: #f7f9fb;
}

.calendar-day.today .calendar-day-number {
    display: grid;
    place-items: center;
    width: 25px;
    height: 25px;
    border-radius: 50%;
    color: #fff;
    background: #0d6eae;
}

.calendar-day.selected {
    z-index: 1;
    box-shadow: inset 0 0 0 2px #0d6eae;
}

.calendar-day-own { background: #effaf3; }
.calendar-day-occupied { background: #fff2f3; }
.calendar-day-intermediate { background: #fff9df; }
.calendar-day-ferry { background: #f5efff; }

.calendar-day-number {
    font-size: .86rem;
    font-weight: 800;
}

.calendar-day-markers {
    display: flex;
    min-height: 8px;
    gap: 3px;
    justify-content: center;
}

.calendar-marker,
.legend-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
}

.calendar-marker.own,
.legend-dot.own { background: #24a865; }
.calendar-marker.occupied,
.legend-dot.occupied { background: #df4d5b; }
.calendar-marker.intermediate,
.legend-dot.intermediate { background: #efc43e; }
.calendar-marker.ferry,
.legend-dot.ferry { background: #8b5bd4; }

.calendar-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 16px;
    padding: 0 4px;
    color: #62758a;
    font-size: .76rem;
}

.calendar-legend span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.calendar-day-panel {
    padding: 18px;
}

.calendar-day-panel-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}

.calendar-day-panel-heading h2 {
    margin: 4px 0 0;
    font-size: 1.05rem;
}

.calendar-day-panel-heading button {
    min-height: 40px;
    padding: 0 14px;
    border: 1px solid #cae0ef;
    border-radius: 12px;
    color: #0e659f;
    background: #edf7fd;
    font-weight: 800;
}

.calendar-day-events {
    display: grid;
    gap: 10px;
}

.calendar-event-card {
    padding: 14px;
    border: 1px solid #dbe5ed;
    border-left-width: 5px;
    border-radius: 15px;
    background: #fff;
}

.calendar-event-card.own { border-left-color: #24a865; }
.calendar-event-card.occupied { border-left-color: #df4d5b; }
.calendar-event-card.intermediate { border-left-color: #efc43e; }
.calendar-event-card.ferry { border-left-color: #8b5bd4; }

.calendar-event-card-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
}

.calendar-event-card h3,
.calendar-event-card p {
    margin: 0;
}

.calendar-event-card h3 {
    margin-top: 2px;
    font-size: 1rem;
}

.calendar-event-type {
    color: #71859a;
    font-size: .66rem;
    font-weight: 900;
    letter-spacing: .09em;
}

.calendar-event-status {
    flex: 0 0 auto;
    padding: 5px 8px;
    border-radius: 999px;
    color: #23516f;
    background: #eaf4fa;
    font-size: .68rem;
    font-weight: 800;
}

.calendar-event-route {
    margin-top: 10px !important;
    color: #17324d;
    font-weight: 800;
    overflow-wrap: anywhere;
}

.calendar-event-time {
    margin-top: 5px !important;
    color: #6a7c8f;
    font-size: .82rem;
}

.calendar-empty-state {
    display: flex;
    min-height: 112px;
    padding: 18px;
    border: 1px dashed #cbd9e3;
    border-radius: 15px;
    align-items: center;
    justify-content: center;
    gap: 12px;
    color: #718397;
    text-align: center;
    background: #f9fbfc;
}

.calendar-empty-state p,
.calendar-empty-state strong {
    margin: 0;
}

.calendar-empty-state.available {
    color: #28724d;
    border-color: #bce2ca;
    background: #f2fbf5;
    text-align: left;
}

.calendar-empty-state.available span {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    color: #fff;
    background: #24a865;
}

@media (max-width: 420px) {
    .calendar-hero {
        padding: 18px;
    }

    .calendar-hero-icon {
        width: 44px;
        height: 44px;
    }

    .calendar-card {
        padding: 10px;
    }

    .calendar-day {
        min-height: 54px;
        padding: 6px 3px;
    }

    .calendar-day-number {
        font-size: .78rem;
    }

    .calendar-marker,
    .legend-dot {
        width: 7px;
        height: 7px;
    }

    .calendar-day-panel {
        padding: 15px;
    }
}


/* HOTFIX v0.3.1.8.5: fechas pasadas sin disponibilidad */
.calendar-empty-state.past {
    color: #667789;
    border-color: #d4dde5;
    background: #f2f5f7;
    text-align: left;
}

.calendar-empty-state.past span {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    color: #fff;
    background: #8393a2;
    font-size: 1rem;
}

.reservation-cancel-button{min-height:42px;padding:0 14px;border:1px solid #e7a5a5;border-radius:12px;background:#fff;color:#b52e2e;font:inherit;font-weight:800;cursor:pointer}.reservation-card-actions form{margin:0}
