/* Layout: white theme with green accents — serif headings, tan pill tabs, list rail beside a Leaflet map with a details panel. */
:root{
  --bg:#ffffff; --surface:#ffffff; --tan:#eef4f0; --sage:#e7f2eb; --line:#e1e7e3;
  --ink:#1f2f26; --muted:#5f6b63;
  --accent:#2f7a50; --accent-dark:#1f5c3b; --accent-ink:#ffffff; --active:#1f5c3b; --focus:#2f7a50;
  --food:#2f7a50; --food-soft:#e7f2eb;
  --shelter:#4b6584; --shelter-soft:#e3e9f1;
  --open:#2f7a50; --open-soft:#e2f2e7; --warn:#7a5310; --warn-soft:#f6edd8;
  --radius:18px;
  --serif:Georgia, "Times New Roman", serif;
  --body:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --mono:ui-monospace, "SFMono-Regular", Menlo, monospace;
  color-scheme:light;
}

*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.55;margin:0}
.wrap{max-width:1540px;margin:0 auto;padding-inline:max(20px,5%)}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.2;margin:0;text-wrap:balance}
p{margin:8px 0}
a{color:var(--accent)}
button,input,select{font:inherit}
button,a{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}
:focus-visible{outline:3px solid var(--focus);outline-offset:4px}
.muted{color:var(--muted)}

.skip-link{position:absolute;left:16px;top:-100px;z-index:2000;background:var(--surface);color:var(--ink);padding:12px}
.skip-link:focus{top:12px}

/* header */
header.top{border-bottom:1px solid var(--line);box-shadow:0 1px 0 var(--sage)}
.top .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;padding-block:20px}
.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-family:var(--serif);font-size:24px}
.brand span{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:10px;background:var(--accent);color:var(--accent-ink);font-family:var(--body);font-size:20px}

/* tan pill groups: section nav + type switch */
nav.tabs,.seg{display:inline-flex;background:var(--tan);padding:4px;border-radius:999px;gap:4px;max-width:100%;overflow-x:auto}
nav.tabs a,.seg button{border:0;background:transparent;border-radius:999px;padding:8px 16px;color:var(--ink);text-decoration:none;white-space:nowrap}
nav.tabs a[aria-current="page"],.seg button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
.seg{display:flex}
.seg button{flex:1;min-width:0;padding:8px 10px}

main{padding-block:28px 36px}
.view[hidden]{display:none}

/* find view: intro */
.hero{margin-bottom:22px}
.hero h1{font-size:clamp(30px,4vw,42px);margin-bottom:8px}
.hero p{color:var(--muted);margin:0}

/* buttons & inputs */
.btn,.mapctl button{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border-radius:10px;border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);text-decoration:none}
.btn:hover{background:var(--accent-dark);border-color:var(--accent-dark)}
.btn.ghost,.mapctl button{background:var(--surface);color:var(--ink);border-color:var(--line)}
.btn.ghost:hover,.mapctl button:hover{border-color:var(--accent);background:var(--surface)}
.btn.small{padding:6px 10px;font-size:.85rem}

