:root{--ink:var(--azul-acero);--muted:var(--gris-texto);--paper:var(--blanco-hospedaje);--cream:var(--azul-niebla);--line:var(--gris-linea);--orange:var(--naranja);--pink:var(--naranja);--white:var(--blanco);--serif:var(--fuente-emocion);--sans:var(--fuente-operacion)}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.45}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit}.checkout-header{height:74px;border-bottom:1px solid var(--line);background:var(--blanco);display:flex;align-items:center;justify-content:space-between;padding:0 max(28px,calc((100vw - 1180px)/2))}.checkout-brand img{width:172px;height:auto}.secure-label{font-size:12px;text-decoration:underline;color:var(--muted)}.checkout-shell{width:min(calc(100% - 48px),1090px);margin:44px auto 80px}.checkout-title{display:flex;gap:18px;align-items:center}.checkout-title h1{font:600 clamp(34px,4vw,48px)/1.05 var(--serif);letter-spacing:-.035em;margin:0 0 7px}.checkout-title p{margin:0;color:var(--muted);font-size:14px}.checkout-eyebrow{font-size:11px!important;letter-spacing:.12em;text-transform:uppercase;color:var(--naranja-texto);font-weight:700;margin-bottom:12px!important}.round-back{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--blanco);border:1px solid var(--line);font-size:22px;text-decoration:none}.checkout-progress{display:flex;align-items:center;gap:12px;margin:33px 0;color:var(--gris-texto);font-size:12px;font-weight:600}.checkout-progress span{display:flex;gap:7px;align-items:center;white-space:nowrap}.checkout-progress b{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:var(--azul-cielo);color:var(--gris-texto);font-size:11px}.checkout-progress .active{color:var(--ink)}.checkout-progress .active b{background:var(--ink);color:var(--blanco)}.checkout-progress i{height:1px;background:var(--line);width:50px}.checkout-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:58px;align-items:start}.checkout-step{background:var(--blanco);border:1px solid var(--line);border-radius:13px;padding:27px 28px;margin-bottom:17px;display:grid;grid-template-columns:38px 1fr;gap:17px}.step-number{font:600 21px var(--serif);color:var(--naranja-texto)}.checkout-step h2{font:600 24px var(--serif);margin:0 0 6px}.step-copy{font-size:13px;color:var(--muted);margin:0 0 23px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid label,.detail-booking-form label{display:block;color:var(--azul-acero);font-size:11px;font-weight:700}.form-grid label.wide{grid-column:1/-1}.form-grid input,.form-grid select{display:block;width:100%;margin-top:7px;border:1px solid var(--gris-linea);border-radius:5px;padding:12px 13px;color:var(--ink);background:var(--blanco);outline:0;font-size:13px}.form-grid input:focus,.form-grid select:focus{border-color:var(--ink);box-shadow:0 0 0 3px rgba(20,35,66,.08)}.form-grid small{display:block;font-weight:400;color:var(--muted);font-size:11px;margin-top:5px}.arrival-note{display:flex;gap:12px;background:var(--cream);padding:14px;margin-top:22px;border-radius:7px}.arrival-note>span{font-size:20px;color:var(--naranja-texto)}.arrival-note strong{font-size:12px}.arrival-note p{color:var(--muted);font-size:11px;margin:3px 0 0}.check-row{display:flex;align-items:center;gap:8px;font-size:12px!important;font-weight:400!important;color:var(--muted)!important;margin:17px 0}.check-row input{accent-color:var(--ink)}.checkout-button{border:0;background:var(--ink);color:var(--blanco);border-radius:5px;padding:14px 18px;font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:20px;min-width:210px}.checkout-button:hover{background:var(--azul-acero)}.locked{opacity:.55}.payment-preview{border:1px dashed var(--gris-linea);border-radius:8px;padding:18px}.payment-brand{font-weight:700;font-size:18px}.payment-brand span{font-size:11px;color:var(--azul-acero);font-weight:500;margin-left:8px}.payment-preview p{color:var(--muted);font-size:12px;margin:8px 0 18px}.payment-legal{display:block;color:var(--muted);font-size:11px;margin-top:14px}.payment-legal code{color:var(--ink)}.confirmation-box{display:flex;gap:13px;align-items:center;background:var(--azul-niebla);border-radius:8px;padding:17px}.confirmation-box>span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--azul-acero);color:var(--blanco)}.confirmation-box strong{font-size:13px}.confirmation-box p{color:var(--gris-texto);font-size:12px;margin:3px 0 0}.checkout-help{text-align:center;color:var(--muted);font-size:12px;margin:25px 0}.checkout-help a{color:var(--ink);font-weight:700}.order-summary{position:sticky;top:28px}.summary-card{background:var(--blanco);border:1px solid var(--gris-linea);border-radius:13px;padding:22px;box-shadow:0 8px 24px rgba(20,35,66,.06)}.summary-photo{height:165px;border-radius:8px;overflow:hidden;margin-bottom:17px}.summary-photo img{width:100%;height:100%;object-fit:cover}.summary-heading{display:flex;justify-content:space-between;gap:10px}.summary-kicker{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--naranja-texto);font-weight:700;margin:0 0 5px}.summary-heading h2{font:600 24px var(--serif);margin:0 0 4px}.summary-heading p:not(.summary-kicker){color:var(--muted);font-size:12px;margin:0}.summary-rating{font-size:12px;white-space:nowrap}.summary-divider{height:1px;background:var(--line);margin:19px 0}.summary-detail{display:flex;justify-content:space-between;align-items:start;font-size:12px;margin:16px 0}.summary-detail div{display:flex;flex-direction:column;gap:4px}.summary-detail strong{font-size:11px}.summary-detail span{color:var(--muted)}.summary-detail button{border:0;background:var(--azul-niebla);border-radius:4px;padding:6px 10px;font-size:11px;color:var(--ink)}.summary-card h3{font-size:13px;margin:0 0 15px}.price-row,.price-total{display:flex;justify-content:space-between;font-size:12px;color:var(--azul-acero);margin:12px 0}.price-total{border-top:1px solid var(--line);padding-top:17px;color:var(--ink);font-weight:700;font-size:13px;margin-top:20px}.trust-note{display:flex;gap:10px;align-items:center;background:var(--azul-niebla);border-radius:7px;margin-top:21px;padding:11px}.trust-note span{font-size:21px;color:var(--azul-acero)}.trust-note p{font-size:11px;margin:0;color:var(--azul-acero)}.summary-policies{padding:18px 3px 0;color:var(--muted);font-size:11px}.summary-policies strong{color:var(--ink)}.summary-policies p{margin:4px 0 8px}.summary-policies a{text-decoration:underline;color:var(--ink)}.checkout-footer{border-top:1px solid var(--line);padding:22px max(28px,calc((100vw - 1090px)/2));display:flex;justify-content:space-between;color:var(--muted);font-size:11px}.checkout-toast,.demo-note{position:fixed;z-index:20}.checkout-toast{right:24px;bottom:24px;background:var(--ink);color:var(--blanco);border-radius:5px;padding:14px 18px;font-size:12px;opacity:0;transform:translateY(10px);transition:.25s;pointer-events:none}.checkout-toast.show{opacity:1;transform:none}.demo-note{right:22px;bottom:22px;display:flex;align-items:center;gap:10px;background:var(--naranja-suave);border:1px solid var(--naranja-suave);border-radius:7px;padding:11px 13px;box-shadow:0 6px 20px rgba(20,35,66,.12);font-size:11px;color:var(--naranja-texto)}.demo-note strong{font-size:11px;color:var(--naranja-texto)}.demo-note button{border:0;background:none;font-size:18px;color:var(--naranja-texto);margin-left:4px}@media(max-width:850px){.checkout-layout{grid-template-columns:1fr}.order-summary{position:static;grid-row:1}.checkout-main{grid-row:2}.summary-card{max-width:540px}.checkout-shell{margin-top:28px}}@media(max-width:560px){.checkout-header{height:64px;padding:0 18px}.checkout-brand img{width:145px}.checkout-shell{width:calc(100% - 28px)}.secure-label{font-size:11px}.checkout-title{align-items:flex-start}.round-back{width:35px;height:35px;font-size:18px}.checkout-progress{gap:5px;font-size:11px}.checkout-progress i{width:14px}.checkout-progress b{width:21px;height:21px}.checkout-step{padding:21px 17px;grid-template-columns:28px 1fr;gap:9px}.form-grid{grid-template-columns:1fr}.form-grid label.wide{grid-column:auto}.checkout-footer{padding:18px 14px;display:block;line-height:2}.checkout-footer span{display:block}.demo-note{left:14px;right:14px;bottom:14px}.summary-card{padding:17px}}
:root{--reserve-placeholder:0}.reserve-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:58px;align-items:start}.reserve-form{display:grid;gap:17px}.reserve-block{background:var(--blanco);border:1px solid var(--line);border-radius:13px;padding:27px 28px;display:grid;grid-template-columns:38px 1fr;gap:17px}.reserve-block h2{font:600 24px var(--serif);margin:0 0 6px}.reserve-dates{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.reserve-dates label,.reserve-contact label{display:block;color:var(--azul-acero);font-size:11px;font-weight:700}.reserve-dates input,.reserve-dates select,.reserve-contact input{display:block;width:100%;margin-top:7px;border:1px solid var(--gris-linea);border-radius:5px;padding:12px 10px;color:var(--ink);background:var(--blanco);outline:0;font-size:12px}.room-options{display:grid;gap:10px}.room-option{display:block;cursor:pointer}.room-option input{position:absolute;opacity:0}.room-option-card{display:flex;align-items:center;gap:14px;border:1px solid var(--line);border-radius:7px;padding:9px;transition:.2s}.room-option-card img{width:100px;height:72px;object-fit:cover;border-radius:4px}.room-option-card>span{display:grid;gap:3px}.room-option-card strong{font-size:14px}.room-option-card small{font-size:11px;color:var(--muted)}.room-option-card b{font-size:13px;margin-top:5px}.room-option-card em{font-size:11px;color:var(--muted);font-weight:400;font-style:normal}.room-option input:checked+.room-option-card{border:2px solid var(--ink);padding:8px;background:var(--blanco-hospedaje)}.reserve-contact{display:grid;grid-template-columns:1fr 1fr;gap:14px}.reserve-contact label:first-child{grid-column:1/-1}.reserve-block .check-row{margin:19px 0}.reserve-page .order-summary{position:sticky;top:28px}@media(max-width:850px){.reserve-layout{grid-template-columns:1fr}.reserve-page .order-summary{position:static;grid-row:1}.reserve-form{grid-row:2}}@media(max-width:560px){.reserve-block{padding:21px 17px;grid-template-columns:28px 1fr;gap:9px}.reserve-dates,.reserve-contact{grid-template-columns:1fr}.reserve-contact label:first-child{grid-column:auto}.room-option-card img{width:85px;height:65px}}
:root{--reserve-contact-hidden:0}.reserve-page #reserveForm>.reserve-block:nth-child(2){padding-bottom:27px}
.invoice-request{margin-top:18px;padding:14px;background:var(--blanco-hospedaje);border:1px solid var(--line);border-radius:7px}.invoice-request .check-row{margin:0}.invoice-request>label{display:block;color:var(--azul-acero);font-size:11px;font-weight:700}.invoice-request>label small{display:block;margin-top:6px;color:var(--gris-texto);font-weight:400;line-height:1.5}.invoice-request select,.invoice-fields input{display:block;width:100%;margin-top:6px;border:1px solid var(--gris-linea);border-radius:5px;padding:11px 12px;color:var(--ink);background:var(--blanco);outline:0;font-size:12px}.invoice-request select:focus-visible,.invoice-fields input:focus-visible{border-color:var(--azul-acero);box-shadow:0 0 0 3px rgba(30,53,94,0.13)}.invoice-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}.invoice-fields[hidden]{display:none}.invoice-fields label{display:block;color:var(--azul-acero);font-size:11px;font-weight:700}.invoice-fields .wide{grid-column:1/-1}@media(max-width:560px){.invoice-fields{grid-template-columns:1fr}.invoice-fields .wide{grid-column:auto}}
.pickup-request{margin-top:12px;padding:14px;background:var(--blanco-hospedaje);border:1px solid var(--line);border-radius:7px}.pickup-request .check-row{margin:0}.pickup-fields{display:grid;grid-template-columns:1fr;gap:6px;margin-top:10px}.pickup-fields[hidden]{display:none}.pickup-fields label{display:block;color:var(--azul-acero);font-size:11px;font-weight:700}.pickup-fields select{display:block;width:100%;margin-top:6px;border:1px solid var(--gris-linea);border-radius:5px;padding:11px 12px;color:var(--ink);background:var(--blanco);outline:0;font-size:12px}.pickup-fields p{color:var(--muted);font-size:11px;margin:3px 0 0}
.invoice-note{display:block;color:var(--muted);font-size:11px;margin:2px 0 0 26px}
.price-row[hidden]{display:none}
.invoice-note[hidden]{display:none}
@media(max-width:480px){.checkout-progress span{font-size:11px}.checkout-progress span:nth-of-type(3){display:none}.checkout-progress i:last-of-type{display:none}.checkout-title h1{font-size:34px}.checkout-title p{font-size:12px}.checkout-step{border-radius:9px}.payment-preview{padding:14px}.checkout-button{width:100%;min-width:0}.summary-photo{height:145px}.demo-note{font-size:11px}}
.button,
.checkout-button,
button,
input[type='submit'],
input[type='button'] {
  border-radius: 5px;
}

