:root{
  --cream:#F6F1E7; --panel:#FDFBF5; --ink:#21302A; --ink-soft:#5C6B62;
  --euca:#2F6B4F; --euca-deep:#1E4A36; --terra:#A85A2F; --terra-soft:#EAD9C9;
  --line:#E3DBCB; --rose:#B05A7A; --slate:#54749E; --grey:#766E60;
  --card-sh:0 1px 2px rgba(33,48,42,.06),0 6px 18px -8px rgba(33,48,42,.14);
  --env-bar:26px;   /* non-prod banner height; see #env-banner below */
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:'Karla',sans-serif;color:var(--ink);background:var(--cream);
  background-image:radial-gradient(ellipse 80% 60% at 70% -10%,rgba(47,107,79,.07),transparent),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='.025'/%3E%3C/svg%3E");
  display:flex;height:100vh;height:100dvh;overflow:hidden;
}
/* ---------------- non-prod environment banner ----------------
   Emitted by server._env_banner() only when KNEAD_ENV != prod (staging plan
   Part 4), so on prod nothing here matches anything.

   Fixed rather than in flow: body is display:flex with a fixed-width #rail and
   a flex:1 #map, so a third child in that row would render as a squeezed
   vertical column, not a bar. The rail header is pushed down by the bar's
   height so the wordmark stays visible; the map's top edge needs no offset
   because the zoom control sits bottomright (map.js) and Leaflet's attribution
   is bottom-right too. z-index clears Leaflet's control panes (max 1000). */
#env-banner{
  position:fixed;top:0;left:0;right:0;z-index:1200;height:var(--env-bar);
  display:flex;align-items:center;justify-content:center;
  background:#8A2E2E;color:#FBF8F1;
  font-size:11.5px;font-weight:700;letter-spacing:.08em;
}
#env-banner ~ #rail header{padding-top:calc(13px + var(--env-bar))}

/* ---------------- rail ---------------- */
#rail{width:398px;min-width:398px;display:flex;flex-direction:column;height:100%;
  border-right:1px solid var(--line);background:var(--panel)}
header{padding:13px 22px 10px;border-bottom:1px solid var(--line)}
.h-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.h-right{display:flex;align-items:center;gap:8px;flex-shrink:0}
.acct{display:flex;align-items:center;gap:8px}
.acct:empty{display:none}
.acct-btn{display:inline-block;padding:4px 12px;border-radius:99px;background:var(--euca-deep);color:#FBF8F1;
  font-size:12px;font-weight:600;text-decoration:none;white-space:nowrap;line-height:1.5}
.acct-btn:hover{background:var(--euca)}
.acct-link{font-size:11.5px;color:var(--grey);text-decoration:none;white-space:nowrap;border-bottom:1px dotted var(--grey)}
.acct-link:hover{color:var(--euca-deep);border-bottom-color:var(--euca)}
.wordmark{font-family:'Fraunces',serif;font-weight:700;font-size:24px;letter-spacing:-.5px;color:var(--euca-deep)}
.wordmark em{font-style:italic;color:var(--terra)}
/* "Knead. health" wordmark (Sep 2026): "health" sits under "Knead.", right-aligned
   under the period, in Fraunces 400 italic at 70% of the wordmark size. Sizes are in
   em so every existing .wordmark / .sf-wordmark font-size rule still scales both lines. */
.wordmark,.sf-wordmark{display:inline-flex;flex-direction:column;align-items:flex-end;line-height:1}
.kh-sub{font-family:'Fraunces',serif;font-weight:400;font-style:italic;font-size:.7em;letter-spacing:0;
  color:var(--terra);margin-top:-.04em;margin-right:-.02em}
.tagline{font-size:12px;color:var(--ink-soft);margin-top:1px}
/* ---------------- filters ---------------- */
#f-wrap{flex-shrink:0;position:relative}
#f-toggle{display:flex;align-items:center;gap:9px;width:100%;padding:12px 22px;
  border:none;border-bottom:1px solid var(--line);background:transparent;cursor:pointer;
  font-family:'Karla';font-size:10.5px;font-weight:700;letter-spacing:.13em;
  text-transform:uppercase;color:var(--ink-soft);flex-shrink:0}
#f-toggle:hover{color:var(--euca-deep)}
#f-active{flex:1;min-width:0;text-align:left;font-size:12px;font-weight:600;
  letter-spacing:0;text-transform:none;color:var(--terra);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#f-toggle .chev{flex-shrink:0;transition:transform .2s}
#f-toggle.open .chev{transform:rotate(180deg)}
#filters.closed{display:none}
#filters{padding:12px 22px 14px;border-bottom:1px solid var(--line);overflow-y:auto;flex-shrink:0;max-height:40vh}
.f-label{font-size:10.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;
  color:var(--ink-soft);margin:11px 0 6px}
.f-label:first-child{margin-top:0}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{font-family:'Karla';font-size:14px;font-weight:600;padding:10px 14px;min-height:44px;border-radius:99px;
  border:1px solid var(--line);background:transparent;color:var(--ink-soft);cursor:pointer;
  transition:all .15s}
.chip:hover{border-color:var(--euca);color:var(--euca-deep)}
.chip.on{background:var(--euca-deep);border-color:var(--euca-deep);color:#FBF8F1}
.chip.on.f-chip{background:var(--rose);border-color:var(--rose)}
/* dual time slider */
.range-wrap{position:relative;height:30px;margin:4px 2px 0}
.range-wrap input[type=range]{position:absolute;left:0;top:8px;width:100%;-webkit-appearance:none;
  appearance:none;background:none;pointer-events:none;height:14px}
.range-wrap input::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;width:17px;height:17px;
  border-radius:50%;background:var(--euca-deep);border:2.5px solid var(--panel);
  box-shadow:0 1px 4px rgba(33,48,42,.4);cursor:grab}
.range-wrap input::-moz-range-thumb{pointer-events:auto;width:13px;height:13px;border-radius:50%;
  background:var(--euca-deep);border:2.5px solid var(--panel);box-shadow:0 1px 4px rgba(33,48,42,.4);cursor:grab}
.range-track{position:absolute;top:13px;left:0;right:0;height:4px;border-radius:4px;background:var(--line)}
.range-fill{position:absolute;top:13px;height:4px;border-radius:4px;background:var(--euca)}
.range-val{font-size:13px;font-weight:700;color:var(--euca-deep);text-align:center;margin-top:1px}
.single-range{width:100%;-webkit-appearance:none;height:4px;border-radius:4px;background:var(--line);margin:10px 0 2px}
.single-range::-webkit-slider-thumb{-webkit-appearance:none;width:17px;height:17px;border-radius:50%;
  background:var(--euca-deep);border:2.5px solid var(--panel);box-shadow:0 1px 4px rgba(33,48,42,.4);cursor:grab}
.single-range::-moz-range-thumb{width:13px;height:13px;border-radius:50%;background:var(--euca-deep);
  border:2.5px solid var(--panel);cursor:grab}
.hint{font-size:13px;color:var(--grey);margin-top:5px;line-height:1.45}
.hint b{color:var(--terra)}
#mode-hint{padding:0 22px}
#mode-hint:empty{display:none}
.row2{display:flex;gap:18px}.row2>div{flex:1}

#loc-note.err{color:#8A2E2E}
/* ---------------- results ---------------- */
#meta{padding:10px 22px;font-size:12.5px;color:var(--ink-soft);display:flex;align-items:center;
  justify-content:space-between;border-bottom:1px solid var(--line)}
#meta select{font-family:'Karla';font-size:16px;font-weight:600;color:var(--euca-deep);
  border:none;background:transparent;cursor:pointer}
#count b{color:var(--terra);font-size:15px;font-family:'Fraunces',serif}
#list{flex:1;overflow-y:auto;padding:12px 16px 24px}
.concern-match-note{margin:0 4px 12px;color:var(--ink-soft);font-size:13px;line-height:1.45}
.card{position:relative;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;
  margin-bottom:9px;box-shadow:var(--card-sh);cursor:pointer;transition:transform .14s, box-shadow .14s}
.card:not(.skeleton){display:grid;grid-template-columns:56px minmax(0,1fr) auto;column-gap:10px;align-items:start}
/* Entrance animation on the FIRST paint only. render() rewrites #list
   wholesale, so every card is a new node every time — an unconditional
   animation here replays across the whole list on each background refresh and
   each filter change, which reads as the page flashing rather than as motion. */
