/* Public site v2 — Tier-3 (S227-EXEC-1 Seq #20).
   One dedicated Tier-3 file for the whole Public Website module, per
   UI_STANDARDS.md §1 ("exactly one dedicated Tier-3 <module>.css per
   module") and §2 row 13 (Public Website is one module, not one page per
   file — Seq #19's per-page split was a misapplication, corrected here).
   Every future /v2/ page's styles get added into this same file, never a
   new per-page file.

   Merged from (now-deleted) public-shared.css + public-home.css +
   public-listing-grid.css — content unchanged, selector names unchanged,
   zero collisions between the three (verified before merging). Loaded
   from base.html after brand/brand-kit.css (Tier 0) → public-tokens.css
   (Tier 1) → public-atoms.css (Tier 2). */

/* ============================== shared (Header/Footer) ================== */

/* Header (templates/public/includes/header.html) */
.header-bar{position:sticky;top:0;z-index:30;background:var(--surface-navy)}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:0 var(--space-6);min-height:var(--header-height)}
.header-brand{display:flex;align-items:center;gap:var(--space-2);text-decoration:none;flex:none}
.header-brand__mark{height:1.875rem;width:1.875rem}
.header-brand__word{font-family:var(--font-script);font-size:1.75rem;line-height:1;color:var(--text-on-navy);transform:translateY(0.1rem)}
.header-nav{display:flex;align-items:center;gap:var(--space-5);flex-wrap:wrap}
.header-nav__link{color:var(--text-on-navy);opacity:0.85;text-decoration:none;font-size:var(--text-body-sm);font-weight:600}

/* Mobile nav (S231-EXEC-4). Below 640px (the module's one mobile breakpoint)
   the 5 inline links collapse into a dropdown panel opened by .nav-toggle
   (atom in public-atoms.css). Gated on html.js (set by public-nav.js in
   <head>) so a no-JS visitor keeps the wrapping inline nav instead of a
   menu they can never open. The panel hangs off .header-bar (sticky =
   positioned ancestor), so it always opens directly under the header. */
@keyframes header-nav-in{from{opacity:0;transform:translateY(-0.5rem)}to{opacity:1;transform:none}}
@media (max-width:640px){
  .header-inner{padding:0 var(--space-4)}
  html.js .nav-toggle{display:inline-flex}
  html.js .header-nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:0;padding:var(--space-2) var(--space-4) var(--space-4);background:var(--surface-navy);border-top:0.0625rem solid color-mix(in oklch, var(--text-on-navy) 15%, transparent);box-shadow:var(--shadow-elevated);max-height:calc(100vh - var(--header-height));max-height:calc(100dvh - var(--header-height));overflow-y:auto}
  html.js .header-bar.is-open .header-nav{display:flex;animation:header-nav-in var(--dur-base) var(--ease-standard)}
  html.js .header-nav__link{display:flex;align-items:center;min-height:2.75rem;padding:0 var(--space-2);font-size:var(--text-body);opacity:1}
  html.js .header-nav__link:hover{background:color-mix(in oklch, var(--text-on-navy) 10%, transparent);border-radius:var(--radius-md)}
}

/* Footer (templates/public/includes/footer.html) */
.footer-bar{background:var(--surface-navy);font-family:var(--font-sans)}
.footer-main{padding:var(--space-10) var(--space-6) var(--space-8)}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:var(--space-8)}
@media (max-width:800px){.footer-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:480px){.footer-grid{grid-template-columns:1fr}}
.footer-brand{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}
.footer-brand__mark{height:2rem}
.footer-brand__word{font-family:var(--font-script);font-size:1.5rem;line-height:1;color:var(--text-on-navy);transform:translateY(0.1rem)}
.footer-tagline{color:var(--text-on-navy);opacity:0.75;font-size:var(--text-body-sm);max-width:22rem;margin:0}
.footer-col-title{color:var(--text-on-navy);font-weight:700;font-size:var(--text-body-sm);margin-bottom:var(--space-3);opacity:0.9}
.footer-link--social{display:flex;align-items:center;gap:var(--space-2)}
/* S235-EXEC-74/75/77: the landmark hub (EXEC-66) as its own full-width block,
   not a 5th grid column (EXEC-72's version made that row uneven) -- same
   "sitemap cluster under primary nav" pattern large sites use for a link
   group that outgrows a single column. EXEC-77: moved above the 4-column
   row (order swap only) -- divider now sits below it (margin/border-bottom,
   was top) to stay between the two blocks; still matches .footer-legal-bar's
   own divider style. EXEC-75: each grid item is a .footer-nearby__col (its
   own heading + links), not a single link, so the 13 entries read as 4 short
   curated groups; row gap added since a wrapped group is a multi-line block,
   not a single dense row. Steps down one column at each of this file's own
   existing breakpoints (900/640/480) -- headings stay attached to their own
   column's links at every width, since each is nested inside its column's
   own div, not a separate grid item. */
.footer-nearby{margin-bottom:var(--space-8);padding-bottom:var(--space-6);border-bottom:0.0625rem solid color-mix(in oklch, var(--text-on-navy) 15%, transparent)}
.footer-nearby__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-6)}
@media (max-width:900px){.footer-nearby__grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:640px){.footer-nearby__grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:480px){.footer-nearby__grid{grid-template-columns:1fr}}
.footer-link{color:var(--text-on-navy);opacity:0.75;font-size:var(--text-body-sm);text-decoration:none;display:block;padding:var(--space-1) 0}
.footer-legal-bar{border-top:0.0625rem solid color-mix(in oklch, var(--text-on-navy) 15%, transparent);padding:var(--space-5) var(--space-6)}
.footer-legal-inner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-3)}
.footer-legal-text{color:var(--text-on-navy);opacity:0.7;font-size:var(--text-body-sm)}
.footer-legal-text--muted{color:var(--text-on-navy);opacity:0.6;font-size:var(--text-caption)}

/* ============================== Home page ================================ */

.home-page{font-family:var(--font-sans);background:var(--surface-page);min-height:100%}

/* ---- hero ---- */
.home-hero{padding:var(--space-6) var(--space-6) 0}

/* ============================== Shared hero (S273-B2, DA273.10) ==============================
   The one public hero: Home, type, landmark and routed SEO pages. Navy panel + fixed-ratio media box,
   equal height on desktop, stacked on mobile. The image is absolutely positioned in the box (cover,
   centred crop), so it can never set the height. Rounded from the family radius token. */
.pub-hero{padding:var(--space-6) var(--space-6) 0}
.pub-hero__grid{display:grid;grid-template-columns:minmax(0,0.8fr) minmax(0,1.2fr);gap:var(--space-3);min-height:23.75rem}
.pub-hero__panel{background:var(--surface-navy);border-radius:var(--radius-lg);padding:var(--space-8);display:flex;flex-direction:column;justify-content:center}
.pub-hero__eyebrow{font-family:var(--font-serif);font-style:italic;font-weight:700;color:var(--action-primary);font-size:var(--text-body-sm);letter-spacing:0.02em;display:block;margin-bottom:var(--space-3)}
.pub-hero__title{color:var(--text-on-navy);margin-bottom:var(--space-3);max-width:22ch}
.pub-hero__copy{color:var(--text-on-navy);opacity:0.85;margin-bottom:var(--space-5);max-width:32ch}
.pub-hero__actions{display:flex;gap:var(--space-3);flex-wrap:wrap}
.pub-hero__media{position:relative;align-self:stretch;aspect-ratio:4/3;width:100%;border-radius:var(--radius-lg);overflow:hidden;background:var(--surface-sunken)}
.pub-hero__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.pub-hero__placeholder{position:absolute;inset:0;background:linear-gradient(135deg, var(--surface-sunken), var(--gray-300))}
@media (max-width:640px){.pub-hero{padding:var(--space-4) var(--space-4) 0}.pub-hero__grid{grid-template-columns:1fr;min-height:auto}.pub-hero__media{align-self:auto;aspect-ratio:16/9}.pub-hero__panel{padding:var(--space-6)}}

/* ---- Shared breadcrumb + page edge (S273-B2, DA273.12): the same left/right edges as the hero's navy panel
   (.container 75rem + --space-6 side padding; --space-4 under 640px via the Breadcrumb rule in the mobile block). ---- */
.pub-breadcrumb{max-width:75rem;margin:0 auto;padding:var(--space-3) var(--space-6) 0;font-size:var(--text-caption);color:var(--text-muted)}
.pub-breadcrumb__link{color:var(--text-muted)}

/* ---- Photo overlay (S273-B2, DA273.11): the ONE watermark mechanism. HTML over the photo, never burned in.
   full = lockup + call/WhatsApp icons + number, bottom-right over a navy scrim; mark = round logo mark only. ---- */
.pub-overlay{position:absolute;pointer-events:none;color:var(--text-on-navy)}
.pub-overlay--full{left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:flex-end;gap:var(--space-4);padding:var(--space-4);background:linear-gradient(to top, color-mix(in oklch, var(--surface-navy) 85%, transparent), transparent)}
.pub-overlay__lockup{display:block;height:var(--space-6);aspect-ratio:1099/300;background:var(--brand-lockup-dark) no-repeat right center/contain}
.pub-overlay__contact{display:flex;align-items:center;gap:var(--space-2)}
.pub-overlay__icon{pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;color:var(--text-on-navy)}
.pub-overlay__icon:hover{color:var(--action-primary)}
.pub-overlay__number{font-size:var(--text-body-sm);font-weight:600;margin-left:var(--space-1)}
.pub-overlay--mark{right:var(--space-2);bottom:var(--space-2);width:var(--space-6);height:var(--space-6);background:var(--brand-logo-dark) no-repeat center/contain;filter:drop-shadow(0 0 var(--space-1) var(--navy-900))}
.ad-tile-cell{position:relative;height:100%}
.ad-tile-cell--hero{grid-row:1/3;grid-column:1/2}
.ad-tile{position:relative}
.ad-viewer-thumb{position:relative}
.ad-fallback-hero .pub-overlay--full,.ad-viewer-hero__img .pub-overlay--full{border-radius:0 0 var(--radius-lg) var(--radius-lg)}
.pd-hero__media{position:relative}
@media (max-width:900px){.pub-overlay__contact{display:none}}

/* ---- trust row ---- */
.home-trust{display:flex;gap:var(--space-6);align-items:center;flex-wrap:wrap;padding:var(--space-5) 0 var(--space-2)}
.home-trust__note{font-size:var(--text-body-sm);color:var(--text-muted)}

