/* Brand color override — applied after the template stylesheet.
   The template drives ~385 rules (buttons, links, hovers, accents) off
   this one variable, so redefining it here recolors the whole site
   without touching the compiled style.css. */
:root {
    --theme-color: #071743;
    --primary-color: #071743;
    /* The template's dark teal (#113D48) drove every button hover fill and
       heading colour; it isn't a brand colour, so it becomes navy. */
    --title-color: #071743;
    --smoke-color: #E3F4FC;
}

/* The 4 spots in style.css that use the teal as a raw hex instead of
   the variable (a testimonial highlight color and an inline-SVG heart icon). */
.testi-grid4 .box-desig {
    color: #071743;
}

/* Featured Properties cards: real listing titles/prices vary a lot in
   length, so force equal-height cards with a fixed image and a
   bottom-anchored action row instead of letting each card size itself. */
#properties-sec .swiper-slide {
    height: auto;
    display: flex;
}

#properties-sec .tour-box {
    display: flex;
    flex-direction: column;
    width: 100%;
}

#properties-sec .tour-box_img,
#properties-sec .tour-box_img img {
    height: 220px;
}

#properties-sec .tour-box_img img {
    width: 100%;
    object-fit: cover;
}

#properties-sec .tour-content {
    display: flex;
    flex-direction: column;
    flex: 1;
}

#properties-sec .box-title {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: 2.6em;
    overflow-wrap: anywhere;
}

#properties-sec .tour-action {
    margin-top: auto;
}

#properties-sec .property-card-location {
    display: block;
    color: #8a94a6;
    font-size: 14px;
    margin-bottom: 8px;
}

/* Our logo is a raster file (not the template's small-viewBox SVG), so it
   needs an explicit height everywhere it's used — otherwise it renders at
   native size and overruns the header/menu/footer. */
img[src*="aval-logo-"] {
    width: 140px;
    height: auto;
}

.preloader-inner img[src*="aval-logo-"] {
    width: 160px;
}

.mobile-logo img[src*="aval-logo-"] {
    width: 150px;
}

@media (max-width: 575.98px) {
    img[src*="aval-logo-"] {
        width: 110px;
    }
}

/* Main header logo swaps from white (transparent header, over the hero)
   to navy (sticky header, solid white background) so it stays visible
   in both states. */
.header-logo .header-logo-sticky {
    display: none;
}

.header-layout1 .sticky-wrapper.sticky .header-logo-transparent {
    display: none;
}

.header-layout1 .sticky-wrapper.sticky .header-logo-sticky {
    display: inline-block;
}

/* style3/style4/style5 buttons ("Learn More", "Subscribe Now", etc.) came
   from the template hard-coded to --title-color, a dark teal that isn't a
   brand color. Every one of these sits on a white/light section, so they
   become solid navy — sky-blue is reserved for buttons placed directly on
   a dark background (see .th-btn.style2 below, and the header's "Book
   Now" exception further down, which sits on the transparent header). */
.th-btn.style3,
.th-btn.style5 {
    background-color: #071743 !important;
}

.th-btn.style3:before,
.th-btn.style5:before {
    background-color: #E3F4FC !important;
}

.th-btn.style3:hover,
.th-btn.style5:hover {
    color: #071743 !important;
}

.th-btn.style3.th-icon:hover:after,
.th-btn.style5.th-icon:hover:after {
    background-color: #071743 !important;
}

/* Header "Book Now" sits on the transparent header over the hero (a dark
   background), so it flips the rule: sky-blue by default, navy on hover -
   same treatment "Explore Tours" gets in the hero. */
.header-layout1 .header-button .th-btn.style3 {
    background-color: #E3F4FC !important;
    color: #071743 !important;
}

.header-layout1 .header-button .th-btn.style3.th-icon:after {
    background-color: #071743 !important;
}

.header-layout1 .header-button .th-btn.style3:before {
    background-color: #071743 !important;
}

.header-layout1 .header-button .th-btn.style3:hover {
    color: #ffffff !important;
}

.header-layout1 .header-button .th-btn.style3:hover.th-icon:after {
    background-color: #ffffff !important;
}

/* Once scrolled (sticky, white background), "Book Now" goes back to the
   normal light-bg-> navy rule. */
.header-layout1 .sticky-wrapper.sticky .header-button .th-btn.style3 {
    background-color: #071743 !important;
    color: #ffffff !important;
}

.header-layout1 .sticky-wrapper.sticky .header-button .th-btn.style3.th-icon:after {
    background-color: #ffffff !important;
}

.header-layout1 .sticky-wrapper.sticky .header-button .th-btn.style3:before {
    background-color: #E3F4FC !important;
}

.header-layout1 .sticky-wrapper.sticky .header-button .th-btn.style3:hover {
    color: #071743 !important;
}

.header-layout1 .sticky-wrapper.sticky .header-button .th-btn.style3:hover.th-icon:after {
    background-color: #071743 !important;
}

.th-btn.style4 {
    color: #071743 !important;
    border-color: #071743 !important;
}

.th-btn.style4.th-icon:after {
    background-color: #071743 !important;
}

.th-btn.style4:hover {
    color: #ffffff !important;
    border-color: #071743 !important;
}

.th-btn.style4:hover.th-icon:after {
    background-color: #ffffff !important;
}

/* Secondary buttons ("Our Services", etc.) stay outline/unfilled like the
   template default — only the border/text color changes to sky-blue. */
.th-btn.style2 {
    background-color: transparent !important;
    color: #E3F4FC !important;
    border-color: #E3F4FC !important;
}

.th-btn.style2:before {
    background-color: #E3F4FC !important;
}

.th-btn.style2:hover {
    color: #071743 !important;
    border-color: #E3F4FC !important;
}

.th-btn.style2.th-icon:after {
    background-color: #E3F4FC !important;
}

.th-btn.style2:hover.th-icon:after {
    background-color: #071743 !important;
}

/* Primary buttons with no style modifier are navy everywhere by default
   (e.g. the search-bar "Search" button on a white card) EXCEPT in the
   hero, which sits on a dark photo — there "Explore Tours" goes sky-blue,
   matching the rule: light background -> navy button, dark background ->
   sky-blue button. */
.hero-style1 .th-btn:not(.style1):not(.style2):not(.style3):not(.style4):not(.style5):not(.style6):not(.style7) {
    background-color: #E3F4FC !important;
    color: #071743 !important;
}

.hero-style1 .th-btn:not(.style1):not(.style2):not(.style3):not(.style4):not(.style5):not(.style6):not(.style7).th-icon:after {
    background-color: #071743 !important;
}

.hero-style1 .th-btn:not(.style1):not(.style2):not(.style3):not(.style4):not(.style5):not(.style6):not(.style7):before {
    background-color: #071743 !important;
}

.hero-style1 .th-btn:not(.style1):not(.style2):not(.style3):not(.style4):not(.style5):not(.style6):not(.style7):hover {
    color: #ffffff !important;
}

.hero-style1 .th-btn:not(.style1):not(.style2):not(.style3):not(.style4):not(.style5):not(.style6):not(.style7):hover.th-icon:after {
    background-color: #ffffff !important;
}

/* Transparent header: floats over the hero image (front page) or the
   breadcrumb banner (every other page — all pages have one right under
   the header, so this is safe site-wide). Only the resting state is
   transparent; once the visitor scrolls, main.js adds .sticky and the
   template's own white background + dark text takes back over, since a
   see-through bar over plain page content wouldn't be readable. */
.header-layout1 {
    background-color: transparent !important;
}

.header-layout1 .header-top {
    border-bottom-color: rgba(255, 255, 255, 0.25);
}

.header-layout1 .header-top .header-links a,
.header-layout1 .header-top .header-links li,
.header-layout1 .header-top .header-links span,
.header-layout1 .header-top .header-links i,
.header-layout1 .currency-menu {
    color: #ffffff;
    border-color: rgba(255, 255, 255, 0.4);
}

.header-layout1 .currency-menu .nice-select,
.header-layout1 .currency-menu .nice-select .current {
    color: #ffffff;
}

.header-layout1 .currency-menu .nice-select:after {
    border-color: #ffffff transparent transparent transparent;
}

.header-layout1 .main-menu > ul > li > a {
    color: #ffffff;
}

.header-layout1 .main-menu > ul > li > a:hover,
.header-layout1 .main-menu > ul > li > a.active {
    color: #E3F4FC;
}

.header-layout1 .main-menu > ul > li > a:before {
    background: #E3F4FC;
}

.header-layout1 .menu-item.menu-item-type-custom a:after {
    color: #ffffff;
}

.header-layout1 .main-menu ul li:has(.sub-menu) > a:after,
.header-layout1 .main-menu ul li:has(.mega-menu) > a:after,
.header-layout1 .main-menu ul li.menu-item-has-children > a:after {
    color: #ffffff;
}

.header-layout1 .main-menu ul li:has(.sub-menu) > a:hover:after,
.header-layout1 .main-menu ul li:has(.mega-menu) > a:hover:after,
.header-layout1 .main-menu ul li.menu-item-has-children > a:hover:after {
    color: #E3F4FC;
}

/* The template's decorative navy panel behind the logo — removed so the
   header is fully see-through, not just its main strip. */
.header-layout1 .logo-bg {
    display: none !important;
}

/* Menu toggle: drop the navy box for a plain, premium icon-only control —
   a custom 6-dot "house" glyph (roof + base + door) per the client's
   request, drawn inline in header.php and colored via currentColor. */
.th-menu-toggle-nav {
    width: auto;
    height: auto;
    background-color: transparent !important;
    color: #ffffff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: color 0.3s ease, transform 0.3s ease;
}

.th-menu-toggle-house {
    display: block;
}

.th-menu-toggle-nav:hover {
    background-color: transparent !important;
    color: #E3F4FC !important;
    transform: scale(1.08);
}

.header-layout1 .sticky-wrapper.sticky .th-menu-toggle-nav {
    color: #071743;
}

.header-layout1 .sticky-wrapper.sticky .th-menu-toggle-nav:hover {
    color: #E3F4FC !important;
}

/* Mobile nav menu panel: template default is a narrow 310px sliding
   drawer — client wants it full-width instead. */
.th-menu-wrapper .th-menu-area {
    max-width: 100%;
    border-right: none;
}

.th-menu-wrapper .th-menu-toggle {
    right: 20px;
    background-color: transparent !important;
    color: #071743;
    font-size: 24px;
}

.th-menu-wrapper .th-menu-toggle:hover {
    background-color: transparent !important;
    color: #071743 !important;
    opacity: 0.6;
}

/* The band behind the logo in the mobile menu was tinted sky-blue via the
   template's --smoke-color; client wants it plain white instead. */
.th-menu-wrapper .mobile-logo {
    background-color: #ffffff;
}

/* CTA + social row added at the bottom of the mobile menu. */
.mobile-menu-cta {
    padding: 24px 30px 0;
}

.mobile-menu-cta .th-btn {
    display: inline-flex;
}

.mobile-menu-social {
    padding: 20px 30px 30px;
    display: flex;
    gap: 8px;
}

/* Mobile hero: the template gave far more room below the CTAs (for the
   search card's overlap) than above the headline (under the now-absolute
   transparent header) — rebalance so both gaps read as roughly even. */
@media (max-width: 767px) {
    .hero-style1 {
        padding: 190px 0 130px 0;
    }
}

@media (max-width: 575px) {
    .hero-style1 {
        padding: 190px 0 120px 0;
    }
}

