/* ============================================================
   Afro Resource Center — economic resources by the block.
   Palette: soil / ivory / prosperity gold / growth green / clay.
   Type: Bricolage Grotesque (display), Public Sans (UI), DM Mono (data).
   ============================================================ */
:root{
  --soil:   #241A12;   /* deep warm espresso — text + dark sections */
  --soil-2: #34271C;   /* raised dark surface */
  --ivory:  #FBF6EC;   /* warm paper background */
  --panel:  #FFFFFF;   /* cards */
  --sand:   #EADFCB;   /* borders / muted panels */
  --sand-2: #F1E8D8;
  --gold:   #C8862A;   /* prosperity — primary accent */
  --gold-d: #A56E1F;
  --green:  #2E5E4E;   /* growth — secondary */
  --green-l:#3E7A65;
  --clay:   #B5502F;   /* tertiary, sparing */
  --tx:     #241A12;
  --tx-2:   #6B5C4B;   /* muted text on light */
  --tx-3:   #91826D;
  --on-dark:#F4ECDD;
  --on-dark-2:#C3B29A;

  --disp:'Bricolage Grotesque', Georgia, serif;
  --ui:  'Public Sans', system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
  --mono:'DM Mono', ui-monospace, Menlo, monospace;

  --wrap:1120px;
  --pad:clamp(18px,5vw,64px);
  --r:16px;
}
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{ margin:0; background:var(--ivory); color:var(--tx); font-family:var(--ui);
  font-size:clamp(15px,1.02vw,16.5px); line-height:1.6; -webkit-font-smoothing:antialiased; overflow-x:hidden; }
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
::selection{ background:var(--gold); color:#fff; }
:focus-visible{ outline:2.5px solid var(--gold); outline-offset:2px; border-radius:4px; }
h1,h2,h3{ font-family:var(--disp); font-weight:700; line-height:1.05; letter-spacing:-.02em; margin:0; }

.wrap{ max-width:var(--wrap); margin-inline:auto; padding-inline:var(--pad); }
.eyebrow{ font-family:var(--mono); font-size:12px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--gold-d); margin:0 0 16px; font-weight:500; }

/* ---------- Nav ---------- */
.nav{ position:sticky; top:0; z-index:60; display:flex; align-items:center; justify-content:space-between;
  gap:18px; padding:14px var(--pad); background:rgba(251,246,236,.86); backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px); border-bottom:1px solid var(--sand); }
.brand{ display:flex; align-items:center; gap:11px; font-family:var(--disp); font-weight:800; font-size:18px; letter-spacing:-.02em; }
.brand .mark{ width:34px; height:34px; flex:none; }
.nav-links{ display:flex; align-items:center; gap:26px; }
.nav-links a{ font-size:14.5px; color:var(--tx-2); font-weight:600; transition:color .18s; }
.nav-links a:hover{ color:var(--soil); }
.nav-toggle{ display:none; background:none; border:0; color:var(--soil); cursor:pointer; padding:6px; }

.btn{ font-family:var(--ui); font-weight:700; font-size:15px; cursor:pointer; border:0; border-radius:100px;
  padding:12px 22px; display:inline-flex; align-items:center; gap:8px; transition:transform .16s, box-shadow .22s, background .2s; }