/* ---- search widget ---- */
.home-search{padding:var(--space-5);margin-bottom:var(--space-6);display:flex;gap:var(--space-4);align-items:flex-end;flex-wrap:wrap}
.home-search__field{flex:1;min-width:10rem}
.home-search__label{font-size:var(--text-body-sm);font-weight:600;display:block;margin-bottom:var(--space-2)}
.home-search__input{width:100%;box-sizing:border-box;height:2.75rem;border-radius:var(--radius-md);border:0.0625rem solid var(--border-default);padding:0 var(--space-3)}
.home-search__guests{min-width:11.25rem}
.home-search__stepper{display:flex;align-items:center;gap:var(--space-3);height:2.75rem}
.home-search__stepper-btn{width:2.25rem;height:2.25rem;border-radius:50%;border:0.0625rem solid var(--border-default);background:var(--surface-card);cursor:pointer;font-size:1.125rem;line-height:1}
.home-search__count{min-width:1.5rem;text-align:center;font-weight:600}

/* ---- type sections ---- */
.home-types-intro{padding:var(--space-8) var(--space-6) var(--space-4)}
.home-types-intro__title{margin-bottom:var(--space-1)}
.home-types-intro__copy{margin-bottom:0}
.home-type-section{padding:0 var(--space-6) var(--space-8)}
.home-type-card{overflow:hidden}
.home-type-card__head{padding:var(--space-6);display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:var(--space-4)}
.home-type-card__title{font-family:var(--font-serif);font-weight:700;margin-bottom:var(--space-2)}
.home-type-card__desc{margin:0 0 var(--space-2);color:var(--text-secondary);font-size:var(--text-body-sm);font-style:italic;max-width:48ch;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.home-type-card__desc.is-expanded{-webkit-line-clamp:unset;overflow:visible}
.home-type-card__show-more{display:inline-block;margin:0 0 var(--space-4);padding:0;border:none;background:none;font-family:var(--font-sans);font-size:var(--text-body-sm);font-weight:600;color:var(--action-secondary);cursor:pointer;text-decoration:underline}
.home-type-card__show-more:hover{color:var(--action-secondary-hover)}
.spec-row{display:flex;flex-wrap:wrap;gap:var(--space-3);padding-top:var(--space-3);border-top:0.0625rem solid var(--border-default)}
.home-type-card__spec-chip{display:flex;align-items:center;gap:var(--space-2);background:var(--surface-card);border:0.0625rem solid var(--border-default);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-3)}
.home-type-card__spec-label{font-size:var(--text-caption);font-weight:600;color:var(--text-secondary);white-space:nowrap}
.home-type-card__body{padding:var(--space-6)}
.home-type-card__empty{margin:0;color:var(--text-muted)}
.type-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(16.25rem,1fr));gap:var(--space-6)}
.pub-icon{width:1.25rem;height:1.25rem}
.pub-icon--sm{width:1rem;height:1rem}
/* Brand marks (Simple Icons, filled glyphs) — social links and WhatsApp. */
.brand-icon{width:1.125rem;height:1.125rem;flex:none;fill:currentColor;stroke:none}
/* Rating stars are filled; the card/hero rating rows put the star inline with the number. */
.rating__star .pub-icon,.property-card__rating .pub-icon{width:0.875rem;height:0.875rem;fill:currentColor}
.property-card__rating{display:inline-flex;align-items:center;gap:0.25rem}
.faqb-item__chevron{width:1.125rem;height:1.125rem}

/* ---- segments ---- */
.home-segments{padding:var(--space-12) var(--space-6) var(--space-16);background:linear-gradient(180deg, var(--surface-navy) 0%, var(--surface-navy) 82%, var(--surface-page) 100%)}
.home-segments__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(20rem,1fr));gap:var(--space-8)}
.home-segments__badge{margin-bottom:var(--space-4);display:inline-block}
.home-segments__title{color:var(--text-on-navy);margin-bottom:var(--space-3)}
.home-segments__copy{color:var(--text-on-navy);opacity:0.8;margin-bottom:var(--space-4);max-width:34rem}

/* ---- stats ---- */
.home-stats{padding:var(--space-8) var(--space-6)}
.home-stats__grid{padding:var(--space-6);display:grid;grid-template-columns:repeat(auto-fit,minmax(12.5rem,1fr));gap:var(--space-6);text-align:center}
.home-stats__item{display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}
.home-stats__value{margin-bottom:var(--space-1)}
.home-stats__label{margin:0}

/* ---- amenities ---- */
.home-amenities{padding:var(--space-8) var(--space-6)}
.home-amenities__panel{padding:var(--space-6)}
.home-amenities__title{margin-bottom:var(--space-5)}
.amenity-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(8.75rem,1fr));gap:var(--space-4)}
.home-amenity-item{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);text-align:center;background:var(--surface-card);border:0.0625rem solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-4)}
.home-amenity-item__icon{width:2.75rem;height:2.75rem;border-radius:50%;background:color-mix(in oklch, var(--action-primary) 13%, var(--surface-page));display:flex;align-items:center;justify-content:center;color:var(--action-primary)}
.home-amenity-item__label{font-size:var(--text-body-sm);font-weight:600;color:var(--text-primary)}

/* ---- testimonials wrapper (testimonial_carousel.html itself is styled below) ---- */
.home-testimonials{padding:var(--space-8) 0}
.home-testimonials__inner{padding:0 var(--space-6)}

/* ---- find us ---- */
.home-findus{padding:var(--space-8) var(--space-6)}
.home-findus__panel{padding:var(--space-6)}
.home-findus__title{margin-bottom:var(--space-4)}
.home-findus__grid{display:grid;grid-template-columns:1.2fr 1fr;gap:var(--space-8);align-items:start}
.home-findus__map{aspect-ratio:16/9;border-radius:var(--radius-lg);overflow:hidden;border:0.0625rem solid var(--border-default)}
.home-findus__map iframe{width:100%;height:100%;border:0;display:block}
.home-findus__map-link{display:flex;align-items:center;justify-content:center;height:100%;background:color-mix(in oklch, var(--action-secondary) 6%, var(--surface-page));text-decoration:none;gap:var(--space-2)}
.home-findus__map-link-text{color:var(--text-primary);font-weight:600}
.home-findus__map-empty{display:flex;align-items:center;justify-content:center;height:100%;background:color-mix(in oklch, var(--action-secondary) 6%, var(--surface-page));color:var(--text-muted)}
.home-findus__address{margin-bottom:var(--space-4)}
.home-findus__contact-card{background:color-mix(in oklch, var(--action-primary) 8%, var(--surface-page));border:0.0625rem solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}
.home-findus__phone-row{display:flex;align-items:center;gap:var(--space-3)}
.home-findus__phone-icon{flex:none;width:3rem;height:3rem;border-radius:50%;background:var(--action-primary);display:flex;align-items:center;justify-content:center}
.home-findus__phone-label{font-size:var(--text-caption);color:var(--text-muted);text-transform:uppercase;letter-spacing:0.06em;font-weight:600}
.home-findus__phone-number{font-family:var(--font-serif);font-weight:700;font-size:var(--text-h1);color:var(--text-primary);text-decoration:none;line-height:1}
.home-findus__whatsapp-btn{width:100%}

.home-footer-wrap{padding-top:var(--space-8)}

@media (max-width:640px){
  .home-findus__grid{grid-template-columns:1fr!important}
}

/* ---- Testimonial Carousel (templates/public/includes/testimonial_carousel.html) ---- */
.tc-root{font-family:var(--font-sans)}
.tc-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6)}
.tc-eyebrow{font-family:var(--font-serif);font-style:italic;font-weight:700;color:var(--action-secondary);font-size:var(--text-body-sm);letter-spacing:0.02em;display:block;margin-bottom:var(--space-2)}
.tc-title{margin:0}
.tc-nav{display:flex;gap:var(--space-3)}
.tc-nav-btn{width:2.75rem;height:2.75rem;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center;font-size:1.25rem;line-height:1;color:var(--text-primary);background:var(--surface-card);border:0.0625rem solid var(--border-default);box-shadow:var(--shadow-card)}
.tc-nav-btn:hover:not(:disabled){background:var(--surface-sunken);border-color:var(--border-strong)}
.tc-nav-btn:disabled{opacity:0.4;cursor:not-allowed;box-shadow:none}
.tc-track{display:flex;gap:var(--space-5);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}
/* S227-EXEC-1 Seq #77: card width is a fraction of the track so a whole
   number of cards always fits with no partial card sliced at the edge —
   was a fixed 16.25rem regardless of container width, which left a
   partial 4th card visible on every /v2/ page showing this carousel.
   box-sizing:border-box is required here: .feedback-card (the class this
   card also carries) sets padding:1.25rem with the browser's default
   content-box, so without this the rendered card is 2.5rem wider than the
   calc()'d fraction and the 3rd card overflows the track again. */
.tc-card{scroll-snap-align:start;flex:0 0 calc((100% - 2*var(--space-5))/3);box-sizing:border-box;min-height:14rem}
@media (max-width:640px){
  .tc-card{flex:0 0 100%}
}
.tc-card__by{display:flex;align-items:center;gap:var(--space-3)}
.tc-card__avatar{width:2.25rem;height:2.25rem;font-size:0.9rem}
.tc-card__votebtn{cursor:default}

/* ---- Context Sticky Bar (templates/public/includes/context_sticky_bar.html) ---- */
.ctx-bar{position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--surface-card);border-top:0.0625rem solid var(--border-default);box-shadow:var(--shadow-elevated);padding:var(--space-3) var(--space-5);padding-bottom:calc(var(--space-3) + env(safe-area-inset-bottom,0px));display:flex;align-items:center;gap:var(--space-3);font-family:var(--font-sans)}
.ctx-bar__question{flex:1;font-weight:600;font-size:var(--text-body-sm);color:var(--text-primary)}
@media (min-width:641px){ .ctx-bar{display:none!important} }
/* S233-EXEC-30: floating WhatsApp button (Site Settings > Contact Us). Sits above the
   mobile ctx-bar so the two never overlap. */
.wa-float{position:fixed;right:var(--space-5);bottom:var(--space-5);z-index:30;box-shadow:var(--shadow-elevated);display:inline-flex;align-items:center;gap:var(--space-2)}
@media (max-width:640px){ .wa-float{bottom:calc(var(--space-16) + var(--space-3))} }
/* S231-EXEC-4: the bar is fixed, so it overlays the last ~4rem of any page
   that includes it (Home/About/Amenities/Contact/FAQs/Landmark) — the
   footer's legal row was unreachable. Reserve exactly the bar's height at
   the page end. --ctx-bar-h is measured live by public-nav.js (the bar's
   question copy can wrap to 2-3 lines on 375px, so a fixed rem guess would
   under-clear); 4.75rem is the no-JS fallback for the single-line bar. */
