/* ==========================================================================
   cire-alignment.css - HOMEPAGE band alignment (ALIGNMENT-SPEC.md V1 / D1)
   Branch: redesign/featured-islands   Created: 2026-08-15
   --------------------------------------------------------------------------
   Nick, 2026-08-15, with an iPhone screenshot: "Spacing on text like this in
   mobile should be aligned like the photos. It's much cleaner."

   THE REFERENCE EDGE IS THE FEATURED ISLANDS TILE EDGE. Every homepage band
   starts its content on the same vertical line as those tiles:

       .cire-islands__inner  max-width 1400px; margin-inline auto;
                             padding-inline 16 / 24 / 40 / 64
       => first content pixel 16px at 375, 84px at 1440

   ARCHAEOLOGY - measured, not read. Every number below came from a
   getBoundingClientRect() probe run inside a TRUE 375px iframe (Chrome clamps
   a top-level window to 500px on Windows; the viewport was confirmed from
   inside the document) and at 1440. Left edge of the first content pixel:

     band                              375 before   1440 before   after
     1 hero headline                     15 / 26        319         16 / 84
     2 section header ("Newest ...")     116.8         549.7        16 / 84
     2 listing card rail                 15             65          16 / 84
     3 stacked mobile buttons            10             n/a         16 / 84
     4 LUXURY HOME SPECIALISTS band       0            203.8        16 / 84
     5 FEATURED ISLANDS (REFERENCE)      16             84          unchanged
     6 bg-dark text band                  0            203.8        16 / 84
     7 visual nav                        24            100          16 / 84
     8 links block                       50            100          16 / 84

   Six different left edges on one phone screen; six more on the desktop page.

   WHY THE LUXURY BAND RUNS EDGE TO EDGE (the thing Nick photographed):
   style.css sets `.text-block { padding: 0 1.875rem }` (30px), but
   css/cire-luxury.css sets `.home .text-block { padding-left: 0;
   padding-right: 0 }` at specificity (0,2,0) and beats it. The band is not
   "nearly" edge-to-edge, it is EXACTLY 0px. Verified by computed style, both
   on the deployed CSS and on the merge-target CSS.

   HEAD ORDER ON THIS TEMPLATE (verified, live <head>):
     app.css -> cire-luxury.css -> cire-islands.css -> block-library ->
     email-encoder -> style.css -> magnific-popup-client -> market-watch
   style.css (hand-written, handle `style`) prints AFTER the redesign layer,
   so this file declares deps [ cire-islands, style ] and prints after both.
   A sheet without those dependencies prints first and silently no-ops.

   Every rule here also wins on SPECIFICITY, not only on order: cire-luxury.css
   is full of (0,2,0) `.home .thing` rules that outweigh a one-class override
   (this is what made two earlier fixes fail on this site).

   SCOPE: every rule is scoped either to `.home` (sections 0-8) or to
   `.single-mrt_community` (section 9). Nothing here can reach a third
   template. The sheet is enqueued from front-page.php AND from
   single-mrt_community.php, each with the dependency list that template needs
   - the head order is NOT the same on the two:
     home                : app.css -> cire-luxury -> cire-islands -> style.css
     neighbourhood detail: style.css -> app.css -> cire-luxury
   ========================================================================== */

/* --------------------------------------------------------------------------
   0  THE CONTAINER TOKENS  (ALIGNMENT-SPEC D1, same numbers as cire-islands)
   -------------------------------------------------------------------------- */
.home {
  --cire-inset: 16px;
  --cire-measure: 1400px;
}
@media (min-width: 729px) {
  .home { --cire-inset: 24px; }
}
@media (min-width: 1024px) {
  .home { --cire-inset: 40px; }
}
@media (min-width: 1366px) {
  .home { --cire-inset: 64px; }
}

/* --------------------------------------------------------------------------
   1  HERO
   The hero overlay carried its own 16px padding, the Foundation .row inside it
   carried -15px side margins (that is the 15px overflow at 375), the .columns
   added 10px and the h1 another 16px. Four spacing mechanisms, one edge.
   One container now owns the inset; the group's vertical/optical centring
   (cire-luxury section 36) is deliberately left alone.
   -------------------------------------------------------------------------- */