@media (max-width: 560px) {
  .checkout-title > div {
    min-width: 0;
  }

  .checkout-title h1 {
    overflow-wrap: break-word;
  }

  .checkout-progress {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 12px minmax(0, 1fr) 12px minmax(0, 1fr);
    gap: 4px;
    align-items: start;
  }

  .checkout-progress span {
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
    text-align: center;
    white-space: normal;
    line-height: 1.2;
  }

  .checkout-progress span:nth-of-type(3) {
    display: flex;
  }

  .checkout-progress i {
    width: 100%;
    margin-top: 12px;
  }

  .checkout-progress i:last-of-type {
    display: block;
  }

  .reserve-page .price-total {
    display: grid;
    gap: 5px;
  }

  .reserve-page .price-total strong {
    overflow-wrap: anywhere;
  }

  .demo-note {
    position: static;
    margin: 16px 14px;
  }
}

/* Acceso de huéspedes antes de continuar con la reserva. */
.reserve-page [hidden] { display: none !important; }
.reserve-main { display: grid; gap: 17px; }
.customer-access { border-top: 3px solid var(--orange); box-shadow: 0 14px 34px rgba(20,35,66,.08); }
.customer-access .step-copy { max-width: 470px; }
.access-form { display: grid; gap: 11px; max-width: 390px; }
.access-form label { color: var(--azul-acero); font-size: 12px; font-weight: 700; }
.access-form input { width: 100%; padding: 13px 14px; border: 1px solid var(--gris-linea); border-radius: 5px; background: var(--blanco); color: var(--ink); font-size: 15px; }
.access-form input:focus-visible { outline: 2px solid var(--orange); outline-offset: 2px; }
.access-form p { margin: 0 0 5px; color: var(--muted); font-size: 13px; line-height: 1.6; }
.access-form .checkout-button { margin-top: 5px; }
.access-form .checkout-button:disabled { opacity: .6; cursor: wait; }
.access-link { width: fit-content; padding: 7px 0; border: 0; background: none; color: var(--ink); font-size: 12px; text-decoration: underline; }
.access-message { min-height: 20px; margin: 15px 0 0; color: var(--azul-acero); font-size: 12px; }
.reserve-page .checkout-progress .complete { color: var(--azul-acero); }
.reserve-page .checkout-progress .complete b { background: var(--azul-niebla); color: var(--azul-acero); }
@media (max-width: 850px) {
  .reserve-main { grid-row: 2; }
}