@media (max-width:640px){ body:has(.ctx-bar){padding-bottom:var(--ctx-bar-h,4.75rem)} }

/* ============================== Listing Grid page ========================= */

.lg-page{font-family:var(--font-sans);background:var(--surface-page);min-height:100%}


.lg-filters{padding:0 var(--space-6) var(--space-5);display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap;border-bottom:0.0625rem solid var(--border-default)}
.lg-filters__dates{display:flex;gap:var(--space-3);flex-wrap:wrap}
.lg-filters__label{font-size:var(--text-body-sm);font-weight:600;display:block;margin-bottom:var(--space-2)}
.lg-filters__input{height:2.75rem;border-radius:var(--radius-md);border:0.0625rem solid var(--border-default);padding:0 var(--space-3)}
.lg-filters__count{margin-left:auto;color:var(--text-muted);font-size:var(--text-body-sm)}

.lg-results{padding:var(--space-6) var(--space-6) var(--space-8)}
.listing-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(17.5rem,1fr));gap:var(--space-6)}
.listing-card__price-unit--standalone{font-size:var(--text-body-sm)}

.lg-empty{text-align:center;padding:var(--space-14) var(--space-6)}
.lg-empty__title{margin-bottom:var(--space-2)}
.lg-empty__copy{color:var(--text-secondary);max-width:28rem;margin:0 auto}

.lg-footer-wrap{padding-top:var(--space-8)}

/* NOTE (S231-EXEC-4 audit): despite sitting in this block, this rule is
   GLOBAL by construction — one stylesheet serves every public page, so it is
   the 1rem mobile side gutter for every <section> and breadcrumb <nav>
   site-wide (it is Home's only mobile gutter rule). Page-specific mobile
   rules further down repeat the same value with higher-specificity class
   selectors. Do not scope or remove without re-checking every page. */
@media (max-width:640px){
  section,nav[aria-label="Breadcrumb"]{padding-left:var(--space-4)!important;padding-right:var(--space-4)!important}
}

/* ---- Sticky Booking Bar (templates/public/includes/sticky_booking_bar.html) ---- */
.sbb-bar{position:sticky;bottom:0;background:var(--surface-navy);padding:var(--space-4) var(--space-6);z-index:20;box-shadow:var(--shadow-elevated);font-family:var(--font-sans)}
.sbb-inner{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap}
.sbb-label{color:var(--text-on-navy);font-weight:600}
.sbb-price{color:var(--text-on-navy);opacity:0.8;margin-left:var(--space-3)}
.sbb-price-unit{opacity:0.7}
.sbb-actions{display:flex;gap:var(--space-3)}
/* S231-EXEC-4 mobile treatment: one compact single-row bar (price left,
   Call/Reserve right) instead of the desktop label+price+buttons wrapping
   into a 3-line block. The marketing label is dropped only when a price is
   shown (Call us already answers "questions before you book?"); with no
   price it stays and wraps inside its own column. 44px touch height kept. */
@media (max-width:640px){
  .sbb-bar{padding:var(--space-3) var(--space-4);padding-bottom:calc(var(--space-3) + env(safe-area-inset-bottom,0px))}
  .sbb-inner{flex-wrap:nowrap;gap:var(--space-3)}
  .sbb-copy{min-width:0}
  .sbb-label--hide-sm{display:none}
  .sbb-price{margin-left:0;white-space:nowrap}
  .sbb-actions{flex:none;gap:var(--space-2)}
  .sbb-actions .btn{padding:0.5625rem 1rem;font-size:0.8125rem;min-height:2.75rem}
}

/* ============================== Apartment Detail page (Seq #22) ========== */

.ad-page{font-family:var(--font-sans);background:var(--surface-page);min-height:100%;padding-bottom:0}
.ad-eyebrow{font-family:var(--font-serif);font-style:italic;font-weight:700;color:var(--action-secondary);font-size:var(--text-body-sm);letter-spacing:0.02em;display:block;margin-bottom:var(--space-2)}
.ad-eyebrow--on-navy{color:color-mix(in oklch, var(--text-on-navy) 70%, transparent)}

/* ---- gallery ---- */
.ad-gallery{padding:var(--space-4) var(--space-6) 0}
.ad-gallery-wrap{position:relative;border-radius:var(--radius-lg);overflow:hidden}
.ad-gallery-grid{display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:var(--space-2);height:26.25rem}
.ad-tile{background:var(--surface-sunken);border:0.0625rem solid var(--border-default);display:flex;align-items:center;justify-content:center;color:var(--text-muted);overflow:hidden;width:100%;height:100%;padding:0;margin:0;font:inherit;cursor:pointer}
.ad-tile img{width:100%;height:100%;object-fit:cover}
.ad-tile--hero{border-radius:var(--radius-lg) 0 0 var(--radius-lg)}
.ad-gallery-btn{position:absolute;right:var(--space-4);bottom:var(--space-4);background:var(--surface-card);border:0.0625rem solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-family:var(--font-sans);font-weight:600;font-size:var(--text-body-sm);color:var(--text-primary);cursor:pointer;box-shadow:var(--shadow-card);display:flex;align-items:center;gap:var(--space-2)}
.ad-fallback-hero{position:relative;height:26.25rem;border-radius:var(--radius-lg);overflow:hidden;background:var(--surface-sunken)}
.ad-fallback-hero img{width:100%;height:100%;object-fit:cover;display:block}

/* ---- photo viewer (S227-EXEC-1 Seq #78 — Dev Guide two-row carousel:
   hero viewer + thumbnail strip, one shared activeIndex; replaces the
   Seq #77 grouped-by-category grid lightbox) ---- */
.ad-viewer{position:fixed;inset:0;background:var(--surface-navy);z-index:50;display:flex;flex-direction:column}
.ad-viewer[hidden]{display:none}
.ad-viewer-head{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4) var(--space-6);flex:none}
.ad-viewer-count{color:var(--text-on-navy);font-size:var(--text-body-sm);font-weight:600}
.ad-viewer-close{background:none;border:0.0625rem solid var(--text-on-navy);border-radius:50%;width:2.25rem;height:2.25rem;color:var(--text-on-navy);cursor:pointer;display:flex;align-items:center;justify-content:center;flex:none}
.ad-viewer-stage{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-4);padding:0 var(--space-6) var(--space-6);min-height:0}
.ad-viewer-nav{background:color-mix(in oklch, var(--text-on-navy) 10%, transparent);border:0.0625rem solid color-mix(in oklch, var(--text-on-navy) 30%, transparent);border-radius:50%;width:2.75rem;height:2.75rem;color:var(--text-on-navy);cursor:pointer;flex:none;display:flex;align-items:center;justify-content:center}
.ad-viewer-nav:hover{background:color-mix(in oklch, var(--text-on-navy) 18%, transparent)}
.ad-viewer-hero{position:relative;flex:1;max-width:60rem;height:min(70vh,40rem);min-width:0}
.ad-viewer-hero__img{display:none;position:absolute;inset:0;border-radius:var(--radius-lg);overflow:hidden}
.ad-viewer-hero__img.is-active{display:block}
.ad-viewer-hero__img img{width:100%;height:100%;object-fit:contain;background:color-mix(in oklch, var(--text-on-navy) 6%, transparent)}
.ad-viewer-thumbs{flex:none;display:flex;gap:var(--space-2);overflow-x:auto;padding:0 var(--space-6) var(--space-5)}
.ad-viewer-thumb{flex:none;width:5.5rem;height:5.5rem;border-radius:var(--radius-md);border:0.0625rem solid color-mix(in oklch, var(--text-on-navy) 20%, transparent);background:color-mix(in oklch, var(--text-on-navy) 6%, transparent);overflow:hidden;padding:0;cursor:pointer;opacity:0.6}
.ad-viewer-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.ad-viewer-thumb.is-active{outline:0.125rem solid var(--action-primary);outline-offset:-0.125rem;opacity:1}

/* ---- breadcrumb ---- */
.ad-breadcrumb{padding:var(--space-3) var(--space-6) 0;font-size:var(--text-caption);color:var(--text-muted)}
.ad-breadcrumb__link{color:var(--text-muted)}

/* ---- hero ---- */
.ad-hero{padding:var(--space-5) var(--space-6) 0}
.ad-locality-row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-2)}
.ad-locality-empty{font-size:var(--text-caption);color:var(--text-muted);font-style:italic}
.ad-title{margin-bottom:var(--space-2);font-size:var(--text-h1)}
.ad-price-line{color:var(--text-secondary);font-weight:600;margin-bottom:var(--space-4)}
.ad-actions-row{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap}
.ad-share-btn{display:flex;align-items:center;gap:var(--space-2);color:var(--action-whatsapp);font-size:var(--text-body-sm);font-weight:600;border:0.0625rem solid var(--border-default);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);text-decoration:none}
.ad-copy-btn{display:flex;align-items:center;gap:var(--space-2);color:var(--text-primary);font-size:var(--text-body-sm);font-weight:600;border:0.0625rem solid var(--border-default);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);background:none;cursor:pointer;font-family:var(--font-sans)}
.ad-quick-card{padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-5)}
.ad-quick-card__desc{max-width:68ch;margin:0}
.ad-quick-divider{height:0.0625rem;background:var(--border-default)}
.ad-quick-highlights{display:flex;flex-wrap:wrap;gap:var(--space-6)}
.ad-quick-highlight{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:11.25rem}
.ad-quick-highlight__icon{flex:none;width:2.75rem;height:2.75rem;border-radius:50%;background:color-mix(in oklch, var(--action-primary) 12%, var(--surface-page));display:flex;align-items:center;justify-content:center}
.ad-quick-highlight__title{font-weight:600;font-size:var(--text-body-sm)}
.ad-quick-highlight__caption{font-size:var(--text-caption);color:var(--text-muted)}