.home .home-hero-slider-words {
  padding-inline: 0;
}
.home .home-hero-slider-words .row {
  width: 100%;
  max-width: var(--cire-measure);
  margin-inline: auto;
  padding-inline: var(--cire-inset);
}
.home .home-hero-slider-words .columns {
  padding-inline: 0;
}
.home .home-hero-slider-words .hp-hero-header__content {
  padding-inline: 0;
}
.home .home-hero-slider-words .hp-hero-header__header {
  padding-inline: 0;
}

/* --------------------------------------------------------------------------
   2  FEATURED LISTINGS - SECTION HEADERS
   .page-section-header is a flex container, so its .row child was shrink-to-
   fit with `margin: 0 auto` - i.e. the section title was CENTRED on mobile,
   116.8px from the edge. style.css also indents .col-title by a bare 200px
   above 1000px, which is what put the desktop title at 549.7px.
   -------------------------------------------------------------------------- */
.home #homepage-featured .page-section-header > .row,
.home #homepage-featured .front-page-stacked-buttons > .row {
  flex: 1 1 100%;
  width: 100%;
  max-width: var(--cire-measure);
  margin-inline: auto;
  padding-inline: var(--cire-inset);
}
.home #homepage-featured .page-section-header .col-title,
.home #homepage-featured .page-section-header .col-btn,
.home #homepage-featured .front-page-stacked-buttons .columns {
  padding-inline: 0;
}

/* --------------------------------------------------------------------------
   2b FEATURED LISTINGS - THE CARD RAIL
   .listing-grid__wrapper padded 50px at desktop, 0 at mobile; the slick rail
   adds 10px and each .listing-grid__card another 5px. The 5px is the real
   inter-card gutter and is KEPT - the container subtracts it so the card's
   own left edge, not the rail's, lands on the reference line.
   -------------------------------------------------------------------------- */
.home #homepage-featured .listing-grid__wrapper {
  padding-inline: 0;
}
.home #homepage-featured .listing-grid__cards {
  width: 100%;
  max-width: var(--cire-measure);
  margin-inline: auto;
  padding-inline: calc(var(--cire-inset) - 5px);
}

/* The slick arrows are absolutely positioned OUTSIDE the rail's border box.
   Once the rail became a 1400px centred container they landed 15px past the
   right viewport edge and put a horizontal scrollbar on the desktop page
   (measured: scrollWidth 1455 against a 1440 viewport). They now sit inside
   the container's own gutter, clear of the cards, which start at 84px. */
.home #homepage-featured .listing-grid__cards > .slick-prev {
  left: 0;
  right: auto;
}
.home #homepage-featured .listing-grid__cards > .slick-next {
  right: 0;
  left: auto;
}

/* --------------------------------------------------------------------------
   2c FEATURED LISTINGS - THE DEAD BAND UNDER THE HERO
   Nick, 2026-08-15 (iPad screenshot): the empty white region between the hero
   photograph and "Featured in the Caribbean".

   Measured at 1024: the hero ends and the section header begins 50px later on
   the DEPLOYED css, and 146px later on this branch's css. The difference is a
   margin collapse that stopped collapsing: `.listing-grid` carries
   `margin: 50px 0`, the header inside it carries `margin-top: 40px`, and those
   two collapsed into one 50px gap until cire-luxury section 37 added
   `padding-top: 56px` to the same grid - which blocks the collapse and adds
   its own 56 on top (50 + 56 + 40).

   Three mechanisms for one gap. This replaces them with one.
   -------------------------------------------------------------------------- */
.home #homepage-featured > .listing-grid:first-of-type {
  margin-top: 0;
  padding-top: clamp(32px, 4vw, 48px);
}
.home #homepage-featured > .listing-grid:first-of-type > .page-section-header {
  margin-top: 0;
}

/* --------------------------------------------------------------------------
   4 + 6  THE TWO TEXT BANDS (LUXURY HOME SPECIALISTS, and the bg-dark band)
   This is the band in Nick's screenshot. `.home section .text-block` is
   (0,2,1) and beats cire-luxury's (0,2,0) `.home .text-block` on specificity
   as well as on order.
   -------------------------------------------------------------------------- */
