/* idx.css — home search and listing pages (idx_pages.py). Loaded only on those pages.
   Disclosure and attribution text is body-size, full-contrast ink on purpose: MLS Grid IDX Rules
   16, 22 and 24 require it readily visible and no smaller than the listing text. */
.idx-sample{background:#FDE68A;color:#1C2127;font-size:.95rem;padding:10px 0}

/* search */
.idx-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px 16px;margin:0 0 20px}
.idx-filters label{display:flex;flex-direction:column;gap:6px;font-size:.875rem;font-weight:600;color:var(--ink)}
.idx-filters select{min-height:44px;border:1.5px solid var(--border);border-radius:var(--r8);background:var(--surface);
  padding:0 12px;font:inherit;font-size:1rem;font-weight:500;color:var(--ink)}
.idx-count{font-weight:600;color:var(--ink);margin:4px 0 16px}
.idx-note{color:var(--s700)}
.idx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:22px}
.idx-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r12);overflow:hidden;
  box-shadow:var(--sh1);transition:transform .18s,box-shadow .18s}
.idx-card:hover{transform:translateY(-2px);box-shadow:var(--sh2)}
.idx-card-link,.idx-card-link:hover{display:block;color:inherit}
/* contain, never cover: a crop could hide the NWMLS watermark (DUP E.3) */
.idx-card-photo{aspect-ratio:3/2;background:var(--sunken);display:flex;align-items:center;justify-content:center}
.idx-card-photo img{width:100%;height:100%;object-fit:contain}
.idx-nophoto{font-size:.9375rem;color:var(--s700);padding:0 16px;text-align:center}
.idx-card-body{padding:14px 16px 16px}
.idx-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 6px}
.idx-price{font-family:var(--display);font-size:1.35rem;font-weight:700;color:var(--ink)}
.idx-card-addr{margin:0 0 4px;color:var(--ink);font-weight:600;line-height:1.35}
.idx-card-addr span{display:block;font-weight:500;color:var(--s700)}
.idx-card-facts{margin:0 0 8px;color:var(--s700)}
/* 15 October 2026 attribution. NWMLS require the listing broker line in a font size and colour
   as prominent as any call-to-action or contact-broker button (.btn here is 1rem/600), adjacent
   to that button, or above the fold where the display has none. So it is body size at full
   contrast - it is not the fine print it replaced. */
.idx-card-attr{margin:0 0 4px;font-size:1rem;line-height:1.5;font-weight:700;color:var(--ink)}
.idx-card-attr strong{font-weight:700}
.idx-card-src{margin:0;font-size:.8125rem;color:var(--s700)}
/* Matched to the worked example NWMLS circulated with the 15 October notice: the line sits
   directly under the contact-broker box, bold, dark, with an accent rule down its left edge.
   Their example is the safest thing to copy - a reviewer comparing the two should see the same
   object. Links keep the dark colour so the block reads as one unit, underlined so they still
   look clickable. */
.idx-ask-attr{margin:14px 0 0;padding:2px 0 2px 12px;border-left:4px solid var(--ember);
  font-size:1rem;line-height:1.5;font-weight:700;color:var(--ink)}

.idx-pager{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:28px 0 0}
.idx-pager button{min-width:44px;min-height:44px;padding:0 12px;border:1.5px solid var(--border);border-radius:var(--r8);
  background:var(--surface);font:inherit;font-weight:600;color:var(--ink);cursor:pointer}