/* Once scrolled (sticky), restore the normal light-header look. */
.header-layout1 .sticky-wrapper.sticky .header-top,
.header-layout1 .sticky-wrapper.sticky .main-menu > ul > li > a,
.header-layout1 .sticky-wrapper.sticky .header-links a,
.header-layout1 .sticky-wrapper.sticky .currency-menu,
.header-layout1 .sticky-wrapper.sticky .currency-menu .nice-select .current {
    color: var(--title-color, #071743);
}

.header-layout1 .sticky-wrapper.sticky {
    background-color: #ffffff;
}

.header-layout1 .sticky-wrapper.sticky .main-menu > ul > li > a:hover,
.header-layout1 .sticky-wrapper.sticky .main-menu > ul > li > a.active {
    color: #071743;
}

.header-layout1 .sticky-wrapper.sticky .main-menu ul li.menu-item-has-children > a:after {
    color: var(--black-color2, #0D0D0C);
}

.header-layout1 .sticky-wrapper.sticky .main-menu ul li.menu-item-has-children > a:hover:after {
    color: #071743;
}

/* Remove the custom cursor dot that follows the mouse — hidden rather than
   deleted from the markup, since main.js references this element on every
   mousemove and would throw if it didn't exist. */
.cursor-follower {
    display: none !important;
}

/* The "DRAG" slider-cursor tooltip is meant to be invisible until GSAP
   positions it during an active slider drag. It was showing statically
   pinned at the top-left, adding unwanted space above the header. */
.slider-drag-cursor {
    display: none !important;
}

/* Testimonial cards: real Guesty/Airbnb reviews don't come with a guest
   photo, so the avatar circle shows the Airbnb brand mark instead of a
   broken placeholder image. The property name replaces "Traveller" as the
   subtitle and varies a lot in length, so it's clamped to one line
   instead of stretching the card; a "View Property" link gives people a
   way to actually see the place being reviewed. */
.testi-card_avater-brand {
    width: 72px;
    height: 72px;
    aspect-ratio: 1 / 1;
    border-radius: 50%;
    background-color: #FF5A5F;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    flex-grow: 0;
    align-self: center;
    line-height: 1;
}

.testi-card_avater-brand i {
    color: #ffffff;
    font-size: 32px;
    line-height: 1;
}

@media (max-width: 575px) {
    .testi-card_avater-brand {
        width: 48px;
        height: 48px;
    }
    .testi-card_avater-brand i {
        font-size: 22px;
    }
}

.testi-card_profile {
    min-width: 0;
}

.testi-card_profile .media-body {
    min-width: 0;
    flex: 1;
}

.testi-card_property {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
}

.testi-card_actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px 20px;
}

.testi-card_property-btn {
    margin-top: 16px;
}

.testi-card_readmore {
    margin-top: 0;
    background: none;
    border: none;
    padding: 0;
    color: #071743;
    font-weight: 600;
    text-decoration: underline;
    cursor: pointer;
}

.review-modal {
    max-width: 600px;
    margin: 40px auto;
    background: #fff;
    border-radius: 16px;
    padding: 32px;
}

.review-modal .testi-card_profile {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 16px;
}

.review-modal .testi-card_text {
    font-size: 18px;
    line-height: 1.6;
}

/* Simple prev/next arrows for the testimonial carousel instead of a row of
   pagination dots — with up to 20+ slides the dots wrapped into a
   confusing multi-row grid. Reviews still autoplay on their own; these are
   just for anyone who wants to browse manually. */
.testi-slider-nav {
    display: flex;
    justify-content: center;
    gap: 16px;
    margin-top: 32px;
}

.testi-slider-nav .slider-arrow {
    position: static;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    margin-top: 0;
    left: auto;
    border-radius: 50%;
    background-color: #ffffff;
    border: 1px solid #BCCED2;
    color: #071743;
    box-shadow: none;
}

.testi-slider-nav .slider-arrow:hover {
    background-color: #071743;
    border-color: #071743;
    color: #ffffff;
}

@media (max-width: 1500px) {
    .testi-slider-nav .slider-arrow {
        display: inline-flex !important;
    }
}

/* Google-review cards (Wrenlocal), styled to match the Airbnb ones —
   official Google "G" mark, used as-is with no recoloring. */
.testi-card_avater-google {
    background-color: #ffffff;
    border: 1px solid #f1f1f1;
    overflow: hidden;
}

.testi-card_avater-google img {
    width: 68%;
    height: 68%;
    object-fit: contain;
    border-radius: 0;
}

/* Stars wrapped into two rows on wide desktop cards, since the row
   layout squeezed them into a narrow column next to a long property
   name. Stack the stars under the avatar/name at every width, like they
   already sat on mobile. */
.testi-card_wrapper {
    display: block !important;
}

.testi-card_review {
    margin-top: 10px;
}

/* "X Airbnb Reviews" / "X Google Reviews" badges under the testimonial
   headline — total review counts, not just the ones shown in the carousel. */
.testi-review-badges {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 14px 28px;
    margin-top: 16px;
}

.testi-review-badge {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 15px;
    color: #17203a;
}

.testi-review-badge_icon {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.testi-review-badge_icon-airbnb {
    background-color: #FF5A5F;
    color: #ffffff;
    font-size: 14px;
}

.testi-review-badge_icon-google {
    background-color: #ffffff;
    border: 1px solid #f1f1f1;
    overflow: hidden;
}

.testi-review-badge_icon-google img {
    width: 68%;
    height: 68%;
    object-fit: contain;
}

/* Interior page breadcrumb banners (About, Contact, Activities, Properties,
   etc.) use a real property photo as the background, so they need the same
   dark overlay the homepage hero already has via .hero-1 .th-hero-bg:before
   otherwise white text is unreadable on a bright photo. */
.breadcumb-wrapper {
    position: relative;
    z-index: 1;
}

.breadcumb-wrapper:before {
    content: "";
    position: absolute;
    inset: 0;
    /* Same overlay tint as the homepage hero (.hero-1 .th-hero-bg:before),
       not a navy brand tint, per client preference. */
    background: rgba(13, 13, 12, 0.5);
    z-index: -1;
}

/* The search bar sits in its own full-width strip between the hero photo
   and the Featured Properties section. That strip had no background of
   its own, so on wide screens (where the white search box doesn't span
   the full width) the body's white showed through as a gap on each side,
   between the hero image and the section below it. Match the pale-blue
   tour_bg_1.jpg tone used by the section right after it so it reads as
   one continuous background instead of a seam. */
.booking-sec {
    background-color: #e9f7fa;
}

/* The copyright bar's photo is only ~68px tall, so a busy/colorful photo
   reads as a messy stripe at that height. Darken it so it stays
   recognizably a real photo without clashing with the white text on it. */
.copyright-wrap {
    position: relative;
    z-index: 1;
}

.copyright-wrap:before {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(7, 23, 67, 0.75);
    z-index: -1;
}

/* The template's decorative floating/animated shapes (vans, blobs, leaves)
   were hidden below xl/xxl breakpoints via Bootstrap's d-none utility.
   Client wants them visible on every device where they look good, since
   the containing sections are already overflow-hidden so partially
   off-screen positioning doesn't cause horizontal scroll. Scale them
   down a bit on small screens so they read as accents, not clutter. */
.shape-mockup.d-none {
    display: block !important;
}

/* style.css has a blanket "display:none !important" on .shape-mockup below
   1600px, which is the real reason these never showed on laptop/tablet/
   mobile widths at all. Override it back on. */
@media (max-width: 1600px) {
    .shape-mockup {
        display: block !important;
    }
}

@media (max-width: 767px) {
    .shape-mockup {
        transform: scale(0.55);
    }
    .shape-mockup.movingCar {
        transform: scale(0.4);
    }
}

/* On mobile, the counter-area's palm tree / van accents sit right at the
   section's bottom edge, which overlaps the last stacked stat circle
   since circles go full-width there. Add clearance so they sit in their
   own space below the circles instead of overlapping them. */
@media (max-width: 767px) {
    .counter-area {
        padding-bottom: 110px;
    }
}

/* Colorful floating travel icon strip (real assets from the Tourm "Home
   Agency" demo's Matter.js falling-icons effect, extracted as static SVGs
   since we don't need the physics simulation, just the decorative look)
   under the homepage testimonial section, per client request. */
.floating-icons-strip {
    position: absolute;
    inset: 0;
    top: auto;
    bottom: 0;
    height: 220px;
    overflow: hidden;
    pointer-events: none;
    z-index: 0;
}

.floating-icon {
    position: absolute;
    width: 44px;
    height: 44px;
    opacity: 0.9;
    animation: floatIconBob 4s ease-in-out infinite;
}

.floating-icon-2 {
    animation-duration: 4.6s;
}

.floating-icon-3 {
    animation-duration: 5.2s;
}

@keyframes floatIconBob {
    0%, 100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-14px);
    }
}

@media (max-width: 991px) {
    .floating-icons-strip {
        height: 160px;
    }
    .floating-icon {
        width: 30px;
        height: 30px;
    }
}

/* Google place-rating badge (activity pages) and its CTA button row:
   the stars were wrapping onto two lines on narrow screens because the
   flex row had no explicit no-wrap rule on the star icons themselves,
   and the two CTA buttons underneath had no gap when they stack. */
.google-place-rating {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 10px;
    text-decoration: none;
    color: inherit;
}

.google-place-rating_stars {
    display: inline-flex;
    flex-wrap: nowrap;
    white-space: nowrap;
    gap: 2px;
    color: #f5a623;
}

.google-place-rating_number {
    color: #17203a;
}

.google-place-rating_text {
    color: #8a94a6;
}

.activity-cta-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
}

/* style.css sets .widget input::placeholder to white globally (meant for
   some dark-background widget variant we don't use), which made every
   sidebar search box's "Search" placeholder invisible against its white
   input background. */
.widget .search-form input::placeholder {
    color: #6e7070 !important;
}

/* Activity archive cards ("Shopping & Nightlife", "Parks & Nature", etc.)
   were flat: thin gray border, no shadow, no hover state, inconsistent
   card heights since excerpt length varies. Bring them up to the same
   premium feel as the property cards elsewhere on the site. */
.activity-card {
    border: none;
    box-shadow: 0 4px 24px rgba(7, 23, 67, 0.08);
    transition: transform 0.25s ease, box-shadow 0.25s ease;
    height: 100%;
    display: flex;
    flex-direction: column;
}

.activity-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 16px 40px rgba(7, 23, 67, 0.16);
}

.activity-card .tour-box_img {
    height: 220px;
    overflow: hidden;
}

.activity-card .tour-box_img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.4s ease;
}

.activity-card:hover .tour-box_img img {
    transform: scale(1.08);
}

.activity-card .tour-content {
    padding: 24px;
    display: flex;
    flex-direction: column;
    flex: 1;
}

.activity-card .box-title {
    margin-bottom: 10px;
}

.activity-card .tour-text {
    color: #6e7070;
    flex: 1;
    margin: 0 0 20px 0;
    text-align: left;
    max-width: none;
}

.activity-card .tour-action {
    margin-top: auto;
}

@media (max-width: 767px) {
    .activity-card .tour-box_img {
        height: 180px;
    }
}

/* ".widget_categories a" sets display:block + padding/border meant for the
   plain text category list links, but our "View All Properties" CTA
   button inside that same widget inherited it too, breaking the button's
   own centered icon+text flex layout (arrow ended up floating separately
   at the bottom-left instead of next to the text). */
.widget_categories a.th-btn {
    display: inline-flex !important;
    width: 100%;
    padding: 14px 25px !important;
    border-radius: 48px !important;
    border-bottom: none !important;
    margin-top: 20px;
}

.widget_categories a.th-btn i,
.widget_categories a.th-btn img {
    display: inline-block;
}

/* ---- Properties search page (archive-property.php) ----
   No hero. Solid in-flow sticky header, a compact pill search bar, then a
   two-column results list + Airbnb-style sticky map with white price pins
   and a photo card, all in our own navy/sky-blue design. */

/* Header: the template's header floats (position:absolute) over a hero
   image and main.js strips .sticky at scroll-top, so on this hero-less
   page it overlapped the search bar. Put it in normal flow, solid white,
   sticking to the top, single row. */
.header-solid .th-header.header-absolute {
    position: sticky;
    top: 0;
    z-index: 200;
    background-color: #ffffff !important;
    box-shadow: 0 1px 0 #e9eef3;
}

.header-solid .header-top {
    display: none;
}

.header-solid .sticky-wrapper,
.header-solid .sticky-wrapper.sticky {
    position: static !important;
    animation: none !important;
    filter: none !important;
    background-color: transparent !important;
}

/* Search bar: a single rounded pill, like the homepage booking bar but
   compact, sitting on a white strip under the header. */
.property-search-bar {
    background-color: #ffffff;
    border-bottom: 1px solid #e9eef3;
    padding: 18px 0;
    position: relative;
    z-index: 150;
}

.property-search-bar .booking-form {
    margin-top: 0;
    padding: 6px 6px 6px 22px;
    border: 1px solid #dfe5ec;
    border-radius: 999px;
    box-shadow: 0 6px 24px rgba(7, 23, 67, 0.06);
    max-width: 980px;
    margin-left: auto;
    margin-right: auto;
}

.property-search-bar .booking-form .row {
    flex-wrap: nowrap;
    --bs-gutter-x: 0;
}

.property-search-bar .form-group {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 22px 6px 0;
    margin: 0;
    flex: 1 1 0;
    min-width: 0;
}

.property-search-bar .form-group:not(:first-child) {
    border-left: 1px solid #e6e9ee;
    padding-left: 22px;
}

.property-search-bar .form-group .icon {
    color: #071743;
    font-size: 18px;
    flex-shrink: 0;
}

.property-search-bar .search-input {
    min-width: 0;
}

.property-search-bar label {
    display: block;
    font-size: 12px;
    font-weight: 600;
    color: #8a94a6;
    margin: 0 0 1px;
    line-height: 1.2;
}

.property-search-bar .form-select,
.property-search-bar .nice-select,
.property-search-bar .rc-display-text,
.property-search-bar .gp-display-text {
    border: none;
    background: transparent;
    padding: 0;
    margin: 0;
    height: auto;
    line-height: 1.3;
    font-size: 14px;
    font-weight: 700;
    color: #071743;
    width: auto;
}

.property-search-bar .nice-select:after {
    right: -14px;
}

.property-search-bar .form-btn {
    flex: 0 0 auto;
    padding: 0;
}

.property-search-bar .form-btn .th-btn {
    padding: 14px 26px;
    white-space: nowrap;
}

/* Results layout: natural page scroll, map column sticks. */
.property-results {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
    align-items: start;
}

.property-results_list {
    padding: 28px 40px 60px;
}

.property-results_heading {
    margin-bottom: 22px;
}

.property-results_heading h1 {
    font-size: 26px;
    line-height: 1.25;
    color: #071743;
    margin: 0 0 4px;
}

.property-results_count {
    font-size: 14px;
    color: #6e7070;
}

.property-results_grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
    gap: 26px;
}

.property-result-card {
    border: none;
    border-radius: 18px;
    box-shadow: 0 4px 20px rgba(7, 23, 67, 0.07);
    transition: box-shadow 0.25s ease, transform 0.25s ease;
    display: flex;
    flex-direction: column;
}

.property-result-card:hover,
.property-result-card.is-active {
    box-shadow: 0 14px 34px rgba(7, 23, 67, 0.16);
    transform: translateY(-4px);
}

.property-result-card .tour-box_img {
    height: 230px;
    overflow: hidden;
}

.property-result-card .tour-box_img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s ease;
}

.property-result-card:hover .tour-box_img img {
    transform: scale(1.05);
}

.property-result-card .tour-content {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 20px 22px 22px;
}

.property-result-card .box-title {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    overflow-wrap: anywhere;
}

.property-result-card .property-card-location {
    display: block;
    color: #8a94a6;
    font-size: 14px;
    margin-bottom: 6px;
}

.property-result-card .tour-action {
    margin-top: auto;
}

/* Map column */
.property-results_map {
    position: sticky;
    top: var(--ph-header-h, 90px);
    height: calc(100vh - var(--ph-header-h, 90px));
}

#property-map {
    width: 100%;
    height: 100%;
}

#property-map .gm-style .gm-style-cc,
#property-map .gmnoprint a {
    font-size: 10px;
}

/* Airbnb-style price pins: white pill, dark text, shadow; navy when
   hovered/active or when its card is hovered in the list. */
.property-map-pin {
    position: absolute;
    transform: translate(-50%, -100%);
    background-color: #ffffff;
    color: #071743;
    font-weight: 700;
    font-size: 14px;
    padding: 7px 12px;
    border-radius: 999px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18), 0 0 0 1px rgba(0, 0, 0, 0.06);
    cursor: pointer;
    white-space: nowrap;
    user-select: none;
    transition: transform 0.15s ease, background-color 0.15s ease, color 0.15s ease;
}

.property-map-pin:after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: -5px;
    width: 10px;
    height: 10px;
    background: inherit;
    transform: translateX(-50%) rotate(45deg);
    border-radius: 2px;
}

.property-map-pin:hover,
.property-map-pin.is-active {
    background-color: #071743;
    color: #ffffff;
    transform: translate(-50%, -100%) scale(1.06);
    z-index: 10;
}