.home section .text-block {
  width: 100%;
  max-width: var(--cire-measure);
  margin-inline: auto;
  padding-inline: var(--cire-inset);
}
/* Desktop only: the band is a two-column flex row (copy + photograph) and its
   free space was distributed AROUND the columns, so the heading started 112px
   inside the container it lives in (measured 196.6 against a container edge of
   84). space-between puts the copy on the container's left edge and the
   photograph on its right edge - the band now has the same two borders as
   every other band. Scoped to >=1024 because below that the same element is a
   column stack and justify-content would act on the vertical axis. */
@media (min-width: 1024px) {
  .home section .text-block {
    justify-content: space-between;
  }
}

/* --------------------------------------------------------------------------
   7  VISUAL NAV  (was 24px / 100px)
   -------------------------------------------------------------------------- */
.home .visual-nav {
  width: 100%;
  max-width: var(--cire-measure);
  margin-inline: auto;
  padding-inline: var(--cire-inset);
}

/* --------------------------------------------------------------------------
   8  LINKS BLOCK  (was 50px / 100px)
   -------------------------------------------------------------------------- */
.home .links-block {
  width: 100%;
  max-width: var(--cire-measure);
  margin-inline: auto;
  padding-inline: var(--cire-inset);
}

/* ==========================================================================
   9  NEIGHBOURHOOD DETAIL HERO   (single-mrt_community.php)
   Nick, 2026-08-15, iPad screenshot of /neighborhoods/st-thomas/:
   "This should be center aligned on the photo vertically. Always. Also -
   reduce photo height by 12.5%."

   MEASURED BEFORE (true viewports, iframe harness):
     375   photo 400px tall; content block top 186, height 308
     768   photo 772px tall; content block top 569, height 262  (photo centre
           497, block centre 700 - the block sat 203px BELOW centre)
     1440  photo 772px tall; content block top 663, height 202  (photo centre
           531, block centre 764 - 233px below centre)

   ROOT CAUSE: app.css pins the block to the bottom -
     .community-hero-slider-words { position: absolute; bottom: 3.25rem }
   There is no vertical centring anywhere in the component; "lower third" is
   the design as written. Overridden here at (0,2,0), which beats app.css's
   (0,1,0) and prints later besides.

   HEIGHT: the photo is sized by
     .community-hero-slider        { height: 400px }            (base)
     .community-hero-slider__slide { height: calc(100vh - 228px) }
     @media (max-width: 728px)     { ...__slide { height: 400px } }
     @media (min-width: 730px)     { ...slider  { height: calc(100vh - 228px) } }
   plus min-height 350 / 450 from style.css. Every one of those is reduced by
   12.5% here, min-heights included, or the min-height would silently cancel
   the reduction on short windows.
   ========================================================================== */
.single-mrt_community .community-hero-slider-words {
  top: 50%;
  bottom: auto;
  transform: translateY(-50%);
}
.single-mrt_community .community-hero-slider-wrapper,
.single-mrt_community .community-hero-slider,
.single-mrt_community .community-hero-slider__slide {
  height: calc((100vh - 228px) * 0.875);
  min-height: 394px; /* 450 - 12.5% */
}
@media (max-width: 728px) {
  .single-mrt_community .community-hero-slider-wrapper,
  .single-mrt_community .community-hero-slider,
  .single-mrt_community .community-hero-slider__slide {
    height: 350px;     /* 400 - 12.5% */
    min-height: 306px; /* 350 - 12.5% */
  }
}

/* The component already carries a scrim, but it is bottom-anchored -
   `.community-hero-slider__slide::before { background: linear-gradient(
   rgba(27,46,65,0), #000) }` - which is exactly why the block was parked at
   the bottom in the first place. Moving the block to the centre without moving
   the scrim would put white type on bright sky and water, which breaks Nick's
   contrast law (dark ground, or a real scrim, under white text - always).
   The SAME pseudo-element is re-pointed here: a centred charcoal scrim,
   strongest across the middle third where the type now sits, fading out at
   both ends so the photograph still reads as a photograph. Charcoal (#384249)
   replaces the inherited navy. */
.single-mrt_community .community-hero-slider__slide::before {
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: auto;
  height: auto;
  background: linear-gradient(
    180deg,
    rgba(56, 66, 73, 0) 0%,
    rgba(56, 66, 73, 0.22) 18%,
    rgba(56, 66, 73, 0.60) 38%,
    rgba(56, 66, 73, 0.60) 64%,
    rgba(56, 66, 73, 0.24) 84%,
    rgba(56, 66, 73, 0) 100%
  );
}

