/* inner60aa.css — 2026-09-16
   Union of the inline <style> blocks formerly duplicated in the <head> of the
   8 inner pages (buy, sell, home-evaluation, team, contact, privacy, terms,
   thank-you). Barba.js only swaps the <div data-barba="container">, never the
   <head>, so an inline style living only in one page's head never applied
   after arriving via a menu click from another page. Moving all of it into
   one real stylesheet, loaded in the <head> of every page (including
   index.html, since Barba's very first page's <head> is what stays live for
   every subsequent in-app transition), fixes that.
   Selectors below are the exact rules lifted from each page's inline blocks;
   duplicates across pages are written once. Where two pages defined the same
   selector with different values (only .leader-photo/.leader-card, see the
   TEAM section), both are kept — cascade order plus the fact that only one
   page's markup actually matches each shape resolves it safely (verified: the
   .leaders-grid/.leader-card/.leader-photo markup exists ONLY in team.html;
   grep of all 8 pages confirms zero other page ever renders those classes,
   so the base variant below stays inert dead-CSS on every page except team,
   and team's override at the bottom is the one that actually paints). */

/* ---- shared on all 8 pages (identical block, byte-for-byte, on every page) ---- */
@media (max-width: 979px) {
    .architecture__canvas { width: 190vw !important; left: -45vw !important; max-width: none !important; }
}
body { background: #051936; color: #051936; }
a { color: #051936; }
.js:not(.is-ready), .js:not(.is-ready) * { transition: none !important; }

/* ---- page vars + hero/card/grid base — buy, sell, home-evaluation, contact, privacy, terms, thank-you ---- */
.era-page-css {
    --c-paper: #F8F0E8;
    --c-navy: #051936;
    --c-orange: #F37021;
    --c-soft: #F9A76B;
}
.hero-banner {
    position: relative;
    min-height: 46vh;
    display: flex;
    align-items: flex-end;
    background-size: cover;
    background-position: center;
    color: #F8F0E8;
    overflow: hidden;
}
.hero-banner:before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(5,25,54,.55) 0%, rgba(5,25,54,.72) 60%, rgba(5,25,54,.92) 100%);
}
.hero-banner__inner { position: relative; width: 100%; padding: 4rem 0 3rem; }
.hero-kicker { letter-spacing: .18em; }
.era-card {
    background: #F8F0E8;
    border: 1px solid rgba(5,25,54,.12);
}
.era-section-pad { padding-top: 5rem; padding-bottom: 5rem; }
@media (max-width: 767px) {
    .era-section-pad { padding-top: 2.75rem; padding-bottom: 2.75rem; }
    .hero-banner { min-height: 38vh; }
}
.broker-photo {
    width: 100%;
    aspect-ratio: 3 / 4;
    object-fit: contain;
    object-position: bottom;
    background: #ffffff;
    border: 1px solid rgba(5,25,54,.1);
}
.leader-photo {
    width: 100%;
    max-width: 320px;
    aspect-ratio: 3 / 4;
    object-fit: contain;
    object-position: bottom;
    background: #ffffff;
    border: 1px solid rgba(5,25,54,.1);
}
.badge-img { height: 64px; width: auto; }
.content-photo { width: 100%; height: 100%; object-fit: cover; display: block; }
.content-photo-wrap { aspect-ratio: 4 / 3; overflow: hidden; }
.team-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }
@media (min-width: 768px) {
    .team-grid { grid-template-columns: repeat(5, 1fr); gap: 1.75rem; }
}
.leaders-grid { display: grid; grid-template-columns: 1fr; gap: 2.5rem; }
@media (min-width: 768px) {
    .leaders-grid { grid-template-columns: 1fr 1fr; gap: 3rem; }
}
.leader-card { display: flex; flex-direction: column; gap: 1.25rem; }
@media (min-width: 768px) {
    .leader-card { flex-direction: row; align-items: flex-start; }
}
.form-grid { display: grid; grid-template-columns: 1fr; gap: 1.25rem; max-width: 640px; }
@media (min-width: 768px) {
    .form-grid.two-col { grid-template-columns: 1fr 1fr; }
    .form-grid.two-col .full { grid-column: 1 / -1; }
}

/* ---- team.html override — only page whose markup has .leaders-grid/.leader-card/.leader-photo,
   so this is the version that actually renders; kept separate/after the base block above
   instead of edited in place, per "keep the per-page-scoped ones as-is" ---- */
.leader-photo {
    object-fit: cover;
    object-position: center top;
}
.award-badge-img { max-height: 96px; width: auto; object-fit: contain; align-self: flex-start; }
.leader-card__photo-wrap { width: 100%; max-width: 220px; margin: 0 auto; }
.leader-card__body { padding: 0 1.5rem 1.5rem; }
@media (min-width: 768px) {
    .leader-card { flex-direction: row; align-items: flex-start; gap: 0; }
    .leader-card__photo-wrap { flex: 0 0 220px; max-width: 220px; margin: 0; }
    .leader-card__body { padding: 1.5rem; }
}