/* Map property card (custom overlay, not Google's stock bubble). */
.property-map-card {
    position: absolute;
    transform: translate(-50%, calc(-100% - 46px));
    width: 280px;
    background: #ffffff;
    border-radius: 16px;
    box-shadow: 0 16px 40px rgba(7, 23, 67, 0.22);
    overflow: hidden;
    z-index: 20;
}

.property-map-card_img {
    display: block;
    width: 100%;
    height: 160px;
    object-fit: cover;
}

.property-map-card_body {
    padding: 12px 14px 14px;
}

.property-map-card_title {
    font-size: 15px;
    font-weight: 600;
    color: #071743;
    line-height: 1.3;
    margin: 0 0 4px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.property-map-card_meta {
    font-size: 13px;
    color: #6e7070;
    margin-bottom: 6px;
}

.property-map-card_rating {
    color: #f5a623;
    font-size: 13px;
    margin-bottom: 6px;
}

.property-map-card_rating span {
    color: #6e7070;
    margin-left: 4px;
}

.property-map-card_price {
    font-size: 15px;
    color: #071743;
}

.property-map-card_price strong {
    font-size: 17px;
}

.property-map-card_close {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 30px;
    height: 30px;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.92);
    color: #071743;
    font-size: 16px;
    line-height: 30px;
    text-align: center;
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
}

.property-map-card a.property-map-card_link {
    position: absolute;
    inset: 0;
}

@media (max-width: 991px) {
    .property-results {
        grid-template-columns: 1fr;
    }
    .property-results_map {
        position: relative;
        top: auto;
        height: 340px;
    }
    .property-results_list {
        padding: 24px 16px 48px;
    }
}

/* Same page: the header sits on white here, so use the solid-header look
   (navy logo, dark nav, navy Book Now) that other pages only get once
   scrolled — main.js won't add .sticky at scroll-top, so key off the body
   class instead. */
.header-solid .header-logo .header-logo-transparent {
    display: none;
}

.header-solid .header-logo .header-logo-sticky {
    display: inline-block;
}

.header-solid .header-layout1 .main-menu > ul > li > a,
.header-solid .header-layout1 .main-menu ul li.menu-item-has-children > a:after {
    color: #071743;
}

.header-solid .header-layout1 .main-menu > ul > li > a:hover,
.header-solid .header-layout1 .main-menu > ul > li > a.active {
    color: #1CA8CB;
}

.header-solid .header-layout1 .main-menu > ul > li > a:before {
    background: #071743;
}

.header-solid .th-menu-toggle-nav {
    color: #071743;
}

.header-solid .header-layout1 .header-button .th-btn.style3 {
    background-color: #071743 !important;
    color: #ffffff !important;
}

.header-solid .header-layout1 .header-button .th-btn.style3.th-icon:after {
    background-color: #ffffff !important;
}

.header-solid .header-layout1 .header-button .th-btn.style3:before {
    background-color: #E3F4FC !important;
}

.header-solid .header-layout1 .header-button .th-btn.style3:hover {
    color: #071743 !important;
}

.header-solid .header-layout1 .header-button .th-btn.style3:hover.th-icon:after {
    background-color: #071743 !important;
}

/* Map inset like Airbnb: white gutters above/below/right and rounded
   corners, rather than a full-bleed panel. Header: single clean white
   row with a hairline, even padding. */
.header-solid .th-header.header-absolute {
    box-shadow: none;
    border-bottom: 1px solid #eef1f5;
}

.header-solid .header-layout1 .menu-area {
    padding: 6px 0;
}

.property-search-bar {
    border-bottom: 1px solid #eef1f5;
    padding: 16px 0;
}

.property-results_list {
    padding: 28px 32px 60px 40px;
}

.property-results_map {
    padding: 24px 24px 24px 0;
    box-sizing: border-box;
}

#property-map {
    border-radius: 20px;
    overflow: hidden;
    box-shadow: 0 2px 12px rgba(7, 23, 67, 0.06);
}

/* The floating scroll-to-top button lands exactly on the map's zoom
   control in the bottom-right corner on this page; the map is the
   primary UI here, so drop the button. */
.post-type-archive-property .scroll-top {
    display: none !important;
}

/* ---- Properties page: search bar lives in the header row (xl+) ----
   The main menu and Book Now are swapped for the search pill and a
   "Menu" button that opens the side drawer. Below xl the standalone
   bar under the header is used instead. */
.post-type-archive-property .header-layout1 .menu-area {
    padding: 10px 0;
}

.post-type-archive-property .header-layout1 .menu-area > .container > .row {
    flex-wrap: nowrap;
    gap: 24px;
}

.header-search.property-search-bar {
    background: transparent;
    border: 0;
    padding: 0;
    z-index: auto;
}

.header-search.property-search-bar .booking-form {
    max-width: 860px;
    margin: 0 auto;
    padding: 4px 4px 4px 22px;
    box-shadow: 0 4px 18px rgba(7, 23, 67, 0.06);
}

.header-search.property-search-bar .form-group {
    padding-top: 4px;
    padding-bottom: 4px;
}

.header-search.property-search-bar label {
    font-size: 11px;
}

.header-search.property-search-bar .form-btn .th-btn {
    padding: 12px 22px;
    border-radius: 999px;
}

.post-type-archive-property .header-menu-btn {
    display: inline-flex !important;
    align-items: center;
    gap: 10px;
    width: auto;
    height: 46px;
    padding: 0 18px 0 16px;
    border: 1px solid #dfe5ec;
    border-radius: 999px;
    background: #ffffff;
    color: #071743;
    font-family: inherit;
    font-size: 14px;
    font-weight: 600;
    line-height: 1;
    transition: box-shadow .2s, border-color .2s;
}

.post-type-archive-property .header-menu-btn:hover {
    background: #ffffff;
    color: #071743;
    border-color: #071743;
    box-shadow: 0 4px 14px rgba(7, 23, 67, 0.1);
}

.post-type-archive-property .header-menu-btn .th-menu-toggle-house {
    width: 22px;
    height: 22px;
    flex: 0 0 auto;
}

/* Properties page on desktop: the Menu button opens the drawer as a
   right-side panel instead of the full-screen mobile overlay. */
@media (min-width: 1200px) {
    .post-type-archive-property .th-menu-wrapper .th-menu-area {
        max-width: 420px;
        margin-left: auto;
        padding: 40px 32px;
        box-shadow: -12px 0 40px rgba(7, 23, 67, 0.15);
        transform: translateX(110%);
        left: 0;
        transition: transform .5s ease, opacity .4s ease;
    }
    .post-type-archive-property .th-menu-wrapper.th-body-visible .th-menu-area {
        transform: translateX(0);
    }
    .post-type-archive-property .th-mobile-menu > ul {
        padding: 0 8px;
    }
}


/* ---- Properties page: Airbnb-style quick filters, heading spacing,
   and the mobile map-first layout with a scroll-up results sheet. ---- */