/* ==========================================================================
   10  MOBILE HERO - THE GOLD SEARCH BUTTON, NOTHING ELSE
   --------------------------------------------------------------------------
   Nick, 2026-08-15, redlining the LIVE mobile homepage on an iPhone:
   "This doesn't look good. Let's try just the gold Search Button. No filters."

   MOBILE ONLY (<=728px). Desktop keeps the full quicksearch bar - the
   instruction came from a phone screenshot and is implemented exactly that
   far. One word from Nick extends it to desktop; nothing here would have to
   change except the breakpoint.

   WHAT IS BEING REMOVED (measured at 375, live 2.0c22):
     keyword field    52px
     Island select2   52px
     Type | Price     52px   (two accordions side by side)
     gold Search      52px   <- the only survivor
     + 40px form margin. The band was 212px of the 560px hero.

   HOW, AND WHY NOT DELETE:
   the <form id="desktop-search"> stays in the markup - desktop renders it -
   and is hidden here at <=728px. hero.php gains ONE anchor, placed INSIDE
   .hp-hero-rearch so that cire-luxury's gold rule
       .home .hp-hero-rearch .button.button-blue  (0,4,0)
   styles it identically to the real submit button. One source of truth for
   the gold; the mobile CTA cannot drift from the desktop button.

   SELECT2 TRAP - CHECKED, CLEAN (this is the entry-31 failure mode: a
   suppressed select leaving runtime DOM behind).
     - js/app.js:461 initialises .js-ruhl-dropdown and :715 the keyword
       select on page load, visible or not. Probed on the live post-JS DOM:
       4 select2 containers exist and ALL FOUR are inside #desktop-search;
       `body > .select2-container` count is 0. Select2 only attaches a
       dropdown when it is OPENED, and a display:none form cannot be opened,
       so no orphan can appear at mobile.
     - The width hazard (select2 initialised while hidden computes width 0
       and keeps it if later revealed on an orientation change/resize) is
       already neutralised by style.css:
       `.hp-hero-rearch select, .hp-hero-rearch .select2-container
        { width: 100% !important }`.
     - app.js also removes the .hero-fouc-placeholder spans on init; they sit
       inside the form and are hidden with it either way.

   NOT TOUCHED: the form's action, method, fields, names, the ajax-counter
   hook on the submit button, and the geo-switch AJAX. Presentation only.
   -------------------------------------------------------------------------- */

/* base = desktop: the mobile CTA does not exist */
.home .hp-hero-rearch .cire-hero-search-mobile {
  display: none;
}

@media (max-width: 728px) {
  /* form.quicksearch is (0,3,1) - it outranks cire-luxury's (0,3,0)
     `.home .hp-hero-rearch .quicksearch { display:flex }` on specificity as
     well as on print order, so this holds regardless of enqueue order. */
  .home .hp-hero-rearch form.quicksearch {
    display: none;
  }

  .home .hp-hero-rearch .cire-hero-search-mobile {
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    text-decoration: none;
    box-sizing: border-box;
  }

  /* The hero group (headline + button) stays vertically centred on the photo
     by construction: .home-hero-slider-words is `position:absolute; inset:0;
     display:flex; justify-content:center` (cire-luxury 36). Removing 212px
     of search band re-centres the smaller group automatically - Nick's hero
     centering law needs no new rule, only re-measurement (done: 375). */
  .home .hp-hero-rearch {
    margin-top: 0;
  }
}