/* find view */
.find{display:grid;grid-template-columns:minmax(290px,400px) minmax(0,1fr);gap:22px;align-items:start}
.rail{display:flex;flex-direction:column;gap:14px;min-width:0}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:19px;display:flex;flex-direction:column;gap:14px}
.label{font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--accent)}
.zip{display:flex;gap:8px}
.zip input{flex:1;min-width:0;padding:12px 15px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink)}
.hint{font-size:13px;color:var(--muted);margin:0}
.hint:empty{display:none}
.locate{gap:8px;width:100%;color:var(--accent);border-color:var(--accent)}
.locate:disabled{opacity:.6;cursor:progress}
.loc-now{font-size:14px;margin:0}
.loc-now b{font-weight:600}
.err{color:#b3261e;font-size:13px;margin:0}
.radius{display:flex;align-items:center;gap:12px}
.radius input{flex:1;accent-color:var(--accent)}
.radius output{font-size:14px;min-width:4.5em;text-align:right;color:var(--muted)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips[hidden]{display:none}
.chip{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:6px 13px;font-size:13px}
.chip[aria-pressed="true"]{background:var(--sage);border-color:var(--accent);color:var(--accent-dark)}
.toggle{display:flex;align-items:center;gap:8px;font-size:14px}
.toggle input{width:18px;height:18px;accent-color:var(--accent)}

.count{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.count h2{font-size:19px}
.count span{font-size:13px;color:var(--muted)}
.sortbar{display:flex;align-items:center;gap:10px}
.sortbar label{font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--accent);white-space:nowrap}
.sortbar select{flex:1;min-width:0;padding:9px 34px 9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%232f7a50' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center;color:var(--ink);appearance:none;-webkit-appearance:none;cursor:pointer}
.sortbar select:hover{border-color:var(--accent)}
.picked-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 2px}
.picked-h span{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--accent-dark)}
.picked-rest{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin:10px 2px 0;padding-bottom:6px;border-bottom:1px solid var(--line)}
.group-h{font-family:var(--body);font-size:12px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--accent-dark);margin:10px 2px 0;padding-bottom:6px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}
.group-h:first-child{margin-top:0}
.group-h span{color:var(--muted);font-weight:600}
.list{display:grid;gap:12px;max-height:780px;overflow-y:auto;padding:4px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:19px;display:flex;flex-direction:column;gap:6px;cursor:pointer;scroll-margin:8px}
.card:hover{border-color:var(--accent)}
.card.sel{background:var(--sage);border-color:var(--accent)}
.card-head{display:flex;gap:10px;align-items:baseline;justify-content:space-between}
.card h3{font-size:22px;line-height:1.25}
.line{display:block;color:var(--muted);font-size:13px}
.dist{font-size:13px;color:var(--muted);white-space:nowrap}
.eyebrow{font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--accent)}
.eyebrow.shelter{color:var(--shelter)}
.tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.feat{font-size:12px;padding:2px 9px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}
.pill{align-self:flex-start;font-size:12px;font-weight:600;padding:2px 10px;border-radius:999px;background:var(--tan);color:var(--muted)}
.pill.open{background:var(--open-soft);color:var(--open)}
.pill.soon{background:var(--warn-soft);color:var(--warn)}
.note{font-size:14px;color:var(--muted);margin:0}
.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.phone{user-select:all}
.empty{padding:24px 12px;color:var(--muted)}
.callonly h2{font-size:17px;margin-top:10px}

/* map + details */
.mapcol{display:flex;flex-direction:column;min-width:0}
.mapbox{position:relative;height:440px;background:var(--sage);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.mapbox #map{width:100%;height:100%;background:var(--sage);font-family:var(--body);cursor:crosshair}
.mapctl{position:absolute;top:10px;right:10px;display:flex;gap:6px;z-index:1000}
.mapctl button{padding:6px 11px;font-size:13px;box-shadow:0 1px 4px #0002}
.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--muted);align-items:center;margin:9px 2px 18px}
.legend i.lg-you{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:6px;vertical-align:-1px}
.lg-you{border:3px solid var(--accent);background:var(--surface)}