.btn-gold{ background:var(--gold); color:#241206; box-shadow:0 6px 20px -8px rgba(200,134,42,.7); }
.btn-gold:hover{ background:var(--gold-d); color:#fff; transform:translateY(-1px); }
.btn-dark{ background:var(--soil); color:var(--on-dark); }
.btn-dark:hover{ background:var(--soil-2); }

/* ---------- Hero + search (the signature) ---------- */
.hero{ position:relative; background:var(--soil); color:var(--on-dark); overflow:hidden; }
.hero-dots{ position:absolute; inset:0; opacity:.5;
  background-image:radial-gradient(rgba(200,134,42,.32) 1.3px, transparent 1.4px);
  background-size:26px 26px; -webkit-mask-image:radial-gradient(ellipse 90% 75% at 50% 30%, #000 40%, transparent 78%);
  mask-image:radial-gradient(ellipse 90% 75% at 50% 30%, #000 40%, transparent 78%); }
.hero-inner{ position:relative; max-width:860px; margin-inline:auto; padding:clamp(48px,8vw,104px) var(--pad) clamp(40px,6vw,72px); text-align:center; }
.hero .eyebrow{ color:var(--gold); }
.hero h1{ font-size:clamp(34px,6vw,66px); color:#fff; letter-spacing:-.03em; }
.hero h1 .u{ color:var(--gold); }
.hero-sub{ font-size:clamp(16px,1.5vw,20px); color:var(--on-dark-2); max-width:44ch; margin:22px auto 0; }

/* search */
.search{ margin:clamp(28px,4vw,44px) auto 0; max-width:560px; }
.search-shell{ display:flex; gap:10px; background:var(--panel); border-radius:100px; padding:8px 8px 8px 22px;
  box-shadow:0 24px 60px -24px rgba(0,0,0,.6); align-items:center; }
.search-shell .zippre{ font-family:var(--mono); color:var(--tx-3); font-size:18px; flex:none; }
.search input{ flex:1; min-width:0; border:0; background:transparent; font-family:var(--mono); font-size:clamp(20px,3vw,26px);
  letter-spacing:.22em; color:var(--soil); padding:10px 2px; }
.search input::placeholder{ color:#cbb9a0; letter-spacing:.22em; }
.search input:focus{ outline:none; }
.search .btn-gold{ flex:none; padding:14px 24px; }
.search-hint{ margin:16px 0 0; font-family:var(--mono); font-size:12.5px; color:var(--on-dark-2); letter-spacing:.02em; }
.search-hint b{ color:var(--gold); font-weight:400; cursor:pointer; }
.search-hint b:hover{ text-decoration:underline; }
.search-err{ margin:14px auto 0; max-width:520px; background:rgba(181,80,47,.16); border:1px solid rgba(181,80,47,.4);
  color:#f0c0ad; border-radius:12px; padding:12px 16px; font-size:14px; }

/* ---------- Place banner (results header) ---------- */
.place{ background:var(--green); color:#fff; }
.place-inner{ padding:clamp(26px,4vw,42px) 0; display:flex; flex-wrap:wrap; align-items:center; gap:14px 28px; }
.place-zip{ font-family:var(--mono); font-size:clamp(34px,6vw,58px); font-weight:500; letter-spacing:.04em; line-height:1; }
.place-where{ font-family:var(--disp); font-weight:700; font-size:clamp(20px,2.4vw,30px); }
.place-where span{ display:block; font-family:var(--mono); font-size:12px; letter-spacing:.18em; text-transform:uppercase;
  color:rgba(255,255,255,.7); font-weight:400; margin-top:4px; }
.demo{ margin-left:auto; display:flex; align-items:center; gap:16px; background:rgba(0,0,0,.18); border-radius:14px; padding:12px 18px; }
.demo .bar{ width:120px; height:10px; border-radius:6px; background:rgba(255,255,255,.2); overflow:hidden; }
.demo .bar i{ display:block; height:100%; background:var(--gold); border-radius:6px; }
.demo .pct{ font-family:var(--mono); font-size:22px; font-weight:500; }
.demo .pct small{ display:block; font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:rgba(255,255,255,.7); }
.demo-note{ font-size:12px; color:rgba(255,255,255,.62); margin-left:auto; max-width:24ch; font-family:var(--mono); }

/* ---------- Results / directory ---------- */
.results{ padding:clamp(40px,6vw,72px) 0; }
.res-count{ font-family:var(--mono); font-size:13px; color:var(--tx-2); letter-spacing:.04em; margin:0 0 30px; }
.cat{ margin-bottom:clamp(34px,5vw,52px); }
.cat-head{ display:flex; align-items:baseline; gap:14px; border-bottom:2px solid var(--sand); padding-bottom:12px; margin-bottom:22px; }
.cat-head h2{ font-size:clamp(21px,2.4vw,28px); }
.cat-head .n{ font-family:var(--mono); font-size:13px; color:var(--gold-d); }
.cat-head p{ margin:0 0 0 auto; color:var(--tx-2); font-size:14px; max-width:40ch; text-align:right; }
.cards{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:16px; }
.card{ position:relative; background:var(--panel); border:1px solid var(--sand); border-radius:var(--r); padding:22px 22px 20px;
  transition:transform .2s, box-shadow .2s, border-color .2s; display:flex; flex-direction:column; }
.card:hover{ transform:translateY(-3px); box-shadow:0 18px 40px -24px rgba(36,26,18,.4); border-color:var(--gold); }
.card .tag{ font-family:var(--mono); font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--green);
  font-weight:500; margin-bottom:10px; }
.card .tag.local{ color:var(--clay); }
.card h3{ font-size:19px; line-height:1.2; margin:0 0 8px; }
.card p{ margin:0 0 16px; color:var(--tx-2); font-size:14px; line-height:1.55; flex:1; }
.card .go{ font-family:var(--ui); font-weight:700; font-size:14px; color:var(--gold-d); display:inline-flex; align-items:center; gap:6px; }
.card .go svg{ width:15px; height:15px; transition:transform .2s; }
.card:hover .go svg{ transform:translate(2px,-2px); }
.card a.cover{ position:absolute; inset:0; border-radius:var(--r); }
.card .elig{ font-size:13px; color:var(--tx); background:var(--sand-2); border:1px solid var(--sand);
  border-radius:9px; padding:8px 11px; margin:0 0 14px; line-height:1.4; }
.card .elig span{ display:block; font-family:var(--mono); font-size:9.5px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--green); margin-bottom:2px; }
.grants-help{ background:var(--soil); color:var(--on-dark); border-radius:var(--r); padding:20px 24px; margin-bottom:20px; }
.grants-help strong{ font-family:var(--disp); font-size:16px; color:var(--gold); display:block; margin-bottom:10px; }
.grants-help ol{ margin:0; padding-left:20px; display:flex; flex-direction:column; gap:7px; }
.grants-help li{ font-size:14.5px; color:var(--on-dark-2); line-height:1.5; }
.grants-help li em{ color:var(--on-dark); font-style:normal; font-weight:600; }
.grants-help li b{ color:var(--gold); }

/* ---------- Reach grouping (Nationwide vs State-specific) ---------- */
.reach-block{ margin-bottom:clamp(26px,4vw,48px); }
.reach-head{ display:flex; align-items:center; gap:11px; font-family:var(--mono); font-size:13px; font-weight:500;
  letter-spacing:.2em; text-transform:uppercase; color:var(--soil); margin:0 0 24px; padding-bottom:12px;
  border-bottom:2px solid var(--soil); }
.reach-dot{ width:10px; height:10px; border-radius:50%; background:var(--gold); flex:none; }
.reach-dot.local{ background:var(--green); }
.stategroup .cat-head{ border-bottom-color:var(--sand); }
.card .tag.topic{ color:var(--green); }

/* ---------- Browse-by-state tile grid ---------- */
.statemap{ padding-top:clamp(30px,5vw,56px); }
.tilegrid{ display:grid; grid-template-columns:repeat(11,1fr); grid-auto-rows:1fr; gap:6px;
  max-width:660px; margin:8px auto 0; }
.tile{ position:relative; aspect-ratio:1; display:flex; align-items:center; justify-content:center;
  border-radius:8px; background:var(--sand); color:var(--tx-3); font-family:var(--mono); font-size:11px;
  font-weight:500; text-decoration:none; transition:transform .14s ease, background .2s ease, color .2s ease; }
.tile:hover{ transform:translateY(-2px); background:var(--sand-2); color:var(--soil); z-index:2; }
.tile.has-local{ background:var(--gold); color:#2a1706; }
.tile.has-local:hover{ background:var(--gold-d); color:#fff; }
.tile.active{ outline:2.5px solid var(--soil); outline-offset:1px; }
.tile .cnt{ position:absolute; top:-5px; right:-5px; min-width:15px; height:15px; padding:0 3px; border-radius:8px;
  background:var(--green); color:#fff; font-size:9px; font-style:normal; display:flex; align-items:center; justify-content:center; }
.tile-legend{ display:flex; gap:18px; justify-content:center; margin:18px 0 0; font-size:12.5px; color:var(--tx-2); }
.tile-legend i{ width:12px; height:12px; border-radius:3px; display:inline-block; vertical-align:-1px; margin-right:6px; }

.state-result{ margin-top:clamp(30px,4vw,48px); }
.state-banner{ display:flex; align-items:center; gap:16px; background:var(--green); color:#fff;
  border-radius:14px; padding:18px 24px; margin-bottom:8px; }
.state-banner .sb-name{ font-family:var(--disp); font-weight:700; font-size:clamp(20px,2.6vw,30px); display:block; }
.state-banner .sb-sub{ font-family:var(--mono); font-size:12px; letter-spacing:.04em; color:rgba(255,255,255,.8); }
.state-banner .sb-clear{ margin-left:auto; font-family:var(--mono); font-size:12px; color:#fff; border:1px solid rgba(255,255,255,.4);
  padding:7px 13px; border-radius:100px; text-decoration:none; }
.state-banner .sb-clear:hover{ background:rgba(255,255,255,.14); }
@media (max-width:520px){ .tilegrid{ gap:4px; } .tile{ font-size:9px; border-radius:6px; } .tile .cnt{ display:none; } }

/* ---------- Section intro (directory default) ---------- */
.sec-intro{ padding:clamp(40px,6vw,64px) 0 8px; max-width:640px; }
.sec-intro h2{ font-size:clamp(24px,3.4vw,38px); }
.sec-intro p{ color:var(--tx-2); margin:14px 0 0; font-size:clamp(15px,1.2vw,17px); }

/* ---------- About strip ---------- */
.about{ background:var(--sand-2); border-top:1px solid var(--sand); border-bottom:1px solid var(--sand); }
.about-inner{ padding:clamp(44px,6vw,76px) 0; display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,5vw,64px); align-items:center; }
.about h2{ font-size:clamp(24px,3vw,36px); }
.about h2 em{ font-style:normal; color:var(--green); }
.about p{ color:var(--tx-2); margin:14px 0 0; }
.steps{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:14px; }
.steps li{ display:flex; gap:14px; align-items:flex-start; }
.steps .num{ font-family:var(--mono); font-size:13px; color:#fff; background:var(--green); width:30px; height:30px; border-radius:50%;
  display:flex; align-items:center; justify-content:center; flex:none; margin-top:2px; }
.steps b{ font-family:var(--disp); font-size:17px; display:block; }
.steps span{ color:var(--tx-2); font-size:14px; }

/* ---------- Footer ---------- */
.foot{ background:var(--soil); color:var(--on-dark-2); }
.foot-inner{ padding:clamp(40px,5vw,64px) 0 24px; display:flex; flex-wrap:wrap; gap:26px; justify-content:space-between; align-items:flex-start; }
.foot .brand{ color:#fff; }
.foot-links{ display:flex; flex-direction:column; gap:9px; }
.foot-links a{ color:var(--on-dark-2); font-size:14.5px; width:max-content; }
.foot-links a:hover{ color:var(--gold); }
.foot-note{ max-width:34ch; font-size:13px; color:var(--on-dark-2); line-height:1.55; }
.foot-bottom{ border-top:1px solid rgba(255,255,255,.1); padding:18px 0; font-family:var(--mono); font-size:11.5px;
  letter-spacing:.08em; color:var(--on-dark-2); display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.foot-bottom a{ color:var(--on-dark-2); } .foot-bottom a:hover{ color:var(--gold); }

/* ---------- Plain-language explainer ---------- */
.cat-explain{ display:flex; gap:9px; align-items:flex-start; margin:-8px 0 22px; color:var(--tx-2);
  font-size:14px; line-height:1.5; max-width:70ch; }
.cat-explain svg{ width:17px; height:17px; color:var(--gold-d); flex:none; margin-top:2px; }

/* ---------- Start-here + search filter ---------- */
.filterbar{ display:flex; flex-wrap:wrap; gap:14px 20px; align-items:center; justify-content:space-between;
  padding:16px 0 4px; border-top:1px solid var(--sand); }
.needs{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.needs-label{ font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--tx-3); margin-right:4px; }
.need-chip{ font-family:var(--ui); font-size:13.5px; font-weight:600; cursor:pointer; border:1px solid var(--sand);
  background:var(--panel); color:var(--tx-2); border-radius:100px; padding:8px 15px; transition:all .18s; }
.need-chip:hover{ border-color:var(--gold); color:var(--soil); }
.need-chip.active{ background:var(--soil); color:var(--on-dark); border-color:var(--soil); }
.filter-search{ display:flex; align-items:center; gap:8px; background:var(--panel); border:1px solid var(--sand);
  border-radius:100px; padding:9px 16px; min-width:min(260px,100%); }
.filter-search svg{ width:16px; height:16px; color:var(--tx-3); flex:none; }
.filter-search input{ border:0; background:transparent; font-family:var(--ui); font-size:14.5px; color:var(--tx); width:100%; }
.filter-search input:focus{ outline:none; }
.no-match{ text-align:center; color:var(--tx-2); padding:30px 0; }
.no-match a{ color:var(--gold-d); text-decoration:underline; }

/* ---------- Card report button ---------- */
.card-report{ position:absolute; top:9px; right:9px; z-index:3; width:26px; height:26px; border-radius:7px;
  border:1px solid transparent; background:transparent; color:var(--tx-3); cursor:pointer; font-size:13px;
  line-height:1; display:flex; align-items:center; justify-content:center; opacity:.5; transition:all .18s; }
.card:hover .card-report{ opacity:1; }
.card-report:hover{ background:rgba(181,80,47,.12); color:var(--clay); border-color:rgba(181,80,47,.3); }
.card .cover{ z-index:1; }

/* ---------- Suggest a resource ---------- */
.suggest{ background:var(--soil); color:var(--on-dark); }
.suggest-inner{ padding:clamp(44px,6vw,76px) var(--pad); display:grid; grid-template-columns:1fr 1.1fr; gap:clamp(28px,5vw,64px); align-items:center; }
.suggest .eyebrow{ color:var(--gold); }
.suggest h2{ font-size:clamp(24px,3.2vw,38px); color:#fff; }
.suggest-copy p{ color:var(--on-dark-2); margin:14px 0 0; max-width:38ch; }
.suggest-form{ background:var(--soil-2); border:1px solid rgba(244,236,221,.1); border-radius:16px; padding:22px; }
.sf-row{ display:flex; gap:12px; margin-bottom:12px; }
.suggest-form input,.suggest-form select,.suggest-form textarea{ width:100%; font-family:var(--ui); font-size:15px;
  color:var(--on-dark); background:#1c140d; border:1px solid rgba(244,236,221,.16); border-radius:10px; padding:11px 13px; }
.suggest-form textarea{ min-height:72px; resize:vertical; margin-bottom:12px; line-height:1.5; }
.suggest-form input:focus,.suggest-form select:focus,.suggest-form textarea:focus{ outline:none; border-color:var(--gold); box-shadow:0 0 0 3px rgba(200,134,42,.18); }
.suggest-form select option{ color:#111; }
#sfState{ max-width:80px; text-transform:uppercase; flex:none; }
.sf-actions{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.sf-msg{ font-size:13.5px; }
.sf-msg.ok{ color:var(--sage-hi,#9DB39A); } .sf-msg.err{ color:#e6b3a5; }
.hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

/* ---------- Modal ---------- */
.modal{ position:fixed; inset:0; z-index:100; display:flex; align-items:center; justify-content:center; padding:20px; }
.modal[hidden]{ display:none; }
.modal-scrim{ position:absolute; inset:0; background:rgba(20,14,8,.6); backdrop-filter:blur(2px); }
.modal-box{ position:relative; background:var(--panel); color:var(--tx); border-radius:16px; padding:26px; width:100%;
  max-width:420px; box-shadow:0 30px 70px -20px rgba(0,0,0,.5); }
.modal-box h3{ font-family:var(--disp); font-size:21px; }
.modal-sub{ color:var(--tx-2); font-size:14px; margin:6px 0 18px; }
.modal-box label{ display:block; font-family:var(--mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--tx-3); margin:0 0 7px; }
.modal-box select,.modal-box textarea{ width:100%; font-family:var(--ui); font-size:15px; color:var(--tx);
  background:var(--ivory); border:1px solid var(--sand); border-radius:10px; padding:11px 13px; margin-bottom:14px; }
.modal-box textarea{ min-height:70px; resize:vertical; line-height:1.5; }
.modal-x{ position:absolute; top:12px; right:14px; background:none; border:0; font-size:24px; color:var(--tx-3); cursor:pointer; line-height:1; }
.modal-x:hover{ color:var(--soil); }

/* ---------- Reveal ---------- */
.js [data-reveal]{ opacity:0; transform:translateY(16px); }
.js [data-reveal].in{ opacity:1; transform:none; transition:opacity .6s ease, transform .6s ease; }
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto;} .js [data-reveal]{opacity:1;transform:none;} }

/* ---------- Responsive ---------- */
@media (max-width:820px){
  .nav-links{ position:fixed; inset:0 0 auto 0; flex-direction:column; align-items:flex-start; gap:4px;
    padding:76px var(--pad) 24px; background:var(--ivory); border-bottom:1px solid var(--sand); transform:translateY(-102%);
    transition:transform .35s ease; box-shadow:0 24px 50px -30px rgba(0,0,0,.4); }
  .nav-links.open{ transform:none; }
  .nav-links a{ font-size:18px; padding:9px 0; }
  .nav-toggle{ display:inline-flex; z-index:70; }
  .about-inner{ grid-template-columns:1fr; }
  .cat-head p{ display:none; }
  .demo,.demo-note{ margin-left:0; }
}
@media (max-width:520px){
  .search-shell{ flex-wrap:wrap; border-radius:20px; padding:14px; }
  .search input{ width:100%; text-align:center; }
  .search .btn-gold{ width:100%; justify-content:center; }
  .search-shell .zippre{ display:none; }
  .place-inner{ gap:12px; }
}