.property-chips_track {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.property-chip {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 9px 15px;
    border: 1px solid #dfe5ec;
    border-radius: 999px;
    background: #ffffff;
    color: #071743;
    font-size: 13px;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
    transition: border-color .2s, box-shadow .2s, background .2s, color .2s;
}

.property-chip:hover {
    color: #071743;
    border-color: #071743;
    box-shadow: 0 3px 10px rgba(7, 23, 67, 0.08);
}

.property-chip.is-active {
    background: #071743;
    border-color: #071743;
    color: #ffffff;
}

.property-chip.is-active:hover {
    color: #ffffff;
}

.property-chip--clear {
    border-color: transparent;
    text-decoration: underline;
    padding-left: 6px;
}

.property-chip--clear:hover {
    box-shadow: none;
    border-color: transparent;
}

/* Desktop: chips sit above the heading; heading gets a little more air. */
.property-results_list > .d-xl-block .property-chips {
    margin-bottom: 8px;
}

.property-results_heading {
    padding: 14px 0 10px;
    margin-bottom: 20px;
}

/* Mobile top bar (replaces the logo): back arrow + search pill. */
.property-mobile-bar {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.property-mobile-bar_back {
    flex: 0 0 auto;
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: #071743;
    font-size: 18px;
}

.property-mobile-bar_back:hover {
    background: #eef3f8;
    color: #071743;
}

.property-mobile-bar_pill {
    position: relative; /* anchors the search icon; the tablet rule below switches to absolute */
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 12px;
    height: 52px;
    padding: 0 18px 0 16px;
    border: 1px solid #dfe5ec;
    border-radius: 999px;
    background: #ffffff;
    box-shadow: 0 4px 16px rgba(7, 23, 67, 0.08);
    color: #071743;
    text-align: left;
    font-family: inherit;
}

.property-mobile-bar_pill i {
    font-size: 16px;
    flex: 0 0 auto;
}

.property-mobile-bar_text {
    display: flex;
    flex-direction: column;
    min-width: 0;
    line-height: 1.2;
}

.property-mobile-bar_title {
    font-size: 14px;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.property-mobile-bar_sub {
    font-size: 12px;
    color: #6e7787;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Search sheet (mobile/tablet). */
.property-search-sheet {
    position: fixed;
    inset: 0;
    z-index: 100000;
    background: rgba(7, 23, 67, 0.45);
    opacity: 0;
    visibility: hidden;
    transition: opacity .25s ease, visibility .25s;
}

.property-search-sheet.is-open {
    opacity: 1;
    visibility: visible;
}

.property-search-sheet_panel {
    background: #ffffff;
    border-radius: 0 0 24px 24px;
    padding: 16px 16px 20px;
    transform: translateY(-16px);
    transition: transform .3s ease;
}

/* `transform: none` once open so the calendar/guest popups (position:
   fixed) are placed against the viewport, not the panel. */
.property-search-sheet.is-open .property-search-sheet_panel {
    transform: none;
}

.property-search-sheet_head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
    color: #071743;
    font-size: 16px;
}

.property-search-sheet_close {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 1px solid #dfe5ec;
    background: #ffffff;
    color: #071743;
    font-size: 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.property-search-sheet .property-search-bar {
    padding: 0;
    border: 0;
}

.property-search-sheet .property-search-bar .booking-form {
    border-radius: 20px;
    padding: 12px;
    box-shadow: none;
}

.property-search-sheet .property-search-bar .booking-form .row {
    flex-wrap: wrap;
}

.property-search-sheet .property-search-bar .form-group,
.property-search-sheet .property-search-bar .form-group:not(:first-child) {
    flex: 1 1 100%;
    border-left: none;
    padding: 10px 0;
    border-bottom: 1px solid #eef2f6;
}

.property-search-sheet .property-search-bar .form-btn {
    flex: 1 1 100%;
    padding-top: 12px;
}

.property-search-sheet .property-search-bar .form-btn .th-btn {
    width: 100%;
    justify-content: center;
}

body.property-sheet-open {
    overflow: hidden;
}

/* Floating "Map" button (mobile), shown once the list covers the map. */
.property-map-toggle {
    position: fixed;
    left: 50%;
    bottom: 22px;
    transform: translate(-50%, 20px);
    z-index: 900;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 44px;
    padding: 0 20px;
    border: 0;
    border-radius: 999px;
    background: #071743;
    color: #ffffff;
    font-size: 14px;
    font-weight: 600;
    box-shadow: 0 8px 24px rgba(7, 23, 67, 0.3);
    opacity: 0;
    visibility: hidden;
    transition: opacity .25s ease, transform .25s ease, visibility .25s;
}

.property-map-toggle.is-visible {
    opacity: 1;
    visibility: visible;
    transform: translate(-50%, 0);
}

@media (max-width: 1199px) {
    .post-type-archive-property .header-logo {
        display: none;
    }
    .post-type-archive-property .header-layout1 .menu-area {
        padding: 8px 0;
    }
    .post-type-archive-property .header-layout1 .menu-area > .container > .row {
        gap: 10px;
    }
    .post-type-archive-property .header-menu-btn {
        height: 44px;
        width: 44px;
        padding: 0;
        justify-content: center;
    }
    .post-type-archive-property .header-menu-btn .header-menu-btn_label {
        display: none !important;
    }

    /* Quick filters: sticky strip under the header, scrolls sideways,
       slides away on scroll-down and back on scroll-up. */
    .property-chips-bar {
        position: sticky;
        top: var(--ph-header-h, 64px);
        z-index: 140;
        background: #ffffff;
        border-bottom: 1px solid #eef1f5;
        transition: transform .3s ease, opacity .3s ease;
    }
    .property-chips-bar.is-hidden {
        transform: translateY(-110%);
        opacity: 0;
    }
    .property-chips-bar .property-chips_track {
        flex-wrap: nowrap;
        overflow-x: auto;
        padding: 10px 16px;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
    }
    .property-chips-bar .property-chips_track::-webkit-scrollbar {
        display: none;
    }

    /* Map first, full height under the header; the results list is a
       rounded white sheet that starts peeking at the bottom and slides
       up over the (sticky) map as you scroll. */
    .property-results {
        display: flex !important;
        flex-direction: column;
    }
    .property-results_map {
        order: 1;
        position: sticky !important;
        top: var(--ph-header-h, 64px) !important;
        height: calc(100vh - var(--ph-header-h, 64px) - 92px) !important;
        padding: 0 !important;
        margin-top: calc(-1 * var(--ph-chips-h, 53px));
        z-index: 1;
    }
    #property-map {
        border-radius: 0;
        box-shadow: none;
        height: 100%;
    }
    .property-results_list {
        order: 2;
        position: relative;
        z-index: 2;
        background: #ffffff;
        border-radius: 24px 24px 0 0;
        margin-top: -24px;
        padding: 18px 16px 100px !important;
        box-shadow: 0 -10px 30px rgba(7, 23, 67, 0.12);
        min-height: calc(100vh - var(--ph-header-h, 64px));
    }
    .property-results_list::before {
        content: "";
        display: block;
        width: 40px;
        height: 4px;
        border-radius: 2px;
        background: #d5dbe3;
        margin: -6px auto 16px;
    }
    .property-results_heading {
        text-align: center;
        padding: 0 0 6px;
        margin-bottom: 18px;
    }
    .property-results_heading h1 {
        font-size: 20px;
    }
}

/* Desktop chips: one row, scroll sideways instead of wrapping. */
@media (min-width: 1200px) {
    .property-results_list > .d-xl-block .property-chips_track {
        flex-wrap: nowrap;
        overflow-x: auto;
        padding-bottom: 6px;
        scrollbar-width: none;
    }
    .property-results_list > .d-xl-block .property-chips_track::-webkit-scrollbar {
        display: none;
    }
}

@media (max-width: 1199px) {
    /* Header row must never overflow the viewport (it was widening the
       page and breaking fixed-position layers). */
    .post-type-archive-property .header-layout1 .menu-area > .container > .row {
        flex-wrap: nowrap;
        margin-left: 0;
        margin-right: 0;
    }
    .post-type-archive-property .header-layout1 .menu-area > .container > .row > .col {
        min-width: 0;
        flex: 1 1 auto;
        padding-left: 0;
        padding-right: 0;
    }
    .post-type-archive-property .header-layout1 .menu-area > .container > .row > .col-auto {
        flex: 0 0 auto;
        padding-left: 0;
        padding-right: 0;
    }
    .property-mobile-bar_pill {
        flex: 1 1 0;
        min-width: 0;
        overflow: hidden;
    }
    /* Map column: stretch to full width in the column flex layout. */
    .property-results {
        align-items: stretch;
    }
    .property-results_map,
    #property-map {
        width: 100%;
    }
}

/* Map card docked at the bottom of the map on phones/tablets: a padded
   horizontal card with a rounded photo, title clear of the close button,
   and sitting above the results sheet's rounded top. */
.property-map-card.is-docked {
    position: absolute;
    left: 12px;
    right: 12px;
    bottom: 40px;
    top: auto;
    width: auto;
    max-width: 560px;
    margin: 0 auto;
    transform: none;
    display: flex;
    align-items: stretch;
    gap: 12px;
    padding: 10px;
    border-radius: 18px;
    box-shadow: 0 12px 32px rgba(7, 23, 67, 0.18), 0 0 0 1px rgba(7, 23, 67, 0.04);
    z-index: 5;
    animation: property-card-up .28s cubic-bezier(.2,.8,.2,1);
}

.property-map-card.is-docked .property-map-card_img {
    flex: 0 0 116px;
    width: 116px;
    height: auto;
    min-height: 116px;
    align-self: stretch;
    border-radius: 12px;
    object-fit: cover;
}

.property-map-card.is-docked .property-map-card_body {
    flex: 1 1 auto;
    min-width: 0;
    padding: 2px 36px 2px 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 4px;
}

.property-map-card.is-docked .property-map-card_title {
    font-size: 15px;
    line-height: 1.3;
    margin: 0;
    -webkit-line-clamp: 2;
}

.property-map-card.is-docked .property-map-card_meta {
    font-size: 12.5px;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.property-map-card.is-docked .property-map-card_rating {
    font-size: 12px;
    margin: 0;
}

.property-map-card.is-docked .property-map-card_price {
    font-size: 14px;
    margin-top: 2px;
}

.property-map-card.is-docked .property-map-card_price strong {
    font-size: 17px;
}

.property-map-card.is-docked .property-map-card_close {
    top: 10px;
    right: 10px;
    width: 28px;
    height: 28px;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    font-size: 15px;
    background: #f1f5f9;
    box-shadow: none;
    z-index: 2;
}

.property-map-card.is-docked .property-map-card_close:hover {
    background: #e3f4fc;
}

@keyframes property-card-up {
    from { transform: translateY(14px); opacity: 0; }
    to   { transform: translateY(0); opacity: 1; }
}

@media (max-width: 400px) {
    .property-map-card.is-docked .property-map-card_img {
        flex-basis: 100px;
        width: 100px;
        min-height: 100px;
    }
    .property-map-card.is-docked .property-map-card_title {
        font-size: 14px;
    }
}

/* ---- Option picker (destination / sort), badges, beach distance,
   book-direct strip ---- */
.op-popup {
    padding: 8px;
    min-width: 260px;
    width: max(100%, 280px);
}

.op-list {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.op-row {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 11px 12px;
    border: 0;
    border-radius: 12px;
    background: transparent;
    color: #071743;
    text-align: left;
    font-family: inherit;
    cursor: pointer;
    transition: background .15s;
}

.op-row:hover {
    background: #eef6fb;
}

.op-row.is-active {
    background: #e3f4fc;
}

.op-icon {
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: #f1f5f9;
    color: #071743;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
}

.op-row.is-active .op-icon {
    background: #071743;
    color: #ffffff;
}

.op-main {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1 1 auto;
}

.op-label {
    font-size: 15px;
    font-weight: 600;
    line-height: 1.25;
}

.op-sub {
    font-size: 12px;
    color: #6e7787;
}

.op-check {
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
}

.op-row.is-active .op-check:before {
    content: "\f00c";
    font-family: "Font Awesome 6 Pro";
    font-weight: 900;
    font-size: 12px;
    color: #071743;
}

.op-display {
    cursor: pointer;
}

.property-search-bar .op-display-text {
    display: block;
    font-weight: 700;
    color: #071743;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Sort control: pill at the top-right of the heading. */
.property-results_heading {
    position: relative;
}

.property-sort {
    position: absolute;
    right: 0;
    top: 14px;
    margin: 0;
}

.property-sort_btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 40px;
    padding: 0 14px;
    border: 1px solid #dfe5ec;
    border-radius: 999px;
    background: #ffffff;
    color: #071743;
    font-family: inherit;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    transition: border-color .2s, box-shadow .2s;
}

.property-sort_btn:hover {
    border-color: #071743;
    box-shadow: 0 3px 10px rgba(7, 23, 67, 0.08);
}

.property-sort_chev {
    font-size: 11px;
    opacity: .7;
}

.property-sort .op-popup {
    left: auto;
    right: 0;
    width: 260px;
}

.property-results_heading h1,
.property-results_count {
    padding-right: 220px;
}

/* Card badges on the photo. */
.property-result-card .tour-box_img {
    position: relative;
}

.property-badges {
    position: absolute;
    top: 12px;
    left: 12px;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    z-index: 2;
    pointer-events: none;
}

.property-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.94);
    color: #071743;
    font-size: 12px;
    font-weight: 600;
    line-height: 1;
    box-shadow: 0 2px 8px rgba(7, 23, 67, 0.12);
}

.property-badge i {
    font-size: 12px;
}

/* Beach distance beside the location line. */
.property-card-beach {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-left: 10px;
    padding-left: 10px;
    border-left: 1px solid #dfe5ec;
    color: #1CA8CB;
    font-weight: 600;
}

/* Why-book-direct strip. */
.book-direct {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 22px;
    padding: 12px 16px;
    margin: 0 0 22px;
    border: 1px solid #e3f4fc;
    background: #f3fbfe;
    border-radius: 16px;
}

.book-direct_item {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    font-size: 13px;
    font-weight: 600;
    color: #071743;
}

.book-direct_item i {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #ffffff;
    color: #1CA8CB;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    box-shadow: 0 1px 4px rgba(7, 23, 67, 0.08);
}

@media (max-width: 1199px) {
    .property-sort {
        position: static;
        display: flex;
        justify-content: center;
        margin: 10px 0 0;
    }
    .property-results_heading h1,
    .property-results_count {
        padding-right: 0;
    }
    .property-sort .op-popup {
        right: auto;
    }
    .book-direct {
        flex-direction: column;
        gap: 8px;
        padding: 12px 14px;
    }
}

@media (max-width: 1199px) {
    .property-results_heading {
        display: flex;
        flex-direction: column;
    }
    .property-sort {
        order: 3;
        margin: 12px 0 0;
    }
    .property-sort .op-popup {
        left: 50%;
        right: auto;
    }
}

/* Tablet: cap the header search pill and center it (and its text). */
@media (min-width: 576px) and (max-width: 1199px) {
    .property-mobile-bar {
        justify-content: center;
    }
    .property-mobile-bar_pill {
        flex: 0 1 460px;
        max-width: 460px;
        justify-content: center;
        margin: 0 auto;
    }
    .property-mobile-bar_text {
        align-items: center;
        text-align: center;
    }
    .property-mobile-bar_back {
        margin-right: auto;
    }
}

/* Tablet: anchor the pill to the exact center of the header row. */
@media (min-width: 576px) and (max-width: 1199px) {
    /* Anchor to the header's inner container (not the full-width bar) so
       the pill's width is measured against the same box that holds the
       back arrow and menu icon, whatever the viewport. */
    .post-type-archive-property .header-layout1 .menu-area > .container {
        position: relative;
    }
    .property-mobile-bar_pill {
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        width: min(460px, calc(100% - 170px));
        margin: 0;
    }
}

/* Small desktops (1200–1399px): free room in the header pill so the
   destination never truncates — icon-only Menu button, wider Destination. */
@media (min-width: 1200px) and (max-width: 1399px) {
    .post-type-archive-property .header-menu-btn .header-menu-btn_label {
        display: none !important;
    }
    .post-type-archive-property .header-menu-btn {
        width: 46px;
        padding: 0;
        justify-content: center;
    }
    .header-search.property-search-bar .form-group.location-picker {
        flex: 1.4 1 0;
    }
    .header-search.property-search-bar .form-group {
        padding-right: 14px;
    }
    .header-search.property-search-bar .form-group:not(:first-child) {
        padding-left: 14px;
    }
    .header-search.property-search-bar .booking-form {
        max-width: none;
    }
}

/* Beach distance line on the map card (desktop pop-up and docked). */
.property-map-card_beach {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0 0 6px;
    font-size: 12.5px;
    font-weight: 600;
    color: #1CA8CB;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
}

.property-map-card_beach i {
    font-size: 13px;
    flex: 0 0 auto;
}

.property-map-card.is-docked .property-map-card_beach {
    margin: 0;
    font-size: 12px;
}

/* Desktop map card: center the × precisely; keep the meta on one line. */
.property-map-card .property-map-card_close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    line-height: 1;
    font-size: 18px;
    font-weight: 400;
    font-family: Arial, sans-serif;
}

.property-map-card .property-map-card_close:hover {
    background: #ffffff;
}

.property-map-card_meta {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Top info bar on phones/tablets: compact single row, phone + FAQ/Support
   (the template hid all of it below 768px). */
@media (max-width: 991px) {
    .header-layout1 .header-top {
        padding: 4px 0;
    }
    .header-layout1 .header-top .header-links li {
        font-size: 12px;
        margin-right: 12px;
        padding-right: 12px;
    }
    .header-layout1 .header-top .header-links li:last-child {
        margin-right: 0;
        padding-right: 0;
    }
    .header-layout1 .header-top .header-links i {
        font-size: 12px;
        margin-right: 6px;
    }
    .header-layout1 .header-top .header-links a {
        white-space: nowrap;
    }
}

/* Destination menu: wide enough for the longest label on one line. */
@media (min-width: 992px) {
    .location-picker .op-popup {
        min-width: 320px;
    }
}

/* =====================================================================
   Single property page (single-property.php)
   ===================================================================== */
.property-single {
    padding: 24px 0 60px;
    background: #ffffff;
}

.property-single .container {
    max-width: 1180px;
}

.ps-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
}

.ps-back {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 600;
    color: #6e7787;
    margin-bottom: 10px;
}

.ps-back:hover {
    color: #071743;
}

.ps-title {
    font-size: 30px;
    line-height: 1.2;
    color: #071743;
    margin: 0 0 8px;
}

.ps-subline {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    color: #4a5566;
}

.ps-subline i {
    margin-right: 4px;
}

.ps-rating i {
    color: #f5a623;
}

.ps-rating a {
    color: #071743;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.ps-dot {
    color: #b9c2cf;
}

.ps-beach {
    color: #1CA8CB;
    font-weight: 600;
}

.ps-action {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 40px;
    padding: 0 14px;
    border: 1px solid #dfe5ec;
    border-radius: 999px;
    background: #ffffff;
    color: #071743;
    font-size: 13px;
    font-weight: 600;
    font-family: inherit;
    transition: border-color .2s, box-shadow .2s;
}

.ps-action:hover {
    border-color: #071743;
    box-shadow: 0 3px 10px rgba(7, 23, 67, 0.08);
}

/* Photo grid: 1 large + 4 small */
.ps-gallery {
    position: relative;
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    grid-template-rows: 250px 250px;
    gap: 8px;
    border-radius: 20px;
    overflow: hidden;
    margin-bottom: 32px;
}

.ps-gallery_item {
    display: block;
    position: relative;
    overflow: hidden;
    background: #eef2f6;
}

.ps-gallery_track {
    display: contents;
}

.ps-gallery_item:first-child {
    grid-row: 1 / 3;
}

.ps-gallery_item:nth-child(n+6) {
    display: none;
}

.ps-gallery_back,
.ps-gallery_counter {
    display: none;
}

.ps-gallery_item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .5s ease, filter .3s;
}

.ps-gallery_item:hover img {
    transform: scale(1.03);
    filter: brightness(.94);
}

.ps-gallery--few {
    grid-template-columns: 1fr;
    grid-template-rows: 460px;
}

.ps-gallery--few .ps-gallery_item:not(:first-child) {
    display: none;
}

.ps-gallery_badges {
    position: absolute;
    top: 14px;
    left: 14px;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    pointer-events: none;
}

.ps-gallery_all {
    position: absolute;
    right: 16px;
    bottom: 16px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 40px;
    padding: 0 16px;
    border: 1px solid rgba(7, 23, 67, 0.25);
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.95);
    color: #071743;
    font-size: 13px;
    font-weight: 600;
    font-family: inherit;
    box-shadow: 0 4px 14px rgba(7, 23, 67, 0.15);
}

.ps-gallery_all:hover {
    background: #ffffff;
}

/* Two-column layout */
.ps-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    gap: 48px;
    align-items: start;
}

.ps-side {
    position: sticky;
    top: calc(var(--ph-header-h, 80px) + 24px);
}

.ps-section {
    padding: 28px 0;
    border-bottom: 1px solid #eef1f5;
}

.ps-section:last-child {
    border-bottom: 0;
}

.ps-h2 {
    font-size: 22px;
    color: #071743;
    margin: 0 0 16px;
}

.ps-h2 .fa-star {
    color: #f5a623;
    font-size: 18px;
}

.ps-muted {
    color: #6e7787;
    font-size: 14px;
}

.ps-small {
    font-size: 12.5px;
    margin: 10px 0 0;
}

/* Key facts: one quiet line, not boxes */
.ps-facts {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 26px;
    padding: 0 0 22px;
    border-bottom: 1px solid #eef1f5;
}

.ps-fact {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    font-size: 15px;
    color: #2f3a4a;
}

.ps-fact i {
    font-size: 18px;
    color: #1CA8CB;
}

/* Host strip */
.ps-host {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 20px 0;
    border-bottom: 1px solid #eef1f5;
}

