/*
 * APD 20.0 — reserva, calendario, viajeros y buscador compacto.
 * La disponibilidad y la reserva siguen siendo procesadas por Homey.
 */

:root {
    --apd20-primary:#1543a3;
    --apd20-primary-hover:#0e3488;
    --apd20-text:#222222;
    --apd20-muted:#6a6a6a;
    --apd20-border:#b0b0b0;
    --apd20-soft:#f7f7f7;
    --apd20-shadow:0 8px 28px rgba(0,0,0,.12);
    --apd20-modal-shadow:0 12px 36px rgba(0,0,0,.18);
}

/* --------------------------------------------------------------------------
   Encabezado del alojamiento: mismo buscador compacto que el inicio
   -------------------------------------------------------------------------- */
body.single-listing .apd5-header.is-detail-context {
    height:82px !important;
    min-height:82px !important;
    border-bottom:1px solid #ebebeb !important;
    background:#fff !important;
}
body.single-listing .apd5-header.is-detail-context .apd5-header-row {
    height:82px !important;
    min-height:82px !important;
    max-width:1440px !important;
    padding:0 48px !important;
    display:grid !important;
    grid-template-columns:180px minmax(420px,560px) 1fr !important;
    align-items:center !important;
    gap:28px !important;
}
body.single-listing .apd5-header.is-detail-context .apd19-detail-header-search {
    position:relative !important;
    width:100% !important;
    max-width:560px !important;
    height:56px !important;
    margin:0 auto !important;
    display:block !important;
}
body.single-listing .apd5-header.is-detail-context .apd19-detail-header-search .apd5-search {
    width:100% !important;
    height:56px !important;
    min-height:56px !important;
    padding:0 62px 0 58px !important;
    border:1px solid #dddddd !important;
    border-radius:999px !important;
    background:#fff !important;
    box-shadow:0 3px 12px rgba(0,0,0,.10) !important;
    display:grid !important;
    grid-template-columns:1fr 1.25fr .75fr !important;
    align-items:center !important;
    overflow:visible !important;
}
body.single-listing .apd20-detail-search-home {
    position:absolute !important;
    z-index:6 !important;
    left:17px !important;
    top:50% !important;
    width:30px !important;
    height:30px !important;
    transform:translateY(-50%) !important;
    pointer-events:none !important;
}
body.single-listing .apd20-detail-search-home svg { width:100% !important; height:100% !important; display:block !important; }
body.single-listing .apd5-header.is-detail-context .apd5-search-field,
body.single-listing .apd5-header.is-detail-context .apd5-search-field > button {
    height:54px !important;
    min-height:54px !important;
}
body.single-listing .apd5-header.is-detail-context .apd5-search-field > button {
    width:100% !important;
    padding:0 15px !important;
    display:flex !important;
    align-items:center !important;
    justify-content:flex-start !important;
    border:0 !important;
    background:transparent !important;
    white-space:nowrap !important;
}
body.single-listing .apd5-header.is-detail-context .apd5-search-field strong {
    display:block !important;
    max-width:100% !important;
    overflow:hidden !important;
    color:#222 !important;
    font-size:14px !important;
    font-weight:600 !important;
    line-height:1 !important;
    text-overflow:ellipsis !important;
}
body.single-listing .apd5-header.is-detail-context .apd5-search-field span { display:none !important; }
body.single-listing .apd5-header.is-detail-context .apd5-search-separator {
    position:absolute !important;
    top:14px !important;
    width:1px !important;
    height:28px !important;
    margin:0 !important;
    background:#dddddd !important;
}
body.single-listing .apd5-header.is-detail-context .apd5-search-separator.is-after-location { left:35.5% !important; }
body.single-listing .apd5-header.is-detail-context .apd5-search-separator.is-after-dates { left:71.5% !important; }
body.single-listing .apd5-header.is-detail-context .apd5-search-submit {
    position:absolute !important;
    z-index:7 !important;
    right:7px !important;
    top:7px !important;
    width:42px !important;
    height:42px !important;
    min-width:42px !important;
    min-height:42px !important;
    padding:0 !important;
    border:0 !important;
    border-radius:50% !important;
    background:linear-gradient(145deg,#173f91,#004bd6) !important;
    box-shadow:none !important;
    color:#fff !important;
}
body.single-listing .apd5-header.is-detail-context .apd5-search-submit svg { width:21px !important; height:21px !important; }
body.single-listing .apd5-header.is-detail-context .apd5-search-submit span { display:none !important; }
body.single-listing .apd5-header.is-detail-context .apd10-mobile-search-trigger { display:none !important; }

/* --------------------------------------------------------------------------
   Tarjeta de reserva
   -------------------------------------------------------------------------- */
body.single-listing .apd52-booking-column { width:374px !important; }
body.single-listing .apd52-booking-card {
    width:100% !important;
    padding:28px 24px 24px !important;
    border:1px solid #dddddd !important;
    border-radius:14px !important;
    background:#fff !important;
    box-shadow:var(--apd20-shadow) !important;
    overflow:visible !important;
}
body.single-listing .apd17-mobile-booking-close,
body.single-listing .apd52-booking-column > button.apd17-mobile-booking-close { display:none !important; }
body.single-listing .apd19-booking-price-summary {
    margin:0 0 22px !important;
    display:flex !important;
    align-items:baseline !important;
    gap:6px !important;
    white-space:nowrap !important;
}
body.single-listing .apd19-booking-price-summary strong {
    color:var(--apd20-text) !important;
    font-size:23px !important;
    font-weight:650 !important;
    line-height:1.1 !important;
    letter-spacing:-.3px !important;
    text-decoration:underline !important;
    text-underline-offset:2px !important;
}
body.single-listing .apd19-booking-price-summary span {
    color:var(--apd20-text) !important;
    font-size:15px !important;
    font-weight:400 !important;
}
body.single-listing .apd52-booking-card .sidebar-booking-module,
body.single-listing .apd52-booking-card .sidebar-booking-module .block,
body.single-listing .apd52-booking-card .sidebar-booking-module-body,
body.single-listing .apd52-booking-card .homey_notification,
body.single-listing .apd52-booking-card .block-body-sidebar {
    position:static !important;
    width:100% !important;
    min-width:0 !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    background:transparent !important;
    box-shadow:none !important;
}
body.single-listing .apd52-booking-card .sidebar-booking-module-header,
body.single-listing .apd52-booking-card .sidebar-booking-module-footer,
body.single-listing .apd52-booking-card .extra-prices,
body.single-listing .apd52-booking-card .search-message,
body.single-listing .apd52-booking-card .new_reser_request_user_email,
body.single-listing .apd52-booking-card .homey_preloader,
body.single-listing .apd52-booking-card #homey_booking_cost { display:none !important; }
body.single-listing .apd52-booking-card #single-listing-date-range {
    position:relative !important;
    z-index:4 !important;
    width:100% !important;
    height:58px !important;
    margin:0 !important;
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    border:1px solid #8f8f8f !important;
    border-bottom:0 !important;
    border-radius:12px 12px 0 0 !important;
    overflow:visible !important;
    background:#fff !important;
}
body.single-listing .apd52-booking-card .search-date-range-arrive,
body.single-listing .apd52-booking-card .search-date-range-depart {
    position:relative !important;
    height:57px !important;
    min-width:0 !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    background:#fff !important;
}
body.single-listing .apd52-booking-card .search-date-range-arrive { border-right:1px solid #8f8f8f !important; border-radius:11px 0 0 0 !important; }
body.single-listing .apd52-booking-card .search-date-range-depart { border-radius:0 11px 0 0 !important; }
body.single-listing .apd52-booking-card .search-date-range-arrive::before,
body.single-listing .apd52-booking-card .search-date-range-depart::before {
    position:absolute !important;
    z-index:2 !important;
    left:12px !important;
    top:8px !important;
    color:#222 !important;
    font-size:10px !important;
    font-weight:700 !important;
    line-height:1 !important;
    letter-spacing:.1px !important;
}
body.single-listing .apd52-booking-card .search-date-range-arrive::before { content:"CHECK-IN" !important; }
body.single-listing .apd52-booking-card .search-date-range-depart::before { content:"CHECK-OUT" !important; }
body.single-listing .apd52-booking-card .check_in_date,
body.single-listing .apd52-booking-card .check_out_date {
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    margin:0 !important;
    padding:25px 12px 7px !important;
    border:0 !important;
    border-radius:inherit !important;
    outline:0 !important;
    background:transparent !important;
    color:#222 !important;
    font-size:14px !important;
    font-weight:500 !important;
    line-height:1.1 !important;
    cursor:pointer !important;
    box-shadow:none !important;
}
body.single-listing .apd52-booking-card .check_in_date::placeholder,
body.single-listing .apd52-booking-card .check_out_date::placeholder { color:#6a6a6a !important; opacity:1 !important; }
body.single-listing .apd52-booking-card .search-date-range-arrive.is-active,
body.single-listing .apd52-booking-card .search-date-range-depart.is-active { box-shadow:inset 0 0 0 2px #222 !important; border-radius:10px !important; }

/* campo y panel de viajeros */
body.single-listing .apd52-booking-card .apd20-guests-field {
    position:relative !important;
    z-index:5 !important;
    width:100% !important;
    height:59px !important;
    margin:0 !important;
    border:1px solid #8f8f8f !important;
    border-radius:0 0 12px 12px !important;
    background:#fff !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field::before {
    content:"VIAJEROS" !important;
    position:absolute !important;
    z-index:2 !important;
    left:12px !important;
    top:9px !important;
    color:#222 !important;
    font-size:10px !important;
    font-weight:700 !important;
    line-height:1 !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field::after {
    content:"" !important;
    position:absolute !important;
    z-index:3 !important;
    right:16px !important;
    top:22px !important;
    width:9px !important;
    height:9px !important;
    border-right:2px solid #222 !important;
    border-bottom:2px solid #222 !important;
    transform:rotate(45deg) !important;
    transition:transform .18s ease !important;
    pointer-events:none !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field.is-open::after { transform:rotate(225deg) translate(-2px,-2px) !important; }
body.single-listing .apd52-booking-card .apd20-guests-field > input.form-control {
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    margin:0 !important;
    padding:26px 38px 8px 12px !important;
    border:0 !important;
    border-radius:inherit !important;
    outline:0 !important;
    background:transparent !important;
    color:#222 !important;
    font-size:14px !important;
    font-weight:400 !important;
    cursor:pointer !important;
    box-shadow:none !important;
}
body.single-listing .apd52-booking-card .apd20-guests-panel {
    position:absolute !important;
    z-index:10020 !important;
    top:66px !important;
    right:-1px !important;
    left:auto !important;
    width:324px !important;
    max-height:none !important;
    margin:0 !important;
    padding:18px 16px 18px !important;
    border:1px solid #dddddd !important;
    border-radius:4px !important;
    background:#fff !important;
    box-shadow:var(--apd20-modal-shadow) !important;
    overflow:visible !important;
}
body.single-listing .apd52-booking-card .apd20-guests-panel[hidden] { display:none !important; }
body.single-listing .apd52-booking-card .apd20-guests-panel:not([hidden]) { display:block !important; }
body.single-listing .apd20-guest-row {
    min-height:70px !important;
    display:flex !important;
    align-items:center !important;
    justify-content:space-between !important;
    gap:16px !important;
}
body.single-listing .apd20-guest-copy { min-width:0 !important; display:flex !important; flex-direction:column !important; gap:3px !important; }
body.single-listing .apd20-guest-copy strong { color:#222 !important; font-size:16px !important; font-weight:600 !important; line-height:1.2 !important; }
body.single-listing .apd20-guest-copy span,
body.single-listing .apd20-guest-copy a { color:#383838 !important; font-size:14px !important; font-weight:400 !important; line-height:1.25 !important; }
body.single-listing .apd20-guest-copy a { max-width:190px !important; text-decoration:underline !important; }
body.single-listing .apd20-guest-counter { flex:0 0 auto !important; display:flex !important; align-items:center !important; gap:12px !important; }
body.single-listing .apd20-guest-counter button {
    width:34px !important;
    height:34px !important;
    min-width:34px !important;
    padding:0 !important;
    border:1px solid #dddddd !important;
    border-radius:50% !important;
    background:#f7f7f7 !important;
    color:#222 !important;
    font-size:22px !important;
    font-weight:300 !important;
    line-height:30px !important;
    text-align:center !important;
}
body.single-listing .apd20-guest-counter button:disabled { color:#b9b9b9 !important; cursor:not-allowed !important; }
body.single-listing .apd20-guest-counter [data-apd20-guest-count] { min-width:16px !important; color:#222 !important; font-size:15px !important; font-weight:400 !important; text-align:center !important; }
body.single-listing .apd20-guests-capacity { margin:12px 0 20px !important; color:#383838 !important; font-size:13px !important; line-height:1.35 !important; }
body.single-listing .apd20-guests-close {
    width:auto !important;
    min-width:0 !important;
    margin:0 0 0 auto !important;
    padding:4px 0 !important;
    display:block !important;
    border:0 !important;
    background:transparent !important;
    color:#222 !important;
    font-size:15px !important;
    font-weight:600 !important;
    text-decoration:underline !important;
}

body.single-listing .apd52-booking-card #instance_reservation,
body.single-listing .apd52-booking-card #request_for_reservation,
body.single-listing .apd52-booking-card .btn-primary {
    width:100% !important;
    height:48px !important;
    margin:16px 0 0 !important;
    padding:0 18px !important;
    border:0 !important;
    border-radius:999px !important;
    background:linear-gradient(135deg,#173f91,#0050d8) !important;
    color:#fff !important;
    font-size:16px !important;
    font-weight:700 !important;
    line-height:48px !important;
    text-align:center !important;
    box-shadow:none !important;
}
body.single-listing .apd52-booking-card #instance_reservation:hover,
body.single-listing .apd52-booking-card #request_for_reservation:hover { background:linear-gradient(135deg,#12357e,#003eb0) !important; }
body.single-listing .apd13-no-charge {
    margin:15px 0 0 !important;
    color:#454545 !important;
    font-size:13px !important;
    line-height:1.35 !important;
    text-align:center !important;
}
body.single-listing .apd52-report-link {
    margin:22px auto 0 !important;
    padding:0 !important;
    border:0 !important;
    background:transparent !important;
    color:#6a6a6a !important;
    font-size:13px !important;
    text-decoration:underline !important;
}
body.single-listing .apd52-report-link::before { content:"⚑"; margin-right:10px; text-decoration:none; }

/* --------------------------------------------------------------------------
   Calendario desplegable de la tarjeta
   -------------------------------------------------------------------------- */
body.single-listing .apd52-booking-card #single-booking-search-calendar {
    position:fixed !important;
    z-index:100000 !important;
    top:50% !important;
    left:50% !important;
    right:auto !important;
    bottom:auto !important;
    width:720px !important;
    max-width:calc(100vw - 32px) !important;
    min-height:500px !important;
    max-height:calc(100vh - 36px) !important;
    margin:0 !important;
    padding:22px 28px 18px !important;
    border:0 !important;
    border-radius:14px !important;
    background:#fff !important;
    box-shadow:var(--apd20-modal-shadow) !important;
    transform:translate(-50%,-50%) !important;
    overflow:auto !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar[aria-hidden="true"] { display:none !important; }
body.single-listing .apd52-booking-card #single-booking-search-calendar.apd20-calendar-open { display:block !important; }
body.single-listing .apd20-calendar-head {
    margin:0 0 16px !important;
    display:grid !important;
    grid-template-columns:1fr 316px !important;
    align-items:start !important;
    gap:22px !important;
}
body.single-listing .apd20-calendar-heading h3 { margin:0 0 4px !important; color:#222 !important; font-size:22px !important; font-weight:650 !important; line-height:1.1 !important; }
body.single-listing .apd20-calendar-heading p { margin:0 !important; color:#717171 !important; font-size:14px !important; line-height:1.35 !important; }
body.single-listing .apd20-calendar-date-boxes {
    height:58px !important;
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    border:1px solid #8f8f8f !important;
    border-radius:9px !important;
    overflow:hidden !important;
}
body.single-listing .apd20-calendar-date-box {
    position:relative !important;
    min-width:0 !important;
    padding:23px 32px 7px 12px !important;
    border:0 !important;
    background:#fff !important;
    color:#222 !important;
    font-size:13px !important;
    text-align:left !important;
}
body.single-listing .apd20-calendar-date-box + .apd20-calendar-date-box { border-left:1px solid #8f8f8f !important; }
body.single-listing .apd20-calendar-date-box.is-active { box-shadow:inset 0 0 0 2px #222 !important; border-radius:8px !important; }
body.single-listing .apd20-calendar-date-box small { position:absolute !important; top:7px !important; left:12px !important; color:#222 !important; font-size:9px !important; font-weight:700 !important; line-height:1 !important; }
body.single-listing .apd20-calendar-date-box i { position:absolute !important; right:11px !important; top:50% !important; color:#333 !important; font-size:18px !important; font-style:normal !important; transform:translateY(-50%) !important; }
body.single-listing .apd20-calendar-month-grid,
body.single-listing .apd52-booking-card #single-booking-search-calendar .apd18-calendar-month-grid,
body.single-listing .apd52-booking-card #single-booking-search-calendar .apd19-calendar-month-grid {
    width:100% !important;
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:42px !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .single-listing-calendar-wrap {
    width:100% !important;
    margin:0 !important;
    float:none !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .month { margin:0 0 18px !important; text-align:center !important; }
body.single-listing .apd52-booking-card #single-booking-search-calendar .month h4 { color:#222 !important; font-size:16px !important; font-weight:650 !important; }
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.weekdays,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days {
    width:100% !important;
    margin:0 !important;
    padding:0 !important;
    display:grid !important;
    grid-template-columns:repeat(7,1fr) !important;
    list-style:none !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.weekdays { margin-bottom:8px !important; }
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.weekdays li {
    height:34px !important;
    color:#555 !important;
    font-size:12px !important;
    font-weight:500 !important;
    line-height:34px !important;
    text-align:center !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li {
    position:relative !important;
    width:auto !important;
    height:42px !important;
    min-height:42px !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    background:transparent !important;
    color:#222 !important;
    cursor:pointer !important;
    line-height:42px !important;
    text-align:center !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li .day-number {
    position:relative !important;
    z-index:2 !important;
    width:39px !important;
    height:39px !important;
    margin:1px auto !important;
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    border:1px solid transparent !important;
    border-radius:50% !important;
    background:transparent !important;
    color:inherit !important;
    font-size:13px !important;
    font-weight:500 !important;
    line-height:1 !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.future-day:hover .day-number { border-color:#222 !important; }
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.day-disabled,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.past-day,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.homey-not-available-for-booking,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.day-booked,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.day-pending,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.day-unavailable {
    color:#b0b0b0 !important;
    cursor:not-allowed !important;
    text-decoration:line-through !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-in-range::before,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.in-between::before {
    content:"" !important;
    position:absolute !important;
    z-index:0 !important;
    inset:1px -1px !important;
    display:block !important;
    background:#f1f1f1 !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-selected .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.selected .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.active .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.from-day .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.to-day .day-number {
    border-color:#222 !important;
    background:#222 !important;
    color:#fff !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .calendar-navigation {
    position:absolute !important;
    z-index:5 !important;
    top:126px !important;
    left:20px !important;
    right:20px !important;
    height:36px !important;
    pointer-events:none !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .listing-cal-prev,
body.single-listing .apd52-booking-card #single-booking-search-calendar .listing-cal-next {
    position:absolute !important;
    top:0 !important;
    width:34px !important;
    height:34px !important;
    min-width:34px !important;
    padding:0 !important;
    border:0 !important;
    border-radius:50% !important;
    background:#fff !important;
    color:#222 !important;
    pointer-events:auto !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .listing-cal-prev { left:0 !important; }
body.single-listing .apd52-booking-card #single-booking-search-calendar .listing-cal-next { right:0 !important; }
body.single-listing .apd52-booking-card #single-booking-search-calendar .listing-cal-prev.disabled { opacity:.25 !important; }
body.single-listing .apd20-calendar-footer {
    margin-top:18px !important;
    display:flex !important;
    align-items:center !important;
    justify-content:space-between !important;
    gap:18px !important;
}
body.single-listing .apd20-calendar-keyboard { width:28px !important; height:28px !important; display:flex !important; align-items:center !important; justify-content:center !important; color:#222 !important; }
body.single-listing .apd20-calendar-keyboard svg { width:22px !important; height:22px !important; }
body.single-listing .apd20-calendar-actions { margin-left:auto !important; display:flex !important; align-items:center !important; gap:18px !important; }
body.single-listing .apd20-calendar-clear {
    padding:6px 0 !important;
    border:0 !important;
    background:transparent !important;
    color:#222 !important;
    font-size:13px !important;
    font-weight:600 !important;
    text-decoration:underline !important;
}
body.single-listing .apd20-calendar-close {
    min-width:82px !important;
    height:42px !important;
    padding:0 18px !important;
    border:0 !important;
    border-radius:9px !important;
    background:#222 !important;
    color:#fff !important;
    font-size:14px !important;
    font-weight:650 !important;
}
body.single-listing.apd20-calendar-is-open { overflow:hidden !important; }

/* El calendario de disponibilidad de la página conserva los mismos días limpios */
body.single-listing .apd52-native-calendar .single-listing-calendar-wrap ul.days li::before,
body.single-listing .apd52-native-calendar .single-listing-calendar-wrap ul.days li::after { display:none !important; }

@media (max-width: 1100px) {
    body.single-listing .apd5-header.is-detail-context .apd5-header-row {
        grid-template-columns:120px minmax(380px,520px) 1fr !important;
        padding:0 24px !important;
    }
    body.single-listing .apd5-header.is-detail-context .apd5-host-trigger { display:none !important; }
}

@media (max-width: 991px) {
    body.single-listing .apd5-header.is-detail-context { height:64px !important; min-height:64px !important; }
    body.single-listing .apd5-header.is-detail-context .apd5-header-row {
        height:64px !important;
        min-height:64px !important;
        grid-template-columns:96px 1fr !important;
        padding:0 16px !important;
    }
    body.single-listing .apd5-header.is-detail-context .apd19-detail-header-search { display:none !important; }
    body.single-listing .apd52-booking-column { width:100% !important; }
    body.single-listing .apd17-mobile-booking-open .apd17-mobile-booking-close {
        position:fixed !important;
        z-index:100003 !important;
        top:16px !important;
        left:16px !important;
        width:40px !important;
        height:40px !important;
        display:block !important;
        border:0 !important;
        border-radius:50% !important;
        background:#f2f2f2 !important;
        color:#222 !important;
        font-size:25px !important;
    }
    body.single-listing .apd52-booking-card { max-width:520px !important; margin:0 auto !important; padding:24px 20px !important; }
    body.single-listing .apd52-booking-card .apd20-guests-panel {
        position:fixed !important;
        z-index:100004 !important;
        left:16px !important;
        right:16px !important;
        bottom:16px !important;
        top:auto !important;
        width:auto !important;
        max-height:calc(100vh - 100px) !important;
        overflow:auto !important;
        border-radius:16px !important;
    }
    body.single-listing .apd52-booking-card #single-booking-search-calendar {
        top:auto !important;
        left:0 !important;
        right:0 !important;
        bottom:0 !important;
        width:100% !important;
        max-width:none !important;
        min-height:0 !important;
        max-height:92vh !important;
        padding:22px 18px 18px !important;
        border-radius:20px 20px 0 0 !important;
        transform:none !important;
    }
    body.single-listing .apd20-calendar-head { grid-template-columns:1fr !important; gap:14px !important; }
    body.single-listing .apd20-calendar-date-boxes { width:100% !important; }
    body.single-listing .apd20-calendar-month-grid,
    body.single-listing .apd52-booking-card #single-booking-search-calendar .apd18-calendar-month-grid,
    body.single-listing .apd52-booking-card #single-booking-search-calendar .apd19-calendar-month-grid { grid-template-columns:1fr !important; gap:0 !important; }
    body.single-listing .apd52-booking-card #single-booking-search-calendar .calendar-navigation { top:188px !important; }
}

body.single-listing .apd19-booking-price-summary.is-awaiting-dates {
    align-items:flex-start !important;
    white-space:normal !important;
}
body.single-listing .apd19-booking-price-summary.is-awaiting-dates strong {
    max-width:280px !important;
    font-size:22px !important;
    line-height:1.02 !important;
    text-decoration:none !important;
}
body.single-listing .apd19-booking-price-summary.is-awaiting-dates span { display:none !important; }

/* --------------------------------------------------------------------------
   APD 20.1 — corrección de colisiones con los estilos nativos de Homey.
   Homey agrega iconos por pseudo-elementos y, debajo de 1200 px, redefine el
   ancho de las columnas por ID. Esta capa neutraliza esas reglas para que la
   tarjeta conserve el diseño de reserva esperado en todos los escritorios.
   -------------------------------------------------------------------------- */
body.single-listing .apd52-booking-card #single-listing-date-range::after {
    content:none !important;
    display:none !important;
}
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-arrive,
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-depart {
    width:auto !important;
    min-width:0 !important;
    height:57px !important;
    margin:0 !important;
    padding:0 !important;
    float:none !important;
    display:block !important;
    overflow:hidden !important;
}
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-arrive::after,
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-depart::after {
    content:none !important;
    display:none !important;
    font-family:inherit !important;
}
body.single-listing .apd52-booking-card #single-listing-date-range .check_in_date,
body.single-listing .apd52-booking-card #single-listing-date-range .check_out_date {
    inset:0 !important;
    width:100% !important;
    height:57px !important;
    min-height:57px !important;
    padding:25px 12px 7px !important;
    background:#fff !important;
    background-image:none !important;
    color:#222 !important;
    font-family:inherit !important;
    font-size:14px !important;
    font-weight:400 !important;
    line-height:18px !important;
    text-indent:0 !important;
    white-space:nowrap !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    -webkit-appearance:none !important;
    appearance:none !important;
}
body.single-listing .apd52-booking-card #single-listing-date-range .check_in_date::placeholder,
body.single-listing .apd52-booking-card #single-listing-date-range .check_out_date::placeholder {
    color:#717171 !important;
    opacity:1 !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field.search-guests {
    width:100% !important;
    height:59px !important;
    margin:0 !important;
    padding:0 !important;
    float:none !important;
    display:block !important;
    overflow:visible !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field.search-guests::after {
    content:"" !important;
    display:block !important;
    position:absolute !important;
    z-index:3 !important;
    top:21px !important;
    right:16px !important;
    bottom:auto !important;
    left:auto !important;
    width:9px !important;
    height:9px !important;
    margin:0 !important;
    border:0 !important;
    border-right:2px solid #222 !important;
    border-bottom:2px solid #222 !important;
    background:transparent !important;
    color:transparent !important;
    font-family:inherit !important;
    font-size:0 !important;
    line-height:0 !important;
    transform:rotate(45deg) !important;
    transform-origin:center !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field.search-guests.is-open::after {
    top:25px !important;
    transform:rotate(225deg) !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field.search-guests > input.form-control {
    inset:0 !important;
    width:100% !important;
    height:58px !important;
    min-height:58px !important;
    padding:25px 40px 7px 12px !important;
    background:#fff !important;
    background-image:none !important;
    color:#222 !important;
    font-family:inherit !important;
    font-size:14px !important;
    font-weight:400 !important;
    line-height:18px !important;
    text-indent:0 !important;
    -webkit-appearance:none !important;
    appearance:none !important;
}
body.single-listing .apd52-booking-card .apd19-booking-price-summary.is-awaiting-dates {
    min-height:48px !important;
    margin-bottom:20px !important;
}
body.single-listing .apd52-booking-card .apd19-booking-price-summary.is-awaiting-dates strong {
    max-width:300px !important;
    font-size:23px !important;
    line-height:1.02 !important;
    letter-spacing:-.35px !important;
}
body.single-listing .apd52-booking-card #instance_reservation,
body.single-listing .apd52-booking-card #request_for_reservation,
body.single-listing .apd52-booking-card .btn-primary.btn-full-width {
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    line-height:1 !important;
}

@media (max-width:1200px) and (min-width:992px) {
    body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-arrive,
    body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-depart {
        width:auto !important;
        margin:0 !important;
    }
}

/* --------------------------------------------------------------------------
   APD 20.2 — calendario y viajeros mutuamente excluyentes, sin desbordes.
   Esta capa es la definición final y prevalece sobre estilos heredados.
   -------------------------------------------------------------------------- */
body.single-listing .apd52-booking-card #single-listing-date-range.apd20-calendar-parent-open {
    z-index:100006 !important;
}
body.single-listing.apd20-calendar-is-open .apd52-booking-card .apd20-guests-field {
    z-index:1 !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar,
body.single-listing .apd52-booking-card #single-booking-search-calendar *,
body.single-listing .apd20-keyboard-backdrop,
body.single-listing .apd20-keyboard-backdrop * {
    box-sizing:border-box !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar {
    width:660px !important;
    min-width:0 !important;
    min-height:0 !important;
    max-width:calc(100vw - 32px) !important;
    max-height:calc(100vh - 32px) !important;
    padding:24px 28px 18px !important;
    overflow-x:hidden !important;
    overflow-y:auto !important;
    overscroll-behavior:contain !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .apd20-calendar-head {
    width:100% !important;
    grid-template-columns:minmax(0,1fr) 310px !important;
    gap:24px !important;
    margin-bottom:20px !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .apd20-calendar-heading,
body.single-listing .apd52-booking-card #single-booking-search-calendar .apd20-calendar-date-boxes,
body.single-listing .apd52-booking-card #single-booking-search-calendar .apd20-calendar-month-grid,
body.single-listing .apd52-booking-card #single-booking-search-calendar .single-listing-calendar-wrap,
body.single-listing .apd52-booking-card #single-booking-search-calendar .left-calendar,
body.single-listing .apd52-booking-card #single-booking-search-calendar .right-calendar {
    min-width:0 !important;
    max-width:100% !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .apd20-calendar-month-grid,
body.single-listing .apd52-booking-card #single-booking-search-calendar .apd18-calendar-month-grid,
body.single-listing .apd52-booking-card #single-booking-search-calendar .apd19-calendar-month-grid {
    width:100% !important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
    gap:34px !important;
    overflow:visible !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .single-listing-calendar-wrap,
body.single-listing .apd52-booking-card #single-booking-search-calendar .left-calendar,
body.single-listing .apd52-booking-card #single-booking-search-calendar .right-calendar {
    width:100% !important;
    min-width:0 !important;
    padding:0 !important;
    margin:0 !important;
    float:none !important;
    overflow:visible !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .month {
    min-height:30px !important;
    margin:0 0 12px !important;
    padding:0 32px !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .month h4 {
    margin:0 !important;
    line-height:30px !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.weekdays,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days {
    min-width:0 !important;
    max-width:100% !important;
    overflow:visible !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .calendar-navigation {
    top:128px !important;
    left:18px !important;
    right:18px !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .listing-cal-prev,
body.single-listing .apd52-booking-card #single-booking-search-calendar .listing-cal-next {
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    font-size:0 !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .listing-cal-prev::before,
body.single-listing .apd52-booking-card #single-booking-search-calendar .listing-cal-next::before {
    content:"" !important;
    width:8px !important;
    height:8px !important;
    display:block !important;
    border-top:1.7px solid #222 !important;
    border-right:1.7px solid #222 !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar .listing-cal-prev::before { transform:rotate(-135deg) !important; }
body.single-listing .apd52-booking-card #single-booking-search-calendar .listing-cal-next::before { transform:rotate(45deg) !important; }

/* Homey puede conservar clases visuales transitorias. Sólo APD 20.2 pinta el rango confirmado. */
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.selected:not(.apd20-selected) .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.active:not(.apd20-selected) .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.from-day:not(.apd20-selected) .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.to-day:not(.apd20-selected) .day-number {
    border-color:transparent !important;
    background:transparent !important;
    color:inherit !important;
    box-shadow:none !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-in-range::before {
    inset:2px -1px !important;
    border-radius:0 !important;
    background:#f0f0f0 !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-start::before {
    content:"" !important;
    position:absolute !important;
    z-index:0 !important;
    top:2px !important;
    right:-1px !important;
    bottom:2px !important;
    left:50% !important;
    display:block !important;
    background:#f0f0f0 !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-end::before {
    content:"" !important;
    position:absolute !important;
    z-index:0 !important;
    top:2px !important;
    right:50% !important;
    bottom:2px !important;
    left:-1px !important;
    display:block !important;
    background:#f0f0f0 !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-start .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-end .day-number {
    position:relative !important;
    z-index:3 !important;
    border-color:#222 !important;
    background:#222 !important;
    color:#fff !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-start .day-number {
    box-shadow:0 0 0 2px #fff,0 0 0 3px #222 !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-start.apd20-range-end::before {
    display:none !important;
}

/* El valor visible usa barras sin modificar el formato interno que Homey procesa. */
body.single-listing .apd52-booking-card .check_in_date.apd20-date-source,
body.single-listing .apd52-booking-card .check_out_date.apd20-date-source {
    color:transparent !important;
    caret-color:transparent !important;
}
body.single-listing .apd52-booking-card .check_in_date.apd20-date-source::placeholder,
body.single-listing .apd52-booking-card .check_out_date.apd20-date-source::placeholder {
    color:transparent !important;
}
body.single-listing .apd52-booking-card .apd20-card-date-value {
    position:absolute !important;
    z-index:3 !important;
    left:12px !important;
    right:10px !important;
    bottom:8px !important;
    display:block !important;
    overflow:hidden !important;
    color:#222 !important;
    font-size:14px !important;
    font-weight:400 !important;
    line-height:18px !important;
    white-space:nowrap !important;
    text-overflow:ellipsis !important;
    pointer-events:none !important;
}

/* Viajeros: mismo ancho del campo, directamente debajo y nunca dentro del calendario. */
body.single-listing .apd52-booking-card .apd20-guests-field.is-open {
    z-index:10001 !important;
    border-color:#222 !important;
    box-shadow:inset 0 0 0 1px #222 !important;
}
body.single-listing .apd52-booking-card .apd20-guests-panel {
    top:100% !important;
    left:-1px !important;
    right:auto !important;
    bottom:auto !important;
    width:calc(100% + 2px) !important;
    max-width:none !important;
    margin:0 !important;
    padding:18px 16px 16px !important;
    border-radius:0 0 10px 10px !important;
    border-top:0 !important;
    overflow:visible !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field.is-open .apd20-guests-panel {
    box-shadow:0 10px 24px rgba(0,0,0,.14) !important;
}
body.single-listing .apd20-guest-row {
    min-height:68px !important;
    border:0 !important;
}
body.single-listing .apd20-guests-capacity {
    margin:12px 0 18px !important;
    font-size:14px !important;
    line-height:1.3 !important;
}
body.single-listing .apd20-guests-close {
    margin-left:auto !important;
    font-size:16px !important;
    text-decoration:none !important;
}

/* Panel de atajos, equivalente al comportamiento de la referencia. */
body.single-listing .apd20-calendar-keyboard {
    border-radius:6px !important;
    cursor:pointer !important;
}
body.single-listing .apd20-calendar-keyboard:focus-visible {
    outline:2px solid #222 !important;
    outline-offset:2px !important;
}
body.single-listing .apd20-keyboard-backdrop[hidden] { display:none !important; }
body.single-listing .apd20-keyboard-backdrop {
    position:fixed !important;
    z-index:100020 !important;
    inset:0 !important;
    display:flex !important;
    align-items:center !important;
    justify-content:flex-start !important;
    padding:20px !important;
    background:rgba(0,0,0,.38) !important;
}
body.single-listing .apd20-keyboard-dialog {
    width:376px !important;
    max-width:calc(100vw - 40px) !important;
    max-height:calc(100vh - 40px) !important;
    padding:34px 32px 30px !important;
    border-radius:28px !important;
    background:#fff !important;
    box-shadow:0 18px 50px rgba(0,0,0,.22) !important;
    overflow:auto !important;
}
body.single-listing .apd20-keyboard-dialog h3 {
    margin:0 0 28px !important;
    color:#222 !important;
    font-size:20px !important;
    font-weight:650 !important;
}
body.single-listing .apd20-keyboard-dialog dl {
    margin:0 !important;
    display:grid !important;
    gap:20px !important;
}
body.single-listing .apd20-keyboard-dialog dl > div {
    display:grid !important;
    grid-template-columns:76px 1fr !important;
    align-items:start !important;
    gap:14px !important;
}
body.single-listing .apd20-keyboard-dialog dt {
    width:max-content !important;
    max-width:76px !important;
    margin:0 !important;
    padding:4px 8px !important;
    border-radius:4px !important;
    background:#f7f7f7 !important;
    color:#444 !important;
    font-size:11px !important;
    font-weight:600 !important;
    line-height:1.15 !important;
}
body.single-listing .apd20-keyboard-dialog dd {
    margin:0 !important;
    color:#717171 !important;
    font-size:16px !important;
    line-height:1.35 !important;
}
body.single-listing .apd20-keyboard-return {
    width:100% !important;
    margin:28px 0 0 !important;
    padding:8px 0 !important;
    border:0 !important;
    background:transparent !important;
    color:#222 !important;
    font-size:16px !important;
    font-weight:650 !important;
    text-align:center !important;
}
body.single-listing.apd20-keyboard-open { overflow:hidden !important; }

@media (max-width: 991px) {
    body.single-listing .apd52-booking-card #single-listing-date-range.apd20-calendar-parent-open {
        z-index:100006 !important;
    }
    body.single-listing .apd52-booking-card #single-booking-search-calendar {
        width:100% !important;
        max-width:none !important;
        max-height:92vh !important;
        overflow-x:hidden !important;
    }
    body.single-listing .apd52-booking-card #single-booking-search-calendar .apd20-calendar-head {
        grid-template-columns:1fr !important;
        gap:14px !important;
    }
    body.single-listing .apd52-booking-card #single-booking-search-calendar .apd20-calendar-month-grid,
    body.single-listing .apd52-booking-card #single-booking-search-calendar .apd18-calendar-month-grid,
    body.single-listing .apd52-booking-card #single-booking-search-calendar .apd19-calendar-month-grid {
        grid-template-columns:1fr !important;
        gap:0 !important;
    }
    body.single-listing .apd52-booking-card #single-booking-search-calendar .calendar-navigation {
        top:190px !important;
    }
    body.single-listing .apd52-booking-card .apd20-guests-panel {
        position:fixed !important;
        z-index:100010 !important;
        top:auto !important;
        right:16px !important;
        bottom:16px !important;
        left:16px !important;
        width:auto !important;
        max-height:calc(100vh - 100px) !important;
        border:1px solid #ddd !important;
        border-radius:16px !important;
        overflow:auto !important;
    }
    body.single-listing .apd20-keyboard-backdrop {
        align-items:flex-end !important;
        padding:0 !important;
    }
    body.single-listing .apd20-keyboard-dialog {
        width:100% !important;
        max-width:none !important;
        max-height:88vh !important;
        border-radius:24px 24px 0 0 !important;
    }
}

/* --------------------------------------------------------------------------
   APD 20.3 — una sola selección para la tarjeta y el calendario de la página.
   Los timestamps de Homey se generan en el huso horario del servidor. La capa
   visual usa fechas de calendario (sin conversión de zona horaria) y replica
   exactamente el mismo rango en ambos calendarios.
   -------------------------------------------------------------------------- */
body.single-listing .apd52-native-calendar .apd20-native-month-grid {
    width:100% !important;
    display:grid !important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
    gap:46px !important;
}
body.single-listing .apd52-native-calendar .apd20-native-month-grid > .single-listing-calendar-wrap {
    min-width:0 !important;
}

/* Rango sincronizado en el calendario permanente de la página. */
body.single-listing .apd52-native-calendar ul.days li.apd20-in-range {
    color:#222 !important;
    background:#f1f1f1 !important;
}
body.single-listing .apd52-native-calendar ul.days li.apd20-selected .day-number,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-start .day-number,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-end .day-number {
    border-color:#222 !important;
    background:#222 !important;
    color:#fff !important;
}
body.single-listing .apd52-native-calendar ul.days li.apd20-range-start,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-end {
    color:#fff !important;
}

/* En el desplegable, APD manda sobre cualquier clase residual de Homey. */
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-selected .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-start .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-end .day-number {
    border-color:#222 !important;
    background:#222 !important;
    color:#fff !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-in-range {
    color:#222 !important;
}

@media (max-width: 991px) {
    body.single-listing .apd52-native-calendar .apd20-native-month-grid {
        grid-template-columns:minmax(0,1fr) !important;
        gap:0 !important;
    }
}


/* --------------------------------------------------------------------------
   APD 20.4 — moneda, fechas y aviso de disponibilidad.
   -------------------------------------------------------------------------- */

/* El mensaje verde nativo de Homey duplica información y desplaza la tarjeta.
   Los errores de disponibilidad siguen visibles. */
body.single-listing .apd52-booking-card .homey_notification > .notify.text-success,
body.single-listing .apd52-booking-card .homey_notification > .notify.btn-success-outlined,
body.single-listing .apd52-booking-card .homey_notification > .btn-success-outlined.notify {
    display:none !important;
}

/* El input nativo conserva el valor que Homey necesita, pero queda como una
   capa transparente de interacción. APD muestra una sola fecha legible. */
body.single-listing .apd52-booking-card #single-listing-date-range .check_in_date.apd20-date-source,
body.single-listing .apd52-booking-card #single-listing-date-range .check_out_date.apd20-date-source {
    z-index:5 !important;
    opacity:0 !important;
    color:transparent !important;
    -webkit-text-fill-color:transparent !important;
    text-shadow:none !important;
    font-size:0 !important;
    line-height:0 !important;
    caret-color:transparent !important;
    cursor:pointer !important;
}
body.single-listing .apd52-booking-card #single-listing-date-range .apd20-card-date-value {
    z-index:4 !important;
}

/* Homey dibuja rombos mediante pseudoelementos en ciertos días bloqueados.
   En el calendario APD se usa únicamente texto tachado/desactivado. */
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li::after {
    content:none !important;
    display:none !important;
}

/* --------------------------------------------------------------------------
   APD 20.5 — elimina marcadores romboidales residuales de Homey.
   Homey agrega pseudo-elementos a ciertos días de entrada/salida. APD dibuja
   el rango con sus propias clases, por lo que esos marcadores no deben verse.
   -------------------------------------------------------------------------- */
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li::after,
body.single-listing .apd52-native-calendar ul.days li::after,
body.single-listing .single-listing-calendar-wrap ul.days li::after {
    content: none !important;
    display: none !important;
    width: 0 !important;
    height: 0 !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    transform: none !important;
}

/* Sólo APD puede pintar el fondo del rango mediante ::before. */
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li:not(.apd20-in-range):not(.apd20-range-start):not(.apd20-range-end)::before,
body.single-listing .apd52-native-calendar ul.days li:not(.apd20-in-range):not(.apd20-range-start):not(.apd20-range-end)::before {
    content: none !important;
    display: none !important;
}

/* --------------------------------------------------------------------------
   APD 20.6 — limpieza de selección y unión exacta de campos de reserva.
   -------------------------------------------------------------------------- */

/* Homey puede agregar marcadores grises a través de pseudoelementos en el
   día, su enlace o el número. La selección APD se dibuja únicamente con el
   círculo y la franja del rango. */
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-selected::before,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-selected::after,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-start::before,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-start::after,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-end::before,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-end::after,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-selected > *::before,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-selected > *::after,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-start > *::before,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-start > *::after,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-end > *::before,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-end > *::after,
body.single-listing .apd52-native-calendar ul.days li.apd20-selected::before,
body.single-listing .apd52-native-calendar ul.days li.apd20-selected::after,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-start::before,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-start::after,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-end::before,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-end::after,
body.single-listing .apd52-native-calendar ul.days li.apd20-selected > *::before,
body.single-listing .apd52-native-calendar ul.days li.apd20-selected > *::after,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-start > *::before,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-start > *::after,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-end > *::before,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-end > *::after {
    content:none !important;
    display:none !important;
    width:0 !important;
    height:0 !important;
    border:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    transform:none !important;
}

/* El rango se pinta con el fondo del propio día, sin figuras adicionales. */
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-in-range,
body.single-listing .apd52-native-calendar ul.days li.apd20-in-range {
    background:#f1f1f1 !important;
}

/* Fechas elegidas: números y valores con peso visual claro. */
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-selected .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-start .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-end .day-number,
body.single-listing .apd52-native-calendar ul.days li.apd20-selected .day-number,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-start .day-number,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-end .day-number {
    font-weight:800 !important;
}
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-in-range .day-number,
body.single-listing .apd52-native-calendar ul.days li.apd20-in-range .day-number {
    font-weight:700 !important;
}
body.single-listing .apd52-booking-card .apd20-card-date-value {
    font-weight:700 !important;
}

/* Check-in, check-out y viajeros forman una única pieza, sin cortes laterales
   ni dobles bordes entre ambas filas. */
body.single-listing .apd52-booking-card #single-listing-date-range {
    width:100% !important;
    box-sizing:border-box !important;
    border:1px solid #8f8f8f !important;
    border-bottom:0 !important;
    border-radius:12px 12px 0 0 !important;
    overflow:hidden !important;
}
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-arrive,
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-depart {
    box-sizing:border-box !important;
    border-radius:0 !important;
}
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-arrive {
    border-right:1px solid #8f8f8f !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field.search-guests {
    width:100% !important;
    box-sizing:border-box !important;
    margin-top:0 !important;
    border:1px solid #8f8f8f !important;
    border-top:1px solid #8f8f8f !important;
    border-radius:0 0 12px 12px !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field.search-guests > input.form-control {
    font-weight:700 !important;
}

/* --------------------------------------------------------------------------
   APD 20.7 — rango limpio, sin barra gris entre check-in y check-out.
   La selección muestra únicamente los dos extremos circulares, como la
   referencia aprobada. Los días intermedios permanecen sobre fondo blanco.
   -------------------------------------------------------------------------- */
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-in-range,
body.single-listing .apd52-native-calendar ul.days li.apd20-in-range,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-start,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-end,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-start,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-end {
    background: transparent !important;
    background-image: none !important;
    box-shadow: none !important;
}

body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-in-range::before,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-in-range::after,
body.single-listing .apd52-native-calendar ul.days li.apd20-in-range::before,
body.single-listing .apd52-native-calendar ul.days li.apd20-in-range::after {
    content: none !important;
    display: none !important;
    background: transparent !important;
}

body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-in-range .day-number,
body.single-listing .apd52-native-calendar ul.days li.apd20-in-range .day-number {
    background: transparent !important;
    box-shadow: none !important;
    border-radius: 50% !important;
}

/* --------------------------------------------------------------------------
   APD 20.8 — extremos seleccionados sin doble aro.
   Check-in y check-out se muestran como círculos negros sólidos, idénticos,
   sin halo blanco ni contorno exterior adicional.
   -------------------------------------------------------------------------- */
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-selected .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-start .day-number,
body.single-listing .apd52-booking-card #single-booking-search-calendar ul.days li.apd20-range-end .day-number,
body.single-listing .apd52-native-calendar ul.days li.apd20-selected .day-number,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-start .day-number,
body.single-listing .apd52-native-calendar ul.days li.apd20-range-end .day-number {
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: #222 !important;
    color: #fff !important;
}

/* ========================================================================
   APD 20.9 — encabezado inicial idéntico al inicio y oculto al desplazarse
   ======================================================================== */
@media (min-width: 992px) {
    body.single-listing .apd5-header.is-detail-context {
        height: 82px !important;
        min-height: 82px !important;
        position: sticky !important;
        top: 0 !important;
        z-index: 1200 !important;
        overflow: visible !important;
        background: #fff !important;
    }

    body.single-listing .apd5-header.is-detail-context .apd5-header-row {
        width: min(1450px, calc(100% - 64px)) !important;
        max-width: 1450px !important;
        height: 82px !important;
        min-height: 82px !important;
        margin: 0 auto !important;
        padding: 0 !important;
        grid-template-columns: 190px minmax(520px, 680px) 1fr !important;
        gap: 34px !important;
    }

    body.single-listing .apd5-header.is-detail-context .apd19-detail-header-search {
        width: min(680px, 100%) !important;
        max-width: 680px !important;
        height: 56px !important;
        margin: 0 auto !important;
        opacity: 1 !important;
        visibility: visible !important;
        transform: translateY(0) scale(1) !important;
        pointer-events: auto !important;
        transition: opacity .18s ease, visibility .18s ease, transform .22s ease !important;
    }

    body.single-listing .apd5-header.is-detail-context .apd20-detail-search-home {
        display: none !important;
    }

    body.single-listing .apd5-header.is-detail-context .apd19-detail-header-search .apd5-search {
        width: 100% !important;
        height: 56px !important;
        min-height: 56px !important;
        padding: 0 58px 0 0 !important;
        display: grid !important;
        grid-template-columns: 1.15fr 1px 1fr 1px .82fr !important;
        border: 1px solid #ddd !important;
        border-radius: 999px !important;
        background: #fff !important;
        box-shadow: 0 4px 16px rgba(0,0,0,.12) !important;
        overflow: visible !important;
    }

    body.single-listing .apd5-header.is-detail-context .apd5-search-field,
    body.single-listing .apd5-header.is-detail-context .apd5-search-field > button {
        height: 54px !important;
        min-height: 54px !important;
    }

    body.single-listing .apd5-header.is-detail-context .apd5-search-field > button {
        padding: 0 24px !important;
        border-radius: 999px !important;
    }

    body.single-listing .apd5-header.is-detail-context .apd5-search-field > button:hover {
        background: #f5f5f5 !important;
    }

    body.single-listing .apd5-header.is-detail-context .apd5-search-field span {
        display: none !important;
    }

    body.single-listing .apd5-header.is-detail-context .apd5-search-field strong {
        margin: 0 !important;
        color: #222 !important;
        font-size: 13px !important;
        line-height: 1 !important;
        font-weight: 600 !important;
    }

    body.single-listing .apd5-header.is-detail-context .apd5-search-separator {
        position: static !important;
        width: 1px !important;
        height: 30px !important;
        align-self: center !important;
        background: #ddd !important;
    }

    body.single-listing .apd5-header.is-detail-context .apd5-search-submit {
        position: absolute !important;
        top: 7px !important;
        right: 7px !important;
        width: 42px !important;
        height: 42px !important;
        min-width: 42px !important;
        min-height: 42px !important;
        margin: 0 !important;
        background: #0f6fe8 !important;
        border-radius: 50% !important;
    }

    /* Al comenzar a bajar, desaparece el buscador inicial. En su lugar queda
       la navegación contextual de la ficha que ya controla APD. */
    body.single-listing.apd19-detail-nav-visible .apd5-header.is-detail-context .apd19-detail-header-search,
    body.single-listing.apd18-detail-nav-visible .apd5-header.is-detail-context .apd19-detail-header-search {
        opacity: 0 !important;
        visibility: hidden !important;
        transform: translateY(-8px) scale(.98) !important;
        pointer-events: none !important;
    }
}


/* ========================================================================== 
   APD 21.0 — encabezado de detalle alineado con el inicio
   ========================================================================== */
@media (min-width: 1180px) {
    body.apd-marketplace-ui .apd5-header.is-detail-context .apd5-header-row {
        width: min(calc(100vw - 96px), 1500px) !important;
        max-width: 1500px !important;
        margin: 0 auto !important;
        padding: 0 !important;
        grid-template-columns: 150px minmax(640px, 720px) 1fr !important;
        gap: 24px !important;
    }

    body.apd-marketplace-ui .apd5-header.is-detail-context .apd5-logo {
        width: 108px !important;
        min-width: 108px !important;
        height: 44px !important;
        justify-self: start !important;
        margin: 0 !important;
    }
    body.apd-marketplace-ui .apd5-header.is-detail-context .apd5-logo img {
        width: 108px !important;
        height: 44px !important;
        object-fit: contain !important;
        object-position: left center !important;
    }

    body.apd-marketplace-ui .apd5-header.is-detail-context .apd19-detail-header-search {
        width: 720px !important;
        max-width: 100% !important;
        height: 58px !important;
        margin: 0 !important;
        justify-self: center !important;
    }
    body.apd-marketplace-ui .apd5-header.is-detail-context .apd20-detail-search-home {
        display: block !important;
        left: 18px !important;
        width: 38px !important;
        height: 38px !important;
    }
    body.apd-marketplace-ui .apd5-header.is-detail-context .apd19-detail-header-search .apd5-search {
        height: 58px !important;
        min-height: 58px !important;
        padding: 0 62px 0 66px !important;
        grid-template-columns: 1.12fr 1px 1.36fr 1px .78fr !important;
        border: 1px solid #dedede !important;
        box-shadow: 0 4px 18px rgba(0,0,0,.11) !important;
    }
    body.apd-marketplace-ui .apd5-header.is-detail-context .apd5-search-field,
    body.apd-marketplace-ui .apd5-header.is-detail-context .apd5-search-field > button {
        height: 56px !important;
        min-height: 56px !important;
    }
    body.apd-marketplace-ui .apd5-header.is-detail-context .apd5-search-field > button {
        padding: 0 22px !important;
    }
    body.apd-marketplace-ui .apd5-header.is-detail-context .apd5-search-field strong {
        font-size: 16px !important;
        font-weight: 600 !important;
        letter-spacing: -.15px !important;
    }
    body.apd-marketplace-ui .apd5-header.is-detail-context .apd5-search-submit {
        top: 6px !important;
        right: 6px !important;
        width: 46px !important;
        height: 46px !important;
        min-width: 46px !important;
        min-height: 46px !important;
        background: #0a43b5 !important;
    }

    /* El buscador grande existe solo en la parte superior. Cuando aparece la
       navegación contextual (Fotos, Prestaciones, Evaluaciones, Ubicación),
       desaparece por completo y no ocupa espacio. */
    body.single-listing.apd19-detail-nav-visible .apd5-header.is-detail-context .apd19-detail-header-search,
    body.single-listing.apd18-detail-nav-visible .apd5-header.is-detail-context .apd19-detail-header-search {
        display: none !important;
    }
}

@media (min-width: 1180px) and (max-width: 1450px) {
    body.apd-marketplace-ui .apd5-header.is-detail-context .apd5-header-row {
        width: calc(100vw - 64px) !important;
        grid-template-columns: 130px minmax(560px, 650px) 1fr !important;
        gap: 18px !important;
    }
    body.apd-marketplace-ui .apd5-header.is-detail-context .apd19-detail-header-search {
        width: 650px !important;
    }
    body.apd-marketplace-ui .apd5-header.is-detail-context .apd5-search-field strong {
        font-size: 14px !important;
    }
}

/* ========================================================================
   APD 21.1 — tarjeta de reserva ordenada y botón azul con brillo dinámico
   ======================================================================== */
body.single-listing .apd52-booking-card {
    padding: 26px 24px 22px !important;
    border: 1px solid #dddddd !important;
    border-radius: 18px !important;
    background: #ffffff !important;
    box-shadow: 0 8px 28px rgba(0,0,0,.12) !important;
    overflow: visible !important;
}

body.single-listing .apd52-booking-card .apd19-booking-price-summary {
    margin: 0 0 22px !important;
    min-height: 0 !important;
}
body.single-listing .apd52-booking-card .apd19-booking-price-summary.is-awaiting-dates {
    margin-bottom: 22px !important;
    min-height: 50px !important;
}
body.single-listing .apd52-booking-card .apd19-booking-price-summary.is-awaiting-dates strong {
    display: block !important;
    max-width: 330px !important;
    font-size: 25px !important;
    line-height: .94 !important;
    font-weight: 700 !important;
    letter-spacing: -.55px !important;
}

body.single-listing .apd52-booking-card #single-listing-date-range {
    display: grid !important;
    grid-template-columns: minmax(0,1fr) minmax(0,1fr) !important;
    width: 100% !important;
    margin: 0 !important;
    border: 1px solid #7b7b7b !important;
    border-radius: 14px 14px 0 0 !important;
    background: #fff !important;
    overflow: hidden !important;
}
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-arrive,
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-depart {
    height: 68px !important;
    min-height: 68px !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: #fff !important;
}
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-arrive {
    border-right: 1px solid #7b7b7b !important;
}
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-arrive::before,
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-depart::before {
    top: 12px !important;
    left: 14px !important;
    font-size: 11px !important;
    line-height: 1 !important;
    font-weight: 700 !important;
    color: #222 !important;
}
body.single-listing .apd52-booking-card #single-listing-date-range .check_in_date,
body.single-listing .apd52-booking-card #single-listing-date-range .check_out_date {
    height: 68px !important;
    min-height: 68px !important;
    padding: 31px 14px 10px !important;
    font-size: 16px !important;
    line-height: 20px !important;
    font-weight: 400 !important;
}
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-arrive.is-active,
body.single-listing .apd52-booking-card #single-listing-date-range > .search-date-range-depart.is-active {
    box-shadow: inset 0 0 0 2px #222 !important;
    border-radius: 12px !important;
    position: relative !important;
    z-index: 2 !important;
}

body.single-listing .apd52-booking-card .apd20-guests-field.search-guests {
    height: 62px !important;
    min-height: 62px !important;
    margin-top: -1px !important;
    border: 1px solid #7b7b7b !important;
    border-radius: 0 0 14px 14px !important;
    background: #fff !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field.search-guests::before {
    top: 12px !important;
    left: 14px !important;
    font-size: 11px !important;
    line-height: 1 !important;
    font-weight: 700 !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field.search-guests::after {
    top: 22px !important;
    right: 18px !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field.search-guests > input.form-control {
    height: 61px !important;
    min-height: 61px !important;
    padding: 29px 46px 9px 14px !important;
    font-size: 16px !important;
    line-height: 20px !important;
    font-weight: 400 !important;
}
body.single-listing .apd52-booking-card .apd20-guests-field.search-guests.is-open {
    border-radius: 14px !important;
    box-shadow: inset 0 0 0 1px #222 !important;
    z-index: 6 !important;
}

body.single-listing .apd52-booking-card #instance_reservation,
body.single-listing .apd52-booking-card #request_for_reservation,
body.single-listing .apd52-booking-card .btn-primary,
body.single-listing .apd52-booking-card .apd52-btn-primary {
    position: relative !important;
    isolation: isolate !important;
    width: 100% !important;
    min-height: 52px !important;
    margin: 18px 0 0 !important;
    padding: 0 22px !important;
    border: 0 !important;
    border-radius: 999px !important;
    overflow: hidden !important;
    background: linear-gradient(115deg,#17388d 0%,#0d55d4 50%,#17388d 100%) !important;
    background-size: 220% 100% !important;
    background-position: 100% 0 !important;
    box-shadow: none !important;
    color: #fff !important;
    font-size: 17px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    transition: transform .18s ease, box-shadow .22s ease, background-position .42s ease !important;
}
body.single-listing .apd52-booking-card #instance_reservation::before,
body.single-listing .apd52-booking-card #request_for_reservation::before,
body.single-listing .apd52-booking-card .btn-primary::before,
body.single-listing .apd52-booking-card .apd52-btn-primary::before {
    content: "" !important;
    position: absolute !important;
    inset: -2px !important;
    z-index: -1 !important;
    background: linear-gradient(105deg,transparent 20%,rgba(255,255,255,.28) 45%,transparent 70%) !important;
    transform: translateX(-120%) skewX(-18deg) !important;
    transition: transform .55s ease !important;
    pointer-events: none !important;
}
body.single-listing .apd52-booking-card #instance_reservation:hover,
body.single-listing .apd52-booking-card #request_for_reservation:hover,
body.single-listing .apd52-booking-card .btn-primary:hover,
body.single-listing .apd52-booking-card .apd52-btn-primary:hover {
    background-position: 0 0 !important;
    box-shadow: 0 8px 20px rgba(13,85,212,.28) !important;
    transform: translateY(-1px) !important;
}
body.single-listing .apd52-booking-card #instance_reservation:hover::before,
body.single-listing .apd52-booking-card #request_for_reservation:hover::before,
body.single-listing .apd52-booking-card .btn-primary:hover::before,
body.single-listing .apd52-booking-card .apd52-btn-primary:hover::before {
    transform: translateX(120%) skewX(-18deg) !important;
}
body.single-listing .apd52-booking-card #instance_reservation:active,
body.single-listing .apd52-booking-card #request_for_reservation:active,
body.single-listing .apd52-booking-card .btn-primary:active,
body.single-listing .apd52-booking-card .apd52-btn-primary:active {
    transform: scale(.985) !important;
}

body.single-listing .apd52-booking-card .apd13-no-charge {
    margin: 20px 0 0 !important;
    color: #555 !important;
    font-size: 13px !important;
    line-height: 1.3 !important;
    text-align: center !important;
}

@media (max-width: 575px) {
    body.single-listing .apd52-booking-card { padding: 24px 20px 20px !important; border-radius: 16px !important; }
    body.single-listing .apd52-booking-card .apd19-booking-price-summary.is-awaiting-dates strong { font-size: 23px !important; }
}