/* ---- sticky tabs ---- */
.ad-tabs-bar{position:sticky;top:var(--header-height);background:var(--surface-page);z-index:5;padding:0 var(--space-6);border-bottom:0.0625rem solid var(--border-default)}
.ad-tabs{display:flex;gap:var(--space-5)}
.ad-tab{background:none;border:none;border-bottom:0.1875rem solid transparent;padding:var(--space-3) 0;font-family:var(--font-sans);font-weight:600;font-size:var(--text-body-sm);color:var(--text-muted);cursor:pointer}
.ad-tab--active{color:var(--text-primary);border-bottom-color:var(--action-primary)}
/* S231-EXEC-4: tab clicks call scrollIntoView({block:"start"}) — without a margin the target's heading landed under the sticky header + tab bar (3.5rem header + ~3rem tabs + breathing room). */
.ad-page :is(#overview,#about,#amenities,#faqs,#reviews){scroll-margin-top:calc(var(--header-height) + 4rem)}

/* ---- overview / specs ---- */
.ad-section{padding:var(--space-8) var(--space-6)}
.ad-specs-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-4);margin-bottom:var(--space-4)}
.ad-spec-tile{background:color-mix(in oklch, var(--action-primary) 7%, var(--surface-page));border:0.0625rem solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-2)}
.ad-spec-tile__icon{flex:none}
.ad-spec-tile__value{font-weight:700;font-size:var(--text-h4);font-family:var(--font-serif)}
.ad-spec-tile__label{font-size:var(--text-body-sm);color:var(--text-secondary)}
.ad-specs-secondary{display:flex;flex-wrap:wrap;gap:var(--space-5);padding:var(--space-4) var(--space-1);border-top:0.0625rem solid var(--border-default)}
.ad-specs-secondary__item{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-body-sm);color:var(--text-secondary)}

/* ---- about ---- */
.ad-about-section{background:color-mix(in oklch, var(--action-primary) 4%, var(--surface-page))}
.ad-about-grid{padding:var(--space-12) var(--space-6);display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:var(--space-10)}
.ad-about-card{background:var(--surface-card);border:0.0625rem solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-8)}
.ad-about-card__heading{margin-bottom:var(--space-3)}
.ad-section-block{margin-bottom:var(--space-8)}
.ad-section-block__heading{margin-bottom:var(--space-2);font-size:var(--text-h4);font-weight:600;color:var(--text-secondary)}
.ad-section-block__heading--spaced{margin-top:var(--space-8)}
.ad-highlight-list{display:flex;flex-direction:column;gap:var(--space-3)}
.ad-highlight-row{display:flex;align-items:flex-start;gap:var(--space-3)}
.ad-highlight-row__icon{flex:none;margin-top:0.125rem}
.ad-goodtoknow{margin-bottom:var(--space-8);background:var(--surface-sunken);border-radius:var(--radius-lg);padding:var(--space-6)}
.ad-landmarks{margin-top:var(--space-4)}
.ad-landmark-badges{display:flex;gap:var(--space-2);flex-wrap:wrap}
.ad-landmark-badges a.badge{text-decoration:none}
.ad-landmark-badges a.badge:hover{background:var(--surface-card);color:var(--action-secondary-hover)}

/* ---- booking rail ---- */
.ad-booking-rail{position:sticky;top:calc(var(--header-height) + 4.5rem);border-radius:var(--radius-lg);box-shadow:var(--shadow-elevated);background:var(--surface-card);overflow:hidden}
.ad-booking-rail__price-bar{background:linear-gradient(160deg, var(--surface-navy), color-mix(in oklch, var(--surface-navy) 85%, var(--action-primary) 15%));padding:var(--space-5) var(--space-6);min-height:1.5rem}
.ad-booking-rail__price{color:var(--text-on-navy);font-family:var(--font-serif);font-weight:700;font-size:var(--text-h3)}
.ad-booking-rail__price-unit{font-size:var(--text-body-sm);font-weight:400;font-family:var(--font-sans);opacity:0.75}
.ad-booking-rail__accent{height:0.1875rem;background:var(--action-primary)}
.ad-booking-rail__body{padding:var(--space-6)}
.ad-booking-rail__copy{margin:var(--space-4) 0;font-size:var(--text-body-sm);color:var(--text-secondary)}
.ad-booking-rail__cta{width:100%;text-align:center}
.ad-booking-rail__reassure{margin-top:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}
.ad-booking-rail__reassure-item{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-caption);color:var(--text-muted)}

/* ---- amenities section ---- */
.ad-amenities-section{background:color-mix(in oklch, var(--action-secondary) 6%, var(--surface-page))}
.ad-amenities-intro{max-width:60ch;color:var(--text-secondary);margin-bottom:var(--space-6)}
.ad-amenities-card{padding:var(--space-6)}

/* ---- similar units ---- */
.ad-similar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(16.25rem,1fr));gap:var(--space-6)}

/* ---- reviews ---- */
.ad-reviews-section{background:var(--surface-navy);padding:var(--space-10) var(--space-6)}
.ad-reviews-inner{max-width:62.5rem;margin:0 auto}

/* ---- mobile sticky bar ---- */
.ad-mobile-bar{display:none}
.ad-mobile-bar__price{font-family:var(--font-serif);font-weight:700;font-size:var(--text-body-lg)}
.ad-mobile-bar__price-unit{font-size:var(--text-caption);font-weight:400;font-family:var(--font-sans);color:var(--text-muted)}
.ad-mobile-bar__note{font-size:var(--text-caption);color:var(--text-muted)}

@media (max-width:900px){
  .ad-mobile-bar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--surface-card);border-top:0.0625rem solid var(--border-default);box-shadow:var(--shadow-elevated);padding:var(--space-3) var(--space-4);align-items:center;justify-content:space-between;gap:var(--space-4)}
  .ad-page{padding-bottom:5rem}
}

@media (max-width:640px){
  .ad-gallery-grid{grid-template-columns:1fr 1fr!important;grid-template-rows:repeat(3,1fr)!important;height:20rem!important}
  .ad-tile-cell--hero{grid-row:1/2!important;grid-column:1/3!important}
  .ad-fallback-hero{height:15rem}
  .ad-specs-grid{grid-template-columns:1fr 1fr!important}
  .ad-about-grid{grid-template-columns:1fr!important}
  .ad-section,nav[aria-label="Breadcrumb"]{padding-left:var(--space-4)!important;padding-right:var(--space-4)!important}
  .ad-viewer-stage{padding-left:var(--space-3)!important;padding-right:var(--space-3)!important;gap:var(--space-2)!important}
  .ad-viewer-nav{width:2.25rem!important;height:2.25rem!important}
  .ad-viewer-thumbs{padding-left:var(--space-3)!important;padding-right:var(--space-3)!important}
}

/* ---- Amenities Block (templates/public/includes/amenities_block.html) ---- */
.amb-filters{display:flex;gap:var(--space-2);margin-bottom:var(--space-5);flex-wrap:wrap}
.amb-filter-btn{border:0.0625rem solid var(--border-default);background:transparent;color:var(--text-secondary);border-radius:var(--radius-pill);padding:var(--space-2) var(--space-4);font-family:var(--font-sans);font-size:var(--text-body-sm);font-weight:600;cursor:pointer}
.amb-filter-btn--active{background:var(--action-primary);color:var(--text-on-gold);border-color:transparent}
.amb-groups{display:flex;flex-direction:column;gap:var(--space-8)}
.amb-group__title{margin-bottom:var(--space-4);font-size:var(--text-h4);font-weight:600;color:var(--text-secondary)}
.amb-group__items{display:flex;flex-wrap:wrap;gap:var(--space-5)}
.amb-item{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);width:5.625rem;text-align:center}
.amb-item__icon{width:2.75rem;height:2.75rem;border-radius:var(--radius-md);background:color-mix(in oklch, var(--action-primary) 10%, var(--surface-page));display:flex;align-items:center;justify-content:center;color:var(--action-primary)}
.amb-item__label{font-size:var(--text-caption);color:var(--text-secondary)}
.amb-item[hidden]{display:none}

/* ---- Faq Block (templates/public/includes/faq_block.html) ---- */
.faqb-list{border:0.0625rem solid var(--border-default);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface-card);font-family:var(--font-sans);box-shadow:var(--shadow-card)}
.faqb-item + .faqb-item{border-top:0.0625rem solid var(--border-default)}
.faqb-item__summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:var(--space-4);padding:var(--space-5) var(--space-6);transition:background var(--dur-fast) var(--ease-standard)}
.faqb-item__summary:hover{background:var(--surface-sunken)}
.faqb-item__summary::-webkit-details-marker{display:none}
.faqb-item[open] .faqb-item__summary{border-bottom:0.0625rem solid var(--border-default)}
.faqb-item__icon{width:2.75rem;height:2.75rem;border-radius:var(--radius-md);background:color-mix(in oklch, var(--action-primary) 12%, var(--surface-page));display:flex;align-items:center;justify-content:center;flex:none;color:var(--action-primary)}
.faqb-item__title{flex:1;font-weight:700;font-family:var(--font-serif);font-size:var(--text-body-lg);color:var(--text-primary)}
.faqb-item__chevron{flex:none;transition:transform var(--dur-fast) var(--ease-standard)}
.faqb-item[open] .faqb-item__chevron{transform:rotate(180deg)}
.faqb-item__answer{margin:0;font-size:var(--text-body-lg);line-height:var(--lh-relaxed);color:var(--text-secondary);padding:var(--space-5) var(--space-6) var(--space-6) calc(2.75rem + var(--space-4) + var(--space-6))}
@media (max-width:640px){
  .faqb-item__summary{padding:var(--space-4)}
  .faqb-item__answer{padding:var(--space-4)}
}

/* ============================ Booking Request v2 ========================= */
/* templates/public/booking_request.html (S227-EXEC-1 Seq #24). Same
   br-* and card/badge/btn atoms as Apartment Detail's ad-booking-rail (br- is
   the page's own prefix, no collision with ad-/lg-). No payment-preference
   or special-request styling here — both dropped from this build entirely
   (Seq #24 resolutions #3/#4). */

.br-page{font-family:var(--font-sans)}
.br-card{padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}
.br-eyebrow{font-family:var(--font-serif);font-style:italic;font-weight:700;color:var(--action-secondary);font-size:var(--text-body-sm);letter-spacing:0.02em;display:block;margin-bottom:var(--space-2)}
.br-block + .br-block{margin-top:var(--space-6)}
.br-label{font-size:var(--text-body-sm);font-weight:600;display:block;margin-bottom:var(--space-2)}

.br-form-section{padding:var(--space-8) var(--space-6) var(--space-16);display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:var(--space-8);align-items:start}
.br-main{display:flex;flex-direction:column}
.br-form{display:block}
.br-sidebar{position:sticky;top:calc(var(--header-height) + var(--space-6));align-self:start;display:flex;flex-direction:column;gap:var(--space-6)}