/* ==========================================================================
   11  "FEATURED IN [ the Caribbean ]" AT MOBILE - EYEBROW + ACTION LIST
   --------------------------------------------------------------------------
   Nick, 2026-08-15, same iPhone redline, second circle: the block carrying
   "the Caribbean" and the NEW LISTINGS / PRICE REDUCTIONS / SELL YOUR HOME
   links "doesn't look good."

   MOBILE ONLY. Every rule below sits in `@media (max-width: 728px)`, and the
   link block itself is `display:none` from 729px up in app.css
   (`.front-page-stacked-buttons`), so desktop cannot be reached from here.

   -- SYMPTOM 1: WHAT HID THE "Featured in" EYEBROW ------------------------
   Not a wrap, not zero height, not white-on-white. app.css ships:

       @media (max-width: 728px) {
         .page-section-header__title-dropdown .page-section-header__title
           { display: none }
       }

   i.e. the platform deliberately drops the words on phones and leaves only
   the island <select> behind, so the header reads as a bare dropdown with no
   subject. Confirmed by computed style on the live post-JS DOM: the h2 is
   `display: none`, 0x0, while its text "Featured in" is present in the HTML.
   Our cire-luxury rules restyled that h2 but never un-hid it, so the redesign
   inherited the platform's decision without ever deciding it.

   DECISION: eyebrow VISIBLE, as an eyebrow rather than a same-size prefix.
   Dropping it was the other honest option, but then the serif line reads
   "the Caribbean" with nothing to attach it to, and the section loses its
   name on the highest-traffic width. Set in the house eyebrow style already
   shipping 1,500px further down this page (.cire-islands__eyebrow): sans,
   uppercase, 0.3em tracking, medium gray, on its own line above the serif.
   The selector keeps its serif size and gold hairline - it is the one control
   in the header and must still read as tappable.

   -- SYMPTOM 2: WHY THE THREE LINKS CRAM INTO ONE ROW ---------------------
   Measured, not guessed. cire-luxury turns every `.home .listing-grid
   a.button` into a letterspaced text link with `white-space: nowrap`, and
   app.css lays them out `display:block; margin:15px auto 0; max-width:325px`.
   Rendered widths at mobile: 103.6 + 142.2 + 125.8 = 371.6px of nowrap text
   in a 343px content box - they cannot wrap inside themselves, so they wrap
   BETWEEN each other into a ragged 2 + 1 arrangement with no alignment to
   anything else on the page.

   RECOMPOSED as a hairline action list: three full-width rows, uppercase
   micro-label at the house 0.16em tracking, 52px tap targets, the count
   figure (filled by the geo-switch AJAX, empty on first paint - app.js:1224)
   right-aligned in gold as an accent. Dividers are the doctrine hairline
   #e3e5e6, NOT gold: gold rules are accents, never dividers.

   The `.button` classes, hrefs, ids and the count spans are untouched -
   this is presentation only.
   -------------------------------------------------------------------------- */

@media (max-width: 728px) {

  /* ---- 11a  the eyebrow -------------------------------------------------- */
  .home #homepage-featured .page-section-header__title-dropdown {
    display: flex;
    flex-wrap: wrap;
    align-items: center;   /* doctrine rule 3: never baseline in a row with a <select> */
    gap: 0;
  }

  .home #homepage-featured .page-section-header__title-dropdown h2.page-section-header__title {
    display: block;
    flex: 0 0 100%;
    width: 100%;
    margin: 0 0 8px;
    padding: 0;
    font-family: var(--cire-sans, "Proxima Nova", "Helvetica Neue", Helvetica, Arial, sans-serif);
    font-size: clamp(0.62rem, 1.9vw, 0.68rem);
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    color: var(--cire-gray-med, #76787b);
  }

  .home #homepage-featured .page-section-header__title-dropdown > div {
    flex: 0 0 auto;
    max-width: 100%;
  }

  /* ---- 11b  the action list --------------------------------------------- */
  .home #homepage-featured .front-page-stacked-buttons {
    margin: 8px 0 32px;
  }

  .home #homepage-featured .front-page-stacked-buttons .columns {
    display: flex;
    flex-direction: column;
  }

  .home #homepage-featured .front-page-stacked-buttons a.button {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    width: 100%;
    max-width: none;
    min-height: 52px;
    margin: 0;
    padding: 8px 0;
    background: transparent;
    border: 0;
    border-bottom: 1px solid var(--cire-hairline, #e3e5e6);
    border-radius: 0;
    font-family: var(--cire-sans, "Proxima Nova", "Helvetica Neue", Helvetica, Arial, sans-serif);
    font-size: clamp(0.72rem, 2.1vw, 0.78rem);
    font-weight: 400;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--cire-charcoal, #384249);
    text-decoration: none;
    white-space: normal;
    box-shadow: none;
  }

  .home #homepage-featured .front-page-stacked-buttons a.button:first-child {
    border-top: 1px solid var(--cire-hairline, #e3e5e6);
  }

  .home #homepage-featured .front-page-stacked-buttons a.button:hover,
  .home #homepage-featured .front-page-stacked-buttons a.button:focus {
    background: transparent;
    color: var(--cire-gold, #c9ac77);
  }

  /* The count span is FIRST in the markup ("<span>12</span> New Listings").
     order:2 moves it to the end of the flex row without touching the DOM, so
     the label keeps the container's left edge and the figure sits on the
     right. Empty on first paint - the row simply reads as a label. */
  .home #homepage-featured .front-page-stacked-buttons a.button .button__figure {
    order: 2;
    flex: 0 0 auto;
    font-weight: 400;
    font-size: 0.8rem;
    letter-spacing: 0.02em;
    color: var(--cire-gold, #c9ac77);
  }
}

