/* A place's list grouped by ZIP (brief 58 slice 2b; A-549, T-1164; docs/standards/one-search.md rule 9). Loaded only on a page the server grouped (switch zip_grouping_on).
   Native <details>: works with no script. Tokens from site.css (--ink, --soft, --line, --teal, --teal-d, --paper, --cream). 44 px headers; fits 320 px. */
.zip-groups{margin:18px 0 26px;display:flex;flex-direction:column;gap:10px;}
.zip-group{border:1px solid var(--line);border-radius:12px;background:var(--paper);}
.zip-group>summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 12px;min-height:44px;padding:10px 14px;cursor:pointer;list-style:none;color:var(--ink);}
.zip-group>summary::-webkit-details-marker{display:none;}
.zip-group>summary::after{content:"Open ▾";margin-left:auto;font-size:.82rem;font-weight:700;color:var(--teal-d);align-self:center;}
.zip-group[open]>summary::after{content:"Close ▴";}
.zip-group>summary:focus-visible{outline:3px solid var(--teal);outline-offset:2px;border-radius:12px;}
.zip-group[open]>summary{border-bottom:1px solid var(--line);}
.zg-zip{font-family:var(--font-head);font-weight:800;font-size:1.15rem;}
.zg-town{font-weight:600;}
.zg-n{font-weight:700;color:var(--teal-d);}
.zg-here{font-size:.82rem;color:var(--soft);}
.zg-sum{margin:0;padding:10px 14px 0;font-size:.95rem;line-height:1.5;color:var(--ink);}
.zip-group .listing-grid{margin:12px 14px 6px;}
.zg-all{margin:0;padding:6px 14px 14px;}
.zg-all a{display:inline-flex;align-items:center;min-height:44px;font-weight:700;}
/* the sort and filter bar narrowing the cards: a group with nothing left on this page folds away, and the summary (about the whole ZIP) steps aside */
.zip-group[hidden]{display:none;}
.zip-groups.zg-narrowed .zg-sum{display:none;}
@media (max-width:560px){.zip-group .listing-grid{margin:12px 10px 6px;}}