/* ---- type picker (no apartment chosen) ---- */
.br-type-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}
.br-type-card{border:0.125rem solid var(--border-default);background:var(--surface-card);border-radius:var(--radius-md);padding:var(--space-3);text-align:left;text-decoration:none;color:inherit;display:block;transition:border-color var(--dur-fast) var(--ease-standard),background var(--dur-fast) var(--ease-standard)}
.br-type-card:hover{border-color:var(--border-strong)}
.br-type-card__label{font-weight:700;color:var(--text-primary)}
.br-type-card__price{color:var(--text-secondary);font-size:var(--text-caption)}

/* ---- selected apartment card ---- */
.br-selection-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--space-3);border-bottom:0.0625rem solid var(--border-default)}
.br-change-link{font-size:var(--text-body-sm);font-weight:600;white-space:nowrap;text-decoration:none}
.br-selection-body{display:flex;align-items:center;gap:var(--space-4)}
.br-tile{width:4.5rem;height:4.5rem;flex:none;background:var(--surface-sunken);border:0.0625rem solid var(--border-default);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;color:var(--text-muted)}
.br-selection-body__name{font-family:var(--font-serif);font-weight:700;font-size:var(--text-h4);color:var(--text-primary)}
.br-selection-body__locality{color:var(--text-secondary);font-size:var(--text-body-sm)}
.br-selection-body__price{color:var(--text-secondary);font-weight:600;font-size:var(--text-body-sm)}

/* ---- form inputs ---- */
.br-alert{background:var(--status-error-bg);color:var(--status-error-fg);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--text-body-sm);font-weight:600;margin-bottom:var(--space-4)}
.br-input{width:100%;box-sizing:border-box;height:2.75rem;border-radius:var(--radius-md);border:0.0625rem solid var(--border-default);padding:0 var(--space-3);font-family:var(--font-sans);font-size:var(--text-body-sm);color:var(--text-primary)}
.br-select{appearance:auto;background:var(--surface-card);cursor:pointer}
.br-textarea{width:100%;box-sizing:border-box;border-radius:var(--radius-md);border:0.0625rem solid var(--border-default);padding:var(--space-3);font-family:var(--font-sans);font-size:var(--text-body-sm);color:var(--text-primary);resize:vertical}
.br-dates{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}
.br-grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(12.5rem,1fr));gap:var(--space-4);margin-top:var(--space-4)}
.br-disclaimer{font-size:var(--text-caption);color:var(--text-muted);margin:0}
.br-field-error{color:var(--status-error-fg);font-size:var(--text-caption);margin:var(--space-1) 0 0}

.br-stepper-row{display:flex;align-items:center;gap:var(--space-3)}
.br-stepper{width:2.25rem;height:2.25rem;flex:none;border-radius:50%;border:0.0625rem solid var(--border-default);background:var(--surface-card);font-size:1.125rem;line-height:1;cursor:pointer}
.br-stepper:hover:not(:disabled){background:var(--surface-sunken);border-color:var(--border-strong)}
.br-stepper:disabled{opacity:0.4;cursor:not-allowed}
.br-stepper-input{width:3rem;text-align:center;font-weight:600;border:0.0625rem solid var(--border-default);border-radius:var(--radius-md);height:2.25rem}
.br-stepper-hint{font-size:var(--text-caption);color:var(--text-muted)}

.br-submit{width:100%;margin-top:var(--space-6)}

/* ---- sidebar summary ---- */
.br-summary__name{font-family:var(--font-serif);font-weight:700;font-size:var(--text-h4);margin-top:var(--space-2)}
.br-summary__locality{color:var(--text-secondary);font-size:var(--text-body-sm)}
.br-divider{height:0.0625rem;background:var(--border-default)}
.br-summary__row{display:flex;justify-content:space-between;font-size:var(--text-body-sm)}
.br-summary__key,.br-summary__muted{color:var(--text-muted)}
.br-summary__value{font-weight:600}
/* BT-163: subtotal / GST / total, each its own row */
.br-summary__estimate{display:flex;flex-direction:column;gap:var(--space-1)}
.br-summary__total-row{display:flex;justify-content:space-between;align-items:baseline}
.br-summary__total-label{font-weight:600}
.br-summary__total-label .br-summary__muted{font-weight:400;font-size:var(--text-caption)}
.br-summary__total-value{font-family:var(--font-serif);font-weight:700;font-size:var(--text-h4)}
.br-summary__disclaimer{margin:var(--space-2) 0 0;font-size:var(--text-caption);color:var(--text-muted)}

/* ---- how it works ---- */
.br-howworks__title{margin:0 0 var(--space-4);font-size:var(--text-body-lg)}
.br-howworks__step{display:flex;gap:var(--space-3)}
.br-howworks__marker{display:flex;flex-direction:column;align-items:center;flex:none}
.br-howworks__number{width:1.75rem;height:1.75rem;border-radius:50%;background:var(--action-primary);color:var(--text-on-gold);font-weight:700;font-size:var(--text-caption);display:flex;align-items:center;justify-content:center;flex:none}
.br-howworks__line{width:0.0625rem;flex:1;background:var(--border-default);margin:var(--space-1) 0}
.br-howworks__body{padding-bottom:var(--space-4)}
.br-howworks__step-title{font-weight:600;margin-bottom:var(--space-1)}
.br-howworks__step-copy{color:var(--text-secondary);font-size:var(--text-body-sm)}

/* ---- reach us directly ---- */
.br-reach__title{margin:0 0 var(--space-3);font-size:var(--text-body-lg)}
.br-reach__list{display:flex;flex-direction:column;gap:var(--space-3)}
.br-reach__row{display:flex;align-items:center;gap:var(--space-3);text-decoration:none;color:inherit}
.br-reach__row--static{cursor:default}
.br-reach__icon{color:var(--action-primary);flex:none}
.br-reach__label{font-size:var(--text-caption);color:var(--text-muted)}
.br-reach__value{font-weight:600;font-size:var(--text-body-sm)}

/* ---- success state ---- */
.br-success{max-width:40rem;margin:0 auto;padding:var(--space-14) var(--space-6);text-align:center}
.br-success__badge{gap:var(--space-2);margin-bottom:var(--space-4)}
.br-success__title{margin-bottom:var(--space-3)}
.br-success__label{color:var(--text-secondary);margin-bottom:var(--space-2)}
.br-success__ref{font-family:var(--font-serif);font-weight:700;font-size:var(--text-h2);margin-bottom:var(--space-6)}
.br-success__card{text-align:left;margin-bottom:var(--space-6)}
.br-success__copy{margin:0 0 var(--space-3)}
.br-success__copy--last{margin-bottom:0}
.br-success__actions{display:flex;gap:var(--space-3);justify-content:center;flex-wrap:wrap}

/* ---- Booking Confirmation v2 (S227-EXEC-1 Seq #30) — reuses br-success/
   br-card above; own detail-row + lookup-form pieces only. ---- */
.br-detail-row{display:flex;justify-content:space-between;padding-bottom:var(--space-3);border-bottom:0.0625rem solid var(--border-default);margin-bottom:var(--space-3);font-size:var(--text-body-sm)}
.br-detail-row--last{border-bottom:none;margin-bottom:0;padding-bottom:0}
.br-detail-key{color:var(--text-muted)}
.br-detail-value{font-weight:600}
.br-lookup-fields{display:flex;flex-direction:column;gap:var(--space-3)}

/* ---- mobile sticky bar ---- */
.br-mobile-bar{display:none}
.br-mobile-bar__name{font-weight:700;font-size:var(--text-body-sm)}
.br-mobile-bar__amount{font-size:var(--text-caption);color:var(--text-secondary)}

@media (max-width:900px){
  .br-sidebar{display:none}
  .br-mobile-bar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--surface-card);border-top:0.0625rem solid var(--border-default);box-shadow:var(--shadow-elevated);padding:var(--space-3) var(--space-4);align-items:center;justify-content:space-between;gap:var(--space-4)}
  .br-form-section{grid-template-columns:1fr;padding-bottom:6rem}
}

@media (max-width:640px){
  .br-form-section,nav[aria-label="Breadcrumb"]{padding-left:var(--space-4)!important;padding-right:var(--space-4)!important}
  .br-dates{grid-template-columns:1fr}
  .br-type-grid{grid-template-columns:1fr}
}

/* ================================ About v2 ================================ */
/* templates/public/about.html (S227-EXEC-1 Seq #35/#36). abt- prefix,
   own page namespace like every other v2 page. Reuses .home-stats* verbatim
   for the stats band (Seq #36 resolution #3 — same data/layout as Home). */

.abt-page{font-family:var(--font-sans)}

.abt-hero{max-width:56.25rem;margin:0 auto;padding:var(--space-8) var(--space-10) var(--space-4);text-align:center}
.abt-hero__title{margin-bottom:var(--space-4)}
.abt-hero__copy{max-width:38rem;margin:0 auto;color:var(--text-secondary)}

.abt-story{max-width:75rem;margin:0 auto;padding:var(--space-4) var(--space-6) var(--space-8);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-8);align-items:center}
.abt-story--single{grid-template-columns:minmax(0,44rem);justify-content:center}
.abt-story__media{border-radius:var(--radius-lg);width:100%;aspect-ratio:4/3;overflow:hidden}
.abt-story__media img{width:100%;height:100%;object-fit:cover;display:block}
.abt-story__title{margin-bottom:var(--space-3)}
.abt-story__copy{margin:0 0 var(--space-3);color:var(--text-secondary)}
.abt-story__copy--last{margin-bottom:0}

.abt-compare{background:var(--surface-sunken);padding:var(--space-12) var(--space-10)}
.abt-compare__inner{max-width:72.5rem;margin:0 auto}
.abt-compare__title{margin-bottom:var(--space-2);text-align:center}
.abt-compare__subhead{text-align:center;max-width:36rem;margin:0 auto var(--space-8);color:var(--text-secondary)}
.abt-compare__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:var(--space-6)}
.abt-compare-card{padding:var(--space-6)}
.abt-compare-card__icon{width:2.75rem;height:2.75rem;border-radius:var(--radius-md);background:var(--surface-sunken);display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-4);color:var(--action-primary)}
.abt-compare-card__title{margin-bottom:var(--space-2)}
.abt-compare-card__copy{margin:0;color:var(--text-secondary)}

.abt-segments{background:var(--surface-navy);padding:var(--space-12) var(--space-10)}
.abt-segments__grid{max-width:75rem;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(20rem,1fr));gap:var(--space-8)}
.abt-segment__badge{display:inline-block;margin-bottom:var(--space-4);white-space:nowrap}
.abt-segment__title{color:var(--text-on-navy);margin-bottom:var(--space-3)}
.abt-segment__copy{color:var(--text-on-navy);opacity:0.8;max-width:32rem;margin:0}

