/* ========================================================================== 
   APD 31.0 · reference video 154 s · experiences and services
   ========================================================================== */

:root {
    --apd31-content: 1370px;
    --apd31-detail: 1120px;
    --apd31-blue: #0f6fe8;
    --apd31-blue-dark: #0b58b9;
    --apd31-ink: #222;
    --apd31-muted: #717171;
    --apd31-line: #dedede;
    --apd31-soft: #f7f7f7;
    --apd31-shadow: 0 12px 38px rgba(0, 0, 0, .13);
}

body.apd-marketplace-ui.apd31-experiences-page,
body.apd-marketplace-ui.apd31-services-page,
body.apd-marketplace-ui.apd31-experience-detail-page,
body.apd-marketplace-ui.apd31-service-detail-page {
    color: var(--apd31-ink) !important;
    background: #fff !important;
}

body.apd-marketplace-ui [data-apd31-filter-modal][hidden],
body.apd-marketplace-ui [data-apd31-schedule-modal][hidden],
body.apd-marketplace-ui [data-apd31-message-modal][hidden],
body.apd-marketplace-ui [data-apd31-gallery-modal][hidden],
body.apd-marketplace-ui [data-apd31-date-picker][hidden] {
    display: none !important;
}

body.apd31-modal-open {
    overflow: hidden !important;
}

/* Catalogues -------------------------------------------------------------- */
body.apd-marketplace-ui .apd31-catalog {
    position: relative !important;
    width: min(calc(100% - 96px), var(--apd31-content)) !important;
    max-width: var(--apd31-content) !important;
    margin: 0 auto !important;
    padding: 38px 0 88px !important;
}

body.apd-marketplace-ui .apd31-catalog .apd23-service-directory {
    margin-bottom: 28px !important;
}

body.apd-marketplace-ui .apd31-catalog .apd23-service-category-rail a.is-active > span {
    outline: 2px solid #222 !important;
    outline-offset: -2px !important;
    background: #f0f0f0 !important;
}

.apd31-filter-strip {
    position: sticky !important;
    top: 71px !important;
    z-index: 650 !important;
    min-height: 54px !important;
    margin: -38px calc((100vw - min(calc(100vw - 96px), var(--apd31-content))) / -2) 28px !important;
    padding: 10px max(48px, calc((100vw - var(--apd31-content)) / 2)) !important;
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    overflow-x: auto !important;
    scrollbar-width: none !important;
    border-top: 1px solid #f1f1f1 !important;
    border-bottom: 1px solid #e8e8e8 !important;
    background: rgba(255, 255, 255, .98) !important;
}

.apd31-filter-strip::-webkit-scrollbar { display: none !important; }

.apd31-filter-strip > a,
.apd31-filter-strip > button {
    min-width: max-content !important;
    min-height: 34px !important;
    padding: 0 14px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    border: 1px solid #d5d5d5 !important;
    border-radius: 999px !important;
    color: #222 !important;
    background: #fff !important;
    text-decoration: none !important;
    font-size: 11px !important;
    line-height: 1 !important;
    font-weight: 600 !important;
    transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease !important;
}

.apd31-filter-strip > a:hover,
.apd31-filter-strip > button:hover {
    border-color: #222 !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .08) !important;
}

.apd31-filter-strip > a.is-active,
.apd31-filter-strip > button.is-active {
    border-color: #222 !important;
    background: #f7f7f7 !important;
}

.apd31-catalog-heading {
    margin-bottom: 20px !important;
    display: flex !important;
    align-items: flex-end !important;
    justify-content: space-between !important;
    gap: 24px !important;
}

.apd31-catalog-heading p {
    margin: 0 0 3px !important;
    color: var(--apd31-muted) !important;
    font-size: 11px !important;
}

.apd31-catalog-heading h1 {
    margin: 0 !important;
    font-size: 21px !important;
    line-height: 1.2 !important;
    font-weight: 650 !important;
    letter-spacing: -.025em !important;
}

.apd31-catalog-heading > button {
    min-height: 36px !important;
    padding: 0 15px !important;
    border: 1px solid #222 !important;
    border-radius: 9px !important;
    color: #222 !important;
    background: #fff !important;
    font-size: 11px !important;
    font-weight: 600 !important;
}

.apd31-catalog-grid,
.apd31-catalog-skeleton {
    display: grid !important;
    grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
    gap: 31px 13px !important;
    align-items: start !important;
}

.apd31-catalog-grid.is-services {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    max-width: 780px !important;
}

.apd31-catalog-grid .apd5-card {
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
}

.apd31-catalog-grid .apd5-card-media {
    aspect-ratio: 1.05 / 1 !important;
    border-radius: 14px !important;
}

.apd31-catalog-grid.is-services .apd5-card-media {
    aspect-ratio: 1.24 / 1 !important;
}

.apd31-catalog-grid .apd5-card-media img {
    transition: transform .22s ease, filter .22s ease !important;
}

