
:root{
  --paper:#efeae0; --paper-line:#d9cfbd; --panel:#f7f4ec;
  --ink:#1b2b24; --muted:#5c6259; --rule:#c9bd9f;
  --rust:#a6452b; --rust-soft:#f1e2da;
  --river:#2f6e5c; --river-soft:#e4ede9;
  --focus:#2f6e5c;
  --font-display:"Iowan Old Style","Palatino Linotype","Book Antiqua",Georgia,ui-serif,serif;
  --font-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --font-mono:ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
}
*{box-sizing:border-box}
body{margin:0;font-family:var(--font-body);color:var(--ink);background:var(--paper);line-height:1.6;
  background-image:radial-gradient(var(--paper-line) .6px,transparent .6px);background-size:22px 22px}
a{color:var(--river)}
a:focus-visible,button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.wrap{max-width:1100px;margin:0 auto;padding:0 20px}

header.site{background:var(--ink);color:#fff;border-bottom:3px double var(--rust)}
header.site .wrap{display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;padding-top:14px;padding-bottom:14px}
header.site a{color:#fff;text-decoration:none}
.brand{font-family:var(--font-display);font-weight:600;font-size:1.2rem;letter-spacing:.01em}
header.site nav{display:flex;gap:20px;font-family:var(--font-mono);font-size:.78rem;letter-spacing:.04em;text-transform:uppercase}
header.site nav a{color:#c9d3c9;border-bottom:1px solid transparent;padding-bottom:2px}
header.site nav a:hover{color:#fff;border-color:var(--rust)}

.hero{background:var(--panel);border-bottom:1px solid var(--rule);padding:56px 0 44px;position:relative;overflow:hidden}
.hero .grid{display:grid;grid-template-columns:1.5fr 1fr;gap:44px;align-items:start}
.eyebrow{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--rust);margin:0 0 14px}
.hero h1{margin:0 0 16px;font-family:var(--font-display);font-weight:600;font-size:2.5rem;line-height:1.14;letter-spacing:-.01em}
.hero p{margin:0;max-width:62ch;color:var(--muted);font-size:1.06rem}
.stamp-panel{border:1px solid var(--rule);background:var(--paper);padding:22px 24px;position:relative}
.stamp-panel::before{content:"";position:absolute;inset:6px;border:1px solid var(--paper-line)}
.stamp{width:118px;height:118px;border-radius:50%;border:2px solid var(--river);color:var(--river);
  display:flex;align-items:center;justify-content:center;text-align:center;margin:0 auto 18px;
  font-family:var(--font-mono);font-size:.62rem;letter-spacing:.06em;text-transform:uppercase;
  transform:rotate(-8deg);animation:stamp-settle .5s ease-out both}
.stamp span{display:block}
.stamp b{display:block;font-size:.95rem;letter-spacing:.02em;margin:3px 0}
@keyframes stamp-settle{from{opacity:0;transform:rotate(-8deg) scale(1.5)}to{opacity:1;transform:rotate(-8deg) scale(1)}}
.stats{display:flex;flex-direction:column;gap:0;position:relative;z-index:1}
.stats div{display:flex;align-items:baseline;justify-content:space-between;padding:9px 0;border-top:1px solid var(--paper-line)}
.stats div:first-child{border-top:none}
.stats div span{font-family:var(--font-mono);font-size:1.3rem;font-weight:600;color:var(--ink)}
.stats div small{color:var(--muted);font-size:.82rem;text-align:right}

main{padding:44px 0 10px}
h2{font-family:var(--font-display);font-weight:600;font-size:1.55rem;letter-spacing:-.005em;margin:0 0 6px}
.section-note{color:var(--muted);margin:0 0 22px}

.cats{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));margin-bottom:46px}
.cat{display:flex;justify-content:space-between;align-items:baseline;gap:10px;border:1px solid var(--rule);
  border-left:3px solid var(--river);padding:14px 16px;text-decoration:none;color:inherit;background:var(--panel);
  transition:transform .15s ease,border-color .15s ease}
.cat:hover{border-left-color:var(--rust);transform:translateX(2px)}
.cat strong{font-family:var(--font-display);font-weight:600;font-size:1rem}
.cat small{font-family:var(--font-mono);color:var(--muted);font-size:.78rem;white-space:nowrap}

.listings{display:grid;gap:0;border-top:1px solid var(--rule)}
/* The actions column is content-sized, so a long line inside it takes width from
   the business-name column rather than wrapping — the not-checked notice (the
   longest string on the card, on 471 of 589 card instances) crushed the name to one
   word per line at 1440px. Cap it and let it wrap. Same defect class as the 390px
   overflow fixed on 2026-08-26; a content-sized column has no upper bound. */
.listing{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(0,22rem);gap:16px;align-items:start;
  border-bottom:1px solid var(--rule);padding:16px 4px;position:relative}
.listing .idx{font-family:var(--font-mono);color:var(--paper-line);font-size:.78rem;padding-top:3px}
.listing .body{min-width:0}
.listing h3{margin:0 0 6px;font-family:var(--font-display);font-weight:600;font-size:1.08rem;line-height:1.35}
.listing .meta{color:var(--muted);font-size:.88rem;margin:0 0 2px;font-family:var(--font-mono)}
.tag{display:inline-block;color:var(--river);border:1px solid var(--river-soft);background:var(--river-soft);
  border-radius:2px;padding:2px 9px;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.03em;
  text-transform:uppercase;margin-bottom:9px}
.listing .tel{display:inline-block;align-self:start;border:1px solid var(--river);color:var(--river);
  border-radius:3px;padding:7px 13px;font-family:var(--font-mono);font-size:.85rem;font-weight:600;
  text-decoration:none;white-space:nowrap}
.listing .tel:hover{background:var(--river);color:#fff}
.listing .noline{align-self:start;margin:0;font-size:.78rem;color:var(--paper-line);white-space:nowrap;font-style:italic}
.listing.is-featured{background:var(--rust-soft)}
.listing.is-featured .idx{color:var(--rust)}
.featured-flag{display:inline-block;background:var(--rust);color:#fff;font-family:var(--font-mono);
  font-size:.66rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:3px 9px;
  border-radius:2px;margin-bottom:9px}

.pager{display:flex;flex-wrap:wrap;gap:6px;margin:30px 0 8px;font-family:var(--font-mono)}
.pager a{border:1px solid var(--rule);border-radius:3px;padding:6px 12px;text-decoration:none;font-size:.85rem;color:var(--ink)}
.pager a.on{background:var(--ink);color:#fff;border-color:var(--ink)}

.callout{border:1px solid var(--rule);border-left:3px solid var(--rust);background:var(--panel);padding:18px 20px;margin:36px 0}
.callout p{margin:0;color:var(--muted)}

footer.site{margin-top:56px;border-top:3px double var(--rust);background:var(--ink);color:#c9d3c9;padding:34px 0;font-size:.9rem}
footer.site a{color:#c9d3c9}
footer.site .cols{display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
footer.site strong{font-family:var(--font-display);color:#fff;display:block;margin-bottom:8px;font-size:1.02rem}
footer.site ul{list-style:none;margin:0;padding:0}

.feature-form{max-width:520px;margin:8px 0 32px;display:flex;flex-direction:column;gap:6px}
.feature-form label{font-family:var(--font-mono);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;margin-top:12px;color:var(--muted)}
.feature-form select,.feature-form input{padding:11px;border:1px solid var(--rule);border-radius:3px;font-size:15px;background:var(--paper);color:var(--ink);font-family:var(--font-body)}
.feature-form button{margin-top:18px;padding:13px 18px;border:1px solid var(--rust);border-radius:3px;background:var(--rust);color:#fff;font-size:16px;font-weight:600;cursor:pointer}
.feature-form button:hover{background:#8a3a23}
.feature-form button[disabled]{opacity:.6;cursor:default}
.feature-note{font-size:13px;color:var(--muted);margin:10px 0 0}

@media (max-width:820px){
  .hero .grid{grid-template-columns:1fr}
  .listing{grid-template-columns:auto 1fr}
  .listing .tel,.listing .noline{grid-column:2;margin-top:6px}
}
/* Phones. The three-column ledger row cannot survive 390px: the uppercase
   category tag and the status badge ("COULD NOT BE VERIFIED AS A DISTINCT
   LOCAL BUSINESS") are inline-blocks whose min-content width exceeds the
   viewport, so they pushed the page into horizontal scroll and crushed the
   business-name column to about one word per line. Measured at 390px on
   2026-08-26: document scrollWidth 455 against a 386px viewport, on the
   homepage and on all eight category pages. Single column, and let the
   badges wrap instead of forcing the row wider than the screen. */
@media (max-width:560px){
  .listing{grid-template-columns:1fr;gap:6px;padding:16px 0}
  .listing .idx{padding-top:0}
  .listing .tel,.listing .noline,.listing .actions{grid-column:1;margin-top:6px}
  .tag,.status-badge{max-width:100%;white-space:normal;overflow-wrap:anywhere}
}
@media (prefers-color-scheme:dark){
  :root{
    --paper:#171b17; --paper-line:#2b322b; --panel:#1e2420;
    --ink:#e9e6da; --muted:#a2ab9d; --rule:#3a4139;
    --rust:#d6714e; --rust-soft:#2c211b;
    --river:#6fb59a; --river-soft:#1c2a24;
  }
  body{background-image:radial-gradient(var(--paper-line) .6px,transparent .6px)}
  header.site{background:#0f130f}
  footer.site{background:#0f130f}
  .listing.is-featured{background:var(--rust-soft)}
}
@media (prefers-reduced-motion:reduce){
  .stamp{animation:none}
  .cat,.listing{transition:none}
}

.rating{font-family:var(--font-mono);font-size:.82rem;color:var(--ink)}
.rating-none{color:var(--paper-line);font-style:italic}
.claim-badge{display:inline-block;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.03em;
  text-transform:uppercase;padding:2px 8px;border-radius:2px;margin-left:8px;vertical-align:middle}
.claim-badge.unclaimed{background:var(--panel);border:1px solid var(--rule);color:var(--muted)}
.claim-badge.claimed{background:var(--river-soft);border:1px solid var(--river);color:var(--river)}
.card-actions{display:flex;flex-direction:column;gap:6px;align-self:start;min-width:0}
.checked-badge,.contact-static,.unverified-note{overflow-wrap:anywhere}
.quote-btn{display:inline-block;border:1px solid var(--rust);color:var(--rust);border-radius:3px;
  padding:7px 13px;font-family:var(--font-mono);font-size:.8rem;font-weight:600;text-decoration:none;
  text-align:center;white-space:nowrap}
.quote-btn:hover{background:var(--rust);color:#fff}
.quote-btn-primary{background:var(--rust);color:#fff}
.claim-btn{display:inline-block;text-decoration:none;border:1px dashed var(--rule);background:transparent;color:var(--muted);border-radius:3px;
  padding:6px 13px;font-family:var(--font-mono);font-size:.75rem;cursor:not-allowed;white-space:nowrap}
.listing.is-hpt{background:var(--river-soft);border-left:3px solid var(--river)}
.hpt-flag{background:var(--river)}

.directory-tools{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin:0 0 26px;
  border:1px solid var(--rule);background:var(--panel);padding:16px 18px}
.directory-tools .field{display:flex;flex-direction:column;gap:4px}
.directory-tools label{font-family:var(--font-mono);font-size:.72rem;text-transform:uppercase;
  letter-spacing:.03em;color:var(--muted)}
.directory-tools input,.directory-tools select{padding:9px 10px;border:1px solid var(--rule);
  border-radius:3px;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:.92rem;min-width:190px}
.directory-tools .field.grow{flex:1;min-width:220px}
.directory-count{font-family:var(--font-mono);font-size:.8rem;color:var(--muted);margin:0 0 16px}
.no-results{display:none;padding:26px;text-align:center;color:var(--muted);border:1px dashed var(--rule)}

/* ---- /directory/ page — search-first card layout ------------------------- */
.dir-hero{background:
    linear-gradient(160deg,rgba(30,50,42,.94),rgba(47,110,92,.88)),
    radial-gradient(circle at 18% 22%,rgba(255,255,255,.10),transparent 42%),
    radial-gradient(circle at 82% 78%,rgba(255,255,255,.08),transparent 46%);
  color:#fff;min-height:450px;display:flex;align-items:center;padding:56px 0}
.dir-hero-inner{max-width:720px;margin:0 auto;text-align:center}
.dir-hero .eyebrow{color:#d7e6dc;opacity:.85}
.dir-hero h1{color:#fff;font-size:2.5rem;margin:0 0 14px}
.dir-hero-sub{color:rgba(255,255,255,.72);font-size:1.05rem;max-width:56ch;margin:0 auto 30px}
.dir-search-pill{display:flex;gap:0;background:#fff;border-radius:999px;padding:6px;
  box-shadow:0 10px 30px rgba(0,0,0,.22);max-width:560px;margin:0 auto}
.dir-search-pill input{flex:1;border:0;background:transparent;padding:12px 18px;font-size:.98rem;
  color:var(--ink);font-family:var(--font-body)}
.dir-search-pill input:focus{outline:none}
.dir-search-pill button{border:0;border-radius:999px;background:var(--ink);color:#fff;
  padding:12px 26px;font-size:.92rem;font-weight:600;font-family:var(--font-body);cursor:pointer}
.dir-search-pill button:hover{background:var(--river)}

.pill-bar-wrap{background:var(--panel);border-bottom:1px solid var(--rule)}
.pill-row{display:flex;gap:10px;padding:16px 20px;overflow-x:auto;scrollbar-width:thin}
.pill{flex:0 0 auto;border:1px solid var(--rule);background:#fff;color:var(--ink);border-radius:999px;
  padding:8px 16px;font-size:.85rem;font-family:var(--font-body);cursor:pointer;white-space:nowrap;
  display:inline-flex;align-items:center;gap:6px;transition:border-color .15s ease,background .15s ease}
.pill:hover{border-color:var(--river)}
.pill.is-active{background:var(--ink);border-color:var(--ink);color:#fff}
.pill.is-active.pill-all::before{content:"\2713";font-size:.75rem}

.results-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:12px;margin:36px 0 20px}
.results-heading{display:flex;align-items:baseline;gap:8px;margin:0;font-family:var(--font-display);
  font-weight:600;font-size:1.4rem}
.results-heading .results-count{font-family:var(--font-body);font-weight:400;color:var(--muted);font-size:1rem}
.results-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.results-controls label{font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;
  letter-spacing:.03em;color:var(--muted)}
.results-controls select{padding:8px 12px;border:1px solid var(--rule);border-radius:999px;
  background:#fff;color:var(--ink);font-family:var(--font-body);font-size:.85rem}
.view-toggle{display:flex;border:1px solid var(--rule);border-radius:999px;overflow:hidden}
.view-toggle button{border:0;background:#fff;color:var(--muted);padding:7px 12px;cursor:pointer;font-size:.9rem;line-height:1}
.view-toggle button.is-active{background:var(--ink);color:#fff}

.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px}
.d-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--rule);
  border-radius:10px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.d-card.is-partner{border-color:var(--river);box-shadow:0 1px 3px rgba(0,0,0,.06),0 0 0 1px var(--river)}
.d-card-body{padding:18px 18px 16px;display:flex;flex-direction:column;gap:8px;flex:1}
.d-card-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.d-card-body h3{margin:0;font-family:var(--font-display);font-weight:600;font-size:1.05rem;line-height:1.3}
.d-cat-pill{align-self:flex-start;background:var(--panel);border:1px solid var(--rule);color:var(--muted);
  border-radius:4px;padding:3px 9px;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.02em}
.d-card-desc{margin:0;color:var(--muted);font-size:.88rem;line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.d-card-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:auto;padding-top:10px;border-top:1px solid var(--paper-line);font-size:.82rem}
.d-loc,.d-phone{display:inline-flex;align-items:center;gap:5px;color:var(--muted)}
/* The heading icon had no size rule and rendered as a full-width blob at the
   default 300x150 replaced-element size. */
.results-heading svg{width:20px;height:20px;flex:0 0 auto;vertical-align:-3px;opacity:.6}
.results-heading{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.checked-badge.is-unchecked{color:var(--muted);opacity:.85}
.contact-static{display:block;font-size:.78rem;color:var(--muted);margin-top:2px;overflow-wrap:anywhere}
.checked-badge{display:block;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.03em;
  color:var(--muted);margin:8px 0 0}
.unverified-note{flex:1;text-align:center;font-size:.8rem;color:var(--muted);font-style:italic;
  border:1px dashed var(--rule);border-radius:3px;padding:7px 10px}
.status-badge{display:inline-block;font-family:var(--font-mono);font-size:.66rem;letter-spacing:.04em;
  text-transform:uppercase;margin:6px 0 0;padding:2px 7px;border-radius:3px;border:1px solid var(--rule);color:var(--muted)}
.status-closed{border-style:solid;font-weight:600}
.status-uncertain,.status-unverifiable{border-style:dashed}
.contact-page-btn{font-weight:400}
.hpt-disclosure{margin:8px 0 0;font-size:.74rem;line-height:1.45;color:var(--muted)}
.dir-disclosure{border:1px solid var(--rule);background:var(--panel);padding:16px 18px;margin:0 0 22px}
.dir-disclosure p{margin:0 0 8px;font-size:.86rem;color:var(--muted)}
.dir-disclosure p:last-child{margin-bottom:0}
.d-loc svg,.d-phone svg{width:13px;height:13px;flex:0 0 auto}
.d-phone{color:var(--river);text-decoration:none;font-weight:600}
.d-phone:hover{text-decoration:underline}
.d-card-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.d-card-actions .quote-btn,.d-card-actions .unverified-note{flex:1 1 100%;text-align:center}
/* The claim link carries a full sentence — it gets its own row rather than
   being squeezed beside the contact CTA and clipped at the card edge. */
.d-card-actions .claim-btn{flex:1 1 100%;text-align:center;font-size:.72rem}

.card-grid.is-list{grid-template-columns:1fr}

@media (max-width:640px){
  .dir-hero{min-height:0;padding:44px 0}
  .dir-hero h1{font-size:1.85rem}
  .dir-search-pill{flex-direction:column;border-radius:16px;gap:8px}
  .dir-search-pill button{border-radius:10px}
  .results-bar{flex-direction:column;align-items:flex-start}
}
@media (prefers-color-scheme:dark){
  .d-card{background:var(--panel)}
  .pill-bar-wrap{background:var(--panel)}
  .pill,.results-controls select,.view-toggle button,.d-search-pill input{background:var(--paper)}
  .dir-search-pill{background:#20261f}
  .dir-search-pill input{color:var(--ink)}
  .dir-search-pill button{background:var(--river);color:#0f130f}
}