.abt-principles{max-width:72.5rem;margin:0 auto;padding:var(--space-12) var(--space-10)}
.abt-principles__title{margin-bottom:var(--space-8);text-align:center}
.abt-principles__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(13.75rem,1fr));gap:var(--space-6)}
.abt-principle-card{padding:var(--space-6)}
.abt-principle-card__icon{width:2.75rem;height:2.75rem;border-radius:var(--radius-md);background:var(--surface-sunken);display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-4);color:var(--action-primary)}
.abt-principle-card__title{margin-bottom:var(--space-2)}
.abt-principle-card__copy{margin:0;color:var(--text-secondary)}

.abt-cta{background:var(--surface-navy);padding:var(--space-12) var(--space-10);text-align:center}
.abt-cta__title{color:var(--text-on-navy);margin-bottom:var(--space-3)}
.abt-cta__copy{color:var(--text-on-navy);opacity:0.8;max-width:34rem;margin:0 auto var(--space-6)}
.abt-cta__actions{display:flex;gap:var(--space-3);justify-content:center;flex-wrap:wrap}

.abt-footer-wrap{padding-bottom:4rem}

@media (max-width:900px){
  .abt-story{grid-template-columns:1fr}
}

@media (max-width:640px){
  .abt-hero,.abt-story,.abt-compare,.abt-segments,.abt-principles,.abt-cta,nav[aria-label="Breadcrumb"]{padding-left:var(--space-4)!important;padding-right:var(--space-4)!important}
}

/* ============================== Amenities v2 ============================== */
/* templates/public/amenities.html (S227-EXEC-1 Seq #38/#39). amn- prefix
   for this page's own layout; the amenities block itself reuses .amb-* and
   .surface-card verbatim (Seq #22, Apartment Detail) — no new component
   styling here. */

.amn-page{font-family:var(--font-sans)}
.amn-breadcrumb{max-width:62.5rem;margin:0 auto;padding:var(--space-3) var(--space-10) 0;font-size:var(--text-caption);color:var(--text-muted)}
.amn-breadcrumb__link{color:var(--text-muted)}

.amn-hero{max-width:56.25rem;margin:0 auto;padding:var(--space-8) var(--space-10) var(--space-4);text-align:center}
.amn-hero__title{margin-bottom:var(--space-3)}
.amn-hero__copy{max-width:38rem;margin:0 auto;color:var(--text-secondary)}

.amn-block-section{max-width:62.5rem;margin:0 auto;padding:var(--space-4) var(--space-10) var(--space-12)}
.amn-block-card{padding:var(--space-8)}

.amn-cta{background:var(--surface-navy);padding:var(--space-10) var(--space-10);text-align:center}
.amn-cta__title{color:var(--text-on-navy);margin-bottom:var(--space-3)}
.amn-cta__copy{color:var(--text-on-navy);opacity:0.8;max-width:32rem;margin:0 auto var(--space-6)}

.amn-footer-wrap{padding-bottom:4rem}

@media (max-width:640px){
  .amn-breadcrumb,.amn-hero,.amn-block-section,nav[aria-label="Breadcrumb"]{padding-left:var(--space-4)!important;padding-right:var(--space-4)!important}
  .amn-block-card{padding:var(--space-4)}
}

/* ================================ Contact v2 =============================== */
/* templates/public/contact.html (S227-EXEC-1 Seq #41/#42). cnt- prefix
   for this page's own layout; the Enquiry Form + "Common questions" card
   reuse .br-input/.br-label/.br-field-error/.br-textarea/.br-grid-2/
   .br-submit verbatim (Seq #24, Booking Request) — no new form-atom
   styling here. Reach Us Directly is reused with its one fixed appearance
   (Seq #42 resolution #3 — no sunken-background variant). */

.cnt-page{font-family:var(--font-sans)}
.cnt-breadcrumb{max-width:75rem;margin:0 auto;padding:var(--space-3) var(--space-10) 0;font-size:var(--text-caption);color:var(--text-muted)}
.cnt-breadcrumb__link{color:var(--text-muted)}

.cnt-hero{max-width:75rem;margin:0 auto;padding:var(--space-8) var(--space-10) var(--space-4);text-align:center}
.cnt-hero__title{margin-bottom:var(--space-3)}
.cnt-hero__copy{max-width:34rem;margin:0 auto;color:var(--text-secondary)}

.cnt-2col{max-width:75rem;margin:0 auto;padding:var(--space-4) var(--space-10) var(--space-12);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-8);align-items:start}

/* enq- (renamed from cnt-form-*, S227-EXEC-1 Seq #46): the "Enquiry Form"
   mockup component is reused verbatim on FAQs' sidebar too — extracted to
   templates/public/includes/enquiry_form.html, styles renamed off the
   Contact-page-only cnt- prefix since it's no longer Contact-specific. */
.enq-form-card__title{margin:0}
.enq-form-fields{display:flex;flex-direction:column;gap:var(--space-4)}
.enq-form-success{text-align:center;padding:var(--space-6) 0}
.enq-form-success__title{margin-bottom:var(--space-2)}
.enq-form-success__copy{color:var(--text-secondary);margin:0}

.cnt-faq-card{background:var(--surface-sunken);border-radius:var(--radius-lg);padding:var(--space-5);margin-top:var(--space-5)}
.cnt-faq-card__title{margin-bottom:var(--space-3);font-size:var(--text-body-lg)}
.cnt-faq-card__list{display:flex;flex-direction:column;gap:var(--space-2)}
.cnt-faq-card__link{color:var(--text-primary);text-decoration:none;font-weight:600;font-size:var(--text-body-sm)}
.cnt-faq-card__all{display:inline-block;margin-top:var(--space-3);font-size:var(--text-body-sm);font-weight:700}

.cnt-side{display:flex;flex-direction:column;gap:var(--space-6)}
.cnt-map{border-radius:var(--radius-lg);overflow:hidden;border:0.0625rem solid var(--border-default)}
.cnt-map iframe{border:0;display:block}

.cnt-footer-wrap{padding-bottom:4rem}

@media (max-width:640px){
  .cnt-2col{grid-template-columns:1fr}
  .cnt-breadcrumb,.cnt-hero,nav[aria-label="Breadcrumb"]{padding-left:var(--space-4)!important;padding-right:var(--space-4)!important}
}

/* ================================= FAQs v2 ================================= */
/* templates/public/faqs.html (S227-EXEC-1 Seq #45/#46). faqs- prefix for
   this page's own layout; reuses .faqb-* plus .surface-card/.br-card/.enq-*
   verbatim for the FAQ list, cards, and enquiry form. */

.faqs-page{font-family:var(--font-sans)}
.faqs-breadcrumb{max-width:81.25rem;margin:0 auto;padding:var(--space-3) var(--space-10) 0;font-size:var(--text-caption);color:var(--text-muted)}
.faqs-breadcrumb__link{color:var(--text-muted)}

.faqs-hero{max-width:81.25rem;margin:0 auto;padding:var(--space-6) var(--space-10) 0}
.faqs-hero__title{margin-bottom:var(--space-6)}

.faqs-grid{max-width:81.25rem;margin:0 auto;padding:0 var(--space-10) var(--space-12);display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:var(--space-8);align-items:start}
.faqs-sidebar{display:flex;flex-direction:column;gap:var(--space-5);position:sticky;top:calc(var(--header-height) + var(--space-6))}

/* Real client-side show/hide toggle (mid-task correction, Seq #46) — same
   pill-button visual language as Amenities' All/Building/Apartment filter
   (.amb-filter-btn), own class names since the two toggle different things. */
.faqs-tabs{display:flex;gap:var(--space-2);margin-bottom:var(--space-4)}
.faqs-tab{border:0.0625rem solid var(--border-default);background:transparent;color:var(--text-secondary);border-radius:var(--radius-pill);padding:var(--space-2) var(--space-5);font-family:var(--font-sans);font-size:var(--text-body-sm);font-weight:600;cursor:pointer}
.faqs-tab--active{background:var(--action-primary);color:var(--text-on-gold);border-color:transparent}

.faqs-similar-card__title{margin-bottom:var(--space-4);font-size:var(--text-h3)}
.faqs-similar-card__list{display:flex;flex-direction:column;gap:var(--space-3)}
.faqs-similar-card__link{text-decoration:none;color:inherit;display:flex;justify-content:space-between;align-items:center;padding:var(--space-3);background:var(--surface-sunken);border-radius:var(--radius-md)}
.faqs-similar-card__label{font-weight:600}
.faqs-similar-card__price{color:var(--text-secondary);font-size:var(--text-body-sm)}

.faqs-footer-wrap{padding-bottom:4rem}

@media (max-width:640px){
  .faqs-breadcrumb,.faqs-hero,.faqs-grid,nav[aria-label="Breadcrumb"]{padding-left:var(--space-4)!important;padding-right:var(--space-4)!important}
  .faqs-grid{grid-template-columns:1fr}
  .faqs-sidebar{position:static}
}

/* ===================== Privacy Policy / Terms and Conditions v2 =========== */
/* templates/public/privacy_policy.html + terms.html (Seq #45/#46). One
   shared legal- prefix — the two pages are structurally identical (plain
   legal copy, Header/Footer only). */

.legal-page{font-family:var(--font-sans);font-size:var(--text-body-lg);line-height:var(--lh-loose)}
.legal-body{max-width:47.5rem;margin:0 auto;padding:var(--space-10) var(--space-10) var(--space-12)}
.legal-title{margin-bottom:var(--space-2)}
.legal-updated{color:var(--text-muted);font-size:var(--text-body-sm)}
.legal-body h2{margin:var(--space-8) 0 var(--space-3)}
.legal-body p{margin:0 0 var(--space-4)}
.legal-body ul{padding-left:var(--space-5);margin:0 0 var(--space-4)}
.legal-body li{margin-bottom:var(--space-2)}

@media (max-width:640px){
  .legal-body{padding-left:var(--space-4);padding-right:var(--space-4)}
}

/* ============================ Partner with Us v2 =========================== */
/* templates/public/partner_with_us.html (S227-EXEC-1 Seq #48/#49). pw-
   prefix, mirroring the mockup's own pw- classes. Form itself reuses
   .br-input/.br-select/.br-textarea/.br-field-error/.br-grid-2/.br-submit/
   .enq-form-fields verbatim — no new form-atom styling. */

.pw-page{font-family:var(--font-sans)}
.pw-eyebrow{font-family:var(--font-serif);font-style:italic;font-weight:700;color:var(--action-secondary);font-size:var(--text-body-sm);letter-spacing:0.02em;display:block;margin-bottom:var(--space-2)}

