/*
 * The connector's FIXED listing pages — /available-condominiums/ ("Luxury
 * Condos") and /coming-soon/.
 *
 * Everything is scoped under .mxb-pml-fixed-page, the neutral root both pages
 * emit alongside their own modifier class (.mxb-pml-condominiums,
 * .mxb-pml-coming-soon), so no other page on the site is affected. Loaded only on
 * those routes / with their first-party shortcodes.
 *
 * DELIBERATELY SMALL. As with the featured grid, the active theme's
 * css/custom-page/property-list.css does the visual work off the class names the
 * template emits — the #f0f0f0 quick-search band, the single .title-wrap
 * underline, the orange active tab, the staggered rows, the dark band behind each
 * group, the card width and 5px gutters, the canvas ratio spacer, the hover
 * lift/zoom/detail reveal, the one-card-per-row stack at <=991px, the pager and
 * the disclaimer. Re-declaring any of that is what previously produced a second
 * underline and a mismatched vertical rhythm.
 *
 * What is left here is only what the theme cannot know:
 *   1. the band must span the viewport, not the content column;
 *   2. the virtual route's heading is an <h1>, and the theme only styles <h2>;
 *   3. a 70px heading has to come down on small screens.
 *
 * Motion is the theme's, exactly as on the Areas pages: its AOS instance fades
 * the rows in and its property-list.css drives the card hover. Nothing here may
 * pre-reveal, freeze or cancel [data-aos] elements — doing so hid the fact that
 * AOS never started on these pages (see partials/pagination.php) and left the
 * rows visible but pointer-events:none, so the card hover could never fire.
 */

/* ------------------------------------------------- full-bleed search band ---- */

/* Production's strip runs edge to edge. The theme paints
   .ip-property-det-search-main-form but inherits its width from the content
   column, so pull it out to the viewport. #main-wrapper already clips overflow. */
.mxb-pml-fixed-page .ip-property-det-search-main-form {
    width: 100vw;
    max-width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    /* Repeated, not merely inherited: if the theme's property-list.css is absent
       the strip must still read as the light-gray band, not as bare page. */
    background: #f0f0f0;
    /* Production's band: 15px top and bottom, no extra gap below the row. */
    padding: 15px 0;
    box-sizing: border-box;
}

/* --------------------------------------------------------------- heading ---- */

/* The theme styles `#content h2.title-widget` only. On the virtual route the
   heading is the page's <h1>, so mirror the same treatment rather than let it
   fall back to the browser's h1 size. */
.mxb-pml-fixed-page h1.title-widget {
    display: inline-block;
    margin: 0;
    color: #515151;
    font-family: var(--font-family-title, 'Tenor Sans', serif);
    font-size: 70px;
    font-weight: 400;
    line-height: 1;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

/* 70px overflows a phone. Scale with the viewport instead of wrapping mid-word. */
@media only screen and (max-width: 991px) {
    .mxb-pml-fixed-page h1.title-widget,
    .mxb-pml-fixed-page h2.title-widget {
        font-size: clamp(28px, 7vw, 70px);
    }
}

/* -------------------------------------------------------------- overflow ---- */

.mxb-pml-fixed-page {
    max-width: 100%;
    overflow-x: hidden;
}

/* ------------------------------------------------------------- lazy images --- */

/* AIOS lazyload swaps data-src onto src. Until it does — or if it never does —
   the canvas spacer holds the card's height, so nothing collapses. Images the
   connector renders carry a real src already; this only keeps a lazyload
   placeholder from stretching. */
.mxb-pml-fixed-page .ip-property-det-canvas img {
    object-fit: cover;
}

/* The quick-search strip itself — fields, Property Type tokens, its no-JS
   fallback and focus states — is styled once, in premier-mls-featured.css, for
   every page that renders it. */

/* --------------------------------------------------------- empty state ------ */

/*
 * "No properties found..." is the whole page body when there is no matching
 * inventory. It must read as a calm, centred statement under the heading — never
 * as an error, and never leaving an empty dark grid band behind it.
 */
.mxb-pml-fixed-page .ip-property-det-search-listings:not([data-total-listings]) {
    min-height: 0;
    margin-bottom: 60px;
}

/* ------------------------------------------------------ sold properties ----- */

/*
 * A sold card is a tile, not a link: sold inventory has no live detail route and
 * the provider 404s for it everywhere a browse URL would point. The static
 * wrapper stands in for the <a> the theme styles, so the card keeps its layout,
 * its overlay and its hover treatment without offering navigation.
 */
.mxb-pml-sold-properties .mxb-pml-card-static {
    display: block;
    cursor: default;
}

/* No sale price the licence permits us to show. Stated plainly, never as "$0". */
.mxb-pml-sold-properties .mxb-pml-price-unavailable {
    font-size: clamp(15px, 1.15vw, 19px);
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

@media only screen and (max-width: 767px) {
}