/* Acceso en un cuadro centrado, con la estadía visible detrás. */
.access-prompt { display: flex; align-items: center; justify-content: space-between; gap: 18px; min-height: 108px; padding: 24px 27px; border: 1px solid var(--line); border-radius: 13px; background: var(--blanco); box-shadow: 0 8px 24px rgba(20,35,66,.06); }
.access-prompt h2 { margin: 0; color: var(--ink); font: 700 18px/1.3 var(--sans); }
.access-prompt-button { flex: none; min-width: 130px; min-height: 52px; padding: 12px 22px; border: 0; border-radius: 5px; background: var(--ink); color: var(--blanco); font-weight: 700; transition: background .2s, transform .2s; }
.access-prompt-button:hover,.access-prompt-button:focus-visible { background: var(--azul-acero); transform: translateY(-2px); }
.access-prompt-button:focus-visible,.reserve-continue:focus-visible { outline: 2px solid var(--orange); outline-offset: 3px; }
.reserve-page .reserve-continue { min-height: 52px; background: var(--ink); color: var(--blanco); }
.reserve-page .reserve-continue:hover { background: var(--azul-acero); }
.reserve-page #addonChoice[hidden] { display: none; }
.addon-options { display: grid; gap: 10px; }
.reserve-addon-option { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 15px; border: 1px solid var(--line); border-radius: 7px; background: var(--blanco); cursor: pointer; }
.reserve-addon-option:has(input:checked) { border-color: var(--ink); background: var(--blanco-hospedaje); }
.reserve-addon-option input { accent-color: var(--ink); width: 17px; height: 17px; }
.reserve-addon-option strong { font-size: 13px; }
.reserve-addon-option span { color: var(--muted); font-size: 12px; text-align: right; }
.reserve-addon-summary:empty { display: none; }
@media (max-width: 560px) { .reserve-addon-option { grid-template-columns: auto minmax(0, 1fr); } .reserve-addon-option span { grid-column: 2; text-align: left; } .reserve-page .reserve-continue { width: 100%; } }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.access-backdrop { position: fixed; inset: 0; z-index: 79; background: rgba(20,35,66,.46); backdrop-filter: blur(3px); }
.reserve-page .customer-access { position: fixed; z-index: 80; inset: 50% auto auto 50%; transform: translate(-50%, -50%); display: block; width: min(530px, calc(100vw - 28px)); max-height: calc(100dvh - 30px); overflow-y: auto; padding: 48px 42px 38px; border: 0; border-radius: 13px; box-shadow: 0 25px 70px rgba(20,35,66,.27); }
.access-content { text-align: center; }
.access-close { position: absolute; top: 14px; right: 18px; display: grid; place-items: center; width: 36px; height: 36px; color: var(--ink); font-size: 29px; line-height: 1; text-decoration: none; }
.access-close:hover { background: var(--blanco-hospedaje); border-radius: 50%; }
.access-brand { display: inline-grid; place-items: center; width: 55px; height: 55px; margin: 0 0 12px; border: 2px solid var(--orange); border-radius: 17px; color: var(--naranja-texto); font: 700 32px var(--serif); position: relative; }
.access-brand span { position: absolute; right: -5px; top: -7px; color: var(--naranja-texto); font: 18px var(--sans); }
.reserve-page .customer-access h2 { margin-bottom: 12px; font: 700 clamp(25px, 4vw, 31px)/1.18 var(--sans); letter-spacing: -.035em; }
.reserve-page .customer-access .step-copy { margin: 0 auto 27px; }
.reserve-page .customer-access .access-form { max-width: none; text-align: left; }
.reserve-page .customer-access .access-form input { padding: 16px 17px; font-size: 16px; }
.reserve-page .customer-access .access-primary { width: 100%; min-height: 54px; justify-content: center; background: var(--ink); font-size: 16px; }
.reserve-page .customer-access .access-primary:hover { background: var(--azul-acero); }
.access-divider { display: flex; align-items: center; gap: 14px; margin: 24px 0 20px; color: var(--muted); font-size: 13px; }
.access-divider::before,.access-divider::after { content: ''; flex: 1; height: 1px; background: var(--line); }
.social-access { display: flex; justify-content: center; gap: 12px; }
.social-access button { display: flex; align-items: center; gap: 8px; min-width: 125px; min-height: 54px; justify-content: center; border: 1px solid var(--gris-linea); border-radius: 12px; background: var(--blanco); color: var(--ink); font-weight: 700; transition: border-color .2s, box-shadow .2s, transform .2s; }
.social-access button:hover,.social-access button:focus-visible { border-color: var(--ink); box-shadow: 0 5px 15px rgba(20,35,66,.1); transform: translateY(-2px); }
.google-mark { font: 700 25px Arial,sans-serif; background: conic-gradient(#4285f4 0 25%, #34a853 25% 47%, #fbbc05 47% 64%, #ea4335 64% 82%, #4285f4 82%); color: transparent; background-clip: text; }
.access-message { margin-bottom: 0; }
@media (max-width: 560px) {
  .access-prompt { padding: 19px; border-radius: 18px; }
  .access-prompt h2 { font-size: 15px; }
  .access-prompt-button { min-width: 105px; min-height: 48px; padding: 10px 14px; }
  .reserve-page .customer-access { padding: 43px 21px 26px; border-radius: 18px; }
  .social-access button { flex: 1; min-width: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .social-access button { transition: none; }
}

/* Elección de piso: el huésped elige planta, no número. El número exacto se
   asigna al aprobarse el pago, para no comprometer un cuarto por una reserva
   que quizá no se complete. */
.floor-choice { margin-top: 26px; padding-top: 22px; border-top: 1px solid var(--azul-cielo); }
.floor-choice h3 { margin: 0 0 6px; font-size: 16px; }
.floor-options { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin-top: 14px; }
.floor-option { position: relative; display: block; cursor: pointer; }
.floor-option input { position: absolute; opacity: 0; pointer-events: none; }
.floor-option > span {
  display: grid; gap: 3px; padding: 14px 15px;
  border: 1px solid var(--gris-linea); border-radius: 10px; background: var(--blanco);
  transition: border-color .18s ease, background .18s ease;
}
.floor-option strong { font-size: 14px; }
.floor-option small { color: var(--gris-texto); font-size: 12px; }
.floor-option:hover > span { border-color: var(--gris-linea); }
.floor-option input:checked + span { border-color: var(--azul-noche); background: var(--blanco-hospedaje); box-shadow: inset 0 0 0 1px var(--azul-noche); }
.floor-option input:focus-visible + span { outline: 2px solid var(--naranja); outline-offset: 2px; }
.floor-option.is-full { cursor: not-allowed; }
.floor-option.is-full > span { background: var(--blanco-hospedaje); border-style: dashed; opacity: .65; }

/* ===========================================================================
   Progreso unificado del flujo de reserva (BookingProgress.astro)
   Reemplaza las dos barras independientes que venían de la maqueta.
   =========================================================================== */
.booking-progress { margin: 30px 0; }

/* En pantallas chicas, cinco etiquetas no caben sin volverse ilegibles: se
   resume en "Paso 3 de 5 · Tus datos", que dice lo mismo y se lee. */
.booking-progress-mobile { display: none; margin: 0; color: var(--gris-texto); font-size: 12px; }
.booking-progress-mobile strong { display: block; margin-top: 3px; color: var(--ink); font-size: 16px; }

.booking-progress-list {
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 10px; margin: 0; padding: 0; list-style: none;
}
.booking-step {
  position: relative; display: flex; align-items: center; gap: 9px;
  min-width: 0; padding-top: 14px;
  color: var(--gris-texto); font-size: 12px; font-weight: 600;
}
/* La línea del recorrido va sobre cada paso y se pinta según el avance, así
   el progreso se lee de un vistazo sin contar los números. */
.booking-step::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
  border-radius: 2px; background: var(--azul-cielo);
}
.booking-step.is-done::before { background: var(--azul-acero); }
.booking-step.is-current::before { background: var(--ink); }

.booking-step-mark {
  display: grid; place-items: center; flex: none;
  width: 25px; height: 25px; border-radius: 50%;
  background: var(--azul-cielo); color: var(--gris-texto); font-size: 11px; font-weight: 700;
}
.booking-step-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.booking-step.is-done { color: var(--azul-acero); }
.booking-step.is-done .booking-step-mark { background: var(--azul-niebla); color: var(--azul-acero); }
.booking-step.is-current { color: var(--ink); }
.booking-step.is-current .booking-step-mark { background: var(--ink); color: var(--blanco); }

.visually-hidden {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

@media (max-width: 760px) {
  .booking-progress-mobile { display: block; margin-bottom: 12px; }
  .booking-progress-list { gap: 6px; }
  .booking-step { padding-top: 10px; }
  /* Sin etiquetas: quedan los cinco tramos como barra de avance. */
  .booking-step-label, .booking-step-mark { display: none; }
  .booking-step::before { height: 4px; }
}

/* Selección de habitación y resumen de la estancia. */
.reserve-page .checkout-title h1 { max-width: 18ch; }
.reserve-page .room-options { gap: 13px; }
.reserve-page .room-option { display: grid; gap: 0; cursor: auto; }
.reserve-page .room-option-select { position: relative; display: block; cursor: pointer; }
.reserve-page .room-option-select input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.reserve-page .room-option-card { display: flex; align-items: center; gap: 16px; min-height: 116px; padding: 11px; border: 1px solid var(--gris-linea); border-radius: 9px; background: var(--blanco); transition: border-color .22s ease, box-shadow .22s ease, background-color .22s ease, transform .22s ease; }
.reserve-page .room-option-card img { flex: none; width: 132px; height: 94px; border-radius: 5px; object-fit: cover; transition: transform .35s ease; }
.reserve-page .room-option-copy { display: grid; flex: 1; gap: 4px; min-width: 0; }
.reserve-page .room-option-copy strong { font-size: 15px; line-height: 1.25; }
.reserve-page .room-option-copy small { color: var(--gris-texto); font-size: 11px; line-height: 1.35; }
.reserve-page .room-option-copy b { display: block; margin-top: 5px; color: var(--azul-noche); font-size: 14px; line-height: 1.25; }
.reserve-page .room-option-copy em { color: var(--gris-texto); font-size: 11px; }
.reserve-page .room-option-indicator { display: block; flex: none; width: 18px; height: 18px; margin: 0 2px; border: 1.5px solid var(--gris-linea); border-radius: 50%; background: var(--blanco); box-shadow: inset 0 0 0 4px var(--blanco); transition: background-color .22s ease, border-color .22s ease; }
.reserve-page .room-option-select input:checked + .room-option-card { padding: 11px; border: 1px solid var(--azul-noche); background: var(--blanco-hospedaje); box-shadow: inset 0 0 0 1px var(--azul-noche), 0 9px 22px rgba(20,35,66,.09); }
.reserve-page .room-option-select input:checked + .room-option-card .room-option-indicator { border-color: var(--azul-noche); background: var(--azul-noche); }
.reserve-page .room-option-select input:focus-visible + .room-option-card { outline: 2px solid var(--naranja); outline-offset: 3px; }
.reserve-page .room-option-select:hover .room-option-card { border-color: var(--gris-pizarra); transform: translateY(-2px); box-shadow: 0 9px 20px rgba(20,35,66,.08); }
.reserve-page .room-option-select:hover .room-option-card img { transform: scale(1.025); }
.reserve-page .room-option-gallery { min-width: 0; margin: 7px 0 1px; }
.reserve-page .room-option-gallery summary { display: inline-flex; align-items: center; gap: 6px; margin-left: 159px; padding: 2px 0; border-bottom: 1px solid var(--gris-linea); color: var(--azul-acero); font-size: 11px; font-weight: 700; cursor: pointer; list-style: none; transition: color .2s ease, border-color .2s ease; }
.reserve-page .room-option-gallery summary::-webkit-details-marker { display: none; }
.reserve-page .room-option-gallery summary span { display: inline-block; font-size: 17px; line-height: 1; transition: transform .2s ease; }
.reserve-page .room-option-gallery summary:hover, .reserve-page .room-option-gallery[open] summary { border-color: var(--naranja); color: var(--naranja-texto); }
.reserve-page .room-option-gallery[open] summary span { transform: rotate(180deg); }
.reserve-page .room-option-gallery summary:focus-visible { outline: 2px solid var(--naranja); outline-offset: 3px; }
.reserve-page .room-option-gallery-content { margin-top: 12px; border: 1px solid var(--gris-linea); border-radius: 9px; background: var(--blanco-hospedaje); overflow: hidden; }
.reserve-page .room-option-gallery-track { display: flex; gap: 10px; overflow-x: auto; overscroll-behavior-inline: contain; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--gris-pizarra) var(--azul-niebla); }
.reserve-page .room-option-gallery-track figure { position: relative; flex: 0 0 100%; min-width: 0; margin: 0; scroll-snap-align: start; }
.reserve-page .room-option-gallery-track img { display: block; width: 100%; height: clamp(250px, 31vw, 350px); object-fit: contain; background: var(--azul-niebla); }
.reserve-page .room-option-gallery-controls { display: flex; justify-content: space-between; align-items: center; gap: 15px; padding: 10px 13px; color: var(--gris-texto); font-size: 11px; font-weight: 700; }
.reserve-page .room-option-gallery-controls > div { display: flex; gap: 6px; }
.reserve-page .room-option-gallery-controls button { display: grid; place-items: center; width: 34px; height: 34px; padding: 0; border: 1px solid var(--gris-linea); border-radius: 6px; background: var(--blanco); color: var(--azul-noche); font-size: 18px; transition: background-color .2s ease, border-color .2s ease, color .2s ease; }
.reserve-page .room-option-gallery-controls button:hover:not(:disabled) { border-color: var(--azul-noche); background: var(--azul-noche); color: var(--blanco); }
.reserve-page .room-option-gallery-controls button:disabled { opacity: .42; cursor: default; }
.reserve-page .room-option-gallery-track:focus-visible, .reserve-page .room-option-gallery-controls button:focus-visible { outline: 2px solid var(--naranja); outline-offset: 2px; }
.reserve-page .reserve-dates input:focus, .reserve-page .reserve-dates select:focus { border-color: var(--naranja); box-shadow: 0 0 0 3px rgba(255,79,18,.12); }
.reserve-page .reserve-review-total { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 16px 20px; border: 1px solid var(--gris-linea); border-radius: 8px; background: var(--azul-niebla); color: var(--azul-acero); font-size: 12px; }
.reserve-page .reserve-review-total strong { color: var(--azul-noche); font:700 21px var(--sans);font-variant-numeric:lining-nums tabular-nums}
.reserve-page .reserve-continue { background: var(--azul-noche) linear-gradient(var(--naranja), var(--naranja)) no-repeat; background-size: 0 100%; transition: background-size .35s cubic-bezier(.22,.61,.36,1), transform .22s ease; }
.reserve-page .reserve-continue:hover { background-size: 100% 100%; transform: translateY(-2px); }
.reserve-page .reserve-continue span { display: inline-block; transition: transform .22s ease; }
.reserve-page .reserve-continue:hover span { transform: translateX(4px); }
.reserve-page #availabilityMessage { min-height: 0; margin: 14px 0 0; color: var(--gris-texto); font-size: 12px; }
.reserve-page #availabilityMessage:empty { display: none; }
.reserve-page #availabilityMessage[data-state="available"] { color: var(--azul-acero); font-weight: 700; }
.reserve-page #availabilityMessage[data-state="error"] { color: var(--naranja-texto); }
@media (max-width: 850px) {
  .reserve-page .reserve-layout { grid-template-columns: minmax(0, 1fr); gap: 28px; }
  .reserve-page .reserve-main, .reserve-page .reserve-form { grid-row: auto; }
  .reserve-page .order-summary { grid-row: auto; position: static; }
  .reserve-page .summary-card { max-width: none; }
  .reserve-page .order-summary:not(.has-quote) .summary-photo,
  .reserve-page .order-summary:not(.has-quote) .summary-divider,
  .reserve-page .order-summary:not(.has-quote) .summary-detail,
  .reserve-page .order-summary:not(.has-quote) .price-row,
  .reserve-page .order-summary:not(.has-quote) .reserve-addon-summary,
  .reserve-page .order-summary:not(.has-quote) .trust-note { display: none; }
  .reserve-page .order-summary:not(.has-quote) .summary-card { padding: 17px 19px; }
  .reserve-page .order-summary:not(.has-quote) .summary-heading h2 { font-size: 21px; }
  .reserve-page .order-summary:not(.has-quote) .price-total { margin: 12px 0 0; padding-top: 11px; }
}
@media (max-width: 560px) {
  .reserve-page .room-option-card { gap: 11px; min-height: 106px; }
  .reserve-page .room-option-card img { width: 100px; height: 85px; }
  .reserve-page .room-option-copy strong { font-size: 13px; }
  .reserve-page .room-option-copy small { font-size: 11px; }
  .reserve-page .room-option-copy b { font-size: 12px; }
  .reserve-page .room-option-gallery summary { margin-left: 122px; }
  .reserve-page .room-option-gallery-track img { height: 275px; }
  .reserve-page .reserve-review-total { padding: 13px 15px; }
}
@media (max-width: 390px) {
  .reserve-page .room-option-card img { width: 82px; height: 78px; }
  .reserve-page .room-option-gallery summary { margin-left: 105px; }
  .reserve-page .room-option-gallery-track img { height: 245px; }
  .reserve-page .room-option-indicator { width: 15px; height: 15px; margin: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .reserve-page .room-option-card, .reserve-page .room-option-card img, .reserve-page .room-option-indicator, .reserve-page .room-option-gallery summary, .reserve-page .room-option-gallery summary span, .reserve-page .room-option-gallery-controls button, .reserve-page .reserve-continue, .reserve-page .reserve-continue span { transition: none; }
  .reserve-page .room-option-select:hover .room-option-card, .reserve-page .room-option-select:hover .room-option-card img, .reserve-page .reserve-continue:hover, .reserve-page .reserve-continue:hover span { transform: none; }
}

/* El checkout utiliza únicamente el progreso superior de la reserva. */
.checkout-page [hidden] { display: none !important; }
.checkout-page .booking-progress-list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.checkout-page .checkout-shell { width: min(calc(100% - 48px), 1120px); margin-top: 38px; }
.checkout-page .checkout-title { align-items: flex-start; }
.checkout-page .checkout-title h1 { max-width: 20ch; }
.checkout-page .checkout-title > div > p:last-child { max-width: 58ch; line-height: 1.6; }
.checkout-page .checkout-layout { gap: clamp(25px, 4vw, 56px); }
.checkout-page .checkout-step { display: block; padding: clamp(24px, 3vw, 34px); border-radius: 12px; box-shadow: 0 8px 26px rgba(20,35,66,.035); }
.checkout-page .step-content { min-width: 0; }
.checkout-page .checkout-section-kicker { margin: 0 0 8px; color: var(--naranja-texto); font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.checkout-page .checkout-step h2 { font-size: clamp(23px, 2.8vw, 28px); }
.checkout-page .checkout-step .step-copy { max-width: 52ch; line-height: 1.6; }
.checkout-page .form-grid input, .checkout-page .form-grid select, .checkout-page .invoice-fields input { min-height: 45px; font-size: 14px; transition: border-color .2s ease, box-shadow .2s ease; }
.checkout-page .form-grid input:focus-visible, .checkout-page .form-grid select:focus-visible, .checkout-page .invoice-fields input:focus-visible { outline: none; border-color: var(--naranja); box-shadow: 0 0 0 3px rgba(255,79,18,.12); }
.checkout-page .invoice-request { margin-top: 23px; padding: 16px 18px; }
.checkout-page .checkout-stage-actions { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin: 23px 0 8px; }
.checkout-page .checkout-stage-actions p { margin: 0; color: var(--gris-texto); font-size: 12px; }
.checkout-page .checkout-button { min-height: 49px; padding: 13px 19px; background: var(--azul-noche); transition: background-color .22s ease, transform .22s ease, box-shadow .22s ease; }
.checkout-page .checkout-button:hover:not(:disabled) { background: var(--naranja); transform: translateY(-2px); box-shadow: 0 10px 20px rgba(20,35,66,.14); }
.checkout-page .checkout-button:disabled { opacity: .55; cursor: wait; }
.checkout-page .checkout-button:focus-visible, .checkout-page .checkout-edit-link:focus-visible { outline: 2px solid var(--naranja); outline-offset: 3px; }
.checkout-page .checkout-button span { display: inline-block; transition: transform .22s ease; }
.checkout-page .checkout-button:hover span { transform: translateX(4px); }
.checkout-page .checkout-review { display: grid; gap: 13px; margin: 22px 0; padding: 18px 20px; border: 1px solid var(--gris-linea); border-radius: 8px; background: var(--blanco-hospedaje); }
.checkout-page .checkout-review > div { display: flex; justify-content: space-between; gap: 18px; font-size: 12px; }
.checkout-page .checkout-review span { color: var(--gris-texto); }
.checkout-page .checkout-review strong { color: var(--azul-noche); text-align: right; overflow-wrap: anywhere; }
.checkout-page .checkout-edit-link { width: fit-content; padding: 3px 0; border: 0; border-bottom: 1px solid currentColor; border-radius: 0; background: none; color: var(--naranja-texto); font-size: 12px; font-weight: 700; text-align: left; transition: color .2s ease; }
.checkout-page .checkout-edit-link:hover { color: var(--azul-noche); }
.checkout-page .payment-preview { padding: 22px; border: 1px solid var(--gris-linea); border-radius: 9px; background: var(--blanco); }
.checkout-page .payment-intro { display: flex; align-items: center; gap: 13px; }
.checkout-page .payment-lock { display: grid; place-items: center; flex: none; width: 38px; height: 38px; border-radius: 8px; background: var(--azul-niebla); color: var(--azul-acero); font-size: 18px; }
.checkout-page .payment-intro strong { font-size: 14px; }
.checkout-page .payment-intro p { margin: 3px 0 0; color: var(--gris-texto); font-size: 11px; line-height: 1.5; }
.checkout-page .payment-amount { display: flex; align-items: end; justify-content: space-between; gap: 14px; margin-top: 21px; padding: 20px 0 14px; border-top: 1px solid var(--azul-cielo); }
.checkout-page .payment-amount span { color: var(--azul-acero); font-size: 12px; }
.checkout-page .payment-amount strong { font:700 clamp(23px, 3vw, 30px)/1 var(--sans); white-space: nowrap;font-variant-numeric:lining-nums tabular-nums}
.checkout-page .payment-copy { margin: 0 0 18px; color: var(--gris-texto); font-size: 11px; line-height: 1.5; }
.checkout-page .payment-terms { align-items: start; margin: 0 0 20px; color: var(--azul-acero) !important; line-height: 1.55; }
.checkout-page .payment-terms input { flex: none; margin-top: 3px; }
.checkout-page .payment-terms a { color: var(--naranja-texto); text-underline-offset: 2px; }
.checkout-page .payment-preview .checkout-button { width: 100%; }
.checkout-page .payment-method-label { margin: 20px 0 11px; color: var(--azul-noche); font-size: 12px; font-weight: 800; }
.checkout-page .payment-methods { display: grid; gap: 10px; margin-bottom: 22px; }
.checkout-page .payment-method { overflow: hidden; border: 1px solid var(--gris-linea); border-radius: 9px; background: var(--blanco); transition: border-color .22s ease, box-shadow .22s ease; }
.checkout-page .payment-method:hover { border-color: var(--gris-linea); }
.checkout-page .payment-method.is-selected { border-color: var(--naranja); box-shadow: 0 0 0 2px rgba(255,79,18,.08); }
.checkout-page .payment-method-toggle { display: flex; align-items: center; gap: 13px; width: 100%; min-height: 72px; padding: 13px 16px; border: 0; background: transparent; color: var(--azul-noche); text-align: left; }
.checkout-page .payment-method-toggle > span:nth-child(2) { display: grid; flex: 1; gap: 3px; }
.checkout-page .payment-method-toggle strong { font-size: 13px; }
.checkout-page .payment-method-toggle small { color: var(--gris-texto); font-size: 11px; }
.checkout-page .payment-method-toggle:focus-visible { outline: 2px solid var(--naranja); outline-offset: -4px; }
.checkout-page .payment-method-icon { display: grid; place-items: center; flex: none; width: 39px; height: 39px; border-radius: 8px; background: var(--azul-niebla); color: var(--azul-noche); font-size: 24px; font-weight: 700; }
.checkout-page .payment-method-icon-card svg { width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.checkout-page .payment-method-icon-yape { border-radius: 9px; background: #9117a0; }
.checkout-page .payment-method-icon-yape img { display: block; width: 27px; height: 33px; object-fit: contain; }
.checkout-page .payment-method-chevron { color: var(--gris-texto); font-size: 23px; transition: transform .2s ease; }
.checkout-page .is-selected .payment-method-chevron { transform: rotate(180deg); }
.checkout-page .payment-method-panel { padding: 0 17px 18px; border-top: 1px solid var(--azul-niebla); }
.checkout-page .payment-method-panel[hidden] { display: none; }
.checkout-page .payment-method-help { margin: 15px 0 0; line-height: 1.5; }
.checkout-page .card-visual { position: relative; display: flex; flex-direction: column; justify-content: space-between; width: min(100%, 420px); min-height: 190px; margin: 19px auto 24px; padding: 24px 27px; overflow: hidden; border: 1px solid rgba(255,255,255,.18); border-radius: 18px; background: radial-gradient(ellipse at 88% 8%, rgba(100,116,139,.34), transparent 42%), linear-gradient(128deg, var(--gris-pizarra) 0%, var(--azul-acero) 53%, var(--azul-acero) 100%); box-shadow: 0 18px 36px rgba(30,53,94,.24), inset 0 1px rgba(255,255,255,.2); color: var(--blanco); }
.checkout-page .card-visual::after { position: absolute; right: -52px; bottom: -120px; width: 270px; height: 270px; border: 1px solid rgba(255,255,255,.12); border-radius: 50%; box-shadow: 0 0 0 24px rgba(255,255,255,.035), 0 0 0 50px rgba(255,255,255,.025); content: ''; pointer-events: none; }
.checkout-page .card-visual-top, .checkout-page .card-visual-bottom { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.checkout-page .card-visual-top strong { font-size: 21px; font-weight: 800; letter-spacing: .07em; }
.checkout-page .card-visual-mark { display: block; width: 42px; height: 32px; }
.checkout-page .card-visual-mark svg { display: block; width: 100%; height: 100%; fill: rgba(255,79,18,.72); stroke: rgba(255,255,255,.7); stroke-width: 1; }
.checkout-page .card-visual-bottom > span { position: relative; z-index: 1; min-width: 0; overflow: hidden; color: rgba(255,255,255,.96); font-size: clamp(13px, 2.3vw, 18px); font-weight: 600; letter-spacing: .14em; white-space: nowrap; }
.checkout-page .card-visual-bottom small { flex: none; color: var(--blanco); font-size: 11px; font-weight: 700; }
.checkout-page .yape-form-card { margin-top: 14px; overflow: hidden; border: 1px solid var(--azul-acero); border-radius: 11px; background: var(--blanco); }
.checkout-page .yape-form-heading { display: flex; align-items: center; gap: 9px; min-height: 61px; padding: 12px 15px; border-bottom: 1px solid var(--azul-acero); background: var(--blanco-hospedaje); color: var(--azul-noche); }
.checkout-page .yape-form-heading strong { font-size: 16px; }
.checkout-page .yape-selected-mark { display: grid; place-items: center; width: 21px; height: 21px; border: 1px solid #6d288c; border-radius: 50%; background: #6d288c; color: #fff; font-size: 12px; }
.checkout-page .yape-logo-mark { display: grid; place-items: center; width: 36px; height: 36px; margin-left: auto; border-radius: 9px; background: #9117a0; }
.checkout-page .yape-logo-mark img { display: block; width: 28px; height: 33px; object-fit: contain; }
.checkout-page .yape-steps { display: grid; gap: 4px; margin: 0; padding: 14px 20px 10px 38px; color: var(--gris-texto); font-size: 11px; line-height: 1.5; }
.checkout-page .yape-steps strong { color: var(--azul-acero); }
.checkout-page .yape-fields { display: grid; gap: 16px; margin: 12px 10px 18px; }
.checkout-page .yape-fields[hidden] { display: none; }
.checkout-page .yape-fields .card-field small { display: block; margin-top: 5px; color: var(--gris-texto); font-size: 11px; font-weight: 400; line-height: 1.45; }
.checkout-page .yape-fields input { min-height: 44px; }
.checkout-page .yape-phone-field input { border-radius: 999px; box-shadow: 0 2px 8px rgba(20,35,66,.14); }
.checkout-page .yape-otp-field { min-width: 0; margin: 0; padding: 0; border: 0; }
.checkout-page .yape-otp-field legend { margin-bottom: 12px; padding: 0; color: var(--azul-acero); font-size: 11px; font-weight: 700; }
.checkout-page .yape-otp-boxes { display: flex; justify-content: center; gap: 5px; }
.checkout-page .yape-otp-boxes input { width: clamp(36px, 8vw, 43px); min-height: 42px; padding: 4px; border: 1px solid var(--naranja); border-radius: 13px; color: var(--azul-noche); font-size: 18px; font-weight: 700; text-align: center; }
.checkout-page .yape-otp-boxes input:focus-visible { border-color: var(--azul-acero); box-shadow: 0 0 0 3px rgba(30,53,94,.12); }
.checkout-page .yape-otp-field > small { display: block; margin-top: 8px; color: var(--gris-texto); font-size: 11px; text-align: center; }
.checkout-page .yape-limit-note { margin: 14px 0 0; padding: 12px 14px; border: 1px solid var(--naranja-suave); border-radius: 6px; background: var(--blanco-hospedaje); color: var(--naranja-texto); font-size: 11px; line-height: 1.5; }
.checkout-page .yape-limit-note[hidden] { display: none; }
.checkout-page .yape-pay-button { width: calc(100% - 20px); margin: 0 10px 12px; background: #5b2b76; }
.checkout-page .yape-pay-button:hover:not(:disabled) { background: #48215f; }
.checkout-page .payment-preview .checkout-button[hidden] { display: none; }
.checkout-page .card-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; margin: 17px 0 19px; }
.checkout-page .card-number-block { grid-column: 1 / -1; display: grid; gap: 0; }
.checkout-page .card-number-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.checkout-page .card-brand-list { display: flex; align-items: center; gap: 4px; }
.checkout-page .card-brand-list svg { display: block; height: 19px; filter: drop-shadow(0 1px 1px rgba(20,35,66,.12)); }
.checkout-page .card-brand-list .brand-visa { width: 37px; }
.checkout-page .card-brand-list .brand-visa text { fill: #173875; font: italic 800 16px Arial, sans-serif; }
.checkout-page .card-brand-list .brand-mastercard { width: 29px; height: 19px; }
.checkout-page .card-brand-list .brand-mastercard circle:first-child { fill: #eb001b; }
.checkout-page .card-brand-list .brand-mastercard circle:nth-child(2) { fill: #f79e1b; }
.checkout-page .card-brand-list .brand-mastercard path { fill: #ff5f00; }
.checkout-page .card-brand-list .brand-amex { width: 29px; }
.checkout-page .card-brand-list .brand-amex rect { fill: #2875b9; }
.checkout-page .card-brand-list .brand-amex text { fill: #fff; font: 700 7px Arial, sans-serif; }
.checkout-page .card-number-head .card-brand-list { text-transform: none; }
.checkout-page .card-expiry-block { min-width: 0; }
.checkout-page .card-field-label { display: block; margin-bottom: 7px; color: var(--azul-acero); font-size: 11px; font-weight: 700; }
.checkout-page .card-expiry-fields { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 7px; }
.checkout-page .card-expiry-fields > span { color: var(--gris-texto); font-size: 15px; }
.checkout-page .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.checkout-page .card-field { display: block; min-width: 0; color: var(--azul-acero); font-size: 11px; font-weight: 700; }
.checkout-page .card-fields .card-field { font-size: 12px; letter-spacing: .035em; text-transform: uppercase; }
.checkout-page .card-field-wide { grid-column: 1 / -1; }
.checkout-page .card-field input { display: block; width: 100%; min-height: 46px; margin-top: 7px; padding: 11px 13px; border: 1px solid var(--gris-linea); border-radius: 5px; background: var(--blanco); color: var(--azul-noche); font-size: 15px; outline: 0; transition: border-color .2s ease, box-shadow .2s ease; }
.checkout-page .card-field input:focus-visible { border-color: var(--naranja); box-shadow: 0 0 0 3px rgba(255,79,18,.12); }
.checkout-page .card-field small { display: block; margin-top: 6px; color: var(--gris-texto); font-size: 11px; font-weight: 400; letter-spacing: 0; line-height: 1.45; text-transform: none; }
.checkout-page .card-number-block .card-field input { min-height: 49px; border-radius: 7px; font-size: 16px; font-variant-numeric: tabular-nums; letter-spacing: .12em; }
.checkout-page .card-expiry-fields input { text-align: center; }
.checkout-page .card-expiry-fields input::placeholder { color: var(--gris-texto); letter-spacing: .04em; }
.checkout-page .card-field input[readonly] { background: var(--blanco-hospedaje); color: var(--gris-texto); }
.checkout-page .payment-legal { line-height: 1.5; }
.checkout-page .card-pay-button { width: 100%; margin: 0 0 17px; }
.checkout-page .checkout-result-step .confirmation-box { margin: 22px 0; }
.checkout-page .checkout-result-step #retryPayment { margin: 4px 0; }
.payment-progress{display:flex;align-items:center;gap:10px;margin:16px 0 0;padding:12px 14px;border:1px solid var(--azul-cielo);border-radius:7px;background:var(--blanco-hospedaje);color:var(--azul-acero);font-size:12px}.payment-progress[hidden]{display:none}.payment-progress-spinner{width:17px;height:17px;flex:0 0 17px;border:2px solid var(--gris-linea);border-top-color:var(--naranja);border-radius:50%;animation:checkout-spin .75s linear infinite}@keyframes checkout-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.payment-progress-spinner{animation:none;border-top-color:var(--naranja)}}
.checkout-result-step[data-result-state="error"] .confirmation-box{background:var(--blanco-hospedaje)}.checkout-result-step[data-result-state="error"] .confirmation-box>span{background:var(--naranja)}.checkout-result-step[data-result-state="error"] .confirmation-box p{color:var(--gris-texto)}.checkout-result-step[data-result-state="pending"] .confirmation-box{background:var(--naranja-suave)}.checkout-result-step[data-result-state="pending"] .confirmation-box>span{background:var(--naranja);animation:checkout-pulse 1.5s ease-in-out infinite}.checkout-result-step[data-result-state="pending"] .confirmation-box p{color:var(--gris-texto)}@keyframes checkout-pulse{50%{box-shadow:0 0 0 5px rgba(255,79,18,.16)}}@media(prefers-reduced-motion:reduce){.checkout-result-step[data-result-state="pending"] .confirmation-box>span{animation:none}}
@media (max-width: 850px) {
  /* El resumen va primero y compacto: el total se ve antes de llenar el formulario. */
  .checkout-page .order-summary { grid-row: 1; }
  .checkout-page .checkout-main { grid-row: 2; }
  .checkout-page .summary-card { max-width: none; }
  .checkout-page .summary-photo, .checkout-page .summary-policies, .checkout-page .trust-note { display: none; }
}
.checkout-page .price-igv-note { margin: 8px 0 0; color: var(--gris-texto); font-size: 12px; line-height: 1.4; }
@media (max-width: 560px) {
  .checkout-page .checkout-stage-actions .checkout-button { width: 100%; justify-content: center; }
}
@media (max-width: 560px) {
  .checkout-page .checkout-shell { width: calc(100% - 28px); margin-top: 25px; }
  .checkout-page .checkout-step { padding: 22px 18px; }
  .checkout-page .checkout-stage-actions { display: grid; grid-template-columns: minmax(0, 1fr); justify-content: stretch; gap: 12px; }
  .checkout-page .checkout-stage-actions p { order: 2; text-align: center; }
  .checkout-page .checkout-review > div { display: grid; gap: 3px; }
  .checkout-page .checkout-review strong { text-align: left; }
  .checkout-page .payment-preview { padding: 17px; }
  .checkout-page .card-fields { gap: 12px; }
  .checkout-page .card-visual { min-height: 174px; padding: 21px 20px; }
  .checkout-page .yape-fields { grid-template-columns: 1fr; gap: 13px; }
  .checkout-page .card-field input { font-size: 16px; }
  .checkout-page .payment-amount { align-items: start; }
  .checkout-page .summary-photo { height: 150px; }
}
@media (max-width: 380px) {
  .checkout-page .yape-otp-boxes { gap: 4px; }
  .checkout-page .yape-otp-boxes input { width: clamp(29px, 8.5vw, 36px); min-height: 39px; border-radius: 11px; }
}
@media (max-width: 680px) {
  .reserve-dates input, .reserve-dates select,
  .reserve-contact input, .invoice-fields input, .pickup-fields select { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .checkout-page .checkout-button, .checkout-page .checkout-button span, .checkout-page .checkout-edit-link { transition: none; }
  .checkout-page .checkout-button:hover, .checkout-page .checkout-button:hover span { transform: none; }
}

/* Áreas táctiles de al menos 44 px en el flujo de reserva (auditoría de accesibilidad). */
.checkout-header .secure-label{display:inline-flex;align-items:center;min-height:44px}
.checkout-title .round-back{display:inline-grid;place-items:center;width:44px;height:44px;flex:none}
.room-option-gallery summary{display:inline-flex;align-items:center;gap:6px;min-height:44px}
.room-option-gallery-controls button{width:44px;height:44px}
.reserve-page .room-option-gallery-controls button{width:44px;height:44px}
.checkout-footer a{display:inline-flex;align-items:center;min-height:40px;padding-inline:4px}
.checkout-toast { transition: opacity 200ms var(--ease-out), transform 200ms var(--ease-out); }
.reserve-page .reserve-continue:active,
.checkout-page .checkout-button:active { transform: scale(.97); transition-duration: 160ms; }
@media (prefers-reduced-motion: reduce) {
  .checkout-toast { transform: none; transition: opacity 120ms ease; }
  .reserve-page .reserve-continue:active,
  .checkout-page .checkout-button:active { transform: none; }
}
@media (prefers-reduced-motion: no-preference) {
  .checkout-result-step[data-result-state="success"]:not([hidden]) .confirmation-box {
    animation: booking-result-arrive 320ms var(--ease-out) both;
  }
  .checkout-result-step[data-result-state="success"]:not([hidden]) .confirmation-box > span {
    animation: booking-mark-arrive 420ms var(--ease-out) 80ms both;
  }
  @keyframes booking-result-arrive {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
  }
  @keyframes booking-mark-arrive {
    from { opacity: 0; transform: scale(.92); }
    to { opacity: 1; transform: scale(1); }
  }
}

/* Consentimientos del formulario: casillas con área táctil cómoda y texto legible. */
.checkout-page .consent-block { display: grid; gap: 4px; margin-top: 18px; }
.checkout-page .consent-row { align-items: flex-start; gap: 12px; margin: 0; padding: 8px 0; color: var(--azul-acero) !important; font-size: 13px !important; line-height: 1.5; }
.checkout-page .consent-row input { flex: none; width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--azul-acero); }
.checkout-page .consent-row a { color: var(--azul-acero); font-weight: 700; }

/* Al elegir un método, su formulario aparece en su lugar con una entrada breve; el otro queda comprimido. */
@media (prefers-reduced-motion: no-preference) {
  .checkout-page .payment-method-panel:not([hidden]) { animation: payment-panel-in 240ms var(--ease-out); }
  @keyframes payment-panel-in { from { opacity: 0; transform: translateY(-6px); } }
}
.checkout-page .payment-method[hidden] { display: none; }

/* Modo ventana de Culqi (CULQI_CHECKOUT_MODAL=true): los datos de tarjeta y Yape se ingresan en la ventana de Culqi. */
.checkout-page .culqi-modal .card-visual,
.checkout-page .culqi-modal #cardFields,
.checkout-page .culqi-modal #yapeFields { display: none !important; }