/* --------------------------------------------------------------------------
   10b  THE LONE CTA READS AS A BUTTON, NOT AS A FORM CONTROL
   Rendered at true 375 first: the inherited treatment (sentence case, 0.1em)
   was legible but read small and unfinished once it was the only thing under
   the headline. The ratified type spec (BRAND.md, 2026-08-15) carries sans
   emphasis on CASE + 0.16em TRACKING, never weight - which is also what the
   shipped CTA on this same page uses (.cire-islands__cta-link). Size, colour,
   ground and geometry are inherited from the desktop submit button unchanged,
   so the two can still never drift on anything but case.
   -------------------------------------------------------------------------- */
@media (max-width: 728px) {
  .home .hp-hero-rearch .cire-hero-search-mobile {
    text-transform: uppercase;
    letter-spacing: 0.16em;
  }
}

/* --- Section 12: hide the featured-section header block on mobile ---------
   Nick 2026-08-15: the Featured-in dropdown + New Listings / Price Reductions /
   Sell Your Home rows add no value on phones. Hides the whole
   .page-section-header on the HOMEPAGE at mobile widths; the listing cards
   below it are untouched. Desktop unchanged. */
@media (max-width: 728px) {
  .home #homepage-featured .page-section-header { display: none; }
  .home .front-page-stacked-buttons { display: none; }
}

/* --- Section 13: mobile Featured Listings heading + island links tidy -----
   Nick 2026-08-15: (a) static serif heading over the featured cards on phones
   (replaces the hidden dropdown header); (b) the pre-footer island list was
   centered, uneven (separate ULs) and mixed-color - one left-aligned 2-col
   grid on the tile edge, uniform charcoal. Desktop untouched. */