.pw-hero{max-width:75rem;margin:0 auto;padding:var(--space-10) var(--space-10);display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:var(--space-10);align-items:center}
.pw-hero__title{margin-bottom:var(--space-4)}
.pw-hero__copy{color:var(--text-secondary);margin-bottom:var(--space-6);max-width:34rem}
.pw-hero__actions{display:flex;gap:var(--space-3);flex-wrap:wrap}
.pw-hero__media{aspect-ratio:4/3;width:100%;border-radius:var(--radius-xl);overflow:hidden}
.pw-hero__media img{width:100%;height:100%;object-fit:cover;display:block}
.pw-media-placeholder{width:100%;height:100%;border-radius:var(--radius-xl);background:linear-gradient(135deg, var(--surface-sunken), var(--gray-300))}

.pw-stats{background:var(--surface-sunken);padding:var(--space-8) var(--space-10)}
.pw-stats__grid{max-width:75rem;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(12.5rem,1fr));gap:var(--space-6);text-align:center}
.pw-stats__value{font-family:var(--font-serif);font-weight:700;font-size:var(--text-h3);color:var(--text-primary)}
.pw-stats__label{color:var(--text-secondary);font-size:var(--text-body-sm);margin-top:var(--space-1)}

.pw-how{max-width:75rem;margin:0 auto;padding:var(--space-10) var(--space-10)}
.pw-how__title{margin-bottom:var(--space-6)}
.pw-how__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(13.75rem,1fr));gap:var(--space-6)}
.pw-step{width:2.75rem;height:2.75rem;border-radius:var(--radius-md);background:color-mix(in oklch, var(--action-primary) 12%, var(--surface-page));display:flex;align-items:center;justify-content:center;font-family:var(--font-serif);font-weight:700;color:var(--action-primary);flex:none;margin-bottom:var(--space-4)}
.pw-how__step-title{margin-bottom:var(--space-2);font-size:var(--text-body-lg)}
.pw-how__step-copy{margin:0;color:var(--text-secondary);font-size:var(--text-body-sm)}

.pw-benefits{background:var(--surface-navy);padding:var(--space-10) var(--space-10)}
.pw-benefits__grid{max-width:75rem;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-10);align-items:center}
.pw-benefits__title{color:var(--text-on-navy);margin-bottom:var(--space-5)}
.pw-benefits__list{display:flex;flex-direction:column;gap:var(--space-4)}
.pw-benefit{display:flex;gap:var(--space-3);align-items:flex-start}
.pw-benefit__check{flex:none;width:1.25rem;height:1.25rem;margin-top:0.125rem;color:var(--action-primary)}
.pw-benefit__copy{margin:0;color:color-mix(in oklch, var(--text-on-navy) 85%, transparent);font-size:var(--text-body-sm)}
.pw-benefit__copy strong{color:var(--text-on-navy)}

.pw-form-section{max-width:47.5rem;margin:0 auto;padding:var(--space-10) var(--space-10)}
.pw-form-section__head{text-align:center;margin-bottom:var(--space-6)}
.pw-form-section__title{margin-bottom:var(--space-2)}
.pw-form-section__copy{color:var(--text-secondary);margin:0}
.pw-form-card{padding:var(--space-6)}
.pw-form-success{background:color-mix(in oklch, var(--action-primary) 15%, var(--surface-page));color:var(--text-primary);padding:var(--space-4);border-radius:var(--radius-md);font-size:var(--text-body-sm);font-weight:600}

@media (max-width:640px){
  .pw-hero,.pw-benefits__grid{grid-template-columns:1fr}
  .pw-hero,.pw-stats,.pw-how,.pw-benefits,.pw-form-section{padding-left:var(--space-4);padding-right:var(--space-4)}
}

/* =========================== Register your Hotel v2 ======================= */
/* templates/public/register_your_hotel.html (S227-EXEC-1 Seq #52/#53).
   rh- prefix, mirroring the mockup's own rh- classes — structurally near-
   identical to Partner with Us (pw-*), kept as its own namespace rather
   than reused, matching this module's one-prefix-per-page convention.
   Form reuses .br-input/.br-textarea/.br-field-error/.br-grid-2/
   .br-submit/.enq-form-fields verbatim. */

.rh-page{font-family:var(--font-sans)}
.rh-eyebrow{font-family:var(--font-serif);font-style:italic;font-weight:700;color:var(--action-secondary);font-size:var(--text-body-sm);letter-spacing:0.02em;display:block;margin-bottom:var(--space-2)}

.rh-hero{max-width:75rem;margin:0 auto;padding:var(--space-10) var(--space-10);display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:var(--space-10);align-items:center}
.rh-hero__title{margin-bottom:var(--space-4)}
.rh-hero__copy{color:var(--text-secondary);margin-bottom:var(--space-6);max-width:34rem}
.rh-hero__actions{display:flex;gap:var(--space-3);flex-wrap:wrap}
.rh-hero__media{aspect-ratio:4/3;width:100%;border-radius:var(--radius-xl);overflow:hidden}
.rh-hero__media img{width:100%;height:100%;object-fit:cover;display:block}
.rh-media-placeholder{width:100%;height:100%;border-radius:var(--radius-xl);background:linear-gradient(135deg, var(--surface-sunken), var(--gray-300))}

.rh-stats{background:var(--surface-sunken);padding:var(--space-8) var(--space-10)}
.rh-stats__grid{max-width:75rem;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(12.5rem,1fr));gap:var(--space-6);text-align:center}
.rh-stats__value{font-family:var(--font-serif);font-weight:700;font-size:var(--text-h3);color:var(--text-primary)}
.rh-stats__label{color:var(--text-secondary);font-size:var(--text-body-sm);margin-top:var(--space-1)}

.rh-how{max-width:75rem;margin:0 auto;padding:var(--space-10) var(--space-10)}
.rh-how__title{margin-bottom:var(--space-6)}
.rh-how__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(13.75rem,1fr));gap:var(--space-6)}
.rh-step{width:2.75rem;height:2.75rem;border-radius:var(--radius-md);background:color-mix(in oklch, var(--action-primary) 12%, var(--surface-page));display:flex;align-items:center;justify-content:center;font-family:var(--font-serif);font-weight:700;color:var(--action-primary);flex:none;margin-bottom:var(--space-4)}
.rh-how__step-title{margin-bottom:var(--space-2);font-size:var(--text-body-lg)}
.rh-how__step-copy{margin:0;color:var(--text-secondary);font-size:var(--text-body-sm)}

.rh-benefits{background:var(--surface-navy);padding:var(--space-10) var(--space-10)}
.rh-benefits__grid{max-width:75rem;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-10);align-items:center}
.rh-benefits__title{color:var(--text-on-navy);margin-bottom:var(--space-5)}
.rh-benefits__list{display:flex;flex-direction:column;gap:var(--space-4)}
.rh-benefit{display:flex;gap:var(--space-3);align-items:flex-start}
.rh-benefit__check{flex:none;width:1.25rem;height:1.25rem;margin-top:0.125rem;color:var(--action-primary)}
.rh-benefit__copy{margin:0;color:color-mix(in oklch, var(--text-on-navy) 85%, transparent);font-size:var(--text-body-sm)}
.rh-benefit__copy strong{color:var(--text-on-navy)}

.rh-form-section{max-width:47.5rem;margin:0 auto;padding:var(--space-10) var(--space-10)}
.rh-form-section__head{text-align:center;margin-bottom:var(--space-6)}
.rh-form-section__title{margin-bottom:var(--space-2)}
.rh-form-section__copy{color:var(--text-secondary);margin:0}
.rh-form-card{padding:var(--space-6)}
.rh-form-success{background:color-mix(in oklch, var(--action-primary) 15%, var(--surface-page));color:var(--text-primary);padding:var(--space-4);border-radius:var(--radius-md);font-size:var(--text-body-sm);font-weight:600}

@media (max-width:640px){
  .rh-hero,.rh-benefits__grid{grid-template-columns:1fr}
  .rh-hero,.rh-stats,.rh-how,.rh-benefits,.rh-form-section{padding-left:var(--space-4);padding-right:var(--space-4)}
}

/* ============================ Property Preview v2 ============================= */
/* templates/public/property_preview.html (S227-EXEC-1 Seq #82) — Settings
   "preview unsaved Property edits" feature (S171), not a public-routed page.
   pd- prefix for the 2 layout pieces this page needs that .ad-* doesn't
   already cover; every section inside reuses .ad-* plus .surface-card/
   .property-card verbatim (same convention apartment_detail_v2 itself
   established for its own reused sections). */
.pd-page{font-family:var(--font-sans);background:var(--surface-page);min-height:100%}
.pd-hero{padding:var(--space-4) var(--space-6) 0}
.pd-hero__media{aspect-ratio:16/9;width:100%;border-radius:var(--radius-lg);overflow:hidden;margin-bottom:var(--space-5)}
.pd-hero__media img{width:100%;height:100%;object-fit:cover;display:block}

/* ================================= 404 v2 ==================================== */
/* templates/public/404.html (S227-EXEC-1 Seq #56). Fully static page —
   e404- prefix, mirroring the mockup's own centered single-column layout. */

.e404-page{font-family:var(--font-sans);background:var(--surface-page);min-height:100%;display:flex;flex-direction:column}
.e404-body{flex:1;max-width:40rem;margin:0 auto;padding:var(--space-16) var(--space-10);text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}
.e404-code{font-family:var(--font-serif);font-weight:700;font-size:5rem;color:var(--action-primary);line-height:1}
.e404-title{margin:var(--space-4) 0 var(--space-3)}
.e404-copy{color:var(--text-secondary);max-width:32rem;margin:0 auto var(--space-6)}
.e404-actions{display:flex;gap:var(--space-3);flex-wrap:wrap;justify-content:center}

@media (max-width:640px){
  .e404-body{padding-left:var(--space-4);padding-right:var(--space-4)}
}

/* ================================ Landmark v2 ================================ */
/* templates/public/landmark.html (S227-EXEC-1 Seq #59/#60). lmk- prefix,
   own page namespace. Type-sections loop below reuses .home-type-section/
   .home-type-card* verbatim (identical markup/layout to Home's own type
   sections, same convention About v2 already established for .home-stats*). */

.lmk-page{font-family:var(--font-sans)}


.lmk-intro{max-width:75rem;margin:0 auto;padding:var(--space-8) var(--space-10) var(--space-6)}
.lmk-intro p{color:var(--text-secondary);max-width:44rem;margin:0}