.ps-host_logo {
    width: 54px;
    height: 54px;
    object-fit: contain;
    border-radius: 50%;
    border: 1px solid #e9eef3;
    padding: 8px;
    background: #ffffff;
}

.ps-host strong {
    display: block;
    color: #071743;
    font-size: 15px;
}

.ps-host span {
    font-size: 13px;
    color: #6e7787;
}

/* Description */
.ps-desc {
    color: #4a5566;
    font-size: 15px;
    line-height: 1.75;
}

.ps-desc[data-collapsed] {
    max-height: 340px;
    overflow: hidden;
    position: relative;
}

.ps-desc[data-collapsed]:after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 90px;
    background: linear-gradient(rgba(255, 255, 255, 0), #ffffff);
}

.ps-more {
    margin-top: 10px;
    background: none;
    border: 0;
    padding: 0;
    color: #071743;
    font-weight: 700;
    font-size: 14px;
    text-decoration: underline;
    text-underline-offset: 4px;
    font-family: inherit;
    display: inline-flex;
    gap: 6px;
    align-items: center;
}

/* Amenities */
.ps-amenities {
    list-style: none;
    padding: 0;
    margin: 0 0 18px;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px 24px;
}

.ps-amenities li {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 15px;
    color: #2f3a4a;
}

.ps-amenities li i {
    width: 22px;
    text-align: center;
    font-size: 18px;
    color: #071743;
}

.ps-outline-btn.th-btn.style4 {
    padding: 12px 22px;
}

/* Good to know */
.ps-rules {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px 28px;
}

.ps-rule {
    display: flex;
    gap: 14px;
}

.ps-rule i {
    font-size: 20px;
    color: #1CA8CB;
    width: 24px;
    text-align: center;
    margin-top: 2px;
}

.ps-rule strong {
    display: block;
    color: #071743;
    font-size: 15px;
}

.ps-rule span {
    font-size: 13.5px;
    color: #6e7787;
}

/* Map */
.ps-map {
    height: 360px;
    border-radius: 18px;
    overflow: hidden;
    box-shadow: 0 2px 12px rgba(7, 23, 67, 0.06);
    background: #eef2f6;
    margin-top: 12px;
}

/* Reviews */
.ps-reviews {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 22px 32px;
    margin-bottom: 20px;
}

.ps-review p {
    margin: 10px 0 0;
    color: #4a5566;
    font-size: 14.5px;
    line-height: 1.65;
    display: -webkit-box;
    -webkit-line-clamp: 5;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.ps-reviews--all .ps-review p {
    -webkit-line-clamp: unset;
    display: block;
}

.ps-review_head {
    display: flex;
    align-items: center;
    gap: 12px;
}

.ps-review_avatar {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: #071743;
    color: #ffffff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 16px;
    flex: 0 0 auto;
}

.ps-review_head strong {
    display: block;
    color: #071743;
    font-size: 14.5px;
}

.ps-review_meta {
    font-size: 12px;
    color: #6e7787;
}

.ps-review_meta .fa-star {
    color: #f5a623;
    font-size: 10px;
}

/* Modals */
.ps-modal {
    position: fixed;
    inset: 0;
    z-index: 100000;
    background: rgba(7, 23, 67, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.ps-modal[hidden] {
    display: none;
}

.ps-modal_panel {
    background: #ffffff;
    border-radius: 20px;
    width: min(760px, 100%);
    max-height: 86vh;
    overflow-y: auto;
    padding: 20px 26px 26px;
    box-shadow: 0 24px 60px rgba(7, 23, 67, 0.3);
}

.ps-modal_head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 18px;
    font-size: 18px;
    color: #071743;
}

.ps-modal_close {
    width: 34px;
    height: 34px;
    border: 0;
    border-radius: 50%;
    background: #f1f5f9;
    color: #071743;
    font-size: 22px;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: Arial, sans-serif;
}

.ps-amenities--all {
    margin: 0;
}

.ps-reviews--all {
    grid-template-columns: 1fr;
    margin: 0;
}

body.ps-modal-open {
    overflow: hidden;
}

/* Booking card */
.ps-book {
    border: 1px solid #e3e8ee;
    border-radius: 20px;
    padding: 22px;
    box-shadow: 0 10px 40px rgba(7, 23, 67, 0.10);
    background: #ffffff;
}

.ps-book_price {
    display: flex;
    align-items: baseline;
    gap: 6px;
    flex-wrap: wrap;
    margin-bottom: 16px;
    color: #4a5566;
}

.ps-book_price strong {
    font-size: 26px;
    color: #071743;
}

.ps-book_rating {
    margin-left: auto;
    font-size: 13px;
}

.ps-book_rating i {
    color: #f5a623;
}

.ps-form_grid {
    border: 1px solid #cfd6e0;
    border-radius: 14px;
    overflow: hidden;
    margin-bottom: 14px;
}

.ps-field {
    position: relative;
}

.ps-field + .ps-field {
    border-top: 1px solid #cfd6e0;
}

.ps-field_inner {
    padding: 10px 14px;
    cursor: pointer;
    transition: background .15s;
}

.ps-field_inner:hover {
    background: #f6f9fc;
}

.ps-field_inner label {
    display: block;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #071743;
    margin: 0 0 2px;
    cursor: pointer;
}

.ps-field .rc-display-text,
.ps-field .gp-display-text {
    font-size: 14px;
    font-weight: 600;
    width: auto;
}

.ps-field .bw-popup {
    left: 0;
    right: auto;
}

.ps-reserve.th-btn {
    width: 100%;
    justify-content: center;
    padding: 15px 20px;
    font-size: 15px;
}

.ps-reserve.th-btn:disabled {
    opacity: .55;
    cursor: not-allowed;
}

.ps-book_note {
    text-align: center;
    font-size: 12.5px;
    color: #6e7787;
    margin: 10px 0 0;
}

.ps-quote {
    margin: 0 0 14px;
    font-size: 14px;
    color: #2f3a4a;
}

.ps-quote:empty {
    display: none;
}

.ps-quote p {
    margin: 0 0 4px;
}

.ps-quote.is-error p {
    color: #c0392b;
}

.ps-quote.is-hint p,
.ps-quote.is-loading p {
    color: #6e7787;
}

.ps-quote_row {
    display: flex;
    justify-content: space-between;
    padding: 5px 0;
}

.ps-quote_total {
    border-top: 1px solid #e3e8ee;
    margin-top: 6px;
    padding-top: 12px;
    font-weight: 700;
    color: #071743;
    font-size: 15px;
}

.ps-quote_note {
    font-size: 12.5px;
    color: #1CA8CB;
    font-weight: 600;
    margin-top: 6px;
}

.ps-book_perks {
    list-style: none;
    padding: 16px 0 0;
    margin: 16px 0 0;
    border-top: 1px solid #eef1f5;
    font-size: 13px;
    color: #4a5566;
}

.ps-book_perks li {
    display: flex;
    gap: 10px;
    align-items: center;
    padding: 4px 0;
}

.ps-book_perks i {
    color: #1CA8CB;
    width: 18px;
    text-align: center;
}

/* Similar homes */
.ps-similar {
    border-bottom: 0;
    padding-top: 40px;
}

.ps-similar_grid {
    grid-template-columns: repeat(3, 1fr);
}

/* Mobile sticky bar */
.ps-mobilebar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 900;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
    background: #ffffff;
    border-top: 1px solid #e3e8ee;
    box-shadow: 0 -8px 30px rgba(7, 23, 67, 0.12);
}

.ps-mobilebar_price strong {
    font-size: 18px;
    color: #071743;
}

.ps-mobilebar_price span {
    font-size: 13px;
    color: #6e7787;
}

.ps-mobilebar_dates {
    display: block;
    font-size: 12px;
    color: #071743;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.ps-mobilebar_btn.th-btn {
    padding: 13px 20px;
    white-space: nowrap;
}

.single-property .scroll-top {
    display: none !important;
}

@media (max-width: 1199px) {
    .ps-layout {
        grid-template-columns: minmax(0, 1fr) 340px;
        gap: 32px;
    }
}

@media (max-width: 991px) {
    .property-single {
        padding: 12px 0 110px;
    }
    .ps-title {
        font-size: 24px;
    }
    .ps-head_actions {
        display: none;
    }
    /* Phones/tablets: edge-to-edge swipeable carousel */
    .ps-gallery {
        display: block;
        margin: -12px -16px 18px;
        border-radius: 0 0 20px 20px;
        height: 300px;
    }
    .ps-gallery_track {
        display: flex;
        height: 100%;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
    }
    .ps-gallery_track::-webkit-scrollbar {
        display: none;
    }
    .ps-gallery_item,
    .ps-gallery_item:first-child,
    .ps-gallery_item:nth-child(n+6) {
        display: block;
        flex: 0 0 100%;
        height: 100%;
        scroll-snap-align: start;
    }
    .ps-gallery_item:hover img {
        transform: none;
        filter: none;
    }
    .ps-gallery_back {
        position: absolute;
        top: 14px;
        left: 14px;
        z-index: 3;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        background: rgba(255, 255, 255, 0.95);
        color: #071743;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        font-size: 16px;
        box-shadow: 0 2px 8px rgba(7, 23, 67, 0.2);
    }
    .ps-gallery_badges {
        top: auto;
        bottom: 14px;
        left: 14px;
    }
    .ps-gallery_counter {
        position: absolute;
        right: 14px;
        bottom: 14px;
        z-index: 3;
        display: inline-block;
        padding: 5px 10px;
        border-radius: 8px;
        background: rgba(7, 23, 67, 0.75);
        color: #ffffff;
        font-size: 12px;
        font-weight: 600;
    }
    .ps-back {
        display: none;
    }
    .ps-head {
        margin-top: 4px;
    }
    .ps-layout {
        grid-template-columns: 1fr;
        gap: 0;
    }
    .ps-side {
        position: static;
        margin-top: 24px;
    }
    .ps-facts {
        display: none;
    }
    .ps-amenities,
    .ps-rules,
    .ps-reviews {
        grid-template-columns: 1fr;
    }
    .ps-similar_grid {
        grid-template-columns: 1fr;
    }
    .ps-map {
        height: 280px;
    }
    .ps-h2 {
        font-size: 20px;
    }
}

/* Sticky in-page nav (appears once the gallery scrolls away). */
.ps-subnav {
    position: sticky;
    top: var(--ph-header-h, 64px);
    z-index: 150;
    margin: 0 -9999px;
    padding: 0 9999px;
    background: #ffffff;
    border-bottom: 1px solid #eef1f5;
    box-shadow: 0 6px 20px rgba(7, 23, 67, 0.06);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-6px);
    transition: opacity .2s, transform .2s, visibility .2s;
    height: 0;
    overflow: hidden;
}

.ps-subnav.is-visible {
    opacity: 1;
    visibility: visible;
    transform: none;
    height: auto;
    overflow: visible;
}

.ps-subnav_inner {
    display: flex;
    align-items: center;
    gap: 26px;
    height: 60px;
    padding: 0;
}

.ps-subnav a {
    font-size: 14px;
    font-weight: 600;
    color: #071743;
    padding: 20px 0;
    border-bottom: 2px solid transparent;
}

.ps-subnav a:hover {
    border-bottom-color: #071743;
}

.ps-subnav_price {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 14px;
    font-size: 14px;
    color: #4a5566;
}

.ps-subnav_price strong {
    font-size: 17px;
    color: #071743;
}

.ps-subnav_btn.th-btn {
    padding: 11px 18px;
    font-size: 13px;
}

/* Highlights */
.ps-highlights {
    display: grid;
    gap: 18px;
    padding: 22px 0;
    border-bottom: 1px solid #eef1f5;
}

.ps-highlight {
    display: flex;
    gap: 16px;
    align-items: flex-start;
}

.ps-highlight i {
    font-size: 24px;
    color: #071743;
    width: 30px;
    text-align: center;
    margin-top: 2px;
}

.ps-highlight strong {
    display: block;
    color: #071743;
    font-size: 15.5px;
}

.ps-highlight span {
    color: #6e7787;
    font-size: 14px;
}

@media (max-width: 991px) {
    .ps-subnav {
        display: none;
    }
}

/* Booking form: drop the homepage search-bar chrome inherited from
   .booking-form (navy frame, padding, background). */
.ps-book .booking-form.ps-form {
    border: 0;
    padding: 0;
    margin: 0;
    background: transparent;
    box-shadow: none;
    border-radius: 0;
}

.ps-book .booking-form.ps-form:before,
.ps-book .booking-form.ps-form:after {
    display: none;
}

/* Things to know */
.ps-know {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
}

.ps-know_col i {
    font-size: 24px;
    color: #071743;
    display: block;
    margin-bottom: 12px;
}

.ps-know_col strong {
    display: block;
    color: #071743;
    font-size: 15.5px;
    margin-bottom: 6px;
}

.ps-know_col p {
    margin: 0;
    font-size: 13.5px;
    color: #6e7787;
    line-height: 1.6;
}

@media (max-width: 991px) {
    .ps-know {
        grid-template-columns: 1fr;
        gap: 20px;
    }
    /* Reviews swipe sideways on phones */
    .ps-reviews:not(.ps-reviews--all) {
        display: flex;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        gap: 14px;
        margin: 0 -16px 18px;
        padding: 4px 16px 10px;
        scrollbar-width: none;
    }
    .ps-reviews:not(.ps-reviews--all)::-webkit-scrollbar {
        display: none;
    }
    .ps-reviews:not(.ps-reviews--all) .ps-review {
        flex: 0 0 82%;
        scroll-snap-align: start;
        border: 1px solid #e9eef3;
        border-radius: 16px;
        padding: 16px;
        background: #ffffff;
    }
    .ps-reviews:not(.ps-reviews--all) .ps-review p {
        -webkit-line-clamp: 6;
    }
    .ps-title {
        font-size: 22px;
        line-height: 1.25;
    }
}

@media (max-width: 991px) {
    /* "More homes" swipe sideways on phones */
    .ps-similar_grid {
        display: flex;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        gap: 14px;
        margin: 0 -16px;
        padding: 4px 16px 12px;
        scrollbar-width: none;
    }
    .ps-similar_grid::-webkit-scrollbar {
        display: none;
    }
    .ps-similar_grid .property-result-card {
        flex: 0 0 78%;
        scroll-snap-align: start;
    }
}

.ps-mobilebar {
    transition: transform .25s ease;
}
.ps-mobilebar.is-hidden {
    transform: translateY(110%);
}