.cire-featured-title-mobile { display: none; }
@media (max-width: 728px) {
  .cire-featured-title-mobile {
    display: block; font-family: Playfair, Georgia, serif; font-weight: 500;
    font-size: 1.5rem; line-height: 1.2; color: #384249;
    margin: 0 0 20px; padding: 0 16px; text-align: left;
  }
  .links-block h2 {
    font-size: 1.5rem; line-height: 1.2; text-align: left;
    padding: 0 16px; margin-bottom: 20px;
  }
  .links-block .links { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; padding: 0 16px; }
  /* display:contents flattens the theme's separate ULs so all islands flow
     as one balanced 2-column list - no dead zone between groups */
  .links-block .links ul { display: contents; }
  .links-block .links li { text-align: left; padding: 12px 0; border-bottom: 1px solid #e3e5e6;
    font-size: 0.875rem; line-height: 1.4; }
  .links-block .links li, .links-block .links a { color: #384249; }
}

/* --- Section 14: footer redlines (Nick 2026-08-15 evening) ----------------
   1 callout bar truly centered as one composed line (name - phone - button);
   2 COMPANY INFO must not wrap ("squished") - titles nowrap at a tracking
     that fits the column;
   3 thin hairline under the callout band, matching the section dividers,
     so the footer's bands read uniform. */
.footer .footer-callout { border-bottom: 1px solid rgba(255,255,255,0.12); }
.footer .footer-callout .row {
  display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
  gap: 16px 40px; text-align: center;
}
.footer .footer-menu__title { white-space: nowrap; letter-spacing: 0.12em; }
@media (max-width: 728px) {
  .footer .footer-callout .row { flex-direction: column; gap: 14px; }
}

/* --- Section 15: breadcrumb band on the shared container edge (Nick) ------ */
.breadcrumb-container { padding-left: 16px; padding-right: 16px; }
@media (min-width: 729px)  { .breadcrumb-container { padding-left: 24px; padding-right: 24px; } }
@media (min-width: 1024px) { .breadcrumb-container { padding-left: 40px; padding-right: 40px; } }
@media (min-width: 1440px) { .breadcrumb-container { padding-left: 84px; padding-right: 84px; } }

/* --- Section 16: static Featured Homes header (Nick 2026-08-15 evening) ---
   The geo dropdown (which re-skins hero + rails per island - tech Nick likes,
   wrong for this site) is hidden, NOT removed: the select stays in the DOM so
   the homepage geo scripts keep their bindings. Title reads Featured Homes. */
.page-section-header__title-dropdown > *:not(.page-section-header__title) { display: none !important; }
/* select2 renders the visible control as a runtime SPAN clone - the > div
   selector missed it (the launch-night select2 trap, again). :not(h2) covers
   the raw div AND the clone. Kill the leftover spacing too. */
.page-section-header__title-dropdown { margin: 0 !important; }
.page-section-header--alt { padding-top: 0 !important; margin-top: 0 !important; }
/* the mobile static heading must never render above 728 - assert it */
@media (min-width: 729px) { .cire-featured-title-mobile { display: none !important; } }

/* --- Section 17: hero-to-Featured gap cut 40% (Nick 2026-08-15 evening) ---
   Measured 48px at desktop; 32/41 at smaller widths. All reduced 40%. */
.home .listing-grid { padding-top: 29px !important; }
@media (max-width: 1023px) { .home .listing-grid { padding-top: 25px !important; } }
@media (max-width: 728px)  { .home .listing-grid { padding-top: 19px !important; } }

/* --- Section 18: heading-to-photos = 2x the card gutter (Nick 2026-08-15) -
   Measured: gutter 10px -> target 20px. Was 67px under each section H2.
   Hero-to-first-heading tightened to match. */
.home .listing-grid { padding-top: 20px !important; }
.home .listing-grid .page-section-header,
.home .page-section-header--alt { margin-bottom: 20px !important; padding-bottom: 0 !important; }
.home .listing-grid .slick-list { padding-top: 0 !important; }
.home .listing-grid .listing-cards, .home .listing-grid .row { margin-top: 0 !important; }

/* --- Section 19: ONE homepage edge system at DESKTOP too (Nick 2026-08-15)
   The alignment audit (V1) found four container systems; mobile was unified
   to the islands-tile edge this afternoon; the desktop decision was left
   open and Nick called the drift out. Decision, per his mobile precedent:
   the islands band edge (40px at 1024+, 84px at 1440+) is THE edge for
   every homepage band - centered max-width containers on .home become
   full-width with shared insets. */
@media (min-width: 1024px) {
  .home .listing-grid > .row,
  .home .listing-grid__wrapper,
  .home .page-section-header .row,
  .home .text-block, .home .links-block, .home .visual-nav,
  .home .footer .row { max-width: none !important; }
  .home .listing-grid,
  .home .text-block, .home .links-block, .home .visual-nav {
    padding-left: 40px !important; padding-right: 40px !important;
  }
  /* the section header lives INSIDE .listing-grid - both got the band inset,
     stacking to 80px; the header keeps zero and inherits the band edge.
     The slick rail offsets cards by a half-gutter (5px); pull it back. */
  .home .listing-grid .page-section-header { padding-left: 0 !important; padding-right: 0 !important; }
  .home .listing-grid .listing-grid__cards { margin-left: -5px !important; }
  /* inner containers must not stack their own side padding on the band inset:
     probed 120px (H2) and 80px (cards) vs the 40px band edge */
  .home .listing-grid .row, .home .listing-grid .columns,
  .home .listing-grid__wrapper, .home .listing-grid__cards,
  .home .page-section-header .row, .home .page-section-header .col-title,
  .home .page-section-header .col-actions {
    padding-left: 0 !important; padding-right: 0 !important;
    margin-left: 0 !important; margin-right: 0 !important;
  }
  /* finish the H2-to-photos 20px: the cards rail carried 30px + card 5px */
  .home .listing-grid__cards { padding-top: 0 !important; }
  .home .listing-grid__card { margin-top: 0 !important; }
}
@media (min-width: 1366px) {
  /* breakpoint matched to cire-islands.css (84px starts at 1366, not 1440) -
     Nick caught the 1366-1439 window where text sat at 40 vs tiles at 84 */
  .home .listing-grid,
  .home .text-block, .home .links-block, .home .visual-nav {
    padding-left: 84px !important; padding-right: 84px !important;
  }
}