.apd31-catalog-grid .apd5-card:hover .apd5-card-media img {
    transform: scale(1.025) !important;
    filter: saturate(1.03) !important;
}

.apd31-catalog-grid .apd5-card-body {
    padding: 8px 1px 0 !important;
}

.apd31-catalog-grid .apd5-card-title-row h3 {
    min-height: 32px !important;
    max-height: 32px !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
    font-size: 12px !important;
    line-height: 16px !important;
}

.apd31-catalog-grid .apd5-card-location,
.apd31-catalog-grid .apd5-card-price,
.apd31-catalog-grid .apd5-card-price small,
.apd31-catalog-grid .apd5-card-rating {
    font-size: 10.5px !important;
    line-height: 15px !important;
}

.apd31-catalog-grid .apd5-card-badge {
    top: 8px !important;
    left: 8px !important;
    padding: 5px 8px !important;
    font-size: 8.5px !important;
}

.apd31-catalog-skeleton {
    position: absolute !important;
    width: min(calc(100% - 96px), var(--apd31-content)) !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

.apd31-catalog-skeleton span::before {
    content: "" !important;
    aspect-ratio: 1.05 / 1 !important;
    display: block !important;
    border-radius: 14px !important;
    background: linear-gradient(100deg, #efefef 20%, #f8f8f8 40%, #efefef 60%) !important;
    background-size: 220% 100% !important;
    animation: apd31-shimmer 1.05s linear infinite !important;
}

.apd31-catalog-skeleton span::after {
    content: "" !important;
    width: 74% !important;
    height: 31px !important;
    margin-top: 8px !important;
    display: block !important;
    border-radius: 4px !important;
    background: repeating-linear-gradient(to bottom, #eeeeee 0 6px, transparent 6px 11px) !important;
}

body.apd31-catalog-loading .apd31-catalog-grid { opacity: 0 !important; }
body.apd31-catalog-loading .apd31-catalog-skeleton { opacity: 1 !important; }

@keyframes apd31-shimmer { to { background-position-x: -220%; } }

.apd31-empty-state {
    grid-column: 1 / -1 !important;
    min-height: 260px !important;
    display: grid !important;
    place-content: center !important;
    text-align: center !important;
}

.apd31-empty-state h2 { margin: 0 !important; font-size: 22px !important; }
.apd31-empty-state p { margin: 9px 0 16px !important; color: var(--apd31-muted) !important; }
.apd31-empty-state a { color: #222 !important; font-weight: 650 !important; text-decoration: underline !important; }

/* Filter panel ------------------------------------------------------------ */
.apd31-filter-modal,
.apd31-service-modal {
    position: fixed !important;
    inset: 0 !important;
    z-index: 99999 !important;
    display: grid !important;
    place-items: center !important;
}

.apd31-modal-backdrop {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    border: 0 !important;
    background: rgba(0, 0, 0, .44) !important;
}

.apd31-filter-dialog,
.apd31-service-dialog,
.apd31-message-dialog {
    position: relative !important;
    z-index: 1 !important;
    width: min(420px, calc(100vw - 32px)) !important;
    max-height: min(850px, calc(100vh - 48px)) !important;
    display: flex !important;
    flex-direction: column !important;
    overflow: hidden !important;
    border-radius: 18px !important;
    background: #fff !important;
    box-shadow: var(--apd31-shadow) !important;
    animation: apd31-dialog-in .18s cubic-bezier(.2, .75, .25, 1) both !important;
}

@keyframes apd31-dialog-in {
    from { opacity: 0; transform: translateY(12px) scale(.985); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

.apd31-filter-dialog > header,
.apd31-service-dialog > header,
.apd31-message-dialog > header {
    min-height: 56px !important;
    padding: 0 18px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    border-bottom: 1px solid #ededed !important;
}

.apd31-filter-dialog > header h2,
.apd31-service-dialog > header h2,
.apd31-message-dialog > header h2 {
    margin: 0 !important;
    font-size: 15px !important;
    line-height: 1.2 !important;
    font-weight: 650 !important;
}

.apd31-filter-dialog > header button,
.apd31-service-dialog > header button,
.apd31-message-dialog > header button {
    width: 32px !important;
    height: 32px !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 50% !important;
    background: transparent !important;
    font-size: 22px !important;
    line-height: 1 !important;
}

.apd31-filter-dialog > header button:hover,
.apd31-service-dialog > header button:hover,
.apd31-message-dialog > header button:hover { background: #f3f3f3 !important; }

.apd31-filter-dialog form { min-height: 0 !important; display: flex !important; flex: 1 !important; flex-direction: column !important; }
.apd31-filter-scroll { min-height: 0 !important; padding: 0 20px !important; overflow-y: auto !important; }
.apd31-filter-scroll fieldset { margin: 0 !important; padding: 22px 0 !important; border: 0 !important; border-bottom: 1px solid #ededed !important; }
.apd31-filter-scroll fieldset:last-child { border-bottom: 0 !important; }
.apd31-filter-scroll legend { width: 100% !important; margin: 0 0 15px !important; padding: 0 !important; color: #222 !important; font-size: 15px !important; line-height: 1.2 !important; font-weight: 650 !important; }

.apd31-range-track {
    position: relative !important;
    height: 34px !important;
    margin: 0 7px 12px !important;
}

.apd31-range-track i {
    position: absolute !important;
    top: 15px !important;
    right: 0 !important;
    left: 0 !important;
    height: 3px !important;
    border-radius: 4px !important;
    background: linear-gradient(90deg, var(--apd31-blue), #ff3a75) !important;
}

.apd31-range-track input[type="range"] {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 34px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    appearance: none !important;
    pointer-events: none !important;
}

.apd31-range-track input[type="range"]::-webkit-slider-thumb {
    width: 19px !important;
    height: 19px !important;
    border: 2px solid #fff !important;
    border-radius: 50% !important;
    background: #222 !important;
    box-shadow: 0 0 0 1px #222 !important;
    appearance: none !important;
    pointer-events: auto !important;
}

.apd31-price-inputs { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 10px !important; }
.apd31-price-inputs label { min-height: 54px !important; padding: 8px 11px !important; display: flex !important; flex-direction: column !important; border: 1px solid #bdbdbd !important; border-radius: 9px !important; }
.apd31-price-inputs span { color: var(--apd31-muted) !important; font-size: 9px !important; }
.apd31-price-inputs input { width: 100% !important; height: 24px !important; padding: 0 !important; border: 0 !important; outline: 0 !important; background: transparent !important; font-size: 12px !important; }

.apd31-duration-options { display: grid !important; grid-template-columns: repeat(4, 1fr) !important; gap: 5px !important; }
.apd31-duration-options label { cursor: pointer !important; }
.apd31-duration-options input { position: absolute !important; opacity: 0 !important; }
.apd31-duration-options span { min-height: 48px !important; padding: 7px !important; display: grid !important; place-items: center !important; border: 1px solid #cfcfcf !important; border-radius: 8px !important; text-align: center !important; font-size: 9px !important; line-height: 1.2 !important; }
.apd31-duration-options input:checked + span { border-color: #222 !important; background: #f4f4f4 !important; box-shadow: inset 0 0 0 1px #222 !important; }

.apd31-check-grid { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 12px 18px !important; }
.apd31-check-grid label,
.apd31-wide-check { display: flex !important; align-items: center !important; gap: 9px !important; color: #222 !important; font-size: 11px !important; font-weight: 450 !important; cursor: pointer !important; }
.apd31-check-grid input,
.apd31-wide-check input { width: 17px !important; height: 17px !important; margin: 0 !important; accent-color: #222 !important; }

.apd31-filter-dialog form > footer,
.apd31-service-dialog > footer {
    min-height: 64px !important;
    padding: 10px 16px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    border-top: 1px solid #ededed !important;
    background: #fff !important;
}

.apd31-filter-dialog form > footer a { color: #222 !important; font-size: 11px !important; font-weight: 650 !important; text-decoration: underline !important; }
.apd31-filter-dialog form > footer button,
.apd31-service-dialog > footer .apd31-contact-button,
.apd31-message-dialog > button {
    min-height: 42px !important;
    padding: 0 17px !important;
    border: 0 !important;
    border-radius: 9px !important;
    color: #fff !important;
    background: #222 !important;
    font-size: 11px !important;
    font-weight: 650 !important;
}

/* Detail header and shell ------------------------------------------------- */
@media (min-width: 1180px) {
    body.apd31-experience-detail-page .apd5-header,
    body.apd31-service-detail-page .apd5-header {
        position: sticky !important;
        top: 0 !important;
        z-index: 1600 !important;
        min-height: 72px !important;
        height: 72px !important;
        border-bottom: 1px solid #ebebeb !important;
        background: rgba(255, 255, 255, .985) !important;
        box-shadow: none !important;
    }

    body.apd31-experience-detail-page .apd5-header-row,
    body.apd31-service-detail-page .apd5-header-row {
        width: min(calc(100vw - 96px), 1370px) !important;
        height: 72px !important;
        min-height: 72px !important;
        grid-template-columns: 180px minmax(480px, 1fr) 260px !important;
    }

    body.apd31-experience-detail-page .apd5-main-nav,
    body.apd31-service-detail-page .apd5-main-nav { display: none !important; }

    body.apd31-experience-detail-page .apd5-header-search-row,
    body.apd31-service-detail-page .apd5-header-search-row {
        position: absolute !important;
        top: 0 !important;
        left: 50% !important;
        width: 520px !important;
        height: 72px !important;
        min-height: 72px !important;
        padding: 12px 0 !important;
        display: flex !important;
        align-items: center !important;
        transform: translateX(-50%) !important;
    }

    body.apd31-experience-detail-page .apd5-search,
    body.apd31-service-detail-page .apd5-search {
        width: 520px !important;
        min-width: 520px !important;
        max-width: 520px !important;
        height: 48px !important;
        min-height: 48px !important;
    }
}

.apd31-detail {
    width: min(calc(100% - 64px), var(--apd31-detail)) !important;
    margin: 0 auto !important;
    padding: 20px 0 100px !important;
}

.apd31-detail-tools {
    min-height: 40px !important;
    margin-bottom: 9px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
}

.apd31-detail-tools > a { color: #222 !important; text-decoration: none !important; font-size: 11px !important; font-weight: 600 !important; }
.apd31-detail-tools > div { display: flex !important; gap: 6px !important; }
.apd31-detail-tools button { min-height: 32px !important; padding: 0 10px !important; display: inline-flex !important; align-items: center !important; gap: 6px !important; border: 0 !important; border-radius: 8px !important; color: #222 !important; background: transparent !important; font-size: 10px !important; font-weight: 600 !important; text-decoration: underline !important; }
.apd31-detail-tools button:hover { background: #f3f3f3 !important; }
.apd31-detail-tools button .apd5-icon { width: 15px !important; height: 15px !important; }
.apd31-detail-tools button.is-favorite .apd5-icon { color: #e31c5f !important; fill: currentColor !important; }

/* Experience detail ------------------------------------------------------- */
.apd31-experience-hero {
    min-height: 460px !important;
    display: grid !important;
    grid-template-columns: minmax(0, 1.16fr) minmax(350px, .84fr) !important;
    gap: 34px !important;
    align-items: center !important;
}

.apd31-detail-gallery {
    position: relative !important;
    height: 442px !important;
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    grid-template-rows: 1fr 1fr !important;
    gap: 7px !important;
    overflow: hidden !important;
    border-radius: 17px !important;
    background: #f2f2f2 !important;
}

.apd31-detail-gallery > button:not(.apd31-gallery-all) { min-width: 0 !important; min-height: 0 !important; padding: 0 !important; border: 0 !important; overflow: hidden !important; background: #eee !important; }
.apd31-detail-gallery img { width: 100% !important; height: 100% !important; display: block !important; object-fit: cover !important; transition: transform .22s ease, filter .22s ease !important; }
.apd31-detail-gallery button:hover img { transform: scale(1.018) !important; filter: brightness(.96) !important; }
.apd31-gallery-all { position: absolute !important; right: 12px !important; bottom: 12px !important; min-height: 34px !important; padding: 0 11px !important; display: inline-flex !important; align-items: center !important; gap: 6px !important; border: 1px solid #222 !important; border-radius: 8px !important; background: #fff !important; color: #222 !important; font-size: 10px !important; font-weight: 600 !important; box-shadow: 0 2px 5px rgba(0, 0, 0, .12) !important; }
.apd31-gallery-all .apd5-icon { width: 14px !important; height: 14px !important; }

.apd31-experience-intro { padding: 10px 0 !important; }
.apd31-detail-kicker { display: block !important; margin-bottom: 8px !important; color: var(--apd31-muted) !important; font-size: 11px !important; font-weight: 600 !important; }
.apd31-experience-intro h1,
.apd31-service-intro h1 { margin: 0 !important; font-size: clamp(30px, 3vw, 46px) !important; line-height: 1.03 !important; font-weight: 650 !important; letter-spacing: -.045em !important; }
.apd31-detail-location { margin: 9px 0 0 !important; color: var(--apd31-muted) !important; font-size: 12px !important; }
.apd31-detail-summary { margin: 19px 0 0 !important; color: #3c3c3c !important; font-size: 13px !important; line-height: 1.55 !important; }
.apd31-detail-rating { margin-top: 18px !important; display: flex !important; align-items: center !important; gap: 5px !important; font-size: 11px !important; }
.apd31-detail-rating .apd5-icon { width: 13px !important; height: 13px !important; fill: currentColor !important; }
.apd31-detail-rating a { color: #222 !important; text-decoration: underline !important; }

.apd31-host-inline { margin-top: 24px !important; padding: 13px 0 !important; display: grid !important; grid-template-columns: 44px 1fr 18px !important; align-items: center !important; gap: 11px !important; border-top: 1px solid #ededed !important; border-bottom: 1px solid #ededed !important; color: #222 !important; text-decoration: none !important; }
.apd31-host-inline img { width: 44px !important; height: 44px !important; border-radius: 50% !important; object-fit: cover !important; }
.apd31-host-inline span { font-size: 11px !important; font-weight: 650 !important; }
.apd31-host-inline small { margin-top: 3px !important; display: block !important; color: var(--apd31-muted) !important; font-size: 9.5px !important; font-weight: 400 !important; }
.apd31-host-inline b { font-size: 24px !important; font-weight: 400 !important; }

.apd31-experience-layout,
.apd31-service-layout { margin-top: 36px !important; display: grid !important; grid-template-columns: minmax(0, 1fr) 320px !important; gap: 58px !important; align-items: start !important; }
.apd31-service-layout { grid-template-columns: minmax(0, 720px) !important; }

.apd31-detail-section { padding: 32px 0 !important; border-top: 1px solid #ededed !important; }
.apd31-detail-section:first-child { border-top: 0 !important; padding-top: 0 !important; }
.apd31-detail-section h2,
.apd31-quality-banner h2 { margin: 0 0 18px !important; font-size: 21px !important; line-height: 1.2 !important; font-weight: 650 !important; letter-spacing: -.025em !important; }
.apd31-rich-content { color: #333 !important; font-size: 13px !important; line-height: 1.65 !important; }
.apd31-rich-content > *:first-child { margin-top: 0 !important; }
.apd31-rich-content > *:last-child { margin-bottom: 0 !important; }

.apd31-itinerary > div { min-height: 64px !important; display: grid !important; grid-template-columns: 34px 1fr !important; gap: 12px !important; }
.apd31-itinerary > div > span { width: 28px !important; height: 28px !important; display: grid !important; place-items: center !important; border-radius: 50% !important; color: #fff !important; background: #222 !important; font-size: 10px !important; }
.apd31-itinerary p { position: relative !important; margin: 0 !important; padding-bottom: 18px !important; }
.apd31-itinerary p::before { content: "" !important; position: absolute !important; top: 33px !important; bottom: 2px !important; left: -29px !important; width: 1px !important; background: #ddd !important; }
.apd31-itinerary > div:last-child p::before { display: none !important; }
.apd31-itinerary strong,
.apd31-itinerary small { display: block !important; }
.apd31-itinerary strong { font-size: 12px !important; }
.apd31-itinerary small { margin-top: 4px !important; color: var(--apd31-muted) !important; font-size: 10.5px !important; line-height: 1.45 !important; }

.apd31-host-card > a { padding: 18px !important; display: grid !important; grid-template-columns: 72px 1fr 20px !important; align-items: center !important; gap: 15px !important; border: 1px solid #dedede !important; border-radius: 15px !important; color: #222 !important; text-decoration: none !important; transition: box-shadow .18s ease, transform .18s ease !important; }
.apd31-host-card > a:hover { transform: translateY(-1px) !important; box-shadow: 0 8px 22px rgba(0, 0, 0, .08) !important; }
.apd31-host-card img { width: 72px !important; height: 72px !important; border-radius: 50% !important; object-fit: cover !important; }
.apd31-host-card strong,
.apd31-host-card span { display: block !important; }
.apd31-host-card strong { font-size: 15px !important; }
.apd31-host-card span { margin-top: 2px !important; color: var(--apd31-muted) !important; font-size: 10px !important; }
.apd31-host-card p { margin: 8px 0 0 !important; color: #444 !important; font-size: 10.5px !important; line-height: 1.45 !important; }
.apd31-host-card b { font-size: 26px !important; font-weight: 400 !important; }

.apd31-facts > div { display: grid !important; grid-template-columns: repeat(3, 1fr) !important; gap: 24px !important; }
.apd31-facts article > span { width: 28px !important; height: 28px !important; display: grid !important; place-items: center !important; font-size: 23px !important; }
.apd31-facts article strong { margin-top: 8px !important; display: block !important; font-size: 11px !important; }
.apd31-facts article p { margin: 5px 0 0 !important; color: var(--apd31-muted) !important; font-size: 9.5px !important; line-height: 1.45 !important; }

.apd31-quality-banner { margin: 34px 0 !important; padding: 42px 34px !important; display: grid !important; grid-template-columns: 62px 1fr !important; align-items: center !important; gap: 21px !important; border-radius: 16px !important; background: #f6f3ea !important; }
.apd31-quality-banner > span { width: 58px !important; height: 58px !important; display: grid !important; place-items: center !important; border: 3px solid #a88324 !important; border-radius: 50% !important; color: #a88324 !important; font-size: 28px !important; font-weight: 800 !important; }
.apd31-quality-banner h2 { margin-bottom: 7px !important; }
.apd31-quality-banner p { margin: 0 !important; color: var(--apd31-muted) !important; font-size: 10.5px !important; line-height: 1.5 !important; }

.apd31-review-summary { min-height: 100px !important; display: flex !important; align-items: center !important; gap: 18px !important; }
.apd31-review-summary strong { font-size: 44px !important; line-height: 1 !important; letter-spacing: -.05em !important; }
.apd31-review-summary span { color: var(--apd31-muted) !important; font-size: 11px !important; }
.apd31-map-preview { min-height: 190px !important; display: grid !important; place-content: center !important; gap: 9px !important; border-radius: 14px !important; text-align: center !important; background: radial-gradient(circle at 30% 40%, rgba(125, 180, 95, .18), transparent 28%), linear-gradient(120deg, #eaf2df, #e2ede6 46%, #dcead4) !important; }
.apd31-map-preview .apd5-icon { width: 26px !important; height: 26px !important; margin: auto !important; color: var(--apd31-blue) !important; }
.apd31-map-preview strong { padding: 0 20px !important; font-size: 11px !important; }

.apd31-booking-column { position: sticky !important; top: 92px !important; }
.apd31-booking-card { padding: 19px !important; border: 1px solid #dedede !important; border-radius: 15px !important; background: #fff !important; box-shadow: 0 6px 20px rgba(0, 0, 0, .10) !important; }
.apd31-booking-card > header { display: flex !important; align-items: baseline !important; gap: 5px !important; }
.apd31-booking-card > header strong { font-size: 18px !important; }
.apd31-booking-card > header span { color: var(--apd31-muted) !important; font-size: 10px !important; }
.apd31-booking-hours { margin: 6px 0 12px !important; color: var(--apd31-muted) !important; font-size: 10px !important; }

.apd31-native-booking .sidebar-booking-module,
.apd31-native-booking .sidebar-booking-module-footer,
.apd31-native-booking .block,
.apd31-native-booking .block-body-sidebar,
.apd31-native-booking .sidebar-booking-module-body,
.apd31-native-booking .sidebar-booking-module-header { margin: 0 !important; padding: 0 !important; border: 0 !important; background: transparent !important; box-shadow: none !important; }
.apd31-native-booking .sidebar-booking-module-header { display: none !important; }
.apd31-native-booking .search-date-range,
.apd31-native-booking .search-guests { margin: 10px 0 !important; border: 1px solid #bdbdbd !important; border-radius: 9px !important; overflow: visible !important; }
.apd31-native-booking input.form-control,
.apd31-native-booking textarea.form-control { min-height: 44px !important; border: 0 !important; border-radius: 9px !important; box-shadow: none !important; font-size: 11px !important; }
.apd31-native-booking textarea.form-control { border: 1px solid #bdbdbd !important; }
.apd31-native-booking .btn-primary { width: 100% !important; min-height: 44px !important; border: 0 !important; border-radius: 9px !important; background: var(--apd31-blue) !important; color: #fff !important; font-size: 11px !important; font-weight: 650 !important; }
.apd31-native-booking .text-small { margin-top: 8px !important; color: var(--apd31-muted) !important; font-size: 9px !important; }
.apd31-native-booking .sidebar-booking-module-footer { margin-top: 10px !important; }

.apd31-gallery-modal { position: fixed !important; inset: 0 !important; z-index: 99999 !important; padding: 60px max(20px, calc((100vw - 1100px) / 2)) !important; overflow-y: auto !important; background: #fff !important; }
.apd31-gallery-modal > button { position: fixed !important; top: 18px !important; right: 22px !important; width: 38px !important; height: 38px !important; border: 0 !important; border-radius: 50% !important; background: #f2f2f2 !important; font-size: 25px !important; }
.apd31-gallery-modal > div { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 10px !important; }
.apd31-gallery-modal img { width: 100% !important; border-radius: 12px !important; }

/* Service detail ---------------------------------------------------------- */
.apd31-service-hero { min-height: 510px !important; display: grid !important; grid-template-columns: minmax(0, .92fr) minmax(410px, 1.08fr) !important; gap: 46px !important; align-items: center !important; }
.apd31-service-image { height: 440px !important; overflow: hidden !important; border-radius: 18px !important; background: #f2f2f2 !important; }
.apd31-service-image img { width: 100% !important; height: 100% !important; object-fit: cover !important; }
.apd31-service-intro { position: relative !important; padding: 105px 18px 20px !important; }
.apd31-service-map { position: absolute !important; top: 0 !important; right: 0 !important; left: 0 !important; height: 82px !important; display: flex !important; align-items: center !important; justify-content: center !important; gap: 8px !important; border-radius: 12px !important; background: radial-gradient(circle at 28% 38%, rgba(124, 184, 91, .23), transparent 22%), linear-gradient(100deg, #e4f0dd, #dcebdc 50%, #e9efd9) !important; }
.apd31-service-map .apd5-icon { width: 20px !important; height: 20px !important; color: var(--apd31-blue) !important; }
.apd31-service-map small { font-size: 10px !important; font-weight: 650 !important; }
.apd31-service-provider { margin-top: 22px !important; display: flex !important; align-items: center !important; gap: 10px !important; }
.apd31-service-provider img { width: 42px !important; height: 42px !important; border-radius: 50% !important; object-fit: cover !important; }
.apd31-service-provider strong,
.apd31-service-provider small { display: block !important; }
.apd31-service-provider strong { font-size: 11px !important; }
.apd31-service-provider small { margin-top: 2px !important; color: var(--apd31-muted) !important; font-size: 9px !important; }
.apd31-includes { margin-top: 18px !important; display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 8px !important; }
.apd31-includes span { font-size: 11px !important; }

.apd31-service-booking-bar { position: fixed !important; bottom: 18px !important; left: max(18px, calc((100vw - var(--apd31-detail)) / 2)) !important; z-index: 850 !important; min-width: 300px !important; min-height: 66px !important; padding: 10px 10px 10px 16px !important; display: flex !important; align-items: center !important; justify-content: space-between !important; gap: 18px !important; border: 1px solid #dedede !important; border-radius: 13px !important; background: rgba(255, 255, 255, .98) !important; box-shadow: 0 7px 24px rgba(0, 0, 0, .14) !important; }
.apd31-service-booking-bar span,
.apd31-service-booking-bar strong,
.apd31-service-booking-bar small { display: block !important; }
.apd31-service-booking-bar span,
.apd31-service-booking-bar small { color: var(--apd31-muted) !important; font-size: 8.5px !important; }
.apd31-service-booking-bar strong { margin: 1px 0 !important; font-size: 13px !important; }
.apd31-service-booking-bar > button { min-height: 42px !important; padding: 0 17px !important; border: 0 !important; border-radius: 9px !important; color: #fff !important; background: var(--apd31-blue) !important; font-size: 11px !important; font-weight: 650 !important; }

.apd31-service-dialog { width: min(470px, calc(100vw - 32px)) !important; }
.apd31-service-dialog-scroll { min-height: 0 !important; padding: 16px 20px !important; overflow-y: auto !important; }
.apd31-party-row { padding: 13px 0 !important; display: flex !important; align-items: center !important; justify-content: space-between !important; border-bottom: 1px solid #ededed !important; }
.apd31-party-row strong,
.apd31-party-row small { display: block !important; }
.apd31-party-row strong { font-size: 12px !important; }
.apd31-party-row small { margin-top: 2px !important; color: var(--apd31-muted) !important; font-size: 9px !important; }
.apd31-party-row > div:last-child { display: flex !important; align-items: center !important; gap: 10px !important; }
.apd31-party-row button { width: 29px !important; height: 29px !important; border: 1px solid #b9b9b9 !important; border-radius: 50% !important; background: #fff !important; font-size: 16px !important; }
.apd31-party-row output { min-width: 16px !important; text-align: center !important; font-size: 11px !important; }
.apd31-date-choice { width: 100% !important; min-height: 58px !important; padding: 0 !important; display: grid !important; grid-template-columns: 1fr auto 18px !important; align-items: center !important; gap: 7px !important; border: 0 !important; border-bottom: 1px solid #ededed !important; background: #fff !important; text-align: left !important; }
.apd31-date-choice span { font-size: 11px !important; font-weight: 650 !important; }
.apd31-date-choice strong { color: var(--apd31-muted) !important; font-size: 10px !important; font-weight: 450 !important; }
.apd31-date-choice b { font-size: 22px !important; font-weight: 400 !important; }
.apd31-date-picker { margin: 12px 0 !important; padding: 15px !important; border: 1px solid #dedede !important; border-radius: 12px !important; background: #fff !important; box-shadow: 0 5px 18px rgba(0, 0, 0, .09) !important; }
.apd31-date-picker label { display: block !important; font-size: 10px !important; font-weight: 650 !important; }
.apd31-date-picker input { width: 100% !important; min-height: 42px !important; margin-top: 7px !important; padding: 0 10px !important; border: 1px solid #bdbdbd !important; border-radius: 8px !important; }
.apd31-time-options { margin-top: 10px !important; display: grid !important; grid-template-columns: repeat(4, 1fr) !important; gap: 6px !important; }
.apd31-time-options button { min-height: 34px !important; border: 1px solid #d0d0d0 !important; border-radius: 8px !important; background: #fff !important; font-size: 10px !important; }
.apd31-time-options button.is-active { border-color: #222 !important; background: #f3f3f3 !important; box-shadow: inset 0 0 0 1px #222 !important; }
.apd31-date-picker > button { width: 100% !important; min-height: 39px !important; margin-top: 11px !important; border: 0 !important; border-radius: 8px !important; color: #fff !important; background: #222 !important; font-size: 10px !important; font-weight: 650 !important; }
.apd31-service-selection { margin-top: 16px !important; padding: 11px !important; display: grid !important; grid-template-columns: 58px 1fr !important; align-items: center !important; gap: 10px !important; border: 1px solid #ededed !important; border-radius: 11px !important; }
.apd31-service-selection img { width: 58px !important; height: 58px !important; border-radius: 8px !important; object-fit: cover !important; }
.apd31-service-selection strong,
.apd31-service-selection span { display: block !important; }
.apd31-service-selection strong { font-size: 10.5px !important; }
.apd31-service-selection span { margin-top: 4px !important; color: var(--apd31-muted) !important; font-size: 9px !important; }
.apd31-message-button { min-height: 42px !important; padding: 0 12px !important; border: 0 !important; background: transparent !important; color: #222 !important; font-size: 10px !important; font-weight: 650 !important; text-decoration: underline !important; }

.apd31-message-dialog { width: min(440px, calc(100vw - 32px)) !important; padding-bottom: 18px !important; }
.apd31-message-dialog > p { margin: 16px 20px 10px !important; color: var(--apd31-muted) !important; font-size: 10px !important; line-height: 1.45 !important; }
.apd31-message-dialog textarea { min-height: 126px !important; margin: 0 20px !important; padding: 12px !important; resize: vertical !important; border: 1px solid #777 !important; border-radius: 9px !important; font-size: 12px !important; }
.apd31-message-dialog dl { margin: 14px 20px !important; border-top: 1px solid #ededed !important; }
.apd31-message-dialog dl > div { min-height: 38px !important; display: flex !important; align-items: center !important; justify-content: space-between !important; border-bottom: 1px solid #ededed !important; }
.apd31-message-dialog dt,
.apd31-message-dialog dd { margin: 0 !important; font-size: 10px !important; }
.apd31-message-dialog dd { color: var(--apd31-muted) !important; }
.apd31-message-dialog > button { margin: 0 20px !important; }

/* Responsive -------------------------------------------------------------- */
@media (max-width: 1179px) {
    body.apd-marketplace-ui .apd31-catalog { width: calc(100% - 40px) !important; }
    .apd31-filter-strip { top: 124px !important; margin-inline: -20px !important; padding-inline: 20px !important; }
    .apd31-catalog-grid,
    .apd31-catalog-skeleton { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
    .apd31-catalog-skeleton { width: calc(100% - 40px) !important; }
    .apd31-experience-hero,
    .apd31-service-hero { grid-template-columns: 1fr 1fr !important; gap: 24px !important; }
    .apd31-experience-layout { grid-template-columns: minmax(0, 1fr) 300px !important; gap: 30px !important; }
}

@media (max-width: 767px) {
    body.apd-marketplace-ui .apd31-catalog { width: calc(100% - 24px) !important; padding: 22px 0 96px !important; }
    .apd31-filter-strip { position: relative !important; top: auto !important; margin: -22px -12px 21px !important; padding: 9px 12px !important; }
    .apd31-catalog-heading { align-items: flex-start !important; }
    .apd31-catalog-heading h1 { font-size: 19px !important; }
    .apd31-catalog-heading > button { display: none !important; }
    .apd31-catalog-grid,
    .apd31-catalog-skeleton,
    .apd31-catalog-grid.is-services { width: 100% !important; max-width: none !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 25px 10px !important; }
    .apd31-catalog-skeleton { width: calc(100% - 24px) !important; }
    .apd31-filter-dialog,
    .apd31-service-dialog,
    .apd31-message-dialog { position: absolute !important; right: 0 !important; bottom: 0 !important; left: 0 !important; width: 100% !important; max-width: none !important; max-height: calc(100vh - 44px) !important; border-radius: 18px 18px 0 0 !important; }
    .apd31-duration-options { grid-template-columns: 1fr 1fr !important; }

    .apd31-detail { width: 100% !important; padding: 10px 0 110px !important; }
    .apd31-detail-tools { padding: 0 15px !important; }
    .apd31-detail-tools button { width: 35px !important; padding: 0 !important; justify-content: center !important; font-size: 0 !important; }
    .apd31-experience-hero,
    .apd31-service-hero { min-height: 0 !important; display: flex !important; flex-direction: column !important; gap: 0 !important; }
    .apd31-detail-gallery,
    .apd31-service-image { width: 100% !important; height: auto !important; aspect-ratio: 1.15 / 1 !important; border-radius: 0 !important; }
    .apd31-experience-intro,
    .apd31-service-intro { width: 100% !important; padding: 24px 20px !important; }
    .apd31-service-intro { padding-top: 112px !important; }
    .apd31-experience-intro h1,
    .apd31-service-intro h1 { font-size: 31px !important; }
    .apd31-experience-layout,
    .apd31-service-layout { margin-top: 0 !important; padding: 0 20px !important; display: block !important; }
    .apd31-booking-column { position: static !important; margin: 0 0 20px !important; }
    .apd31-facts > div { grid-template-columns: 1fr !important; gap: 21px !important; }
    .apd31-quality-banner { padding: 28px 20px !important; grid-template-columns: 48px 1fr !important; }
    .apd31-quality-banner > span { width: 46px !important; height: 46px !important; font-size: 22px !important; }
    .apd31-includes { grid-template-columns: 1fr !important; }
    .apd31-service-booking-bar { right: 12px !important; bottom: 76px !important; left: 12px !important; min-width: 0 !important; }
    .apd31-gallery-modal { padding: 55px 10px 20px !important; }
    .apd31-gallery-modal > div { grid-template-columns: 1fr !important; }
}

@media (prefers-reduced-motion: reduce) {
    .apd31-filter-dialog,
    .apd31-service-dialog,
    .apd31-message-dialog,
    .apd31-catalog-skeleton span::before,
    .apd31-catalog-grid .apd5-card-media img { animation: none !important; transition: none !important; }
}