/* Review attribution */
.ps-reviews_source {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: -6px 0 18px;
    font-size: 13.5px;
    color: #6e7787;
}

.ps-reviews_source .airbnb-mark {
    color: #FF385C;
}

.ps-review_src {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-left: 6px;
    padding: 2px 7px;
    border-radius: 999px;
    background: #fff1f3;
    color: #FF385C;
    font-size: 11px;
    font-weight: 600;
}

.ps-kicker {
    display: none;
}

.ps-gallery_share {
    display: none;
}

/* ---- Phones/tablets: immersive top (no site header), photo first ---- */
@media (max-width: 991px) {
    .single-property .th-header,
    .single-property .th-menu-wrapper {
        display: none !important;
    }
    .property-single {
        padding-top: 0;
    }
    .property-single > .container {
        display: flex;
        flex-direction: column;
    }
    .property-single .ps-gallery {
        order: -1;
        margin: 0 -16px 0;
        height: 360px;
        border-radius: 0;
    }
    .ps-gallery_back,
    .ps-gallery_share {
        position: absolute;
        top: calc(14px + env(safe-area-inset-top));
        z-index: 3;
        width: 40px;
        height: 40px;
        border-radius: 50%;
        border: 0;
        background: rgba(255, 255, 255, 0.95);
        color: #071743;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        font-size: 16px;
        box-shadow: 0 2px 8px rgba(7, 23, 67, 0.2);
    }
    .ps-gallery_back {
        left: 14px;
    }
    .ps-gallery_share {
        right: 14px;
    }
    .ps-gallery_badges {
        bottom: 40px;
    }
    .ps-gallery_counter {
        bottom: 40px;
    }
    /* Title sheet slides up over the photo */
    .ps-head {
        position: relative;
        z-index: 2;
        margin: -24px -16px 0;
        padding: 22px 16px 6px;
        background: #ffffff;
        border-radius: 24px 24px 0 0;
        text-align: center;
        display: block;
    }
    .ps-title {
        font-size: 24px;
        line-height: 1.22;
        margin-bottom: 10px;
    }
    .ps-kicker {
        display: block;
        margin: 0 0 8px;
        font-size: 14px;
        color: #4a5566;
    }
    .ps-subline {
        justify-content: center;
    }
    .ps-back {
        display: none;
    }
}

/* Review avatar: Airbnb mark */
.ps-review_avatar {
    background: #fff1f3;
    color: #FF385C;
}

/* Phones: full review text and proper side padding on swipe rows */
@media (max-width: 991px) {
    .ps-reviews:not(.ps-reviews--all),
    .ps-similar_grid {
        margin-left: calc(-1 * var(--bs-gutter-x, 12px));
        margin-right: calc(-1 * var(--bs-gutter-x, 12px));
        padding-left: var(--bs-gutter-x, 12px) !important;
        padding-right: var(--bs-gutter-x, 12px) !important;
        scroll-padding-left: var(--bs-gutter-x, 12px);
        align-items: flex-start;
    }
    .ps-reviews:not(.ps-reviews--all) .ps-review p {
        display: block;
        -webkit-line-clamp: unset;
        overflow: visible;
    }
    .ps-reviews:not(.ps-reviews--all) .ps-review {
        flex-basis: 84%;
        padding: 18px;
    }
    .ps-similar_grid .property-result-card {
        flex-basis: 80%;
    }
}

@media (max-width: 991px) {
    .ps-similar_grid .tour-action {
        gap: 10px;
    }
    .ps-similar_grid .tour-action > span {
        white-space: nowrap;
    }
    .ps-similar_grid .tour-action .th-btn {
        white-space: nowrap;
        padding: 11px 16px;
        font-size: 13px;
    }
}

/* Host mark */
.ps-host_logo {
    padding: 0;
    border: 0;
    object-fit: cover;
}

/* Booking card: flat, no shadow */
.ps-book {
    box-shadow: none;
    border-color: #dfe5ec;
}

/* Reviews: equal-height cards, clamped text + Show more */
.ps-reviews:not(.ps-reviews--all) .ps-review {
    display: flex;
    flex-direction: column;
}

.ps-reviews:not(.ps-reviews--all) .ps-review p {
    display: -webkit-box;
    -webkit-line-clamp: 5;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.ps-review_more {
    align-self: flex-start;
    margin-top: 8px;
    padding: 0;
    border: 0;
    background: none;
    color: #071743;
    font-weight: 700;
    font-size: 13.5px;
    text-decoration: underline;
    text-underline-offset: 4px;
    font-family: inherit;
}

@media (max-width: 991px) {
    .ps-reviews:not(.ps-reviews--all) {
        align-items: stretch;
    }
    .ps-reviews:not(.ps-reviews--all) .ps-review p {
        display: -webkit-box;
        -webkit-line-clamp: 6;
        overflow: hidden;
    }
}

/* ---- Mobile price sheet ---- */
.ps-sheet {
    position: fixed;
    inset: 0;
    z-index: 99000;
    background: rgba(7, 23, 67, 0.45);
    display: flex;
    align-items: flex-end;
    opacity: 0;
    transition: opacity .2s ease;
}

.ps-sheet[hidden] {
    display: none;
}

.ps-sheet.is-open {
    opacity: 1;
}

.ps-sheet_panel {
    position: relative;
    width: 100%;
    background: #ffffff;
    border-radius: 24px 24px 0 0;
    padding: 26px 20px calc(20px + env(safe-area-inset-bottom));
    transform: translateY(24px);
    transition: transform .25s cubic-bezier(.2,.8,.2,1);
    max-height: 88vh;
    overflow-y: auto;
}

.ps-sheet.is-open .ps-sheet_panel {
    transform: none;
}

.ps-sheet_close {
    position: absolute;
    top: 14px;
    right: 14px;
    width: 34px;
    height: 34px;
    border: 0;
    border-radius: 50%;
    background: #f1f5f9;
    color: #071743;
    font-size: 22px;
    line-height: 1;
    font-family: Arial, sans-serif;
}

.ps-sheet_title {
    font-size: 22px;
    color: #071743;
    margin: 4px 0 18px;
}

.ps-sheet_quote {
    padding-bottom: 14px;
    border-bottom: 1px solid #eef1f5;
    margin-bottom: 6px;
    font-size: 14.5px;
    color: #2f3a4a;
}

.ps-sheet_quote .ps-quote_row {
    padding: 6px 0;
}

.ps-sheet_row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 14px 0;
    border-bottom: 1px solid #eef1f5;
}

.ps-sheet_row strong {
    display: block;
    color: #071743;
    font-size: 15px;
}

.ps-sheet_row span {
    font-size: 14px;
    color: #4a5566;
}

.ps-sheet_change {
    flex: 0 0 auto;
    height: 40px;
    padding: 0 18px;
    border: 0;
    border-radius: 12px;
    background: #f1f5f9;
    color: #071743;
    font-weight: 600;
    font-size: 14px;
    font-family: inherit;
}

.ps-sheet_reserve.th-btn {
    width: 100%;
    justify-content: center;
    padding: 16px 20px;
    margin-top: 18px;
    font-size: 15px;
}

.ps-sheet_reserve.th-btn:disabled {
    opacity: .55;
}

/* Share panel */
.ps-share_panel {
    width: min(460px, 100%);
    padding: 20px 22px 24px;
}

.ps-share_preview {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 0 0 18px;
    border-bottom: 1px solid #eef1f5;
    margin-bottom: 18px;
}

.ps-share_preview img {
    width: 72px;
    height: 72px;
    border-radius: 12px;
    object-fit: cover;
    flex: 0 0 72px;
}

.ps-share_preview strong {
    display: block;
    color: #071743;
    font-size: 15px;
    margin-bottom: 2px;
}

.ps-share_preview span {
    font-size: 13px;
    color: #6e7787;
}

.ps-share_grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
}

.ps-share_btn {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 13px 16px;
    border: 1px solid #dfe5ec;
    border-radius: 12px;
    background: #ffffff;
    color: #071743;
    font-size: 14px;
    font-weight: 600;
    font-family: inherit;
    text-align: left;
    transition: border-color .2s, background .2s;
}

.ps-share_btn:hover {
    border-color: #071743;
    background: #f6f9fc;
    color: #071743;
}

.ps-share_btn i {
    width: 22px;
    text-align: center;
    font-size: 18px;
}

