/* 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)}
.afh-scroll{height:calc(100vh - 150px);min-height:480px;max-height:920px;overflow:auto;padding-right:4px;
  overscroll-behavior:contain}
.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}
.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}
.afh-guidedlg [role=status]{padding:8px 20px 20px;margin:0;font-weight:600;line-height:1.5}
.afh-guidedlg [role=status] .btn{margin-top:12px;width:100%;justify-content:center}
.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 */