#list.first-paint .card{animation:rise .3s both}
.card:hover{transform:translateY(-1.5px);box-shadow:0 2px 4px rgba(33,48,42,.08),0 12px 26px -10px rgba(33,48,42,.22)}
@keyframes rise{from{opacity:0;transform:translateY(7px)}to{opacity:1}}
.t-fresh{font-size:11px;font-weight:600;color:var(--euca);white-space:nowrap}
.t-fresh.warn{color:#8A5320}
.t-fresh.stale{color:#8A2E2E}
/* the map-popup "Book Now →" link; the card chips and the sheet's Continue
   share the class for the click delegate and restyle themselves below */
.book{margin-top:9px;display:inline-block;font-size:12.5px;font-weight:700;color:#FBF8F1;
  background:var(--terra);padding:12px 18px;border-radius:8px;text-decoration:none;transition:background .15s}
.book:hover{background:#8E4A24}
.empty{padding:40px 20px;text-align:center;color:var(--ink-soft)}
.empty .big{font-family:'Fraunces',serif;font-size:21px;color:var(--euca-deep);margin-bottom:8px}
.empty-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:14px}
.relax-btn{font-family:'Karla';font-size:14px;font-weight:600;padding:10px 16px;min-height:44px;
  border-radius:99px;border:1.5px solid var(--euca);background:transparent;color:var(--euca-deep);
  cursor:pointer;transition:all .15s}
.relax-btn:hover{background:var(--euca-deep);border-color:var(--euca-deep);color:#FBF8F1}
#more{display:block;width:100%;padding:9px;margin-top:4px;border:1px dashed var(--line);
  border-radius:10px;background:none;font-family:'Karla';font-weight:700;font-size:12.5px;
  color:var(--ink-soft);cursor:pointer}
#more:hover{color:var(--euca-deep);border-color:var(--euca)}
/* ---------------- map ---------------- */
#map{flex:1;height:100%}
.leaflet-container{background:#EFEAE0;font-family:'Karla'}
.pin{background:var(--euca-deep);color:#FBF8F1;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-weight:700;font-family:'Karla';border:2.5px solid #FBF8F1;
  box-shadow:0 2px 8px rgba(33,48,42,.35);transition:transform .12s}
.pin:hover{transform:scale(1.12)}
.pin.lit{background:var(--terra)}
.pop .p-clinic{font-family:'Fraunces',serif;font-weight:600;font-size:15px;color:var(--euca-deep)}
.pop .p-addr{font-size:11.5px;color:var(--ink-soft);margin:2px 0 7px}
.pop .p-slot{font-size:12.5px;padding:3px 0;border-top:1px dashed var(--line)}
.pop .p-slot b{color:var(--euca-deep)}
/* Plain links in a popup, and deliberately NOT the "Book Now" button: .book
   paints light text on a terra background, and this rule outranks it (0,1,1
   beats 0,1,0), so without the :not() the button renders terra-on-terra and
   the label is invisible. Its other two properties are already on .book. */
.pop a:not(.book){color:var(--terra);font-weight:700;text-decoration:none}
/* ---------------- address search bar ---------------- */
#addr-form{display:flex;gap:6px;padding:9px 22px 0;flex-shrink:0}
/* 16px is the floor that stops iOS Safari zooming the viewport on focus. It's
   engine behaviour, not viewport-width behaviour — an iPad in landscape is
   >1024px and still zooms — so 16px is the DEFAULT here and only a device with
   a real mouse opts down to something denser (see the fine-pointer block). */
#addr-q{flex:1;min-width:0;padding:7px 11px;border:1px solid var(--line);border-radius:9px;
  background:#fff;font-family:'Karla';font-size:16px;color:var(--ink)}
#addr-q:focus{outline:2px solid var(--euca);border-color:var(--euca)}
.sf-location-control,.sf-address-form,#addr-form{position:relative}
.location-suggestions{position:absolute;z-index:1200;top:100%;left:0;right:0;max-height:300px;overflow:auto;background:#fff;border:1px solid #CFC5B2;border-radius:10px;box-shadow:0 12px 28px #16372826;padding:5px}
.location-suggestions[hidden]{display:none}
/* The list is appended to forms whose own rules target generic children and
   buttons (e.g. .sf-address-form>div is a flex row, .sf-address-form button is
   a green Search button). These scoped rules keep it a plain vertical list. */
.sf-address-form>div.location-suggestions:not([hidden]){display:block}
.location-suggestions .location-suggestion{display:block;width:100%;min-height:44px;margin:0;border:0;border-radius:7px;
  padding:8px 10px;background:#fff;color:#253b30;text-align:left;font:inherit;font-weight:400;cursor:pointer}
.location-suggestions .location-suggestion:hover,.location-suggestions .location-suggestion[aria-selected="true"]{background:#edf5ef}
.location-suggestion{display:block;width:100%;min-height:44px;text-align:left;background:#fff;border:0;border-radius:7px;padding:8px 10px;color:#253b30;cursor:pointer;font:inherit}
.location-suggestion strong,.location-suggestion small{display:block}
.location-suggestion strong{font-size:14px;font-weight:600;line-height:1.3}
.location-suggestion strong mark{background:#FBEFB5;color:inherit;border-radius:2px;padding:0 1px}
.location-suggestion small{margin-top:2px;line-height:1.3}
.location-suggestion small,.location-suggestions-credit{font-size:12px;color:#617268}
.location-suggestion:hover,.location-suggestion[aria-selected="true"]{background:#edf5ef}
.location-suggestion:focus-visible{outline:2px solid #A85A2F}
.location-suggestion.is-outside strong{color:#5C6B62}
.location-suggestion.location-suggestion-escape{margin-top:4px;border-top:1px solid #E3DBCB;border-radius:0 0 7px 7px}
.location-suggestion.location-suggestion-escape strong{color:#2F6B4F}
.location-suggestion.location-suggestion-escape strong::after{content:' ›'}
.location-suggestion .location-suggestion-tag{display:inline-block;margin-top:4px;padding:1px 7px;border-radius:9px;background:#F6E7DC;color:#8A4A26;font-size:11px;font-weight:600}
.location-suggestions-status{margin:5px 8px;color:#52685b;font-size:13px}
.location-suggestions-credit{display:block;padding:5px 10px}
#search-flow.sf-popover-open .sf-search-card:has(.location-suggestions:not([hidden])){z-index:5}
.sf-results-edit .sf-desktop-popover#sf-location .location-suggestions{position:static;box-shadow:none;margin-top:6px}
#search-flow .sf-screen:not(.sf-desktop-popover) .location-suggestions{position:relative;top:auto;margin-top:7px}
.location-suggestions.location-suggestions-inline{position:static;max-height:none;overflow:visible;box-shadow:none;border:0;border-bottom:1px solid #E3DBCB;border-radius:0;padding:0 0 8px;margin:0 0 8px}
.location-suggestions-inline .location-suggestion{min-height:44px}
#sf-map-pick-cancel{position:fixed;z-index:1050;top:24px;left:50%;transform:translateX(-50%);min-height:48px;padding:0 18px;border:1px solid #CFC5B2;border-radius:24px;background:#fff;color:#244d39;font:700 14px 'Karla';box-shadow:0 5px 18px #16372826;cursor:pointer}
#sf-map-pick-cancel[hidden]{display:none}
#addr-go{padding:12px 16px;border:none;border-radius:9px;background:var(--euca-deep);
  color:#FBF8F1;font-family:'Karla';font-weight:700;font-size:12.5px;cursor:pointer;
  transition:opacity .15s}
#addr-go:hover{opacity:.88}
#addr-go:disabled{opacity:.55;cursor:default}

/* ---------------- out-of-area coverage banner ---------------- */
#coverage-note{position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:950;
  display:flex;align-items:flex-start;gap:10px;width:min(440px,calc(100% - 24px));
  padding:12px 14px;background:var(--panel);border:1px solid var(--line);border-radius:12px;
  box-shadow:0 6px 24px -6px rgba(33,48,42,.45);font-size:13px;color:var(--ink-soft);
  line-height:1.45;animation:coverage-rise .25s both}
@keyframes coverage-rise{from{opacity:0;transform:translate(-50%,7px)}
  to{opacity:1;transform:translate(-50%,0)}}
#coverage-note[hidden]{display:none}
#coverage-note b{display:block;font-family:'Fraunces',serif;font-size:15px;
  color:var(--euca-deep);margin-bottom:2px}
#coverage-navigate{display:block;min-height:36px;margin:10px 0 0;padding:0 12px;border:0;border-radius:8px;
  background:var(--euca-deep);color:#fff;font:700 12px 'Karla',sans-serif;cursor:pointer}
#coverage-navigate:hover{background:var(--euca)}
#coverage-navigate:focus-visible{outline:2px solid var(--terra);outline-offset:3px}
#coverage-x{border:none;background:none;font-size:20px;color:var(--grey);
  cursor:pointer;line-height:1;padding:0;margin-left:auto;flex-shrink:0;
  min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}
#coverage-x:hover{color:var(--ink)}

/* ---------------- "Use my location" map pill ---------------- */
#locate-cta{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);z-index:900;
  display:flex;align-items:center;gap:8px;padding:10px 18px;border:none;border-radius:999px;
  background:var(--euca-deep);color:#FBF8F1;font-family:'Karla';font-weight:700;
  font-size:13.5px;cursor:pointer;box-shadow:0 3px 14px rgba(33,48,42,.4);
  transition:background .15s}
#locate-cta:hover{background:#2F6B4F}
#locate-cta[hidden]{display:none}
#locate-cta svg{display:block}
#locate-cta.spinning svg{animation:spin .7s linear infinite}

/* ---------------- locate-me map button ---------------- */
#locate-btn{position:absolute;bottom:90px;right:10px;z-index:900;
  width:48px;height:48px;border-radius:12px;border:none;cursor:pointer;
  background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.2);
  display:flex;align-items:center;justify-content:center;
  transition:background .15s}
#locate-btn:hover{background:#f4f4f4}
#locate-btn.active{background:#EAF2EC}
#locate-btn svg{display:block}
#locate-btn.spinning svg{animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.loc-status{font-size:11.5px;color:var(--ink-soft);padding:6px 22px 0;flex-shrink:0}
.loc-status:empty{display:none}
.loc-status.err{color:#8A2E2E}

/* ---------------- signup funnel ---------------- */
#fu-overlay{position:fixed;inset:0;z-index:2000;background:rgba(33,48,42,.45);
  display:flex;align-items:center;justify-content:center;padding:18px}
#fu-overlay[hidden]{display:none}
#fu-modal{position:relative;width:100%;max-width:390px;background:var(--panel);
  border:1px solid var(--line);border-radius:16px;padding:26px 24px 20px;
  box-shadow:0 8px 40px -8px rgba(33,48,42,.4);animation:rise .25s both}
#fu-x{position:absolute;top:10px;right:14px;border:none;background:none;
  font-size:22px;color:var(--grey);cursor:pointer;line-height:1;
  min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}
#fu-x:hover{color:var(--ink)}
.fu-title{font-family:'Fraunces',serif;font-weight:700;font-size:22px;
  color:var(--euca-deep);letter-spacing:-.3px}
.fu-sub{font-size:13.5px;color:var(--ink-soft);margin:6px 0 14px;line-height:1.5}
#fu-modal input[type=email],#fu-modal input[type=tel],#fu-modal input[inputmode=numeric]{
  width:100%;padding:10px 12px;margin-bottom:8px;border:1px solid var(--line);
  border-radius:9px;background:#fff;font-family:'Karla';font-size:16px;color:var(--ink)}
#fu-modal input:focus{outline:2px solid var(--euca);border-color:var(--euca)}
.fu-google{margin:2px 0 4px}
.fu-gbtn{display:flex;justify-content:center;min-height:44px}
.fu-or{display:flex;align-items:center;gap:10px;margin:12px 0 10px;
  font-size:12px;color:var(--ink-soft)}
.fu-or::before,.fu-or::after{content:"";flex:1;border-top:1px solid var(--line)}
.fu-consent{display:flex;gap:8px;align-items:flex-start;font-size:12px;
  color:var(--ink-soft);margin:2px 0 12px;line-height:1.4;cursor:pointer}
.fu-consent input{margin-top:2px}
.fu-btn{display:block;width:100%;padding:10px 15px;border:none;border-radius:9px;
  background:var(--terra);color:#FBF8F1;font-family:'Karla';font-weight:700;
  font-size:13.5px;cursor:pointer;transition:background .15s}
.fu-btn:hover{background:#8E4A24}
.fu-btn.small{width:auto;padding:6px 13px;font-size:12.5px}
.fu-hint{font-size:12px;color:var(--grey);margin-top:8px;text-align:center}
.fu-err{font-size:12.5px;font-weight:600;color:#8A2E2E;margin-top:8px;min-height:0}
.fu-err:empty{display:none}
.fu-fine{font-size:10.5px;color:var(--grey);margin-top:12px;line-height:1.45}
.fu-fine a{color:var(--ink-soft)}
#fu-banner{position:fixed;bottom:14px;right:14px;z-index:1500;display:flex;
  align-items:center;gap:12px;max-width:420px;padding:11px 14px;
  background:var(--panel);border:1px solid var(--line);border-radius:12px;
  box-shadow:var(--card-sh);font-size:12.5px;color:var(--ink-soft);animation:rise .3s both}
#fu-banner[hidden]{display:none}
#fu-banner-x{border:none;background:none;font-size:18px;color:var(--grey);
  cursor:pointer;line-height:1;padding:0}
.fu-cta{margin-top:10px;padding:14px;border:1px dashed var(--line);border-radius:12px;
  font-size:12.5px;color:var(--ink-soft);line-height:1.5;text-align:center}
.fu-cta b{display:block;font-family:'Fraunces',serif;font-size:15px;
  color:var(--euca-deep);margin-bottom:3px}
.fu-cta p{margin:4px 0 0;font-size:12.5px}
.fu-cta .fu-btn{width:auto;margin:8px auto 0;padding:7px 16px;font-size:12.5px}
.fu-inline-sub{display:flex;gap:0.5rem;margin-top:0.75rem}
.fu-inline-sub input[type="email"]{flex:1;padding:7px 10px;border:1.5px solid var(--line);
  border-radius:8px;font-family:'Karla',sans-serif;font-size:13px;color:var(--ink);background:#fff}
.fu-inline-sub input[type="email"]:focus{border-color:var(--euca);outline:none}
.fu-inline-sub input[type="email"]:disabled{opacity:.6;cursor:default}
.fu-inline-sub .fu-btn{margin:0;white-space:nowrap}
.fu-inline-sub .fu-btn:disabled{opacity:.6;cursor:default}
.fu-alerts-list{margin-bottom:12px;max-height:40vh;overflow-y:auto}
.fu-alert{display:flex;align-items:center;gap:8px;padding:9px 10px;margin-bottom:6px;
  border:1px solid var(--line);border-radius:10px;background:#fff;font-size:12.5px;color:var(--ink)}
.fu-alert.off{color:var(--grey);background:transparent}
.fu-alert span{flex:1;min-width:0;line-height:1.4}
.fu-alert em{font-style:normal;color:var(--grey)}
.fu-alert button{border:1px solid var(--line);background:transparent;border-radius:7px;
  padding:4px 9px;font-family:'Karla';font-size:12px;font-weight:700;color:var(--ink-soft);cursor:pointer}
.fu-alert button:hover{color:var(--euca-deep);border-color:var(--euca)}
.fu-alert button[data-act=delete]{padding:2px 8px;font-size:15px;line-height:1}

/* ---------------- chip bar (applied filters) ---------------- */
#chip-bar{display:flex;gap:8px;padding:8px 22px;
  flex-shrink:0;align-items:center;border-bottom:1px solid var(--line)}
/* pills scroll; the Filters button stays pinned and always visible */
#applied-pills{display:flex;gap:6px;flex:1 1 auto;min-width:0;overflow-x:auto;
  scrollbar-width:none;-webkit-overflow-scrolling:touch}
#applied-pills::-webkit-scrollbar{display:none}
.applied-pill{display:inline-flex;align-items:center;gap:5px;padding:0 12px;
  min-height:44px;border-radius:99px;background:var(--euca-deep);color:#FBF8F1;
  font-family:'Karla';font-size:13px;font-weight:600;border:none;cursor:pointer;
  white-space:nowrap;flex-shrink:0;transition:opacity .15s}
.applied-pill:hover{opacity:.85}
.applied-pill .pill-x{font-size:14px;opacity:.6;line-height:1}
.applied-pill.need-pill{background:var(--rose)}
#filter-fab{display:inline-flex;align-items:center;gap:6px;padding:0 14px;
  min-height:44px;margin-left:auto;border-radius:99px;border:1.5px solid var(--euca);
  background:#EAF2EC;color:var(--euca-deep);font-family:'Karla';font-size:13px;
  font-weight:700;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:all .15s}
#filter-fab:hover{background:var(--euca-deep);border-color:var(--euca-deep);color:#FBF8F1}

/* ---------------- filter panel ---------------- */
#filter-panel{padding:12px 22px 14px;border-bottom:1px solid var(--line);
  overflow-y:auto;flex-shrink:0;max-height:50vh}
#filter-panel[hidden]{display:none}
#fp-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
#fp-close{border:none;background:none;font-size:24px;color:var(--grey);cursor:pointer;
  min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}
#fp-close:hover{color:var(--ink)}
.fp-title{font-family:'Fraunces',serif;font-weight:700;font-size:18px;color:var(--euca-deep)}
#fp-reset{font-family:'Karla';font-size:13px;font-weight:600;color:var(--terra);
  background:none;border:none;cursor:pointer;padding:8px}
.fp-section{margin-top:16px}
.fp-section:first-child{margin-top:0}
.fp-help{margin:5px 0 12px;color:var(--ink-soft);font-size:12px;line-height:1.45}
.fp-length-chips{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.fp-length-chips .chip{min-width:0;padding:8px 6px;border:1px solid #CFC5B2;border-radius:9px;background:#fff;color:var(--ink);font-size:13px;text-align:center}
.fp-length-chips .chip.on{border:2px solid #2F6B4F;background:#EDF2EB;color:#1E4A36;padding:7px 5px}
.fp-length-chips .chip:focus-visible{outline:2px solid var(--terra);outline-offset:3px}
.fp-select{width:100%;padding:12px 40px 12px 14px;min-height:48px;border:1.5px solid var(--line);
  border-radius:12px;background:#fff;font-family:'Karla';font-size:16px;font-weight:600;
  color:var(--ink);cursor:pointer;-webkit-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23766E60' stroke-width='3' stroke-linecap='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center}
.fp-select:focus{outline:2px solid var(--euca);border-color:var(--euca)}
.fp-select.has-value{border-color:var(--euca);color:var(--euca-deep)}
.fp-time-select{width:auto;flex:1;min-width:0}
.time-presets{display:flex;gap:8px;margin-bottom:10px}
.time-preset{flex:1;padding:8px 6px;min-height:44px;border-radius:12px;
  border:1.5px solid var(--line);background:transparent;font-family:'Karla';
  font-size:13px;font-weight:600;color:var(--ink-soft);cursor:pointer;
  transition:all .15s;text-align:center;line-height:1.3}
.time-preset:hover{border-color:var(--euca);color:var(--euca-deep)}
.time-preset.on{background:var(--euca-deep);border-color:var(--euca-deep);color:#FBF8F1}
.time-preset small{display:block;font-size:10px;font-weight:500;opacity:.7;margin-top:2px}
.time-select-row{display:flex;gap:8px;align-items:center}
.time-sep{font-size:14px;font-weight:700;color:var(--grey);flex-shrink:0}
#fp-footer{padding:10px 0 0;border-top:1px solid var(--line);margin-top:14px}
#fp-apply{display:block;width:100%;padding:14px;border:none;border-radius:12px;
  background:var(--euca-deep);color:#FBF8F1;font-family:'Karla';font-weight:700;
  font-size:15px;cursor:pointer;transition:background .15s}
#fp-apply:hover{background:var(--euca)}

/* ---------------- result card (docs/card-redesign.md) ----------------
   photo · identity/details · horizontally scrolling availability */
.card-media{grid-column:1;grid-row:1;width:56px;height:56px;overflow:hidden;display:grid;place-items:center;
  align-self:start;border:1px solid var(--line);background:var(--cream);color:var(--euca-deep);object-fit:cover}
.card-media.is-practitioner,.card-media-fallback{border-radius:50%}
.card-media.is-clinic{border-radius:10px}
.card-media-fallback{font-family:'Fraunces',serif;font-size:17px;font-weight:700;letter-spacing:-.3px;text-transform:uppercase}
.provider-main{grid-column:2;grid-row:1;min-width:0}
.provider-availability{grid-column:1/-1;grid-row:2;min-width:0;margin-top:10px;padding-top:9px;
  border-top:1px solid var(--line)}
.availability-label{display:none;font-size:10.5px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-soft)}
.t-name{font-family:'Fraunces',serif;font-weight:700;font-size:17px;color:var(--euca-deep);
  letter-spacing:-.3px;line-height:1.25}
.t-muted{font-size:12.5px;color:var(--ink-soft);margin-top:2px}
/* Distance owns the compact third column on mobile and overlaps the top of
   the availability column on desktop. It never joins the clinic's text flow,
   so a long clinic cannot strand "km" on its own line. */
.t-clinic-row{display:flex;align-items:baseline;gap:8px}
.t-clinic-row .t-clinic{min-width:0}
.t-clinic-row a.t-clinic,.t-clinic-row a.t-clinic:visited{
  color:var(--ink-soft);text-decoration:underline;text-decoration-color:rgba(47,107,79,.45);
  text-decoration-thickness:1px;text-underline-offset:3px}
.t-clinic-row a.t-clinic:hover{color:var(--euca-deep);text-decoration-color:currentColor}
.t-clinic-row a.t-clinic:focus-visible{color:var(--euca-deep);outline:2px solid var(--euca);
  outline-offset:3px;border-radius:2px}
.t-km{grid-column:3;grid-row:1;justify-self:end;z-index:1;flex-shrink:0;white-space:nowrap;font-size:11.5px;font-weight:700;
  color:var(--ink-soft);background:var(--cream);padding:2px 9px;border-radius:99px}
.t-accents{display:flex;flex-wrap:wrap;gap:3px 12px;margin-top:5px;font-size:11.5px;font-weight:700}
.t-accents span{white-space:nowrap;cursor:default}
.acc-focus{color:var(--euca)}
/* The review rating (docs/reviews-ranking.md). Replaces the old `.acc-rep`
   "★ praised in reviews" badge, which said less in the same space.

   Score and sample size are PEERS — same family, weight and size — so neither
   reads as a footnote to the other. There is no minimum review count, so
   "5.0 ★ · 1 review" must look as honest as "4.8 ★ · 24 reviews"; only hue
   separates them, the review brown for the score and body ink for the count.
   The qualifying clause steps down to the muted size because it is provenance,
   not a value. */
.t-rating{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 5px;margin-top:6px;font-size:12px}
.rating-num,.rating-count{font-family:'Fraunces',serif;font-weight:700;font-size:14px;
  letter-spacing:-.2px;font-variant-numeric:tabular-nums}
.rating-num{color:#8A5320}
.rating-count{color:var(--ink)}
.t-rating .rating-star{color:#8A5320;font-size:12px;line-height:1}
/* --line is a RULE colour (#E3DBCB) and all but vanishes as text; the middot
   has to be visible enough to read as a separator without competing with the
   two values it divides. */
.rating-sep{color:var(--grey);font-weight:400}
.rating-prov{font-size:11.5px;color:var(--ink-soft)}
/* The clinic's Google profile is evidence about the BUILDING, not this person.
   The hairline and indent are what stop a fast scan reading it as more of the
   practitioner's own number. */
.t-rating-clinic{margin-top:5px;padding-top:5px;padding-left:9px;font-size:11.5px;
  color:var(--grey);border-top:1px solid var(--line)}
.t-rating-clinic .rating-star{color:var(--grey);font-size:11px}
.t-rating-clinic b{font-weight:700;font-variant-numeric:tabular-nums}
/* Alone on the card (no practitioner rating above it): nothing to separate from. */
.t-rating-clinic-only{margin-top:0;padding-top:0;padding-left:0;border-top:0}
/* Every slot renders; the row scrolls sideways. It bleeds to the card edge
   (negative margin = card padding) so a cut-off chip signals there's more,
   and carries 4px of vertical padding for the chips' 44px hit area — an
   overflow-x container clips vertically too, so the ::after needs the room. */
.chip-row{display:flex;gap:8px;margin:0 -14px;padding:4px 14px;overflow-x:auto;
  scrollbar-width:none;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.chip-row::-webkit-scrollbar{display:none}
.time-chip{position:relative;display:inline-flex;align-items:baseline;gap:2px;flex-shrink:0;
  height:36px;padding:0 12px;margin:0;border-radius:9px;background:var(--panel);
  border:1px solid #DCC8B4;color:#8E4A24;font-family:'Fraunces',serif;font-weight:600;
  font-size:14px;line-height:34px;letter-spacing:-.2px;text-decoration:none;white-space:nowrap;
  scroll-snap-align:start;transition:background .15s;cursor:pointer}
.time-chip small{font-size:10px;font-weight:600}
.time-chip .chip-day{margin-left:5px;font-family:'Karla',sans-serif;font-size:10.5px;
  font-weight:700;color:var(--ink-soft)}
.time-chip::after{content:"";position:absolute;inset:-4px 0}   /* 36px chip, 44px target */
.time-chip:hover{background:#F6EEE3}
.time-chip:active{background:var(--terra-soft)}
.card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin-top:6px;font-size:11px}
.foot-hint{color:var(--grey)}
.card.skeleton{pointer-events:none}
.skel-line{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--line) 25%,var(--cream) 50%,var(--line) 75%);
  background-size:200% 100%;animation:shimmer 1.5s infinite;margin-bottom:8px}
.skel-pills{display:flex;gap:6px;margin-bottom:10px}
.skel-pills span{width:70px;height:36px;border-radius:10px;background:linear-gradient(90deg,var(--line) 25%,var(--cream) 50%,var(--line) 75%);
  background-size:200% 100%;animation:shimmer 1.5s infinite}
.w60{width:60%}.w40{width:40%}.w30{width:30%}
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
.card.highlight{animation:card-highlight 2s both}
@keyframes card-highlight{0%{box-shadow:0 0 0 3px var(--euca)}100%{box-shadow:var(--card-sh)}}

/* ---------------- booking sheet (booksheet.js) ----------------
   Desktop: centered modal, same recipe as #fu-overlay. Mobile (below): the
   same panel docked to the bottom as a sheet. */
#bs-overlay{position:fixed;inset:0;z-index:2000;background:rgba(33,48,42,.28);
  display:flex;align-items:center;justify-content:center;padding:18px}
#bs-overlay[hidden]{display:none}
#bs-panel{position:relative;width:100%;max-width:400px;background:var(--panel);
  border:1px solid var(--line);border-radius:20px;padding:18px 20px;outline:none;
  box-shadow:0 8px 40px -8px rgba(33,48,42,.4);animation:rise .25s both;
  /* capped to the viewport: a slot with 9+ options used to grow the panel past
     the top edge, pushing the × and header off-screen with no way to scroll
     back. Header and Continue stay put; only the rows scroll. */
  display:flex;flex-direction:column;max-height:calc(100vh - 36px);max-height:calc(100dvh - 36px)}
#bs-panel > *{flex-shrink:0}
#bs-panel > .bs-rows{flex:0 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;margin:0 -6px;padding:2px 6px}
.bs-grab{display:none;width:40px;height:4px;border-radius:2px;background:var(--grey);
  opacity:.35;margin:0 auto 12px}
/* the close row pulls up/left into the panel padding so the context line and
   headline sit where they did before it existed (the 44px target overhangs
   the padding rather than pushing content down) */
.bs-bar{display:flex;align-items:center;height:28px;margin:-10px 0 4px -12px}
#bs-x{border:none;background:none;font-size:22px;color:var(--grey);cursor:pointer;line-height:1;
  padding:0;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}
#bs-x:hover{color:var(--ink)}
.bs-ctx{font-size:12.5px;color:var(--ink-soft)}
.bs-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:4px}
.bs-when{font-family:'Fraunces',serif;font-weight:600;font-size:18px;letter-spacing:-.25px;color:var(--euca-deep)}
.bs-sum{font-size:13.5px;font-weight:700;color:var(--ink);text-align:right}
.bs-sum:empty{display:none}
.bs-trust{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px}
.bs-pill{font-size:10.5px;font-weight:700;color:var(--euca-deep);background:#EAF2EC;
  border:1px solid #BFD8C6;padding:2px 8px;border-radius:99px;white-space:nowrap}
/* section label over the duration rows (rows variant only) — the drawer's
   .f-label idiom, so "ACUPUNCTURE TREATMENTS" reads as a heading, not a row */
.bs-rows-label{font-size:10.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;
  color:var(--ink-soft);margin:14px 0 8px}
.bs-rows-label:empty{display:none}
.bs-rows{display:flex;flex-direction:column;gap:8px}
.bs-rows:empty{display:none}
.bs-row{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  min-height:50px;padding:6px 14px;border-radius:12px;border:1.5px solid var(--line);
  background:#fff;font-family:'Karla',sans-serif;color:var(--ink);cursor:pointer;text-align:left}
.bs-row.on{border-color:var(--euca);background:#EAF2EC}
/* lead + tag wrap as units: the tag never breaks mid-phrase, it drops whole */
.bs-main{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;min-width:0}
.bs-dur{font-family:'Fraunces',serif;font-weight:600;font-size:15px;color:var(--euca-deep)}
.bs-name{font-family:'Fraunces',serif;font-weight:600;font-size:15px;color:var(--ink)}
.bs-dur-sub{font-family:'Karla',sans-serif;font-weight:400;font-size:12.5px;color:var(--grey);white-space:nowrap}
.bs-tag{font-style:normal;font-family:'Karla',sans-serif;font-weight:400;font-size:12px;color:var(--grey);white-space:nowrap}
.bs-price{font-weight:700;font-size:14px;white-space:nowrap}
.bs-go{display:flex;align-items:center;justify-content:center;width:100%;height:50px;
  margin-top:14px;padding:0;border-radius:12px;background:var(--euca-deep);color:#FBF8F1;
  font-size:15px;font-weight:700;text-decoration:none}
.bs-go:hover{background:var(--euca)}
.bs-note{margin-top:10px;text-align:center;font-size:11.5px;color:var(--grey);line-height:1.4}
@keyframes bs-up{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}

/* ---------------- fine-pointer (mouse) density ----------------
   Inputs default to 16px above because anything smaller makes iOS Safari zoom
   the page on focus. A device with a real mouse can't do that, so it opts down
   to a denser scale here. Keyed on the input device rather than width so every
   touch screen — phone, iPad portrait, iPad landscape — keeps the 16px floor. */
@media (hover:hover) and (pointer:fine){
  #addr-q{font-size:14px;padding:8px 11px}
  #meta select{font-size:13px}
}

/* ---------------- reduced motion ---------------- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:0.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.01ms !important;
  }
}

/* ---------------- sheet handle (hidden on desktop) ---------------- */
#sheet-handle{display:none}
.handle-bar{width:40px;height:4px;border-radius:2px;background:var(--grey);opacity:.35;margin:0 auto}

@media (max-width:820px){
  body{display:block;overflow:hidden;height:100vh;height:100dvh}

  /* Map: full-bleed background */
  #map{position:fixed;top:0;left:0;right:0;bottom:0;height:100%;z-index:1}

  /* Rail becomes the bottom sheet */
  #rail{position:fixed;bottom:0;left:0;right:0;z-index:10;
    width:100%;min-width:0;height:100vh;height:100dvh;
    border-right:none;border-top:none;
    border-radius:28px 28px 0 0;
    box-shadow:0 -4px 24px rgba(33,48,42,.15);
    will-change:transform;overflow:hidden;
    display:flex;flex-direction:column}

  /* The popup scrim reaches above the translated sheet. Keep the rail clipped
     in every other state so cards and chrome cannot spill over the map. */
  #rail.filter-open{overflow:visible}

  /* Sheet handle visible on mobile */
  #sheet-handle{display:flex;align-items:center;justify-content:center;
    padding:12px 0 6px;cursor:grab;flex-shrink:0;
    -webkit-user-select:none;user-select:none}

  header{padding:6px 16px 8px}
  .h-row{flex-wrap:wrap}
  .wordmark{font-size:20px}
  .acct-btn{padding:3px 10px;font-size:11.5px}

  #f-toggle{padding:12px 16px}

  /* Filters expand inline within the sheet (no absolute overlay) */
  #filters{max-height:40vh;max-height:40dvh;padding:10px 16px 14px}

  .loc-status{padding:6px 16px 0}
  #addr-form{padding:8px 16px 0}
  #meta{padding:8px 16px}
  /* The bottom --sheet-fold px of the sheet are below the viewport (sheet.js
     sets it to that band at the one detent where the list scrolls), so the
     scroller pads past it rather than ending the last card under the fold */
  #list{padding:10px 12px calc(24px + var(--sheet-fold, 0px) + env(safe-area-inset-bottom, 0px));
    -webkit-overflow-scrolling:touch}

  /* Map controls above sheet */
  #locate-cta{z-index:20;bottom:60%}
  #locate-btn{z-index:20}
  #coverage-note{z-index:20}

  #fu-banner{left:14px;max-width:none;z-index:30}

  /* booking sheet docks to the bottom; the grab bar is the sheet tell */
  #bs-overlay{align-items:flex-end;padding:0}
  #bs-panel{max-width:none;border-radius:20px 20px 0 0;border-bottom:none;
    padding:10px 20px calc(18px + env(safe-area-inset-bottom, 0px));
    animation:bs-up .28s cubic-bezier(.2,0,0,1) both;
    /* leave a clear strip of scrim above even a full sheet: tapping it closes,
       and the sheet reads as floating over the results rather than a new page */
    max-height:85vh;max-height:85dvh}
  .bs-grab{display:block}
  .bs-bar{margin-top:-4px}   /* the grab bar above already gives the × its breathing room */

  #chip-bar{padding:8px 16px}
  #mode-hint{padding:0 16px}
  /* More filters and Distance open as bottom sheets over the results. #rail
     carries a transform, so the wrapper cancels that offset before covering
     the real viewport. */
  #rail.filter-open #f-wrap{position:fixed;left:0;right:0;
    top:calc(0px - var(--sheet-y,0px));height:100vh;height:100dvh;z-index:1200;
    display:flex;align-items:flex-end;background:rgba(33,48,42,.32)}
  #filter-panel{position:static;width:100%;height:auto;max-height:calc(100dvh - 24px);
    border:0;border-radius:20px 20px 0 0;box-shadow:0 -12px 36px rgba(33,48,42,.18);
    background:var(--panel);display:flex;flex-direction:column;padding:0;
    animation:filter-sheet-up .2s cubic-bezier(.2,0,0,1)}
  #filter-panel[hidden]{display:none}
  #fp-header{padding:16px 20px 12px;border-bottom:1px solid var(--line);flex-shrink:0}
  #fp-body{flex:0 1 auto;overflow-y:auto;padding:8px 20px 24px;-webkit-overflow-scrolling:touch}
  /* The apply button is the one control that must never be unreachable, so it
     clears the home indicator explicitly rather than trusting a magic number. */
  #fp-footer{padding:12px 20px calc(20px + env(safe-area-inset-bottom, 0px));
    border-top:1px solid var(--line);flex-shrink:0;margin-top:0}

  /* Map FAB (show map button when sheet is full) */
  #map-fab{display:none;position:fixed;right:16px;z-index:30;
    bottom:calc(24px + env(safe-area-inset-bottom, 0px));
    align-items:center;gap:6px;padding:12px 20px;border:none;border-radius:99px;
    background:var(--euca-deep);color:#FBF8F1;font-family:'Karla',sans-serif;
    font-weight:700;font-size:13px;cursor:pointer;
    box-shadow:0 3px 14px rgba(33,48,42,.4)}
}
/* ---------------- landing + guided search ---------------- */
#search-flow{position:fixed;inset:0;z-index:1100;overflow-y:auto;background:#FDFBF5;
  color:#21302A;font-family:'Karla',sans-serif;-webkit-overflow-scrolling:touch}