.ps-share_btn .fa-whatsapp { color: #25D366; }
.ps-share_btn .fa-facebook { color: #1877F2; }

/* Bottom bar price is a button that opens the sheet */
.ps-mobilebar_price {
    background: none;
    border: 0;
    padding: 0;
    text-align: left;
    font-family: inherit;
    min-width: 0;
}

.ps-mobilebar_dates {
    text-decoration-color: #9aa5b5;
}

/* Sheet polish */
.ps-sheet_panel {
    padding-top: 30px;
}

.ps-sheet_handle {
    position: absolute;
    top: 10px;
    left: 50%;
    width: 40px;
    height: 4px;
    margin-left: -20px;
    border-radius: 2px;
    background: #d5dbe3;
}

.ps-sheet_title {
    font-size: 20px;
}

.ps-sheet_quote {
    font-size: 15px;
    padding-bottom: 8px;
    margin-bottom: 4px;
}

.ps-sheet_quote .ps-quote_row {
    padding: 8px 0;
}

.ps-sheet_quote .ps-quote_total {
    font-size: 18px;
    padding-top: 14px;
    margin-top: 8px;
}

.ps-sheet_quote .ps-quote_note {
    margin: 6px 0 4px;
}

.ps-sheet_row {
    padding: 16px 0;
}

.ps-sheet_row strong {
    font-size: 16px;
    margin-bottom: 2px;
}

.ps-sheet_change {
    height: 38px;
    padding: 0 16px;
    border: 1px solid #cfd6e0;
    background: #ffffff;
    border-radius: 999px;
    font-size: 13.5px;
    transition: border-color .2s, background .2s;
}

.ps-sheet_change:active,
.ps-sheet_change:hover {
    border-color: #071743;
    background: #f6f9fc;
}

/* Never let the page grow wider than the screen: grid tracks must be
   minmax(0, …) so horizontal scrollers can't stretch the column. */
.ps-layout {
    grid-template-columns: minmax(0, 1fr) 380px;
}

.ps-main,
.ps-side {
    min-width: 0;
}

.property-single {
    max-width: 100%;
    overflow-x: clip;
}

.property-single > .container {
    max-width: min(1180px, 100%);
    overflow-x: clip;
}

@media (max-width: 1199px) {
    .ps-layout {
        grid-template-columns: minmax(0, 1fr) 340px;
    }
}

@media (max-width: 991px) {
    .ps-layout {
        grid-template-columns: minmax(0, 1fr);
    }
    .ps-reviews:not(.ps-reviews--all),
    .ps-similar_grid,
    .ps-gallery_track {
        max-width: calc(100vw);
    }
    html, body {
        overflow-x: hidden;
    }
}

/* Modal header (title + close) stays pinned while the body scrolls. */
.ps-modal_panel {
    padding-top: 0;
}

.ps-modal_head {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #ffffff;
    margin: 0 -26px 14px;
    padding: 18px 26px 14px;
    border-bottom: 1px solid #eef1f5;
}

@media (max-width: 991px) {
    .ps-modal {
        padding: 0;
        align-items: flex-end;
    }
    .ps-modal_panel {
        width: 100%;
        max-height: 92vh;
        border-radius: 22px 22px 0 0;
        padding-left: 20px;
        padding-right: 20px;
        padding-bottom: calc(24px + env(safe-area-inset-bottom));
    }
    .ps-modal_head {
        margin: 0 -20px 14px;
        padding: 18px 20px 14px;
    }
}

/* Single property: no site header on any device; slim top bar on desktop. */
.single-property .th-header,
.single-property .th-menu-wrapper {
    display: none !important;
}

.ps-topbar {
    background: #ffffff;
    border-bottom: 1px solid #eef1f5;
}

.ps-topbar_inner {
    max-width: 1180px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 76px;
}

.ps-topbar_logo img {
    height: 44px;
    width: auto;
    display: block;
}

.ps-topbar_links {
    display: flex;
    align-items: center;
    gap: 28px;
}

.ps-topbar_links a {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    font-weight: 600;
    color: #071743;
}

.ps-topbar_links a:hover {
    color: #1CA8CB;
}

.single-property .ps-subnav {
    top: 0;
}

.single-property .ps-side {
    top: 24px;
}

.ps-head {
    margin-top: 6px;
}

/* One CTA at a time on desktop: the bar's price/button waits until the
   booking card is off screen; while both are visible the card sits below
   the bar instead of under it. */
@media (min-width: 992px) {
    .ps-subnav_price {
        visibility: visible;
        opacity: 1;
    }
    .single-property .ps-side {
        top: 90px;
    }
}

/* Booking card fields: don't clip the pickers; round the field box itself. */
.ps-form_grid {
    overflow: visible;
}

.ps-field:first-child .ps-field_inner {
    border-radius: 14px 14px 0 0;
}

.ps-field:last-child .ps-field_inner {
    border-radius: 0 0 14px 14px;
}

/* Desktop: pickers open leftwards from the card so two months fit. */
@media (min-width: 992px) {
    .ps-field .bw-popup {
        left: auto;
        right: 0;
        top: calc(100% + 10px);
    }
    .ps-field .rc-popup {
        width: 700px;
        padding: 24px 26px 20px;
    }
    .ps-field .gp-popup {
        width: 360px;
    }
}

/* Calendar summary header */
.rc-summary {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin: 0 0 14px;
}

.rc-summary_title {
    font-size: 18px;
    color: #071743;
}

.rc-summary_sub {
    font-size: 13px;
    color: #6e7787;
}

@media (max-width: 991px) {
    .rc-summary {
        display: none;   /* the sheet header already names the step */
    }
}

/* Desktop: pickers open beside the booking card (to its left), aligned to
   the top of the card, so they never fall below the fold. */
@media (min-width: 992px) {
    .ps-field .bw-popup {
        left: auto;
        right: calc(100% + 18px);
        top: -70px;
    }
    .ps-field:last-child .bw-popup {
        top: -130px;
    }
}

/* ---- Desktop booking-card calendar: months share the full panel width ---- */
.rc-footer_note,
.rc-legend {
    display: none;
}

@media (min-width: 992px) {
    .ps-field .rc-popup {
        width: 760px;
        padding: 28px 32px 22px;
    }
    .ps-field .rc-months {
        gap: 44px;
        width: 100%;
    }
    .ps-field .rc-month {
        flex: 1 1 0;
        width: auto;
        min-width: 0;
    }
    .ps-field .rc-day {
        --rc-cell: 42px;
        height: 46px;
        line-height: 46px;
        font-size: 15px;
    }
    .ps-field .rc-day-name {
        font-size: 12px;
        letter-spacing: .04em;
        padding: 8px 0;
    }
    .ps-field .rc-month-header {
        font-size: 16px;
        color: #071743;
    }
    .ps-field .rc-nav-btn {
        width: 38px;
        height: 38px;
    }
    .ps-field .rc-summary {
        padding-bottom: 16px;
        margin-bottom: 18px;
        border-bottom: 1px solid #eef1f5;
    }
    .ps-field .rc-summary_title {
        font-size: 22px;
    }
    .ps-field .rc-hint {
        margin-top: 14px;
    }
    .ps-field .rc-legend {
        display: flex;
        justify-content: center;
        gap: 22px;
        margin-top: 10px;
        font-size: 12.5px;
        color: #6e7787;
    }
    .ps-field .rc-legend span {
        display: inline-flex;
        align-items: center;
        gap: 7px;
    }
    .ps-field .rc-key {
        width: 12px;
        height: 12px;
        border-radius: 50%;
        display: inline-block;
    }
    .ps-field .rc-key--open   { border: 1.5px solid #071743; }
    .ps-field .rc-key--sel    { background: #071743; }
    .ps-field .rc-key--booked { background: #dfe5ec; position: relative; }
    .ps-field .rc-footer_note {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        font-size: 13px;
        font-weight: 600;
        color: #1CA8CB;
    }
    .ps-field .rc-footer {
        margin-top: 16px;
    }
}

/* Booking card: one clear total; breakdown lives behind a tap */
.ps-book .ps-quote .ps-quote_row {
    display: none;
}

.ps-book .ps-quote {
    margin: -4px 0 14px;
}

.ps-book .ps-quote .ps-quote_note {
    margin: 0;
    text-align: center;
    color: #6e7787;
    font-weight: 500;
    font-size: 13px;
}

.ps-book .ps-quote .ps-quote_note i {
    color: #1CA8CB;
}

.ps-book_price.has-total {
    align-items: baseline;
}

.ps-book_total {
    background: none;
    border: 0;
    padding: 0;
    font-family: inherit;
    cursor: pointer;
}

.ps-book_total strong {
    font-size: 28px;
    color: #071743;
    text-decoration: underline;
    text-decoration-thickness: 2px;
    text-underline-offset: 5px;
}

.ps-book_price.has-total > span {
    font-size: 15px;
    color: #4a5566;
}

.ps-price_panel {
    width: min(460px, 100%);
}

.ps-price_body .ps-quote_row {
    display: flex;
    justify-content: space-between;
    padding: 9px 0;
    font-size: 15px;
    color: #2f3a4a;
}

.ps-price_body .ps-quote_total {
    border-top: 1px solid #e3e8ee;
    margin-top: 8px;
    padding-top: 14px;
    font-weight: 700;
    font-size: 18px;
    color: #071743;
}

.ps-price_body .ps-quote_note {
    margin-top: 6px;
    font-size: 13px;
    color: #1CA8CB;
    font-weight: 600;
}

.ps-price_dates {
    display: flex;
    justify-content: space-between;
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid #eef1f5;
    font-size: 15px;
}

.ps-price_dates strong {
    color: #071743;
}

/* ---- Phones/tablets: Dates, Guests, Destination and Sort slide up from
   the bottom as sheets (no dark overlay), same everywhere on the site. ---- */
@media (max-width: 991px) {
    .bw-popup,
    .bw-popup.op-popup,
    .bw-popup.gp-popup,
    .bw-popup.rc-popup {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        top: auto;
        transform: none;
        width: 100%;
        max-width: none;
        max-height: 88vh;
        overflow-y: auto;
        border-radius: 24px 24px 0 0;
        padding: 18px 20px calc(20px + env(safe-area-inset-bottom));
        box-shadow: 0 -12px 40px rgba(7, 23, 67, 0.22);
        animation: bw-sheet-up .28s cubic-bezier(.2, .8, .2, 1);
    }
    .bw-popup::before {
        content: "";
        display: block;
        width: 40px;
        height: 4px;
        border-radius: 2px;
        background: #d5dbe3;
        margin: -4px auto 14px;
    }
    .bw-head {
        margin-top: 0;
    }
    .bw-popup .rc-months {
        flex-direction: column;
    }
    .bw-popup .rc-month {
        width: 100%;
    }
}

@keyframes bw-sheet-up {
    from { transform: translateY(40px); opacity: 0; }
    to   { transform: translateY(0); opacity: 1; }
}

/* ---- Phone/tablet calendar: full-height scrolling months (Airbnb layout, our navy) ---- */
@media (max-width: 991px) {
    .bw-popup.rc-popup.rc-mobile {
        height: 92vh;
        max-height: 92vh;
        padding: 0;
        display: flex;
        flex-direction: column;
        overflow: hidden;
        animation: bw-sheet-up .3s cubic-bezier(.2, .8, .2, 1);
    }
    .rc-mobile::before {
        display: none;
    }
    .rcm-top {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 14px 16px 0 14px;
        flex: 0 0 auto;
    }
    .rcm-close {
        width: 40px;
        height: 40px;
        border: 0;
        border-radius: 50%;
        background: transparent;
        color: #071743;
        font-size: 30px;
        line-height: 1;
        font-family: Arial, sans-serif;
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }
    .rcm-close:active {
        background: #f1f5f9;
    }
    .rcm-clear {
        border: 0;
        background: transparent;
        padding: 8px 4px;
        font-family: inherit;
        font-size: 15px;
        font-weight: 600;
        color: #071743;
        text-decoration: underline;
        text-underline-offset: 3px;
    }
    .rc-mobile .rc-summary {
        display: flex;
        flex: 0 0 auto;
        margin: 6px 0 0;
        padding: 6px 20px 2px;
        border: 0;
    }
    .rc-mobile .rc-summary_title {
        font-size: 26px;
        line-height: 1.2;
        color: #071743;
    }
    .rc-mobile .rc-summary_sub {
        font-size: 15px;
        color: #6e7787;
    }
    .rc-mobile .rc-hint {
        flex: 0 0 auto;
        margin: 0;
        padding: 2px 20px 8px;
        text-align: left;
        font-size: 13px;
        min-height: 22px;
    }
    .rcm-days {
        flex: 0 0 auto;
        display: grid;
        grid-template-columns: repeat(7, 1fr);
        padding: 8px 12px;
        border-bottom: 1px solid #eef1f5;
        text-align: center;
        font-size: 12px;
        font-weight: 600;
        color: #8a94a6;
    }
    .rcm-scroll {
        flex: 1 1 auto;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        padding: 0 12px 28px;
    }
    .rc-mobile .rc-month {
        width: 100%;
    }
    .rc-mobile .rc-day-name {
        display: none;
    }
    .rc-mobile .rc-month-header {
        text-align: left;
        margin: 26px 0 12px 8px;
        font-size: 18px;
        line-height: 1.3;
        color: #071743;
    }
    .rc-mobile .rc-day {
        --rc-cell: 44px;
        height: 48px;
        line-height: 48px;
        font-size: 16px;
    }
    .rcm-foot {
        flex: 0 0 auto;
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        padding: 14px 20px calc(14px + env(safe-area-inset-bottom));
        border-top: 1px solid #eef1f5;
        background: #ffffff;
    }
    .rc-foot_price {
        font-size: 14px;
        color: #6e7787;
        line-height: 1.3;
    }
    .rc-foot_price strong {
        font-size: 20px;
        color: #071743;
    }
    .rc-foot_from {
        color: #6e7787;
    }
    .rcm-save {
        border: 0;
        border-radius: 12px;
        background: #071743;
        color: #ffffff;
        padding: 15px 30px;
        font-family: inherit;
        font-size: 16px;
        font-weight: 600;
    }
    .rcm-save:active {
        background: #0b2266;
    }
}

/* Phones: badges + photo counter sit just above the title sheet's edge */
@media (max-width: 991px) {
    .ps-gallery_badges,
    .ps-gallery_counter {
        bottom: 32px;
    }
}

/* No double-tap-to-zoom on taps (pinch zoom still works); no text
   selection or grey flash when tapping counters quickly. */
html, body, a, button, input, select, label, [role="button"], .bw-popup, .bw-popup *, .ps-sheet, .ps-sheet * {
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
}

.bw-popup,
.ps-sheet_panel,
.ps-mobilebar {
    -webkit-user-select: none;
    user-select: none;
}

/* Price sheet steps aside while a picker sheet is open. */
.ps-sheet_panel {
    transition: transform .25s cubic-bezier(.2,.8,.2,1), opacity .2s ease;
}

.ps-sheet.is-behind .ps-sheet_panel {
    transform: translateY(100%);
    opacity: 0;
    pointer-events: none;
}

/* Phones/tablets: the title sheet overlaps the photo by 24px (this must
   win over the generic .ps-head spacing above), and the badges + counter
   rest ~10px above the sheet's top edge. */
@media (max-width: 991px) {
    .property-single .ps-head {
        margin-top: -24px;
    }
    .ps-gallery_badges,
    .ps-gallery_counter {
        bottom: 34px;
    }
}

.ps-kicker_line {
    display: block;
    text-align: center;
}

.ps-kicker_line + .ps-kicker_line {
    margin-top: 2px;
}

/* Property page sticky bar: flat as well. */
.ps-mobilebar {
    box-shadow: none !important;
}

/* Every form field is at least 16px on phones, so iOS never zooms in. */
@media (max-width: 991px) {
    input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
    select,
    textarea {
        font-size: 16px !important;
    }
}


/* Booking CTAs use the template's own button look (pill + arrow). */
.ps-reserve.th-btn,
.ps-mobilebar_btn.th-btn,
.ps-sheet_reserve.th-btn,
.ps-subnav_btn.th-btn {
    border-radius: 48px;
    text-transform: capitalize;
}

/* Homepage stats section: the palm tree and the van stand right on the line
   where the next (blog) section begins, at every screen size. Neither image
   has empty space at its bottom, so bottom:0 puts wheels/trunks on the line.
   The palm scales from its bottom-left corner so shrinking never lifts it. */
.counter-area .shape-mockup.counter-palm,
.counter-area .shape-mockup.counter-van {
    bottom: 0 !important;
    top: auto !important;
    line-height: 0;
}

.counter-area .shape-mockup.counter-palm {
    transform-origin: left bottom;
}

.counter-area .shape-mockup.counter-palm img,
.counter-area .shape-mockup.counter-van img {
    display: block;
}

/* ---- Homepage hero: one image or one looping video, one H1 ---- */
.aval-hero .hero-slider-1 { position: relative; }
.aval-hero-media { position: absolute; inset: 0; overflow: hidden; background: #071743; }
.aval-hero-media img, .aval-hero-media video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.aval-hero-media video { opacity: 0; transition: opacity .8s ease; }
.aval-hero.is-playing .aval-hero-media video { opacity: 1; }
.aval-hero .hero-style1 .sub-title, .aval-hero .hero-style1 .hero-title, .aval-hero .hero-style1 .btn-group { opacity: 1 !important; visibility: visible !important; transform: none !important; }
.aval-hero-points { list-style: none; display: flex; flex-wrap: wrap; gap: 10px 22px; margin: 26px 0 0; padding: 0; color: #fff; font-size: 15px; font-weight: 600; }
.aval-hero-points li { display: inline-flex; align-items: center; gap: 8px; text-shadow: 0 1px 8px rgba(7, 23, 67, .55); }
.aval-hero-points i { color: #ffd166; font-size: 17px; }
@media (max-width: 767px) { .aval-hero-points { flex-direction: column; gap: 8px; margin-top: 20px; font-size: 14px; } }
.aval-hero-media::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(7,23,67,.55) 0%, rgba(7,23,67,.38) 35%, rgba(7,23,67,.62) 100%); pointer-events: none; }
.aval-hero-media::before { display: none !important; }
.aval-hero .container { position: relative; z-index: 2; }

/* Hero photo slideshow: the photos fade, the headline and buttons never change */
.aval-hero-slide { opacity: 0; animation: avalHeroFade 18s infinite; }
.aval-hero-slide:nth-child(1) { animation-delay: -.9s; }
.aval-hero-slide:nth-child(2) { animation-delay: 5.1s; }
.aval-hero-slide:nth-child(3) { animation-delay: 11.1s; }
@keyframes avalHeroFade { 0% { opacity: 0; } 5% { opacity: 1; } 33% { opacity: 1; } 38% { opacity: 0; } 100% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .aval-hero-slide { animation: none; } .aval-hero-slide:nth-child(1) { opacity: 1; } }

/* Homepage hero: centered, short, two lines at most */
.aval-hero .hero-style1 { text-align: center; max-width: 1000px; margin-left: auto; margin-right: auto; }
.aval-hero .hero-style1 .sub-title { display: block; margin: 0 auto 14px; }
.aval-hero .hero-style1 .hero-title { font-size: clamp(38px, 6.2vw, 92px); line-height: 1.06; margin: 0 auto 30px; max-width: 14em; text-wrap: balance; }
.aval-hero .hero-style1 .btn-group { justify-content: center; }
@media (max-width: 575px) { .aval-hero .hero-style1 .hero-title { font-size: 40px; max-width: 9em; } .aval-hero .hero-style1 .btn-group { flex-direction: column; align-items: center; } }

/* City landing pages */
.city-hero .breadcumb-content { text-align: center; padding: 30px 0; }
.city-hero .breadcumb-title { font-size: clamp(34px, 5vw, 64px); line-height: 1.08; max-width: 16em; margin: 0 auto 14px; text-wrap: balance; }
.city-sub { color: #fff; max-width: 40em; margin: 0 auto 24px; font-size: 18px; }
.city-copy p { font-size: 17px; line-height: 1.75; }
.city-copy h2, .city-copy h3 { margin-top: 28px; }
.city-dist { display: inline-block; font-weight: 600; color: #1CA8CB; margin-bottom: 6px; }
.city-blurb { color: #4b5a78; font-size: 15px; margin: 0 0 10px; }
.city-why i { font-size: 34px; color: #1CA8CB; margin-bottom: 12px; display: block; }
.city-act { display: flex; flex-direction: column; gap: 8px; padding: 22px; border: 1px solid #dbe6f2; border-radius: 16px; background: #fff; color: #071743; text-decoration: none; height: 100%; transition: transform .2s, box-shadow .2s; }
.city-act:hover { transform: translateY(-3px); box-shadow: 0 10px 28px rgba(7,23,67,.1); }
.city-act span { color: #1CA8CB; font-weight: 600; }
.city-cta p { max-width: 34em; margin: 8px auto 22px; }
.city-hero .sub-title, .city-hero .sub-title.style1 { color: #fff !important; text-shadow: 0 1px 8px rgba(7,23,67,.6); }

/* Area pages (under /vacation-rentals/) */
.property-crumbs { margin: 0 0 6px; font-size: 13px; color: #6b7a99; }
.property-crumbs a { color: #1CA8CB; text-decoration: none; }
.property-crumbs i { font-size: 11px; margin: 0 4px; }
.property-results_intro { margin: 4px 0 10px; color: #4b5a78; font-size: 15px; line-height: 1.5; }
.city-content { position: relative; z-index: 2; background: #fff; }
.city-block { padding: 56px 0 8px; }
.city-block:last-child { padding-bottom: 64px; }
.city-review { margin: 0; padding: 24px; border: 1px solid #dbe6f2; border-radius: 16px; background: #fff; height: 100%; display: flex; flex-direction: column; gap: 12px; }
.city-review_stars { color: #f5a623; font-size: 14px; }
.city-review blockquote { margin: 0; color: #071743; line-height: 1.6; font-size: 15.5px; flex: 1; }
.city-review figcaption { display: flex; flex-direction: column; gap: 2px; font-size: 14px; }
.city-review figcaption span { color: #6b7a99; }
.city-review figcaption a { color: #1CA8CB; }
.city-reviews .title-area p { display: flex; gap: 8px; justify-content: center; align-items: center; }

/* Activity guides: drive-time table + callouts */
.act-table-wrap { overflow-x: auto; margin: 18px 0 8px; border: 1px solid #dbe6f2; border-radius: 14px; }
.act-table { width: 100%; border-collapse: collapse; font-size: 15px; min-width: 560px; }
.act-table th, .act-table td { padding: 10px 12px; text-align: center; border-bottom: 1px solid #e8eef6; }
.act-table th:first-child, .act-table td:first-child { text-align: left; font-weight: 600; color: #071743; }
.act-table thead th { background: #e3f4fc; color: #071743; font-size: 13px; }
.act-table tr:last-child td { border-bottom: 0; }
.act-note { font-size: 13.5px; color: #6b7a99; margin: 6px 0 26px; }
.activity-page-content h3 { margin-top: 26px; }
.activity-page-content ul { padding-left: 20px; }
.activity-page-content li { margin-bottom: 6px; }

/* Property page: breadcrumb + What's nearby */
.ps-crumbs { font-size: 13px; color: #6b7a99; margin: 0 0 6px; }
.ps-crumbs a { color: #1CA8CB; text-decoration: none; }
.ps-crumbs i { font-size: 11px; margin: 0 3px; }
.ps-nearby_list { list-style: none; margin: 14px 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 0 32px; }
.ps-nearby_list li { display: flex; justify-content: space-between; gap: 12px; padding: 11px 0; border-bottom: 1px solid #e8eef6; font-size: 15px; }
.ps-nearby_list a { color: #071743; font-weight: 600; text-decoration: none; border-bottom: 1px dotted #1CA8CB; }
.ps-nearby_list strong { color: #071743; white-space: nowrap; }
.ps-nearby_more { margin-top: 14px; font-size: 15px; }
.ps-nearby_more a { color: #1CA8CB; }
@media (max-width: 640px) { .ps-nearby_list { grid-template-columns: 1fr; } }

.activity-intro ul { padding-left: 20px; }
.activity-intro li { margin-bottom: 8px; }
.activity-intro a { color: #071743; font-weight: 600; }

/* Blog articles */
.blog-text h2 { margin-top: 34px; }
.blog-text h3 { margin-top: 24px; }
.blog-text ol, .blog-text ul { padding-left: 22px; }
.blog-text li { margin-bottom: 8px; }
.blog-figure { margin: 28px 0; }
.blog-figure img { width: 100%; height: auto; border-radius: 16px; display: block; }
.blog-figure figcaption { font-size: 14px; color: #6b7a99; margin-top: 8px; }
.blog-quote { margin: 22px 0; padding: 18px 22px; border-left: 4px solid #1CA8CB; background: #f2fafd; border-radius: 0 14px 14px 0; }
.blog-quote p { margin: 0 0 8px; color: #071743; font-size: 16.5px; line-height: 1.65; }
.blog-quote cite { font-style: normal; font-size: 14px; color: #6b7a99; }
.blog-quote cite a { color: #1CA8CB; }

.breadcumb-title.blog-h1 { font-size: clamp(28px, 4.2vw, 50px); line-height: 1.15; max-width: 22em; margin-left: auto; margin-right: auto; text-wrap: balance; }

/* Guest quotes in articles: spaced, with the attribution inside the box (no overlapping theme ribbon) */
.blog-text blockquote.blog-quote { position: relative !important; margin: 0 0 30px !important; padding: 26px 26px 20px 62px !important; background: #f2fafd !important; border: 1px solid #dbe6f2 !important; border-left: 4px solid #1CA8CB !important; border-radius: 0 16px 16px 0 !important; }
.blog-text blockquote.blog-quote:before { top: 22px !important; left: 20px !important; }
.blog-text blockquote.blog-quote p { margin: 0 0 12px !important; }
.blog-text blockquote.blog-quote cite { position: static !important; display: block !important; transform: none !important; margin: 0 !important; padding: 0 !important; background: none !important; clip-path: none !important; font-size: 14px; font-style: normal; color: #6b7a99 !important; }
.blog-text blockquote.blog-quote cite:before, .blog-text blockquote.blog-quote cite:after { display: none !important; }
.blog-text blockquote.blog-quote cite a { color: #1CA8CB !important; font-weight: 600; }
.blog-text blockquote.blog-quote + blockquote.blog-quote { margin-top: 0 !important; }

/* Quote boxes: wrapping attribution, no stray theme square, roomy phone layout */
.blog-text blockquote.blog-quote:after { display: none !important; content: none !important; }
.blog-text blockquote.blog-quote cite { white-space: normal !important; line-height: 1.5 !important; height: auto !important; overflow: visible !important; width: auto !important; min-width: 0 !important; text-indent: 0 !important; }
.blog-text blockquote.blog-quote p { overflow-wrap: anywhere; }
@media (max-width: 575px) {
    .blog-text blockquote.blog-quote { padding: 46px 18px 18px 18px !important; border-radius: 0 14px 14px 0 !important; margin-bottom: 22px !important; }
    .blog-text blockquote.blog-quote:before { top: 10px !important; left: 16px !important; font-size: 26px !important; }
    .blog-text blockquote.blog-quote p { font-size: 16px !important; line-height: 1.6 !important; }
    .blog-text blockquote.blog-quote cite { font-size: 13.5px !important; }
    .blog-text .act-note { font-size: 12.5px; }
}

/* Guest quote mark: replace the theme's clipped icon box with a clean opening quote */
.blog-text blockquote.blog-quote:before { content: "\201C" !important; background: none !important; width: auto !important; height: auto !important; color: #1CA8CB !important; font: 700 68px/0.8 Georgia, "Times New Roman", serif !important; top: 20px !important; left: 18px !important; box-shadow: none !important; border: 0 !important; }
@media (max-width: 575px) { .blog-text blockquote.blog-quote:before { font-size: 46px !important; top: 14px !important; left: 16px !important; } }

/* Drive-time tables: 3-home tables fit any screen; wider (5-area) tables scroll with a pinned first column */
.act-table { min-width: 0; }
.act-table:has(th:nth-child(5)) { min-width: 560px; }
@media (max-width: 575px) {
    .act-table { font-size: 13px; }
    .act-table th, .act-table td { padding: 8px 5px; }
    .act-table th { font-size: 11.5px; line-height: 1.25; }
    .act-table th:first-child, .act-table td:first-child { width: 40%; padding-left: 10px; }
    .act-table:has(th:nth-child(5)) th:first-child, .act-table:has(th:nth-child(5)) td:first-child { position: sticky; left: 0; z-index: 1; width: 150px; min-width: 150px; background: #fff; box-shadow: 3px 0 5px -2px rgba(7,23,67,.14); }
    .act-table:has(th:nth-child(5)) thead th:first-child { background: #e3f4fc; }
}
.act-table td:not(:first-child) { white-space: nowrap; }

/* Blog images: one shape everywhere, so mixed photo sizes never break the layout */
.blog-box .blog-img, body:not(.single-post) .blog-single .blog-img, .blog-list-single .blog-img { aspect-ratio: 3 / 2; overflow: hidden; border-radius: 16px; }
.blog-box .blog-img > a, body:not(.single-post) .blog-single .blog-img > a { display: block; width: 100%; height: 100%; }
.blog-box .blog-img img, body:not(.single-post) .blog-single .blog-img img, .blog-list-single .blog-img img { width: 100% !important; height: 100% !important; object-fit: cover; object-position: center; display: block; }
body.single-post .blog-single .blog-img { aspect-ratio: 16 / 9; overflow: hidden; border-radius: 16px; }
body.single-post .blog-single .blog-img img { width: 100% !important; height: 100% !important; object-fit: cover; display: block; }
/* homepage slider: equal-height cards */
.blog-box { height: 100%; display: flex; flex-direction: column; }
#blogSlider1 .swiper-slide { height: auto; }
.blog-box .blog-box_content { flex: 1; display: flex; flex-direction: column; }
.blog-box .blog-box_content .th-btn { margin-top: auto; align-self: flex-start; }
/* sidebar "recent posts" thumbnails */
.recent-post .media-img img, .recent-post .media-img { width: 80px; height: 80px; object-fit: cover; border-radius: 10px; }

/* Touch targets: bigger tap areas without changing the look */
.th-menu-toggle, .closeButton, .searchClose { position: relative; }
.th-menu-toggle:after, .closeButton:after, .searchClose:after { content: ""; position: absolute; inset: -10px; }
.header-links a, .footer-widget .about-text a { display: inline-block; padding: 8px 2px; }
.footer-widget .info-box a, .footer-widget a[href^="tel:"], .footer-widget a[href^="mailto:"] { display: inline-block; padding: 6px 0; }
.th-social a { min-width: 40px; min-height: 40px; display: inline-flex; align-items: center; justify-content: center; }

/* Top-bar divider (FAQ | Support): the links got taller for tap targets, so center the
   separator on the item instead of pinning it 5px from the top. */
.header-links li:not(:last-child):after,
.header-layout1 .header-right .header-links li:not(:last-child):after { top: 50%; transform: translateY(-50%); }

/* Mobile search pill: text centered in the pill at every size; the search icon stays pinned left. */
.property-mobile-bar_pill { justify-content: center; text-align: center; padding: 0 14px 0 44px; }
.property-mobile-bar_pill i { position: absolute; left: 18px; top: 50%; transform: translateY(-50%); }
.property-mobile-bar_text { align-items: center; text-align: center; max-width: 100%; }
.property-mobile-bar_title, .property-mobile-bar_sub { max-width: 100%; }
@media (max-width: 360px) {
    /* Small phones: tighter pill so "Anywhere in Tampa Bay · Any dates · Add guests" fits without an ellipsis. */
    .property-mobile-bar_pill { padding: 0 10px 0 36px; }
    .property-mobile-bar_pill i { left: 13px; font-size: 14px; }
    .property-mobile-bar_title { font-size: 13px; }
    .property-mobile-bar_sub { font-size: 11px; }
}
@media (max-width: 360px) {
    /* Default pill label shortens to "Tampa Bay" on very small phones; area names are unaffected. */
    .pm-anywhere { display: none; }
}

/* Mobile "Search homes" sheet: roomier rows, icons in fixed tiles so all three align, clearer hierarchy. */
.property-search-sheet_panel { padding: 20px 18px 18px; }
.property-search-sheet_head { margin-bottom: 14px; }
.property-search-sheet_head strong { font-size: 20px; }
.property-search-sheet .property-search-bar .booking-form { padding: 6px 16px; border-radius: 22px; }
.property-search-sheet .property-search-bar .form-group,
.property-search-sheet .property-search-bar .form-group:not(:first-child) { padding: 15px 0; gap: 14px; align-items: center; }
.property-search-sheet .property-search-bar .form-group .icon { width: 42px; height: 42px; border-radius: 13px; background: #f2f6fa; display: flex; align-items: center; justify-content: center; font-size: 18px; line-height: 1; }
.property-search-sheet .property-search-bar .form-group .icon i { line-height: 1; }
.property-search-sheet .property-search-bar label { font-size: 12px; letter-spacing: .02em; margin-bottom: 3px; }
.property-search-sheet .property-search-bar .op-display-text,
.property-search-sheet .property-search-bar .rc-display-text,
.property-search-sheet .property-search-bar .gp-display-text { font-size: 16px; line-height: 1.25; }
.property-search-sheet .property-search-bar .form-group.guest-picker { border-bottom: 0; }
.property-search-sheet .property-search-bar .form-btn { padding-top: 10px; padding-bottom: 6px; }
.property-search-sheet .property-search-bar .form-btn .th-btn { min-height: 54px; font-size: 16px; border-radius: 999px; }

/* Desktop header search: give Destination enough room for "Anywhere in Tampa Bay" (was ellipsized at 172px). */
@media (min-width: 1200px) {
    .header-search.property-search-bar .booking-form { max-width: 920px; }
    .header-search.property-search-bar .form-group.location-picker { flex: 1.7 1 0; min-width: 232px; }
}

/* Sheet rows: higher specificity so the roomier spacing actually applies. */
.property-search-sheet .property-search-bar .booking-form .row .form-group,
.property-search-sheet .property-search-bar .booking-form .row .form-group:not(:first-child) { padding: 15px 0; }
.property-search-sheet .property-search-bar .booking-form .row .form-group.guest-picker { border-bottom: 0; }
/* Small text / tap targets flagged by the device sweep */
.ps-review_src { font-size: 12px; }
.header-search.property-search-bar label { font-size: 12px; }
.ps-more, .ps-review_more { min-height: 36px; display: inline-flex; align-items: center; }
@media (max-width: 360px) { .property-mobile-bar_sub { font-size: 12px; } }