.idx-pager button[aria-current="page"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.idx-pager button:disabled{opacity:.45;cursor:default}

/* status: every status is named in words; pending reads unlike anything for sale (DUP E.5) */
.idx-status{display:inline-block;font-size:.8125rem;font-weight:700;padding:3px 10px;border-radius:var(--pill);
  line-height:1.4;white-space:nowrap}
.idx-g-active{background:#DCFCE7;color:#14532D}
.idx-status--first-look{background:#DBEAFE;color:#1E3A8A}
.idx-status--contingent,.idx-status--active-under-contract{background:#FEF3C7;color:#78350F}
.idx-g-pending{background:#E5E7EB;color:#1F2937;border:1px dashed #6B7280;white-space:normal}

/* listing page */
.idx-gallery .idx-hero{width:100%;height:auto;max-height:640px;object-fit:contain;background:var(--sunken);border-radius:var(--r12)}
.idx-gallery--none{aspect-ratio:3/1;background:var(--sunken);border-radius:var(--r12);display:flex;align-items:center;justify-content:center}
.idx-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:10px}
.idx-thumbs img{width:100%;height:auto;aspect-ratio:3/2;object-fit:contain;background:var(--sunken);border-radius:var(--r8)}
.idx-courtesy{font-size:1.0625rem;color:var(--ink);margin:14px 0 22px;display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center}
/* The listing broker's name, phone and email, required alongside the firm from 15 Oct 2026.
   Same size and colour as the firm beside it: the attribution may not be set in smaller or
   fainter type than the listing description (IDX Rule 22). */
.idx-broker{display:inline-flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.idx-broker a{color:inherit}
.idx-src{display:inline-flex;align-items:center;gap:6px}
.idx-tree{display:inline-block;width:22px;height:22px;vertical-align:middle}
.idx-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:40px}
@media (max-width:900px){.idx-layout{grid-template-columns:1fr}}
.idx-h1{font-size:clamp(1.8rem,3.4vw,2.5rem);margin:10px 0 6px}
.idx-loc{color:var(--s700);margin:0 0 10px}
.idx-price-lg{font-family:var(--display);font-size:2rem;font-weight:700;color:var(--ink);margin:0 0 12px}
.idx-keyfacts{display:flex;flex-wrap:wrap;gap:8px 22px;list-style:none;padding:0;margin:0 0 26px;color:var(--s700)}
.idx-keyfacts b{color:var(--ink)}
.idx-h2{font-size:1.5rem;margin:28px 0 12px}
.idx-dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:0 28px;margin:0}
.idx-dl div{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--border)}
.idx-dl dt{color:var(--s700)}
.idx-dl dd{margin:0;color:var(--ink);font-weight:600;text-align:right}
.idx-ask{position:sticky;top:96px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r12);
  padding:22px;box-shadow:var(--sh1)}
.idx-ask-h{font-family:var(--display);font-size:1.25rem;font-weight:700;color:var(--ink);margin:0 0 8px}
.idx-ask .btn{width:100%;margin-top:6px}

/* disclosures */
/* 17px, the same as the listing text, never smaller */
.idx-legal{border-top:1px solid var(--border);background:var(--surface);padding:32px 0 36px;color:var(--ink);
  font-size:1.0625rem;line-height:1.6}
.idx-legal-src{display:flex;align-items:center;gap:12px;font-weight:600}
/* MLS GRID publish one version of their mark and it is white-on-transparent (mlsgrid.com).
   Rule 23 wants their approved logo, so it goes on a dark chip rather than being recoloured.
   Recolouring somebody's trademark to suit your background is not using their approved logo. */
.idx-grid-logo{height:28px;width:auto;background:var(--ink);padding:5px 9px;border-radius:6px;
  box-sizing:content-box;flex:none}
.idx-legal-h{font-size:1.25rem;margin:18px 0 8px}
/* Inside another page's section (the homepage strip): same 17px text, its own card instead of a
   full-width band. */
.idx-legal--inline{border:1px solid var(--border);border-radius:var(--r12);padding:6px 22px 18px;margin-top:28px}

/* IDX Rule 11 guard (idx_pages.fresh_head): a copy whose data is older than the limit hides its
   listings and says why, rather than showing yesterday's prices. */
.idx-stale-note{display:none}
/* Stale data is never hidden any more (Henos, 9 Oct 2026): the last good listings stay up. */

/* Homepage strip: /homes/strip.html, fetched into the Listings section. */
.idx-strip-head{margin:0 0 18px}
.idx-strip-h{font-size:1.375rem;margin:0 0 4px}
.idx-strip-sub{margin:0;color:var(--s700)}
.idx-strip-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.idx-strip-more{display:flex;flex-wrap:wrap;gap:12px;margin:26px 0 0}

/* ---------------------------------------------------------------- AFH search app
   A search, laid out the way people already expect one: filters across the top, a map beside a
   list of results, and the list is the thing that scrolls. Cards reuse nothing from the old
   scaffold; they are their own component so the search can change without disturbing /homes/. */
.afh-app{padding:0 0 8px}

/* ---- Filters, laid out the way Zillow and Redfin do it (9 Oct 2026).
   Desktop: one slim row of pill dropdowns whose first option names them, the rest behind "More
   filters". Phones: a Filters button and Sort; the filters open as a full-screen sheet. A filter
   that is set gets a dark outline, so nothing narrows the list without showing it. */
.afh-filters{padding:12px 0;background:var(--surface);border-bottom:1px solid var(--border)}
.afh-fbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.afh-fsheet{display:contents}
.afh-fsheet-head,.afh-fsheet-foot,.afh-fbtn{display:none}
.afh-lab{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* The site's general form styles add margins and padding meant for stacked forms. */
.afh-filters label,.afh-filters button,.afh-filters select{margin:0}
.afh-filters label{padding:0}
.afh-pill{display:block;margin:0}
.afh-pill select{-webkit-appearance:none;appearance:none;font:inherit;font-size:.9375rem;font-weight:500;
  min-height:44px;padding:0 36px 0 15px;border:1px solid var(--border);border-radius:999px;color:var(--ink);
  cursor:pointer;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%231c2127' stroke-width='1.8'/%3E%3C/svg%3E") no-repeat right 15px center;
  transition:border-color .15s,background-color .15s}
.afh-pill select:hover{border-color:var(--ink)}
.afh-pill select.is-set{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);font-weight:600}
.afh-sort{margin-left:auto}
.afh-filters select:focus-visible,.afh-filters button:focus-visible,.afh-check:focus-within{
  outline:2px solid var(--ink);outline-offset:2px}
.afh-check{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 15px;border:1px solid var(--border);
  border-radius:999px;font-size:.9375rem;font-weight:500;color:var(--ink);cursor:pointer;background:#fff}
.afh-check input{width:18px;height:18px;margin:0;accent-color:var(--rust,#b4441f)}
.afh-check:has(input:checked){border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.afh-xbtn,.afh-reset,.afh-fbtn{min-height:44px;font:inherit;font-size:.9375rem;font-weight:600;padding:0 16px;
  border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--ink);cursor:pointer;
  transition:background-color .15s,border-color .15s,color .15s}
.afh-xbtn:hover,.afh-fbtn:hover{border-color:var(--ink)}
.afh-xbtn[aria-expanded=true]{border-color:var(--ink);background:var(--sunken)}
.afh-reset{border-color:transparent;background:none;text-decoration:underline;text-underline-offset:3px;padding:0 8px}
.afh-reset:hover{color:var(--rust,#b4441f)}
/* order: the extra row always sits under the whole first row, Sort and Clear included. */
.afh-xf{display:flex;flex-wrap:wrap;gap:8px;align-items:center;flex-basis:100%;order:10}
.afh-xf[hidden]{display:none}

.afh-countbar{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:12px 0 10px}
.afh-countbar h2{margin:0;font-size:1.25rem}
.afh-countbar p{margin:0;font-size:.875rem;color:var(--s500)}

/* ---- Map and list side by side, both the height of the screen; the list scrolls beside the map. */
.afh-split{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:16px;align-items:start}
.afh-mapwrap{position:sticky;top:84px}
.afh-map{height:calc(100vh - 210px);min-height:420px;max-height:860px;border:1px solid var(--border);
  border-radius:var(--r12);overflow:hidden;background:var(--sunken)}
.afh-mapnote{margin:6px 0 0;font-size:.8125rem;color:var(--s500)}
/* The list flows with the page and the map stays pinned beside it, so the mouse wheel always scrolls the page. It used to be its
   own scroll box with overscroll-behavior:contain, which swallowed the wheel whenever the pointer was over the list (13 Oct 2026). */
.afh-scroll{padding:0}
.afh-results{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}

.afh-card{border:1px solid var(--border);border-radius:var(--r12);overflow:hidden;background:#fff;
  transition:box-shadow .15s,border-color .15s}
.afh-card:hover,.afh-card.is-active{border-color:var(--ink);box-shadow:0 6px 20px rgba(0,0,0,.09)}
.afh-card-link{display:block;color:inherit;text-decoration:none}
.afh-card-link:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}
.afh-card-photo{position:relative;aspect-ratio:3/2;background:var(--sunken)}
.afh-card-photo img{width:100%;height:100%;object-fit:cover;display:block}
.afh-nophoto{position:absolute;inset:0;display:grid;place-items:center;font-size:.8125rem;color:var(--s500)}
.afh-tag{position:absolute;left:8px;top:8px;font-size:11px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;padding:4px 8px;border-radius:6px;background:#fff;color:var(--ink)}
.afh-tag--licensed{background:#0f3d2e;color:#fff}
.afh-tag--operating{background:#475569;color:#fff}
.afh-tag--ready{background:#b4441f;color:#fff}
.afh-tag--close{background:#fff;color:var(--ink);border:1px solid var(--border)}
.afh-tag--other{background:#fff;color:var(--s700);border:1px solid var(--border)}
.afh-card-body{padding:10px 12px 12px}
.afh-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 2px}
.afh-price{font-size:1.1875rem;font-weight:700}
.afh-status{font-size:10px;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;
  padding:3px 7px;border-radius:999px;background:var(--sunken);color:var(--s700);white-space:nowrap}
.afh-g-active{background:#DCFCE7;color:#166534}
.afh-g-pending{background:#FEF3C7;color:#92400E}
.afh-card-facts{margin:0 0 2px;font-size:.875rem;color:var(--s700)}
.afh-card-addr{margin:0 0 6px;font-size:.9375rem;line-height:1.35}
.afh-card-addr span{display:block;font-size:.8125rem;color:var(--s500)}
.afh-card-why{list-style:none;display:flex;flex-wrap:wrap;gap:4px;margin:0 0 8px;padding:0}
.afh-card-why li{font-size:.6875rem;line-height:1.3;padding:3px 6px;border:1px solid var(--border);
  border-radius:6px;color:var(--s700);background:var(--sunken)}
.afh-card-why li:nth-child(n+3){display:none}
/* The listing broker line stays as prominent as the page's buttons (NWMLS, from 15 Oct 2026). */
.afh-card-attr{margin:0 0 2px;padding-top:8px;border-top:1px solid var(--border);
  font-size:1rem;line-height:1.45;font-weight:700;color:var(--ink);overflow-wrap:anywhere}
.afh-card-attr strong{font-weight:700}
.afh-card-src{margin:0;font-size:.75rem;color:var(--s500)}

.afh-legend{display:flex;flex-wrap:wrap;gap:6px 14px;list-style:none;margin:8px 0 0;padding:0;
  font-size:.8125rem;color:var(--s700)}
.afh-legend li{display:flex;align-items:center;gap:6px}
.afh-dot{width:11px;height:11px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.25)}
.afh-dot--licensed{background:#0f3d2e}
.afh-dot--operating{background:#475569}
.afh-dot--ready{background:#b4441f}
.afh-dot--close{background:#64748b}
.afh-dot--cluster{background:#1c2127;width:15px;height:15px}
.afh-map--failed{display:grid;place-items:center}
.afh-map--failed::after{content:"The map could not load. Every home is in the list.";font-size:.875rem;color:var(--s500)}
.afh-map .maplibregl-popup-content{border-radius:10px;padding:10px 12px;font:inherit;font-size:.875rem;line-height:1.45;
  box-shadow:0 6px 20px rgba(0,0,0,.15)}
.afh-map .maplibregl-popup-content a{font-weight:600}
.afh-maptoggle{display:none}

.afh-empty{border:1px dashed var(--border);border-radius:var(--r12);padding:22px;text-align:center;
  color:var(--s700);background:var(--sunken)}
.afh-empty b{display:block;margin-bottom:4px}
.afh-more{display:block;margin:16px auto 4px;min-height:48px}
.afh-more[hidden]{display:none}
html.afh-noscroll{overflow:hidden}

/* ---- The listing panel (afh-app.js openPanel): slides in over the search. */
.afh-panel{position:fixed;inset:0 0 0 auto;margin:0;width:min(860px,100vw);max-width:100vw;height:100vh;height:100dvh;
  max-height:none;padding:0;border:0;background:var(--paper,#f4f4f3);color:var(--ink);box-shadow:-12px 0 40px rgba(0,0,0,.25)}
.afh-panel[open]{display:flex;flex-direction:column;animation:afh-slide .22s ease-out}
.afh-panel::backdrop{background:rgba(20,22,26,.45)}
.afh-panel-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 10px 6px 20px;
  background:#fff;border-bottom:1px solid var(--border)}
.afh-panel-full{font-weight:600;text-underline-offset:3px}
.afh-panel-x{width:44px;height:44px;border:0;background:none;font-size:30px;line-height:1;cursor:pointer;color:var(--ink)}
.afh-panel-x:focus-visible,.afh-panel-full:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.afh-panel-body{flex:1;overflow:auto;overscroll-behavior:contain}
.afh-panel-body .idx-detail{padding-top:20px}
.afh-panel-body .idx-layout{grid-template-columns:1fr}
.afh-panel-load{padding:40px 20px;text-align:center;color:var(--s500)}
.afh-askform{margin:6px 0 12px}
.afh-askform label{display:block;margin:0 0 10px;font-size:.875rem;font-weight:600}
.afh-askform input[type=text],.afh-askform input[type=email],.afh-askform input[type=tel]{display:block;width:100%;min-height:46px;
  margin-top:5px;padding:0 12px;font:inherit;font-size:1rem;border:1px solid var(--border);border-radius:10px;background:#fff;color:var(--ink)}
.afh-askform input:focus-visible{outline:2px solid var(--ink);outline-offset:1px}
.afh-askform .afh-opt{font-weight:400;color:var(--s500)}
.afh-ask-want{border:0;margin:0 0 10px;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.afh-ask-want label{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin:0;padding:0 14px;border:1px solid var(--border);
  border-radius:999px;font-weight:500;cursor:pointer;background:#fff}
.afh-ask-want label:has(input:checked){border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.afh-ask-want input{accent-color:var(--rust,#b4441f);margin:0}
.afh-ask-go{width:100%;justify-content:center}
.afh-askform .afh-hp{position:absolute;left:-9999px}
.afh-card-afh{margin:0 0 6px;font-size:.875rem;color:var(--ink)}
/* ---- The search box (combobox) above the filter bar. */
.afh-q{position:relative;margin:0 0 10px}
.afh-filters .afh-q input[type=search]{-webkit-appearance:none;appearance:none;width:100%;min-height:48px;padding:0 16px 0 44px;font:inherit;font-size:1rem;border:1px solid var(--border);border-radius:999px;
  color:var(--ink);background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%231c2127' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-4-4'/%3E%3C/svg%3E") no-repeat 16px center}
.afh-filters .afh-q input[type=search]:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.afh-qlist{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:60;margin:0;padding:6px;list-style:none;background:#fff;
  border:1px solid var(--border);border-radius:14px;box-shadow:0 12px 32px rgba(0,0,0,.14);max-height:320px;overflow:auto}
.afh-qlist li{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:0 12px;border-radius:10px;cursor:pointer}
.afh-qlist li:hover,.afh-qlist li[aria-selected=true]{background:var(--sunken)}
.afh-qlist small{font-size:.75rem;font-weight:600;color:var(--s500);text-transform:uppercase;letter-spacing:.04em}
@keyframes afh-slide{from{transform:translateX(28px);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.afh-panel[open]{animation:none}}

/* ---- Save this search (build_site.afh_save_search). */
.afh-countbar{flex-wrap:wrap}
.afh-countbar p{flex:1 1 auto;text-align:right}
.afh-savebtn{min-height:44px;padding:0 18px;border:1px solid var(--ink);border-radius:999px;background:#fff;color:var(--ink);
  font:inherit;font-size:.9375rem;font-weight:700;cursor:pointer;transition:background-color .15s,color .15s}
.afh-savebtn:hover{background:var(--ink);color:#fff}
.afh-savebtn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.afh-savedlg{width:min(440px,calc(100vw - 24px));max-height:calc(100vh - 24px);padding:0;border:0;border-radius:16px;
  box-shadow:0 24px 64px rgba(0,0,0,.28);color:var(--ink)}
.afh-savedlg::backdrop{background:rgba(20,22,26,.55)}
.afh-save-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px 0}
.afh-save-head h2{margin:0;font-size:1.375rem}
/* The guide dialog shows the guide's cover beside its heading (Oct 28, 2026). */
.afh-dlg-cover{width:58px;height:auto;flex:none;border-radius:3px;transform:rotate(-3deg);
  box-shadow:0 8px 16px -8px rgba(0,0,0,.5)}
.afh-save-head:has(.afh-dlg-cover) h2{flex:1}
.afh-save-x{width:44px;height:44px;margin:-8px -10px 0 0;border:0;background:none;font-size:28px;line-height:1;cursor:pointer;color:var(--ink)}
.afh-save-x:focus-visible{outline:2px solid var(--ink);outline-offset:-4px}
.afh-saveform,.afh-savedlg > p{padding:8px 20px 20px;margin:0}
.afh-save-p{margin:0 0 8px;color:var(--s700);line-height:1.5}
.afh-save-sum{margin:0 0 14px;font-size:.875rem;font-weight:600;padding:10px 12px;border-radius:10px;background:var(--sunken)}
.afh-save-sum:empty{display:none}
.afh-saveform label{display:block;margin:0 0 12px;font-size:.875rem;font-weight:600}
.afh-guidedlg{width:min(480px,calc(100vw - 24px))}
.afh-guideform{margin:4px 0 0;padding:0 20px}
.afh-guidedlg .afh-save-fine{padding:0 20px 18px}
.afh-guideform .dig-fields{display:grid;gap:10px;margin:0 0 12px}
.afh-guideform .dig-fields input{display:block;width:100%;min-height:48px;padding:0 14px;font:inherit;font-size:1rem;
  border:1px solid var(--border);border-radius:10px;background:#fff;color:var(--ink)}
.afh-guideform .dig-fields input:focus-visible{outline:2px solid var(--ink);outline-offset:1px;border-color:var(--ink)}
.afh-guideform .dig-btn{width:100%;justify-content:center}
/* Once a dialog's form has sent, its card (see .form-ok in the site stylesheet) sits inside the padding
   and the intro and fine print that belonged to the form go, so the dialog says one thing. */
.afh-savedlg > .form-ok{margin:8px 20px 20px}
.afh-savedlg:has(> .form-ok) > :is(.afh-save-p,.afh-save-sum,.afh-save-fine){display:none}
.afh-saveform input[type=text],.afh-saveform input[type=email],.afh-saveform input[type=tel]{display:block;width:100%;
  min-height:48px;margin-top:6px;padding:0 14px;font:inherit;font-size:1rem;border:1px solid var(--border);border-radius:10px;background:#fff;color:var(--ink)}
.afh-saveform input:focus-visible{outline:2px solid var(--ink);outline-offset:1px;border-color:var(--ink)}
.afh-saveform .afh-opt{font-weight:400;color:var(--s500)}
.afh-save-go{width:100%;justify-content:center;margin-top:4px}
.afh-save-fine{margin:10px 0 0;font-size:.8125rem;color:var(--s500);text-align:center}
.afh-nudge{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:900;width:min(560px,calc(100vw - 24px));
  display:flex;align-items:center;gap:12px;padding:12px 12px 12px 18px;background:var(--ink);color:#fff;border-radius:14px;
  box-shadow:0 12px 32px rgba(0,0,0,.3);animation:afh-up .25s ease-out}
.afh-nudge[hidden]{display:none}
.afh-nudge p{margin:0;flex:1;font-weight:600;line-height:1.35}
.afh-nudge-go{white-space:nowrap;min-height:44px}
.afh-nudge-x{width:44px;height:44px;flex:none;border:0;background:none;color:#fff;font-size:26px;line-height:1;cursor:pointer}
.afh-nudge-x:focus-visible,.afh-nudge-go:focus-visible{outline:2px solid #fff;outline-offset:2px}
@keyframes afh-up{from{transform:translate(-50%,16px);opacity:0}to{transform:translate(-50%,0);opacity:1}}
@media (prefers-reduced-motion:reduce){.afh-nudge{animation:none}}
html.afh-nudging .afh-maptoggle{bottom:100px}
@media (max-width:600px){
  .afh-nudge{flex-wrap:wrap;padding:12px 8px 12px 14px}
  .afh-nudge p{flex:1 1 calc(100% - 56px);font-size:.9375rem}
  .afh-nudge-go{flex:1 1 auto;justify-content:center}
  html.afh-nudging .afh-maptoggle{bottom:150px}
}

@media (max-width:900px){
  .lst-hero{padding-top:24px;padding-bottom:28px}
  .lst-hero h1{font-size:clamp(1.75rem,7.5vw,2.25rem)}
  /* Phones see the headline, then homes (Henos, 9 Oct 2026); the asks live below the list. */
  .lst-hero-p,.lst-hero-cta{display:none}
  .lst-hero{padding-top:16px;padding-bottom:16px}
  /* Phones: one bar, Filters + Sort; everything else in the sheet. */
  .afh-filters{padding:10px 0}
  .afh-fbar{flex-wrap:nowrap}
  .afh-fbtn{display:inline-flex;align-items:center}
  .afh-fsheet,.afh-reset--bar{display:none}
  .afh-sort select{max-width:200px}
  .afh-fsheet.is-open{display:flex;flex-direction:column;position:fixed;inset:0;z-index:1000;background:#fff;
    padding:0 16px;overflow:auto;overscroll-behavior:contain}
  .afh-fsheet.is-open .afh-fsheet-head{display:flex;align-items:center;justify-content:space-between;position:sticky;
    top:0;z-index:1;background:#fff;padding:8px 0;border-bottom:1px solid var(--border);margin:0 0 12px}
  .afh-fsheet-h{margin:0;font-weight:700;font-size:1.125rem}
  .afh-fclose{width:44px;height:44px;border:0;background:none;font-size:30px;line-height:1;cursor:pointer;color:var(--ink)}
  .afh-fsheet .afh-lab{position:static;width:auto;height:auto;clip:auto;display:block;margin:0 0 6px;
    font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--s700)}
  .afh-fsheet .afh-pill{margin:0 0 14px}
  .afh-fsheet .afh-pill select{width:100%;border-radius:10px}
  .afh-fsheet .afh-xbtn{display:none}
  .afh-fsheet .afh-xf,.afh-fsheet .afh-xf[hidden]{display:block;order:0}
  .afh-fsheet-foot{order:20}
  .afh-fsheet .afh-check{display:flex;border-radius:10px;margin:0 0 10px}
  .afh-fsheet.is-open .afh-fsheet-foot{display:flex;gap:10px;align-items:center;position:sticky;bottom:0;
    background:#fff;padding:12px 0 calc(12px + env(safe-area-inset-bottom));margin-top:auto;border-top:1px solid var(--border)}
  .afh-fsheet-foot .afh-fapply{flex:1;min-height:48px;justify-content:center}
  .afh-countbar p{display:none}
  /* List or map, never both: one floating button switches. */
  .afh-split{display:block}
  .afh-mapwrap{position:static;display:none}
  .afh-split.is-map .afh-mapwrap{display:block}
  .afh-split.is-map .afh-scroll{display:none}
  .afh-map{height:calc(100vh - 220px);height:calc(100svh - 220px);min-height:360px;max-height:none}
  .afh-scroll{height:auto;min-height:0;max-height:none;overflow:visible;padding:0}
  .afh-results{grid-template-columns:1fr;gap:10px}
  .afh-maptoggle{display:flex;align-items:center;justify-content:center;position:sticky;bottom:16px;z-index:20;
    margin:14px auto 0;min-height:48px;min-width:112px;padding:0 24px;border:0;border-radius:999px;background:var(--ink);
    color:#fff;font:inherit;font-weight:700;box-shadow:0 6px 18px rgba(0,0,0,.25);cursor:pointer}
  .afh-maptoggle:focus-visible{outline:3px solid var(--ember,#ea580c);outline-offset:2px}
  /* Compact cards: photo beside the price and address, the broker line full width beneath. */
  .afh-card-link{display:grid;grid-template-columns:120px minmax(0,1fr);column-gap:12px;padding:10px}
  .afh-card-body{display:contents}
  .afh-card-photo{grid-column:1;grid-row:1 / span 4;align-self:start;aspect-ratio:4/3;border-radius:8px;overflow:hidden}
  .afh-tag{left:5px;top:5px;font-size:9.5px;padding:3px 5px}
  .afh-card-top,.afh-card-facts,.afh-card-addr,.afh-card-afh{grid-column:2}
  .afh-price{font-size:1.0625rem}
  .afh-card-addr{margin:0}
  .afh-card-why,.afh-card-attr,.afh-card-src{grid-column:1 / -1}
  .afh-card-why{margin:10px 0 0}
  .afh-card-attr{margin-top:10px}
}

/* rev 2026-10-09b */