/* ---- client-todo + ui-light color-forcing, verbose variant — buy, sell, home-evaluation ---- */
.client-todo { color: #f37021; outline: 1px dashed #f37021; }
/* --t-heading (the kit's h1-h4 / .text-h1-4 color token) is a single hardcoded
   cream value site-wide -- it does NOT flip for .ui-light sections the way
   --t-primary does, so every heading in a ui-light section we added renders
   cream-on-cream and disappears. Force navy for headings in our own ui-light
   sections; ui-dark sections keep the kit's (correct, cream) default. */
.ui-light .text-h1, .ui-light .text-h2, .ui-light .text-h3, .ui-light .text-h4,
.ui-light h1, .ui-light h2, .ui-light h3, .ui-light h4 {
    color: #051936 !important;
}
.faq-list { display: flex; flex-direction: column; gap: .9rem; }
/* era-card always has a cream background (see era-page-css) regardless of the
   surrounding ui-dark/ui-light section, so text inside it must always be forced
   navy -- otherwise a ui-dark ancestor makes it cream-on-cream and invisible.
   NOTE: --c-navy/--c-orange (defined under .era-page-css) are NOT actually in
   scope anywhere in the real DOM on this page, so they resolve to nothing --
   literal hex values are used here instead of var(--c-navy)/var(--c-orange). */
.faq-item, .faq-item summary, .faq-item .faq-item__a, .faq-item .faq-item__a p {
    color: #051936 !important;
}
.step-card .text-h4, .step-card .text, .step-card .text p {
    color: #051936 !important;
}
.step-card .step-card__num { color: #f37021 !important; }
.faq-item { padding: 1.1rem 1.4rem; cursor: pointer; }
.faq-item__q { cursor: pointer; list-style: none; position: relative; padding-right: 2.25rem; }
.faq-item__q::-webkit-details-marker { display: none; }
.faq-item__q::after {
    content: "+";
    position: absolute;
    right: 0;
    top: -0.1em;
    font-size: 1.4rem;
    color: #f37021 !important;
}
.faq-item[open] .faq-item__q::after { content: "\2212"; }
.faq-item__a { padding-top: .6rem; }
.step-card { padding: 1.75rem 1.5rem; height: 100%; }
.step-card__num { color: #f37021 !important; }
.cta-band { text-align: center; }
.cta-band__buttons { justify-content: center; flex-wrap: wrap; }
.contact-method__options { gap: 1.5rem; }
.contact-method__option { display: inline-flex; align-items: center; gap: .4rem; }
.form-label--static { position: static; transform: none; opacity: 1; margin-bottom: .25rem; display: block; }
.collection-notice { opacity: .75; max-width: 640px; }
.collection-notice p { margin: 0 0 .5rem; }
/* The kit's .form-label / input text color inherits the document's base (cream)
   color and is only overridden to navy when floated/focused -- on our ui-light
   form sections that leaves the resting label and typed text cream-on-cream.
   Forcing navy here (scoped to our own form sections only) keeps it legible. */
#buyer-brief .form-label, #seller-brief .form-label, #evaluation-form .form-label,
#buyer-brief input, #buyer-brief select, #buyer-brief textarea,
#seller-brief input, #seller-brief select, #seller-brief textarea,
#evaluation-form input, #evaluation-form select, #evaluation-form textarea,
#buyer-brief .collection-notice p, #seller-brief .collection-notice p, #evaluation-form .collection-notice p {
    color: #051936 !important;
}
#buyer-brief .contact-method__option, #seller-brief .contact-method__option, #evaluation-form .contact-method__option,
#buyer-brief .form-label--static, #seller-brief .form-label--static, #evaluation-form .form-label--static {
    color: #051936 !important;
}

/* ---- client-todo + ui-light color-forcing, compact variant — team, contact, privacy, terms, thank-you ---- */
.client-todo{color:#f37021;outline:1px dashed #f37021}
.ui-light .text-h2:not(.text-color-primary),.ui-light .text-h3:not(.text-color-primary),.ui-light .text-h4:not(.text-color-primary),.ui-light .text-small:not(.text-color-primary),.ui-light .text-small-sm:not(.text-color-primary),.ui-light .text.leading-trim:not(.text-color-primary),.ui-light .text.leading-trim :not(.text-color-primary),.era-card .text-h2:not(.text-color-primary),.era-card .text-h3:not(.text-color-primary),.era-card .text-h4:not(.text-color-primary),.era-card .text-small:not(.text-color-primary),.era-card .text-small-sm:not(.text-color-primary),.era-card .text.leading-trim:not(.text-color-primary),.era-card .text.leading-trim :not(.text-color-primary),.leader-card__body .text-h2:not(.text-color-primary),.leader-card__body .text-h3:not(.text-color-primary),.leader-card__body .text-h4:not(.text-color-primary),.leader-card__body .text.leading-trim:not(.text-color-primary),.leader-card__body .text.leading-trim :not(.text-color-primary){color:#051936 !important;-webkit-text-fill-color:#051936 !important}


/* ==== chrome 2026-09-17 ==== */
/* Global header / menu / footer. Every rule below used to live ONLY in index.html's inline <style>,
   so Home and the inner pages computed different headers (logo 176x58 vs 104x34, header 138 vs 120 px).
   Moved here (linked on all 12 pages) so direct loads and Barba arrivals paint the same chrome. */
/* LOGO — the wordmark is a currentColor mask of client-assets/brand-svg/logo-white.svg (viewBox now cropped
   to the ink, 57 30 528 142). Boxes per the 2026-09-17 brief; no-repeat + center so the wider box never tiles. */
.icon-logo, .icon-logo-xs {
  -webkit-mask-repeat: no-repeat !important; mask-repeat: no-repeat !important;
  -webkit-mask-position: center !important; mask-position: center !important;
  -webkit-mask-size: contain !important; mask-size: contain !important; }
.header__logo .icon-logo { width: 200px !important; height: 66px !important; }
@media (max-width: 1439px) { .header__logo .icon-logo { width: 160px !important; height: 53px !important; } }
.header__logo .icon-logo-xs { width: 120px !important; height: 40px !important; }
/* HEADER-STAYS-TRANSPARENT: the header floats over the page as transparent glass (moved from index inline). */
header.header, .header.ui-dark, .header.ui-background, header.js-header { background-color: transparent !important; }
/* TABLET HEADER GUARD: at 668-979px the kit's reveal never sets data-reveal-visible on the header in headless
   Chrome; keep the header visible there regardless (moved from index inline). */
@media (min-width: 668px) and (max-width: 979px) {
  html.js:not(.js-no-reveal) .header[data-reveal]:not([data-reveal-visible]) { opacity: 1 !important; pointer-events: auto !important; } }
/* button / footer text floor on tablet and phone (moved from index inline). */
@media (max-width: 1199px) { .btn__text, .footer__text { font-size: 13px !important; } }
/* BUTTON TEXT LIKE ERA: navy text/icons on the orange buttons (moved from index inline). */
.btn--primary, .btn--primary .btn__text, .btn--primary .btn__icon,
.header .btn--square, .header .btn--square .icon, .header .btn--square svg,
.intro-sticky__map-link-button, .intro-sticky__map-link-button .icon,
.menu .btn--primary, .menu .btn--square {
  color: #051936 !important; -webkit-text-fill-color: #051936 !important; }
.btn--primary .btn__text, .btn--primary { font-weight: 700 !important; }
/* outline (secondary) square buttons sit on navy: phone icon in the phone header row, Facebook / Instagram in the footer. */
.header .btn--secondary.btn--square, .header .btn--secondary.btn--square .icon, .header .btn--secondary.btn--square svg,
.footer .btn--secondary.btn--square, .footer .btn--secondary.btn--square .icon, .footer .btn--secondary.btn--square svg {
  color: #f4f1ec !important; -webkit-text-fill-color: #f4f1ec !important; }
/* NO TEXT SELECTION on chrome/decor text (moved from index inline). */
.header, .header *, .intro-sticky__text-container, .intro-sticky__text-container *, .intro-sticky__description,
.menu, .menu *, .footer .footer__logo, .seq-cap, [class*="__title"] {
  -webkit-user-select: none !important; user-select: none !important; -webkit-touch-callout: none !important; }
/* MENU (moved from index inline): no photo panel, drum filter off, drum scaled under the logo, drum on tablets. */
.menu__pics { display: none !important; }
.menu__webgl-deco__inner { filter: none !important; mix-blend-mode: screen !important; } /* screen blend = Home's look (index pass-10 rule), filter off (09-15) */
.menu__webgl-deco { transform: scale(0.95) translateY(7%) !important; transform-origin: 50% 50% !important; }
@media (max-width: 979px) { .menu__webgl-deco.is-hidden--md-down { display: block !important; } }
/* FOOTER additions: links row (kit menu-list-bottom markup laid out as a wrapping row), email, social, profiles. */
.footer__links { margin-top: calc(var(--scale-px) * 30) !important; }
.footer__links ul { display: flex; flex-wrap: wrap; gap: calc(var(--scale-px) * 10) calc(var(--scale-px) * 28); margin: 0; padding: 0; list-style: none; }
.footer__links .menu-list-bottom__item { padding-bottom: 0 !important; }
.footer__email { margin-top: calc(var(--scale-px) * 14); }
.footer__profiles { margin-top: calc(var(--scale-px) * 22); }
.footer__profiles a { white-space: nowrap; }
.footer__social { margin-top: calc(var(--scale-px) * 24); }
.footer__bottom-line { display: flex; align-items: center; }
/* ==== end chrome ==== */

/* ==== team 2026-09-17 ==== */
/* team.html only. Every selector is either a tm- class that exists nowhere else,
   or .leaders-grid/.leader-card__.leader-photo/.team-grid/.broker-photo, which this
   file's own header records as markup that exists ONLY in team.html. Rules that
   belong to another worker (.hero-banner, .era-card) are never edited — they are
   overridden here with a tm- qualifier so later-wins does the work. */

/* --- IMAGE MANIFEST 2026-09-17: team banner background + 3:4 photo boxes.
   The height="600" presentational attribute wins unless height:auto is set, which is
   what produced the 220px column with cut arms and the white band over the brokers. --- */
.hero-banner--team { background-image: url(/pages-img/banner-team-2400.jpg); }
@media (max-width: 979px) { .hero-banner--team { background-image: url(/pages-img/banner-team-portrait.jpg); } }
.leader-photo, .broker-photo { height: auto; }

/* --- text colour. The kit's --t-text/--t-heading do not flip for the ui-light
   sections we added, and a bare <p> in .ui-light paints orange, so every piece of
   team copy states its own colour. --- */
.tm-band.ui-light .tm-p,
.tm-band.ui-light .tm-caption,
.tm-band.ui-light .tm-fact__l { color: #051936 !important; -webkit-text-fill-color: #051936 !important; }
.tm-band.ui-dark .tm-p,
.tm-band.ui-dark .tm-caption,
.tm-band.ui-dark .tm-quote__text,
.tm-band.ui-dark .tm-quote__attr { color: #F4F1EC !important; -webkit-text-fill-color: #F4F1EC !important; }
.tm-band .era-card .tm-p,
.tm-band .era-card .tm-name,
.tm-band .era-card .tm-bio p { color: #051936 !important; -webkit-text-fill-color: #051936 !important; }
.tm-caption { opacity: .72; }
.tm-lead { text-transform: none; }

/* --- hero action row (banner) --- */
.tm-hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.tm-social-btn { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%;
  border: 1px solid rgba(244,241,236,.45); color: #F4F1EC !important; -webkit-text-fill-color: #F4F1EC !important;
  transition: background .22s ease, border-color .22s ease, color .22s ease; }
.tm-social-btn:hover { background: #F37021; border-color: #F37021; color: #051936 !important; -webkit-text-fill-color: #051936 !important; }
.tm-social-btn .icon { width: 18px; height: 18px; }
.tm-social-btn--light { border-color: rgba(5,25,54,.32); color: #051936 !important; -webkit-text-fill-color: #051936 !important; }
.tm-social-btn--light:hover { background: #051936; border-color: #051936; color: #F8F0E8 !important; -webkit-text-fill-color: #F8F0E8 !important; }

/* --- intro band + fact strip (a pattern used on no other page) --- */
.tm-intro { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 980px) { .tm-intro { grid-template-columns: minmax(0,.85fr) minmax(0,1.15fr); gap: 4rem; align-items: start; } }
.tm-intro__copy p { max-width: 62ch; }
.tm-facts { display: grid; grid-template-columns: repeat(2,1fr); gap: 1px; list-style: none; margin: 0; padding: 0;
  background: rgba(5,25,54,.16); border: 1px solid rgba(5,25,54,.16); }
@media (min-width: 768px) { .tm-facts { grid-template-columns: repeat(4,1fr); } }
.tm-fact { background: #F8F0E8; padding: 1.1rem .9rem; display: flex; flex-direction: column; gap: .45rem; min-width: 0; }
@media (min-width: 768px) { .tm-fact { padding: 1.6rem 1.3rem; } }
.tm-fact__n { font-family: Decart, sans-serif; font-size: clamp(22px, 3vw, 40px); line-height: 1; letter-spacing: -.01em;
  color: #F37021 !important; -webkit-text-fill-color: #F37021 !important; }
.tm-fact__l { font-family: Gilroy, sans-serif; font-weight: 600; font-size: 11px; letter-spacing: .07em; text-transform: uppercase; line-height: 1.35; opacity: .72; }

/* --- LEADERS: two large cards, 3:4 portrait the full width of the card --- */
.leaders-grid.tm-leaders { margin-left: auto; margin-right: auto; }
@media (min-width: 768px) { .leaders-grid.tm-leaders { max-width: 1120px; gap: 2.5rem; } }
.leader-card.tm-leader { display: block; gap: 0; overflow: hidden; border: 1px solid rgba(5,25,54,.16); }
@media (min-width: 768px) { .leader-card.tm-leader { display: block; flex-direction: column; align-items: stretch; gap: 0; } }
.tm-leader__photo { width: 100%; max-width: none; margin: 0; background: #fff; }
@media (min-width: 768px) { .tm-leader__photo { flex: none; max-width: none; margin: 0; } }
.tm-leader .leader-photo { display: block; width: 100%; max-width: none; aspect-ratio: 3 / 4;
  object-fit: cover; object-position: 50% 0%; background: #fff; border: 0; border-bottom: 1px solid rgba(5,25,54,.12); }
/* phone: the deployed portraits are 900 px wide, so the painted box is capped at 296 CSS px
   (296 x DPR3 = 888 device px) — above that the browser would be enlarging the file. */
@media (max-width: 767px) {
  .leader-card.tm-leader { padding-top: 1.25rem; }
  .tm-leader__photo { max-width: 296px; margin: 0 auto; border: 1px solid rgba(5,25,54,.12); }
  .tm-leader .leader-photo { border-bottom: 0; }
}
.tm-leader__body { padding: 1.5rem 1.35rem 1.75rem; }
@media (min-width: 768px) { .tm-leader__body { padding: 2rem 2rem 2.25rem; } }
.tm-leader .tm-bio p { max-width: 52ch; }

/* --- profile pills (Centris / Royal LePage / Realtor.ca) --- */
.tm-pills { display: flex; flex-wrap: wrap; gap: .5rem; }
.tm-pill { display: inline-flex; align-items: center; gap: .5em; padding: .62em 1.05em; border: 1px solid rgba(5,25,54,.3);
  border-radius: 999px; font-family: Gilroy, sans-serif; font-weight: 700; font-size: 11px; letter-spacing: .08em;
  text-transform: uppercase; line-height: 1; text-decoration: none;
  color: #051936 !important; -webkit-text-fill-color: #051936 !important;
  transition: background .22s ease, border-color .22s ease, color .22s ease; }
.tm-pill:hover { background: #051936; border-color: #051936; color: #F8F0E8 !important; -webkit-text-fill-color: #F8F0E8 !important; }
.tm-pill .icon { width: 11px; height: 11px; flex: 0 0 auto; }
.tm-pill--lg { font-size: 12px; padding: .95em 1.7em; }

/* --- direct contact line --- */
.tm-direct { font-family: Gilroy, sans-serif; font-size: 13px; line-height: 1.5; }
.tm-direct__link { color: #051936 !important; -webkit-text-fill-color: #051936 !important;
  border-bottom: 1px solid rgba(5,25,54,.35); padding-bottom: 1px; text-decoration: none; }
.tm-direct__link:hover { color: #F37021 !important; -webkit-text-fill-color: #F37021 !important; border-bottom-color: #F37021; }
.tm-direct__sep { opacity: .45; margin: 0 .4em; }

/* --- BROKERS: five uniform cards, 3:4 photo, no white band --- */
.team-grid.tm-brokers { grid-template-columns: repeat(2,1fr); gap: 1rem; }
@media (min-width: 768px) { .team-grid.tm-brokers { grid-template-columns: repeat(5,1fr); gap: 1.25rem; } }
.tm-broker { display: flex; flex-direction: column; overflow: hidden; border: 1px solid rgba(5,25,54,.16); }
.tm-broker .broker-photo { display: block; width: 100%; max-width: none; aspect-ratio: 3 / 4;
  object-fit: cover; object-position: 50% 0%; background: #fff; border: 0; border-bottom: 1px solid rgba(5,25,54,.12); }
.tm-broker__body { padding: .95rem .9rem 1.1rem; display: flex; flex-direction: column; align-items: flex-start; }
.tm-name__alt { display: block; font-weight: 400; font-size: .82em; opacity: .6; }
.tm-broker__link { margin-top: .7rem; font-family: Gilroy, sans-serif; font-weight: 700; font-size: 11px; letter-spacing: .08em;
  text-transform: uppercase; text-decoration: none; padding-bottom: 2px; border-bottom: 1px solid rgba(5,25,54,.35);
  color: #051936 !important; -webkit-text-fill-color: #051936 !important; }
.tm-broker__link:hover { color: #F37021 !important; -webkit-text-fill-color: #F37021 !important; border-bottom-color: #F37021; }

/* --- AWARDS row: badge beside its caption, never painted above its own 816x528 source --- */
.tm-awards { display: grid; grid-template-columns: 1fr; gap: 1.25rem; }
@media (min-width: 768px) { .tm-awards { grid-template-columns: 1fr 1fr; gap: 2rem; } }
.tm-award { display: flex; gap: 1.25rem; align-items: flex-start; background: #F8F0E8;
  border: 1px solid rgba(5,25,54,.16); padding: 1.35rem; }
.tm-award__badge { flex: 0 0 auto; width: auto; height: 76px; max-height: 76px; object-fit: contain; align-self: flex-start; }
@media (min-width: 768px) { .tm-award__badge { height: 88px; max-height: 88px; } }
.tm-award__body { min-width: 0; }
.tm-award .tm-name, .tm-award .tm-p { color: #051936 !important; -webkit-text-fill-color: #051936 !important; }

/* --- HOW WE WORK: split quote band (no other page uses a quote band) --- */
.tm-split { display: grid; grid-template-columns: 1fr; gap: 2.25rem; }
@media (min-width: 980px) { .tm-split { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 4rem; align-items: start; } }
.tm-quote { margin: 0; padding-left: 1.25rem; border-left: 2px solid #F37021; }
@media (min-width: 980px) { .tm-quote { padding-left: 2rem; } }
.tm-quote__text { font-family: Decart, sans-serif; font-size: clamp(26px, 2.7vw, 44px); line-height: 1.16; letter-spacing: -.01em; margin: 0; }
.tm-quote__attr { margin: 1.1rem 0 0; font-family: Gilroy, sans-serif; font-weight: 600; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; opacity: .72; }
.tm-split__body .tm-p { max-width: 56ch; }

/* --- CTA band --- */
.tm-cta { display: grid; grid-template-columns: 1fr; gap: 1.75rem; align-items: center; }
@media (min-width: 980px) { .tm-cta { grid-template-columns: minmax(0,1.2fr) minmax(0,1fr); gap: 3rem; } }
.tm-cta__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .9rem; }
.tm-cta__social { display: inline-flex; gap: .6rem; }
/* ==== end team ==== */

/* ==== contact 2026-09-17 ==== */
/* Owner: worker "contact". Scope: body content of contact.html / thank-you.html /
   privacy.html / terms.html only. This block is appended LAST on purpose: where it needs to
   change a rule it does not own, it overrides it here instead of editing the original. */

/* --- IMAGE-MANIFEST entry for contact.html (banner-contact-2400 / -portrait) --- */
.hero-banner--contact { background-image: url(/pages-img/banner-contact-2400.jpg); }
@media (max-width: 979px) {
  .hero-banner--contact { background-image: url(/pages-img/banner-contact-portrait.jpg); }
}

/* =========================================================================
   contact-quote-split  (SITE-STANDARD pageRequirements.contact)
   ========================================================================= */
.cqs { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2.5rem; }
/* MEASURED 2026-09-17, twice: the kit's reveal plugin leaves part of this section at opacity 0
   at 1920 and which part changes when the element list changes (run 1 hid the office block, run 2
   hid the phone + emails). data-reveal is therefore removed from every element inside .cqs; this
   guard covers anything the plugin still touches. Visible beats animated on a contact page. */
.cqs [data-reveal], .cqs [data-reveal] *, .cqs .word, .cqs .line {
  opacity: 1 !important; visibility: visible !important; transform: none !important;
}
@media (min-width: 980px) {
  .cqs { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 4rem; row-gap: 3rem; align-items: start; }
  .cqs { grid-template-rows: max-content auto; align-content: start; }
  .cqs__intro   { grid-column: 1; grid-row: 1; max-width: 46ch; }
  .cqs__details { max-width: 46ch; }
  .cqs__details { grid-column: 1; grid-row: 2; }
  .cqs__form    { grid-column: 2; grid-row: 1 / span 2; }
}

/* left column — phone first, large, tappable */
.cqs__phone {
  display: inline-flex; align-items: center; gap: .6rem; margin-top: 1.5rem;
  text-decoration: none; color: #051936 !important; -webkit-text-fill-color: #051936;
}
.cqs__phone-num { font-size: clamp(28px, 4.4vw, 42px); font-weight: 700; line-height: 1.05; letter-spacing: -.01em; }
.cqs__phone-icon { color: #F37021 !important; flex: 0 0 auto; }
.cqs__phone:hover .cqs__phone-num { color: #F37021 !important; }
.cqs__mail { display: flex; align-items: flex-start; gap: .6rem; margin-top: 1rem; font-size: 16px; line-height: 1.6; color: #051936 !important; }
.cqs__mail-icon { color: #F37021 !important; flex: 0 0 auto; margin-top: .25rem; }
.cqs__mail a { color: #051936 !important; text-decoration: underline; text-underline-offset: 3px; }
.cqs__mail a:hover { color: #F37021 !important; }

/* left column, lower — NAP / hours / map / social */
.cqs__details-title { margin-bottom: 1rem; }
.cqs__nap, .cqs__hours { font-size: 16px; line-height: 1.7; color: #051936 !important; margin: 0 0 1rem; }
.cqs__hours { opacity: .78; }
.cqs__map { margin: 0 0 1.25rem; }
.cqs__map-frame { display: block; width: 100%; max-width: 100%; height: 320px; border: 1px solid rgba(5, 25, 54, .18); background: #e8e4dd; }
@media (max-width: 767px) { .cqs__map-frame { height: 240px; } }
.cqs__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }
.cqs .btn--secondary, .cqs .btn--secondary .btn__text, .cqs .btn--secondary .icon, .cqs .btn--secondary svg {
  color: #051936 !important; -webkit-text-fill-color: #051936 !important;
}
.cqs__mesh { display: flex; flex-wrap: wrap; gap: .5rem 1.75rem; }

/* =========================================================================
   the form card
   ========================================================================= */
.cqs__form { background: #FFFFFF; border: 1px solid rgba(5, 25, 54, .16); padding: 2rem; }
@media (max-width: 767px) { .cqs__form { padding: 1.5rem 1.25rem; } }
.cqs__form-title { margin: 0 0 .5rem; }
.cqs__form-sub { margin: 0 0 1.5rem; font-size: 15px; line-height: 1.6; color: #051936 !important; opacity: .78; }

.vd-form { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.1rem; }
@media (min-width: 560px) { .vd-form { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.vd-field { display: block; min-width: 0; }
.vd-field--full, .vd-fieldset, .vd-consent, .vd-actions, .vd-hp { grid-column: 1 / -1; }
.vd-label {
  display: block; margin: 0 0 .4rem; font-size: 13px; font-weight: 600; letter-spacing: .06em;
  text-transform: uppercase; color: #051936 !important; -webkit-text-fill-color: #051936 !important;
}
.vd-req { color: #F37021 !important; }
.vd-input {
  display: block; width: 100%; box-sizing: border-box; min-height: 48px; padding: .7rem .9rem;
  font: inherit; font-size: 16px; line-height: 1.4; color: #051936 !important; -webkit-text-fill-color: #051936 !important;
  background: #FFFFFF; border: 1px solid rgba(5, 25, 54, .32); border-radius: 0; appearance: none;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.vd-textarea { min-height: 132px; resize: vertical; }
.vd-input::placeholder { color: rgba(5, 25, 54, .45); }
.vd-input:hover { border-color: rgba(5, 25, 54, .55); }
.vd-input:focus, .vd-input:focus-visible {
  outline: 2px solid #F37021; outline-offset: 1px; border-color: #F37021; box-shadow: 0 0 0 3px rgba(243, 112, 33, .16);
}
.vd-error { margin: .35rem 0 0; min-height: 0; font-size: 13px; line-height: 1.4; color: #C33C0B !important; -webkit-text-fill-color: #C33C0B !important; }
.vd-error:empty { display: none; }
.vd-field.is-invalid .vd-input { border-color: #C33C0B; background: #FFF6F1; }

.vd-fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.vd-radios { display: flex; flex-wrap: wrap; gap: .5rem 1.75rem; }
.vd-radio { display: inline-flex; align-items: center; gap: .45rem; min-height: 44px; font-size: 15px; color: #051936 !important; cursor: pointer; }
.vd-radio input { width: 20px; height: 20px; accent-color: #F37021; margin: 0; }
.vd-radio input:focus-visible { outline: 2px solid #F37021; outline-offset: 2px; }

.vd-consent { margin: .25rem 0 0; font-size: 13px; line-height: 1.6; color: #051936 !important; opacity: .8; }
.vd-consent a { color: #051936 !important; text-decoration: underline; text-underline-offset: 3px; }
.vd-consent a:hover { color: #F37021 !important; }
.vd-actions { margin-top: .5rem; }
.vd-actions .btn { min-height: 48px; }

/* honeypot — off-screen, never display:none (bots skip hidden fields) */
.vd-hp { position: absolute !important; left: -9999px !important; top: auto !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }

/* =========================================================================
   privacy.html + terms.html — document layout
   ========================================================================= */
.legal-doc { max-width: 76ch; counter-reset: legalsec; }
.legal-meta {
  margin: .75rem 0 0; font-size: 13px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
  color: #F37021 !important; -webkit-text-fill-color: #F37021 !important;
}
.legal-toc { margin-top: 2rem; padding: 1.25rem 1.5rem; background: #FFFFFF; border: 1px solid rgba(5, 25, 54, .16); border-left: 3px solid #F37021; }
.legal-toc__title { margin: 0 0 .75rem; font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #051936 !important; opacity: .7; }
.legal-toc__list { margin: 0; padding: 0 0 0 1.35rem; list-style: decimal; }
.legal-toc__list li { margin: 0 0 .4rem; font-size: 15px; line-height: 1.5; color: #051936 !important; }
.legal-toc__list li::marker { color: #F37021; font-weight: 700; }
.legal-toc__list a { color: #051936 !important; text-decoration: underline; text-underline-offset: 3px; }
.legal-toc__list a:hover { color: #F37021 !important; }
.legal-intro { margin-top: 1.75rem; }
/* MEASURED 2026-09-17: the kit implements .leading-trim with a zero-height ::before, so a CSS
   counter on the heading computes correctly (content: counter(legalsec) ". ") and still paints
   nothing. The number is a real sibling element instead. */
.legal-num {
  margin: 3rem 0 .35rem; padding-top: 1.5rem; border-top: 1px solid rgba(5, 25, 54, .18);
  font-size: 13px; font-weight: 700; letter-spacing: .1em;
  color: #F37021 !important; -webkit-text-fill-color: #F37021 !important;
}
.legal-doc h2.legal-h2 { margin-top: 0 !important; scroll-margin-top: 170px; }
.legal-doc .text.leading-trim p { margin: 0 0 1rem; line-height: 1.75; }
.legal-doc .text.leading-trim p:last-child { margin-bottom: 0; }
.legal-contact { padding: 1.5rem; background: #FFFFFF; border: 1px solid rgba(5, 25, 54, .16); }
.legal-contact a { color: #051936 !important; text-decoration: underline; text-underline-offset: 3px; }
.legal-contact a:hover { color: #F37021 !important; }

/* =========================================================================
   thank-you.html
   ========================================================================= */
.ty-doc { max-width: 68ch; }
.ty-phone {
  display: inline-flex; align-items: center; gap: .6rem; margin-top: 1.75rem;
  text-decoration: none; color: #051936 !important; -webkit-text-fill-color: #051936;
}
.ty-phone-num { font-size: clamp(28px, 4.4vw, 40px); font-weight: 700; line-height: 1.05; }
.ty-phone-icon { color: #F37021 !important; flex: 0 0 auto; }
.ty-phone:hover .ty-phone-num { color: #F37021 !important; }
.ty-phone-note { margin: .35rem 0 0; font-size: 14px; color: #051936 !important; opacity: .72; }
.ty-actions { display: flex; flex-wrap: wrap; gap: .75rem; }
.ty-actions .btn--secondary, .ty-actions .btn--secondary .btn__text { color: #051936 !important; -webkit-text-fill-color: #051936 !important; }
.ty-cond[hidden], #no-request[hidden] { display: none !important; }

/* MEASURED 2026-09-17 (before): at 390 px privacy.html scrollWidth was 395 and terms.html 401.
   Cause is the unresolved [CLIENT:LONG_TOKEN_NAME] placeholders — one long underscore token has no
   break opportunity, so it widens the layout viewport. Let them break until the client copy lands. */
.legal-doc { overflow-wrap: break-word; }
.legal-doc .client-todo, .legal-doc code, .legal-doc a { overflow-wrap: anywhere; word-break: break-word; }

/* phone: keep every one of these four pages inside the 390 px viewport */
@media (max-width: 767px) {
  .cqs, .vd-form { gap: 1.75rem 1rem; }
  .legal-doc, .ty-doc { max-width: 100%; }
  .cqs__map-frame, .vd-input, .legal-toc, .legal-contact, .cqs__form { max-width: 100%; }
}
/* ==== end contact ==== */

/* ==== buysell 2026-09-17 ==== */
/* Owner: worker "buysell". Scope: the body modules of buy.html / sell.html /
   home-evaluation.html, plus every .hero-banner* rule (assigned territory).
   Nothing here is used by any other page except the shared .hero-banner rules,
   which are page-scoped by their own --buy / --sell / --eval modifier classes.
   NOTE on pseudo-elements: the kit's .leading-trim uses BOTH ::before and
   ::after on the element it sits on, so no rule below attaches a pseudo to a
   .leading-trim element - decorative rules and bars are real spans instead. */

/* --- 1. HERO GUTTER ------------------------------------------------------
   inner60aa.css declares .hero-banner__inner{padding:4rem 0 3rem}. That
   shorthand zeroes the left/right padding the element's own .container-h class
   supplies, so the hero H1 painted at x=0 while the first content column's text
   started at the container gutter (measured before: 1920 H1 0 vs text 80;
   1440 0 vs 80; 1024 0 vs 71.2; 768 0 vs 41.6; 390 0 vs 20).
   Re-apply the container's OWN custom properties. They are declared by
   .container-h on this same element, so the hero gutter is identical to the
   content gutter by construction at every width, with no hard-coded numbers. */
.hero-banner__inner {
    padding-top: 4rem;
    padding-bottom: 3rem;
    padding-left: var(--container-h-padding-left) !important;
    padding-right: var(--container-h-padding-right) !important;
}
@media (max-width: 767px) {
    .hero-banner__inner { padding-top: 3rem; padding-bottom: 2.25rem; }
}

/* --- 2. HERO ART, per page (IMAGE-MANIFEST.json 2026-09-17) ---------------
   Only the two classes this worker's pages need; the inline background-image
   attributes were removed from the markup (an inline style outranks a class). */
.hero-banner--buy  { background-image: url(/pages-img/banner-buy-2400.jpg); }
.hero-banner--sell { background-image: url(/pages-img/banner-sell-2400.jpg); }
@media (max-width: 979px) {
    .hero-banner--buy  { background-image: url(/pages-img/banner-buy-portrait.jpg); }
    .hero-banner--sell { background-image: url(/pages-img/banner-sell-portrait.jpg); }
}
/* home-evaluation reuses the --sell files (manifest note: "same files as
   sell.html - reuse the .hero-banner--sell class, do not add a second rule").
   A different focal point and a different overlay direction stop the two hero
   photos reading as one picture. */
.hero-banner--eval { background-position: 24% 42%; }
.hero-banner--eval:before {
    background: linear-gradient(118deg, rgba(5,25,54,.93) 0%, rgba(5,25,54,.78) 46%, rgba(5,25,54,.52) 100%);
}

/* --- 3. BAND + CHROME VOCABULARY ----------------------------------------
   SITE-STANDARD.json sectionVariety.adjacentChromeRule: no two consecutive
   sections may share {eyebrow style, heading style, divider style, band}.
   Three bands (light / tint / dark), three eyebrows (plain / rule / pill),
   three headings (plain / bar / hairline) and an optional top divider. */
.section.bs-band--tint { background-color: #ECE5D9; }
.section.bs-topline { border-top: 1px solid rgba(5,25,54,.16); }
.section.ui-dark.bs-topline { border-top-color: rgba(248,240,232,.2); }

.bs-eyebrow__line {
    display: inline-block; width: 34px; height: 1px; background: currentColor;
    vertical-align: middle; margin-right: .75rem; position: relative; top: -.12em;
}
.bs-eyebrow__pill {
    display: inline-block; border: 1px solid currentColor; border-radius: 999px;
    padding: .34em .9em .3em; line-height: 1.15;
}
.bs-head-bar {
    display: block; width: 54px; height: 3px; margin-top: .85rem; background: #F37021;
}
/* .cta-band centres its text, but a fixed-width block bar still hugs the left edge. */
.cta-band .bs-head-bar { margin-left: auto; margin-right: auto; }
.bs-head--hair { padding-top: 1rem; border-top: 1px solid rgba(5,25,54,.18); }
.ui-dark .bs-head--hair { border-top-color: rgba(248,240,232,.24); }

/* --- 4. MODULE: two-column icon checklist (buy / representation) --------- */
.bs-checks { list-style: none; margin: 1.75rem 0 0; padding: 0; display: grid; grid-template-columns: 1fr; gap: 1.1rem; }
@media (min-width: 768px) { .bs-checks { grid-template-columns: 1fr 1fr; gap: 1.5rem 2.5rem; } }
.bs-checks li { display: flex; gap: .85rem; align-items: flex-start; }
/* NB: no .leading-trim on the <ul> - its ::before/::after would become grid items and
   leave the first cell empty (measured: item 1 pushed into column 2). */
.bs-checks__icon { flex: 0 0 22px; width: 22px; height: 22px; margin-top: .3rem; color: #F37021; }
.bs-checks__body { flex: 1 1 auto; min-width: 0; }
.bs-checks__t { font-weight: 700; }
.ui-light .bs-checks, .ui-light .bs-checks li, .ui-light .bs-checks p { color: #051936; }
.ui-dark .bs-checks, .ui-dark .bs-checks li, .ui-dark .bs-checks p { color: #F8F0E8; }

/* --- 5. MODULE: vertical timeline (sell / process) ----------------------- */
.bs-timeline { list-style: none; margin: 0; padding: 0; position: relative; }
.bs-timeline:before {
    content: ""; position: absolute; left: 19px; top: 20px; bottom: 20px;
    width: 1px; background: rgba(5,25,54,.2);
}
.ui-dark .bs-timeline:before { background: rgba(248,240,232,.24); }
.bs-timeline__item { position: relative; padding-left: 64px; padding-bottom: 2.1rem; }
.bs-timeline__item:last-child { padding-bottom: 0; }
.bs-timeline__num {
    position: absolute; left: 0; top: 0; width: 38px; height: 38px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 15px; line-height: 1;
    color: #051936; background: #F37021;
}
.ui-light .bs-timeline__title, .ui-light .bs-timeline .text p { color: #051936; }
.ui-dark .bs-timeline__title, .ui-dark .bs-timeline .text p { color: #F8F0E8; }

/* --- 6. MODULE: two-column Q/A grid (buy / faq) -------------------------- */
.bs-qa-grid { display: grid; grid-template-columns: 1fr; gap: 1.9rem 3rem; }
@media (min-width: 768px) { .bs-qa-grid { grid-template-columns: 1fr 1fr; } }
.bs-qa { border-top: 2px solid #F37021; padding-top: 1rem; }
.bs-qa__a { margin-top: .6rem; }
.ui-dark .bs-qa__q, .ui-dark .bs-qa__a p { color: #F8F0E8; }
.ui-light .bs-qa__q, .ui-light .bs-qa__a p { color: #051936; }

/* --- 7. MODULE: plain divider Q/A list (home-evaluation / faq) ----------- */
.bs-qa-list { border-top: 1px solid rgba(248,240,232,.24); }
.ui-light .bs-qa-list { border-top-color: rgba(5,25,54,.18); }
.bs-qa-list__item {
    padding: 1.6rem 0; border-bottom: 1px solid rgba(248,240,232,.24);
    display: grid; grid-template-columns: 1fr; gap: .55rem;
}
.ui-light .bs-qa-list__item { border-bottom-color: rgba(5,25,54,.18); }
@media (min-width: 980px) {
    .bs-qa-list__item { grid-template-columns: minmax(0,40%) minmax(0,60%); gap: 2.5rem; }
}
.ui-dark .bs-qa-list__q, .ui-dark .bs-qa-list__a p { color: #F8F0E8; }
.ui-light .bs-qa-list__q, .ui-light .bs-qa-list__a p { color: #051936; }

/* --- 8. MODULE: comparison table (home-evaluation) -----------------------
   The wrapper scrolls, not the page, so documentElement.scrollWidth stays at
   the viewport width on a phone. */
.bs-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.bs-table-hint { display: none; }
@media (max-width: 979px) {
    .bs-table-hint { display: block; margin-top: 1.4rem; font-family: Gilroy, sans-serif; font-weight: 500;
        font-size: calc(var(--scale-text-rem) * 1); letter-spacing: .04em; text-transform: uppercase; opacity: .75; }
}
/* the kit's .text-small / .text-small-sm / .text-small-xs all force text-transform:uppercase,
   so the table sets its own typography instead of borrowing one of them. */
.bs-table { width: 100%; border-collapse: collapse; min-width: 660px; text-align: left;
    font-family: Gilroy, sans-serif; font-weight: 500; letter-spacing: 0; text-transform: none;
    font-size: calc(var(--scale-text-rem) * 1.15); line-height: 1.45; }
.bs-table caption { text-align: left; padding-bottom: 1rem; opacity: .8;
    font-family: Gilroy, sans-serif; font-weight: 500; text-transform: none; letter-spacing: 0;
    font-size: calc(var(--scale-text-rem) * 1.05); line-height: 1.5; }
.bs-table th, .bs-table td {
    padding: .95rem 1.15rem; vertical-align: top; text-align: left; font-weight: 500;
    border-bottom: 1px solid rgba(248,240,232,.2);
}
.bs-table thead th, .bs-table tbody th {
    font-weight: 700; text-transform: uppercase; letter-spacing: .045em;
    font-size: calc(var(--scale-text-rem) * .95);
}
.bs-table thead th { border-bottom: 1px solid rgba(248,240,232,.45); padding-top: 0; white-space: normal; }
.bs-table tbody th { width: 20%; opacity: .85; }
.bs-table .is-primary { background: rgba(243,112,33,.18);
    border-left: 2px solid rgba(243,112,33,.6); border-right: 2px solid rgba(243,112,33,.6); }
.bs-table thead .is-primary { border-bottom-color: #F37021; }
.bs-table__note { display: block; font-weight: 500; opacity: .75; margin-top: .25rem; }
.ui-dark .bs-table, .ui-dark .bs-table th, .ui-dark .bs-table td, .ui-dark .bs-table caption { color: #F8F0E8; }
.ui-light .bs-table, .ui-light .bs-table th, .ui-light .bs-table td, .ui-light .bs-table caption { color: #051936; }
.ui-light .bs-table th, .ui-light .bs-table td { border-bottom-color: rgba(5,25,54,.18); }
.ui-light .bs-table thead th { border-bottom-color: rgba(5,25,54,.4); }

/* --- 9. flip the strategy row on sell so its photo leads (buy keeps text-first) --- */
@media (min-width: 768px) { .bs-media-first > .bs-media-col { order: -1; } }

/* --- 10. floating textarea label overflowed the viewport at 390 ----------
   measured before: sell scrollWidth 391 and home-evaluation 401 against an
   innerWidth of 390; the offender was the kit's absolutely-positioned
   .form-label on the textarea (width 370.7 / 380.7 inside a 350 px column). */
#buyer-brief .form-label:not(.form-label--static),
#seller-brief .form-label:not(.form-label--static),
#evaluation-form .form-label:not(.form-label--static) {
    max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* ==== end buysell ==== */

/* ==== team-addendum 2026-09-17 ==== */
/* Worker "team", appended after the first team block on purpose: it overrides a rule
   it does not own instead of editing it.
   .hero-banner__inner sets `padding: 4rem 0 3rem`, and that shorthand wipes the
   horizontal gutter .container-h puts on the same element — which is why the banner
   kicker and H1 start at x=0 and the first letter is clipped. Measured on team.html
   at 1920 before this rule: kicker/H1 left edge 0 px, while the next section's copy
   starts at 80 px. Restoring the two container-h custom properties gives the banner
   the same gutter as every other section, at every breakpoint.
   SCOPED TO THE TEAM BANNER ONLY. buy.html, sell.html and contact.html have the same
   defect from the same rule — that is the buysell worker's .hero-banner territory. */
.hero-banner--team .hero-banner__inner {
  padding-left: var(--container-h-padding-left);
  padding-right: var(--container-h-padding-right);
}
/* ==== end team-addendum ==== */

/* ==== team-spacing 2026-09-17 ==== */
/* Worker "team", third and final append (append-only: nothing above is rewritten).
   The kit's mt-1/mt-2/mt-3 utilities scale with the viewport and are very large at 1920
   (measured on the first pass: broker name -> role 55 px, section caption 150 px above it),
   which left the new team layout airy and mis-aligned. Every rule below is scoped to a tm-
   class that exists only on team.html. */

/* intro band: wider lede column so the H2 sets in two lines, tighter paragraph rhythm */
@media (min-width: 980px) { .tm-intro { grid-template-columns: minmax(0,1.15fr) minmax(0,1fr); } }
.tm-intro__copy p + p { margin-top: .9rem !important; }
.tm-band .tm-intro__copy { margin-top: 1rem !important; }
.tm-band h2.text-h3 { margin-top: .55rem !important; }

/* section rhythm */
.tm-facts   { margin-top: 2.25rem !important; }
.tm-leaders { margin-top: 1.75rem !important; }
.tm-brokers { margin-top: 2rem !important; }
.tm-awards  { margin-top: 2rem !important; }
.tm-band .tm-caption { margin-top: 1.6rem !important; }
.tm-cta .tm-p { margin-top: .9rem !important; }

/* leader card internals */
.tm-leader__body .tm-name  { margin: 0; }
.tm-leader__body .tm-role  { margin-top: .45rem !important; }
.tm-leader__body .tm-bio   { margin-top: 1rem !important; }
.tm-leader__body .tm-pills { margin-top: 1.5rem !important; }
.tm-leader__body .tm-direct{ margin-top: .95rem !important; }

/* broker cards: role and CONTACT line up across all five even when a name runs to two lines */
.tm-broker__body { flex: 1 1 auto; }
.tm-broker__body .tm-name { margin: 0; line-height: 1.3; min-height: 2.6em; }
.tm-broker__body .tm-role { margin-top: 0 !important; }
.tm-broker__link { margin-top: auto !important; padding-top: .8rem; }
/* ==== end team-spacing ==== */

/* ==== team-polish 2026-09-17 ==== */
/* Worker "team", fourth and last append (append-only protocol: three other workers were
   writing to this file at the same time, so nothing above is ever rewritten in place).
   Type scale corrections measured off the 1920 click-through screenshots:
   .text-h4 renders ~56 px here, which is right for a section heading and far too large
   for a badge caption or a sub-heading sitting next to a pull quote. */
.tm-award .tm-name { font-size: clamp(18px, 1.35vw, 26px) !important; line-height: 1.2; }
.tm-award .tm-p    { margin-top: .6rem !important; }

.tm-quote__text { font-size: clamp(28px, 3.2vw, 54px); }
.tm-split__body h2.tm-name { font-size: clamp(20px, 1.7vw, 32px) !important; line-height: 1.15; }
.tm-split__body .tm-p { margin-top: .75rem !important; }
.tm-split__body > div + div { margin-top: 2.25rem !important; }

/* a heading and the copy it introduces: leading-trim already removed the leading, so the
   kit's mt-1 leaves a gap that reads as a break rather than a pair */
.tm-band .tm-intro__copy  { margin-top: 1.35rem !important; }
.tm-leader__body .tm-role { margin-top: .75rem !important; }
.tm-leader__body .tm-bio  { margin-top: 1.15rem !important; }
/* ==== end team-polish ==== */

/* ==== team-fix2 2026-09-17 ==== */
/* Worker "team", final append. Two defects measured on the 390x844@3 click-through:
   (1) documentElement.scrollWidth was 397 vs innerWidth 390 — the 7 px came from
       .tm-award, whose caption contains the unbreakable placeholder token
       [CLIENT:TOP_TEN_CATEGORY_AND_SCOPE] (34 chars, no break opportunity) next to a
       117 px badge in a 168 px text column;
   (2) a heading and the paragraph under it touched, because .leading-trim removes the
       leading the previous margin was relying on. */
@media (max-width: 639px) {
  .tm-award { flex-direction: column; gap: 1rem; }
  .tm-award__badge { height: 64px; max-height: 64px; }
}
.tm-award__body, .tm-award .tm-p, .tm-award .client-todo { min-width: 0; overflow-wrap: anywhere; word-break: break-word; }
.tm-award .tm-p { margin-top: .8rem !important; }
.tm-split__body .tm-p { margin-top: .95rem !important; }
/* ==== end team-fix2 ==== */

/* ==== global 2026-09-17 ==== */
/* Repair worker "global", round 1. Overrides only — nothing above this line is edited.
   Rules that belong to another worker are re-stated here (later rule wins) rather than changed
   in place. */

/* X3 / X7 — the acute on MOSHE.
   assets/fonts/Decart-Regular-v888.woff2 (built 00:43) drew ONE near-vertical tick and used it for
   BOTH acute and grave (Eacute contour 1 and Egrave contour 1 were byte-identical: x 204-284,
   y 708-848), and shipped no circumflex at all, so "Cote"/"Grace" fell out of Decart into a system
   fallback. Decart-Regular-v888b re-cuts those marks: a real 58-unit slanted acute centred on the
   base letter (E centre 243.5, mark centre 243.5), a mirrored grave, a chevron circumflex, plus the
   A/O circumflex glyphs the copy needs. The original file and its @font-face rule in global60aa.css
   are untouched; this face is declared later with the same family/weight/style and the same
   unicode-range, so it wins for U+00C0-00FF. The home hero keeps its separate Georgia path. */
@font-face {
    font-family: Decart;
    src: url(../fonts/Decart-Regular-v888b.woff2) format("woff2"),
         url(../fonts/Decart-Regular-v888b.woff) format("woff");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
    unicode-range: U+00C0-00FF;
}

/* X10 / E5 — the cookie bar sat bottom-CENTRE on desktop, directly over the centred contact form's
   EMAIL label and input, and became a full-width strip across the bottom ~42px at phone width.
   Bottom-LEFT corner on both: on the home page the kit already lifts the bottom-left scroll chevron
   while .with-cookie-consent is set, and the 3D-MAP pill lives bottom-right, so the left corner is
   the one that collides with nothing. */
.cookie-consent--simple { justify-content: flex-start; }
/* the home page keeps a 40px scroll chevron in the same bottom-left corner (measured at 1920x1080:
   .intro-sticky__next x 80-120, y 980-1020), so the pill is lifted clear of it. 112px is above the
   chevron's top edge (100px from the viewport bottom) and still below the 3D-MAP pill on the right. */
@media (min-width: 568px) {
    .cookie-consent { bottom: 112px; }
}
@media (max-width: 567px), (max-width: 979px) and (max-height: 415px) {
    .cookie-consent {
        right: auto;
        left: 10px;
        bottom: 10px;
        width: auto;
        max-width: calc(100vw - 20px);
    }
    .cookie-consent--simple .cookie-consent__container { border-radius: 20px; }
    /* and give the page somewhere to scroll so nothing stays permanently under the bar */
    .with-cookie-consent footer { padding-bottom: 80px; }
}

/* M5 — footer at phone width. Measured before: .text-small-xs computed 8px on 11 pages (12px on the
   home page only, because the home-scoped block carries larger sizes), .text-small 12px vs 14px on
   home, and 0 of 21 footer links reached 40px of tap height (max 30px, nav links painted 7-11px).
   Font sizes are raised to the home page's values so the two stop diverging; tap height comes from
   padding/min-height, not from font-size. */
@media (max-width: 567px), (max-width: 979px) and (max-height: 415px) {
    footer .text-small-xs { font-size: 12px; }
    footer .text-small,
    footer .text-small-sm { font-size: 14px; }

    footer .menu-list-bottom,
    footer .menu-list-bottom__item { font-size: 12px; }
    footer .menu-list-bottom__item > a {
        display: inline-flex;
        align-items: center;
        min-height: 44px;
        font-size: 12px;
    }

    footer .footer__email a,
    footer a[href^="tel:"] {
        display: inline-flex;
        align-items: center;
        min-height: 44px;
    }
    footer .footer__email { line-height: 1.2em; }

    /* the four broker-profile links are inline inside one sentence: give each an inline-block
       box tall enough to tap and let the line boxes grow to match, instead of forcing a big
       line-height on the paragraph (which spread the sentence over four ragged lines). */
    footer .footer__profiles { font-size: 12px; }
    footer .footer__profiles a {
        display: inline-block;
        line-height: 1.2;
        padding: 13px 2px;
    }

    footer .btn--square { min-width: 44px; min-height: 44px; }
    footer .btn--primary { min-height: 44px; }
}
/* ==== end global ==== */

/* ==== unknown 2026-09-17 ==== */
/* Fix X6 — "Listings hero eyebrow clears the sticky header at 390".
   Owner: worker "unknown". Scope: the listings.html hero band only.

   ROOT CAUSE (measured in real Chrome via a menu click-through Home -> LISTINGS,
   not a direct load):
     .header-sticky-placeholder (global60aa.css, off-limits) computes to 50px at
     390 and 80px at 1920, while the fixed <header> measures 80px at 390 and 146px
     at 1920 — the placeholder under-reserves the header band by 30px at phone
     width. Every OTHER inner page hides that shortfall by accident: its hero copy
     lives in .hero-banner__inner, which carries padding-top 4rem / 3rem (<=767) —
     exactly the missing 40px / 30px. listings.html is the one inner page whose hero
     has no .hero-banner wrapper, so its .container-h sits flush on the placeholder
     and the eyebrow paints INSIDE the header band, straight through the logo, the
     phone button and the LISTINGS pill.

   MEASURED BEFORE, 390x844 (kicker top / H1 top / kicker-vs-header overlap / gap
   below the last hero child):
     listings.html  50 / 77  / 7px overlap / 0px
     buy.html       80 / 107 / 0px overlap / 22.5px
   At 1920: listings 80 / 148.4, buy 120 / 188.4 — the same 40px offset.

   FIX: give the listings hero the SAME padding values as .hero-banner__inner, in the
   same rem units, so the two agree by construction at every width rather than by a
   hard-coded pixel number. Horizontal padding is left to .container-h's own custom
   properties (untouched), so the 20px / 80px gutter is unchanged.
   Scoped to main[data-history="list"], which is unique to listings.html — checked all
   12 pages on the server: listing.html is "listing", the other ten are "". No other
   page, and no other worker's block, is affected. Descendant combinator on purpose:
   the kit's smooth-scroll may wrap a section's children at runtime, and section--top
   holds exactly one .container-h on this page. */
main[data-history="list"] section.section--top .container-h {
    padding-top: 4rem;
    padding-bottom: 3rem;
}
@media (max-width: 767px) {
    main[data-history="list"] section.section--top .container-h {
        padding-top: 3rem;
        padding-bottom: 2.25rem;
    }
}
/* ==== end unknown ==== */

/* ==== team-fix3 2026-09-17 ==== */
/* Repair worker "team", round-1 repair pass. Append-only: nothing above this line is edited;
   where a rule below changes one it does not own, it re-states it here and lets later-wins do it.

   M9 — white bands behind the seven portraits. MEASURED on the server image files before the fix:
   every one of the 14 jpgs (7 people x 450/900) had corners rgb(255,255,255) and 40.2-55.9 % of
   the frame near-white, i.e. they are studio cut-outs composited onto PURE WHITE, while every card
   they sit in computes era-card cream rgb(248,240,232). At 390 CSS px that painted a 294 px white
   block with ~27 px cream gutters inside each leader card, and a white block in each of the five
   broker cards.
   The ROOT fix is in the image files, not here: all 14 were re-matted onto #F8F0E8 on the GPU
   interpreter using a border-connected flood fill over the pure-white background only (with a
   16 px partial-coverage band for hair edges), so INTERIOR white is untouched — Frank Liu's and
   Vincent Yuan's white shirts still measure 2.43 % / 0.02 % of the frame as white after the matte.
   The three rules below remove the white surfaces and the boxing borders that only existed to
   contain that white block, so the portrait now sits directly on the card. */
.tm-leader__photo,
.tm-leader .leader-photo,
.tm-broker .broker-photo { background: #F8F0E8; }
.tm-leader .leader-photo,
.tm-broker .broker-photo { border: 0; }
@media (max-width: 767px) { .tm-leader__photo { border: 0; } }

/* C7 — the two award headings carried a bare [YEAR] that painted as ordinary navy copy. They are
   now <span class="client-todo">[CLIENT:…_YEAR]</span> in team.html, so the token is a long
   unbreakable string inside an h3 next to a 64 px badge; team-fix2 already gave .tm-award .tm-p
   and .tm-award .client-todo a break opportunity, the heading itself did not have one. */
.tm-award .tm-name { min-width: 0; overflow-wrap: anywhere; }
/* ==== end team-fix3 ==== */

/* ==== home 2026-09-17 ==== */
/* M2 / E1 / OVERFLOW-HOME — index.html at 390 measured documentElement.scrollWidth 412.
   Culprit measured live: #art-deco H2 "An honest conversation. A clear direction." renders
   Decart 57px; its longest word "CONVERSATION." is 392px wide inside the 350px .container-h
   column at x=20 -> 20+392=412.  Word width / font-size measured at 6.877, so cap the size to
   what the column can actually hold.  min() means nothing shrinks at a width where it already
   fits (>=432px the 57px original wins).  overflow-wrap is the hard floor for the moments the
   Decart webfont has not loaded and a wider fallback is painting. */
@media (max-width: 440px) {
  #art-deco .art-deco__container-upper > h2.text-h2 {
    font-size: min(calc(var(--scale-text-rem) * 5.7), calc((100vw - 40px) / 7));
    overflow-wrap: break-word;
    word-break: normal;
  }
}
/* ==== end home ==== */

/* ==== buysell-r1 2026-09-17 ==== */
/* Round-1 repairs, worker "buysell". Appended AFTER every other block on
   purpose: rules this worker owns but had already shipped are overridden here
   rather than edited in place, so no other worker's block is touched.

   I1-TABLET -- the (max-width:979px) portrait swap served the 1170-wide PHONE
   cut into a tablet box. Measured at 820x1180 dpr2: buy painted 820x1053 css =
   1640x2106 device px, file 1170x1725 -> up_true 1.40; team painted 820x622 =
   1640x1244 -> up_true 1.40. The box is WIDTH-bound at every tablet width
   (1640/1170 = 1.402), so a wider portrait cut is the fix. The new files are
   1720x2208, which covers 820css@2 (1640x2106) and 834css@2 with ~4% headroom.
   Phones are deliberately left on the 1170 cut (390css@3 = 1170 device px,
   up 1.00) so no phone downloads a 500-700 KB banner it cannot use; hence the
   min-width:600px guard. The existing 2400 LANDSCAPE file is not the answer --
   background-size:cover on a 1640x2106 box scales it by 2106/1125 = 1.872x,
   worse than the 1.40 being fixed.
   -webkit-min-device-pixel-ratio is listed as a second query for Safari < 16;
   a browser that cannot parse it drops only that half of the list.

   X11 / I2-DUPLICATE-ART -- home-evaluation.html shared sell.html's hero file
   AND its content photo. It now has its own art cut from the HD pool
   (mount-royal-skyline-autumn.jpg 3992x2246 and living-room-wood-wall.jpg
   3000x2000, both native downscales, no upscaling). hero-banner--sell was
   removed from the markup, so nothing on that page points at a sell file. */

.hero-banner--eval {
    background-image: url(/pages-img/banner-eval-2400.jpg);
    background-position: 50% 40%;
}
@media (max-width: 979px) {
    .hero-banner--eval { background-image: url(/pages-img/banner-eval-portrait.jpg); }
}

/* LAST in this block on purpose: at 820px both this query and the plain
   (max-width:979px) one above match, specificity is equal, so source order
   decides which background-image wins. */
@media (max-width: 979px) and (min-width: 600px) and (min-resolution: 1.5dppx),
       (max-width: 979px) and (min-width: 600px) and (-webkit-min-device-pixel-ratio: 1.5) {
    .hero-banner--buy     { background-image: url(/pages-img/banner-buy-portrait@2x.jpg); }
    .hero-banner--sell    { background-image: url(/pages-img/banner-sell-portrait@2x.jpg); }
    .hero-banner--team    { background-image: url(/pages-img/banner-team-portrait@2x.jpg); }
    .hero-banner--contact { background-image: url(/pages-img/banner-contact-portrait@2x.jpg); }
    .hero-banner--eval    { background-image: url(/pages-img/banner-eval-portrait@2x.jpg); }
}
/* ==== end buysell-r1 ==== */

/* ==== contact-r1 2026-09-17 ==== */
/* Repair round 1, worker "contact". Appended last on purpose: where it changes a rule it does not
   own it overrides it here. Every selector is scoped with :has() to the pages this worker owns
   (privacy.html + terms.html carry .legal-doc, thank-you.html carries .ty-doc) — nothing global. */

/* M3 — MEASURED 2026-09-17 at 390 px: on privacy / terms / thank-you the header logo box painted
   uniform cream (min 241 / max 241 / std 0.00 vs std 60.6-76.3 on the other 9 pages) and the
   LISTINGS pill showed its orange border with no glyph pixels. Cause: those three pages open with
   `section--top ui-light ui-background` (cream) while the kit header is ui-dark (cream ink) and the
   chrome block forces `header.header{background-color:transparent}`; .header__background is parked
   at translateY(-102%) until the sticky state fires, so the cream ink sat on a cream band.
   The other 9 pages get their contrast from a dark hero photo. Paint the header's own background
   panel navy on these three and pin it down. The shared header markup is NOT touched. */
[data-barba="container"]:has(.legal-doc) .header__background,
[data-barba="container"]:has(.ty-doc) .header__background {
  background: #051936 !important;
  border-bottom: 1px solid rgba(244, 241, 236, .16) !important;
  transform: translateY(0) !important;
}

/* X3 — MEASURED 2026-09-17 at 390 px: thank-you.html content ends at y=599, the footer starts at
   y=843, and rows 600-804 painted flat rgb(22,24,28) — the kit's `.ui-light-background{background:#16181c}`
   showing through because the wrapper is stretched to the viewport while the page is short.
   Give the wrapper the page's own cream surface instead of the kit's dark default. */
[data-barba="container"]:has(.ty-doc),
[data-barba="container"]:has(.legal-doc) { background: #F4F1EC !important; }

/* C1b — visit note added to contact.html's left column (matches .cqs__hours weight). */
.cqs__visit { font-size: 15px; line-height: 1.65; color: #051936 !important; margin: 0 0 1.25rem; opacity: .78; }
/* M3 follow-up — painting the header band opaque exposed an overlap that was invisible while the
   header was transparent glass. MEASURED 2026-09-17 on privacy / terms / thank-you: header bottom
   vs first-heading top = 146/130 at 1920 (16 px under the band), 121/118 at 1024, 91/101 at 768,
   80/78 at 390. The kit's .header-sticky-placeholder is simply shorter than the header. Add the
   shortfall plus a 24 px gap as section padding, in the kit's own --scale-px so it tracks the
   header as that shrinks (header 146 -> placeholder 80 -> 90 px of padding at scale 1). NOTE: --scale-px already
   carries the px unit (the kit writes calc(var(--scale-px) * 30)), so the multiplier is unitless —
   writing 90px here makes the calc invalid at computed-value time and padding-top falls to 0. */
[data-barba="container"]:has(.legal-doc) .section--top,
[data-barba="container"]:has(.ty-doc) .section--top { padding-top: calc(var(--scale-px, 1px) * 90) !important; }
/* phone: --scale-px is 1px below the kit's scaling range, so the calc above would leave a 60 px gap.
   MEASURED at 390: header 80, placeholder 50 -> 60 px padding puts the heading at 110 (30 px clear). */
@media (max-width: 767px) {
  [data-barba="container"]:has(.legal-doc) .section--top,
  [data-barba="container"]:has(.ty-doc) .section--top { padding-top: 60px !important; }
}
/* ==== end contact-r1 ==== */

/* ==== home-md 2026-09-17 ==== */
/* Same #art-deco H2 defect in the md type branch, found while re-measuring M2/E1 across widths.
   Measured on the live page: at 600 and 700 the word "CONVERSATION." is 747px inside a 504/604px
   column and documentElement.scrollWidth reads 795 (horizontal scroll, same SITE-STANDARD rule as
   E1); from ~768 to ~935 the page does not scroll but the word is painted past the column and
   clipped (768: h2 scrollWidth 761 vs clientWidth 666 - screenshot a768-artdeco.png shows
   "CONVERSATIO" with the N and the full stop cut off).  Column measures 0.866 x viewport in this
   band and the word measures 6.353 x font-size, so 13.1vw is the largest size that fits with a 4%
   margin.  min() keeps the kit's own size wherever it already fits: it stops biting at ~1000px.
   Media query is the kit's own md query verbatim, upper-bounded at 1099 so the xxl type branch is
   never touched. */
@media (min-width: 568px) and (max-width: 1099px) and (max-aspect-ratio: 13 / 9),
       (min-width: 668px) and (max-width: 1099px) and (min-height: 416px),
       (min-width: 980px) and (max-width: 1099px) {
  #art-deco .art-deco__container-upper > h2.text-h2 {
    font-size: min(calc(var(--scale-text-rem) * 14), 13.1vw);
    overflow-wrap: break-word;
    word-break: normal;
  }
}
/* ==== end home-md ==== */

/* ==== globalr2 2026-09-17 ==== */
/* E5 — the consent notice was stealing clicks from page content.
   Measured 2026-09-17 with _TOOLS/probe_ccgeom_g.js: the <dialog id="cookie-consent"> ALREADY
   carries pointer-events:none (1920: x=20 y=926 w=1880 h=42; 390: x=10 y=792 w=249 h=42), so the
   earlier "make the wrapper click-through" fix is in place and is not the problem. The blocker is
   .cookie-consent__container — the PAINTED pill — which is pointer-events:all at 252x42 (1920) and
   249x42 (390). At 1920 it sits on buy.html's hero CTA "PLAN MY PURCHASE" at (161,929); at 390 it
   covers six more targets in the band x 10-259, y 792-834.
   Root fix, two parts:
   (1) only the two real controls (the "cookies" link and the Accept button) take pointer events.
       The pill's background and its paragraph do not, so every point that is not a control
       hit-tests straight through to the page beneath. Live rects shrink from 252x42 / 249x42 to
       link 42x14 + accept 60x20 (1920) and link 35x11 + accept 71x20 (390).
   (2) at phone width the pill moves to the bottom-RIGHT corner, which puts those two remaining
       live rects at x >= 233. Every target the sweep found blocked at 390 is at x <= 195, so none
       of them is under a control any more. Desktop stays bottom-LEFT on purpose: bottom-right at
       1920 is the 3D-MAP pill's corner, and the buy CTA is cleared by (1) alone. */
#cookie-consent .cookie-consent__container,
#cookie-consent .cookie-consent__container p { pointer-events: none; }
#cookie-consent .cookie-consent__container a,
#cookie-consent .cookie-consent__container button { pointer-events: auto; }
@media (max-width: 567px), (max-width: 979px) and (max-height: 415px) {
    .cookie-consent { left: auto; right: 10px; }
    .cookie-consent--simple { justify-content: flex-end; }
}
/* Desktop vertical position. The pill was lifted to bottom:112px to clear the home page's
   scroll chevron; measured 2026-09-17 with _TOOLS/probe_band_g.js at 1920x1080 that band also
   lands exactly on buy.html's hero CTA "PLAN MY PURCHASE", which the click now passes through
   but a human still cannot read. Candidate bands scored by how many elements a 252x42 pill at
   left:20px would cover across all 12 pages at scroll-top:
     bottom 20px  -> 8 covered, 1 primary CTA (index)
     bottom 60px  -> 7 covered, 1 primary CTA (index)
     bottom 112px -> 7 covered, 1 primary CTA (buy)      <- what we had
     bottom 180px -> 6 covered, 0 primary CTA            <- chosen
     bottom 240px -> 5 covered, 0 primary CTA, but 2 map legend buttons
   180px also clears the buy CTA at 768px viewport height, because that hero is 100vh so the CTA
   sits ~107px from the bottom there. */
@media (min-width: 568px) {
    .cookie-consent { bottom: 180px; }
}
/* ==== end globalr2 ==== */

/* ==== head 2026-09-17 ==== */
/* All 12 pages now link the SAME 11 stylesheets in the same order (kit rule 1), so
   montreal-map.css is live on every page, not just the map page. Two of its rules were
   written page-global but meant for the map page only - re-scope them here. inner60aa.css
   is last in the unified list, so these win.
   Measured on the live server before this change (probe_fp12_head.js, 1920x1080):
   footer.footer computed to position:relative z-index:auto on 11 pages and
   position:relative z-index:2 on 3d-map.html. montreal-map.css's position:relative is
   already the computed value everywhere, so only z-index has to be put back.
   (.js-page-content:has(.page-3d-map) in the same file is self-scoping - .page-3d-map
   matches 1 element on 3d-map.html and 0 on the other 11, measured with
   probe_selmatch_head.js - so it needs no neutraliser.) */
footer.footer { z-index: auto; }
body:has(.page-3d-map) footer.footer { position: relative; z-index: 2; }
/* ==== end head ==== */

/* ==== head-cascade 2026-09-17 ==== */
/* Unifying the stylesheet list moved inner60aa.css from 4th to LAST on listings.html and
   listing.html, which flipped one equal-specificity source-order contest:
     inner60aa.css:57     .era-section-pad     { padding-top:5rem; padding-bottom:5rem }  (50/50px, root is 62.5%)
     listings60aa.css:99  .rl-notfound-section { padding-top:8rem; padding-bottom:6rem }  (80/60px)
   Both are 0-1-0, so whichever sheet came last won. listings60aa.css used to. Measured on
   listing.html with probe_fp12_head.js: paddingTop 80px -> 50px, paddingBottom 60px -> 50px,
   section height 795.938px -> 755.938px. listings60aa.css:94-98 records why the 8rem is there -
   with less top padding the not-found H1 rides up into the fixed header. Put it back; this block
   is after inner60aa.css:57 so it wins at every width, which is what the old order did. */
.rl-notfound-section { padding-top: 8rem; padding-bottom: 6rem; }
/* ==== end head-cascade ==== */


/* ==== coordinator-2 2026-09-17 pm: owner wants the cookie bar bottom-CENTRE (as the ERA original has it).
   An earlier override set justify-content:flex-start, which pushed it to the bottom-left. ==== */
.cookie-consent--simple{ justify-content: center !important; }
@media (max-width: 979px){
  .cookie-consent--simple{ justify-content: center !important; }
}
/* ==== end coordinator-2 ==== */