.map-pin{position:relative;display:grid;place-items:center;width:32px;height:32px;border:2px solid #fff;border-radius:50%;background:var(--food);color:#fff;box-shadow:0 2px 7px #0003}
.map-pin svg{width:16px;height:16px}
.map-pin.shelter{border-radius:9px;background:var(--shelter)}
.map-pin b{position:absolute;top:-8px;right:-10px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:#fff;color:var(--ink);font:700 10px/18px var(--body);text-align:center;box-shadow:0 1px 3px #0004}
.map-pin.far{width:18px;height:18px;border-width:1.5px;opacity:.6}
.map-pin.far.shelter{border-radius:5px}
.map-pin.far svg{width:10px;height:10px}
.map-pin.active{transform:scale(1.2);box-shadow:0 0 0 3px #fff,0 0 0 5px var(--active),0 2px 8px #0004}
.map-pin.active b{background:var(--active);color:#fff}
.legend .map-pin.lg{display:inline-grid;width:20px;height:20px;border-width:0;margin-right:6px;vertical-align:-5px;box-shadow:none}
.legend .map-pin.lg.shelter{border-radius:6px}
.legend .map-pin.lg svg{width:12px;height:12px}
.you-dot{width:18px;height:18px;border-radius:50%;background:var(--accent);border:3px solid #fff;box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 25%,transparent),0 1px 4px #0005}

.details{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:25px;display:flex;flex-direction:column;gap:8px}
.details h2,.details h3{font-size:23px;margin:2px 0 4px}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px 24px;margin:14px 0}
.detail-grid dt{font-size:12px;color:var(--muted)}
.detail-grid dd{margin:4px 0 0;min-width:0}
.call-note{background:var(--sage);border-radius:10px;padding:12px 14px;margin:8px 0;color:var(--accent-dark)}

/* content views */
.intro{max-width:720px;margin-bottom:24px}
.intro h2{font-size:clamp(28px,3.6vw,38px);margin-bottom:8px}
.intro p{color:var(--muted);margin:0}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:16px}
.box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px;display:flex;flex-direction:column;gap:12px;min-width:0}
.box h3{font-size:23px}
.box p{margin:0}
.box ol,.box ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}
.kv{display:flex;flex-direction:column;gap:8px;font-size:14px}
.kv div{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:8px}
.kv span:first-child{color:var(--muted)}
.callout{background:var(--sage);border-radius:10px;padding:12px 14px;color:var(--accent-dark);font-size:14px}
.linkbtn{align-self:flex-start;display:inline-flex;text-decoration:none;padding:10px 14px;border-radius:10px;background:var(--accent);color:var(--accent-ink);border:1px solid var(--accent)}
.linkbtn:hover{background:var(--accent-dark)}
.linkbtn.ghost{background:var(--surface);color:var(--ink);border-color:var(--line)}
.linkbtn.ghost:hover{border-color:var(--accent)}
.section-h{font-size:24px;margin:32px 0 14px}
.soon-box{border-style:dashed}
.section-h.first{margin-top:0}
.grid.tips{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}
.tips .box{padding:18px 20px;gap:8px}
.tips .box h3{font-size:20px}
.store-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.store-list li{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 4px;border-bottom:1px solid var(--line)}
.store-list h4{margin:0;font-family:var(--serif);font-weight:400;font-size:20px}
.store-list p{margin:2px 0 0;color:var(--muted);max-width:70ch}
.store-list a{flex:none;font-weight:600;text-decoration:none;white-space:nowrap}
.store-list a:hover{text-decoration:underline}
@media (max-width:600px){ .store-list li{flex-direction:column;align-items:flex-start;gap:6px} }

/* SNAP & WIC: single scrolling panel + section menu */
.doc{display:grid;grid-template-columns:220px minmax(0,1fr);gap:22px;align-items:start}
.doc-nav{display:flex;flex-direction:column;gap:4px;position:sticky;top:16px}
.doc-nav button{text-align:left;border:0;border-left:3px solid transparent;background:transparent;padding:10px 14px;border-radius:0 10px 10px 0;color:var(--muted)}
.doc-nav button:hover{color:var(--ink);background:var(--tan)}
.doc-nav button[aria-current="true"]{background:var(--sage);border-left-color:var(--accent);color:var(--accent-dark);font-weight:600}
.doc-body{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);height:calc(100vh - 220px);min-height:420px;overflow-y:auto;overscroll-behavior:contain}
.doc-sec{display:flex;flex-direction:column;gap:12px;padding:28px 32px;border-top:1px solid var(--line)}
.doc-sec:first-child{border-top:0}
.doc-sec:last-child{min-height:100%}
.doc-sec > *{max-width:720px}
.doc-sec h3{font-size:26px}
.doc-sec p{margin:0}
.doc-sec ol,.doc-sec ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}

footer{border-top:1px solid var(--line);background:var(--sage)}
footer .wrap{padding-block:22px 30px;color:var(--muted);font-size:13px;text-align:center}
footer h2{color:var(--ink);font-size:19px;margin-bottom:6px}
footer p{max-width:none;margin:6px 0}