#env-banner ~ #search-flow{top:var(--env-bar)}
#search-flow[hidden]{display:none}
#search-flow [hidden]{display:none!important}
.sf-shell{position:relative;width:100%;min-height:100%;margin:0 auto;background:#FDFBF5}
.sf-brandbar{width:min(calc(100% - 64px),1200px);height:80px;display:flex;align-items:center;
  justify-content:space-between;margin:0 auto;padding:0;border-bottom:1px solid #E3DBCB}
.sf-header-actions{display:flex;align-items:center;gap:20px;min-width:0}
.sf-clinic-nav{display:inline-flex;align-items:center;min-height:44px;color:#1E4A36;
  text-decoration:none;font:700 14px/1.2 'Karla',sans-serif;white-space:nowrap}
.sf-clinic-nav:hover{text-decoration:underline;text-underline-offset:3px}
.sf-clinic-nav:focus-visible{outline:2px solid var(--terra);outline-offset:3px}
.sf-wordmark{border:0;background:none;padding:0;font-family:'Fraunces',serif;font-size:29px;
  font-weight:700;letter-spacing:-.5px;color:#1E4A36;cursor:pointer}
.sf-wordmark em{font-style:italic;color:#A85A2F}
.sf-account,.search-edit{border:1px solid #D7CEBC;background:#fff;color:#1E4A36;
  min-height:40px;padding:8px 13px;border-radius:99px;font-family:'Karla';font-weight:700;cursor:pointer}
.sf-screen[hidden]{display:none}
.sf-popover-backdrop{position:absolute;inset:0;z-index:1;border:0;background:transparent;cursor:default}
.sf-popover-open .sf-search-card{position:relative;z-index:3}
#search-flow .sf-screen.sf-desktop-popover{position:fixed;z-index:4;display:flex;flex-direction:column;min-height:0;margin:0;overflow:hidden;
  overscroll-behavior:contain;border:1px solid #E3DBCB;border-radius:14px;background:#fff;
  box-shadow:0 14px 36px rgba(33,48,42,.16)}
.sf-desktop-popover .sf-screenbar{display:none}
.sf-desktop-popover .sf-screenbody{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:28px 32px 32px}
.sf-desktop-popover .sf-panel-heading h2{font-family:'Karla',sans-serif;font-size:24px;font-weight:600;letter-spacing:-.3px}
.sf-desktop-popover .sf-care-actions,.sf-desktop-popover .sf-date-actions{position:static;flex-shrink:0;padding:14px 32px 16px}
/* The desktop field already supplies the question; keep the panel compact.
   Mobile retains the heading as the title of its dedicated care screen. */
.sf-desktop-popover#sf-care .sf-screenbody{position:relative}
.sf-desktop-popover#sf-care .sf-panel-heading{position:absolute;top:18px;right:24px;margin:0}
.sf-desktop-popover#sf-care .sf-panel-heading h2{display:none}
#search-flow:not(.sf-results-edit) .sf-desktop-popover#sf-care .sf-searchbox{display:none}
#search-flow:not(.sf-results-edit) .sf-desktop-popover#sf-care .sf-tabs{margin-top:0;margin-right:44px}
.sf-desktop-popover#sf-location .sf-panel-heading,.sf-desktop-popover#sf-location .sf-intro,.sf-desktop-popover#sf-location .sf-or{display:none}
.sf-desktop-popover#sf-location .sf-screenbody{display:flex;flex-direction:column;padding:16px}
#search-flow:not(.sf-results-edit) .sf-desktop-popover#sf-location .sf-address-form{display:none}
.sf-results-edit .sf-desktop-popover#sf-location .sf-address-form{margin-top:8px}
.sf-desktop-popover#sf-location .sf-address-form label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.sf-desktop-popover#sf-location .sf-location-option{border:0;border-radius:8px;min-height:56px;margin-top:8px;padding:8px}
.sf-desktop-popover#sf-location #sf-use-location{margin-top:0}
.sf-desktop-popover#sf-location .sf-location-option:hover{background:#EDF2EB}
.sf-desktop-popover#sf-location .sf-location-option strong{font-size:16px;font-weight:500}
.sf-desktop-popover#sf-location #sf-use-location small,.sf-desktop-popover#sf-location .sf-location-option>span:last-child{display:none}
.sf-desktop-popover#sf-location .sf-status:empty{display:none}
.sf-screen:not(#sf-home){width:min(calc(100% - 48px),720px);min-height:calc(100vh - 80px);
  margin:0 auto;background:#FDFBF5;border-left:1px solid #E3DBCB;border-right:1px solid #E3DBCB}
.sf-hero{max-width:880px;margin:0 auto;padding:54px 32px 22px;text-align:center}
.sf-hero h1,.sf-panel-heading h2{font-family:'Fraunces',serif;font-weight:500;letter-spacing:-.7px;color:#21302A}
.sf-hero h1{max-width:760px;font-size:52px;line-height:1.08;letter-spacing:-1.3px;margin:15px auto 14px}
.sf-hero p,.sf-intro{font-size:17px;line-height:1.5;color:#5C6B62}.sf-hero p{margin:0 auto}
.sf-hero .sf-market{display:inline-flex;align-items:center;min-height:30px;padding:5px 12px;border:1px solid #D7CEBC;
  border-radius:99px;background:#F6F1E7;color:#1E4A36;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.sf-hero .sf-value-prop{max-width:720px;font-size:17px}
.sf-care-strip{width:min(calc(100% - 64px),980px);margin:0 auto 26px;overflow-x:auto;scrollbar-width:none;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.sf-care-strip::-webkit-scrollbar{display:none}
.sf-care-strip-track{display:flex;width:max-content}
.sf-care-strip-group{display:flex;flex:none;align-items:center;gap:9px;padding-right:9px}
.sf-care-strip button{min-height:38px;padding:8px 13px;border:1px solid #D7CEBC;border-radius:99px;background:#fff;
  color:#1E4A36;font:600 13px 'Karla';white-space:nowrap;cursor:pointer;box-shadow:0 2px 8px rgba(33,48,42,.04)}
.sf-care-strip button:hover{border-color:#2F6B4F;background:#EDF2EB}
@keyframes sf-care-scroll{to{transform:translateX(-50%)}}
@media(hover:hover) and (prefers-reduced-motion:no-preference){
  .sf-care-strip{overflow:hidden}
  .sf-care-strip-track{animation:sf-care-scroll 34s linear infinite;will-change:transform}
  .sf-care-strip:hover .sf-care-strip-track,.sf-care-strip:focus-within .sf-care-strip-track{animation-play-state:paused}
}
.sf-search-card{display:grid;grid-template-columns:minmax(280px,1.45fr) minmax(190px,1fr) minmax(175px,.9fr) auto;
  align-items:center;width:min(calc(100% - 64px),1120px);margin:0 auto 31px;padding:8px;background:#fff;
  border:1px solid #E3DBCB;border-radius:16px;box-shadow:0 8px 26px rgba(33,48,42,.08)}
.sf-care-control,.sf-location-control{position:relative;min-width:0}
.sf-field{display:flex;align-items:center;gap:12px;width:100%;min-height:76px;border:0;
  border-right:1px solid #E3DBCB;border-radius:9px;background:transparent;text-align:left;color:#21302A;cursor:pointer;padding:0 18px}
.sf-field[aria-expanded=true]{background:#EDF2EB;box-shadow:inset 0 0 0 1px #2F6B4F}
#sf-when-field{border-right:0}
.sf-field-icon{width:18px;color:#2F6B4F;font-size:22px;text-align:center;flex:none}
.sf-field-copy{flex:1;min-width:0}.sf-field-copy small{display:block;font-size:12px;color:#5C6B62;margin-bottom:5px}
.sf-field-copy strong{display:block;font-size:16px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sf-inline-search{display:none;align-items:center;gap:12px;width:100%;min-height:76px;padding:0 18px;
  border:0;border-right:1px solid #E3DBCB;border-radius:9px;background:#EDF2EB;
  box-shadow:inset 0 0 0 1px #2F6B4F;color:#21302A}
.sf-inline-search input{display:block;width:100%;min-width:0;border:0;outline:0;background:transparent;color:#21302A;
  font:600 16px 'Karla';line-height:1.3;padding:0}
.sf-inline-search input::placeholder{color:#6C766F;font-weight:500;opacity:1}
.sf-inline-search:focus-within{box-shadow:inset 0 0 0 2px #2F6B4F}
.sf-primary{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:50px;
  border:0;border-radius:10px;background:#2F6B4F;color:#fff;font-family:'Karla';font-size:15px;font-weight:700;cursor:pointer}
.sf-primary:hover{background:#1E4A36}.sf-primary:disabled{opacity:.5;cursor:default}
.sf-search-card>.sf-primary{width:auto;min-width:190px;min-height:58px;margin-left:8px;padding:0 22px}
.sf-error{grid-column:1/-1;font-size:13px;line-height:1.4;color:#8A2E2E;margin:8px 12px 2px}
.sf-shortcuts{width:min(calc(100% - 64px),1120px);margin:0 auto;padding:0 0 50px;text-align:center}
.sf-shortcuts h2,.sf-browse h2,.sf-date-body>h2{font-size:20px;margin-bottom:15px}
.sf-chip-row{display:flex;justify-content:center;gap:9px;flex-wrap:wrap}
.sf-chip-row button{min-height:44px;padding:9px 13px;border-radius:99px;border:1px solid #E3DBCB;
  background:#fff;color:#21302A;font-family:'Karla';font-size:14px;cursor:pointer}
.sf-browse{padding:48px max(32px,calc((100% - 1120px)/2)) 45px;background:#F6F1E7;
  border-top:1px solid #E3DBCB;text-align:center}
.sf-tile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.sf-tile-grid button{min-height:104px;border:1px solid #E3DBCB;border-radius:14px;background:#fff;
  color:#21302A;text-align:center;padding:16px;font-family:'Karla';font-size:16px;font-weight:600;cursor:pointer}
.sf-text-button{min-height:44px;border:0;background:none;color:#2F6B4F;font-family:'Karla';font-weight:700;
  text-decoration:underline;text-underline-offset:4px;cursor:pointer;padding:20px 0 0}
.sf-coming-soon{margin:10px 0 0;color:#5C6B62;font-size:13px;line-height:1.45}
.sf-footnote{text-align:center;padding:18px 24px;font-size:12px;color:#5C6B62;border-top:1px solid #E3DBCB}
.sf-site-footer{padding:40px max(32px,calc((100% - 1120px)/2)) 28px;background:#F6F1E7;border-top:1px solid #E3DBCB}
.sf-foot-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:28px;max-width:1120px;margin:0 auto}
.sf-foot-h{font-family:'Karla';font-weight:700;font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:#1E4A36;margin-bottom:12px}
.sf-foot-soon{font-weight:400;text-transform:none;letter-spacing:0;color:#766E60}
.sf-foot-col a{display:block;color:#5C6B62;text-decoration:none;font-family:'Karla';font-size:14px;margin-bottom:9px}
.sf-foot-col a:hover{color:#2F6B4F}
.sf-foot-fine{max-width:1120px;margin:24px auto 0;font-size:12px;line-height:1.6;color:#766E60}
.sf-foot-fine a{color:#2F6B4F}
.sf-visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.sf-screenbar{height:72px;padding:0 42px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #E3DBCB}
.sf-back{border:0;background:none;min-height:44px;padding:0;color:#2F6B4F;font-family:'Karla';font-size:15px;font-weight:600;cursor:pointer}
.sf-step{font-size:12px;color:#5C6B62}.sf-screenbody{padding:38px 42px 42px}.sf-screenbody>h1{font-size:34px;line-height:1.2;margin-bottom:20px}
.sf-panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.sf-panel-heading h2{font-size:34px;line-height:1.2;margin:0}
.sf-panel-close{display:none;width:40px;height:40px;flex:none;border:0;border-radius:8px;background:transparent;color:#5C6B62;font:28px/1 'Karla';cursor:pointer}
.sf-panel-close:hover{background:#EDF2EB;color:#1E4A36}.sf-desktop-popover .sf-panel-close{display:block}
.sf-searchbox{display:flex;align-items:center;gap:10px;border:1px solid #CFC5B2;background:#fff;border-radius:11px;padding:0 13px;min-height:52px}
.sf-searchbox input{width:100%;border:0;background:transparent;font-family:'Karla';font-size:16px;outline:0}
.sf-searchbox:focus-within{border-color:#2F6B4F;box-shadow:0 0 0 2px rgba(47,107,79,.16)}
.sf-tabs{display:flex;gap:5px;padding:4px;background:#F1ECE1;border-radius:10px;margin:16px 0}
.sf-tabs button{flex:1;min-height:42px;border:0;border-radius:7px;background:transparent;color:#5C6B62;font-family:'Karla';cursor:pointer}
.sf-tabs button[aria-selected=true]{background:#fff;color:#1E4A36;font-weight:700;box-shadow:0 1px 4px rgba(33,48,42,.08)}
.sf-concern-explanation{margin:-4px 0 0;color:#5C6B62;font-size:13px;line-height:1.45}
.sf-section-label{font-size:13px;color:#5C6B62;font-weight:600;margin:20px 0 4px}
.sf-category-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 0 10px;color:#5C6B62;font-size:13px;border-bottom:1px solid #E3DBCB}
.sf-category-heading button{min-height:40px;border:0;background:none;color:#2F6B4F;font:600 14px 'Karla';cursor:pointer}
.sf-option{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:58px;
  border:0;border-bottom:1px solid #E3DBCB;background:transparent;text-align:left;color:#21302A;font-family:'Karla';cursor:pointer}
.sf-option span:first-child{min-width:0}.sf-option strong{display:block;font-size:15px}.sf-option small{display:block;font-size:12px;color:#5C6B62;margin-top:4px}
.sf-option[aria-pressed=true]{background:#EDF2EB;box-shadow:inset 3px 0 #2F6B4F;padding-left:12px;color:#1E4A36}
.sf-desktop-popover#sf-care .sf-option-list{display:grid;grid-template-columns:1fr 1fr;column-gap:20px}
.sf-desktop-popover#sf-care .sf-section-label,.sf-desktop-popover#sf-care .sf-category-heading{grid-column:1/-1}
.sf-desktop-popover#sf-care .sf-any-treatment{grid-column:1/-1}
.sf-care-actions{position:sticky;bottom:0;padding:16px 42px calc(16px + env(safe-area-inset-bottom,0px));background:#fff;border-top:1px solid #E3DBCB}
.sf-care-actions p{margin:0 0 10px;font-size:14px;color:#1E4A36}
.sf-option:focus-visible,.sf-primary:focus-visible,.sf-secondary:focus-visible,.sf-field:focus-visible,.sf-back:focus-visible,.sf-panel-close:focus-visible,.sf-tabs button:focus-visible,.sf-category-heading button:focus-visible,.sf-location-option:focus-visible,.sf-address-form button:focus-visible,.sf-coverage-recovery button:focus-visible,.sf-date-quick button:focus-visible,.sf-time-options button:focus-visible,.sf-chip-row button:focus-visible,.sf-tile-grid button:focus-visible,.sf-care-strip button:focus-visible,.sf-text-button:focus-visible{outline:2px solid #A85A2F;outline-offset:3px}
.sf-assist,.sf-status{font-size:13px;line-height:1.5;color:#5C6B62;margin-top:14px}.sf-status.err{color:#8A2E2E}
.sf-location-option{display:flex;align-items:center;gap:12px;width:100%;min-height:68px;padding:12px;
  border:1px solid #E3DBCB;border-radius:12px;background:#fff;text-align:left;color:#21302A;font-family:'Karla';cursor:pointer;margin-top:18px}
.sf-location-option>span:nth-child(2){flex:1}.sf-location-option strong,.sf-location-option small{display:block}
.sf-location-option small{color:#5C6B62;font-size:12px;margin-top:4px}.sf-location-badge{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#EDF2EB;color:#2F6B4F;font-size:18px}
.sf-coverage-recovery{margin-top:12px;padding:14px;border:1px solid #B8CEBF;border-radius:10px;background:#EDF2EB;color:#1E4A36}
.sf-coverage-recovery p{margin:0;font-size:14px;line-height:1.45}
.sf-coverage-recovery button{width:100%;min-height:44px;margin-top:12px;border:0;border-radius:8px;background:#2F6B4F;color:#fff;font:700 14px 'Karla';cursor:pointer}
.sf-coverage-recovery button:hover{background:#1E4A36}
.sf-or{display:flex;align-items:center;gap:10px;color:#766E60;font-size:12px;margin:20px 0}.sf-or:before,.sf-or:after{content:'';height:1px;background:#E3DBCB;flex:1}
.sf-address-form label{display:block;font-size:12px;color:#5C6B62;margin-bottom:7px}.sf-address-form>div{display:flex;gap:8px}
.sf-address-form input{flex:1;min-width:0;min-height:48px;padding:0 12px;border:1px solid #CFC5B2;border-radius:9px;background:#fff;font:16px 'Karla'}
.sf-address-form button{min-height:48px;border:0;border-radius:9px;padding:0 16px;background:#2F6B4F;color:#fff;font:bold 14px 'Karla';cursor:pointer}
.sf-date-body{padding-bottom:22px}.sf-date-intro{margin:0 0 18px;color:#5C6B62;font-size:13px;line-height:1.45}.sf-date-quick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.sf-date-quick button{min-width:0;min-height:62px;padding:9px 11px;border:1px solid #CFC5B2;border-radius:9px;background:#fff;color:#21302A;font:700 14px 'Karla';text-align:left;cursor:pointer}
.sf-date-quick small{display:block;font-size:11px;color:#5C6B62;font-weight:400;margin-top:4px}.sf-date-quick button[aria-pressed=true],.sf-time-options button[aria-pressed=true]{border:2px solid #2F6B4F;background:#EDF2EB;color:#1E4A36}
.sf-date-quick button[aria-pressed=true]{padding:8px 10px}
.sf-date-body>h2{margin:24px 0 12px}.sf-date-body>h2:first-of-type{margin-top:0}.sf-time-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.sf-time-options button{min-height:58px;border:1px solid #CFC5B2;border-radius:10px;background:#fff;color:#21302A;font:13px 'Karla';cursor:pointer;padding:7px 4px}.sf-time-options small{display:block;color:#5C6B62;font-size:11px;margin-top:3px}
.sf-custom-time{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:end;margin-top:16px}.sf-custom-time label{font-size:12px;color:#5C6B62}.sf-custom-time select{display:block;width:100%;min-height:46px;margin-top:6px;border:1px solid #CFC5B2;border-radius:9px;background:#fff;padding:0 9px;font:16px 'Karla'}.sf-custom-time>span{padding-bottom:14px;font-size:12px;color:#5C6B62}
.sf-summary{margin-top:22px;padding:14px;border-radius:10px;background:#F6F1E7;font-size:13px;line-height:1.55;color:#5C6B62}.sf-summary strong{color:#21302A}
.sf-date-actions{position:sticky;bottom:0;display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:16px 42px calc(16px + env(safe-area-inset-bottom,0px));background:#fff;border-top:1px solid #E3DBCB}.sf-date-action-summary small,.sf-date-action-summary strong{display:block}.sf-date-action-summary small{font-size:12px;color:#5C6B62}.sf-date-action-summary strong{font-size:14px;margin-top:2px}.sf-date-actions .sf-primary{min-width:150px}.sf-secondary{display:none;min-height:50px;border:1px solid #CFC5B2;border-radius:10px;background:#fff;color:#21302A;font:bold 14px 'Karla';cursor:pointer}
.sf-desktop-popover#sf-when .sf-screenbody{padding:22px 32px 16px}.sf-desktop-popover#sf-when .sf-panel-heading{margin-bottom:12px}
.sf-desktop-popover#sf-when .sf-date-body>h2{margin:15px 0 9px;font-size:15px}.sf-desktop-popover#sf-when .sf-date-body>h2:first-of-type{margin-top:0}.sf-desktop-popover#sf-when .sf-screenbody{padding:22px 32px 16px}.sf-desktop-popover#sf-when .sf-panel-heading{margin-bottom:8px}.sf-desktop-popover#sf-when .sf-date-quick{grid-template-columns:repeat(4,minmax(0,1fr))}.sf-desktop-popover#sf-when .sf-date-quick button{min-height:64px}.sf-desktop-popover#sf-when .sf-time-options{grid-template-columns:repeat(5,minmax(0,1fr))}.sf-desktop-popover#sf-when .sf-time-options button{min-height:48px}.sf-desktop-popover#sf-when .sf-summary{display:none}.sf-desktop-popover#sf-when .sf-secondary{display:none}.sf-desktop-popover#sf-when .sf-date-actions{grid-template-columns:1fr auto;padding:10px 32px 12px}
body.search-flow-open>#rail,body.search-flow-open>#map,body.search-flow-open>#locate-cta,body.search-flow-open>#locate-btn,body.search-flow-open>#map-fab,body.search-flow-open>#coverage-note{visibility:hidden}
@media(min-width:701px){
  #sf-care-field[aria-expanded=true],#sf-location-field[aria-expanded=true]{visibility:hidden}
  #sf-care-field[aria-expanded=true]+.sf-inline-search,#sf-location-field[aria-expanded=true]+.sf-inline-search{
    display:flex;position:absolute;inset:0}
}
@media(max-width:1024px){
  .sf-brandbar{width:calc(100% - 48px)}
  .sf-hero{padding-top:46px}
  .sf-hero h1{font-size:46px}
  .sf-search-card{grid-template-columns:minmax(240px,1.35fr) minmax(175px,1fr) minmax(165px,.9fr);
    width:calc(100% - 48px);padding:10px}
  .sf-search-card>.sf-primary{grid-column:1/-1;width:100%;min-height:50px;margin:8px 0 0}
  .sf-shortcuts{width:calc(100% - 48px)}
  .sf-browse{padding-left:24px;padding-right:24px}
  .sf-tile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sf-tile-grid button{min-height:82px}
  .sf-site-footer{padding-left:24px;padding-right:24px}
  .sf-foot-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
}
@media(max-width:700px){
  .sf-popover-backdrop{display:none}
  #search-flow .sf-screen.sf-desktop-popover{position:static;width:100%!important;max-height:none!important;border:0;border-radius:0;box-shadow:none}
  .sf-brandbar{width:100%;height:72px;padding:0 24px}
  .sf-header-actions{gap:12px}
  .sf-clinic-nav{font-size:13px}
  .sf-screen:not(#sf-home){width:100%;min-height:calc(100vh - 72px);border:0}
  .sf-hero{padding:32px 24px 20px;text-align:left}
  .sf-hero h1{font-size:36px;line-height:1.14;letter-spacing:-.7px;margin:14px 0 12px}
  .sf-hero .sf-value-prop{font-size:16px}
  .sf-care-strip{width:100%;margin-bottom:20px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
  .sf-search-card{display:block;width:auto;margin:0 24px 24px;padding:8px 16px 16px}
  .sf-field{min-height:76px;padding:0;border-right:0;border-bottom:1px solid #E3DBCB}
  .sf-search-card>.sf-primary{width:100%;min-width:0;min-height:50px;margin:16px 0 0}
  .sf-error{margin:10px 0 0}
  .sf-shortcuts{width:auto;margin:0;padding:0 24px 28px;text-align:left}
  .sf-shortcuts h2,.sf-browse h2,.sf-date-body>h2{font-size:16px;margin-bottom:12px}
  .sf-chip-row{justify-content:flex-start;gap:8px}
  .sf-browse{padding:26px 24px 28px;text-align:left}
  .sf-tile-grid{grid-template-columns:1fr 1fr;gap:10px}
  .sf-tile-grid button{min-height:56px;text-align:left;padding:12px;font-size:15px}
  .sf-text-button{padding-top:12px}.sf-coming-soon{margin-top:8px}
  .sf-footnote{text-align:left;padding:16px 24px}
  .sf-site-footer{padding:24px 24px 28px}
  .sf-foot-grid{grid-template-columns:1fr 1fr;gap:20px}
  .sf-screenbar{height:68px;padding:0 22px}
  .sf-screenbody{padding:26px 24px 34px}.sf-panel-heading h2{font-size:29px}.sf-panel-heading{margin-bottom:18px}
  .sf-care-actions,.sf-date-actions{padding:14px 24px calc(14px + env(safe-area-inset-bottom,0px))}
  .sf-date-actions .sf-primary{min-width:140px}
}
@media(max-width:390px){.sf-brandbar{padding:0 16px}.sf-header-actions{gap:8px}.sf-clinic-nav{font-size:12px}}
@media(max-width:520px){.sf-screenbody{padding-left:20px;padding-right:20px}}

/* Compact results search. On phones this travels with the existing sheet;
   on desktop it spans both columns above a two-thirds list / one-third map. */
[hidden]{display:none!important}
#results-toolbar{flex-shrink:0;background:var(--panel)}
.results-header{display:flex;align-items:center;gap:12px;border:0}
.results-back{border:0;background:transparent;color:var(--euca-deep);font:600 21px/1 'Karla',sans-serif;
  width:44px;height:44px;border-radius:12px;cursor:pointer;flex:0 0 44px}
.results-back:hover{background:#EDF2EB}
.results-search{display:flex;align-items:center;gap:10px;min-width:0;min-height:52px;
  padding:7px 12px;border:1px solid #D7CEBC;border-radius:10px;background:#fff;
  color:var(--ink);font-family:'Karla',sans-serif;text-align:left;cursor:pointer;touch-action:manipulation}
.results-search-copy{flex:1;min-width:0}
.results-search strong,.results-search small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.results-search strong{font-size:14px;font-weight:600;line-height:1.4}
.results-search small{font-size:12px;color:var(--ink-soft);line-height:1.4}
.results-search-icon{font-size:24px;color:var(--euca-deep)}
.results-quick-filters{display:flex;gap:8px;min-width:0;overflow-x:auto;scrollbar-width:none;padding:3px 0}
.results-filter{flex-shrink:0;min-height:44px;border:1px solid #CFC5B2;border-radius:99px;
  padding:0 13px;background:transparent;color:var(--ink);font:600 13px 'Karla';white-space:nowrap;cursor:pointer;touch-action:manipulation}
.results-filter:hover,.results-search:hover{background:#EDF2EB}
.results-back:focus-visible,.results-search:focus-visible,.results-filter:focus-visible,#filter-fab:focus-visible,.sf-edit-actions button:focus-visible,
#sf-edit .sf-field:focus-visible,#filter-panel button:focus-visible,#filter-panel input:focus-visible{outline:2px solid var(--terra);outline-offset:3px}
#filter-fab{transition:background .15s,color .15s,border-color .15s;background:transparent;border:1px solid #CFC5B2;color:var(--ink);font-weight:600}
#rail #mode-hint,#rail .loc-status:not(.err){display:none}
#filter-panel[data-section=radius] .fp-search-links,#filter-panel[data-section=radius] #provider-section{display:none}
#filter-panel[data-section=all] #radius-row{display:none!important}
#filter-panel .fp-search-links .sf-option{font-family:'Karla',sans-serif;color:var(--ink);font-size:15px}
#filter-panel .fp-label{display:block}
#fp-reset{min-height:44px}
#sf-any-day{min-height:44px}
.sf-edit-fields{border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-top:18px}
.sf-edit-fields .sf-field{border-right:0;border-bottom:1px solid var(--line);padding:14px 16px;text-align:left;background:white}
.sf-edit-fields .sf-field:last-child{border-bottom:0}
.sf-edit-actions{display:flex;flex-direction:column;gap:10px;padding:16px 24px;border-top:1px solid var(--line)}
.sf-edit-actions .sf-text-button{margin:0;min-height:44px}
#search-flow.sf-results-edit{background:rgba(33,48,42,.25);overflow:hidden}
.sf-results-edit .sf-shell{background:transparent;min-height:100%;width:100%;max-width:none}
.sf-results-edit .sf-brandbar,.sf-results-edit .sf-step{display:none}
.sf-results-edit .sf-screen{background:var(--panel)}
.sf-results-edit .sf-panel-close{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}
.sf-results-edit .sf-desktop-popover#sf-edit .sf-screenbody{padding:22px 24px}
.sf-results-edit .sf-desktop-popover#sf-care .sf-screenbar{display:flex;min-height:44px;padding:4px 20px}
.sf-results-edit .sf-desktop-popover .sf-screenbar .sf-back{min-height:44px}
.sf-results-edit .sf-desktop-popover#sf-care .sf-panel-heading{top:18px}
.sf-results-edit .sf-desktop-popover#sf-location .sf-panel-heading{display:flex;margin-bottom:6px}
.sf-results-edit .sf-desktop-popover#sf-location .sf-panel-heading h2{font-size:20px}
@media(min-width:821px){
  #results-toolbar{position:fixed;top:0;left:0;right:0;z-index:40;display:flex;flex-direction:column;
    align-items:flex-start;gap:0;padding:0;border-bottom:1px solid var(--line)}
  #env-banner~#rail #results-toolbar{top:var(--env-bar)}
  #rail{--results-gutter:20px;--results-header-gap:12px;
    width:66.666667%;min-width:0;padding-top:var(--results-header-height,73px)}
  #map{position:relative;width:33.333333%;height:calc(100% - var(--results-header-height,73px));margin-top:var(--results-header-height,73px)}
  #env-banner~#rail{padding-top:calc(var(--results-header-height,73px) + var(--env-bar))}
  #env-banner~#map{margin-top:calc(var(--results-header-height,73px) + var(--env-bar));height:calc(100% - var(--results-header-height,73px) - var(--env-bar))}
  #results-toolbar .results-header{width:66.666667%;padding:10px var(--results-gutter) 4px;
    gap:var(--results-header-gap);flex:none;min-width:0}
  #env-banner~#rail .results-header{padding-top:0}
  .results-search{flex:1;max-width:420px}
  #results-toolbar #chip-bar{width:66.666667%;padding:0 var(--results-gutter) 10px;border:0;min-width:0;
    justify-content:flex-start}
  #results-toolbar #filter-fab{margin-left:0}
  #locate-cta{left:auto;right:16.666667%;bottom:56px;transform:translateX(50%)}
  #filter-panel{position:fixed;top:calc(var(--results-header-height,73px) + 8px);left:var(--results-gutter);right:auto;width:360px;
    z-index:1100;max-height:calc(100dvh - var(--results-header-height,73px) - 30px);background:var(--panel);
    border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 36px rgba(33,48,42,.16);padding:16px 20px}
  #env-banner~#rail #filter-panel{top:calc(var(--results-header-height,73px) + var(--env-bar) + 8px)}
  #meta{flex-shrink:0}
  .card:not(.skeleton){grid-template-columns:72px minmax(0,1fr) minmax(210px,32%);column-gap:16px}
  .card-media{width:72px;height:72px}
  .card-media-fallback{font-size:20px}
  .provider-availability{position:relative;grid-column:3;grid-row:1;margin-top:0;padding:22px 0 0 16px;
    border-top:0;border-left:1px solid var(--line)}
  .availability-label{display:block;position:absolute;top:0;left:16px;padding-right:76px}
  .provider-availability .chip-row{margin:6px -14px 0 0;padding:4px 14px 4px 0}
  .provider-availability .card-foot{align-items:flex-end}
}
@media(min-width:1000px){
  #list{display:block}
}
@media(min-width:821px) and (max-width:1050px){
  #filter-panel{width:min(360px,calc(66.666667vw - (2 * var(--results-gutter))))}
}
@media(max-width:820px){
  #results-toolbar .results-header{padding:2px 12px 4px;gap:10px}
  #env-banner~#rail .results-header{padding-top:2px}
  #results-toolbar .wordmark{font-size:18px}
  .results-search{flex:1;padding:6px 10px}
  #results-toolbar #chip-bar{padding:0 12px 6px;gap:8px}
  .results-filter,#filter-fab{font-size:12px;padding:0 11px}
  .results-quick-filters{gap:8px;flex:1}
  #results-toolbar .acct-btn{font-size:11px;padding:4px 8px}
}
@media(max-width:700px){
  #search-flow.sf-results-edit{display:flex;align-items:flex-end;padding-top:24px}
  .sf-results-edit .sf-shell{display:flex;align-items:flex-end;min-height:100%}
  #search-flow.sf-results-edit .sf-screen:not([hidden]){display:flex;flex-direction:column;width:100%;height:auto;
    max-height:calc(100dvh - 24px);min-height:0;margin:0;border:0;border-radius:20px 20px 0 0;
    box-shadow:0 -12px 36px rgba(33,48,42,.18);animation:filter-sheet-up .2s cubic-bezier(.2,0,0,1)}
  #env-banner~#search-flow.sf-results-edit .sf-screen:not([hidden]){max-height:calc(100dvh - var(--env-bar) - 24px)}
  .sf-results-edit .sf-screenbody{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:20px}
  .sf-results-edit .sf-care-actions,.sf-results-edit .sf-date-actions,.sf-results-edit .sf-edit-actions{position:static;flex-shrink:0;padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}
}
@keyframes filter-sheet-up{from{transform:translateY(18px);opacity:.7}to{transform:translateY(0);opacity:1}}
@media(prefers-reduced-motion:reduce){#filter-panel,#search-flow.sf-results-edit .sf-screen:not([hidden]){animation:none}}
@media(prefers-reduced-motion:reduce){#rail{transition:none!important}}
@media(max-width:360px){.sf-hero{padding:28px 20px 20px}.sf-hero h1{font-size:30px}.sf-search-card{margin-left:20px;margin-right:20px}.sf-tile-grid{gap:8px}.sf-date-body{padding-left:14px;padding-right:14px}.sf-time-options{gap:6px}}
@media(prefers-reduced-motion:reduce){
  .sf-care-strip{-webkit-mask-image:none;mask-image:none}
  .sf-care-strip-track{animation:none;padding:0 24px}
  .sf-care-strip-group[aria-hidden=true]{display:none}
}

.search-status{padding:14px;color:var(--ink-soft);font-size:14px;line-height:1.5}
.search-status button,.results-return-all{display:block;margin:8px 0;padding:10px 14px;border:1px solid var(--line);border-radius:8px;background:white;color:var(--ink);font:inherit;cursor:pointer}

/* ---------------- sign-in / saved surfaces ----------------
   The approved additions from the sign-in preview, scoped to their own `si-`
   namespace so nothing above changes. Same palette, type scale and radii as
   the rest of the light theme — no new colours, no token overrides. The prior
   dark palette stays reserved for its own task. */
.si-nav{display:flex;align-items:center;gap:8px}
.sf-account-nav{display:flex;align-items:center;gap:8px}
.si-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;
  border:1px solid #D7CEBC;border-radius:99px;background:#fff;color:var(--euca-deep);
  min-height:40px;padding:8px 13px;font:700 13px 'Karla',sans-serif;cursor:pointer;
  white-space:nowrap;position:relative}
.si-button svg,.si-heart svg,.si-small svg,.si-badge svg{width:19px;height:19px;
  stroke-width:1.8;flex-shrink:0}
.si-button.si-saved{border-color:transparent;background:transparent}
/* The landing invitation: a slow halo on the profile control, never a motion
   trap — it stops on sign-in, on leaving the landing screen, and on any
   answer to the invitation. Under prefers-reduced-motion the animation is
   dropped but a static, clearly visible ring remains (bottom of this block):
   reduced motion must not mean reduced discoverability. */
.si-pulse::before{content:'';position:absolute;inset:-4px;border-radius:99px;
  /* A ring of full terracotta plus a soft glow: unmistakable on the cream
     header at both sizes, still warm rather than alarming
     (docs/sign-in-ux-revision.md raised this from the old --terra-soft wash,
     which read as barely-there at .2–.8 opacity). */
  box-shadow:0 0 0 2px var(--terra),0 0 14px 4px rgba(168,90,47,.5);
  opacity:.55;pointer-events:none;animation:si-halo 3.2s ease-in-out infinite}
@keyframes si-halo{0%,100%{opacity:.4}50%{opacity:1}}
.si-button:focus-visible,.si-heart:focus-visible,.si-small:focus-visible,
.si-dismiss:focus-visible,.si-secondary:focus-visible,.si-browse:focus-visible,
.si-tabs button:focus-visible{outline:2px solid var(--terra);outline-offset:3px}

/* Practitioner heart, inline with the name. ::after widens the tap target to
   44px without widening the box and reflowing the title row. */
.si-heart{display:inline-flex;vertical-align:middle;align-items:center;justify-content:center;
  position:relative;width:20px;height:20px;margin:0 0 0 10px;padding:0;border:0;
  background:none;color:var(--euca-deep);cursor:pointer}
.si-heart::after{content:'';position:absolute;inset:-12px}
.si-heart[aria-pressed=true] svg{fill:var(--terra-soft);stroke:var(--terra)}
.si-small{display:inline-flex;align-items:center;gap:5px;min-height:44px;border:0;
  background:none;font:600 12px 'Karla',sans-serif;color:var(--euca-deep);
  padding:0 4px;cursor:pointer}
/* The control stays visually small so the results row keeps its height; the
   ::after band is what makes it a 44px target, same trick as .si-heart. */
#meta #save-search{position:relative;margin-left:auto;margin-right:12px;min-height:28px}
#meta #save-search::after{content:'';position:absolute;inset:-8px -6px}
#meta #save-search[hidden]{display:none}
#meta #save-search[aria-pressed=true]{color:var(--terra)}
#meta #save-search[aria-pressed=true] svg{fill:var(--terra-soft)}

/* Desktop invitation beside Sign in. Hidden outright on phones, which get the
   inline card instead. */
.si-popover{position:fixed;width:328px;z-index:1450;background:var(--panel);color:var(--ink);
  border:1px solid var(--line);border-radius:13px;
  box-shadow:0 8px 30px -7px rgba(33,48,42,.28);padding:21px}
.si-popover[hidden]{display:none}
.si-popover.si-noarrow::before{display:none}
.si-popover::before{content:'';position:absolute;top:-7px;right:var(--si-arrow,27px);
  width:12px;height:12px;transform:rotate(45deg);background:var(--panel);
  border-left:1px solid var(--line);border-top:1px solid var(--line)}
.si-popover p{font:400 15px/1.5 'Karla',sans-serif;margin:12px 0 15px;max-width:260px}
.si-dismiss{position:absolute;top:3px;right:4px;width:44px;height:44px;background:none;
  border:0;color:var(--ink-soft);font:24px 'Karla',sans-serif;cursor:pointer}
.si-badge{display:grid;place-items:center;width:39px;height:39px;border-radius:99px;
  background:var(--terra-soft);color:var(--terra)}
.si-inline{position:relative;padding:18px;margin:12px 0;background:var(--panel);
  border:1px solid var(--line);border-radius:12px;box-shadow:var(--card-sh);color:var(--ink)}
.si-inline[hidden]{display:none}
.si-inline h3{font:600 18px 'Fraunces',serif;color:var(--euca-deep);padding-right:24px;
  margin-bottom:7px}
.si-inline p{font:400 13px/1.5 'Karla',sans-serif;color:var(--ink-soft);margin:0 0 12px}
.si-inline .fu-btn{width:auto;padding:10px 22px}
/* 0–2 results: the invitation joins the existing anonymous notify block rather
   than stacking a second card beside it. */
.si-cta-signin{margin-top:12px;padding-top:12px;border-top:1px solid var(--line);
  display:flex;flex-direction:column;align-items:center;gap:8px;
  font:400 12.5px/1.5 'Karla',sans-serif;color:var(--ink-soft)}
.si-cta-signin[hidden]{display:none}

.si-context{background:var(--cream);border:1px solid var(--line);border-radius:9px;
  padding:11px 13px;font:600 13px/1.4 'Karla',sans-serif;margin-bottom:15px;
  color:var(--euca-deep)}
.si-context[hidden]{display:none}
.si-browse{display:block;min-height:44px;background:none;border:0;width:100%;
  text-align:center;color:var(--euca-deep);font:600 13px 'Karla',sans-serif;
  margin-top:8px;cursor:pointer}
.si-browse[hidden]{display:none}
.si-tabs{display:flex;gap:8px;border-bottom:1px solid var(--line);margin:16px 0}
.si-tabs button{border:0;border-bottom:2px solid transparent;background:transparent;
  padding:12px 6px;min-height:44px;font:600 13px 'Karla',sans-serif;color:var(--ink-soft);cursor:pointer}
.si-tabs button[aria-selected=true]{color:var(--euca-deep);border-bottom-color:var(--euca-deep)}
.si-empty{padding:12px 0 20px;font:400 14px/1.5 'Karla',sans-serif;color:var(--ink-soft)}
.si-empty strong{display:block;color:var(--euca-deep);font-weight:700;margin-bottom:8px}
.si-saved-row{border-bottom:1px solid var(--line);padding:14px 0;
  font:400 13px/1.5 'Karla',sans-serif;color:var(--ink-soft)}
.si-saved-row strong{display:block;color:var(--euca-deep);font:600 17px 'Fraunces',serif;margin-bottom:3px}
.si-saved-row p{margin:0 0 6px}
.si-secondary{display:inline-flex;align-items:center;min-height:40px;padding:8px 13px;
  background:#fff;border:1px solid var(--line);border-radius:9px;
  font:600 13px 'Karla',sans-serif;color:var(--euca-deep);cursor:pointer}
.si-saved-actions{display:flex;gap:8px;margin-top:16px}
#fu-saved[hidden]{display:none}
/* Signed-in profile menu: Saved · My alerts · Sign out. Anchored to the
   profile button by savedui.js; closes on Escape, outside click, or scroll. */
.si-menu{position:fixed;z-index:2600;min-width:184px;padding:6px;
  background:var(--panel);border:1px solid var(--line);border-radius:12px;
  box-shadow:0 8px 30px -7px rgba(33,48,42,.28)}
.si-menu[hidden]{display:none}
.si-menu button{display:block;width:100%;min-height:44px;padding:10px 14px;
  border:0;border-radius:8px;background:none;text-align:left;
  font:600 13px 'Karla',sans-serif;color:var(--euca-deep);cursor:pointer}
.si-menu button:hover{background:var(--cream)}
#si-callout[hidden]{display:none}
/* The landing callout is a nudge, not a billboard: tighter than the results
   tooltip so it tucks under the header without reaching the hero text. */
.si-callout{padding:16px 18px}
.si-callout-content{display:flex;align-items:flex-start;gap:12px;padding-right:22px}
.si-callout-content .si-badge{flex:none}
.si-callout p{font:400 14px/1.45 'Karla',sans-serif;margin:2px 0 0;max-width:none}
.si-callout .fu-btn{width:auto;margin:12px 0 0 51px;padding:9px 20px}
.si-callout-mobile{width:calc(100% - 48px);margin:0 auto 27px;padding:16px}
.si-callout-mobile .si-callout-content{padding-right:24px}
.si-callout-mobile p{font:400 14px/1.45 'Karla',sans-serif;margin:2px 0 0}
.si-callout-mobile .fu-btn{margin:12px 0 0 51px;padding:9px 20px}
#fu-saved-body{max-height:min(55dvh,460px);overflow:auto}
.si-toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:2600;
  max-width:calc(100% - 28px);padding:12px 18px;background:var(--euca-deep);color:var(--panel);
  border-radius:10px;box-shadow:var(--card-sh);font:500 13px/1.4 'Karla',sans-serif;text-align:center}
.si-toast[hidden]{display:none}

@media(max-width:820px){
  /* Icon-only controls on a phone header; the labels are on the aria-label,
     and the box grows to a 44px touch target. */
  .si-button{width:44px;padding:8px;min-height:44px}
  .si-button>span{display:none}
  .si-popover{display:none!important}   /* floating popovers are desktop-only;
     the landing invitation uses an in-flow card on phones */
  #meta #save-search>span{display:none}
  /* The dialog becomes the bottom sheet the rest of the phone UI uses. */
  #fu-overlay{align-items:flex-end;padding:0}
  #fu-overlay #fu-modal{max-width:none;border-radius:20px 20px 0 0;
    padding:28px 24px calc(22px + env(safe-area-inset-bottom,0px));
    max-height:calc(100dvh - 24px);overflow:auto}
  #fu-overlay #fu-modal::before{content:'';position:absolute;top:10px;left:calc(50% - 16px);
    width:32px;height:4px;border-radius:4px;background:var(--line)}
  #fu-overlay .fu-title{font-size:24px}
  #fu-overlay .fu-btn,#fu-overlay .si-secondary{min-height:44px}
  .si-saved-actions{flex-direction:column}
  .si-secondary{justify-content:center}
}
@media(prefers-reduced-motion:reduce){.si-pulse::before{animation:none;opacity:.85}}
