:root{--fso-idx-brand:#c8102e;--fso-idx-dark:#0f1b2d;--fso-idx-muted:#6b7280;--fso-idx-border:#d9dee7;--fso-idx-soft:#f8fafc;--fso-idx-text:#0f1b2d}
/* Force the IDX experience wider than most theme page/content defaults. */
body .fso-idx-app-wrap{width:min(96vw,1840px)!important;max-width:none!important;margin-left:calc(50% - min(48vw,920px))!important;margin-right:auto!important;padding:18px 0 36px!important;box-sizing:border-box}
p.p1.wp-block-paragraph {padding:0 !important;}
div#top-header {padding: 15px 40px 5px;}
/* The 5px above and below the menu row are margins on the row, not header padding.
   From 981px Divi offsets the page by #main-header's jQuery .height(), which leaves
   padding out, so padding here hid the top 10px of every page that loads this file
   (agent and office profiles, /properties/, /property/, area pages, the homepage).
   The fixed header is its own formatting context, so the row's margins are counted. */
header#main-header {padding: 0 40px;}
@media (min-width:981px){#main-header > .et_menu_container{margin-top:5px;margin-bottom:5px}}
body.et_fixed_nav.et_secondary_nav_enabled #main-header {top:30!important}
.container {padding:0!important;}
.fso-idx-heading{margin:0 0 18px;font-size:30px;font-weight:500;letter-spacing:.02em;text-transform:uppercase;color:#2b2f38}.fso-idx-filters{background:#fff;border:1px solid var(--fso-idx-border);border-radius:10px;padding:16px;margin-bottom:18px;box-shadow:0 10px 32px rgba(15,23,42,.055)}
.fso-idx-search-row{display:flex;gap:10px;margin-bottom:10px;align-items:flex-end}.fso-idx-input,.fso-idx-select{width:100%;border:1px solid var(--fso-idx-border);border-radius:7px;padding:11px 12px;font-size:14px;background:#fff;color:var(--fso-idx-text);box-sizing:border-box}.fso-idx-input:focus,.fso-idx-select:focus{outline:2px solid rgba(215,25,32,.15);border-color:var(--fso-idx-brand)}
.fso-idx-token-search{position:relative;flex:1}.fso-idx-token-list{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:7px}.fso-idx-token{border:1px solid #cbd5e1;background:#f8fafc;border-radius:6px;padding:6px 10px;font-size:13px;color:#334155;cursor:pointer}.fso-idx-token strong{text-transform:uppercase;font-size:11px;letter-spacing:.03em}.fso-idx-token span{font-weight:800;margin-left:4px;color:#991b1b}
.fso-idx-filter-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.fso-idx-actions-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px}.fso-idx-button,.fso-idx-view-btn,.fso-idx-pagination button{border:1px solid var(--fso-idx-border);background:#fff;color:var(--fso-idx-text);border-radius:4px;padding:10px 16px;cursor:pointer;font-weight:600}.fso-idx-search-row .fso-idx-button-primary{height:48px;min-width:118px;flex:0 0 118px;align-self:flex-end;display:inline-flex;align-items:center;justify-content:center}.fso-idx-button-primary{background:var(--fso-idx-brand);border-color:var(--fso-idx-brand);color:#fff}.fso-idx-view-toggle{display:flex;gap:8px}.fso-idx-view-btn.is-active{background:#0f1b2d;color:#fff;border-color:#0f1b2d}.fso-idx-summary{font-weight:600;color:var(--fso-idx-muted)}
.fso-idx-layout{display:grid;grid-template-columns:minmax(0,0.95fr) minmax(520px,44vw);gap:20px;align-items:start}.fso-idx-app[data-current-view="grid"] .fso-idx-layout{display:block}.fso-idx-app[data-current-view="grid"] .fso-idx-map-panel{display:none}.fso-idx-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.fso-idx-app[data-current-view="grid"] .fso-idx-results{grid-template-columns:repeat(3,minmax(0,1fr))}
.fso-idx-card{background:#fff;border:1px solid var(--fso-idx-border);border-radius:0px;overflow:hidden;box-shadow:0 8px 22px rgba(15,23,42,.045);transition:transform .18s ease,box-shadow .18s ease}.fso-idx-card:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(15,23,42,.095)}.fso-idx-card-image{display:block;aspect-ratio:16/10;background:var(--fso-idx-soft);overflow:hidden;position:relative}.fso-idx-card-image img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s ease}.fso-idx-card:hover .fso-idx-card-image img{transform:scale(1.018)}.fso-idx-card-no-photo{height:100%;display:flex;align-items:center;justify-content:center;color:var(--fso-idx-muted);background:#eef2f7}.fso-idx-card-badge{position:absolute;z-index:2;top:10px;left:10px;background:rgba(15,27,45,.84);color:#fff;border-radius:3px;padding:5px 9px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.fso-idx-card-body{padding:16px}.fso-idx-card-price{font-size:23px;font-weight:800;letter-spacing:-.02em}.fso-idx-card-title{font-size:17px;line-height:1.35;margin:9px 0 10px;text-transform:uppercase;font-weight:500;letter-spacing:.01em}.fso-idx-card-title a{color:inherit;text-decoration:none}.fso-idx-card-title span{display:block}.fso-idx-card-meta,.fso-idx-card-mls{font-size:13px;color:var(--fso-idx-muted);line-height:1.45}.fso-idx-card-mls{margin-top:4px}.fso-idx-card-stat-row{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;background:#fff;margin:14px -16px -16px}.fso-idx-card-stat{padding:11px 6px;text-align:center;border-right:1px solid #e5e7eb}.fso-idx-card-stat:last-child{border-right:0}.fso-idx-card-stat strong{display:block;font-size:15px;line-height:1;color:#0f1b2d}.fso-idx-card-stat span{display:block;margin-top:4px;font-size:10px;line-height:1;text-transform:uppercase;letter-spacing:.06em;color:#6b7280}.fso-idx-card-button{display:block;margin:16px -16px -16px;padding:12px;background:#0f1b2d;color:#fff!important;text-align:center;text-decoration:none;font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:12px}.fso-idx-card-stat-row+.fso-idx-card-button{margin-top:16px}
/* v0.3.86: land cards carry ONE stat (acreage) instead of beds/baths/sqft,
   so the 3-column grid would leave two empty cells and a stray divider. */
.fso-idx-card-stat-row--land{grid-template-columns:1fr}
.fso-idx-card-stat-row--land .fso-idx-card-stat{border-right:0}
.fso-idx-map-panel{position:sticky;top:195px;align-self:start}.fso-idx-map{height:calc(100vh - 95px);min-height:680px;border:1px solid var(--fso-idx-border);border-radius:0px;overflow:hidden;background:#eef2f7}.fso-idx-map-placeholder,.fso-idx-loading,.fso-idx-empty,.fso-idx-error,.fso-idx-notice{padding:24px;text-align:center;color:var(--fso-idx-muted);grid-column:1/-1}.fso-idx-error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:0px}.fso-idx-marker{border:0;border-radius:999px;background:#0f1b2d;color:#fff;font-size:12px;font-weight:800;padding:6px 8px;box-shadow:0 4px 12px rgba(0,0,0,.22);cursor:pointer}.fso-idx-map-popup{width:270px}.fso-idx-map-popup-img{display:block;height:135px;margin:-10px -10px 10px;overflow:hidden;background:#eef2f7}.fso-idx-map-popup-img img{width:100%;height:100%;object-fit:cover;display:block}.fso-idx-map-popup-body{font-family:inherit}.fso-idx-map-popup-meta{font-weight:800;font-size:18px;line-height:1.2;color:#0f1b2d;margin-bottom:5px}.fso-idx-map-popup-title{display:block;color:#0f1b2d!important;text-decoration:none!important;font-size:13px;line-height:1.35}.mapboxgl-popup-content{border-radius:6px!important;padding:10px!important;box-shadow:0 15px 35px rgba(15,23,42,.22)!important}.fso-idx-pagination{display:flex;align-items:center;justify-content:center;gap:14px;margin:22px 0}.fso-idx-pagination button:disabled{opacity:.45;cursor:not-allowed}
.fso-idx-bar{position:relative;max-width:760px}.fso-idx-bar-inner{display:flex;gap:10px;background:#fff;border:1px solid var(--fso-idx-border);border-radius:999px;padding:7px;box-shadow:0 10px 30px rgba(15,23,42,.08)}.fso-idx-bar-input{border:0;border-radius:999px;box-shadow:none}.fso-idx-suggestions{position:absolute;left:0;right:0;top:calc(100% + 8px);z-index:50;background:#fff;border:1px solid var(--fso-idx-border);border-radius:0px;box-shadow:0 18px 45px rgba(15,23,42,.16);overflow:hidden}.fso-idx-suggestions a,.fso-idx-suggestions button{display:flex;width:100%;justify-content:space-between;gap:12px;padding:11px 14px;color:var(--fso-idx-text);text-decoration:none;border:0;border-bottom:1px solid #eef2f7;background:#fff;text-align:left;cursor:pointer;font:inherit}.fso-idx-suggestions a:last-child,.fso-idx-suggestions button:last-child{border-bottom:0}.fso-idx-suggestions a:hover,.fso-idx-suggestions button:hover{background:var(--fso-idx-soft)}.fso-idx-suggestions small{text-transform:uppercase;color:var(--fso-idx-muted);font-size:11px;letter-spacing:.04em}
@media (min-width:1550px){.fso-idx-app[data-current-view="grid"] .fso-idx-results{grid-template-columns:repeat(4,minmax(0,1fr))}.fso-idx-layout{grid-template-columns:minmax(0,1fr) minmax(620px,46vw)}}
@media (max-width:1280px){body .fso-idx-app-wrap{width:calc(100vw - 32px)!important;margin-left:calc(50% - 50vw + 16px)!important}.fso-idx-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.fso-idx-layout{grid-template-columns:1fr}.fso-idx-map-panel{position:relative;top:auto}.fso-idx-map{height:480px;min-height:420px}.fso-idx-results,.fso-idx-app[data-current-view="grid"] .fso-idx-results{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:980px){header#main-header {padding: 5px 0;}}
@media (max-width:720px){.fso-idx-search-row .fso-idx-button-primary{width:100%;min-width:0;flex:0 0 auto}body .fso-idx-app-wrap{width:calc(100vw - 24px)!important;margin-left:calc(50% - 50vw + 12px)!important}.fso-idx-search-row,.fso-idx-actions-row,.fso-idx-bar-inner{flex-direction:column;align-items:stretch}.fso-idx-filter-grid{grid-template-columns:1fr 1fr}.fso-idx-results,.fso-idx-app[data-current-view="grid"] .fso-idx-results{grid-template-columns:1fr}.fso-idx-map{height:360px;min-height:320px}.fso-idx-filters{border-radius:0px;padding:14px}.fso-idx-view-toggle{width:100%}.fso-idx-view-btn{flex:1}}

/* IDX detail page, modeled after the original FSO listing detail layout. */
body .fso-idx-detail-wrap{width:min(96vw,1440px)!important;max-width:none!important;margin-left:calc(50% - min(48vw,720px))!important;margin-right:auto!important;padding:28px 0 48px!important;box-sizing:border-box;color:var(--fso-idx-text)}
.fso-idx-detail{background:#fff}.fso-idx-detail-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:20px}.fso-idx-detail-header h1{margin:8px 0 4px;font-size:34px;line-height:1.15;text-transform:uppercase;font-weight:500;letter-spacing:.01em}.fso-idx-detail-header p{margin:0;color:var(--fso-idx-muted);font-size:18px}.fso-idx-detail-price{font-size:34px;font-weight:800;white-space:nowrap}.fso-idx-detail-status{display:inline-block;background:#0f1b2d;color:#fff;border-radius:3px;padding:7px 11px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.fso-idx-detail-gallery{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,.8fr);gap:12px;margin-bottom:16px}.fso-idx-detail-hero,.fso-idx-detail-thumbs img{border-radius:6px;overflow:hidden;background:#eef2f7}.fso-idx-detail-hero{height:560px}.fso-idx-detail-hero img,.fso-idx-detail-thumbs img{width:100%;height:100%;object-fit:cover;display:block}.fso-idx-detail-thumbs{display:grid;grid-template-columns:1fr;gap:12px}.fso-idx-detail-thumbs img{height:131px}.fso-idx-detail-stats{display:grid;grid-template-columns:repeat(6,1fr);border:1px solid #e5e7eb;border-radius:6px;overflow:hidden;margin:18px 0 28px;background:#fff}.fso-idx-detail-stats div{padding:17px 8px;text-align:center;border-right:1px solid #e5e7eb}.fso-idx-detail-stats div:last-child{border-right:0}.fso-idx-detail-stats strong{display:block;font-size:22px;line-height:1;color:#0f1b2d}.fso-idx-detail-stats span{display:block;margin-top:7px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#6b7280}.fso-idx-detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:28px;align-items:start}.fso-idx-detail-section{margin:0 0 32px}.fso-idx-detail-section h2,.fso-idx-detail-contact-card h2{margin:0 0 14px;font-size:22px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}.fso-idx-detail-section p{font-size:16px;line-height:1.75;color:#374151}.fso-idx-detail-sidebar{position:sticky;top:96px}.fso-idx-detail-contact-card{border:1px solid #e5e7eb;border-radius:6px;padding:20px;background:#fff;box-shadow:0 10px 26px rgba(15,23,42,.06)}.fso-idx-detail-contact-card dl{display:grid;grid-template-columns:120px minmax(0,1fr);gap:9px 12px;margin:0}.fso-idx-detail-contact-card dt{font-weight:800;color:#0f1b2d}.fso-idx-detail-contact-card dd{margin:0;color:#4b5563}.fso-idx-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.fso-idx-feature-grid div{border:1px solid #e5e7eb;border-radius:6px;padding:12px;background:#fff}.fso-idx-feature-grid strong{display:block;font-size:13px;color:#0f1b2d}.fso-idx-feature-grid span{display:block;margin-top:5px;font-size:13px;color:#6b7280}.fso-idx-detail-map{height:440px;border:1px solid #e5e7eb;border-radius:6px;overflow:hidden;background:#eef2f7}.fso-idx-detail-error{background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#991b1b;padding:24px;font-weight:700}
@media (max-width:1100px){body .fso-idx-detail-wrap{width:calc(100vw - 32px)!important;margin-left:calc(50% - 50vw + 16px)!important}.fso-idx-detail-gallery{grid-template-columns:1fr}.fso-idx-detail-hero{height:460px}.fso-idx-detail-thumbs{grid-template-columns:repeat(4,1fr)}.fso-idx-detail-thumbs img{height:120px}.fso-idx-detail-grid{grid-template-columns:1fr}.fso-idx-detail-sidebar{position:relative;top:auto}.fso-idx-detail-stats{grid-template-columns:repeat(3,1fr)}.fso-idx-detail-stats div:nth-child(3){border-right:0}.fso-idx-detail-stats div:nth-child(-n+3){border-bottom:1px solid #e5e7eb}.fso-idx-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:720px){.fso-idx-detail-header{display:block}.fso-idx-detail-header h1{font-size:26px}.fso-idx-detail-price{font-size:28px;margin-top:14px}.fso-idx-detail-hero{height:310px}.fso-idx-detail-thumbs{grid-template-columns:repeat(2,1fr)}.fso-idx-detail-stats{grid-template-columns:repeat(2,1fr)}.fso-idx-detail-stats div{border-bottom:1px solid #e5e7eb}.fso-idx-feature-grid{grid-template-columns:1fr}.fso-idx-detail-contact-card dl{grid-template-columns:1fr}.fso-idx-detail-map{height:340px}}

/* IDX detail pages now reuse the original FSO single-listing visual structure. */
body .fso-idx-detail-template,
body .entry-content .fso-idx-detail-template,
body .site-main .fso-idx-detail-template {
  /* v0.3.63 FIX: <main> spans the viewport so the gallery and the section nav
     can be genuinely full-bleed (the mockup's gallery is 1440 at a 1440
     viewport). The old min(96vw,1440px) cap lived HERE, which is why the
     gallery could never reach the edges no matter where it sat in the markup.
     Every constrained region is inside .rme-wrap, which carries the 1280 cap
     -- so this needs no 100vw/negative-margin trick and adds no h-overflow. */
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding: 0 0 56px !important;
  box-sizing: border-box;
}
/* v0.3.68: scoped to the detail page (was a bare `section{...}`, which applied
   to every <section> site-wide) and stepped down on phones, where an 80px gap
   between every section is a lot of scrolling. Same desktop spacing as before. */
.fso-idx-detail-template section {margin-top: 80px !important;}
@media (max-width:700px){.fso-idx-detail-template section {margin-top: 48px !important;}}
.fso-idx-detail-template .fso-helen-intro-header { margin-top: 0; }
.fso-idx-detail-template .fso-single-hero { margin-top: 22px; }
.fso-idx-detail-template .fso-agent-strip a.fso-connect-btn { text-decoration: none; display: inline-flex; align-items: center; justify-content: center; }
.fso-idx-detail-template .fso-single-listing-feature-row a { color: inherit; text-decoration: underline; }
@media (max-width: 1100px) {
  /* v0.3.63 FIX: <main> stays edge-to-edge here too -- this rule used to inset
     it by 16px a side, which is why the mobile gallery slider measured 343px
     at a 375px viewport instead of running to the edges. The 16px gutter the
     content still needs comes from .rme-wrap's own mobile padding. */
  body .fso-idx-detail-template,
  body .entry-content .fso-idx-detail-template,
  body .site-main .fso-idx-detail-template {
    width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}

/* v1.2.18 IDX detail polish: force FSO-style horizontal carousel rail and working modals. */
.fso-idx-detail-template .fso-single-slider-bottom{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 300px!important;
  align-items:stretch!important;
  background:#050505!important;
  border-top:1px solid #222!important;
  overflow:hidden!important;
}
.fso-idx-detail-template .fso-single-slider-bottom-left{
  display:grid!important;
  grid-template-columns:54px minmax(0,1fr) 54px!important;
  min-width:0!important;
  background:#050505!important;
}
.fso-idx-detail-template .fso-single-slider-thumbs-wrap{
  overflow:hidden!important;
  min-width:0!important;
  background:#050505!important;
}
.fso-idx-detail-template .fso-single-slider-thumbs{
  display:flex!important;
  flex-wrap:nowrap!important;
  gap:12px!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  scroll-behavior:smooth!important;
  min-width:0!important;
  padding:10px 12px!important;
  scrollbar-width:none!important;
}
.fso-idx-detail-template .fso-single-slider-thumbs::-webkit-scrollbar{display:none!important}
.fso-idx-detail-template .fso-single-thumb-slide{
  flex:0 0 150px!important;
  width:150px!important;
  min-width:150px!important;
  height:86px!important;
  padding:0!important;
}
.fso-idx-detail-template .fso-single-thumb{
  width:150px!important;
  height:86px!important;
  display:block!important;
  border:1px solid #333!important;
  background:#000!important;
  opacity:.72!important;
  padding:0!important;
}
.fso-idx-detail-template .fso-single-thumb.is-active{
  opacity:1!important;
  outline:2px solid #fff!important;
  outline-offset:-2px!important;
}
.fso-idx-detail-template .fso-single-thumb img{
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  display:block!important;
}
.fso-idx-detail-template .fso-thumb-rail-nav{
  min-height:106px!important;
  height:106px!important;
  border:0!important;
  border-right:1px solid #222!important;
  background:#050505!important;
  color:#fff!important;
  font-size:28px!important;
  cursor:pointer!important;
}
.fso-idx-detail-template .fso-thumb-rail-next{border-left:1px solid #222!important;border-right:0!important}
.fso-idx-detail-template .fso-hero-action-btn{
  min-width:130px!important;
  padding:0 24px!important;
  border:0!important;
  border-left:1px solid #222!important;
  background:#050505!important;
  color:#fff!important;
  text-transform:uppercase!important;
  letter-spacing:.08em!important;
  font-size:12px!important;
  cursor:pointer!important;
}
.fso-idx-detail-template .fso-hero-action-btn:hover{background:#0f1b2d!important}
.fso-idx-detail-template .fso-idx-pricing-history-card{
  border:1px solid #e5e7eb;
  background:#fff;
}
.fso-idx-detail-template .fso-idx-pricing-history-row{
  display:grid;
  grid-template-columns:150px 1fr 160px 1fr;
  gap:14px;
  padding:14px 18px;
  border-bottom:1px solid #e5e7eb;
  align-items:center;
}
.fso-idx-detail-template .fso-idx-pricing-history-row:last-child{border-bottom:0}
.fso-idx-detail-template .fso-idx-pricing-history-row span,
.fso-idx-detail-template .fso-idx-pricing-history-row em{color:#6b7280;font-style:normal}
.fso-idx-detail-template .fso-idx-pricing-history-row strong{color:#0f1b2d}
.fso-idx-detail-template .fso-idx-compliance{
  margin:26px 0 0;
  padding:14px 16px;
  background:#f8fafc;
  border:1px solid #e5e7eb;
  color:#374151;
  font-size:14px;
}
.fso-idx-detail-marker{
  width:46px;
  height:46px;
  background-size:contain;
  background-position:center;
  background-repeat:no-repeat;
}
@media (max-width: 900px){
  .fso-idx-detail-template .fso-single-slider-bottom{grid-template-columns:1fr!important}
  .fso-idx-detail-template .fso-hero-action-btn{min-height:58px!important;flex:1!important}
  .fso-idx-detail-template .fso-idx-pricing-history-row{grid-template-columns:1fr;gap:5px}
}

/* v1.2.19: IDX detail contact actions and MLS disclosure */
.fso-idx-detail-template .fso-idx-contact-actions{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:24px;
  margin:36px 0;
}
.fso-idx-detail-template .fso-idx-contact-card{
  background:#fff;
  border:1px solid #e5e7eb;
  padding:28px;
}
.fso-idx-detail-template .fso-idx-contact-card h2{
  margin:0 0 8px;
  font-size:24px;
  line-height:1.2;
  color:#0f1b2d;
}
.fso-idx-detail-template .fso-idx-contact-card p{
  margin:0 0 20px;
  color:#6b7280;
}
.fso-idx-detail-template .fso-idx-lead-form{
  display:grid;
  gap:14px;
}
.fso-idx-detail-template .fso-idx-form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}
.fso-idx-detail-template .fso-idx-lead-form label{
  display:grid;
  gap:6px;
  font-size:13px;
  font-weight:700;
  color:#374151;
}
.fso-idx-detail-template .fso-idx-lead-form input,
.fso-idx-detail-template .fso-idx-lead-form textarea{
  width:100%;
  border:1px solid #d1d5db;
  background:#fff;
  color:#0f1b2d;
  padding:12px 13px;
  font-size:15px;
  border-radius:0;
}
.fso-idx-detail-template .fso-idx-lead-form textarea{resize:vertical;min-height:96px}
.fso-idx-detail-template .fso-idx-lead-form button{
  border:0;
  background:#0f1b2d; /* v0.4.60 (I-2): one navy */
  color:#fff;
  text-transform:uppercase;
  letter-spacing:.08em;
  font-weight:800;
  padding:15px 22px;
  cursor:pointer;
}
.fso-idx-detail-template .fso-idx-lead-form button:hover{background:#c8102e}
.fso-idx-detail-template .fso-idx-mls-disclosure{
  margin:38px 0 0;
  padding:22px 0 0;
  border-top:1px solid #e5e7eb;
  color:#666;
  font-size:13px;
  line-height:1.45;
}
.fso-idx-detail-template .fso-idx-mls-disclosure p{margin:0 0 14px;color:#666}
.fso-idx-detail-template .fso-idx-broker-reciprocity img{max-width:230px;height:auto;display:block;margin-top:10px}
.fso-idx-detail-template .fso-idx-broker-reciprocity{font-size:13px;color:#666}
@media (max-width: 900px){
  .fso-idx-detail-template .fso-idx-contact-actions{grid-template-columns:1fr}
  .fso-idx-detail-template .fso-idx-form-grid{grid-template-columns:1fr}
}

/* v1.2.20 IDX detail CTA/modal/disclosure polish */
.fso-idx-highlight-ctas{
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
  margin-top:18px;
  padding-top:18px;
  border-top:1px solid rgba(15,23,42,.12);
}
.fso-idx-primary-cta,
.fso-idx-secondary-cta{
  width:100%;
  min-height:46px;
  border-radius:0;
  border:1px solid #0f1b2d;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
  cursor:pointer;
}
.fso-idx-primary-cta{background:#0f1b2d;color:#fff;}
.fso-idx-secondary-cta{background:#fff;color:#0f1b2d;}
.fso-idx-primary-cta:hover{background:#000;}
.fso-idx-secondary-cta:hover{background:#f3f4f6;}
.fso-idx-lead-modal-grid .fso-contact-modal-left p{margin:.35rem 0;color:#4b5563;}
.fso-mortgage-lender-cta{
  margin:18px 0 0;
  padding:16px;
  border:1px solid rgba(15,23,42,.12);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  background:#fff;
}
.fso-mortgage-lender-cta img{
  max-width:180px;
  max-height:54px;
  object-fit:contain;
}
.fso-mortgage-lender-cta a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:12px 18px;
  background:#0f1b2d;
  color:#fff;
  text-decoration:none;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.fso-idx-mls-disclosure{
  margin:48px auto 0;
  padding:22px 0 0;
  border-top:1px solid rgba(15,23,42,.12);
  color:#666;
  font-size:13px;
  line-height:1.45;
}
.fso-idx-mls-logo{
  /* v0.4.45: 25px, the owner's size for the IDX icon (MLS_ICONS), the only
     image this slot ever shows: no board's feed text names a logo. */
  display:block;
  max-width:180px;
  max-height:25px;
  width:auto;
  height:auto;
  object-fit:contain;
  margin:0 0 12px;
}
.fso-idx-mls-disclaimer-text p,
.fso-idx-broker-reciprocity p{margin:.35rem 0;}
.fso-idx-mls-disclaimer-text h4,
.fso-idx-broker-reciprocity h4{font-size:14px;margin:12px 0 6px;color:#444;}
.fso-idx-mls-disclosure a{color:#333;text-decoration:underline;}
.fso-agent-right--stacked{display:flex;flex-direction:column;gap:10px;align-items:stretch;}
.fso-connect-btn--secondary{background:#fff!important;color:#0f1b2d!important;border:1px solid #0f1b2d!important;}
@media (max-width: 700px){.fso-mortgage-lender-cta{align-items:flex-start;flex-direction:column}.fso-mortgage-lender-cta a{width:100%;}.fso-idx-mls-logo{max-width:150px;}}

/* v1.2.21 SEO/title, modal alignment, and expanded filter UI */
.fso-idx-filter-grid select[multiple],
.fso-idx-advanced-grid select[multiple]{
  min-height:46px;
  height:auto;
}
.fso-idx-advanced-filters{
  margin:16px 0 0;
  border:1px solid rgba(15,23,42,.12);
  background:#fff;
}
.fso-idx-advanced-filters summary{
  cursor:pointer;
  padding:14px 16px;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:#0f1b2d;
  list-style:none;
}
.fso-idx-advanced-filters summary::-webkit-details-marker{display:none;}
.fso-idx-advanced-filters summary:after{content:'+';float:right;font-size:22px;line-height:1;}
.fso-idx-advanced-filters[open] summary:after{content:'–';}
.fso-idx-advanced-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  padding:0 16px 16px;
}
.fso-idx-check{
  min-height:46px;
  border:1px solid rgba(15,23,42,.16);
  display:flex;
  align-items:center;
  gap:9px;
  padding:10px 12px;
  background:#fff;
  color:#1f2937;
  font-weight:600;
}
.fso-idx-check input{margin:0;}
.fso-idx-detail-template .fso-modal.is-open{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:28px;
}
.fso-idx-detail-template .fso-modal-dialog-contact{
  margin:auto;
  max-height:calc(100vh - 56px);
  overflow:auto;
}
/* v0.3.62 (Task 5): the #fso-photos-modal rules that lived here are gone --
   that markup was deleted from class-rme-idx-detail-view.php (replaced by
   .rme-lbx grid mode; see the Task 5 block near the end of this file). */
@media (max-width: 1100px){
  .fso-idx-advanced-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width: 700px){
  .fso-idx-advanced-grid{grid-template-columns:1fr;}
  .fso-idx-detail-template .fso-modal.is-open{padding:14px;}
}

/* v1.2.22 autocomplete grouping and listing card open-house polish */
.fso-idx-suggestions{max-height:min(72vh,720px);overflow:auto;}
.fso-idx-suggestion-group{border-top:1px solid rgba(15,23,42,.08);}
.fso-idx-suggestion-group:first-child{border-top:0;}
.fso-idx-suggestion-heading{padding:12px 18px 6px;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:#6b7280;background:#f8fafc;}
.fso-idx-suggestions button,
.fso-idx-suggestions a{text-transform:none;}
.fso-idx-suggestions button span,
.fso-idx-suggestions a span{font-weight:650;color:#0f1b2d;}
.fso-idx-suggestions button small,
.fso-idx-suggestions a small{text-transform:uppercase;letter-spacing:.06em;color:#6b7280;}
.fso-idx-card-open-house{margin-top:10px;padding:7px 10px;background:#fff4f4;color:#a01822;border:1px solid rgba(160,24,34,.18);font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;}

/* v0.2.1 standalone filter modal modeled after the requested IDX filter screenshot. */
.fso-idx-filter-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0 0}.fso-idx-filter-open{min-width:auto}.fso-idx-sort-select{max-width:220px}.fso-idx-filter-modal[hidden]{display:none!important}.fso-idx-filter-modal{position:fixed;inset:0;z-index:999999;display:flex;align-items:center;justify-content:center;padding:0}.fso-idx-filter-modal-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.48)}.fso-idx-filter-modal-panel{position:relative;z-index:1;width:100vw;max-width:100vw;height:100vh;max-height:100vh;background:#fff;border:0;box-shadow:none;display:flex;flex-direction:column;overflow:hidden}.fso-idx-filter-modal-close{position:absolute;right:22px;top:16px;z-index:3;border:0;background:transparent;color:#555;font-size:44px;line-height:1;cursor:pointer}.fso-idx-filter-modal-body{display:grid;grid-template-columns:minmax(430px,.92fr) minmax(560px,1.08fr);gap:70px;padding:34px 74px 32px 38px;overflow:auto}.fso-idx-filter-col{display:grid;gap:20px;align-content:start}.fso-idx-fieldset{border:0;margin:0;padding:0}.fso-idx-fieldset legend,.fso-idx-modal-label,.fso-idx-modal-listgrid label{display:block;margin:0 0 8px;color:#666;font-size:14px;font-weight:700}.fso-idx-check-grid{display:grid;gap:14px 34px}.fso-idx-check-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.fso-idx-check-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.fso-idx-check-min{display:flex;align-items:center;gap:9px;color:#737373;font-size:14px;font-weight:500}.fso-idx-check-min input{appearance:none;width:24px !important;height:24px!important;border-radius:999px;background:none;position:relative;flex:0 0 24px}.fso-idx-check-min input:before{content:"";position:absolute;left:7px;top:7px;width:10px;height:10px;border:1px solid #777;background:#fff;box-sizing:border-box}.fso-idx-check-min input:checked:before{background:#002855;border-color:#002855;box-shadow:inset 0 0 0 2px #fff}.fso-idx-modal-label .fso-idx-input{margin-top:6px;border-radius:0;border-color:#5d5d5d;height:34px;padding:6px 10px}.fso-idx-modal-2col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 38px}.fso-idx-modal-2col select.fso-idx-input{height:34px;border-radius:0;border-color:#5d5d5d;color:#777}.fso-idx-features-box{margin-top:66px}.fso-idx-modal-listgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 38px;margin-top:26px}.fso-idx-modal-listgrid select[multiple]{height:104px!important;min-height:104px;border-radius:0;border-color:#5d5d5d;color:#777;padding:7px 10px;overflow:auto}.fso-idx-filter-modal-actions{display:grid;grid-template-columns:1fr 1fr 1fr;margin-top:auto;background:#0f1b2d}.fso-idx-modal-submit,.fso-idx-modal-cancel{height:58px;border:0;background:#0f1b2d;color:#fff;text-transform:uppercase;letter-spacing:.35em;font-size:18px;cursor:pointer}.fso-idx-modal-submit{border-right:1px solid rgba(255,255,255,.45)}.fso-idx-modal-cancel{border-left:1px solid rgba(255,255,255,.45)}.fso-idx-modal-submit:hover,.fso-idx-modal-cancel:hover{background:#222}body.fso-idx-filter-modal-open{overflow:hidden}@media(max-width:980px){.fso-idx-filter-modal{padding:0}.fso-idx-filter-modal-body{grid-template-columns:1fr;padding:64px 18px 22px;gap:24px}.fso-idx-modal-2col,.fso-idx-modal-listgrid{grid-template-columns:1fr}.fso-idx-check-grid-2,.fso-idx-check-grid-3{grid-template-columns:1fr}.fso-idx-filter-modal-actions{grid-template-columns:1fr}.fso-idx-modal-submit,.fso-idx-modal-cancel{border:0;border-top:1px solid rgba(255,255,255,.35)}}

/* v0.2.3 search/filter layout source update */
.fso-idx-filters{
  background:#fff;
  border:1px solid #e5e7eb;
  border-radius:0;
  padding:18px;
}
.fso-idx-search-row{
  display:grid!important;
  grid-template-columns:minmax(360px,1fr) 150px 104px 104px 130px 128px 128px;
  gap:0!important;
  align-items:stretch!important;
  margin-bottom:0!important;
}
.fso-idx-search-row .fso-idx-token-search,
.fso-idx-search-row .fso-idx-quick-filter,
.fso-idx-search-row .fso-idx-filter-open,
.fso-idx-search-row .fso-idx-button-primary{
  min-height:48px;
}
.fso-idx-search-row .fso-idx-token-search{
  border: 1px solid #dfdfdf;
  border-radius:0;
  min-width:0;
}
.fso-idx-search-row .fso-idx-main-search{
  height:48px;
  border-radius:0!important;
  font-size:14px;
  padding:0 18px;
}
.fso-idx-search-row .fso-idx-token-list{
  padding:6px 10px 0;
}
.fso-idx-search-row .fso-idx-quick-filter .fso-idx-input,
.fso-idx-search-row .fso-idx-filter-open,
.fso-idx-search-row .fso-idx-button-primary{
  height:48px!important;
  min-height:48px;
  width:100%;
  border-radius:0!important;
  border:1px solid #dfdfdf;
  border-right:0;
  box-shadow:none;
}
.fso-idx-search-row .fso-idx-quick-filter .fso-idx-input{
  color:#111111;
  background:#fff;
  font-size:12px !important;
  letter-spacing: 1.4px !important;
  padding:0 16px;
}
.fso-idx-search-row .fso-idx-filter-open{
  background:#f7f6f1;
  color:#6b6f76;
  text-transform:uppercase;
  letter-spacing:.08em;
  font-size:13px;
  font-weight:700;
  display:flex;
  align-items:center;
  justify-content:center;
}
.fso-idx-search-row .fso-idx-button-primary{
  background:#0f1b2d; /* v0.4.60 (I-1/I-2): Search is navy */
  border-color:#0f1b2d;
  color:#fff;
  text-transform:uppercase;
  letter-spacing:.12em;
  font-weight:700;
  flex:initial!important;
  min-width:0!important;
  align-self:stretch!important;
}
.fso-idx-actions-row{
  display:grid!important;
  grid-template-columns:auto auto 1fr;
  justify-content:start!important;
  align-items:center!important;
  gap:10px!important;
  margin-top:52px!important;
}
.fso-idx-summary{
  justify-self:end;
}
.fso-idx-sort-wrap .fso-idx-sort-select{
  width:128px;
  height:48px;
  border-radius:0;
  border-color:#777;
  color:#0f1b2d;
  font-weight:700;
  padding:0 16px;
}
.fso-idx-view-toggle{
  gap:0!important;
}
.fso-idx-view-toggle .fso-idx-view-btn{
  height:48px;
  border-radius:0;
  padding:0 26px;
  border-color:#0f1b2d;
}
.fso-idx-view-toggle .fso-idx-view-btn:not(.is-active){
  background:#fff;
  color:#0f1b2d;
}
/* v0.3.31: top search bar sticks; the results toolbar (view/sort/save/account)
   sits at the top of the cards column and scrolls with them. */
.fso-idx-search-row{
  position:sticky!important;
  top:0;
  z-index:40;
  background:#fff;
  padding:10px 0 12px;
}
.fso-idx-actions-row{
  display:flex!important;
  grid-template-columns:none!important;
  align-items:center;
  gap:10px!important;
  margin:0 0 16px!important;
  flex-wrap:wrap;
}
.fso-idx-actions-row .fso-idx-summary{
  margin-left:auto!important;
  justify-self:auto!important;
}
.fso-idx-modal-2col select.fso-idx-input{
  height:50px!important;
}

@media (max-width: 1180px){
  .fso-idx-search-row{
    grid-template-columns:minmax(280px,1fr) 120px 92px 92px 116px 120px 120px;
  }
  .fso-idx-search-row .fso-idx-quick-filter .fso-idx-input,
  .fso-idx-search-row .fso-idx-filter-open,
  .fso-idx-search-row .fso-idx-button-primary{
    font-size:12px;
    padding-left:10px;
    padding-right:10px;
  }
}

@media (max-width: 900px){
  .fso-idx-filters{
    padding:22px 20px!important;
    border-radius:0!important;
  }
  .fso-idx-search-row{
    grid-template-columns:minmax(0,1fr) 138px!important;
    gap:0!important;
  }
  .fso-idx-search-row .fso-idx-token-search{
    border: 1px solid #dfdfdf;
  }
  .fso-idx-search-row .fso-idx-main-search{
    height:64px;
    font-size:14px;
    padding:0 18px;
  }
  .fso-idx-search-row .fso-idx-button-primary{
    height:70px!important;
    min-height:70px!important;
    letter-spacing:.12em;
    font-size:20px;
  }
  .fso-idx-search-row .fso-idx-quick-filter{
    display:none!important;
  }
  .fso-idx-search-row .fso-idx-filter-open{
    grid-column:1 / 2;
    grid-row:2;
    display:flex!important;
    height:70px!important;
    min-height:70px!important;
    margin-top:22px;
    border:3px solid #e5e5e5;
    background:#f7f6f1;
    font-size:22px;
    letter-spacing:.12em;
  }
  .fso-idx-search-row .fso-idx-button-primary{
    grid-column:2 / 3;
    grid-row:1;
  }
  /* v0.3.32: the results toolbar now lives inside the cards column — lay it out
     as a simple wrapping flex row (no negative-margin interleave). */
  .fso-idx-actions-row{
    display:flex!important;
    flex-wrap:wrap;
    align-items:center;
    gap:12px!important;
    margin:20px 0 6px!important;
    min-height:0;
  }
  .fso-idx-sort-wrap{grid-column:auto;flex:0 0 auto}
  .fso-idx-sort-wrap .fso-idx-sort-select{
    width:auto;
    min-width:150px;
    height:56px;
    border:2px solid #777;
    font-size:16px;
    padding:0 40px 0 18px;
  }
  .fso-idx-summary{grid-column:auto;justify-self:auto;margin:0;flex-basis:100%}
  .fso-idx-account-controls{flex-wrap:wrap}
  .fso-idx-save-search-btn,.fso-idx-account-btn{height:56px!important}
  .fso-idx-view-toggle,
  .fso-idx-map-panel,
  .fso-idx-map{
    display:none!important;
  }
  .fso-idx-layout{
    display:block!important;
    grid-template-columns:1fr!important;
  }
}

@media (max-width: 640px){
  .fso-idx-search-row{
    grid-template-columns:minmax(0,1fr) 112px!important;
  }
  .fso-idx-search-row .fso-idx-main-search{
    height:54px;
    font-size:14px;
  }
  .fso-idx-search-row .fso-idx-button-primary{
    height:60px!important;
    min-height:60px!important;
    font-size:14px;
  }
  .fso-idx-search-row .fso-idx-filter-open{
    height:58px!important;
    min-height:58px!important;
    margin-top:14px;
    font-size:17px;
  }
  .fso-idx-actions-row{
    margin:16px 0 6px!important;
    gap:10px!important;
  }
  .fso-idx-sort-wrap .fso-idx-sort-select{
    height:52px;
    min-width:130px;
    font-size:16px;
    padding-left:16px;
  }
  .fso-idx-save-search-btn,.fso-idx-account-btn{height:52px!important;padding:0 14px!important;font-size:12px!important}
}


/* v0.2.4 search/filter source fixes */
.fso-idx-search-row{
  grid-template-columns:minmax(520px,1fr) 150px 120px 120px 150px 150px 150px;
}
.fso-idx-search-row .fso-idx-token-search,
.fso-idx-search-row .fso-idx-quick-filter,
.fso-idx-search-row .fso-idx-filter-open,
.fso-idx-search-row .fso-idx-button-primary{
  min-height:56px;
}
.fso-idx-search-row .fso-idx-main-search,
.fso-idx-search-row .fso-idx-quick-filter .fso-idx-input,
.fso-idx-search-row .fso-idx-filter-open,
.fso-idx-search-row .fso-idx-button-primary{
  height:56px!important;
  min-height:56px!important;
}
.fso-idx-search-row .fso-idx-main-search{
  font-size:14px;
  padding:0 22px;
}
.fso-idx-search-row select.fso-idx-input,
.fso-idx-sort-wrap .fso-idx-sort-select,
.fso-idx-modal-2col select.fso-idx-input,
.fso-idx-modal-listgrid select.fso-idx-input{
  -webkit-appearance:none;
  appearance:none;
  background-image:linear-gradient(45deg, transparent 50%, #8a8a8a 50%),linear-gradient(135deg, #8a8a8a 50%, transparent 50%);
  background-position:calc(100% - 22px) 50%, calc(100% - 14px) 50%;
  background-size:8px 8px, 8px 8px;
  background-repeat:no-repeat;
  padding-right:44px!important;
}
.fso-idx-search-row .fso-idx-quick-filter .fso-idx-input{
  padding-left:20px;
}
.fso-idx-remax-filter-box{
  margin-top:12px;
}
.fso-idx-features-box{
  margin-top:28px;
}

@media (max-width: 1180px){
  .fso-idx-search-row{
    grid-template-columns:minmax(360px,1fr) 128px 96px 96px 126px 122px 122px;
  }
}
@media (max-width: 900px){
  .fso-idx-search-row .fso-idx-main-search{
    height:64px!important;
    min-height:64px!important;
  }
  .fso-idx-search-row .fso-idx-button-primary{
    height:70px!important;
    min-height:70px!important;
  }
}
@media (max-width: 640px){
  .fso-idx-search-row .fso-idx-main-search{
    height:54px!important;
    min-height:54px!important;
  }
  .fso-idx-search-row .fso-idx-button-primary{
    height:60px!important;
    min-height:60px!important;
  }
}

/* v0.2.5 search bar sizing, select caret, and token layout fixes */
.fso-idx-filters > .fso-idx-token-list{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin:0 0 14px;
}
.fso-idx-filters > .fso-idx-token-list:empty{
  display:none;
  margin:0;
}
.fso-idx-search-row{
  grid-template-columns:minmax(380px,1fr) 150px 120px 120px 150px 150px 150px!important;
}
.fso-idx-search-row .fso-idx-token-search,
.fso-idx-search-row .fso-idx-quick-filter,
.fso-idx-search-row .fso-idx-filter-open,
.fso-idx-search-row .fso-idx-button-primary{
  min-height:50px!important;
}
.fso-idx-search-row .fso-idx-main-search,
.fso-idx-search-row .fso-idx-quick-filter .fso-idx-input,
.fso-idx-search-row .fso-idx-filter-open,
.fso-idx-search-row .fso-idx-button-primary{
  height:50px!important;
  min-height:50px!important;
  line-height:50px!important;
}
.fso-idx-search-row .fso-idx-main-search{
  font-size:14px!important;
  padding:0 18px!important;
}
.fso-idx-search-row .fso-idx-quick-filter .fso-idx-input,
.fso-idx-sort-wrap .fso-idx-sort-select{
  font-size:12px!important;
  text-transform: uppercase !important;
  line-height:normal!important;
  padding:0 40px 0 18px!important;
  font-weight: 400;
}
.fso-idx-search-row select.fso-idx-input,
.fso-idx-sort-wrap .fso-idx-sort-select{
  -webkit-appearance:none!important;
  appearance:none!important;
  background-color:#fff!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath fill='%23888' d='M7 9 0 0h14z'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important;
  background-position:right 20px center!important;
  background-size:11px 7px!important;
}
.fso-idx-sort-wrap .fso-idx-sort-select{
  height:50px!important;
  min-height:50px!important;
}
.fso-idx-search-row .fso-idx-filter-open,
.fso-idx-search-row .fso-idx-button-primary{
  line-height:normal!important;
}

@media (max-width: 1180px){
  .fso-idx-search-row{
    grid-template-columns:minmax(300px,1fr) 130px 96px 96px 128px 122px 122px!important;
  }
  .fso-idx-search-row .fso-idx-quick-filter .fso-idx-input{
    padding-left:14px!important;
    padding-right:34px!important;
    background-position:right 16px center!important;
  }
}
@media (max-width: 900px){
  .fso-idx-search-row{
    grid-template-columns:minmax(0,1fr) 138px!important;
  }
  .fso-idx-search-row .fso-idx-main-search{
    height:64px!important;
    min-height:64px!important;
    line-height:64px!important;
    font-size:14px!important;
  }
  .fso-idx-search-row .fso-idx-button-primary{
    height:70px!important;
    min-height:70px!important;
  }
  .fso-idx-sort-wrap .fso-idx-sort-select{
    height:70px!important;
    min-height:70px!important;
    font-size:20px!important;
    padding:0 48px 0 24px!important;
    background-position:right 24px center!important;
  }
}
@media (max-width: 640px){
  .fso-idx-search-row{
    grid-template-columns:minmax(0,1fr) 112px!important;
  }
  .fso-idx-search-row .fso-idx-main-search{
    height:54px!important;
    min-height:54px!important;
    line-height:54px!important;
    font-size:14px!important;
  }
  .fso-idx-search-row .fso-idx-button-primary{
    height:60px!important;
    min-height:60px!important;
  }
  .fso-idx-sort-wrap .fso-idx-sort-select{
    height:58px!important;
    min-height:58px!important;
    font-size:17px!important;
    padding-left:18px!important;
    background-position:right 18px center!important;
  }
}

/* v0.2.6 mobile controls, dropdown caret, and card alignment fixes */
.fso-idx-search-row{
  grid-template-columns:minmax(280px,1fr) 140px 112px 112px 136px 126px 126px!important;
}
.fso-idx-search-row .fso-idx-token-search{
  min-width:0!important;
}
.fso-idx-search-row .fso-idx-main-search{
  box-sizing:border-box!important;
  width:100%!important;
  max-width:100%!important;
  padding-left:16px!important;
  padding-right:16px!important;
}
.fso-idx-search-row .fso-idx-quick-filter .fso-idx-input,
.fso-idx-sort-wrap .fso-idx-sort-select{
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  padding-left:14px!important;
  padding-right:34px!important;
}
.fso-idx-search-row select.fso-idx-input,
.fso-idx-sort-wrap .fso-idx-sort-select{
  background-position:right 14px center!important;
  background-size:10px 7px!important;
}
.fso-idx-card{
  display:flex!important;
  flex-direction:column!important;
  height:100%!important;
}
.fso-idx-card-image{
  flex:0 0 auto!important;
}
.fso-idx-card-body{
  display:flex!important;
  flex-direction:column!important;
  flex:1 1 auto!important;
}
.fso-idx-card-stat-row{
  margin:16px -16px 0!important;
  margin-top:auto!important;
}
.fso-idx-card-button,
.fso-idx-card-stat-row + .fso-idx-card-button{
  margin:0 -16px -16px!important;
  flex:0 0 auto!important;
}
@media (max-width:1180px){
  .fso-idx-search-row{
    grid-template-columns:minmax(240px,1fr) 120px 90px 90px 118px 112px 112px!important;
  }
  .fso-idx-search-row .fso-idx-quick-filter .fso-idx-input{
    font-size:12px!important;
    padding-left:10px!important;
    padding-right:30px!important;
    background-position:right 12px center!important;
  }
}
@media (max-width:900px){
  .fso-idx-search-row{
    grid-template-columns:minmax(0,1fr) 138px!important;
  }
  .fso-idx-search-row .fso-idx-filter-open{
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    text-align:center!important;
    line-height:1!important;
    padding:0!important;
  }
  .fso-idx-sort-wrap .fso-idx-sort-select{
    border-color:#e5e5e5!important;
    color:#6b6f76!important;
    font-weight:700!important;
    text-transform:uppercase!important;
    letter-spacing:.12em!important;
    font-size:22px!important;
    background-position:right 28px center!important;
  }
}
@media (max-width:640px){
  .fso-idx-actions-row{
    grid-template-columns:minmax(0, 1fr) minmax(0, 1fr)!important;
    margin-left:0!important;
    margin-top:14px!important;
    gap:12px!important;
    min-height:58px!important;
  }
  .fso-idx-search-row .fso-idx-filter-open{
    grid-column:1 / 2!important;
    grid-row:2!important;
    margin-top:14px!important;
    height:58px!important;
    min-height:58px!important;
    font-size:17px!important;
  }
  .fso-idx-sort-wrap{
    grid-column:2 / 3!important;
  }
  .fso-idx-sort-wrap .fso-idx-sort-select{
    height:58px!important;
    min-height:58px!important;
    font-size:17px!important;
    border-width:3px!important;
    border-color:#e5e5e5!important;
    padding-left:18px!important;
    padding-right:42px!important;
    background-position:right 20px center!important;
  }
  .fso-idx-summary{
    grid-column:1 / -1!important;
    justify-self:center!important;
    width:100%!important;
    text-align:center!important;
    margin-top:24px!important;
  }
}

/* v0.2.7 responsive search bar alignment fixes
   Source-level responsive layout: on tablet/mobile, flatten the search row and action row
   into one two-column form grid so Filters and Sort cannot overlap. */
@media (max-width: 900px){
  .fso-idx-filters{
    display:grid!important;
    grid-template-columns:minmax(0, 1fr) 180px!important;
    gap:16px 0!important;
    align-items:stretch!important;
    padding:20px!important;
  }
  .fso-idx-filters > .fso-idx-token-list{
    grid-column:1 / -1!important;
    margin-bottom:0!important;
  }
  .fso-idx-search-row,
  .fso-idx-actions-row{
    display:contents!important;
    margin:0!important;
    min-height:0!important;
  }
  .fso-idx-search-row .fso-idx-token-search{
    grid-column:1 / 2!important;
    grid-row:auto!important;
    min-width:0!important;
    width:100%!important;
    height:60px!important;
    min-height:60px!important;
    border: 1px solid #dfdfdf;
    box-sizing:border-box!important;
  }
  .fso-idx-search-row .fso-idx-main-search{
    height:54px!important;
    min-height:54px!important;
    line-height:54px!important;
    font-size:14px!important;
    padding:0 18px!important;
  }
  .fso-idx-search-row .fso-idx-button-primary{
    grid-column:2 / 3!important;
    grid-row:auto!important;
    width:100%!important;
    height:60px!important;
    min-height:60px!important;
    border:0!important;
    font-size:16px!important;
    letter-spacing:.14em!important;
  }
  .fso-idx-search-row .fso-idx-filter-open{
    grid-column:1 / 2!important;
    grid-row:auto!important;
    width:100%!important;
    height:56px!important;
    min-height:56px!important;
    margin:0!important;
    border:0!important;
    background:#f7f6f1!important;
    color:#6b6f76!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    text-align:center!important;
    font-size:16px!important;
    line-height:1!important;
    font-weight:800!important;
    letter-spacing:.12em!important;
    text-transform:uppercase!important;
    padding:0 12px!important;
  }
  .fso-idx-sort-wrap{
    grid-column:2 / 3!important;
    grid-row:auto!important;
    width:100%!important;
    min-width:0!important;
  }
  .fso-idx-sort-wrap .fso-idx-sort-select{
    width:100%!important;
    max-width:none!important;
    height:56px!important;
    min-height:56px!important;
    border:3px solid #e5e5e5!important;
    border-radius:0!important;
    color:#6b6f76!important;
    background-color:#fff!important;
    font-size:16px!important;
    line-height:normal!important;
    font-weight:800!important;
    letter-spacing:.12em!important;
    text-transform:uppercase!important;
    padding:0 44px 0 22px!important;
    background-position:right 24px center!important;
    box-sizing:border-box!important;
  }
  .fso-idx-view-toggle,
  .fso-idx-map-panel,
  .fso-idx-map{
    display:none!important;
  }
  .fso-idx-summary{
    grid-column:1 / -1!important;
    justify-self:center!important;
    width:100%!important;
    text-align:center!important;
    margin:10px 0 0!important;
    font-size:15px!important;
  }
  .fso-idx-layout{
    display:block!important;
    grid-template-columns:1fr!important;
  }
}

@media (max-width: 640px){
  .fso-idx-filters{
    grid-template-columns:minmax(0, 1fr) 126px!important;
    gap:14px 0!important;
    padding:20px!important;
  }
  .fso-idx-search-row .fso-idx-token-search{
    height:58px!important;
    min-height:58px!important;
  }
  .fso-idx-search-row .fso-idx-main-search{
    height:52px!important;
    min-height:52px!important;
    line-height:52px!important;
    font-size:14px!important;
    padding:0 14px!important;
  }
  .fso-idx-search-row .fso-idx-button-primary{
    height:58px!important;
    min-height:58px!important;
    font-size:13px!important;
    letter-spacing:.12em!important;
  }
  .fso-idx-search-row .fso-idx-filter-open,
  .fso-idx-sort-wrap .fso-idx-sort-select{
    height:54px!important;
    min-height:54px!important;
    font-size:15px!important;
  }
  .fso-idx-sort-wrap .fso-idx-sort-select{
    padding-left:18px!important;
    padding-right:38px!important;
    background-position:right 18px center!important;
  }
}

@media (max-width: 460px){
  .fso-idx-filters{
    grid-template-columns:minmax(0, 1fr) 116px!important;
    padding:20px!important;
  }
  .fso-idx-search-row .fso-idx-main-search{
    font-size:14px!important;
  }
  .fso-idx-search-row .fso-idx-button-primary{
    font-size:12px!important;
  }
  .fso-idx-search-row .fso-idx-filter-open,
  .fso-idx-sort-wrap .fso-idx-sort-select{
    font-size:14px!important;
    letter-spacing:.11em!important;
  }
}

/* v0.2.8 mobile/tablet search control row order
   Source fix: the DOM places Filters before Search, so responsive CSS must explicitly
   place Search beside the input on row 1 and Filters + Sort together on row 2. */
@media (max-width: 900px){
  .fso-idx-filters{
    grid-template-columns:minmax(0, 1fr) 180px!important;
    grid-auto-rows:auto!important;
  }
  .fso-idx-search-row .fso-idx-token-search{
    grid-column:1 / 2!important;
    grid-row:1!important;
  }
  .fso-idx-search-row .fso-idx-button-primary{
    grid-column:2 / 3!important;
    grid-row:1!important;
  }
  .fso-idx-search-row .fso-idx-filter-open{
    grid-column:1 / 2!important;
    grid-row:2!important;
  }
  .fso-idx-sort-wrap{
    grid-column:2 / 3!important;
    grid-row:2!important;
  }
  .fso-idx-summary{
    grid-column:1 / -1!important;
    grid-row:3!important;
  }
}

@media (max-width: 640px){
  .fso-idx-filters{
    grid-template-columns:minmax(0, 1fr) 136px!important;
  }
}

@media (max-width: 460px){
  .fso-idx-filters{
    grid-template-columns:minmax(0, 1fr) 128px!important;
  }
  .fso-idx-search-row .fso-idx-main-search{
    font-size:14px!important;
    padding-left:16px!important;
    padding-right:12px!important;
  }
  .fso-idx-search-row .fso-idx-button-primary,
  .fso-idx-search-row .fso-idx-filter-open,
  .fso-idx-sort-wrap .fso-idx-sort-select{
    height:58px!important;
    min-height:58px!important;
  }
}

/* v0.2.36 — status badge on property detail page */
.fso-helen-status-row {
  margin-bottom: 8px;
}
.fso-status-badge {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.5px;
  color: #fff;
  background: #4a4a4a;
  text-transform: uppercase;
  line-height: 1.4;
}
.fso-status-badge--active { background: #2c7a44; }
.fso-status-badge--pending { background: #c47a00; }
.fso-status-badge--coming-soon { background: #2364c9; }
.fso-status-badge--sold { background: #8b0000; }

/* v0.3.21: IDX compliance + navigation additions */
.fso-idx-card-broker{font-size:12px;color:var(--fso-idx-muted,#6b7280);line-height:1.4;margin-top:3px;font-style:italic}
.fso-idx-map-popup-broker{font-size:11px;color:#6b7280;margin-top:4px;font-style:italic}
/* v0.4.45: a board's IDX icon (RME_IDX_Search::MLS_ICONS, Doorify §17.8) at the
   owner's 25px, floated right on the card's "Listed by" line. The -4px top
   margin tucks it into the gap above that line: measured on staging, a card
   grows 0-6px, or one line when a long broker name no longer fits beside it.
   The !important beats .rme-sim-grid .fso-idx-card img{height:320px}. FSO's
   style.css carries the same rule for /listings/, which loads only that. */
.fso-idx-card-mlslogo{float:right;height:25px!important;width:auto!important;max-width:none;margin:-4px 0 0 8px;border-radius:0}
.fso-idx-page-disclosure{margin:34px 0 8px;padding:22px 24px;background:#f8f9fb;border:1px solid #e5e7eb;border-radius:6px;font-size:12px;line-height:1.55;color:#666}
.fso-idx-page-disclosure .fso-idx-disclosure-item{margin:0 0 18px}
.fso-idx-page-disclosure .fso-idx-disclosure-item:last-child{margin-bottom:0}
.fso-idx-page-disclosure .fso-idx-disclosure-name{margin:0 0 6px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#444}
.fso-idx-page-disclosure p{margin:0 0 10px;color:#666}
.fso-idx-page-disclosure img{max-height:48px;width:auto;display:block;margin:0 0 8px}
.rme-idx-directory-disclosure{margin-top:26px}
.fso-idx-back-row{margin:0 0 14px}
.fso-idx-back-link{display:inline-block;font-size:13px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:#374151;text-decoration:none;padding:6px 0}
.fso-idx-back-link:hover{color:#0f1b2d;text-decoration:underline}
.rme-idx-dir-disclosure-footer{max-width:1200px;margin:10px auto 30px;padding:0 20px}
.fso-idx-attribution-note{font-size:12px;color:#666;font-style:italic;margin:0 0 10px}

/* v0.3.22: guided search upgrades */
.fso-idx-price-pop-wrap{position:relative}
.fso-idx-price-btn{cursor:pointer;text-align:left;white-space:nowrap}
.fso-idx-price-btn.is-set{border-color:#0f1b2d;font-weight:700}
.fso-idx-price-pop{position:absolute;z-index:60;top:calc(100% + 6px);left:0;min-width:300px;background:#fff;border:1px solid #e5e7eb;border-radius:0px;box-shadow:0 18px 44px rgba(15,23,42,.16);padding:14px}
.fso-idx-price-pop-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#6b7280;margin-bottom:9px}
.fso-idx-price-pop-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fso-idx-price-pop-row input{height:42px}
.fso-idx-price-presets{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}
.fso-idx-price-presets button{border:1px solid #cfd4dc;background:#fff;border-radius:20px;padding:5px 11px;font-size:12px;cursor:pointer}
.fso-idx-price-presets button:hover{border-color:#0f1b2d}
.fso-idx-price-apply{margin-top:11px;width:100%;height:38px;background:#0f1b2d;color:#fff;border:none;border-radius:5px;font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.08em;cursor:pointer}
.fso-idx-map-bounds-toggle{position:absolute;z-index:5;top:10px;left:10px;display:flex;align-items:center;gap:7px;background:#fff;border:1px solid #e5e7eb;border-radius:6px;padding:7px 11px;font-size:12.5px;font-weight:600;box-shadow:0 3px 10px rgba(0,0,0,.08);cursor:pointer}
.fso-idx-map-bounds-toggle input{margin:0;accent-color:#0f1b2d}
/* map panel is already position:sticky (desktop) / relative (mobile), both of
   which anchor the absolute toggle — no positioning override needed here */
.fso-idx-card.is-pin-hover{box-shadow:0 0 0 2px #c8102e,0 14px 30px rgba(15,23,42,.12);transform:translateY(-2px)}
.fso-idx-marker.is-card-hover{background:#c8102e;color:#fff;transform:scale(1.12)}
.fso-idx-suggestion-group button small{color:#6b7280;font-variant-numeric:tabular-nums;white-space:nowrap}

/* ── v0.3.23: mockup parity ─────────────────────────────────── */

/* Quick-bar pills (Price / Beds / Baths) — bordered buttons with carets,
   matching the select styling they replaced */
.fso-idx-pill-btn{display:inline-flex;align-items:center;gap:9px;height:50px;padding:0 38px 0 16px;border:1px solid #cfd4dc;border-radius:6px;background:#fff;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap;position:relative;text-align:left;color:#333}
.fso-idx-pill-btn::after{content:"";position:absolute;right:15px;top:50%;width:8px;height:8px;border-right:1.6px solid #6b7280;border-bottom:1.6px solid #6b7280;transform:translateY(-70%) rotate(45deg)}
.fso-idx-pill-btn:hover{border-color:#0f1b2d}
.fso-idx-pill-btn.is-set{border-color:#0f1b2d;background:#f6f7f9;color:#003da5;font-weight:700}
.fso-idx-quickpop{position:relative}
.fso-idx-quickpop-panel{min-width:280px}
.fso-idx-seg{display:flex;border:1px solid #cfd4dc;border-radius:6px;overflow:hidden}
.fso-idx-seg button{flex:1;height:40px;border:0;border-right:1px solid #cfd4dc;background:#fff;font-size:13.5px;font-weight:600;cursor:pointer;color:#333}
.fso-idx-seg button:last-child{border-right:0}
.fso-idx-seg button.is-on{background:#0f1b2d;color:#fff}

/* Price popover sizing fixes (inputs were overflowing the panel) */
.fso-idx-price-pop{min-width:340px;box-sizing:border-box}
.fso-idx-price-pop *,.fso-idx-quickpop-panel *{box-sizing:border-box}
.fso-idx-price-pop-row input{width:100%;min-width:0;height:42px;border-radius:6px}
.fso-idx-price-presets{display:flex;gap:6px;flex-wrap:wrap}
.fso-idx-price-presets button{flex:0 0 auto}

/* Filter modal → right slide-in drawer */
.fso-idx-filter-modal{justify-content:flex-end;align-items:stretch}
.fso-idx-filter-modal-panel{width:480px;max-width:94vw;height:100vh;max-height:100vh;box-shadow:-18px 0 48px rgba(15,23,42,.22);animation:fsoIdxDrawerIn .26s cubic-bezier(.3,.8,.3,1)}
@keyframes fsoIdxDrawerIn{from{transform:translateX(60px);opacity:.4}to{transform:none;opacity:1}}
.fso-idx-filter-modal-close{right:16px;top:12px;font-size:34px}
.fso-idx-filter-modal-panel::before{content:"All Filters";display:block;flex:0 0 auto;padding:19px 22px 15px;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;border-bottom:1px solid #e5e7eb}
.fso-idx-filter-modal-body{display:flex;flex-direction:column;gap:22px;padding:20px 22px 24px;overflow-y:auto;flex:1 1 auto}
.fso-idx-filter-col{display:grid;gap:20px;align-content:start}
.fso-idx-features-box{margin-top:0}
.fso-idx-modal-2col{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 14px}
.fso-idx-modal-listgrid{grid-template-columns:1fr;gap:14px;margin-top:0}
.fso-idx-check-grid{gap:11px 16px}
.fso-idx-check-grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}
.fso-idx-fieldset legend,.fso-idx-modal-label,.fso-idx-modal-listgrid label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#6b7280}
.fso-idx-modal-label .fso-idx-input,.fso-idx-modal-2col select.fso-idx-input{border-radius:5px;border-color:#cfd4dc;height:40px}
.fso-idx-filter-modal-actions{display:flex;gap:10px;padding:14px 22px;background:#fff;border-top:1px solid #e5e7eb;margin-top:0}
.fso-idx-modal-submit{flex:1;height:50px;background:#0f1b2d;color:#fff;border:none;border-radius:6px;font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;border-right:0;font-variant-numeric:tabular-nums}
.fso-idx-modal-submit:hover{background:#000}
.fso-idx-modal-cancel{height:50px;padding:0 18px;background:#fff;color:#333;border:1px solid #cfd4dc;border-radius:6px;font-size:12.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;border-left:1px solid #cfd4dc}
.fso-idx-modal-cancel:hover{background:#f6f7f9;color:#111}
/* the drawer's × close makes the third "Cancel" button redundant */
.fso-idx-filter-modal-actions .fso-idx-modal-cancel:last-child{display:none}
@media(max-width:980px){
  .fso-idx-filter-modal-panel{width:100vw;max-width:100vw}
  .fso-idx-filter-modal-body{padding:18px 16px 20px}
  .fso-idx-filter-modal-actions{flex-direction:row}
}
/* v0.3.23b: Divi resets button borders — force the pill chrome */
.fso-idx-search-row .fso-idx-pill-btn,.fso-idx-app button.fso-idx-pill-btn{border:1px solid #cfd4dc!important;background:#fff!important;border-radius:6px!important;padding:0 38px 0 16px!important;height:50px!important;line-height:48px!important}
.fso-idx-app button.fso-idx-pill-btn:hover{border-color:#0f1b2d!important}
.fso-idx-app button.fso-idx-pill-btn.is-set{border-color:#0f1b2d!important;background:#f6f7f9!important}
.fso-idx-app .fso-idx-seg button{border:0!important;border-right:1px solid #cfd4dc!important;background:#fff!important;border-radius:0!important;padding:0!important;height:40px!important}
.fso-idx-app .fso-idx-seg button:last-child{border-right:0!important}
.fso-idx-app .fso-idx-seg button.is-on{background:#0f1b2d!important;color:#fff!important}
/* v0.3.24: polygon draw */
.fso-idx-map-draw-btn{position:absolute;z-index:5;top:10px;right:52px;display:flex;align-items:center;gap:7px;background:#fff!important;border:1px solid #e5e7eb!important;border-radius:6px!important;padding:7px 12px!important;font-size:12.5px;font-weight:600;color:#333;box-shadow:0 3px 10px rgba(0,0,0,.08);cursor:pointer}
.fso-idx-map-draw-btn:hover{border-color:#0f1b2d!important}
.fso-idx-map-draw-btn.is-active{background:#0f1b2d!important;color:#fff!important;border-color:#0f1b2d!important}
/* v0.3.25: lead form result note */
.fso-idx-lead-result{margin-top:12px;padding:11px 14px;border-radius:6px;background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46;font-size:13.5px;line-height:1.5}
.fso-idx-lead-result.is-error{background:#fef2f2;border-color:#fecaca;color:#991b1b}

/* ── v0.3.26: visitor accounts (favorites + saved searches) ── */
.fso-idx-fav-btn{position:absolute;z-index:3;top:10px;right:10px;width:34px;height:34px;border-radius:50%;border:0!important;background:rgba(255,255,255,.92)!important;color:#6b6b6b;font-size:17px;line-height:1;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.18);display:flex;align-items:center;justify-content:center;padding:0!important;transition:transform .12s ease}
.fso-idx-fav-btn:hover{transform:scale(1.12);color:#c8102e}
.fso-idx-fav-btn.is-fav{color:#c8102e;background:#fff!important}
/* v0.3.32: match the other hero action buttons (View All / Map) in BOTH states. */
.fso-idx-fav-btn--detail,
.fso-idx-fav-btn--detail.is-fav{
  position:static!important;width:auto!important;height:auto!important;
  border-radius:0!important;box-shadow:none!important;
  padding:0 24px!important;
  border:0!important;border-left:1px solid #222!important;
  background:#050505!important;color:#fff!important;
  text-transform:uppercase!important;letter-spacing:.08em!important;
  font-size:12px!important;font-weight:400!important;font-family:inherit;
  cursor:pointer!important;display:inline-flex!important;align-items:center;gap:8px}
.fso-idx-fav-btn--detail:hover{transform:none!important;background:#1a1a1a!important}
.fso-idx-fav-btn--detail .fso-idx-fav-ico{color:#fff;font-size:13px;line-height:1}
.fso-idx-fav-btn--detail.is-fav .fso-idx-fav-ico{color:#c8102e}
.fso-idx-account-controls{display:flex;gap:8px;align-items:center}
/* v0.3.31: match the results-toolbar button look (square, dark border, 48px). */
.fso-idx-save-search-btn,.fso-idx-account-btn{height:48px!important;padding:0 18px!important;border:1px solid #0f1b2d!important;border-radius:0!important;background:#fff!important;font-size:13px!important;font-weight:700;text-transform:uppercase;letter-spacing:.06em;cursor:pointer;color:#0f1b2d!important;display:inline-flex;align-items:center;gap:6px}
.fso-idx-save-search-btn:hover,.fso-idx-account-btn:hover{background:#0f1b2d!important;color:#fff!important}
.fso-idx-account-btn{color:#c8102e!important}
.fso-idx-account-btn span{color:#0f1b2d}
.fso-idx-account-btn:hover span{color:#fff}
.fso-idx-account-modal[hidden]{display:none!important}
.fso-idx-account-modal{position:fixed;inset:0;z-index:999999;display:flex;align-items:center;justify-content:center}
.fso-idx-account-scrim{position:absolute;inset:0;background:rgba(15,23,42,.5)}
.fso-idx-account-panel{position:relative;z-index:1;width:520px;max-width:94vw;max-height:88vh;overflow-y:auto;background:#fff;border-radius:10px;padding:48px 24px 24px;box-shadow:0 30px 70px rgba(15,23,42,.35)}
.fso-idx-account-close{position:absolute;right:12px;top:12px;z-index:2;width:34px;height:34px;border-radius:50%;border:0;background:#f1f3f5;color:#0f1b2d;font-size:22px;line-height:34px;text-align:center;padding:0;cursor:pointer;box-shadow:0 1px 3px rgba(15,23,42,.12)}
.fso-idx-account-close:hover{background:#e2e6ea}
.fso-idx-account-note{margin:0 0 14px;padding:10px 13px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;font-size:13.5px;color:#1e40af}
.fso-idx-account-tabs{display:flex;border:1px solid #cfd4dc;border-radius:6px;overflow:hidden;margin-bottom:16px}
.fso-idx-account-tabs button{flex:1;height:42px;border:0;background:#fff;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;color:#555}
.fso-idx-account-tabs button.is-on{background:#0f1b2d;color:#fff}
.fso-idx-account-form{display:flex;flex-direction:column;gap:12px}
.fso-idx-account-form label{display:flex;flex-direction:column;gap:5px;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#6b7280}
.fso-idx-account-form input{height:44px;border:1px solid #cfd4dc;border-radius:6px;padding:0 12px;font-size:14.5px}
.fso-idx-account-submit{height:46px;border:0;border-radius:6px;background:#0f1b2d;color:#fff;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;cursor:pointer;margin-top:4px}
.fso-idx-account-error{padding:9px 12px;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#991b1b;font-size:13px}
.fso-idx-account-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:14px;border-bottom:1px solid #e5e7eb;margin-bottom:14px}
.fso-idx-account-sub{font-size:12px;color:#6b7280}
.fso-idx-account-signout{border:1px solid #cfd4dc;background:#fff;border-radius:6px;padding:7px 12px;font-size:12px;cursor:pointer}
.fso-idx-account-panel h4{margin:16px 0 8px;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#6b7280}
.fso-idx-account-fav{display:flex;align-items:center;gap:11px;padding:8px;border:1px solid #eef0f3;border-radius:0px;margin-bottom:7px;text-decoration:none;color:inherit;position:relative}
.fso-idx-account-fav:hover{border-color:#cfd4dc}
.fso-idx-account-fav img,.fso-idx-account-noimg{width:64px;height:46px;object-fit:cover;border-radius:5px;background:#eef2f7;flex:0 0 64px}
.fso-idx-account-fav span strong{display:block;font-size:13.5px;line-height:1.3}
.fso-idx-account-fav span em{font-style:normal;font-size:12.5px;color:#6b7280}
.fso-idx-account-fav button,.fso-idx-account-search button{margin-left:auto;border:0;background:none;font-size:18px;color:#6b6b6b;cursor:pointer;padding:4px 8px}
.fso-idx-account-fav button:hover,.fso-idx-account-search button:hover{color:#c8102e}
.fso-idx-account-search{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid #eef0f3;border-radius:0px;margin-bottom:7px}
.fso-idx-account-search a{text-decoration:none;color:inherit;flex:1}
.fso-idx-account-search strong{display:block;font-size:13.5px}
.fso-idx-account-search em{font-style:normal;font-size:12px;color:#6b7280}
.fso-idx-account-empty{font-size:13px;color:#6b6b6b;margin:4px 0 0}

/* ── v0.3.27 (WS1): full-page account portal ── */
.fso-idx-card-badge--off{background:rgba(75,85,99,.92)}
.fso-idx-card-badge--pending{background:rgba(180,83,9,.94)}
.fso-idx-card-noimg{display:block;width:100%;height:100%;background:#eef2f7}
.fso-idx-card-drop{margin-top:6px;font-size:12.5px;font-weight:700;color:#047857}
.fso-idx-card-note{margin-top:6px;font-size:12px;color:#6b6b6b;text-transform:uppercase;letter-spacing:.05em}
.fso-idx-toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);z-index:1000000;background:#0f1b2d;color:#fff;padding:12px 18px;border-radius:0px;font-size:13.5px;box-shadow:0 12px 30px rgba(15,23,42,.35);opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease;max-width:90vw}
.fso-idx-toast.is-on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.fso-idx-toast a{color:#fff;text-decoration:underline}

.rme-idx-account-page{max-width:1120px;margin:0 auto;padding:22px 16px 60px}
.rme-idx-account-boot{display:flex;flex-direction:column;align-items:center;gap:12px;padding:60px 0;color:#6b7280;font-size:14px}
.rme-idx-account-spinner{width:30px;height:30px;border-radius:50%;border:3px solid #e5e7eb;border-top-color:#0f1b2d;animation:rmeIdxSpin .8s linear infinite}
@keyframes rmeIdxSpin{to{transform:rotate(360deg)}}

.rme-idx-portal-signin{text-align:center;padding:56px 16px}
.rme-idx-portal-signin h1{font-size:26px;margin:0 0 8px}
.rme-idx-portal-signin p{color:#6b7280;margin:0 0 20px}
.rme-idx-portal-signin .fso-idx-account-submit{display:inline-block;padding:0 26px !important;line-height:46px;text-decoration:none}

.rme-idx-portal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.rme-idx-portal-head h1{font-size:24px;margin:0}
.rme-idx-portal-head p{margin:2px 0 0;color:#6b7280;font-size:13.5px}
.rme-idx-portal-signout{border:1px solid #cfd4dc;background:#fff;border-radius:6px;padding:8px 14px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;color:#333}
.rme-idx-portal-signout:hover{border-color:#0f1b2d}
.rme-idx-portal-nav{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;border-bottom:1px solid #e5e7eb;margin-bottom:20px}
.rme-idx-portal-nav button{flex:0 0 auto;border:0;background:none;padding:12px 6px;margin:0 8px 0 0;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#6b7280;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}
.rme-idx-portal-nav button.is-on{color:#0f1b2d;border-bottom-color:#c8102e}

.rme-idx-portal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px}
.rme-idx-portal-empty{text-align:center;padding:48px 16px;color:#6b7280}
.rme-idx-portal-empty h3{font-size:18px;margin:0 0 6px;color:#0f1b2d}
.rme-idx-portal-empty p{margin:0 0 18px}
.rme-idx-portal-empty .fso-idx-account-submit{display:inline-block;padding:0 22px;line-height:44px;text-decoration:none}

.rme-idx-portal-searches{display:flex;flex-direction:column;gap:12px}
.rme-idx-portal-search{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:flex-start;padding:16px;border:1px solid #eef0f3;border-radius:10px}
.rme-idx-portal-search-name{font-size:16px;font-weight:700;color:#0f1b2d;text-decoration:none}
.rme-idx-portal-search-name:hover{color:#c8102e}
.rme-idx-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.rme-idx-chip{background:#f3f4f6;border-radius:999px;padding:4px 11px;font-size:12px;color:#374151}
.rme-idx-portal-search-meta{font-size:12.5px;color:#047857;font-weight:600}
.rme-idx-portal-search-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.rme-idx-portal-freq{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#6b7280;display:flex;align-items:center;gap:7px}
.rme-idx-portal-freq select{height:36px;border:1px solid #cfd4dc;border-radius:6px;padding:0 8px;font-size:13px;text-transform:none;letter-spacing:0;color:#0f1b2d}
.rme-idx-linkbtn{border:0;background:none;color:#0f1b2d;font-size:13px;font-weight:600;cursor:pointer;text-decoration:underline;padding:0}
.rme-idx-linkbtn:hover{color:#c8102e}
.rme-idx-linkbtn.rme-idx-danger{color:#b91c1c}

.rme-idx-portal-profile{max-width:460px;display:flex;flex-direction:column;gap:14px;margin-bottom:26px}
.rme-idx-portal-profile h3{margin:8px 0 0;font-size:15px}
.rme-idx-field label{display:flex;flex-direction:column;gap:5px;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#6b7280}
.rme-idx-field input{height:44px;border:1px solid #cfd4dc;border-radius:6px;padding:0 12px;font-size:14.5px}
.rme-idx-field input[readonly]{background:#f9fafb;color:#6b7280}
.rme-idx-field small{display:block;margin-top:4px;font-size:11.5px;color:#6b6b6b;text-transform:none;letter-spacing:0;font-weight:400}
.rme-idx-check{display:flex;align-items:center;gap:9px;font-size:13.5px;color:#374151}
.rme-idx-check input{width:17px;height:17px}
.fso-idx-account-error.is-error{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.rme-idx-portal-danger{display:flex;gap:20px;align-items:center;padding-top:18px;border-top:1px solid #e5e7eb;max-width:460px}

/* v0.3.30 private listing note (detail page, signed-in) */
.fso-idx-listing-note{margin:16px 0;padding:14px 16px;border:1px solid #e5e7eb;border-radius:10px;background:#fff}
.fso-idx-listing-note-head{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#0f1b2d;margin-bottom:8px}
.fso-idx-listing-note-head span{display:block;text-transform:none;letter-spacing:0;font-weight:400;font-size:11.5px;color:#6b6b6b;margin-top:2px}
.fso-idx-listing-note-input{width:100%;border:1px solid #cfd4dc;border-radius:6px;padding:9px 11px;font-size:14px;font-family:inherit;resize:vertical}
.fso-idx-listing-note-row{display:flex;align-items:center;gap:12px;margin-top:8px}
.fso-idx-listing-note-save{border:0;border-radius:6px;background:#0f1b2d;color:#fff;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:9px 16px;cursor:pointer}
.fso-idx-listing-note-status{font-size:12.5px;color:#047857}
.fso-idx-listing-note-list{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.fso-idx-listing-note-item{background:#f8fafc;border:1px solid #eef0f3;border-radius:6px;padding:8px 11px;font-size:13.5px;display:flex;justify-content:space-between;gap:10px}
.fso-idx-listing-note-item em{font-style:normal;color:#6b6b6b;font-size:11.5px;white-space:nowrap}

/* WS3 squeeze / registration prompt */
.fso-idx-squeeze-head{margin:0 0 16px}
.fso-idx-squeeze-head h3{margin:0 0 12px;font-size:19px;line-height:1.3;font-weight:800;color:#0f1b2d}
.fso-idx-squeeze-thumbs{display:flex;gap:8px}
.fso-idx-squeeze-thumbs span{flex:1;height:58px;border-radius:6px;background:#eef2f7 center/cover no-repeat;box-shadow:0 2px 6px rgba(15,23,42,.14)}
body.rme-idx-squeeze-locked{overflow:hidden}
body.rme-idx-squeeze-locked > *:not(.fso-idx-account-modal){filter:blur(6px);pointer-events:none;user-select:none}

@media(min-width:860px){
  .rme-idx-portal{display:grid;grid-template-columns:210px 1fr;grid-template-areas:"head head" "nav body";column-gap:34px}
  .rme-idx-portal-head{grid-area:head}
  .rme-idx-portal-nav{grid-area:nav;flex-direction:column;gap:2px;border-bottom:0;border-right:0;position:sticky;top:20px;align-self:start;overflow:visible;margin-bottom:0}
  .rme-idx-portal-nav button{margin:0;padding:11px 12px;border-bottom:0;border-left:2px solid transparent;border-radius:0 6px 6px 0;text-align:left}
  .rme-idx-portal-nav button.is-on{border-left-color:#c8102e;background:#f9fafb}
  .rme-idx-portal-body{grid-area:body}
}

/* v0.3.32: mobile placement for the injected Save Search + account buttons.
   On mobile the form is a grid and the actions-row is display:contents, so
   these promoted controls need an explicit full-width row (side by side). */
@media (max-width: 900px){
  .fso-idx-account-controls{
    grid-column:1 / -1!important;
    display:flex!important;
    gap:10px!important;
    margin-top:12px!important;
  }
  .fso-idx-account-controls .fso-idx-save-search-btn,
  .fso-idx-account-controls .fso-idx-account-btn{
    flex:1 1 0!important;
    height:56px!important;
    justify-content:center;
  }
}

/* v0.3.33: the form now wraps the layout (so the sticky search row spans the
   scroll). On mobile the form is a grid, so the layout must span all columns —
   otherwise it's trapped in one ~180px cell and the cards squish. */
@media (max-width: 900px){
  .fso-idx-filters > .fso-idx-layout{
    grid-column:1 / -1!important;
    width:100%!important;
    display:block!important;
  }
}

/* v0.3.35: mobile centering — drop the 100vw full-bleed (it overflows by the
   scrollbar width and shifts content off-center). Fill the parent, auto-center.
   Also clamp horizontal scroll (the Divi header overflows ~20px on mobile,
   which let the whole page shift left/right). overflow-x:clip is used instead
   of :hidden so it doesn't create a scroll container / break position:sticky. */
@media (max-width: 900px){
  html body{ overflow-x:clip; }
  body .fso-idx-app-wrap,
  body .fso-idx-detail-wrap{
    width:auto!important;
    max-width:100%!important;
    margin-left:auto!important;
    margin-right:auto!important;
    padding-left:16px!important;
    padding-right:16px!important;
  }
}

/* v0.3.35: Satellite⇄Map toggle button on maps */
.fso-idx-sat-toggle{width:auto!important}
.fso-idx-sat-toggle button{
  display:block;
  width:auto!important;      /* Mapbox forces ctrl-group buttons to 29px */
  min-width:82px;
  padding:0 12px!important;
  height:29px!important;
  line-height:29px;
  white-space:nowrap;
  font:700 11px/29px -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
  text-transform:uppercase;
  letter-spacing:.04em;
  background:#fff;
  color:#0f1b2d;
  border:0;
  cursor:pointer;
}
.fso-idx-sat-toggle button:hover{background:#f3f4f6}

/* v0.3.36: detail "Presented By" — wrap long broker email/phone so it doesn't
   overflow and cause horizontal shift on mobile. */
.fso-idx-compliance,
.kv-detail-v2-compliance{overflow-wrap:anywhere;word-break:break-word}
.fso-idx-compliance a,
.kv-detail-v2-compliance a{overflow-wrap:anywhere;word-break:break-all}

/* v0.3.36: filter modal — let the body scroll WITHIN the panel so the bottom
   actions bar (Show Results / Clear / Cancel) stays visible/reachable. */
.fso-idx-filter-modal-body{flex:1 1 auto!important;min-height:0!important}
.fso-idx-filter-modal-actions{flex:0 0 auto}
@media (max-width:980px){
  /* symmetric padding so fields are centered; leave room for the sticky actions */
  .fso-idx-filter-modal-body{padding:60px 18px 20px!important;align-content:start}
}

/* ===================================================================
   v0.3.37 — homepage building blocks: hero search bar + [rme_idx_featured]
   =================================================================== */

/* Hero variant of [rme_idx_search_bar size="hero"] — a large, centered
   homepage bar. v0.3.38: squared off (no border-radius), with the Search
   button flush against the end of the input and its label in all caps. */
.fso-idx-bar--hero{max-width:720px;margin-left:auto;margin-right:auto;width:100%}
.fso-idx-bar--hero .fso-idx-bar-inner{gap:0;padding:0;border-radius:0;border:1px solid var(--fso-idx-border);box-shadow:0 18px 50px rgba(15,23,42,.16);overflow:hidden}
.fso-idx-bar--hero .fso-idx-bar-input{flex:1 1 auto;border-radius:0;font-size:17px;padding:16px 20px}
.fso-idx-bar--hero .fso-idx-button{flex:0 0 auto;align-self:stretch;height:auto;border-radius:0;text-transform:uppercase;letter-spacing:.08em;padding:0 34px;font-size:14px}
.fso-idx-bar--hero .fso-idx-suggestions{border-radius:0}
@media (max-width:600px){
  .fso-idx-bar--hero .fso-idx-bar-inner{flex-direction:column;border-radius:0;padding:0}
  .fso-idx-bar--hero .fso-idx-bar-input{width:100%;text-align:left}
  .fso-idx-bar--hero .fso-idx-button{width:100%;padding:14px 0;border-radius:0}
}

/* Featured-properties grid ([rme_idx_featured]). Reuses the standard card
   grid; the column count is author-controllable via --fso-idx-featured-cols
   (defaults to 3) and collapses responsively. */
.fso-idx-featured{margin:0 auto;max-width:1200px}
.fso-idx-featured-head{text-align:center;margin:0 0 22px}
.fso-idx-featured-title{margin:0;font-size:26px;font-weight:800;letter-spacing:-.01em;color:var(--fso-idx-text,#0f172a)}
.fso-idx-featured-subtitle{margin:6px 0 0;color:var(--fso-idx-muted,#64748b);font-size:15px}
.fso-idx-featured .fso-idx-results{grid-template-columns:repeat(var(--fso-idx-featured-cols,3),minmax(0,1fr))}
/* v0.3.38: "view all" CTA — squared, all caps, and pushed further below the
   last row of cards so it doesn't crowd them. */
.fso-idx-featured-more{text-align:center;margin:48px 0 0}
.fso-idx-featured-more a{text-transform:uppercase;letter-spacing:.08em;border-radius:0}
@media (max-width:900px){
  .fso-idx-featured .fso-idx-results{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:560px){
  .fso-idx-featured .fso-idx-results{grid-template-columns:1fr}
}

/* v0.3.41: featured pool — hidden spare/dropped cards. The equal-height rule
   `.fso-idx-card{display:flex!important}` (0,1,0) would otherwise override an
   inline display:none, so this higher-specificity class (0,2,0) + !important
   is what actually hides pool spares and no-photo/placeholder cards. */
.fso-idx-card.rme-idx-featured-hide{display:none!important}

/* v0.3.42: on the wide two-column detail layout (Highlights beside the
   description), the description clamped at 540px so its height roughly
   matched the Highlights card.
   v0.3.62 (Task 13 correction): Task 4's Option D redesign removed that
   Highlights card entirely (key facts moved into the price block, .rme-pcard,
   instead) -- 540px was pure leftover calibration with nothing left to
   match, and at the shared 1rem/1.65 line-height (.fso-listing-description-
   clamp p, rme-idx-search/assets/style.css) it rendered ~20 lines, nowhere
   near SPEC-detail-page-redesign.md §5's "clamped to 6 lines". Corrected to
   the real 6-line height: 6 lines * 1.65 line-height = 9.9 line-heights =
   9.9rem at that shared type-scale. (Mobile/tablet, <1201px, still inherits
   the FSO base rule's 250px -- out of scope for this task, which only
   flagged the DESKTOP calibration as stale.) Higher specificity than the FSO
   base rule (.fso-listing-description-clamp{max-height:250px}) so this wins
   regardless of stylesheet load order. The Show More button is hidden by JS
   when the text fits within the clamp. */
@media (min-width:1201px){
  .fso-idx-detail-template .fso-listing-description-clamp{max-height:9.9rem}
  .fso-idx-detail-template .fso-listing-description-clamp.is-open{max-height:none}
}

/* v0.3.43: contact-modal + image-slider styling on the detail page. Everything
   is scoped under .fso-idx-detail-template because this stylesheet loads BEFORE
   the FSO style.css and the Divi theme — the extra class is what makes these
   win the cascade (else the modal h2 stays Divi's #3d3d3d, submit stays 180px,
   etc.). Declarations are as specified. */
.fso-idx-detail-template .fso-modal.is-open{padding:10%}
.fso-idx-detail-template .fso-contact-modal-left h2,
.fso-idx-detail-template .fso-contact-modal-right h2{color:#ffffff}
.fso-idx-detail-template .fso-idx-lead-modal-grid .fso-contact-modal-left p{color:#ffffff;line-height:1.5em}
.fso-idx-detail-template .fso-idx-lead-form label{color:#ffffff}
.fso-idx-detail-template .fso-idx-lead-form button{border:1px solid #fff !important}
.fso-idx-detail-template .fso-contact-submit{width:200px}
.fso-idx-detail-template button.fso-single-slider-nav{color:#ffffff}
.fso-idx-detail-template .fso-single-slider-nav{background:rgb(65 65 65 / 65%)}

/* ===================================================================
   v0.3.47 — filter-bar dropdown panels (price + sort)
   The Divi theme's global button rules were winning inside these panels
   (stripping the pill border/radius and forcing padding:14px 22px +
   display:block), which is what made the price presets wrap into a sparse
   2-column block. These rules are scoped to the panel and marked important
   so the panel owns its own controls.
   =================================================================== */
.fso-idx-price-pop{min-width:352px;padding:14px 16px 16px}
/* Min/Max row — equal cells, one consistent visible border, no browser
   spinner (the spinner forced 34px of dead right padding and made the two
   boxes look unbalanced). */
.fso-idx-price-pop-row{display:grid!important;grid-template-columns:1fr 1fr;gap:10px;align-items:stretch}
/* NOTE the 3-class selector: the filter-bar rule
   `.fso-idx-search-row .fso-idx-quick-filter .fso-idx-input` (0,3,0) also
   carries !important and matches these inputs, so anything weaker loses its
   padding/radius to it (that's what broke the Min/Max box). */
.fso-idx-price-pop .fso-idx-price-pop-row input.fso-idx-input{
  width:100%!important;min-width:0!important;height:44px!important;min-height:44px!important;
  padding:0 12px!important;margin:0!important;
  border:1px solid #cfd4dc!important;border-radius:6px!important;
  background:#fff!important;background-image:none!important;
  font-size:14px!important;line-height:44px!important;text-align:left!important;
  box-sizing:border-box!important;-moz-appearance:textfield;appearance:textfield;
}
.fso-idx-price-pop .fso-idx-price-pop-row input.fso-idx-input:focus{border-color:#0f1b2d!important;outline:none}
.fso-idx-price-pop-row input[type="number"]::-webkit-outer-spin-button,
.fso-idx-price-pop-row input[type="number"]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}
/* Preset pills — tidy 2-up grid (the 5th spans the row) instead of a ragged wrap. */
.fso-idx-price-presets{display:grid!important;grid-template-columns:1fr 1fr;gap:8px!important;margin-top:12px!important}
.fso-idx-price-presets button{
  display:block!important;width:100%!important;min-height:0!important;height:36px!important;
  padding:0 10px!important;margin:0!important;
  border:1px solid #cfd4dc!important;border-radius:18px!important;
  background:#fff!important;color:#0f1b2d!important;
  font-size:12.5px!important;font-weight:600!important;line-height:34px!important;
  letter-spacing:0!important;text-transform:none!important;text-align:center;cursor:pointer;
  box-sizing:border-box!important;
}
.fso-idx-price-presets button:hover{border-color:#0f1b2d!important;background:#f8fafc!important}
.fso-idx-price-presets button:last-child{grid-column:1 / -1}
/* Done — full width, aligned with the fields above it. */
.fso-idx-price-apply{
  display:block!important;width:100%!important;height:42px!important;
  padding:0!important;margin:14px 0 0!important;border:0!important;border-radius:6px!important;
  background:#0f1b2d!important;color:#fff!important;
  font-size:12px!important;font-weight:700!important;line-height:42px!important;
  text-transform:uppercase!important;letter-spacing:.09em!important;cursor:pointer;
}
.fso-idx-price-apply:hover{background:#000!important}

/* Sort popover — a real options list styled like the other dropdown panels.
   The trigger reproduces the retired <select>'s look (50px tall, 14px, caret)
   so the results toolbar is visually unchanged. */
.fso-idx-sortpop{position:relative}
.fso-idx-sort-wrap .fso-idx-sort-btn.fso-idx-input{
    height: 50px !important;
    min-height: 50px !important;
    padding: 0 40px 0 18px !important;
    font-size: 12px !important;
    text-transform:uppercase!important;
    line-height: normal !important;
    text-align: left !important;
    color: #111111 !important;
    background-color: #fff !important;
    background-image: none !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
}
@media (max-width:1180px){
  .fso-idx-sort-wrap .fso-idx-sort-btn.fso-idx-input{
    padding-left:14px!important;padding-right:34px!important;
  }
}
.fso-idx-sortpop-panel{min-width:236px;left:0 !important;right:auto}
.fso-idx-optlist{display:grid;gap:2px}
.fso-idx-optlist button{
  display:block!important;width:100%!important;height:auto!important;min-height:0!important;
  padding:10px 12px!important;margin:0!important;
  border:0!important;border-radius:6px!important;background:#fff!important;
  color:#0f1b2d!important;font-size:13.5px!important;font-weight:500!important;
  line-height:1.2!important;letter-spacing:0!important;text-transform:none!important;
  text-align:left!important;cursor:pointer;box-sizing:border-box!important;
}
.fso-idx-optlist button:hover{background:var(--fso-idx-soft,#f1f5f9)!important}
.fso-idx-optlist button.is-on{background:#0f1b2d!important;color:#fff!important;font-weight:700!important}
@media (max-width:600px){
  .fso-idx-price-pop{min-width:0;width:calc(100vw - 32px);max-width:352px}
  .fso-idx-sortpop-panel{left:auto;right:0!important}
}

/* v0.3.44: Similar Properties grid (detail page) -- margin-top only kept
   here. v0.3.62 (Task 13) moved the grid-template-columns/gap/image-height
   rules (search "Task 13: Similar Homes", below) onto the view's own
   .rme-sim-grid wrapper (a NEW div the view puts around
   render_listing_cards()'s output -- render_listing_cards() itself
   untouched) at the spec's 1080/700 breakpoints -- leaving BOTH this
   selector's old 1100/640 breakpoints and the new 1080/700 ones active on
   the same .fso-idx-results element would fight each other in the
   640-700px and 1080-1100px gaps. */
.fso-idx-detail-template .fso-similar-listings{margin-top:44px}

/* ===================================================================
   v0.3.48 — card tools (Compare / Hide), compare tray + table,
   Hidden Properties portal cells.
   Everything is !important-guarded where the theme's global button rules
   would otherwise win (same reason as the price-panel block above).
   =================================================================== */

/* Hide button — sits opposite the ♥ on the photo. */
.fso-idx-card .fso-idx-hide-btn{
  position:absolute!important;top:10px;right:52px;z-index:3;
  height:30px!important;min-height:0!important;width:auto!important;
  padding:0 10px!important;margin:0!important;
  border:0!important;border-radius:4px!important;
  background:rgba(15,27,45,.72)!important;color:#fff!important;
  font-size:11px!important;font-weight:700!important;line-height:30px!important;
  letter-spacing:.06em!important;text-transform:uppercase!important;
  cursor:pointer;opacity:0;transition:opacity .15s ease,background .15s ease;
}
.fso-idx-card:hover .fso-idx-hide-btn,
.fso-idx-card .fso-idx-hide-btn:focus-visible{opacity:1}
.fso-idx-card .fso-idx-hide-btn:hover{background:#0f1b2d!important}
@media (hover:none){ .fso-idx-card .fso-idx-hide-btn{opacity:1} }
.fso-idx-card.is-hiding{opacity:0;transform:scale(.97);transition:opacity .2s ease,transform .2s ease}

/* Compare checkbox row under the photo. */
.fso-idx-card-tools{padding:10px 16px 0}
.fso-idx-cmp-btn{
  display:inline-flex!important;align-items:center;gap:8px;
  width:auto!important;height:auto!important;min-height:0!important;
  padding:0!important;margin:0!important;border:0!important;
  background:transparent!important;color:#4b5563!important;
  font-size:12.5px!important;font-weight:600!important;line-height:1.2!important;
  letter-spacing:0!important;text-transform:none!important;cursor:pointer;
}
.fso-idx-cmp-box{
  display:inline-block;width:17px;height:17px;flex:0 0 17px;
  border:1.5px solid #b6bcc6;border-radius:3px;background:#fff;position:relative;
}
.fso-idx-cmp-btn.is-on{color:#0f1b2d!important}
.fso-idx-cmp-btn.is-on .fso-idx-cmp-box{background:#0f1b2d;border-color:#0f1b2d}
.fso-idx-cmp-btn.is-on .fso-idx-cmp-box:after{
  content:"";position:absolute;left:4.5px;top:1px;width:5px;height:10px;
  border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg);
}
.fso-idx-cmp-btn:hover .fso-idx-cmp-box{border-color:#0f1b2d}

/* Compare tray (fixed, bottom). */
.rme-idx-cmp-tray{
  position:fixed;left:0;right:0;bottom:0;z-index:100000;
  background:#0f1b2d;color:#fff;box-shadow:0 -8px 30px rgba(0,0,0,.28);
}
.rme-idx-cmp-tray[hidden]{display:none!important}
.rme-idx-cmp-tray-inner{
  max-width:1280px;margin:0 auto;padding:12px 18px;
  display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;
}
.rme-idx-cmp-thumbs{display:flex;gap:10px;align-items:center}
.rme-idx-cmp-thumb{position:relative;width:96px;height:64px;border-radius:5px;overflow:hidden;background:#2a2d35;flex:0 0 auto}
.rme-idx-cmp-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.rme-idx-cmp-thumb-price{position:absolute;left:0;right:0;bottom:0;background:rgba(0,0,0,.6);font-size:11px;font-weight:700;text-align:center;padding:2px 0}
.rme-idx-cmp-thumb--empty{border:1px dashed rgba(255,255,255,.35);background:transparent;display:flex;align-items:center;justify-content:center}
.rme-idx-cmp-thumb--empty span{font-size:10.5px;color:rgba(255,255,255,.6);text-align:center;line-height:1.2;padding:0 6px}
.rme-idx-cmp-x{
  position:absolute!important;top:3px;right:3px;width:20px!important;height:20px!important;
  min-height:0!important;padding:0!important;margin:0!important;border:0!important;border-radius:50%!important;
  background:rgba(0,0,0,.66)!important;color:#fff!important;font-size:14px!important;line-height:20px!important;cursor:pointer;
}
.rme-idx-cmp-actions{display:flex;align-items:center;gap:14px;margin-left:auto}
.rme-idx-cmp-msg{font-size:12.5px;color:#ffd9d9}
.rme-idx-cmp-clear{
  height:auto!important;min-height:0!important;padding:0!important;margin:0!important;
  border:0!important;background:transparent!important;color:rgba(255,255,255,.75)!important;
  font-size:12.5px!important;text-transform:uppercase!important;letter-spacing:.07em!important;cursor:pointer;
}
.rme-idx-cmp-clear:hover{color:#fff!important}
.rme-idx-cmp-go{
  height:46px!important;min-height:0!important;padding:0 26px!important;margin:0!important;
  border:0!important;border-radius:0!important;background:#c8102e!important;color:#fff!important;
  font-size:13px!important;font-weight:700!important;line-height:46px!important;
  text-transform:uppercase!important;letter-spacing:.08em!important;cursor:pointer;
}
.rme-idx-cmp-go[disabled]{opacity:.5;cursor:not-allowed}
@media (max-width:700px){
  .rme-idx-cmp-thumb{width:66px;height:48px}
  .rme-idx-cmp-tray-inner{padding:10px 12px;gap:10px}
  .rme-idx-cmp-go{height:42px!important;line-height:42px!important;padding:0 16px!important}
}

/* Compare modal. */
.rme-idx-cmp-modal{position:fixed;inset:0;z-index:100001;background:rgba(15,23,42,.72);display:flex;align-items:center;justify-content:center;padding:24px}
.rme-idx-cmp-modal[hidden]{display:none!important}
body.rme-idx-cmp-open{overflow:hidden}
.rme-idx-cmp-dialog{position:relative;background:#fff;width:100%;max-width:1180px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}
.rme-idx-cmp-close{
  position:absolute!important;top:10px;right:12px;z-index:2;
  width:40px!important;height:40px!important;min-height:0!important;padding:0!important;margin:0!important;
  border:0!important;background:transparent!important;color:#111!important;font-size:34px!important;line-height:40px!important;cursor:pointer;
}
.rme-idx-cmp-title{margin:0;padding:20px 24px 14px;font-size:20px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.rme-idx-cmp-scroll{overflow:auto;padding:0 24px 24px}
.rme-idx-cmp-table{width:100%;border-collapse:collapse;font-size:13.5px}
.rme-idx-cmp-table th,.rme-idx-cmp-table td{border-bottom:1px solid #e5e7eb;padding:10px 12px;text-align:left;vertical-align:middle}
.rme-idx-cmp-table thead th{vertical-align:top;position:relative;min-width:190px;border-bottom:2px solid #0f1b2d;padding-top:8px}
.rme-idx-cmp-rowhead{width:150px;color:#6b7280;font-weight:700;text-transform:uppercase;font-size:11px;letter-spacing:.06em;background:#fafafa}
.rme-idx-cmp-colimg{display:block;width:100%;aspect-ratio:16/10;overflow:hidden;background:#eef2f7;margin-bottom:8px}
.rme-idx-cmp-colimg img{width:100%;height:100%;object-fit:cover;display:block}
.rme-idx-cmp-coladdr{display:block;color:#0f1b2d;text-decoration:none;font-weight:700;line-height:1.3}
.rme-idx-cmp-coladdr small{display:block;font-weight:400;color:#6b7280;margin-top:2px}
.rme-idx-cmp-colx{
  position:absolute!important;top:6px;right:6px;z-index:2;
  width:26px!important;height:26px!important;min-height:0!important;padding:0!important;margin:0!important;
  border:0!important;border-radius:50%!important;background:rgba(15,27,45,.72)!important;color:#fff!important;
  font-size:16px!important;line-height:26px!important;cursor:pointer;
}
.rme-idx-cmp-view{
  display:block;padding:10px 0;background:#0f1b2d;color:#fff!important;text-align:center;
  text-decoration:none;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
}
@media (max-width:700px){
  .rme-idx-cmp-modal{padding:0}
  .rme-idx-cmp-dialog{max-height:100vh;height:100vh;max-width:100vw}
  .rme-idx-cmp-rowhead{width:110px}
  .rme-idx-cmp-table thead th{min-width:150px}
}

/* Hidden Properties portal cells. */
.rme-idx-portal-note{margin:0 0 16px;color:#6b7280;font-size:14px}
.rme-idx-hidden-cell{display:flex;flex-direction:column}
.rme-idx-hidden-cell .fso-idx-card{opacity:.72}
.rme-idx-hidden-cell:hover .fso-idx-card{opacity:1}
.rme-idx-unhide-btn{
  width:100%!important;height:44px!important;min-height:0!important;padding:0!important;margin:0!important;
  border:1px solid #0f1b2d!important;border-radius:0!important;background:#fff!important;color:#0f1b2d!important;
  font-size:11.5px!important;font-weight:700!important;line-height:42px!important;
  text-transform:uppercase!important;letter-spacing:.07em!important;cursor:pointer;
}
.rme-idx-unhide-btn:hover{background:#0f1b2d!important;color:#fff!important}

/* ===================================================================
   v0.3.50 — owner CSS directives
   HOUSE RULE: no border-radius on buttons or CTAs. Squaring off every
   control this plugin adds (filter pills, price presets, Done, sort
   options, hide, compare, close/remove buttons).
   =================================================================== */
.fso-idx-app .fso-idx-pill-btn,
.fso-idx-search-row .fso-idx-pill-btn,
.fso-idx-app button.fso-idx-pill-btn,
.fso-idx-sort-wrap .fso-idx-sort-btn.fso-idx-input{border-radius:0!important}
.fso-idx-price-pop .fso-idx-price-pop-row input.fso-idx-input{border-radius:0!important}
.fso-idx-price-presets button{border-radius:0!important}
.fso-idx-price-apply{border-radius:0!important}
.fso-idx-optlist button{border-radius:0!important}
.fso-idx-card .fso-idx-hide-btn{border-radius:0!important}
.fso-idx-cmp-box{border-radius:0}
.rme-idx-cmp-x,
.rme-idx-cmp-colx{border-radius:0!important}
.rme-idx-cmp-thumb{border-radius:0}
.fso-idx-account-close{border-radius:0!important}

/* Owner-specified values */
.fso-idx-account-close{
  padding:0!important;
}
.fso-idx-account-note{
  margin:10px 0 14px;
  padding:10px 13px!important;
}
.fso-idx-marker{
  padding:2px 6px!important;
  font-weight:600;
}

/* Account page: pin the site footer to the bottom of the viewport even when
   the portal content is short (body class added server-side when the
   [rme_idx_account] shortcode is on the page). Divi structure:
   #page-container > (#top-header, #main-header, #et-main-area >
   (#main-content, footer#main-footer)). */
body.rme-idx-account-body #page-container{display:flex;flex-direction:column;min-height:100vh}
body.rme-idx-account-body #et-main-area{flex:1 0 auto;display:flex;flex-direction:column}
body.rme-idx-account-body #main-content{flex:1 0 auto}
body.rme-idx-account-body #main-footer{flex:0 0 auto;margin-top:auto}

/* v0.3.52: map-pan grid refresh — keep the existing cards visible but dimmed
   while the re-query is in flight (load() no longer wipes the grid). */
.fso-idx-results.is-refreshing{opacity:.45;pointer-events:none;transition:opacity .15s ease}

/* v0.3.55: inline map above Property Facts */
.rme-inline-map-section{margin-top:26px}
.rme-detail-inline-map{width:100%;height:460px;border:1px solid var(--fso-idx-border,#d9dee7)}
@media (max-width:700px){.rme-detail-inline-map{height:340px}}

/* ── v0.3.60: "Location & Property Details" — one element (map + county facts +
   neighborhood). Replaces the v0.3.54 Property Facts, v0.3.57 Neighborhood
   Snapshot and v0.3.59 map-layout blocks. See SPEC-location-details-element.md.
   NOTE: the FSO plugin's style.css also loads on this page and wins handle
   collisions — verify computed styles, don't assume. ───────────────────────── */
/* v0.3.66: the approved Option D mockup (_fragments/main-shared.html #location)
   has NO chrome on the section itself — it's transparent, borderless, no
   header bar. Only the map card and the individual tiles/chart cards carry a
   border. The prior v0.3.60 "bordered band + header bar" styling was a
   different design the owner rejected; removed here. */
.rme-loc-section{border:0;background:transparent;padding:0}
/* Location heading block == the mockup's `.sec-head`: a plain flex row of an
   uppercase Montserrat h2 + a light muted sub, sitting above transparent
   content. Not a padded, border-bottomed header bar. */
.rme-loc-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 12px;padding:0;border:0;margin:0 0 14px}
/* Heading typography from the mockup: Montserrat 16px, weight 400, +2px
   tracking, uppercase, left. Only font-size needs !important (the theme's
   .fso-features-master-title marks 1.6rem important); the rest win on
   specificity (0,2,0 vs the theme's 0,1,0). */
.rme-loc-head .fso-features-master-title{margin:0;font-family:'Montserrat',sans-serif;font-size:20px !important;font-weight:400;letter-spacing:2px;line-height:1.2;text-transform:uppercase;text-align:left;color:var(--rme-ink,#111)}
.rme-loc-intro{margin:0;font-size:12px;font-weight:300;color:var(--rme-muted,#6b6b6b);letter-spacing:normal;text-transform:none;text-align:left}

/* map + in-map controls */
/* v0.3.66: the border lives on the MAP CARD (the mockup's `.mapcard`), not on
   the whole section. The map footer inside keeps its own top divider. */
.rme-loc-mapwrap{position:relative;border:1px solid var(--rme-hairline,#e5e5e5)}
.rme-loc-mapwrap .rme-detail-inline-map{height:520px;border:none}
.rme-loc-ctl{position:absolute;z-index:3}
.rme-loc-ctl-tl{top:10px;left:10px}
.rme-loc-ctl-tr{top:10px;right:10px}
.rme-loc-basemap{display:flex;box-shadow:0 1px 4px rgba(0,0,0,.25)}
/* v0.3.60 fix-wave — TWO bugs fixed in the four rules below.
   (a) `font:800 11.5px/1 inherit` was INVALID: `inherit` is a CSS-wide keyword,
       not a legal <family-name> inside the `font` shorthand, so the whole
       declaration was dropped and font-weight 800 never applied. Split into
       longhands.
   (b) the plugin's own assets/style.css (enqueued on every detail page at
       class-rme-idx-search.php:1000) forces `button{font-size:13px !important;
       letter-spacing:1px !important; padding:14px 22px !important;
       border:0 !important}`. Un-!importanted, these in-map controls inflated to
       44px tall and overlapped each other at 375px. !important is added ONLY on
       the properties style.css marks important. */
.rme-loc-basemap button{border:1px solid var(--fso-idx-text,#0f1b2d) !important;background:rgba(255,255,255,.96);color:var(--fso-idx-text,#0f1b2d);font-weight:800;font-size:11.5px !important;line-height:1;padding:8px 11px !important;cursor:pointer;border-radius:0;text-transform:uppercase;letter-spacing:.03em !important}
.rme-loc-basemap button + button{border-left:none !important}
.rme-loc-basemap button.is-on{background:var(--fso-idx-text,#0f1b2d);color:#fff}
.rme-loc-layersbtn{border:1px solid var(--fso-idx-text,#0f1b2d) !important;background:rgba(255,255,255,.96);color:var(--fso-idx-text,#0f1b2d);font-weight:800;font-size:12px !important;line-height:1;padding:9px 12px !important;cursor:pointer;border-radius:0;box-shadow:0 1px 4px rgba(0,0,0,.25);display:flex;align-items:center;gap:7px}
.rme-loc-layersbtn.is-open{background:var(--fso-idx-text,#0f1b2d);color:#fff}
.rme-loc-cnt{background:var(--fso-idx-brand,#c8102e);color:#fff;font-size:10.5px;padding:1px 5px;min-width:16px;text-align:center}
.rme-loc-layerpanel{position:absolute;top:44px;right:0;width:252px;max-height:330px;overflow:auto;background:#fff;border:1px solid var(--fso-idx-text,#0f1b2d);box-shadow:0 8px 24px rgba(0,0,0,.22)}
.rme-loc-layerpanel h3{margin:0;padding:9px 12px;font-size:11px;font-weight:400;line-height:1;text-transform:uppercase;letter-spacing:.05em;color:var(--fso-idx-muted,#6b7280);border-bottom:1px solid var(--fso-idx-border,#d9dee7);background:var(--fso-idx-soft,#f8fafc)}
.rme-loc-lrow{display:flex;align-items:flex-start;gap:9px;padding:9px 12px;border-bottom:1px solid #eef1f5;cursor:pointer;font-size:13px}
.rme-loc-lrow:hover{background:var(--fso-idx-soft,#f8fafc)}
.rme-loc-lrow input{margin:1px 0 0;accent-color:var(--fso-idx-brand,#c8102e);width:15px;height:15px;flex:0 0 auto}
.rme-loc-lrow span{font-weight:700;line-height:1.3}
.rme-loc-lrow small{display:block;font-weight:500;font-size:11px;color:var(--fso-idx-muted,#6b7280);margin-top:1px}
.rme-loc-lrow.is-loading span::after{content:" …"}
.rme-loc-lsub{padding:2px 12px 10px 36px}
/* flex-wrap so the three level chips can never overflow the 230px popover at
   any width (they measured 332px of scrollWidth with style.css's forced 22px
   side padding). Segments overlap their 1px borders with a negative margin
   rather than `border-left:none`, so a wrapped chip still has a left edge. */
.rme-loc-lsub .rme-loc-sublvl{display:flex;flex-wrap:wrap}
.rme-loc-lsub button{border:1px solid var(--fso-idx-border,#d9dee7) !important;background:#fff;color:var(--fso-idx-text,#0f1b2d);font-weight:700;font-size:11px !important;line-height:1;padding:5px 9px !important;cursor:pointer;border-radius:0}
.rme-loc-lsub button + button{margin-left:-1px}
.rme-loc-lsub button.is-on{background:var(--fso-idx-text,#0f1b2d);color:#fff;border-color:var(--fso-idx-text,#0f1b2d) !important;position:relative;z-index:1}

/* legend (kept from v0.3.59, retargeted) */
.rme-map-legend{border-top:1px solid var(--fso-idx-border,#d9dee7);background:var(--fso-idx-soft,#f8fafc);padding:9px 13px;font-size:12px;color:var(--fso-idx-muted,#6b7280)}
.rme-map-legend b{color:var(--fso-idx-text,#0f1b2d)}
.rme-lg-chip{display:inline-block;margin:2px 9px 2px 0;white-space:nowrap}
.rme-lg-swatch{display:inline-block;width:11px;height:11px;vertical-align:-1px;margin-right:4px;border:1px solid rgba(0,0,0,.25)}

/* main facts strip */
.rme-loc-sv{font-size:19px;font-weight:800;letter-spacing:-.01em;line-height:1.15}
.rme-loc-sk{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;opacity:.72;font-weight:700;margin-top:2px;line-height:1.3}

/* `hidden` must actually hide: an author-origin `display` beats the UA's
   [hidden]{display:none}, and Tasks 4/6 reveal these by clearing `hidden`.
   .rme-loc-tabs (display:grid) and .rme-loc-panel (display:none via :not(.is-on))
   are hidden the same way by the tab reconciler, so they need the guard too. */
.rme-loc-strip[hidden],
.rme-loc-layersbtn[hidden],
.rme-loc-tabs[hidden],
.rme-loc-tab[hidden],
.rme-loc-panel[hidden]{display:none}

/* tabs */
.rme-loc-tabs{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--fso-idx-border,#d9dee7)}
/* the reconciler hides a tab whose panel has no data; the survivors must still
   fill the row, so the column count is data-driven (same pattern as the strip —
   an inline grid-template-columns would outrank the mobile media queries). */
.rme-loc-tabs[data-tabs="1"]{grid-template-columns:1fr}
.rme-loc-tabs[data-tabs="2"]{grid-template-columns:repeat(2,1fr)}
/* `font:800 13px/1.2 inherit` was invalid (see the basemap note above) and
   style.css's button rule forces font-size / letter-spacing / padding / border. */
.rme-loc-tab{border:none;background:#fff;color:var(--fso-idx-muted,#6b7280);font-weight:800;font-size:13px !important;line-height:1.2;padding:14px 8px !important;cursor:pointer;border-radius:0;text-transform:uppercase;letter-spacing:.04em !important}
.rme-loc-tab + .rme-loc-tab{border-left:1px solid var(--fso-idx-border,#d9dee7)}
/* The selected-tab cue is an INSET BOX-SHADOW, not a border: style.css forces
   `button{border:0 !important}`, which killed the old
   `border-bottom-color:brand` outright (measured borderBottomWidth:0px) and
   left a ~3% background difference as the only signal on the element's primary
   control. box-shadow is not a border, nothing overrides it, and it adds no
   layout height — so the 3px brand bar renders identically with or without
   style.css. No border-radius anywhere. */
.rme-loc-tab.is-on{color:var(--fso-idx-text,#0f1b2d);background:var(--fso-idx-soft,#f8fafc);box-shadow:inset 0 -3px 0 var(--fso-idx-brand,#c8102e)}
.rme-loc-tab:focus-visible{outline:2px solid var(--fso-idx-brand,#c8102e);outline-offset:-2px}
.rme-loc-lbl-short{display:none}

/* panels — .is-on drives visibility; NEVER the hidden attribute */
.rme-loc-panel{padding:16px}
.rme-loc-panel:not(.is-on){display:none}
.rme-loc-src{margin:0 0 11px;font-size:12px;color:var(--fso-idx-muted,#6b7280)}
.rme-loc-area{margin:0 0 2px;font-size:16px;font-weight:800;color:var(--fso-idx-text,#0f1b2d)}
.rme-loc-disc{margin:13px 0 0;font-size:11.5px;color:var(--fso-idx-muted,#6b7280);line-height:1.5;border-top:1px solid var(--fso-idx-border,#d9dee7);padding-top:10px}

/* dense key/value rows — replaces the v0.3.54/57/59 cards */
.rme-loc-kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:0 26px}
.rme-loc-kvr{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid #eef1f5;font-size:13.5px;align-items:baseline}
.rme-loc-kvr .rme-loc-k{color:var(--fso-idx-muted,#6b7280);font-weight:700;flex:0 0 auto}
.rme-loc-kvr .rme-loc-v{font-weight:700;text-align:right}
.rme-loc-kvr .rme-loc-v small{display:block;font-weight:500;font-size:11.5px;color:var(--fso-idx-muted,#6b7280);margin-top:1px}

@media (max-width:700px){
  /* v0.3.66: the section is transparent now, so it is NOT full-bled (that band
     hack belonged to the old bordered card). It sits in .rme-wrap's 16px gutter
     like every other section; the map just gets a shorter height on mobile. */
  .rme-loc-mapwrap .rme-detail-inline-map{height:400px}
  .rme-loc-strip,
  .rme-loc-strip[data-cells="3"],
  .rme-loc-strip[data-cells="4"]{grid-template-columns:repeat(2,1fr)}
  .rme-loc-strip > div:nth-child(3){border-left:none}
  .rme-loc-strip > div:nth-child(n+3){border-top:1px solid rgba(255,255,255,.16)}
  .rme-loc-sv{font-size:17px}
  .rme-loc-layerpanel{width:230px}
}
@media (max-width:460px){
  /* !important is mandatory here: the base .rme-loc-tab rule now marks these
     three properties important (to beat style.css), and same-specificity
     non-important declarations in a media query would lose to it. */
  .rme-loc-tab{font-size:11.5px !important;padding:13px 4px !important;letter-spacing:.02em !important}
  .rme-loc-lbl-full{display:none}
  .rme-loc-lbl-short{display:inline}
}

/* ===== v0362 detail (Option D) ===== */
/* Task 4: new detail-page layout shell -- sticky section nav, full-bleed
   mosaic gallery, Redfin/Compass-style price block, sticky rail. Ported from
   mockups/detail-layout-2026-08/_fragments/top-d.html + _fragments/rail-d.html
   (shared.css + top-d.html's <style> block) with every new class prefixed
   rme- so nothing here can collide with FSO's/the theme's selectors of the
   same bare name -- this stylesheet loads BEFORE FSO's style.css on the
   detail page (see detail-page-css-gotchas), so we don't rely on cascade
   order to win anything, only on selectors that don't exist anywhere else.
   A few classes are named literally in task-4-brief.md's DOM contract (a.sec,
   .gd/.gd-main, .g-map-chip, .g-all, .gd-arrow) and are kept unprefixed to
   match it exactly, but every rule for them is scoped under
   .rme-dnav/.rme-gal so they still can't leak. Two mockup classes the
   contract does NOT require bare (.g-badge, .g-count) are rme-prefixed
   (.rme-g-badge/.rme-g-count) instead -- bare .badge collided with
   Bootstrap's global `.badge{border-radius:var(--bs-border-radius)}`, which
   IS loaded on the live detail page; renaming removes the collision at the
   source instead of fighting it with an override. Root custom props are
   scoped to .fso-idx-detail-template (not :root) so they never leak into the
   rest of the site. Square corners everywhere -- no border-radius anywhere
   in this block, with exactly ONE exception added in Task 6 (below): the
   mobile gallery's three round save/hide/share overlay buttons
   (.rme-g-ovl .rme-icon-btn), per the approved mockup. The mockup's other
   radius use (.pcard .status-line .dot) stays dropped (square dot). NOT
   ported: the option-switcher toolbar, the html[data-lab-*] tweaks-bar
   knobs, and the .lbx media-viewer block (Task 5, further down this file).
   Task 6 (mobile pass) added: the .rme-mcta fixed bottom CTA bar, the
   .rme-g-ovl overlay buttons, and the gallery's live-counter scroll
   listener (JS only, see rme-idx-search.js) -- the rest of the ≤700px
   gallery/nav/price-block rules below were already shipped by Task 4/5.
   Several other ≤700px mockup rules (shared.css's .feat-grid/.agent-strip/
   .sec-head) were NOT re-ported here because production's equivalent
   markup (.fso-single-listing-columns, .fso-agent-strip-inner/-left) is
   PRE-EXISTING, predates this redesign, and already has its own working
   mobile rules in rme-idx-search/assets/style.css (@media max-width:900px/
   1200px, which subsume ≤700px) -- see task-6-report.md for the full
   audit. Census/neighborhood .stat-tiles markup doesn't exist yet (Task
   7-8), so no rule was added for it either. */
.fso-idx-detail-template{
  --rme-ink:#111111;
  --rme-body:#1e1e1e;
  --rme-muted:#6b6b6b;
  --rme-faint:#6b6b6b;
  --rme-hairline:#e5e5e5;
  --rme-wash:#f7f6f4;
  --rme-navy:#0f1b2d;
  --rme-green:#2c7a44;
  --rme-pink:#e6007e;
  --rme-red:#c8102e;
  --rme-rail-w:372px;
  --rme-max-w:1280px; /* content max-width, per the v0362 spec -- narrower than
                          the page's existing 1440px .fso-idx-detail-template
                          cap, so the full-bleed gallery (which fills that
                          outer 1440px box) reads wider than the content
                          column below it, same hierarchy as the mockup. */
  --rme-gal-row:270px;
}

/* ---------- sticky section nav ---------- */
.rme-dnav{position:sticky;top:var(--rme-chrome,0px);z-index:85;background:#fff;border-bottom:1px solid var(--rme-hairline)}
.rme-dnav .rme-dnav-inner{max-width:none;margin:0;padding:0 28px;display:flex;align-items:stretch;gap:30px}
.rme-dnav a.sec{display:flex;align-items:center;font-family:'Montserrat',sans-serif;font-size:11.5px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--rme-muted);padding:15px 0 13px;border-bottom:2px solid transparent;text-decoration:none}
.rme-dnav a.sec.back{color:var(--rme-ink);padding-right:28px;margin-right:2px;border-right:1px solid var(--rme-hairline)}
.rme-dnav a.sec.back .chv{font-size:15px;margin-right:8px;line-height:1}
.rme-dnav a.sec.back:hover{color:var(--rme-red)}
.rme-dnav a.sec:hover{color:var(--rme-ink)}
.rme-dnav a.sec.is-here{color:var(--rme-ink);border-bottom-color:var(--rme-red)}
.rme-dnav .rme-dnav-actions{margin-left:auto;display:flex;gap:4px}
/* font-size/letter-spacing pinned !important -- see the Task 6 follow-up
   comment above .rme-btn-outline: FSO's global button reset forces
   font-size:13px/letter-spacing:1px on every <button>, which would
   otherwise silently override these authored 11.5px/1.5px values. */
.rme-dnav .act{display:inline-flex;align-items:center;gap:7px;background:none;border:0;font-family:'Montserrat',sans-serif;font-size:11.5px!important;font-weight:600;letter-spacing:1.5px!important;text-transform:uppercase;color:var(--rme-ink);padding:0 12px;cursor:pointer}
.rme-dnav .act svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6}
.rme-dnav .act:hover{color:var(--rme-red)}
.rme-dnav .act.is-saved{color:var(--rme-red)}
.rme-dnav .act.is-saved svg{fill:var(--rme-red)}
/* v0.4.60 (design B-11): from 701 to 980 px the labels pushed Share past the
   window (767-883 at 768). Icons only there; the text stays the accessible name. */
@media (min-width:701px) and (max-width:980px){
  .rme-dnav .act{font-size:0!important;letter-spacing:0!important;gap:0;padding:0 11px!important} /* v0.4.61: FSO's button padding won; Share then ended at 752 at 768 */
  .rme-dnav .act svg{width:20px;height:20px}
}
/* v0.4.60 (design P-6): the empty search's way out */
.fso-idx-empty .fso-idx-empty-clear{display:table;margin:14px auto 0;padding:14px 22px;border:1px solid #0f1b2d;color:#0f1b2d;font-family:'Montserrat',sans-serif;font-size:12px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;text-decoration:none}
.fso-idx-empty .fso-idx-empty-clear:hover{background:#0f1b2d;color:#fff}
/* v0.3.63 FIX: --rme-chrome is the height of whatever fixed chrome the THEME
   pins to the top of the window (on staging: a 31px contact bar + an 80px
   fixed #main-header = 111px, plus the WP admin bar when present). The sticky
   nav used to pin at top:0, which put it completely underneath that header,
   and anchor jumps landed their headings ~47px behind it. The value below is
   the measured desktop default; rme-idx-search.js re-measures the real chrome
   on load/resize and overwrites this property, so the admin bar and a shorter
   mobile header self-correct. */
.fso-idx-detail-template{--rme-chrome:111px}
@media (max-width:980px){.fso-idx-detail-template{--rme-chrome:80px}}

/* anchor jumps must clear the theme header AND the sticky section nav */
#features, #location, #pricing, #similar, #rme-nearby { scroll-margin-top: calc(var(--rme-chrome,0px) + 64px); }

/* ---------- full-bleed gallery: mosaic on desktop, snap slider on mobile ---------- */
.rme-gal{display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:var(--rme-gal-row) var(--rme-gal-row);gap:4px;margin-top:4px}
.rme-gal .gd{position:relative;display:block;overflow:hidden}
.rme-gal .gd img{width:100%;height:100%;object-fit:cover;cursor:zoom-in;transition:transform .35s ease}
.rme-gal .gd:hover img{transform:scale(1.03)}
.rme-gal .gd-main{grid-row:span 2}
.rme-gal .rme-g-badge{position:absolute;left:14px;top:14px;background:#000;color:#fff;font-family:'Montserrat',sans-serif;font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;padding:4px 12px}
.rme-gal .rme-g-badge.rme-badge--pending{background:#c47a00}
.rme-gal .rme-g-badge.rme-badge--coming-soon{background:#2364c9}
.rme-gal .rme-g-badge.rme-badge--sold{background:#8b0000}
.rme-gal .g-all,.rme-gal .g-map-chip{position:absolute;bottom:14px;border:0;cursor:pointer;font-family:'Montserrat',sans-serif;font-size:10.5px !important;font-weight:600;letter-spacing:1.5px !important;text-transform:uppercase;padding:9px 14px !important}
.rme-gal .g-map-chip{left:14px;background:#fff;color:var(--rme-navy)}
.rme-gal .g-all{right:14px;background:rgba(15,27,45,.78);color:#fff}
.rme-gal .g-all:hover{background:var(--rme-navy)}
.rme-gal .rme-g-count{position:absolute;left:92px;bottom:14px;background:rgba(15,27,45,.72);color:#fff;font-size:11px;letter-spacing:1px;padding:9px 12px}
/* font-size/letter-spacing pinned !important -- same FSO button reset, see
   the Task 6 follow-up comment above .rme-btn-outline. This is a single
   glyph (‹/›), not a text label, but the reset's letter-spacing:1px still
   applies to it unless overridden. */
.rme-gal .gd-arrow{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border:0;cursor:pointer;background:rgba(15,27,45,.55);color:#fff;font-size:20px!important;letter-spacing:normal!important;z-index:2}
.rme-gal .gd-arrow:hover{background:rgba(15,27,45,.85)}
.rme-gal .gd-prev{left:14px}
.rme-gal .gd-next{right:14px}
button.gd-arrow.gd-prev {padding: 0 !important;}
button.gd-arrow.gd-next {padding: 0 !important;}
.rme-gal .rme-gd-noimg{display:flex;align-items:center;justify-content:center;min-height:360px;background:var(--rme-wash)}
.rme-gal .rme-gd-noimg-label{font-family:'Montserrat',sans-serif;font-size:14px;letter-spacing:.05em;text-transform:uppercase;color:var(--rme-muted)}
.rme-gal .rme-g-ovl{display:none} /* mobile-only overlay, see the ≤700px block below */
/* v0.3.68: wrapper so the mobile arrows/counter can sit OUTSIDE the scroller
   (inside it they belonged to slide 1 and scrolled away). Desktop is unchanged:
   the wrapper is a plain block and these three controls stay hidden. */
.rme-gal-wrap{position:relative}
.rme-gal-mprev,.rme-gal-mnext,.rme-gal-mcount{display:none}
/* Extra slides appended by JS for photos 6..N -- mobile-only, so the desktop
   mosaic keeps exactly its five tiles. */
.rme-gal .rme-gal-extra{display:none}
/* v0.4.60 (B-10, owner): sold/off-market = the photo left, a static map right.
   A lone photo with no map is centred at the mosaic's height instead of leaving
   the right half blank. The marker image's tip sits on the map's centre. */
.rme-gal.rme-gal--map{grid-template-columns:1fr 1fr}
.rme-gal.rme-gal--solo{grid-template-columns:minmax(0,960px);justify-content:center}
.rme-gal .gd-map{grid-row:span 2} /* v0.4.61: the full height of the photo beside it */
.rme-gal .gd-map img{cursor:pointer}
.rme-gal .gd-map:hover img{transform:none}
.rme-gal .gd-map img.gd-map-pin{position:absolute;left:50%;top:50%;width:44px;height:44px;object-fit:contain;transform:translate(-50%,-100%);pointer-events:none}
.rme-gal .gd-map .g-map-chip{display:inline-block;line-height:1.2;top:14px;bottom:auto} /* v0.4.62: top-left, clear of the Mapbox logo the Static Images API draws bottom-left (their terms) */
.rme-mcta.rme-mcta--solo{grid-template-columns:1fr}
@media (max-width:700px){.rme-gal .gd-map{display:none}} /* phones: the photo alone; Location is below */

/* ---------- page scaffolding: constrained content column + sticky rail ---------- */
.rme-wrap{max-width:var(--rme-max-w);margin:0 auto;padding:0 24px}
/* v0.3.63 FIX: section rhythm from the mockup (shared.css `section.block`).
   Only #features carried it before -- #location, #pricing and #rme-nearby
   collapsed to 0 because they hang off their own classes, not .rme-section. */
.fso-idx-detail-template #features,
.fso-idx-detail-template #location,
.fso-idx-detail-template #pricing,
.fso-idx-detail-template #rme-nearby{margin-top:54px}
.fso-idx-detail-template #similar{margin-top:64px}

/* v0.3.63: map-card FOOTER (mockup .map-foot) -- light, inside the bordered
   card, replacing the dark 4-cell facts strip the owner rejected. */
.rme-map-foot{display:flex;flex-wrap:wrap;gap:8px 26px;padding:13px 18px;border-top:1px solid var(--rme-hairline);background:#fff;font-size:12px;color:var(--rme-muted)}
.rme-map-foot[hidden]{display:none}
.rme-map-foot-item{display:inline-flex;align-items:center}
.rme-map-foot-item strong{color:var(--rme-ink);font-weight:500}
.rme-map-foot-item small{color:var(--rme-faint);font-size:11px;margin-left:4px}
.rme-map-foot-dash{display:inline-block;width:22px;border-top:2px dashed var(--rme-red);margin-right:8px}

/* ===== v0.3.63: three components that were still wearing their pre-redesign
   look on the live theme. Each is restyled to the approved mockup
   (mockups/detail-layout-2026-08/_fragments/main-shared.html + rail-d.html),
   measured at 1440. ===== */

/* --- Listing agent: the compact mockup strip (.agent-strip), not the tall FSO
   card. Mockup: 18px 22px padding, flex row, 72px square portrait, 17px/2px
   name, 3 tiny label+value columns, button pushed right at auto width. --- */
.fso-idx-detail-template .fso-agent-strip{padding:18px 22px;margin-top:30px}
.fso-idx-detail-template .fso-agent-strip-inner{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.fso-idx-detail-template .fso-agent-left{display:flex;align-items:center;gap:20px;flex:1 1 auto;min-width:0}
/* v0.3.71 (Jason): 100px portrait, image fills the box (object-fit:cover crops
   rather than letterboxes, so non-square headshots still fill it). */
.fso-idx-detail-template .fso-agent-photo{flex:0 0 auto;width:100px;height:100px;overflow:hidden}
.fso-idx-detail-template .fso-agent-photo img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block}
.fso-idx-detail-template .fso-agent-meta{min-width:0}
.fso-idx-detail-template .fso-agent-name{font-family:'Montserrat',sans-serif;font-size:17px;font-weight:400;letter-spacing:2px;text-transform:uppercase;color:var(--rme-ink);margin:2px 0 0;line-height:1;padding:0 0 10px} /* v0.4.60: a div now (P-8); line-height and padding are what the h4 computed */

/* v0.3.71 (Jason): phone/email/social icon links replacing the old label+value
   text lines. Same thin-outline treatment as the gallery's save/hide/share and
   the mockup's .icon-btn (38px box, 1px hairline, 17px stroked glyph) -- square,
   not round, per the site's hard-edged button style. The !important run is
   defensive: the FSO plugin's style.css loads AFTER this file on the detail page
   and styles bare <a> inside .fso-agent-strip. */
.fso-idx-detail-template .rme-agent-icons{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.fso-idx-detail-template .rme-agent-icons a{width:38px;height:38px;display:inline-flex!important;align-items:center;justify-content:center;padding:0!important;margin:0!important;border:1px solid var(--rme-hairline)!important;background:#fff;color:var(--rme-ink)!important;text-decoration:none!important;box-shadow:none;transition:border-color .15s ease,color .15s ease}
.fso-idx-detail-template .rme-agent-icons a:hover{border-color:var(--rme-ink)!important;color:var(--rme-ink)!important}
.fso-idx-detail-template .rme-agent-icons svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;display:block}
.fso-idx-detail-template .fso-agent-info-row{display:flex;gap:28px;margin-top:6px;flex-wrap:wrap}
.fso-idx-detail-template .fso-agent-info-col{min-width:0}
.fso-idx-detail-template .fso-agent-line-heading{font-size:9.5px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--rme-muted);margin:0}
.fso-idx-detail-template .fso-agent-info-col a,
.fso-idx-detail-template .fso-agent-info-col span{font-size:12.5px;color:var(--rme-ink);margin-top:2px;display:block;text-decoration:none}
.fso-idx-detail-template .fso-agent-right{margin-left:auto;flex:0 0 auto}
.fso-idx-detail-template .fso-agent-right{width:auto!important;min-width:0!important;flex:0 0 auto}
.fso-idx-detail-template .fso-agent-strip a.fso-connect-btn{display:inline-flex!important;align-items:center;justify-content:center;width:auto!important;min-width:0!important;padding:12px 26px!important;font-size:12px!important;font-weight:600!important;letter-spacing:1.5px!important;text-transform:uppercase;background:var(--rme-navy)!important;color:#fff!important;border:0!important}
@media (max-width:700px){
  .fso-idx-detail-template .fso-agent-left{flex-wrap:wrap}
  .fso-idx-detail-template .fso-agent-right{margin-left:0;width:100%}
  .fso-idx-detail-template .fso-agent-strip a.fso-connect-btn{width:100%!important}
}

@media (max-width:700px){
  /* v0.3.68 mobile gallery: every photo is a slide, with arrows and a counter
     that live on the wrapper so they stay put while the strip scrolls. */
  .rme-gal .rme-gal-extra{display:block;flex:0 0 100%;scroll-snap-align:start;position:relative}
  .rme-gal .rme-gal-extra img{width:100%;height:300px;object-fit:cover;display:block}
  .rme-gal-mprev,.rme-gal-mnext{display:flex;align-items:center;justify-content:center;position:absolute;top:150px;transform:translateY(-50%);width:38px;height:38px;z-index:3;border:0!important;padding:0!important;margin:0!important;background:rgba(15,27,45,.55)!important;color:#fff!important;font-size:20px!important;line-height:1;cursor:pointer}
  .rme-gal-mprev{left:8px}
  .rme-gal-mnext{right:8px}
  .rme-gal-mcount{display:block;position:absolute;right:12px;bottom:12px;z-index:3;background:rgba(15,27,45,.72);color:#fff;font-size:11px;letter-spacing:1px;padding:4px 10px}
  /* the in-slide counter is replaced by the wrapper one above */
  .rme-gal .rme-g-count{display:none}

  /* v0.3.68 mobile usability pass (measured at 375px):
     - touch targets were 38px; 44px is the iOS/Android minimum
     - 9.5px label text is below a comfortable mobile reading size
     - "Expand All Details" had only a 20px tap height */
  .rme-gal .rme-g-ovl .rme-icon-btn{width:44px!important;height:44px!important}
  .rme-gal-mprev,.rme-gal-mnext{width:44px!important;height:44px!important}
  /* v0.3.71: the agent contact icons are now the only tap targets in the strip
     besides "Meet <Name>" -- 44px, same minimum as the gallery buttons above. */
  .fso-idx-detail-template .rme-agent-icons a{width:44px!important;height:44px!important}
  .fso-idx-detail-template .rme-agent-icons svg{width:19px;height:19px}
  .rme-mcta .rme-btn .cta-sub{font-size:10.5px}
  .fso-idx-detail-template .rme-acc-all{padding:10px 0!important}
  /* the accordion rows are the main navigation of this section on a phone */
  .fso-idx-detail-template .rme-acc-head{padding-top:16px;padding-bottom:16px}
}

/* --- Schedule a Tour: FSO's `button{padding:14px 22px!important}` house rule
   was inflating the two chevrons to 44px each, stealing 36px from the three
   date boxes (69px wide instead of the mockup's 81px), and pushing the CTA to
   13px/14px-22px. The CTA is brand RED in the approved mockup, not pink. --- */
.fso-idx-detail-template .rme-rail .tour-arrow{width:26px!important;padding:0!important;background:transparent!important;border:0!important}
.fso-idx-detail-template .rme-btn-pink{background:var(--rme-red)!important;padding:13px 18px!important;font-size:12px!important;font-weight:600!important;letter-spacing:1.5px!important}
.fso-idx-detail-template .rme-btn-pink:hover{background:#a80d26!important}

/* v0.3.68: the date tiles are now real <button>s rendered by JS (they were
   inert <div>s), so FSO's global button reset applies to them -- pin the tile
   shape back. .tour-days is the flex row the arrows page. */
.fso-idx-detail-template .rme-rail .tour-days{display:flex;gap:8px;flex:1;min-width:0}
.fso-idx-detail-template .rme-rail .tour-day{flex:1;min-width:0;display:block;text-align:center;background:#fff!important;border:1px solid var(--rme-hairline,#e5e5e5)!important;padding:10px 4px!important;font:inherit;cursor:pointer;line-height:1.2}
.fso-idx-detail-template .rme-rail .tour-day:hover{border-color:var(--rme-navy)!important}
.fso-idx-detail-template .rme-rail .tour-day.is-sel{background:var(--rme-navy)!important;border-color:var(--rme-navy)!important}
.fso-idx-detail-template .rme-rail .tour-day.is-sel .dow,
.fso-idx-detail-template .rme-rail .tour-day.is-sel .mon{color:#9ca3af}
.fso-idx-detail-template .rme-rail .tour-day.is-sel .dom{color:#fff}
.fso-idx-detail-template .rme-rail .tour-arrow[disabled]{opacity:.3;cursor:default}

/* Media viewer z-index lives on the .rme-lbx base rule below (110000, above
   the theme's 99999 fixed header) -- a second rule here would be overridden by
   it, since that rule comes later in this file. */

@media (max-width:700px){.rme-map-foot{gap:6px 16px;padding:11px 14px}}

.rme-layout{display:grid;grid-template-columns:minmax(0,1fr) var(--rme-rail-w);gap:44px;align-items:start;margin-top:18px}
.rme-rail{position:sticky;top:calc(var(--rme-chrome,0px) + 64px);align-self:start;display:flex;flex-direction:column;gap:16px}

/* ---------- price / address card under the gallery (Redfin-style) ---------- */
.rme-pcard{display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:24px;align-items:start;padding:26px 0}
.rme-pcard .status-line{display:flex;align-items:center;gap:8px;font-family:'Montserrat',sans-serif;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--rme-green)}
.rme-pcard .status-line .dot{width:8px;height:8px;background:var(--rme-green)}
.rme-pcard .status-line.rme-badge--pending{color:#c47a00}
.rme-pcard .status-line.rme-badge--pending .dot{background:#c47a00}
.rme-pcard .status-line.rme-badge--coming-soon{color:#2364c9}
.rme-pcard .status-line.rme-badge--coming-soon .dot{background:#2364c9}
.rme-pcard .status-line.rme-badge--sold{color:#8b0000}
.rme-pcard .status-line.rme-badge--sold .dot{background:#8b0000}
.rme-pcard .price-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px;margin-top:10px}
.rme-pcard .price{font-family:'Montserrat',sans-serif;font-size:34px;color:var(--rme-ink);line-height:1}
.rme-pcard .est-chip{font-size:12px;color:var(--rme-body);background:var(--rme-wash);border:1px solid var(--rme-hairline);padding:7px 12px}
.rme-pcard .est-chip a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px}
.rme-pcard .stats-row{display:flex;gap:22px;margin-top:14px;font-size:14.5px;color:var(--rme-ink);flex-wrap:wrap}
.rme-pcard .stats-row b{font-family:'Montserrat',sans-serif;font-weight:500;font-size:17px}
.rme-pcard .stats-row span i{font-style:normal;color:var(--rme-muted);font-size:12px;margin-left:5px}
.rme-pcard h1{font-family:'Montserrat',sans-serif;font-size:16px;letter-spacing:1.5px;text-transform:none;font-weight:500;margin-top:12px;color:var(--rme-ink)}
.rme-pcard h1 .lot{color:var(--rme-faint)}
.rme-pcard .minimap{border:1px solid var(--rme-hairline);display:block;text-decoration:none}
.rme-pcard .minimap svg{display:block;width:100%;height:118px}
.rme-pcard .minimap .mm-cap{display:block;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--rme-muted);text-align:center;padding:8px 12px;border-top:1px solid var(--rme-hairline)}

.rme-desc{margin-top:8px}

/* ---------- rail cards ---------- */
.rme-rail .rme-card{border:1px solid var(--rme-hairline);background:#fff;padding:22px}
.rme-rail .rme-card h3{font-family:'Montserrat',sans-serif;font-size:13px;letter-spacing:2px;text-transform:uppercase;margin:0 0 14px;color:var(--rme-ink)}
.rme-rail .rme-form-stack{display:flex;flex-direction:column;gap:10px}
.rme-rail .rme-form-stack input,.rme-rail .rme-form-stack textarea{width:100%;border:1px solid var(--rme-hairline);padding:11px 12px;font-family:inherit;font-size:13px;font-weight:300;color:var(--rme-ink);resize:vertical;box-sizing:border-box}
.rme-rail .rme-form-stack input::placeholder,.rme-rail .rme-form-stack textarea::placeholder{color:var(--rme-faint)}
.rme-rail .rme-form-stack input:focus,.rme-rail .rme-form-stack textarea:focus{outline:1px solid var(--rme-navy);border-color:var(--rme-navy)}
.rme-btn{display:block;width:100%;box-sizing:border-box;text-align:center;font-family:'Montserrat',sans-serif;font-size:12px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;padding:13px 18px;border:0;cursor:pointer;text-decoration:none}
.rme-btn-navy{background:var(--rme-navy);color:#fff}
.rme-btn-navy:hover{background:#1f2937}
/* v0.3.62 (Task 6 follow-up): FSO's global
   `button,.btn,.btn-primary{border:0!important;font-size:13px!important;
   letter-spacing:1px!important;padding:14px 22px!important;...}` house
   rule (flexible-staff-office-directory-v1.2.2/assets/style.css, loads
   AFTER this file on the detail page) strips this button's border and
   overrides its type metrics regardless of specificity, since !important
   always wins over source order. Live-verified: without the !importants
   below, .rme-btn-outline computed `border: 0px none` -- bare navy text
   next to the filled Request-a-Tour button in .rme-mcta, with no button
   affordance at all. Fixed generally here (not just inside .rme-mcta) --
   the SAME class inside #rme-contact-card needs its OWN, separate fix
   (see the #rme-contact-card rule below) because a second, unrelated
   .fso-idx-lead-form button rule also collides with it there. */
.rme-btn-outline{background:#fff;color:var(--rme-navy);border:1px solid var(--rme-navy)!important;font-size:12px!important;letter-spacing:1.5px!important}
.rme-btn-pink{background:var(--rme-pink);color:#fff}
.rme-btn-pink:hover{background:#c40069}

/* v0.3.62 (Task 6 follow-up, round 2): #rme-contact-card's "Send Message"
   button carries BOTH .rme-btn-outline (this file) AND .fso-idx-lead-form
   button (this file too, lines ~213-234 -- an older, unrelated rule
   written for the dark #fso-schedule-tour-modal/#fso-contact-agent-modal
   submit buttons, which this rail-card form deliberately reuses so it
   posts through the identical lead pipeline; see task-4-report.md). That
   rule wins the cascade against plain .rme-btn-outline for THREE
   properties, not just border:
     - border: `.fso-idx-lead-form button{border:1px solid #fff!important}`
       (line 1598) beats .rme-btn-outline's border regardless of the
       !important just added above, because it has higher specificity
       (2 classes + 1 element) AND is also !important.
     - background/color: the base `.fso-idx-lead-form button{background:
       #12141a;color:#fff}` (line 224, no !important) also has higher
       specificity than plain `.rme-btn-outline` (1 class) and wins on
       specificity alone.
   Live-verified before this fix: computed border `1px solid rgb(255,255,255)`
   (white -- invisible on the white .rme-card background), background
   `rgb(18,20,26)` (near-black), color `rgb(255,255,255)` -- i.e. the button
   was rendering as a solid dark modal-style button, not the intended white/
   navy-outline treatment `.rme-btn-outline` declares.
   Fixed by adding an ID into the selector (#rme-contact-card), which no
   competing rule has -- ID beats any number of classes, so this wins
   against the line-1598/line-224 rules THERE without touching either of
   them (they must keep winning, unmodified, inside the two dark modals,
   which don't have #rme-contact-card as an ancestor and so never match
   this selector at all). !important is only needed on border (to beat the
   competing !important); background/color win on specificity alone but
   are marked !important anyway for robustness/clarity alongside it. */
#rme-contact-card .fso-idx-lead-form button.rme-btn-outline{background:#fff!important;color:var(--rme-navy)!important;border:1px solid var(--rme-navy)!important}

/* tour date strip */
.rme-rail .tour-dates{display:flex;align-items:stretch;gap:8px;margin-bottom:14px}
.rme-rail .tour-day{flex:1;border:1px solid var(--rme-hairline);text-align:center;padding:10px 4px}
.rme-rail .tour-day .dow{font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--rme-muted)}
.rme-rail .tour-day .dom{font-family:'Montserrat',sans-serif;font-size:22px;color:var(--rme-ink);line-height:1.2}
.rme-rail .tour-day .mon{font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--rme-muted)}
.rme-rail .tour-day.is-sel{border-color:var(--rme-navy);background:var(--rme-navy)}
.rme-rail .tour-day.is-sel .dow,.rme-rail .tour-day.is-sel .mon{color:#9ca3af}
.rme-rail .tour-day.is-sel .dom{color:#fff}
/* font-size/letter-spacing pinned !important -- same FSO button reset, see
   the Task 6 follow-up comment above .rme-btn-outline. */
.rme-rail .tour-arrow{width:26px;border:0;background:transparent;font-size:18px!important;letter-spacing:normal!important;color:var(--rme-muted);display:grid;place-items:center}
.rme-rail .tour-arrow:hover{color:var(--rme-ink)}
.rme-rail .open-house-note{font-size:11.5px;color:var(--rme-muted);margin-top:10px;line-height:1.5}
.rme-rail .open-house-note strong{color:var(--rme-ink);font-weight:500}

/* ---------- mobile fixed CTA bar (Task 6) ---------- */
/* Ported from mockups/detail-layout-2026-08/_fragments/top-d.html's .mcta
   block. Hidden by default (desktop); shown as a grid ≤700px below.
   [data-rme-scrollto] is wired to a smooth scrollIntoView in the detail
   IIFE (rme-idx-search.js). Button padding needs !important for the same
   reason the overlay icon-btn above does -- FSO's style.css
   `button{padding:14px 22px!important}` house-rule reset otherwise wins;
   see task-6-report.md for a note on this same reset silently inflating
   the padding (not breaking layout, just deviating from spec) on every
   OTHER Task 4/5 button too, which this task did not attempt to fix
   site-wide. */
.rme-mcta{display:none;position:fixed;left:0;right:0;bottom:0;z-index:88;background:#fff;border-top:1px solid var(--rme-hairline);padding:10px 16px calc(10px + env(safe-area-inset-bottom));grid-template-columns:120px 1fr;gap:10px}
.rme-mcta .rme-btn{padding:12px 10px!important}
.rme-mcta .rme-cta-sub{display:block;font-size:9.5px;font-weight:400;letter-spacing:.5px;text-transform:none;opacity:.75;margin-top:2px}

/* ---------- responsive ---------- */
@media (max-width:1080px){
  .rme-layout{grid-template-columns:1fr}
  .rme-rail{position:static;order:2}
}
@media (max-width:700px){
  .rme-wrap{padding:0 16px 120px} /* bottom clearance for .rme-mcta -- see
    note below; applied at the wrap level (not the disclosure section the
    mockup targets) because in production the sticky rail's cards render
    AFTER the disclosure section on mobile (.rme-rail{order:2} inside
    .rme-layout, both still children of .rme-wrap), unlike the mockup where
    .disclosure sits outside .layout entirely and really is the last thing
    on the page. Padding on .rme-wrap clears space after whichever element
    (rail card or disclosure) actually ends up last, instead of chasing DOM
    order. 120px comfortably exceeds the mcta bar's own rendered height
    (~90-100px with its two-line "Request a Tour" button) plus a safe-area
    margin. */
  .rme-dnav{display:none}
  .rme-mcta{display:grid}
  .rme-gal{display:flex;overflow-x:auto;gap:0;margin-top:0;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .rme-gal::-webkit-scrollbar{display:none}
  .rme-gal .gd{flex:0 0 100%;scroll-snap-align:start}
  .rme-gal .gd img{height:300px}
  .rme-gal .gd-main{grid-row:auto}
  .rme-gal .g-all,.rme-gal .g-map-chip{display:none}
  .rme-gal .rme-g-badge{top:12px;left:12px}
  .rme-gal .rme-g-count{display:block;left:auto;right:12px;bottom:12px;padding:4px 10px}
  .rme-gal .gd-arrow{display:none}
  /* three round save/hide/share overlay buttons on the first slide -- the
     ONLY border-radius exception in the whole v0362 detail block, per the
     approved mockup (top-d.html's ".g-ovl .icon-btn"). border-radius AND
     padding need !important here: the FSO companion plugin's style.css
     (which loads AFTER this file on the detail page -- see
     detail-page-css-gotchas) has a bare
     `button, .btn, .btn-primary{border-radius:0!important;padding:14px
     22px!important;...}` house-rule reset that otherwise wins over this
     rule's higher specificity (!important always beats specificity
     regardless of source order), squaring the corners AND, combined with
     box-sizing:border-box, stretching a plain border-radius:50% override
     into a 44x38 oval (its 22px+22px horizontal padding alone exceeds this
     button's declared 38px width, so border-box clamps the rendered box up
     to fit the padding). Verified live with getComputedStyle before/after
     this fix. */
  .rme-gal .rme-g-ovl{display:flex;gap:8px;position:absolute;top:12px;right:12px;z-index:3}
  .rme-gal .rme-icon-btn{width:38px;height:38px;padding:0!important;display:grid;place-items:center;border-radius:50%!important;border:0;cursor:pointer;background:#fff;color:var(--rme-ink);box-shadow:0 1px 6px rgba(0,0,0,.22)}
  .rme-gal .rme-icon-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6}
  .rme-pcard{grid-template-columns:1fr;padding-top:18px}
  .rme-pcard .minimap{display:none}
  .rme-pcard .price{font-size:30px}
  .rme-rail .tour-day .dom{font-size:18px}
}

/* ===== v0362 detail (Option D) -- Task 5: media viewer ===== */
/* Gallery slider + three-mode media viewer (grid / slideshow / map). Ported
   from mockups/detail-layout-2026-08/_fragments/top-d.html's .lbx block (the
   one piece Task 4's block comment above flagged as NOT ported) with every
   class rme-lbx- prefixed -- the mockup's own classes were already bare
   (.lbx, .lbx-head, .lbx-grid, ...), so this isn't fixing a collision like
   the gallery's .rme-g-badge/.rme-g-count rename, it's just holding the line
   on "every new class gets the rme- prefix" for a block ported in a later
   task. Square corners -- no border-radius anywhere below. Replaces the
   deleted #fso-photos-modal/#fso-map-modal pair (see
   rme-idx-search/assets/style.css for the -- untouched -- generic
   .fso-modal-dialog-photos/-map rules those still share with the separate
   FSO listings template, which keeps its own modal markup and JS). */
.rme-lbx{position:fixed;inset:0;z-index:110000;background:rgba(8,10,15,1);display:flex;flex-direction:column}
.rme-lbx[hidden]{display:none}
.rme-lbx-head{display:flex;align-items:center;gap:24px;padding:14px 22px;flex-shrink:0}
.rme-lbx-title{flex:1;min-width:0;color:#fff;font-family:'Montserrat',sans-serif;font-size:14.5px;letter-spacing:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rme-lbx-modes{display:flex;align-items:center;gap:12px;height: 10%;margin:auto;}
.rme-lbx-modes span{color:#4b5563}
.rme-lbx-modes button{background:none;border:0;cursor:pointer;font-family:'Montserrat',sans-serif;color:#9ca3af;font-size:12.5px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;padding:6px 2px;border-bottom:2px solid transparent}
.rme-lbx-modes button:hover{color:#fff}
.rme-lbx-modes button.is-on{color:#fff;border-bottom-color:var(--rme-red)}
.rme-lbx-actions{flex:1;display:flex;justify-content:flex-end;align-items:center;gap:8px}
.rme-lbx-act{display:inline-flex;align-items:center;gap:7px;background:none;border:0;cursor:pointer;font-family:'Montserrat',sans-serif;color:#d1d5db;font-size:11.5px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;padding:8px 10px}
.rme-lbx-act svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6}
.rme-lbx-act:hover{color:#fff}
.rme-lbx-act.is-saved{color:var(--rme-red)}
.rme-lbx-act.is-saved svg{fill:var(--rme-red)}
.rme-lbx-close{margin-left:26px;width:44px;height:44px;border:0!important;cursor:pointer;flex-shrink:0;background:rgba(255,255,255,.12);color:#fff;font-size:17px!important;padding:0!important;display:flex;align-items:center;justify-content:center;line-height:1}
.rme-lbx-close:hover{background:rgba(255,255,255,.28)}
.rme-lbx-body{flex:1;min-height:0;overflow-y:auto;display:flex;align-items:center;justify-content:center}
.rme-lbx-body>[hidden]{display:none!important}
.rme-lbx-grid{width:min(1160px,94vw);align-self:flex-start;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px 0 40px}
.rme-lbx-grid img{width:100%;aspect-ratio:4/3;object-fit:cover;cursor:zoom-in}
.rme-lbx-stage{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.rme-lbx-stage img{max-width:92vw;max-height:calc(100vh - 140px);object-fit:contain}
/* v0.3.68: was position:fixed + top:50%, i.e. centred on the VIEWPORT -- with
   the viewer's header above the image that left the arrows sitting below the
   photo's centre line on a phone. Anchored to .rme-lbx-stage instead, so they
   track the image. Flex-centred + padding:0 so the chevron sits dead centre
   (FSO's global button{padding:14px 22px!important} was offsetting it). */
.rme-lbx-arrow{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;border:0!important;cursor:pointer;background:rgba(255,255,255,.12);color:#fff;font-size:26px!important;padding:0!important;display:flex;align-items:center;justify-content:center;line-height:1}
.rme-lbx-arrow:hover{background:rgba(255,255,255,.28)}
.rme-lbx-prev{left:18px}
.rme-lbx-next{right:18px}
.rme-lbx-count{position:fixed;top: 50px;color:#d1d5db;font-size:12px;letter-spacing:1.5px}
.rme-lbx-map{width:min(1100px,94vw);align-self:center;padding-bottom:30px}
.rme-lbx-map-canvas{width:100%;height:calc(100vh - 190px)}
@media (max-width:700px){
  .rme-lbx-head{flex-wrap:wrap;gap:10px 16px;padding:12px 14px}
  .rme-lbx-title{flex-basis:100%;order:-1;font-size:12.5px}
  .rme-lbx-act i{display:none}
  .rme-lbx-close{margin-left:12px;width:38px;height:38px}
  .rme-lbx-grid{grid-template-columns:repeat(1,1fr)}
  .rme-lbx-stage img{max-height:calc(100vh - 180px)}
}

/* ===== v0362 detail (Option D) -- Task 7: Features & Amenities accordion ===== */
/* Collapsible Features & Amenities section, replacing the old
   .fso-features-master two-column/six-card layout entirely. Ported from
   mockups/detail-layout-2026-08/_fragments/main-shared.html (markup) and
   shared.css's "SECTIONS"/"collapsible features" blocks (styles), with
   every class rme- prefixed per task-7-brief.md's DOM contract (.rme-acc,
   .rme-acc-item, .rme-acc-head, .rme-acc-body, .rme-feat-grid, .rme-feat-row,
   .rme-acc-all) -- unlike Task 4's a.sec/.gd-main/etc, none of these are
   named literally bare in any contract, so there's no bare-name exception
   here; .rme-k/.rme-v (the row's label/value spans, emitted by the
   $feature_row closure in prepare_detail_data()) get the same treatment.
   Square corners -- no border-radius anywhere below.
   .fso-single-listing-section-card/-features/.fso-single-listing-feature-row
   (flexible-staff-office-directory-v1.2.2/assets/style.css) are now dead for
   THIS section specifically -- they're left untouched because the separate
   /listings/ FSO template (see the two-listing-systems memory note) still
   uses them for its own, unrelated feature rows. */
.fso-idx-detail-template .rme-features{margin-top:54px}
.rme-sec-head{display:flex;align-items:baseline;gap:16px;margin-bottom:20px}
.rme-features-title{font-size:20px;letter-spacing:3px;text-transform:uppercase;font-weight:400;margin:0}
/* .rme-acc-all and .rme-acc-head are <button>s -- FSO's global
   `button,.btn,.btn-primary{border-radius:0!important;border:0!important;
   letter-spacing:1px!important;font-size:13px!important;padding:14px
   22px!important}` house-rule reset (flexible-staff-office-directory-v1.2.2/
   assets/style.css, loads AFTER this file on the detail page -- see
   detail-page-css-gotchas) otherwise wins over any of these authored
   font-size/letter-spacing/padding/border values regardless of specificity,
   same fix pattern as every other Task 6 button override in this file
   (.rme-btn-outline, .rme-dnav .act, .rme-gal .gd-arrow, .rme-rail
   .tour-arrow) -- border-radius:0 is already what we want (square corners)
   so it needs no override. background isn't touched by that reset but is
   pinned here too per the brief's explicit instruction, defensively. */
.rme-acc-all{margin-left:auto;background:none!important;border:0!important;border-bottom:1px solid var(--rme-ink)!important;font-family:'Montserrat',sans-serif;font-size:11px!important;font-weight:600;letter-spacing:1.5px!important;text-transform:uppercase;color:var(--rme-ink);padding:0 0 2px!important;cursor:pointer}
.rme-acc-all:hover{color:var(--rme-red);border-bottom-color:var(--rme-red)!important}
.rme-acc{border-top:1px solid var(--rme-hairline)}
.rme-acc-item{border-bottom:1px solid var(--rme-hairline)}
.rme-acc-head{width:100%;display:flex;align-items:center;justify-content:space-between;background:none!important;border:0!important;padding:17px 2px!important;font-family:'Montserrat',sans-serif;font-size:13.5px!important;font-weight:500;letter-spacing:2.5px!important;text-transform:uppercase;color:var(--rme-ink);cursor:pointer;text-align:left}
.rme-acc-chev{transition:transform .2s ease;font-size:11px;color:var(--rme-muted)}
.rme-acc-item.is-open .rme-acc-chev{transform:rotate(180deg)}
.rme-acc-body{display:none;padding:4px 2px 24px}
.rme-acc-item.is-open .rme-acc-body{display:block}
.rme-feat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:10px 44px}
.rme-feat-row{display:flex;justify-content:space-between;gap:18px;padding:7px 0;border-bottom:1px solid #f2f1ef;font-size:13px}
.rme-feat-row .rme-k{color:var(--rme-muted);flex-shrink:0}
.rme-feat-row .rme-v{color:var(--rme-ink);font-weight:400;text-align:right}
@media (max-width:700px){
  .rme-sec-head{flex-wrap:wrap;gap:6px 12px}
  .rme-features-title{letter-spacing:2px}
  .rme-feat-grid{grid-template-columns:1fr}
}

/* ===== v0362 detail (Option D) -- Task 8: breadcrumbs, map card, census
   snapshot restyle ===== */
/* Breadcrumb trail under the Location section heading. Ported from
   mockups/detail-layout-2026-08/shared.css's .crumbs (~lines 400-409) with
   rme- prefixing (bare .crumbs isn't used anywhere on the live site, but
   every other new class in this file is prefixed on the same principle --
   see the Task 4/7 comments above). Markup: RME_IDX_Detail_View renders one
   <a> per linked crumb (RME_IDX_Detail_Format::breadcrumbs()'s
   $bc['url'] !== null) and a trailing span.cur for the unlinked last crumb,
   with a bare <span>&rsaquo;</span> between every pair -- see
   task-8-report.md for the produced URL shapes and how they were verified
   against the search page's own URL-param parsing. */
.rme-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px 0;margin:10px 0 18px;font:500 11px/1.6 'Montserrat',sans-serif;letter-spacing:1.5px;text-transform:uppercase;color:#6b6b6b}
/* v0.4.63 (design audit I-8, owner 2026-10-08): the community trail's type style (.rme-idx-crumbs ol), chevron included */
.rme-crumbs a{color:#6b6b6b;text-decoration:none}
.rme-crumbs a:hover{color:#111;text-decoration:underline;text-underline-offset:2px}
.rme-crumbs .sep{display:inline-block;width:5px;height:5px;margin:0 12px 1px 10px;border-right:1.5px solid #b5b0aa;border-top:1.5px solid #b5b0aa;transform:rotate(45deg)}
.rme-crumbs .cur{color:#111;font-weight:600}

/* Neighborhood Snapshot restyle -- the loc/fac TAB STRIP + its two panels
   are gated off in the view behind $show_loc_tabs = false (code kept, not
   deleted) so .rme-loc-tabs/.rme-loc-panel never render on this page for
   now; the map card above (and the .rme-loc-strip facts row) are UNCHANGED
   and still render. The Neighborhood panel is promoted out of the tab
   system entirely into its own always-visible .rme-snap block below the
   map -- unlike .rme-loc-panel (display:none by default, revealed only by
   the tab reconciler's .is-on toggle), .rme-snap renders by default;
   initNeighborhoodSnapshot() (rme-idx-search.js) now hides the WHOLE block
   via [data-rme-snap-empty="1"] when the {geoApi}/demographics fetch has
   nothing to show, since there's no tab left to hide instead. */
.rme-snap{padding-top:8px}
.rme-snap[data-rme-snap-empty="1"]{display:none}
/* v0.3.66: Neighborhood Snapshot heading == the mockup's second `.sec-head`
   (h2 + sub), same typography as the Location heading above — Montserrat 16px,
   weight 400, +2px tracking, uppercase. Was 15px/800/tight. */
.rme-snap-title-row{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 12px;margin:44px 0 14px}
.rme-snap-title-row h3{font-family:'Montserrat',sans-serif;font-size:16px;font-weight:400;letter-spacing:2px;text-transform:uppercase;margin:0;color:var(--rme-ink,#111)}
.rme-snap-src-label,
.rme-loc-src,
.rme-loc-area{font-size:12px;font-weight:300;color:var(--rme-muted,#6b6b6b);letter-spacing:normal}
.rme-loc-area{margin:0 0 4px}
.rme-loc-src{margin:0 0 18px}

/* 4 headline stat tiles */
/* v0.3.63: 8 census tiles (income + owner-occupied are charts only now), so
   a 4-wide grid gives two even rows at the mockup's own tile size. */
.rme-stat-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
@media (max-width:1080px){.rme-stat-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* v0.3.66: match the mockup's `.stat-tile` exactly — WHITE background (was the
   grey --rme-wash the owner flagged), #e5e5e5 hairline border (was #d9dee7),
   18px padding, and the light Montserrat numeral (27px/300, was 23px/800). */
.rme-stat-tile{border:1px solid var(--rme-hairline,#e5e5e5);background:#fff;padding:18px}
.rme-stat-tile .rme-st-k{font-size:10.5px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--rme-muted,#6b6b6b)}
.rme-stat-tile .rme-st-v{font-family:'Montserrat',sans-serif;font-size:27px;font-weight:300;color:var(--rme-ink,#111);margin-top:8px;line-height:1.1}
.rme-stat-tile .rme-st-d{font-size:11.5px;color:var(--rme-muted,#6b6b6b);margin-top:7px}
.rme-stat-tile .rme-st-d .up{color:var(--rme-green)}
.rme-stat-tile .rme-st-d .down{color:var(--rme-red)}

/* WalkScore/Bike Score/Transit Score row (Task 10). Empty when the option
   key/lat-lng/API call don't all succeed -- collapses to nothing via :empty
   (view emits zero whitespace between the tags in that case, see
   class-rme-idx-detail-view.php) and the attribution paragraph right after
   it is omitted from the markup entirely, not just hidden. */
.rme-ws-tiles:empty{display:none;margin:0}
.rme-ws-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:8px}
.rme-score-tiles{margin-bottom:8px}
.rme-ws-attribution{margin-top:0}

/* HTML-bar comparison charts */
.rme-hb-charts{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.rme-hb-charts:empty{display:none}
/* v0.3.66: mockup `.chart-card` — #e5e5e5 border, 20px padding, and a 13px/500
   Montserrat title with +1.5px tracking (was 11.5px/700/tight). */
.rme-chart-card{border:1px solid var(--rme-hairline,#e5e5e5);padding:20px;background:#fff}
.rme-chart-card h4{font-family:'Montserrat',sans-serif;font-weight:500;font-size:13px;letter-spacing:1.5px;text-transform:uppercase;color:var(--rme-ink,#111);margin:0}
.rme-ch-sub{font-size:11.5px;color:var(--rme-muted,#6b6b6b);margin:3px 0 16px}
.rme-chart-legend{display:flex;gap:16px;margin-bottom:10px}
.rme-chart-legend span{font-size:11.5px;color:var(--rme-muted);display:inline-flex;align-items:center;gap:6px}
.rme-chart-legend i{width:10px;height:10px;display:inline-block}
.rme-hb-row{margin-bottom:14px}
.rme-hb-row:last-child{margin-bottom:0}
.rme-hb-l{font-size:11.5px;color:var(--rme-muted);margin-bottom:5px}
.rme-hb-bar{display:flex;align-items:center;gap:10px}
/* proportional width is set inline per-row as calc(X% - 70px) (see hbRow() in
   rme-idx-search.js) -- min-width is the guard against that going negative
   on a narrow tract-only bar at mobile widths, ported from the mockup. */
.rme-hb-fill{height:20px;flex-shrink:0;min-width:24px}
.rme-hb-v{font-size:12px;font-weight:600;color:var(--rme-ink);white-space:nowrap}
.rme-st-bar{display:flex;gap:2px;height:20px}
.rme-st-bar .rme-seg{display:flex;align-items:center;min-width:0}
.rme-st-bar .rme-seg i{font-style:normal;font-size:11px;font-weight:600;color:#fff;padding-left:8px}
.rme-st-bar .rme-seg i.dark{color:var(--rme-ink)}

@media (max-width:900px){
  .rme-stat-tiles{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:700px){
  .rme-hb-charts{grid-template-columns:1fr}
  .rme-stat-tiles{grid-template-columns:repeat(2,1fr)}
  .rme-ws-tiles{grid-template-columns:repeat(2,1fr)}
}

/* ===== v0362 detail (Option D) -- Task 9: Save/Hide/Share wiring ===== */
/* Heart fill for the mobile gallery overlay's round Save button, matching
   the sticky nav's `.rme-dnav .act.is-saved` and the viewer's
   `.rme-lbx-act.is-saved` (both already defined above, Task 4/5) -- the
   only placement of the three that didn't have an .is-saved rule yet since
   Task 6 only shipped the hooks, not the state class. Square corners
   already covered by .rme-icon-btn's own border-radius:50% exception
   (documented at the Task 6 block above) -- nothing new needed here. */
.rme-gal .rme-icon-btn.is-saved{color:var(--rme-red)}
.rme-gal .rme-icon-btn.is-saved svg{fill:var(--rme-red)}

/* Inline "hidden" confirmation bar, inserted by showHideNote()
   (rme-idx-search.js) directly above .rme-pcard (the price block) after a
   successful [data-rme-hide] click -- the listing itself stays fully
   viewable, so this replaces hideListing()'s card-fade+toast (search page
   only) with a page-local bar instead. Undo is a plain text-styled
   <button> (not .rme-btn) since it reads as an inline link, per the
   approved copy "Hidden from your searches — manage in Hidden Properties ·
   Undo"; padding/font-size/letter-spacing are pinned !important for the
   same FSO global button reset every other <button> in this file has to
   fight (see the .rme-btn-outline comment, Task 6 follow-up, above). */
.rme-hide-note{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;background:var(--rme-wash);border:1px solid var(--rme-hairline);padding:14px 18px;margin-top:16px;font-size:13px;color:var(--rme-ink)}
.rme-hide-note a{color:var(--rme-navy);font-weight:600;text-decoration:underline;text-underline-offset:2px}
.rme-hide-note .rme-hide-undo{background:none!important;border:0!important;padding:0!important;margin:0;font-size:13px!important;letter-spacing:normal!important;text-transform:none;font-weight:600;font-family:inherit;color:var(--rme-navy);text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.rme-hide-note .rme-hide-undo:hover{color:var(--rme-red)}

/* Copy Link / Email fallback popover for [data-rme-share] when
   navigator.share isn't available (desktop browsers mostly), opened/
   positioned/closed by handleRmeShare()/openRmeSharePop() in
   rme-idx-search.js -- one popover implementation shared by all three
   placements (nav, mobile overlay, viewer header); positionRmeSharePop()
   clamps it to the viewport instead of assuming a side, so the same CSS
   works anchored below the nav button or squeezed into a 375px viewport
   near the mobile overlay/viewer trigger. Square corners; no
   border-radius anywhere. z-index above .rme-lbx (120, Task 5) so it
   still shows when opened from inside the media viewer. */
.rme-share-pop{position:fixed;z-index:200;background:#fff;border:1px solid var(--rme-hairline);box-shadow:0 6px 24px rgba(0,0,0,.18);min-width:160px;max-width:calc(100vw - 16px);display:flex;flex-direction:column;padding:6px;box-sizing:border-box}
/* padding/font-size/letter-spacing pinned !important on the <button> only
   -- same FSO global button reset as .rme-hide-undo above; the Email
   link is a plain <a>, which that reset never touches. */
.rme-share-pop button,.rme-share-pop a{display:block;width:100%;box-sizing:border-box;text-align:left;background:none;border:0!important;padding:10px 12px!important;margin:0;font-family:'Montserrat',sans-serif;font-size:12.5px!important;font-weight:600;letter-spacing:.5px!important;text-transform:none;color:var(--rme-ink);text-decoration:none;cursor:pointer}
.rme-share-pop button:hover,.rme-share-pop a:hover{background:var(--rme-wash)}

/* ===== v0362 detail (Option D) -- Task 11: "Homes in Nearby..." SEO block ===== */
/* #rme-nearby is an INDEPENDENT tail-of-page section (not a restyle of
   #similar/.fso-similar-listings above -- Task 13 owns that), rendered by
   the view right after it per _fragments/tail-shared.html's #nearby
   fixture. Classnames/rules ported from that mockup's .nearby-grid/.nb-h/
   .nb-list/.nb-more, renamed with the rme- prefix (project convention).
   The view omits a column entirely when its list is empty -- e.g.
   "neighborhoods" today, since wp_rme_idx_neighborhoods ships empty until
   a later data-collection task -- so no :empty handling is needed here.
   Square corners throughout; no border-radius anywhere. */
.rme-nearby-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:34px}
.rme-nb-h{font-family:'Montserrat',sans-serif;font-weight:500;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--rme-ink);padding-bottom:12px;border-bottom:1px solid var(--rme-hairline);margin:0 0 6px}
.rme-nb-list{list-style:none;margin:0;padding:0}
.rme-nb-list li{border-bottom:1px solid var(--rme-hairline)}
.rme-nb-list a{display:block;font-size:13px;color:var(--rme-muted);padding:9px 0;text-decoration:none}
.rme-nb-list a:hover{color:var(--rme-ink)}
.rme-nb-list .rme-nb-more{font-size:11px;font-weight:600;letter-spacing:.075em;text-transform:uppercase;color:var(--rme-ink)}
/* Mockup breakpoint (shared.css :440) -- 3 columns collapse to 1 under 900px. */
@media (max-width:900px){
  .rme-nearby-grid{grid-template-columns:1fr;gap:22px}
}

/* ===== v0362 detail (Option D) -- Task 12: #pricing (Pricing History table,
   calculator restyle + HOA Dues/yr, Executive Home Lending band) ===== */
/* Ported from mockups/detail-layout-2026-08/_fragments/main-shared.html's
   #pricing section plus shared.css's ph-table, mc- (calculator), and
   lender-band blocks, every class rme- prefixed per project convention. The
   calculator's structural pieces (the dollar/percent prefix-suffix affix
   boxes, the split down-payment percent+dollar pair, the PMI row) are
   carried over from the pre-Task-12 markup under new names -- same existing
   behavior, only the visuals and the HOA field's annual-vs-monthly
   treatment changed (see class-rme-idx-detail-view.php's inline calculator
   script and $hoa_annual_calc in class-rme-idx-search.php's
   prepare_detail_data()). This block replaces the OLD fso-mortgage- /
   fso-idx-pricing-history- / fso-mortgage-lender-cta rules for THIS (IDX
   /property/) view only -- those old selectors and rules are left untouched
   in rme-idx-search/assets/style.css because the SEPARATE FSO /listings/
   CPT template (flexible-staff-office-directory-v1.2.2/templates/
   single-fso-listing.php) still renders that exact markup with its own,
   independent copy of the calculator script -- see the "Two listing
   systems" project note. Square corners throughout -- no border-radius. */
.rme-pricing-section{border:0;background:none;padding:0}

/* ---------- pricing history table ---------- */
.rme-ph-block{margin-bottom:80px}
.rme-ph-table{width:100%;border-collapse:collapse}
.rme-ph-table th{text-align:left;font-family:'Montserrat',sans-serif;font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--rme-muted);padding:10px 14px;border-bottom:1px solid var(--rme-hairline)}
.rme-ph-table td{padding:13px 14px;border-bottom:1px solid #f2f1ef;font-size:13.5px;color:var(--rme-ink)}
.rme-ph-table tr:last-child td{border-bottom:0}
.rme-ph-table .rme-ph-event{font-weight:500}
.rme-ph-table .rme-ph-delta{font-size:12px;color:var(--rme-red)}

/* ---------- monthly cost estimate calculator ---------- */
.rme-mc-title{margin-top:26px}
.rme-mc-grid{display:grid;grid-template-columns:1fr 340px;gap:26px;align-items:start;margin-top:18px}
.rme-mc-inputs{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.rme-mc-field label{display:block;font-family:'Montserrat',sans-serif;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--rme-muted);margin-bottom:6px}
.rme-mc-field label small{text-transform:none;letter-spacing:normal;font-weight:400}
.rme-mc-field--full{grid-column:1/-1}
.rme-mc-input-wrap{display:flex;align-items:stretch;border:1px solid var(--rme-hairline)}
.rme-mc-input-wrap span{display:flex;align-items:center;padding:0 12px;background:var(--rme-wash);color:var(--rme-muted);font-size:14px;border-right:1px solid var(--rme-hairline)}
.rme-mc-input-wrap.rme-mc-suffix span{border-right:0;border-left:1px solid var(--rme-hairline)}
.rme-mc-input-wrap input{flex:1;min-width:0;width:100%;border:0;padding:11px 12px;font-family:inherit;font-size:14px;color:var(--rme-ink);background:#fff}
.rme-mc-input-wrap input:focus{outline:1px solid var(--rme-navy)}
.rme-mc-field select{width:100%;border:1px solid var(--rme-hairline);padding:11px 12px;font-family:inherit;font-size:14px;color:var(--rme-ink);background:#fff}
.rme-mc-down-row{display:flex;gap:10px}
.rme-mc-down-row .rme-mc-input-wrap{flex:1}
.rme-mc-result{border:1px solid var(--rme-hairline);background:var(--rme-wash);padding:24px}
.rme-mc-result-label{font-size:12px;color:var(--rme-muted);margin-bottom:6px}
.rme-mr-total{font-family:'Montserrat',sans-serif;font-size:34px;color:var(--rme-ink)}
.rme-mr-total small{font-size:14px;color:var(--rme-muted)}
.rme-mc-bar{display:flex;height:10px;margin-top:18px;gap:2px}
.rme-mc-bar span{display:block}
.rme-mc-rows{margin-top:16px;display:flex;flex-direction:column}
.rme-mc-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--rme-hairline);font-size:13px}
.rme-mc-row:last-child{border-bottom:0}
.rme-mc-row .k{color:var(--rme-muted);display:inline-flex;align-items:center;gap:8px}
.rme-mc-row .k i{width:9px;height:9px;display:inline-block}
.rme-mc-row .v{color:var(--rme-ink);font-weight:500}
.rme-mc-note{font-size:11px;color:var(--rme-faint);margin-top:14px;line-height:1.5}

/* ---------- Executive Home Lending band ---------- */
.rme-lender-band{margin-top:26px;border:1px solid var(--rme-hairline);padding:18px 22px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.rme-lender-mark{font-family:'Montserrat',sans-serif;font-size:21px;letter-spacing:.2em;text-transform:uppercase;color:var(--rme-ink);border-left:3px solid var(--rme-red);padding-left:14px;line-height:1.15}
.rme-lender-mark span{display:block;font-size:10px;letter-spacing:.25em;color:var(--rme-muted)}
.rme-lender-logo{max-width:180px;max-height:54px;object-fit:contain}
.rme-lender-band .rme-lender-btn{width:auto;padding:13px 28px}

@media (max-width:1080px){
  .rme-mc-grid{grid-template-columns:1fr}
}
@media (max-width:700px){
  .rme-ph-table th,.rme-ph-table td{padding:10px 8px;font-size:12.5px}
  .rme-mc-inputs{grid-template-columns:1fr 1fr;gap:10px}
  .rme-lender-band .rme-lender-btn{width:100%}
}

/* ===== v0362 detail (Option D) -- Task 13: Similar Homes (#similar) grid,
   description clamp 72ch + corrected 6-line height, Listing Agent strip
   "LISTING AGENT" label ===== */

/* ---------- Similar Homes card grid ---------- */
/* .rme-sim-grid is a NEW wrapper div the view (class-rme-idx-detail-view.php)
   puts around $similar_listings_html -- render_listing_cards()
   (class-rme-idx-search.php, shared with every search-page grid) emits its
   own `.fso-idx-results.rme-idx-static-grid` wrapper unchanged; only markup
   ADDED by this view and CSS scoped under .rme-sim-grid are new. Supersedes
   the old v0.3.44 `.fso-similar-listings .fso-idx-results` breakpoints (see
   that comment, above) with the spec's exact 1080/700 breakpoints -- 3-up
   desktop, 2-up <=1080px, 1-up <=700px. */
.rme-sim-grid .fso-idx-results{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:20px}
@media (max-width:1080px){
  .rme-sim-grid .fso-idx-results{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:700px){
  .rme-sim-grid .fso-idx-results{grid-template-columns:1fr}
}
/* Card images forced to a fixed 320px tall, ONLY inside this wrapper -- the
   global .fso-idx-card-image rule (top of this file) sets aspect-ratio:16/10
   with the <img> at width/height:100%; overriding the CONTAINER's
   aspect-ratio to auto plus a fixed height is what actually makes the
   already-100%-height <img> resolve to 320px without overflowing/being
   clipped by the container's own overflow:hidden. The <img> rule below is
   redundant with that (height:100% of a 320px box is already 320px) but is
   kept explicit per the task spec and as a defensive belt-and-braces in case
   a future edit to the global rule drops the container's height:100% on the
   image. Global card CSS (.fso-idx-card / .fso-idx-card-image / render_listing_cards())
   is untouched -- these two rules only ever match inside .rme-sim-grid. */
.rme-sim-grid .fso-idx-card-image{aspect-ratio:auto;height:320px}
.rme-sim-grid .fso-idx-card img{height:320px}
.read-more {background: none;
    border: 0;
    margin-top: 12px;
    padding: 0;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--ink);
    border-bottom: 1px solid var(--ink);
    padding-bottom: 2px;
}
h2.sec-head {
    font-size: 20px;
    letter-spacing: 3px;
    text-transform: uppercase;
    font-weight: 400;
    margin: 0;
}
.rme-nearby-grid {
    margin-top: 30px;
}
button.fso-description-toggle {
    margin: 0;
    padding: 0 0 10px 0 !important;
    text-align: left;
    border-bottom: 1px solid #000 !important;
    width: fit-content;
    display: flex;
    align-items: end;
    display: flex;
    align-items: end;
}
/* ---------- description clamp: 72ch width (clamped state only) ---------- */
/* SPEC-detail-page-redesign.md §5: "clamped to 6 lines at max-width: 72ch...
   expanded text fills the column." The 6-line HEIGHT correction lives at the
   v0.3.42 rule above (search "Task 13 correction") -- kept there so the two
   height rules (base 250px mobile, corrected 9.9rem desktop) stay
   co-located; this is just the new max-width addition. Removed
   (max-width:none) once .is-open so the expanded text fills the whole
   .rme-col-main column -- .fso-listing-description-clamp itself has no
   width constraint of its own, so removing the cap here is enough. */
.fso-idx-detail-template .fso-listing-description-clamp{max-width:72ch}
.fso-idx-detail-template .fso-listing-description-clamp.is-open{max-width:none}

/* ---------- Listing Agent strip: "LISTING AGENT" kicker label ---------- */
/* .rme-label is a small generic kicker/eyebrow style (ported from the
   mockup's bare .label, mockups/detail-layout-2026-08/shared.css:45,
   rme-prefixed per project convention) sitting above the agent name inside
   the PRE-EXISTING .fso-agent-strip markup (predates this redesign -- see
   the Task 6 comment above the .fso-idx-detail-template{...} custom-property
   block -- this is the one small addition Task 13 makes to it, not a
   restyle). */
.fso-idx-detail-template .rme-label{font-family:'Montserrat',sans-serif;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--rme-muted)}

/* ===================================================================
   v0.3.72 — SEARCH PAGE: sticky filter bar + card redesign
   Ported from mockups/search-layout-2026-08/ (approved 2026-08-14).

   Appended last on purpose: this file is a stack of versioned override
   blocks, so the rules below win ties against the earlier ones without
   having to edit them in place. !important is used where the theme's
   global button/input rules would otherwise take over (same reason as
   the v0.3.48 block above).
   =================================================================== */

/* ---------- 1. the sticky bar ---------- */
/* --rme-chrome is published on :root by the measurement module at the
   bottom of rme-idx-search.js (theme contact bar + fixed #main-header +
   WP admin bar when present). Pinning at top:0 put this bar UNDERNEATH
   the theme header. The fallback keeps it sane if JS never runs. */
.fso-idx-search-row{
  position:sticky!important;
  /* v0.3.72a: back to the measured value, with Jason's 105px as the no-JS
     fallback. It was hardcoded because a one-shot measurement went stale
     at 84px; the measurement now self-corrects (see rme-idx-search.js).
     Measured live: 108px desktop/tablet, 0px on mobile where Divi makes
     the header position:absolute and it scrolls away. */
  top:var(--rme-chrome,105px)!important;
  z-index:60;
  background:#fff;
  padding:14px 0 14px!important;
  margin-bottom:0!important;
  grid-template-columns:minmax(200px,1fr) repeat(6,minmax(84px,120px)) minmax(126px,152px)!important;
  align-items:center!important;
  gap:10px!important;
}
/* the results toolbar is explicitly NOT sticky — it scrolls with the cards */
.fso-idx-actions-row{
  position:static!important;
  display:flex!important;
  align-items:center!important;
  gap:16px!important;
  margin:18px 0 16px!important;
  flex-wrap:nowrap!important;
}

/* magnifier submit inside the search field (replaces the old Search button) */
.fso-idx-search-row .fso-idx-token-search{position:relative!important}
.fso-idx-search-row .fso-idx-main-search{padding-right:52px!important}
.fso-idx-main-search-go{
  position:absolute!important;right:0;top:0;bottom:0;z-index:2;
  width:46px!important;min-width:0!important;height:auto!important;
  display:flex!important;align-items:center;justify-content:center;
  padding:0!important;margin:0!important;
  border: 1px solid #dfdfdf !important;border-left:1px solid #e5e7eb!important;border-radius:0!important;
  background:#fff!important;color:#0f1b2d!important;cursor:pointer;
}
.fso-idx-main-search-go svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round}
.fso-idx-main-search-go:hover{background:#f4f4f4!important}
/* the old standalone primary Search button is gone from the markup; this
   keeps any cached page from rendering a stray full-width button */
.fso-idx-search-row .fso-idx-button-primary{display:none!important}

/* Save Search: in the bar on desktop, in the toolbar below 1180px */
.fso-idx-savesearch-btn{
  height:50px!important;min-height:0!important;
  display:inline-flex!important;align-items:center;justify-content:center;
  padding:0 18px!important;margin:0!important;
  border:1px solid #0f1b2d!important;border-radius:0!important;
  background:#0f1b2d!important;color:#fff!important;
  font-size:12px!important;font-weight:600!important;
  letter-spacing:.12em!important;text-transform:uppercase!important;
  white-space:nowrap;cursor:pointer;
}
.fso-idx-savesearch-btn:hover{background:#000!important;border-color:#000!important}
.fso-idx-savesearch-toolbar{display:none!important;margin-left:auto!important}

/* ---------- 2. Type / Status bar popovers ---------- */
.fso-idx-quick-filter-type,.fso-idx-quick-filter-status{position:relative}
.fso-idx-barpop-panel{min-width:262px;padding:16px 18px 18px}
.fso-idx-barpop-right{left:auto!important;right:0!important}
.fso-idx-barpop-panel .fso-idx-check-min{
  display:flex!important;align-items:center;gap:9px;
  padding:6px 0!important;margin:0!important;
  font-size:13.5px;font-weight:400;color:#1f2430;cursor:pointer;
}
.fso-idx-barpop-panel .fso-idx-check-min input{width:16px;height:16px;accent-color:#0f1b2d;margin:0}
.fso-idx-barpop-sep{border-top:1px solid #e5e7eb;margin:16px 0}
.fso-idx-pill-btn.is-set{border-color:#0f1b2d!important;background:#f4f4f4!important;font-weight:700!important}

/* ---------- 3. results toolbar ---------- */
.fso-idx-actions-row .fso-idx-summary{
  margin:0!important;order:2;
  font-weight:400!important;color:#6b7280!important;font-size:14px!important;
  white-space:nowrap;
}
.fso-idx-summary-short{display:none}
.fso-idx-sort-wrap{order:1;margin:0!important}
.fso-idx-actions-row .fso-idx-account-btn{order:3;margin-left:auto!important}
.fso-idx-actions-row .fso-idx-savesearch-toolbar{order:4}
.fso-idx-view-toggle{order:5;display:flex!important;gap:0!important;margin-left:12px!important}
.fso-idx-view-toggle .fso-idx-view-btn{
  height:48px;min-width:88px;border-radius:0;padding:0 24px;
  border:1px solid #0f1b2d!important;background:#fff;color:#0f1b2d;
  font-size:12.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
}
.fso-idx-view-toggle .fso-idx-view-btn + .fso-idx-view-btn{border-left:0!important}
.fso-idx-view-toggle .fso-idx-view-btn.is-active{background:#0f1b2d!important;color:#fff!important}

/* ---------- 4. card ---------- */
.fso-idx-card-image{position:relative;display:block}
/* status badge, top-left */
.fso-idx-card .fso-idx-card-badge{
  position:absolute;top:0;left:0;z-index:3;
  background:rgba(15,27,45,.88);color:#fff;
  padding:11px 20px;border-radius:0;
  font-size:10px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
}
/* open-house badge, top-right — the space the heart/Hide used to occupy */
.fso-idx-card-oh-badge{
  position:absolute;top:0;right:0;z-index:3;
  background:rgba(15,27,45,.88);color:#fff;
  padding:11px 20px;
  font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  white-space:nowrap;
}
/* Hide + Save are in the tools row now, NOT floating on the photo. This
   unsets the v0.3.48 absolute positioning and the hover-reveal. */
.fso-idx-card .fso-idx-hide-btn{
  position:static!important;top:auto;right:auto;
  opacity:1!important;border-radius:0!important;
  background:transparent!important;color:#0f1b2d!important;
  height:auto!important;line-height:1.2!important;padding:4px 2px!important;
  font-size:12.5px!important;font-weight:500!important;letter-spacing:.1em!important;
  display:inline-flex!important;align-items:center;gap:8px;
}
.fso-idx-card .fso-idx-hide-btn:hover{background:transparent!important;color:#000!important}
.fso-idx-card .fso-idx-fav-btn{
  position:static!important;top:auto;right:auto;
  width:auto!important;height:auto!important;border-radius:0!important;
  background:transparent!important;box-shadow:none!important;
  color:#0f1b2d!important;font-size:12.5px!important;font-weight:500!important;
  letter-spacing:.1em!important;text-transform:uppercase;
  display:inline-flex!important;align-items:center;gap:8px;
  padding:4px 2px!important;transition:none!important;
}
.fso-idx-card .fso-idx-fav-btn:hover{transform:none!important;color:#000!important}
.fso-idx-card .fso-idx-fav-btn.is-fav{color:#c8102e!important;background:transparent!important}
.fso-idx-card .fso-idx-fav-btn.is-fav .fso-idx-tool-ico{fill:#c8102e;stroke:#c8102e}
.fso-idx-tool-ico{width:18px;height:18px;flex:0 0 18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.fso-idx-card-tools{
  display:flex!important;align-items:center;gap:14px;
  padding:13px 16px!important;border-bottom:1px solid #e5e7eb;
}
.fso-idx-card-tools-right{display:flex;align-items:center;gap:20px;margin-left:auto}
.fso-idx-card .fso-idx-cmp-btn{letter-spacing:.1em!important;text-transform:uppercase!important}

/* .fso-idx-card-info grows so the stat row always sits on the bottom of the
   card, directly above View Listing — cards in the same row line up no
   matter how much open-house text each carries. */
.fso-idx-card-body{display:flex!important;flex-direction:column!important;padding:16px 16px!important}
.fso-idx-card-info{flex:1 1 auto}
.fso-idx-card-stat-row{margin:16px -16px 0!important;border-top:1px solid #e5e7eb}

/* open-house text: no box, no border, aligned with the rest of the body */
.fso-idx-card-open-house{
  margin-top:11px!important;padding:0!important;
  background:none!important;border:0!important;
  color:#0f1b2d!important;
  font-size:13px!important;font-weight:600!important;
  letter-spacing:.03em!important;text-transform:uppercase!important;
  line-height:1.65!important;
}
.fso-idx-card-open-house .oh-lead{display:block}
.fso-idx-card-open-house .oh-when{display:block;font-weight:500}

/* ---------- 5. tablet (<=1180px) ---------- */
@media (max-width:1180px){
  .fso-idx-search-row{
    grid-template-columns:minmax(200px,1fr) repeat(3,minmax(110px,168px))!important;
  }
  /* Beds / Baths / Status stay reachable through More */
  .fso-idx-search-row .fso-idx-quick-filter-beds,
  .fso-idx-search-row .fso-idx-quick-filter-baths,
  .fso-idx-search-row .fso-idx-quick-filter-status,
  .fso-idx-search-row .fso-idx-savesearch-btn{display:none!important}
  .fso-idx-actions-row .fso-idx-savesearch-toolbar{display:inline-flex!important}
}

/* ---------- 6. mobile (<=820px) ---------- */
@media (max-width:820px){
  .fso-idx-search-row{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:9px!important;padding:12px 0!important;
  }
  .fso-idx-search-row .fso-idx-token-search{grid-column:1/-1!important}
  .fso-idx-actions-row{gap:10px!important;flex-wrap:nowrap!important}
  .fso-idx-actions-row .fso-idx-summary{
    font-size:12.5px!important;letter-spacing:.1em;text-transform:uppercase;
  }
  .fso-idx-summary-long{display:none}
  .fso-idx-summary-short{display:inline}
  .fso-idx-actions-row .fso-idx-savesearch-toolbar{
    order:2;margin-left:auto!important;padding:0 20px!important;font-size:11px!important;
  }
  .fso-idx-sort-wrap{order:3}
  /* Grid/Map and the Sign In button are dropped on phones — the map view is
     not usable at this width and the theme's hamburger carries Account. */
  .fso-idx-view-toggle,
  .fso-idx-actions-row .fso-idx-account-btn{display:none!important}
  .fso-idx-card-oh-badge,.fso-idx-card .fso-idx-card-badge{padding:9px 14px}
}

/* v0.3.72 fix: "More" was still wearing the old beige/grey treatment
   (#f7f6f1 on #6b6f76) from the v0.2.x bar, so it read as a disabled
   control next to the white Price/Beds/Baths/Type/Status pills. Match the
   pills — it is one of them now. */
.fso-idx-search-row .fso-idx-filter-open{
  height:50px!important;
  background:#fff!important;
  color:#0f1b2d!important;
  border:1px solid #cfd4dc!important;
  border-radius:0!important;
  font-size:12px!important;
  font-weight:600!important;
  letter-spacing:.12em!important;
  text-transform:uppercase!important;
  padding:0 16px!important;
}
.fso-idx-search-row .fso-idx-filter-open:hover{border-color:#0f1b2d!important}
/* square the pills + Sort to match the design (no rounded corners) */
.fso-idx-search-row .fso-idx-pill-btn,
.fso-idx-app button.fso-idx-pill-btn,
.fso-idx-sort-wrap .fso-idx-sort-btn{border-radius:0!important;height:50px!important}
.fso-idx-search-row .fso-idx-main-search{border-radius:0!important;height:50px!important}
.fso-idx-search-row .fso-idx-token-search{border-radius:0!important}

/* ===================================================================
   v0.3.72 fix — override the PRE-0.3.72 mobile layout (@media 900px).

   That block turned .fso-idx-search-row and .fso-idx-actions-row into
   `display:contents` and hard-placed their children into a form-level
   2-column grid, and hid every .fso-idx-quick-filter under 900px. With
   the row collapsed to `display:contents` there is no box to make
   sticky and no grid to lay the pills out in, so the approved mobile
   design could not render at all. This restores real boxes.

   Must come AFTER that block (later wins at equal specificity), and the
   820px refinements must come after this one for the same reason.
   =================================================================== */
@media (max-width:900px){
  .fso-idx-filters{display:block!important}
  .fso-idx-search-row{
    display:grid!important;
    position:sticky!important;
    top:var(--rme-chrome,80px)!important;
    z-index:60;
    background:#fff;
    grid-template-columns:minmax(180px,1fr) repeat(3,minmax(88px,168px))!important;
    gap:10px!important;
    margin:0!important;
    min-height:0!important;
    padding:12px 0!important;
    align-items:center!important;
  }
  .fso-idx-actions-row{
    display:flex!important;
    grid-template-columns:none!important;
    align-items:center!important;
    margin:14px 0 12px!important;
    min-height:0!important;
  }
  /* Price + Type return to the bar; Beds/Baths/Status stay inside More */
  .fso-idx-search-row .fso-idx-quick-filter{display:none!important}
  .fso-idx-search-row .fso-idx-quick-filter-price,
  .fso-idx-search-row .fso-idx-quick-filter-type{display:block!important;position:relative!important}
  /* children are no longer placed into the old form grid */
  .fso-idx-search-row .fso-idx-token-search{
    grid-column:auto!important;grid-row:auto!important;
    height:50px!important;min-height:0!important;
    border:1px solid #c9c9c9!important;
    position:relative!important;box-sizing:border-box!important;
  }
  .fso-idx-search-row .fso-idx-main-search{
    height:48px!important;min-height:0!important;line-height:normal!important;
    font-size:14px!important;padding:0 18px!important;
  }
  .fso-idx-search-row .fso-idx-pill-btn{height:50px!important;font-size:11.5px!important;padding:0 12px!important}
  .fso-idx-search-row .fso-idx-filter-open{
    grid-column:auto!important;grid-row:auto!important;
    width:auto!important;height:50px!important;min-height:0!important;
    margin:0!important;padding:0 12px!important;
    border:1px solid #cfd4dc!important;border-radius:0!important;
    background:#fff!important;color:#0f1b2d!important;
    font-size:11.5px!important;letter-spacing:.1em!important;
  }
  .fso-idx-search-row .fso-idx-button-primary{display:none!important}
  /* summary back to an inline item, not a centred full-width row */
  .fso-idx-actions-row .fso-idx-summary{
    grid-column:auto!important;justify-self:auto!important;
    width:auto!important;text-align:left!important;
    margin:0!important;font-size:13px!important;
  }
  .fso-idx-sort-wrap{width:auto!important;margin:0!important}
  .fso-idx-sort-wrap .fso-idx-sort-btn{height:48px!important;min-width:100px!important}
  /* Grid|Map stays hidden below 900px — the map panel itself is display:none
     here (pre-existing), so a toggle would switch to an invisible pane. */
  .fso-idx-actions-row .fso-idx-savesearch-toolbar{display:inline-flex!important;margin-left:auto!important}
}

/* mobile refinements — after the 900px reset so these win */
@media (max-width:820px){
  .fso-idx-search-row{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:9px!important;
  }
  .fso-idx-search-row .fso-idx-token-search{grid-column:1/-1!important}
  .fso-idx-actions-row{gap:10px!important;flex-wrap:nowrap!important}
  .fso-idx-actions-row .fso-idx-summary{
    font-size:12px!important;letter-spacing:.08em!important;text-transform:uppercase!important;
    white-space:nowrap!important;
  }
  .fso-idx-summary-long{display:none!important}
  .fso-idx-summary-short{display:inline!important}
  .fso-idx-actions-row .fso-idx-savesearch-toolbar{
    order:2;margin-left:auto!important;padding:0 16px!important;font-size:10.5px!important;
  }
  .fso-idx-sort-wrap{order:3}
  .fso-idx-sort-wrap .fso-idx-sort-btn{min-width:88px!important;padding:0 10px!important;font-size:11px!important}
  .fso-idx-actions-row .fso-idx-account-btn{display:none!important}
}

/* v0.3.72 fix: the v0.2.x `@media (max-width:720px)` rule sets
   flex-direction:column on .fso-idx-search-row / .fso-idx-actions-row,
   which stacked Sort, the count and Save Search into a vertical column on
   phones. The row stays a row. */
@media (max-width:900px){
  .fso-idx-actions-row{flex-direction:row!important;align-items:center!important}
  .fso-idx-search-row{flex-direction:row!important}
}

/* ==========================================================================
   v0.3.82 — "search paused" notice (.fso-idx-notice)
   ==========================================================================
   The results-area state for an HTTP 429 from /search or /pins (see
   class-rme-idx-rate-limit.php and renderRateLimited() in rme-idx-search.js).
   It is NOT an error, so it must not look like .fso-idx-error's red box, and
   it is not the empty state, so it must not look like the bare grey
   .fso-idx-empty line either.

   Every value below is inherited from what the page already uses rather than
   invented:
     grid-column:1/-1, padding, text-align, muted colour  → shared with
       .fso-idx-loading / .fso-idx-empty / .fso-idx-error (line 15)
     border 1px solid var(--fso-idx-border)  → .fso-idx-map, .fso-idx-filters
     square corners                          → the whole current design; see
       the border-radius:0 overrides at 1875-1885, 3011, 3024, 3131-3144
     ink #0f1b2d                             → section "3. results toolbar"
       onward (view toggle, card tools, open-house text)
     body 14px / #6b7280                     → .fso-idx-actions-row
       .fso-idx-summary (line 3001)
     title 13px / 600 / uppercase            → .fso-idx-card-open-house (13/600
       uppercase) and .fso-idx-view-btn (12.5/600/.12em uppercase)
     divider #e5e7eb                         → .fso-idx-card-stat-row,
       .fso-idx-barpop-sep
     button geometry 48px / 0 24px / 12.5px / .12em / invert on hover
                                             → .fso-idx-view-toggle
       .fso-idx-view-btn + .is-active, copied exactly

   Meaning is carried by the icon, the heading and the sentence — not by
   colour. Nothing here is red, on purpose: this is a wait, not a fault.

   Layout: the notice sits inside .fso-idx-results (a 2-4 column grid), so
   grid-column:1/-1 makes it span the row. The filter bar, the map and the
   map's "search as I move" toggle are all outside .fso-idx-results and stay
   fully usable, which is the point — a visitor waits and retries in place. */
.fso-idx-notice{
  padding:48px 24px;
  border:1px solid var(--fso-idx-border);
  background:#fff;
}
.fso-idx-notice-ico{
  display:block;margin:0 auto 18px;
  width:32px;height:32px;
  fill:none;stroke:#0f1b2d;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;
}
.fso-idx-notice-title{
  margin:0 0 12px;
  color:#0f1b2d;
  font-size:13px;font-weight:600;line-height:1.3;
  letter-spacing:.12em;text-transform:uppercase;
}
/* 60ch keeps the line length readable, and means the paragraph reflows
   instead of overflowing when the page is zoomed to 200%. */
.fso-idx-notice-body{
  margin:0 auto;max-width:60ch;
  color:#6b7280;
  font-size:14px;font-weight:400;line-height:1.7;
}
.fso-idx-notice-retry{
  margin-top:24px;
  height:48px;min-width:88px;padding:0 24px;
  border:1px solid #0f1b2d;border-radius:0;
  background:#fff;color:#0f1b2d;
  font-family:inherit;font-size:12.5px;font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;
  cursor:pointer;
}
.fso-idx-notice-retry:hover:not(:disabled){background:#0f1b2d;color:#fff}
.fso-idx-notice-retry:focus-visible{outline:2px solid #0f1b2d;outline-offset:2px}
/* Disabled while the limiter is still refusing. opacity/cursor copied from
   .fso-idx-pagination button:disabled (line 15) so a dead button looks dead
   the same way everywhere. The reason is in the sentence above the button, not
   in this styling — the state is never signalled by colour alone. */
.fso-idx-notice-retry:disabled{opacity:.45;cursor:not-allowed}
@media (max-width:820px){
  .fso-idx-notice{padding:36px 18px}
  .fso-idx-notice-retry{width:100%}
}

/* ==========================================================================
   v0.4.5 — community / area pages (/communities/<st>/<city>/…)
   Rendered by RME_IDX_Community::markup(). The listing grid reuses
   .fso-idx-results / .fso-idx-card wholesale, so nothing below restyles a
   card — these rules cover only the page frame, the statistics grid and the
   neighbourhood index.
   Square corners throughout: the site's buttons and CTAs carry no radius.
   ========================================================================== */
.rme-idx-area{max-width:1280px;margin:0 auto;padding:32px 20px 64px;color:var(--fso-idx-text);--rme-idx-area-gap:72px}
.rme-idx-area h2{font-size:22px;font-weight:600;margin:0 0 16px}


.rme-idx-area-listings,.rme-idx-area-stats,.rme-idx-area-children{margin-bottom:var(--rme-idx-area-gap)}
.rme-idx-area-more{margin:24px 0 0}

/* CTAs. No border-radius anywhere here — deliberate, the site is hard-edged. */
.rme-idx-area-cta{display:inline-block;padding:14px 26px;background:var(--fso-idx-brand);color:#fff;
  font-weight:600;font-size:14px;letter-spacing:.3px;text-decoration:none;border:1px solid var(--fso-idx-brand)}
.rme-idx-area-cta:hover,.rme-idx-area-cta:focus{background:#b3141b;border-color:#b3141b;color:#fff}
.rme-idx-area-cta--ghost{background:transparent;color:var(--fso-idx-text);border-color:var(--fso-idx-border)}
.rme-idx-area-cta--ghost:hover,.rme-idx-area-cta--ghost:focus{background:var(--fso-idx-soft);border-color:var(--fso-idx-text);color:var(--fso-idx-text)}
.rme-idx-area-cta-row{display:flex;flex-wrap:wrap;gap:12px;padding-top:8px;margin-bottom:var(--rme-idx-area-gap)}

/* Statistics. Each cell carries its own sample size under the figure, because
   the figures are not measured over the same set — see stats_block(). */
.rme-idx-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--fso-idx-border);
  border:1px solid var(--fso-idx-border)}
.rme-idx-stat{background:#fff;padding:20px 18px;display:flex;flex-direction:column;gap:6px}
.rme-idx-stat-label{font-size:11.5px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--fso-idx-muted)}
.rme-idx-stat-value{font-size:26px;font-weight:600;line-height:1.1}
.rme-idx-stat-note{font-size:12.5px;color:var(--fso-idx-muted)}
.rme-idx-stat-foot{margin:14px 0 0;font-size:13px;line-height:1.6;color:var(--fso-idx-muted)}

/* Neighbourhood index — the crawl path from 1,424 city pages to the ~26,600
   neighbourhood ones, so it is a plain list of links on purpose. */
.rme-idx-area-childlist{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:2px 24px}
.rme-idx-area-childlist li{display:flex;justify-content:space-between;gap:12px;
  padding:9px 0;border-bottom:1px solid var(--fso-idx-border);font-size:14px}
.rme-idx-area-childlist a{color:var(--fso-idx-text);text-decoration:none}
.rme-idx-area-childlist a:hover{text-decoration:underline}
.rme-idx-area-childlist span{color:var(--fso-idx-muted);font-variant-numeric:tabular-nums}

@media (max-width:900px){
  .rme-idx-stat-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){
  .rme-idx-area{padding:24px 16px 48px;--rme-idx-area-gap:52px}
  .rme-idx-stat-grid{grid-template-columns:1fr}
  .rme-idx-stat-value{font-size:23px}
  .rme-idx-area-cta{display:block;text-align:center}
  .rme-idx-area-cta-row{display:block}
  .rme-idx-area-cta-row .rme-idx-area-cta+.rme-idx-area-cta{margin-top:10px}
}

/* v0.4.5 — the hand-written area copy, read from the legacy /communities/<slug>/
   page that already holds it: 6-13 paragraphs of real writing. Since 2026-10-01
   (owner) it leads the page, in two columns from 900px up and one below; it was
   one 70ch column, which left most of a desktop row empty. */
.rme-idx-area-about{margin-bottom:var(--rme-idx-area-gap)}
.rme-idx-area-prose{column-gap:56px}
@media (min-width:900px){.rme-idx-area-prose{columns:2}}
.rme-idx-area-prose p{margin:0 0 1.15em;font-size:16px;line-height:1.7;color:var(--fso-idx-text)}
.rme-idx-area-prose p:last-child{margin-bottom:0}
.rme-idx-area-prose a{color:var(--fso-idx-brand);text-decoration:underline}

/* ==========================================================================
   v0.4.6 — community / area pages, second pass
   Three columns of homes on a desktop area page, the census block, and the
   related-areas links at the foot. Square corners throughout, as above.
   ========================================================================== */

/* Owner request: three across on desktop, not two. The grid element is shared
   with the search page, whose own breakpoints drop it to two at 1280px — so
   these rules carry their own, at the widths the 1280px-wide area container
   actually needs rather than the ones the full-bleed search app needs. */
.rme-idx-area-listings .fso-idx-results{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
@media (max-width:1100px){
  .rme-idx-area-listings .fso-idx-results{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:660px){
  .rme-idx-area-listings .fso-idx-results{grid-template-columns:1fr}
}

/* Census demographics. Deliberately the SAME grid as the market statistics
   above it — it is the same kind of thing (a figure, a label) and giving it a
   second visual language would only suggest a second level of authority. The
   cells carry no sample-size note: every ACS figure here is one estimate over
   one geography, which the footnote states once. */
.rme-idx-area-demographics{margin-bottom:var(--rme-idx-area-gap)}

/* Related areas. A link list, not a card grid: this block exists so a visitor
   — and a crawler — can move sideways, and eighteen towns read faster as a
   column of names than as eighteen boxes. */
.rme-idx-area-related{margin-bottom:8px;border-top:1px solid var(--fso-idx-border);padding-top:40px}
.rme-idx-area-context{margin:0 0 22px;font-size:15px;line-height:1.6;color:var(--fso-idx-muted);max-width:70ch}
.rme-idx-area-context a{color:var(--fso-idx-brand);text-decoration:underline}
.rme-idx-linkcols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 32px;align-items:start}
.rme-idx-linkcol h3{font-size:11.5px;font-weight:600;letter-spacing:1px;text-transform:uppercase;
  color:var(--fso-idx-muted);margin:0 0 6px}
.rme-idx-linkcol ul{list-style:none;margin:0;padding:0}
.rme-idx-linkcol li{display:flex;justify-content:space-between;gap:12px;
  padding:8px 0;border-bottom:1px solid var(--fso-idx-border);font-size:14px}
.rme-idx-linkcol a{color:var(--fso-idx-text);text-decoration:none}
.rme-idx-linkcol a:hover{text-decoration:underline}
.rme-idx-linkcol span{color:var(--fso-idx-muted);font-variant-numeric:tabular-nums}

@media (max-width:900px){
  .rme-idx-linkcols{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:560px){
  .rme-idx-linkcols{grid-template-columns:1fr;gap:20px}
}

/* v0.4.6 — which census geography a Demographics block is actually for. Above
   the figures, not only under them: a reader takes the number off the tile, and
   a footnote arrives too late to change what it meant. */
.rme-idx-area-scope{margin:-6px 0 16px;font-size:13.5px;line-height:1.5;color:var(--fso-idx-muted);max-width:70ch}


/* v0.4.30 — the home valuation form ([rme_idx_home_valuation]) on a plain
   WordPress page. It reuses the detail page's contact-card look, but those rules
   are scoped to .rme-rail and its custom props to .fso-idx-detail-template, so
   on /home-valuation-report/ the fields ran together as inline text. Same
   values, repeated here; square corners, no new colours. */
.rme-valuation{max-width:760px;margin:0 auto;border:1px solid #e5e5e5;background:#fff;padding:24px;box-sizing:border-box}
.rme-valuation .rme-form-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}
.rme-valuation label{display:flex;flex-direction:column;gap:6px;margin:0;font-size:13px;font-weight:600;color:#111111}
.rme-valuation input,.rme-valuation select,.rme-valuation textarea{width:100%;box-sizing:border-box;border:1px solid #e5e5e5;border-radius:0;background:#fff;padding:11px 12px;font-family:inherit;font-size:13px;font-weight:300;color:#111111}
.rme-valuation input:focus,.rme-valuation select:focus,.rme-valuation textarea:focus{outline:1px solid #0f1b2d;border-color:#0f1b2d}
.rme-valuation .rme-span,.rme-valuation .fso-idx-lead-result,.rme-valuation .rme-btn{grid-column:1/-1}
.rme-valuation .fso-idx-lead-result{margin-top:0}
.rme-valuation .rme-btn{background:#0f1b2d;color:#fff}
@media (max-width:640px){
  .rme-valuation{padding:18px}
  .rme-valuation .rme-form-stack{grid-template-columns:1fr}
}

/* ---- v0.4.35: breadcrumbs on every community page (SPEC-communities-hub.md Part 4) ---- */
.rme-idx-crumbs{background:#f7f6f4;border-bottom:1px solid #e5e5e5}
.rme-idx-crumbs-in{max-width:1280px;margin:0 auto;padding:0 32px;display:flex;align-items:center;gap:18px;min-height:46px;box-sizing:border-box}
.rme-idx-crumbs-back{display:inline-flex;align-items:center;gap:8px;padding:12px 18px 12px 0;border-right:1px solid #d6d3cf;white-space:nowrap;
  font:600 11px/1 'Montserrat',sans-serif;letter-spacing:1.5px;text-transform:uppercase;text-decoration:none;color:#111}
.rme-idx-crumbs-back:before{content:'';width:7px;height:7px;border-left:1.5px solid;border-bottom:1.5px solid;transform:rotate(45deg)}
.rme-idx-crumbs-back:hover,.rme-idx-crumbs-back:focus{color:#c8102e}
.rme-idx-crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;
  font:500 11px/1.6 'Montserrat',sans-serif;letter-spacing:1.5px;text-transform:uppercase;color:#6b6b6b}
.rme-idx-crumbs li{margin:0;padding:0}
.rme-idx-crumbs li+li:before{content:'';display:inline-block;width:5px;height:5px;border-right:1.5px solid #b5b0aa;border-top:1.5px solid #b5b0aa;transform:rotate(45deg);margin:0 12px 1px 10px}
.rme-idx-crumbs li a{color:inherit;text-decoration:none}
.rme-idx-crumbs li a:hover,.rme-idx-crumbs li a:focus{color:#111;text-decoration:underline}
.rme-idx-crumbs li[aria-current]{color:#111;font-weight:600}
@media (max-width:520px){.rme-idx-crumbs-in{padding:0 16px}.rme-idx-crumbs ol{display:none}.rme-idx-crumbs-back{border-right:0;padding:15px 0}}

/* ---- v0.4.35: /communities/ hub and state pages (SPEC-communities-hub.md; mockups/communities-2026-09/) ---- */
.rme-idx-wrap{max-width:1280px;margin:0 auto;padding:0 32px;box-sizing:border-box}
.rme-idx-hero{position:relative;min-height:540px;display:flex;align-items:center;justify-content:center;text-align:center;color:#fff;background:#1c2330;padding:60px 16px;box-sizing:border-box}
.rme-idx-hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.rme-idx-hero:after{content:'';position:absolute;inset:0;background:linear-gradient(rgba(15,27,45,.42),rgba(15,27,45,.72))}
.rme-idx-hero-in{position:relative;z-index:1;width:100%;max-width:760px}
/* v0.4.63 (design audit I-6, owner 2026-10-08): the site's photo hero type. The eyebrow is the
   child theme's .rme-lbl; the H1 is one size, its bold word inline. */
.rme-idx-hero .rme-idx-hero-eyebrow{margin:0;color:#fff}
.rme-idx-hero h1{margin:16px 0 0;padding:0;color:#fff;font:300 clamp(30px,4.6vw,56px)/1.12 'Montserrat',sans-serif;letter-spacing:.08em;text-transform:uppercase}
.rme-idx-hero h1 b{font-weight:600}
.rme-idx-hero-sub{margin:16px auto 30px;padding:0;max-width:640px;color:rgba(255,255,255,.9);font:300 16px/1.6 'Poppins',sans-serif}
.rme-idx-csearch{position:relative;max-width:720px;margin:0 auto;text-align:left}
.rme-idx-csearch form{display:flex;margin:0}
.rme-idx-csearch input[type=search]{flex:1;min-width:0;height:58px;margin:0;border:0;border-radius:0;padding:0 20px;background:#fff;color:#111;font:400 15px 'Montserrat',sans-serif;-webkit-appearance:none;appearance:none;box-sizing:border-box}
.rme-idx-csearch button{height:58px;margin:0;border:0;border-radius:0;padding:0 30px;background:#0f1b2d;color:#fff;font:600 12.5px 'Montserrat',sans-serif;letter-spacing:2px;text-transform:uppercase;cursor:pointer}
.rme-idx-csearch button:hover,.rme-idx-csearch button:focus{background:#1d3150} /* v0.4.60 (I-1, owner): every Search button is navy */
.rme-idx-csearch-list{position:absolute;left:0;right:0;top:100%;z-index:20;margin:0;padding:0;list-style:none;background:#fff;color:#111;box-shadow:0 18px 40px rgba(0,0,0,.25);max-height:380px;overflow:auto}
.rme-idx-csearch-list[hidden]{display:none}
.rme-idx-csearch-list .grp{margin:0;padding:12px 18px 4px;color:#6b6b6b;font:600 10.5px 'Montserrat',sans-serif;letter-spacing:2px;text-transform:uppercase}
.rme-idx-csearch-list [role=option]{display:flex;justify-content:space-between;gap:12px;margin:0;padding:9px 18px;font:400 14px/1.4 'Montserrat',sans-serif;cursor:pointer}
.rme-idx-csearch-list [role=option][aria-selected=true],.rme-idx-csearch-list [role=option]:hover{background:#f7f6f4}
.rme-idx-csearch-list b{font-weight:600}
.rme-idx-csearch-list i{font-style:normal;color:#6b6b6b;font-size:12.5px;white-space:nowrap}
.rme-idx-hub-sec{padding:72px 0}
.rme-idx-hub-sec--wash{background:#f7f6f4}
.rme-idx-h2{text-align:center;margin:0 0 12px;padding:0;color:#111;font:300 28px/1.2 'Montserrat',sans-serif;letter-spacing:3px;text-transform:uppercase}
.rme-idx-h2 b{display:block;font-weight:700;font-size:38px;letter-spacing:2px}
.rme-idx-lede{text-align:center;max-width:720px;margin:0 auto 40px;padding:0;color:#6b6b6b}
.rme-idx-hub-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.rme-idx-hub-card{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;background:#1c2330;color:#fff;text-decoration:none}
.rme-idx-hub-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .3s}
.rme-idx-hub-card:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 45%,rgba(0,0,0,.72))}
.rme-idx-hub-card:hover img,.rme-idx-hub-card:focus img{transform:scale(1.04)}
.rme-idx-hub-card-txt{position:absolute;left:18px;right:18px;bottom:16px;z-index:1}
.rme-idx-hub-card-nm{display:block;font:600 15px/1.3 'Montserrat',sans-serif;letter-spacing:2px;text-transform:uppercase}
.rme-idx-hub-card-st{display:block;margin-top:2px;font-size:13px;color:rgba(255,255,255,.88)}
.rme-idx-spanels{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.rme-idx-spanel{position:relative;min-height:440px;padding:40px;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;background:#1c2330;color:#fff;box-sizing:border-box}
.rme-idx-spanel img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.rme-idx-spanel:before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(rgba(0,0,0,.15),rgba(0,0,0,.72))}
.rme-idx-spanel>h3,.rme-idx-spanel>p,.rme-idx-spanel>ul,.rme-idx-spanel>a{position:relative;z-index:2}
.rme-idx-spanel h3{margin:0;padding:0;color:#fff;font:700 34px/1.1 'Montserrat',sans-serif;letter-spacing:2px;text-transform:uppercase}
.rme-idx-spanel p{margin:8px 0 16px;padding:0;color:#fff;font-size:14px}
.rme-idx-spanel ul{list-style:none;margin:0 0 22px;padding:0;display:flex;flex-wrap:wrap;gap:6px 18px;font:500 13.5px 'Montserrat',sans-serif}
.rme-idx-spanel ul a{color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.5)}
.rme-idx-spanel .rme-idx-area-cta{align-self:flex-start}
.rme-idx-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:#e5e5e5;border:1px solid #e5e5e5}
.rme-idx-tile{background:#fff;padding:22px 20px;color:#111;text-decoration:none}
.rme-idx-tile:hover,.rme-idx-tile:focus{background:#f7f6f4}
.rme-idx-tile-nm,.rme-idx-rtile-nm{display:block;font:600 14px/1.3 'Montserrat',sans-serif;letter-spacing:1.5px;text-transform:uppercase}
.rme-idx-tile-st{display:block;margin-top:4px;font-size:13px;color:#6b6b6b}
.rme-idx-rtiles{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.rme-idx-rtile{position:relative;min-height:190px;display:flex;flex-direction:column;justify-content:flex-end;padding:20px;overflow:hidden;background:#1c2330;color:#fff;text-decoration:none;box-sizing:border-box}
.rme-idx-rtile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.rme-idx-rtile:before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(transparent 30%,rgba(0,0,0,.7))}
.rme-idx-rtile>span{position:relative;z-index:2}
.rme-idx-rtile-st{display:block;margin-top:4px;font-size:12.5px;color:rgba(255,255,255,.88)}
.rme-idx-az{position:sticky;top:var(--rme-idx-sticky-top,0);z-index:5;display:flex;flex-wrap:wrap;justify-content:center;gap:2px;margin:0 0 20px;padding:10px 0;background:#fff;border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}
.rme-idx-az a,.rme-idx-az span{width:30px;padding:4px 0;text-align:center;color:#111;font:600 12.5px 'Montserrat',sans-serif;text-decoration:none}
.rme-idx-az span{color:#c9c9c9}
/* Divi fixes its top and main header from 981px: 108px tall once scrolled (measured 2026-09-30). */
@media (min-width:981px){.rme-idx-az{--rme-idx-sticky-top:108px}.rme-idx-dir .rme-idx-county{scroll-margin-top:170px}}
.rme-idx-az a:hover,.rme-idx-az a:focus{background:#111;color:#fff}
.rme-idx-county{padding:26px 0;border-bottom:1px solid #e5e5e5;scroll-margin-top:70px}
.rme-idx-county header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 16px;margin-bottom:12px}
.rme-idx-county h3{margin:0;padding:0;color:#111;font:600 16px/1.3 'Montserrat',sans-serif;letter-spacing:2px;text-transform:uppercase}
.rme-idx-county h3 a{color:inherit;text-decoration:none}
.rme-idx-county h3 a:hover,.rme-idx-county h3 a:focus{border-bottom:1px solid}
.rme-idx-county header span{font-size:13px;color:#6b6b6b}
.rme-idx-county ul{list-style:none;margin:0;padding:0;columns:4;column-gap:32px;font-size:14px}
.rme-idx-county li{break-inside:avoid;display:flex;justify-content:space-between;gap:8px;margin:0;padding:3px 0}
.rme-idx-county li a{color:#111;font-weight:500;text-decoration:none}
.rme-idx-county li a:hover,.rme-idx-county li a:focus{color:#c8102e;text-decoration:underline}
.rme-idx-county li span{color:#6b6b6b;font-size:12.5px}
.rme-idx-county-none{margin:0;font-size:13.5px;color:#6b6b6b}
.rme-idx-results{list-style:none;max-width:720px;margin:0 auto;padding:0}
.rme-idx-results li{padding:10px 0;border-bottom:1px solid #e5e5e5}
.rme-idx-results a{font-weight:600;color:#111}
.rme-idx-results span{font-size:13px;color:#6b6b6b}
.rme-idx-hub-cta{justify-content:center}
@media (max-width:1100px){.rme-idx-hub-cards,.rme-idx-rtiles,.rme-idx-tiles{grid-template-columns:repeat(3,1fr)}.rme-idx-county ul{columns:3}}
@media (max-width:800px){.rme-idx-hub-cards,.rme-idx-rtiles,.rme-idx-tiles{grid-template-columns:repeat(2,1fr)}.rme-idx-spanels{grid-template-columns:1fr}.rme-idx-county ul{columns:2}
  .rme-idx-h2 b{font-size:28px}}
@media (max-width:520px){.rme-idx-wrap{padding:0 16px}.rme-idx-hub-cards,.rme-idx-rtiles,.rme-idx-tiles{grid-template-columns:1fr}.rme-idx-county ul{columns:1}
  .rme-idx-hero{min-height:460px}.rme-idx-hero h1{letter-spacing:.05em}.rme-idx-hero-sub{font-size:14px}
  .rme-idx-csearch button{padding:0 18px}.rme-idx-spanel{padding:24px;min-height:380px}.rme-idx-hub-sec{padding:52px 0}
  .rme-idx-az{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto}.rme-idx-az a,.rme-idx-az span{flex:0 0 30px}}

/* v0.4.58 (owner 2026-10-07: "the map to fit on the page and the bottom of the page not be out
   of view", as on Redfin, Zillow and remaxncsc.com). From 901 px, where map view exists, the list
   and the map fill the window under the search bar, and the list scrolls in its own column.
   --rme-split-top is the layout's offset from the top of the page, set by fitSplit() in
   rme-idx-search.js. The footer stays below the app and comes up once the list ends. Up to
   1280 px the map used to drop below every card; it now sits beside a one-column list, and
   the toolbar wraps to fit that column. */
@media (min-width:901px){
  .fso-idx-app[data-current-view="split"] .fso-idx-layout{height:calc(100vh - var(--rme-split-top,204px));height:calc(100dvh - var(--rme-split-top,204px));grid-template-rows:minmax(0,1fr);align-items:stretch}
  .fso-idx-app[data-current-view="split"] .fso-idx-results-panel{min-height:0;overflow-y:auto}
  .fso-idx-app[data-current-view="split"] .fso-idx-map-panel{position:relative;top:auto;min-height:0;align-self:stretch}
  .fso-idx-app[data-current-view="split"] .fso-idx-map{height:100%;min-height:0}
}
@media (min-width:901px) and (max-width:1280px){
  .fso-idx-app[data-current-view="split"] .fso-idx-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .fso-idx-app[data-current-view="split"] .fso-idx-results{grid-template-columns:minmax(0,1fr)}
  .fso-idx-app[data-current-view="split"] .fso-idx-actions-row{flex-wrap:wrap!important;row-gap:12px}
}

/* v0.4.60 (design audit, owner 2026-10-07).
   I-4: the house style is square. These controls still carried a radius. The office map,
   Mapbox popups and the gallery's round .rme-icon-btn stay as approved exceptions. */
.fso-idx-app .fso-idx-map-draw-btn,
.fso-idx-seg,
.fso-idx-filter-modal .fso-idx-input,
.fso-idx-modal-submit,.fso-idx-modal-cancel,
.fso-idx-account-panel,.fso-idx-account-tabs,.fso-idx-account-form input,
.fso-idx-account-submit,.fso-idx-account-signout,.fso-idx-account-close{border-radius:0!important}
/* I-10: one field style for the plugin's forms -- white, 1px #cfd4dc, square, 46px,
   Poppins 14px. Touch screens get 16px from the child theme (P-4). Search bars keep
   their own heights; they are a different component. */
.fso-idx-detail-template .rme-form-stack input:not([type=hidden]):not([name=website2]),
.fso-idx-detail-template .fso-idx-lead-form input:not([type=hidden]):not([name=website2]),
.fso-idx-account-form input,
.fso-idx-filter-modal .fso-idx-modal-label .fso-idx-input,
.fso-idx-filter-modal .fso-idx-modal-2col select.fso-idx-input{height:46px!important;box-sizing:border-box;border:1px solid #cfd4dc!important;background-color:#fff;color:#222;font-family:'Poppins',sans-serif;font-size:14px;font-weight:400;padding:0 14px!important}
.fso-idx-detail-template .rme-form-stack textarea,
.fso-idx-detail-template .fso-idx-lead-form textarea{box-sizing:border-box;border:1px solid #cfd4dc!important;background:#fff;color:#222;font-family:'Poppins',sans-serif;font-size:14px;font-weight:400;padding:12px 14px!important;min-height:96px}
/* P-3: 44px tap targets */
.fso-idx-account-close{width:44px!important;height:44px!important;line-height:44px!important;right:8px;top:8px}
/* I-11: the dialogs take focus on open; the focus ring belongs on their controls, not on the box */
.fso-idx-account-panel:focus,.fso-idx-filter-modal-panel:focus,.fso-modal-dialog:focus{outline:none}
/* P-3: the card's Compare / Save / Hide measured 17-26px tall at 375. On touch screens
   each gets an invisible 44px hit area; the row looks the same. */
@media (pointer:coarse){
  .fso-idx-card-tools button{position:relative}
  .fso-idx-card-tools button::after{content:'';position:absolute;left:-6px;right:-6px;top:50%;height:44px;transform:translateY(-50%)}
}