@media (max-width:850px){
  .find{grid-template-columns:minmax(0,1fr)}
  .mapcol{order:-1}
  .mapbox{height:320px}
  .list{max-height:none}
}
/* Donate: filter pills + scrolling charity list + side note */
.give-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px;align-items:start}
.give-main{display:flex;flex-direction:column;gap:12px;min-width:0}
.give-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.give-bar .seg{display:inline-flex}
.give-bar .seg button{flex:none;padding:8px 16px}
.give-bar .muted{font-size:13px}
.give-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);height:calc(100vh - 260px);min-height:440px;overflow-y:auto;overscroll-behavior:contain;scroll-snap-type:y proximity}
.give{display:flex;flex-direction:column;gap:12px;padding:26px 30px;border-top:1px solid var(--line);scroll-snap-align:start}
.give:first-child{border-top:0}
.give > *{max-width:720px}
.give p{margin:0}
.give-head{display:flex;align-items:center;gap:14px}
.give-head h3{font-size:24px}
.give-mark{flex:none;display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:var(--sage);color:var(--accent-dark);font-family:var(--serif);font-size:22px}
.give-lede{font-size:16px;color:var(--ink)}
.give > p:not(.give-lede){color:var(--muted)}
.give-helps ul{margin:6px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:6px}
.give-helps li{font-size:13px;padding:4px 11px;border-radius:999px;background:var(--sage);color:var(--accent-dark)}
.give-inperson{border-left:3px solid var(--accent);background:var(--bg);padding:10px 14px;border-radius:0 10px 10px 0;display:flex;flex-direction:column;gap:4px}
.give-aside{position:sticky;top:16px;background:var(--sage);border-radius:var(--radius);padding:22px;display:flex;flex-direction:column;gap:12px}
.give-aside h3{font-size:22px}
.give-aside dl{margin:0;display:flex;flex-direction:column;gap:12px}
.give-aside dt{font-weight:700;color:var(--accent-dark)}
.give-aside dd{margin:2px 0 0;font-size:14px}

/* Donate: clothing drop-offs */
.clothes{margin-top:48px;padding-top:32px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:18px;scroll-margin-top:16px}
.clothes-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,380px);gap:24px;align-items:start}
.clothes-head h2{font-size:clamp(26px,3vw,34px);margin:4px 0 6px}
.clothes-head p{margin:0;max-width:60ch}
.clothes-tips{margin:0;padding:16px 18px 16px 34px;background:var(--sage);border-radius:var(--radius);display:flex;flex-direction:column;gap:6px;font-size:14px}
.clothes-tips b{color:var(--accent-dark)}
.cl-filter{align-self:flex-start;display:inline-flex}
.cl-filter button{flex:none;padding:8px 16px}
.clothes-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:14px}
.cl-group{grid-column:1/-1;margin-top:10px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.cl-group:first-child{margin-top:0}
.cl-group h4{margin:0;font-family:var(--serif);font-weight:400;font-size:21px}
.cl-group p{margin:2px 0 0;font-size:14px}
.cl-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;display:flex;flex-direction:column;gap:8px}
.cl-card h3{font-size:20px}
.cl-card p{margin:0}
.cl-addr{font-size:14px}
.cl-hours{font-size:13px;font-weight:600;color:var(--open)}
.cl-hours.check{color:var(--warn)}
.cl-takes{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.cl-takes li{font-size:12px;padding:3px 10px;border-radius:999px;background:var(--sage);color:var(--accent-dark)}
.cl-not{font-size:13px;color:var(--muted)}
.cl-not b{color:var(--ink)}
.cl-card .actions{margin-top:auto;padding-top:4px}

@media (max-width:850px){
  .clothes-head{grid-template-columns:minmax(0,1fr)}
  .cl-filter{display:flex;max-width:100%}
  .give-layout{grid-template-columns:minmax(0,1fr)}
  .give-aside{position:static}
  .give-list{height:70vh;min-height:360px}
  .give{padding:22px 20px}
  .doc{grid-template-columns:minmax(0,1fr);gap:12px}
  .doc-nav{position:static;flex-direction:row;overflow-x:auto;gap:6px;background:var(--tan);padding:4px;border-radius:999px}
  .doc-nav button{border-left:0;border-radius:999px;white-space:nowrap;padding:8px 14px}
  .doc-nav button[aria-current="true"]{background:var(--accent);color:var(--accent-ink)}
  .doc-body{height:70vh;min-height:360px}
  .doc-sec{padding:22px 20px}
}
@media (max-width:480px){
  .detail-grid{grid-template-columns:1fr}
  .details{padding:20px}
  nav.tabs{width:100%}
}
@media (prefers-reduced-motion:no-preference){ .card{transition:border-color .15s, background-color .15s} }