.lmk-stats{max-width:75rem;margin:0 auto;padding:0 var(--space-10) var(--space-8);display:grid;grid-template-columns:repeat(auto-fit,minmax(12.5rem,1fr));gap:var(--space-6)}
.lmk-stats__item{background:var(--surface-card);border:0.0625rem solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-5);text-align:center}
.lmk-stats__value{font-family:var(--font-serif);font-weight:700;font-size:var(--text-h2);color:var(--action-primary)}
.lmk-stats__label{color:var(--text-secondary);font-size:var(--text-body-sm)}

.lmk-highlights{background:var(--surface-navy);padding:var(--space-12) var(--space-10);margin-bottom:var(--space-10)}
.lmk-highlights__grid{max-width:75rem;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(20rem,1fr));gap:var(--space-8)}
.lmk-highlights__title{color:var(--text-on-navy);margin-bottom:var(--space-3)}
.lmk-highlights__copy{color:var(--text-on-navy);opacity:0.8;max-width:34rem;margin:0}

.lmk-testimonials{padding:var(--space-4) 0 var(--space-12)}

@media (max-width:640px){
  .lmk-intro,.lmk-stats,.lmk-highlights{padding-left:var(--space-4);padding-right:var(--space-4)}
}

/* ============================ Guest Login / Sign In ========================== */
/* templates/account/{_entrance_base,login,signup,confirm_email_verification_code}.html
   + templates/allauth/elements/*.html (S227-EXEC-1 Seq #70). Restyles
   allauth's real login/signup/email-verification-code pages in place —
   gla- prefix, own page namespace. Reuses .br-input/.br-label/
   .br-field-error/.enq-form-fields/.btn verbatim for the actual form
   fields — no new form-atom styling for those. */

.gla-page{font-family:var(--font-sans)}

.gla-messages{max-width:75rem;margin:0 auto;padding:var(--space-4) var(--space-10) 0}
.gla-message{margin:0 0 var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--surface-sunken);font-size:var(--text-body-sm)}
.gla-message--error{background:color-mix(in oklch, var(--status-error-fg) 12%, var(--surface-page));color:var(--status-error-fg)}
.gla-message--success{background:color-mix(in oklch, var(--action-primary) 12%, var(--surface-page))}

.gla-grid{max-width:75rem;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:calc(100vh - 3.5rem)}

.gla-form-col{display:flex;align-items:center;justify-content:center;padding:var(--space-10)}
.gla-form-wrap{width:100%;max-width:26rem}

.gla-brand{display:flex;align-items:center;justify-content:center;gap:var(--space-3);padding-bottom:var(--space-6);margin-bottom:var(--space-6);border-bottom:0.0625rem solid var(--border-default)}
.gla-brand__mark{height:3rem;flex:none}
.gla-brand__word{font-family:var(--font-script);font-size:2rem;line-height:1;color:var(--text-primary);white-space:nowrap;flex:none}

.gla-heading{text-align:center;margin-bottom:var(--space-2)}
.gla-heading--sm{font-size:var(--text-h3)}
.gla-copy{color:var(--text-secondary);text-align:center;margin:0 0 var(--space-6)}
.gla-copy a{font-weight:600}
.gla-divider{border:none;border-top:0.0625rem solid var(--border-default);margin:var(--space-5) 0 0}

.gla-form__body{margin-bottom:var(--space-2)}
.gla-form__actions{margin-top:var(--space-5);display:flex;flex-direction:column;gap:var(--space-3)}

.gla-field{display:flex;flex-direction:column}
.gla-help{margin-top:var(--space-2)}
.gla-help ul{margin:0;padding-left:var(--space-5);color:var(--text-secondary);font-size:var(--text-body-sm);display:flex;flex-direction:column;gap:var(--space-1)}

.gla-checkbox-row{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-body-sm);color:var(--text-primary);cursor:pointer}
.gla-checkbox{accent-color:var(--action-primary);width:1.125rem;height:1.125rem;flex:none}

.gla-actions{display:flex;flex-direction:column;gap:var(--space-3)}

.gla-details{margin-top:var(--space-5)}
.gla-details__summary{cursor:pointer;font-size:var(--text-body-sm);font-weight:600;color:var(--action-secondary)}
.gla-details__body{margin-top:var(--space-4)}

.gla-footnote{margin-top:var(--space-5);text-align:center;color:var(--text-secondary);font-size:var(--text-body-sm)}
.gla-footnote a{font-weight:600}

.gla-visual{background:var(--surface-navy);display:flex;flex-direction:column;justify-content:center;padding:var(--space-10)}
.gla-visual__inner{max-width:26rem}
.gla-visual__eyebrow{font-family:var(--font-serif);font-style:italic;font-weight:700;color:var(--action-primary);font-size:var(--text-body-sm);letter-spacing:0.02em;display:block;margin-bottom:var(--space-4)}
.gla-visual__title{color:var(--text-on-navy);margin-bottom:var(--space-4)}
.gla-visual__copy{color:var(--text-on-navy);opacity:0.8;margin-bottom:var(--space-6)}
.gla-visual__steps{display:flex;flex-direction:column;gap:var(--space-4)}
.gla-visual__step{display:flex;gap:var(--space-3);align-items:flex-start;color:var(--text-on-navy);opacity:0.85;font-size:var(--text-body-sm)}
.gla-visual__step-num{width:1.75rem;height:1.75rem;border-radius:50%;background:var(--action-primary);color:var(--text-on-gold);font-weight:700;font-size:var(--text-caption);display:flex;align-items:center;justify-content:center;flex:none}
.gla-visual__callout{display:flex;align-items:flex-start;gap:var(--space-3);margin-top:var(--space-6);background:color-mix(in oklch, var(--action-primary) 12%, var(--surface-navy));border-radius:var(--radius-lg);padding:var(--space-4);color:var(--action-primary)}
.gla-visual__callout-title{font-weight:600;font-size:var(--text-body-sm);color:var(--text-on-navy)}
.gla-visual__callout-copy{color:var(--text-on-navy);opacity:0.75;font-size:var(--text-body-sm)}
.gla-visual__note{margin-top:var(--space-5);color:var(--text-on-navy);opacity:0.75;font-size:var(--text-body-sm)}

@media (max-width:800px){
  .gla-grid{grid-template-columns:1fr}
  .gla-visual{display:none}
}
@media (max-width:640px){
  .gla-form-col,.gla-messages{padding-left:var(--space-4);padding-right:var(--space-4)}
}

/* -- Seq #73: manage-family pages (logout/password change/set/email) --
   single-column, no marketing panel (a logged-in "manage your account"
   screen has no self check-in pitch to make, unlike the entrance pages
   above) -- same tokens/atoms throughout. */
.gla-manage-col{display:flex;justify-content:center;padding:var(--space-10) var(--space-4)}
.gla-manage-card{width:100%;max-width:32rem}
.gla-alert{background:var(--surface-sunken);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--text-body-sm);margin:0 0 var(--space-4)}
.gla-badge{display:inline-block;font-size:var(--text-caption);font-weight:700;padding:0.125rem var(--space-2);border-radius:var(--radius-pill);background:var(--surface-sunken);color:var(--text-secondary);margin-left:var(--space-2);vertical-align:middle}
.gla-radio-row{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) 0}
.gla-radio-row input[type="radio"]{accent-color:var(--action-primary);width:1.125rem;height:1.125rem;flex:none}
/* S238 BT-036: the "Show more" toggle ships `hidden` and its class sets `display: inline-block` — without this it showed on every card, clamped or not. */
.home-type-card__show-more[hidden]{display:none}

/* S235-EXEC-39: a SeoPage's body copy under Home / type / landmark / its own page */
.seo-body{max-width:75rem;margin:0 auto;padding:var(--space-8) var(--space-10) var(--space-6)}
.seo-body__copy{max-width:44rem;color:var(--text-secondary)}
.seo-body__copy p{margin:0 0 var(--space-4)}
@media (max-width:640px){.seo-body{padding-left:var(--space-4);padding-right:var(--space-4)}}

/* S261-EXEC-15: guest date-range picker (booking form Screen 2, .brdp).
   Nav buttons reuse the .br-stepper atom; endpoints take the navy surface,
   the in-between nights the status-highlight wash; blocked/past days mute.
   Grid is touch-action:none so the drag gesture owns pointer movement. */
.brdp{display:flex;flex-direction:column;gap:var(--space-3)}
.brdp__head{display:flex;align-items:center;justify-content:space-between}
.brdp__title{font-weight:600;font-size:var(--text-body)}
.brdp__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-1)}
.brdp__weekday{text-align:center;font-size:var(--text-caption);color:var(--text-muted)}
.brdp__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-1) 0;touch-action:none}
.brdp__day{min-height:2.75rem;border:0;background:transparent;border-radius:var(--radius-md);font-size:var(--text-body-sm);font-weight:600;color:var(--text-primary);cursor:pointer;padding:0}
.brdp__day:focus-visible{outline:0.125rem solid var(--focus-ring);outline-offset:-0.125rem}
.brdp__day.is-today{box-shadow:inset 0 0 0 0.0625rem var(--border-strong)}
.brdp__day.in-range{background:var(--status-highlight-bg);border-radius:0}
.brdp__day.is-start,.brdp__day.is-end{background:var(--surface-navy);color:var(--text-on-navy)}
.brdp__day.is-start{border-radius:var(--radius-md) 0 0 var(--radius-md)}
.brdp__day.is-end{border-radius:0 var(--radius-md) var(--radius-md) 0}
.brdp__day.is-start.is-end{border-radius:var(--radius-md)}
.brdp__day.is-disabled{color:var(--text-muted);opacity:0.45;cursor:not-allowed}
.brdp__day.is-empty{visibility:hidden}
.brdp__readout{font-size:var(--text-body-sm);color:var(--text-secondary);margin:0;min-height:1.25rem}
.brdp__readout strong{color:var(--text-primary)}

/* S279-B1 (login-auth-onboarding.md Q29/Q34): auth-form error + pending states. */
.gla-message--error:focus-visible{outline:0.125rem solid var(--status-error-fg);outline-offset:0.125rem}
.gla-form [aria-invalid="true"],.br-form [aria-invalid="true"]{border-color:var(--status-error-fg)}
.btn[aria-busy="true"]{opacity:0.7;cursor:progress}
.gla-lockout__notice{margin-top:var(--space-4)}
.gla-lockout__list{margin:0 0 var(--space-4);padding-left:var(--space-5);color:var(--text-secondary);font-size:var(--text-body-sm)}
