/* Latest owner search layout. Document routes retain normal page scrolling. */
html:has(body.page.app[data-v="search"]):not([data-m="menu"]),
html:not([data-m="menu"]) body.page.app[data-v="search"]{height:100%;overflow:hidden;overscroll-behavior:none}
html:not([data-m="menu"]) body.page.app[data-v="search"] .layout[data-view]:not([hidden]):not(.app-off){
  display:grid!important;grid-template-columns:minmax(0,3fr) minmax(0,2fr)!important;grid-template-rows:minmax(0,1fr);
  position:fixed;top:var(--search-top,8rem);bottom:0;left:var(--rail,14.5rem);right:0;
  width:auto;height:auto!important;min-height:0;overflow:hidden;gap:0;
}
html body.page.app .layout[hidden],html body.page.app .layout.app-off{display:none!important}
html body.page.app[data-v="search"] .layout>.results,
html body.page.app[data-v="search"] .layout>.results.locked,
html body.page.app[data-v="search"] .layout>.results.open{
  order:0;position:relative;inset:auto;height:100%;width:100%;min-width:0;min-height:0;
  overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;touch-action:pan-y;
  border-left:0;box-sizing:border-box;padding:.5rem;
}
html body.page.app[data-v="search"] .layout>.mapwrap{
  order:1;position:relative;inset:auto;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;
}
html body.page.app[data-v="search"] .mapwrap>.map{position:absolute;inset:0;width:100%;height:100%}
html body.page.app[data-v="search"] .handle,
html body.page.app[data-v="search"] :is(.maphint,.listhint,.nextbar,.home>.sitefoot){display:none!important}
html body.page.app[data-v="search"]>.contact{display:none!important}
html body.page.app .search-disclosures{margin:1rem 0;padding:.5rem;border:3px solid #512888}
html body.page.app .search-disclosures summary{cursor:pointer;min-height:44px;align-content:center;font-weight:700}
html body.page.app .search-site-information{font-size:1rem;overflow-wrap:anywhere}
html body.page.app .search-site-information .footband{display:block}
@media(max-width:900px){
  html:not([data-m="menu"]) body.page.app[data-v="search"] .layout[data-view]:not([hidden]):not(.app-off){left:0;grid-template-columns:minmax(0,1fr)!important;grid-template-rows:minmax(0,11fr) minmax(0,9fr)}
  html body.page.app[data-v="search"] [data-cards].cards{grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-template-rows:none}
}
@media(min-width:901px){html body.page.app[data-v="search"] [data-cards].cards{grid-template-columns:repeat(3,minmax(0,1fr))!important;grid-template-rows:none}}

/* Photo size exceeds the closed card's complete text. Required credit remains
   visible and readable; optional listing facts/costs live under See more. */
html body.page .property-six-card,
html body.page.app [data-cards]>.card{overflow:visible;align-self:start;min-width:0}
html body.page .property-six-card>a>img,
html body.page .property-six-card .jpic,
html body.page.app [data-cards]>.card>.card-open>img,
html body.page.app [data-cards]>.card>.card-open>.nophoto{
  display:block;height:var(--property-photo-height,24rem)!important;width:100%;aspect-ratio:auto;object-fit:cover;
}
html body.page .property-six-card .jpic img{width:100%;height:100%;object-fit:cover}
html body.page .property-six-card .jbody{display:flex;flex-direction:column}
html body.page .property-six-card .jlprice{order:0}
html body.page .property-six-card .property-address{order:1}
html body.page .property-six-card :is(.price,.jlprice,.property-address,.property-credit),
html body.page.app [data-cards]>.card :is(.price,.addr,.attr,.see-more){font-size:1rem!important;line-height:1.3;overflow-wrap:anywhere}

/* Half of the former 18px outer diameter. Focus outline belongs to the
   independent 28px hit target; hover/selection never enlarges the dot. */
html body.page .home-dot-marker .home-dot,
html body.page .home-dot-marker:is(:hover,:focus) .home-dot,
html body.page .home-dot-marker .home-dot:is(.hl,.sel),
html body.page .tag.dot{
  width:9px;height:9px;min-width:0;min-height:0;padding:0;box-sizing:border-box;
  border:0!important;box-shadow:none!important;background:#512888;border-radius:50%;
}
html body.page .home-dot-marker:focus-visible{outline:2px solid #512888;outline-offset:2px}

/* Default whole-photo view uses all available width/height, preserving ratio.
   Explicit zoom enlarges both axes and enables panning without stretching. */
html body.page.app .detail{inset:0!important;width:auto!important;height:auto!important;max-width:none!important;overflow:auto;overscroll-behavior:contain;background:#fff;animation:none}
html body.page.app .detail .photo-stage{height:calc(100dvh - 10rem);min-height:12rem;width:100%;overflow:auto;touch-action:pan-x pan-y pinch-zoom;background:#111}
html body.page.app .detail .photo-slide{height:100%;width:100%}
html body.page.app .detail .fullgallery .photo-slide img{display:block;width:100%;height:100%;max-width:none;max-height:none;object-fit:contain;filter:none;opacity:1;animation:none;transform:none}
html body.page.app .detail .photo-stage.photo-zoomed .photo-slide{width:200%;height:200%}
html body.page.app .detail .photo-controls{flex-wrap:wrap}
html body.page.app .detail .property-detail-more{padding:.5rem 1rem}
html body.page.app .detail .property-detail-more>summary{cursor:pointer;min-height:44px;font-weight:800;color:#512888;align-content:center}
html body.page.app .detail .detail-credit{padding:.5rem 1rem;overflow-wrap:anywhere}
html body.page.app .detail .detail-credit p{font-size:1.9rem;line-height:1.3;margin:.35rem 0}
html body.page.app .detail :is(summary,button,a):focus-visible{outline:3px solid #512888;outline-offset:2px}
html body.page.app .contact-showing-request{padding:1rem;border:3px solid #512888;margin:1rem 0}

/* Owner: move identity to the sidebar and reclaim search header height. */
.rail-brand{display:none!important}
/* v17 Dave 10-31 18:4xZ: logo + picture box sit at the TOP OF THE LEFT MENU above Search By (.rail-brand); no bar over the map/list. */
body.page.app[data-v="search"]>.topbar{display:none!important}
[data-mls-toggle][hidden]{display:none!important}
[data-mls-toggle][hidden]{display:none!important}
body.page.app[data-v="search"] .mapctl{display:none!important}
body.page.app[data-v="search"][data-solo="filters"] .mapctl{display:block!important;position:fixed;top:1.8rem;left:var(--rail,14.5rem);right:0;z-index:1100}
html:not([data-m="menu"]) body.page.app[data-v="search"] .layout[data-view]:not([hidden]):not(.app-off){top:1.8rem!important}
body.page.app[data-v="search"] .rail-brand{display:flex!important;align-items:center;justify-content:center;gap:.25rem;padding:.4rem;height:5rem;box-sizing:border-box;background:white;border-radius:.5rem;margin:.25rem}
body.page.app[data-v="search"] .rail-brand img{position:static!important;width:45%!important;height:100%!important;max-height:4rem!important;object-fit:contain!important}
html body.page.app[data-v="search"] .layout>.mapwrap{contain:paint;isolation:isolate;transform:translateZ(0)}
@media(max-width:900px){html:not([data-m="menu"]) body.page.app[data-v="search"] .layout[data-view]:not([hidden]):not(.app-off){top:3rem!important}body.page.app[data-v="search"] .rail-brand{height:4rem}}

html body.page.app[data-v="search"] .results .legend{display:none!important}
html body.page.app[data-v="search"] .results .snapdate{margin:.2rem 0;font-size:.8rem}
html body.page.app[data-v="search"] .results .count{margin:.25rem 0}
html body.page.app[data-v="search"] [data-cards]>.card .body{padding:.25rem}
html body.page.app[data-v="search"] [data-cards]>.card .attr{margin:.15rem 0;line-height:1.15}

/* Six complete cards; extra listing text is in the See more detail panel. */
html body.page.app[data-v="search"] [data-cards].cards{height:var(--six-grid-height,650px);grid-template-rows:repeat(2,minmax(0,1fr))!important;gap:.5rem}
html body.page.app[data-v="search"] [data-cards]>.card{height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden}
html body.page.app[data-v="search"] [data-cards]>.card>.card-open{display:flex;flex:1;flex-direction:column;min-height:0;overflow:hidden}
html body.page.app[data-v="search"] [data-cards]>.card>.card-open>img,
html body.page.app[data-v="search"] [data-cards]>.card>.card-open>.nophoto{height:0!important;min-height:0;flex:1;object-fit:cover}
html body.page.app[data-v="search"] [data-cards]>.card>.card-open>.body{flex:none;padding:.25rem}
html body.page.app[data-v="search"] [data-cards]>.card>.card-credit{flex:none;padding:.25rem}
@media(max-width:900px){html body.page.app[data-v="search"] [data-cards].cards{grid-template-rows:repeat(3,minmax(0,1fr))!important}}

/* Owner8753: property pictures precede the map, matching existing DOM order. */
@media(min-width:901px){
html:not([data-m="menu"]) body.page.app[data-v="search"] .layout[data-view]:not([hidden]):not(.app-off){grid-template-columns:minmax(0,3fr) minmax(0,2fr)!important}
html body.page.app[data-v="search"] .layout>.results{order:0}
html body.page.app[data-v="search"] .layout>.mapwrap{order:1}
}

/* One opening card frame throughout the site. Cards can grow for complete
   attribution and expanded details; the page scrolls instead of clipping. */
html body.page .property-six,html body.page [data-jtiles],html body.page [data-cards].cards,
html body.page.app[data-v="search"] [data-cards].cards{
  height:auto!important;grid-template-rows:none!important;grid-auto-rows:1fr;align-items:stretch;
}
html body.page .property-six-card,html body.page [data-cards]>.card,
html body.page.app[data-v="search"] [data-cards]>.card{
  height:auto!important;min-height:var(--property-card-min-height,24rem);align-self:stretch;overflow:visible;
}
html body.page [data-cards]>.card>.card-open{min-height:0;overflow:visible}
html body.page .property-six-card>a>img,html body.page .property-six-card .jpic,
html body.page [data-cards]>.card>.card-open>img,html body.page [data-cards]>.card>.card-open>.nophoto,
html body.page.app[data-v="search"] [data-cards]>.card>.card-open>img,
html body.page.app[data-v="search"] [data-cards]>.card>.card-open>.nophoto{
  height:var(--property-photo-height,240px)!important;min-height:var(--property-photo-height,240px);flex:none;object-fit:cover;
}

/* Owner2179: stationary search shell; only the inner homes region scrolls. */
html body.page.app[data-v="search"] .layout>.results,
html body.page.app[data-v="search"] .layout>.results.locked,
html body.page.app[data-v="search"] .layout>.results.open{
  display:flex;flex-direction:column;min-height:0;max-height:100%;contain:size;
  overflow:hidden;overscroll-behavior:none;
}
html body.page.app[data-v="search"] .results>.listsearch{
  flex:none;position:relative;top:auto;min-width:0;flex-wrap:wrap;
}
html body.page.app[data-v="search"] .results>.homes-scroll{
  flex:1 1 auto;min-height:0;min-width:0;overflow-y:auto;overflow-x:hidden;
  overscroll-behavior:contain;touch-action:pan-y;scrollbar-gutter:stable;
}
.homes-scroll:focus-visible{outline:3px solid #512888;outline-offset:-3px}
.search-alert-launch{min-height:44px;padding:.4rem .6rem;border:2px solid #512888;background:#fff;color:#512888;font:inherit;font-weight:700;cursor:pointer}
.search-alert-dialog{box-sizing:border-box;width:min(42rem,calc(100vw - 2rem));max-height:calc(100vh - 2rem);max-height:calc(100dvh - 2rem);overflow:auto;overscroll-behavior:contain;border:3px solid #512888;padding:1rem;background:#fff;color:#1d2a24}
.search-alert-dialog[hidden]{display:none!important}
.search-alert-dialog::backdrop{background:rgba(0,0,0,.4)}
.search-alert-dialog>.alertbox{margin:.5rem 0 0}
.search-alert-close{min-height:44px;padding:.4rem .8rem;font:inherit;cursor:pointer}

/* Owner 2026-10-30 correction: restore map LEFT; retain each pane's saved share. */
@media(min-width:901px){
html:not([data-m="menu"]) body.page.app[data-v="search"] .layout[data-view]:not([hidden]):not(.app-off){grid-template-columns:minmax(0,2fr) minmax(0,3fr)!important}
html body.page.app[data-v="search"] .layout>.mapwrap{order:0}
html body.page.app[data-v="search"] .layout>.results{order:1}
}
/* v13: Est. monthly cost has no figures in this build (sale financing stripped, Reg Z): hide all its entry points (Dallas 10-31, button must do what it says) */
/* v15 Dave 10-31 18:0xZ: "Remove the cost button and its features." Hidden for good, whatever the data carries. */
:is(a[href="#monthly-cost"],[data-menu-view="cost"],[data-goto="cost"],[data-metric="cost"]),li:has(>:is(a[href="#monthly-cost"],[data-goto="cost"])),[data-view="monthly-cost"]{display:none!important}
/* v13 (dj 17:4xZ, Dave Way button rule): these 4 views open "not connected yet" pages, so their menu links, top links and home tiles are hidden
   until each is connected (TASKS lines with owner + due). The By Neighborhood SEARCH filter (data-go="neighborhood") is not affected. */
/* v15: those three are connected by home-views.js; each one's links show only after its view drew real content from area-stats.json */
body:not([data-boi-ready]) a[href="#buyer-index"],body:not([data-boi-ready]) li:has(>a[href="#buyer-index"]){display:none!important}
body:not([data-nb-ready]) a[href="#neighborhoods"],body:not([data-nb-ready]) li:has(>a[href="#neighborhoods"]){display:none!important}
body:not([data-market-ready]) a[href="#market"],body:not([data-market-ready]) li:has(>a[href="#market"]){display:none!important}
/* v15: recovery-preview placeholder links inside these views do nothing, so hide them; an area row without a map match renders as plain text */
[data-view="buyer-index"] [data-recovery-unavailable-link],[data-view="neighborhoods"] [data-recovery-unavailable-link],[data-view="market"] [data-recovery-unavailable-link]{display:none!important}
.home .arealist span.arow{display:flex;justify-content:space-between;gap:.75rem;padding:.3rem .25rem}
/* v14: Just Listed shows only when find.js rendered at least one tile (body[data-jl-ready]) */
body:not([data-jl-ready]) a[href="#just-listed"],body:not([data-jl-ready]) li:has(>a[href="#just-listed"]){display:none!important}
.jtiles .jbody{display:flex;flex-direction:column;gap:.15rem;padding:.55rem .7rem .7rem}.jtiles .jladdr{font-weight:600}.jtiles .jlwhen{font-size:.8rem;color:#5a6b62}
/* v14: the "More on the neighborhoods page" link in Just Listed points at a view that is hidden until connected */
[data-view="just-listed"] [data-recovery-unavailable-link]{display:none!important}
/* v15 Dallas 10-31: both foreclosure lead forms hidden entirely (their SMS consent text stays in the code for when forms return) */
[data-view="foreclosure-help"] .fcwrap{display:none!important}
/* v16 Nearby tab */
#photo-info-nearby .nb-list{margin:.4rem 0;padding-left:1.1rem;line-height:1.45}#photo-info-nearby .nb-list li{margin:.25rem 0}#photo-info-nearby .nb-note,#photo-info-nearby .nb-credit{font-size:.85rem;color:#4a5a52;margin:.4rem 0}
html body.page.app .idx-disc-link{margin:.5rem 0 .75rem;font-size:.8rem;color:#4a5a52}
html body.page.app .idx-disc-link a{color:#512888;font-weight:700;display:inline-block;min-height:24px;line-height:24px}
/* v20 Dallas 08:2xZ option (a): a small "IDX disclosures" link always on screen, every view, desktop + phone, no scrolling */
html body.page .idx-pin{position:fixed;left:8px;bottom:6px;z-index:2147480000;font-size:12px;line-height:1;font-weight:700;color:#512888;background:#fff;border:2px solid #512888;border-radius:999px;padding:5px 9px;text-decoration:underline}
@media (min-width:901px){html body.page.app .idx-pin{left:calc(var(--rail) / 2);transform:translateX(-50%)}}
/* v20 gate 09:31Z: on phones the pinned IDX link sat over the list's own "IDX disclosures" link at the end of the homes list; leave room so the end of every scrolling list clears the pin */
@media (max-width:900px){html body.page.app .homes-scroll,html body.page.app .sitefoot{padding-bottom:56px!important}}
