/*
Theme Name: TAP Charity Inc. (Block)
Theme URI: https://tapcharityinc.org
Author: TAP Charity Inc.
Author URI: https://tapcharityinc.org
Description: Block (Full Site Editing) theme for TAP Charity Inc. (TSEC Alumni Philanthropy). Recreates the tapcharityinc.org design with the H.E.L.P. framework, faithful project pages (as editable patterns), and a filterable News & Updates feed. Edit every template in Appearance → Editor; design tokens live in theme.json. Built on the TAP design system.
Version: 1.0.0
Requires at least: 6.4
Tested up to: 6.5
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: tap-charity-block
*/

/* ============================================================
   TAP Charity Inc. — Design Tokens
   (ported from colors_and_type.css)
   ============================================================ */

:root {
  /* MARIGOLD (primary brand) */
  --tap-marigold-900:#5C3F00; --tap-marigold-800:#8A5F0A; --tap-marigold-700:#B97F12;
  --tap-marigold-600:#DEA01D; --tap-marigold-500:#FEC733; --tap-marigold-400:#FED561;
  --tap-marigold-300:#FFE08A; --tap-marigold-200:#FFEBB3; --tap-marigold-100:#FFF5D9; --tap-marigold-50:#FFFBED;

  /* FOREST (ink / structural green) */
  --tap-forest-900:#0A2614; --tap-forest-800:#124022; --tap-forest-700:#1A3B27;
  --tap-forest-600:#244F35; --tap-forest-500:#36684B; --tap-forest-400:#4E7A62;
  --tap-forest-300:#759A85; --tap-forest-200:#A5BDB0; --tap-forest-100:#D0DDD5; --tap-forest-50:#ECF2EE;

  /* BRAND BLUE */
  --tap-blue-900:#0F2A47; --tap-blue-800:#1B4570; --tap-blue-700:#2A5F94;
  --tap-blue-600:#3A7FBD; --tap-blue-500:#5A98CC; --tap-blue-400:#82B3D8;
  --tap-blue-300:#A8C9E2; --tap-blue-200:#C9DCEB; --tap-blue-100:#E5EFF6; --tap-blue-50:#F4F8FC;

  /* back-compat aliases */
  --tap-teal-900:var(--tap-forest-900); --tap-teal-800:var(--tap-forest-800); --tap-teal-700:var(--tap-forest-600);
  --tap-teal-600:var(--tap-forest-500); --tap-teal-500:var(--tap-forest-400); --tap-teal-400:var(--tap-forest-300);
  --tap-teal-300:var(--tap-forest-200); --tap-teal-200:var(--tap-forest-100); --tap-teal-100:var(--tap-forest-50); --tap-teal-50:#F4F8F5;
  --tap-saffron-900:var(--tap-marigold-900); --tap-saffron-800:var(--tap-marigold-800); --tap-saffron-700:var(--tap-marigold-700);
  --tap-saffron-600:var(--tap-marigold-500); --tap-saffron-500:var(--tap-marigold-400); --tap-saffron-400:var(--tap-marigold-300);
  --tap-saffron-300:var(--tap-marigold-200); --tap-saffron-200:var(--tap-marigold-100); --tap-saffron-100:var(--tap-marigold-50);
  --tap-sage-600:var(--tap-forest-600); --tap-sage-500:var(--tap-forest-500);

  /* neutrals — warm */
  --tap-ink:#14222B; --tap-graphite:#2D3D48; --tap-slate:#5A6975; --tap-mist:#8A98A4;
  --tap-sand:#D9D2C1; --tap-border:#E5DFD3; --tap-divider:#EFEADF;
  --tap-cloud:#F6F2EA; --tap-paper:#FBF8F2; --tap-snow:#FFFFFF;

  /* pillars */
  --tap-health:#C0413B;        --tap-health-bg:#FBEEED;
  --tap-education:#2A5F94;      --tap-education-bg:#E5EFF6;
  --tap-livelihoods:#B97F12;   --tap-livelihoods-bg:#FFF5D9;
  --tap-psychosocial:#7A4FA8;  --tap-psychosocial-bg:#F1ECF7;

  /* semantic */
  --bg:var(--tap-paper); --bg-elevated:var(--tap-snow); --bg-muted:var(--tap-cloud);
  --fg1:var(--tap-ink); --fg2:var(--tap-graphite); --fg3:var(--tap-slate); --fg4:var(--tap-mist);
  --border:var(--tap-border); --divider:var(--tap-divider);
  --brand:var(--tap-forest-600); --accent:var(--tap-marigold-500); --link:var(--tap-blue-700); --link-hover:var(--tap-marigold-700);

  /* type */
  --font-serif:"Source Serif 4","Charter",Georgia,serif;
  --font-sans:"Manrope",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
  --font-mono:"JetBrains Mono","SF Mono",Menlo,monospace;
  --font-display:var(--font-serif); --font-body:var(--font-sans);
  --font-hand:"Caveat","Kalam",var(--font-display);

  /* radii */
  --radius-xs:4px; --radius-sm:6px; --radius-md:10px; --radius-lg:16px; --radius-xl:24px; --radius-pill:999px;

  /* shadows */
  --shadow-xs:0 1px 2px rgba(20,34,43,.04);
  --shadow-sm:0 2px 4px rgba(20,34,43,.05),0 1px 2px rgba(20,34,43,.04);
  --shadow-md:0 4px 12px rgba(20,34,43,.06),0 2px 4px rgba(20,34,43,.04);
  --shadow-lg:0 12px 32px rgba(20,34,43,.08),0 4px 8px rgba(20,34,43,.04);
  --shadow-xl:0 24px 48px rgba(18,64,34,.12),0 8px 16px rgba(20,34,43,.06);

  --ease-out:cubic-bezier(.22,1,.36,1); /* @kind other */
}

/* ============================================================
   BASE / RESET
   ============================================================ */
*,*::before,*::after { box-sizing:border-box; }
html { -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale; text-rendering:optimizeLegibility; scroll-behavior:smooth; }
body {
  margin:0; background:var(--bg); color:var(--fg1);
  font-family:var(--font-sans); font-size:16px; line-height:1.55;
}
img { max-width:100%; height:auto; display:block; }
a { color:var(--link); text-decoration:none; text-underline-offset:3px; transition:color 140ms var(--ease-out); }
a:hover { color:var(--link-hover); }
h1,h2,h3,h4,h5,h6 { font-family:var(--font-display); color:var(--tap-forest-800); font-weight:500; line-height:1.15; letter-spacing:-.02em; margin:0; text-wrap:balance; }
p { margin:0; text-wrap:pretty; }
::selection { background:var(--tap-marigold-200); color:var(--tap-forest-900); }
.skip-link { position:absolute; left:-9999px; }
.skip-link:focus { left:16px; top:16px; background:#fff; padding:10px 16px; border-radius:8px; z-index:200; }

/* ============================================================
   LAYOUT
   ============================================================ */
.container { max-width:1200px; margin:0 auto; padding-left:32px; padding-right:32px; }
.container--narrow { max-width:1080px; }
.container--tight  { max-width:760px; }
.section { padding-top:88px; padding-bottom:88px; }
.section--sm { padding-top:64px; padding-bottom:64px; }
.bg-paper { background:var(--tap-paper); }
.bg-cloud { background:var(--tap-cloud); border-top:1px solid var(--tap-sand); border-bottom:1px solid var(--tap-sand); }
.bg-forest { background:var(--tap-forest-900); color:#fff; }
.bg-forest-800 { background:var(--tap-forest-800); color:#fff; }
.text-center { text-align:center; }

/* ============================================================
   TYPOGRAPHY HELPERS
   ============================================================ */
.eyebrow { font-family:var(--font-sans); font-size:12px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--tap-marigold-700); }
.eyebrow--blue { color:var(--tap-blue-700); }
.eyebrow--teal { color:var(--tap-forest-600); }
.eyebrow--gold { color:var(--tap-marigold-400); }
.display { font-family:var(--font-display); font-size:clamp(48px,6vw,76px); font-weight:500; line-height:1.02; letter-spacing:-.025em; color:var(--tap-forest-800); }
.h1 { font-family:var(--font-display); font-size:clamp(40px,5vw,64px); font-weight:500; line-height:1.05; letter-spacing:-.025em; color:var(--tap-forest-800); }
.h2 { font-family:var(--font-display); font-size:clamp(32px,4vw,48px); font-weight:500; line-height:1.1; letter-spacing:-.02em; color:var(--tap-forest-800); }
.h3 { font-family:var(--font-display); font-size:26px; font-weight:500; line-height:1.2; color:var(--tap-forest-800); }
.lead { font-size:19px; line-height:1.55; color:var(--fg2); }
.muted { color:var(--fg3); }
.mono { font-family:var(--font-mono); }
.em-gold { color:var(--tap-marigold-700); font-style:italic; font-weight:500; }
.section-head { max-width:680px; margin:0 auto 48px; }
.section-head.text-center { text-align:center; }
.section-head .h2, .section-head .h1 { margin:14px 0 14px; }
.section-head p { font-size:17px; line-height:1.55; color:var(--fg2); }

/* ============================================================
   BUTTONS
   ============================================================ */
.btn { font-family:var(--font-sans); font-weight:600; border:0; cursor:pointer; display:inline-flex; align-items:center; gap:8px;
  transition:all 140ms var(--ease-out); white-space:nowrap; font-size:14px; padding:12px 22px; border-radius:var(--radius-pill); text-decoration:none; }
.btn:hover { text-decoration:none; }
.btn--lg { font-size:16px; padding:14px 28px; }
.btn--sm { font-size:13px; padding:8px 16px; }
.btn--primary { background:var(--tap-forest-600); color:#fff; box-shadow:var(--shadow-sm); }
.btn--primary:hover { background:var(--tap-forest-800); color:#fff; box-shadow:var(--shadow-md); transform:translateY(-1px); }
.btn--accent { background:var(--tap-marigold-500); color:var(--tap-forest-900); box-shadow:var(--shadow-sm); }
.btn--accent:hover { background:var(--tap-marigold-700); color:var(--tap-forest-900); box-shadow:var(--shadow-lg); transform:translateY(-2px); }
.btn--secondary { background:transparent; color:var(--tap-forest-600); border:1.5px solid var(--tap-forest-600); border-radius:var(--radius-md); }
.btn--secondary:hover { background:var(--tap-forest-50); color:var(--tap-forest-600); }
.btn--ghost { background:transparent; color:var(--tap-forest-800); border-radius:var(--radius-md); }
.btn--ghost:hover { background:var(--tap-cloud); color:var(--tap-forest-800); }
.btn--ghost-light { background:rgba(255,255,255,.08); color:#fff; }
.btn--ghost-light:hover { background:rgba(255,255,255,.16); color:#fff; }

/* ============================================================
   BADGES + CHIPS
   ============================================================ */
.badge { display:inline-flex; align-items:center; gap:5px; padding:4px 11px; border-radius:var(--radius-pill); font-size:11.5px; font-weight:600; letter-spacing:.02em; }
.badge--neutral { background:var(--tap-cloud); color:var(--fg2); }
.badge--teal { background:var(--tap-forest-50); color:var(--tap-forest-800); }
.badge--saffron { background:var(--tap-marigold-100); color:var(--tap-marigold-800); }
.badge--sage { background:#D0DDD5; color:#244F35; }
.badge--indigo { background:#E5EFF6; color:#2A5F94; }
.badge--violet { background:#F1ECF7; color:#7A4FA8; }
.icon-chip { width:56px; height:56px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:25px; flex-shrink:0; }
.icon-chip--teal { background:var(--tap-forest-50); } .icon-chip--saffron { background:var(--tap-marigold-100); } .icon-chip--sage { background:#D0DDD5; }
.icon-chip--health { background:#FBEEED; } .icon-chip--education { background:#E5EFF6; } .icon-chip--livelihoods { background:#FFF5D9; } .icon-chip--psychosocial { background:#F1ECF7; }
.chip { font-size:12px; font-weight:600; color:var(--tap-forest-700); background:var(--tap-cloud); border:1px solid var(--tap-sand); padding:5px 11px; border-radius:var(--radius-pill); }

/* ============================================================
   CARDS
   ============================================================ */
.card { background:#fff; border:1px solid var(--tap-border); border-radius:var(--radius-lg); box-shadow:var(--shadow-sm); }
.card--warm { background:var(--tap-cloud); border:1px solid var(--tap-sand); border-radius:var(--radius-lg); }
.dashed-top { border-top:1px dashed var(--divider); }

/* Pillar tile */
.pillar-tile { background:#fff; border:1px solid var(--tap-border); border-radius:var(--radius-lg); padding:28px 24px;
  position:relative; overflow:hidden; box-shadow:var(--shadow-sm); transition:all 220ms var(--ease-out); }
.pillar-tile:hover { box-shadow:var(--shadow-lg); transform:translateY(-4px); }
.pillar-tile .accent-bar { position:absolute; left:0; right:0; top:0; height:3px; }
.pillar-tile .icon-circle { width:64px; height:64px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:32px; margin-bottom:14px; }
.pillar-tile h3 { font-size:26px; margin:0 0 8px; color:var(--tap-forest-900); }
.pillar-tile p { font-size:15px; line-height:1.5; color:var(--fg2); margin:0; }

/* Stat */
.stat .stat-value { font-family:var(--font-display); font-size:64px; line-height:1; font-weight:500; color:var(--tap-forest-900); letter-spacing:-.02em; }
.stat .stat-label { font-size:12px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--fg3); margin-top:10px; }
.stat .stat-sub { font-size:13px; color:var(--fg2); margin-top:6px; line-height:1.4; }

/* grids */
.grid { display:grid; gap:16px; }
.grid-2 { grid-template-columns:repeat(2,1fr); }
.grid-3 { grid-template-columns:repeat(3,1fr); }
.grid-4 { grid-template-columns:repeat(4,1fr); }
.grid-5 { grid-template-columns:repeat(5,1fr); }
.flex { display:flex; }
.flex-col { display:flex; flex-direction:column; }
.gap-8 { gap:8px; } .gap-12 { gap:12px; } .gap-16 { gap:16px; } .gap-24 { gap:24px; }
.items-center { align-items:center; } .justify-between { justify-content:space-between; }
.flex-wrap { flex-wrap:wrap; }

/* ============================================================
   SITE HEADER
   ============================================================ */
.site-header { position:sticky; top:0; z-index:50; background:var(--tap-forest-500);
  border-bottom:1px solid rgba(255,255,255,.08); transition:all 220ms var(--ease-out); }
.site-header.scrolled { background:rgba(54,104,75,.96); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); box-shadow:0 2px 12px rgba(10,38,20,.25); }
.site-header .inner { max-width:1200px; margin:0 auto; padding:16px 32px; display:flex; align-items:center; justify-content:space-between; }
.site-brand { display:flex; align-items:center; gap:14px; }
.site-brand img { height:56px; width:56px; border-radius:8px; object-fit:cover; }
.site-brand .name { font-family:var(--font-display); font-size:18px; font-weight:600; color:#fff; line-height:1; }
.site-brand .tagline { font-size:10.5px; color:var(--tap-marigold-300); margin-top:3px; letter-spacing:.08em; text-transform:uppercase; font-weight:600; }
.site-nav { display:flex; gap:26px; align-items:center; }
.site-nav a { font-size:14px; color:rgba(255,255,255,.78); font-weight:500; padding-bottom:4px; border-bottom:2px solid transparent; transition:color 140ms,border-color 140ms; }
.site-nav a:hover { color:#fff; }
.site-nav a.active, .site-nav .current-menu-item > a { color:#fff; font-weight:600; border-bottom-color:var(--tap-marigold-500); }
.nav-donate { padding:11px 22px; background:var(--tap-marigold-500); color:var(--tap-forest-900); border:0; border-radius:var(--radius-pill);
  font-size:13.5px; font-weight:700; cursor:pointer; box-shadow:0 2px 8px rgba(254,199,51,.3); font-family:var(--font-sans); letter-spacing:.01em; }
.nav-donate:hover { color:var(--tap-forest-900); }
.nav-toggle { display:none; background:none; border:0; color:#fff; font-size:24px; cursor:pointer; }

/* ============================================================
   SITE FOOTER
   ============================================================ */
.site-footer { background:var(--tap-forest-900); color:rgba(255,255,255,.85); margin-top:96px; }
.site-footer .inner { max-width:1200px; margin:0 auto; padding:64px 32px 24px; }
.footer-grid { display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:40px; padding-bottom:32px; border-bottom:1px solid rgba(255,255,255,.12); }
.footer-grid h6 { font-family:var(--font-sans); font-size:11px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--tap-marigold-400); margin:0 0 14px; }
.footer-grid p { font-size:13px; line-height:1.6; color:rgba(255,255,255,.7); margin:0; }
.footer-grid ul { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.footer-grid a { color:rgba(255,255,255,.78); font-size:13px; }
.footer-grid a:hover { color:#fff; }
.footer-grid li { font-size:13px; color:rgba(255,255,255,.78); }
.footer-brand { display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.footer-brand img { height:38px; filter:brightness(0) invert(1); }
.footer-brand .name { font-family:var(--font-display); font-size:19px; font-weight:500; color:#fff; }
.footer-legal { display:flex; justify-content:space-between; align-items:center; padding-top:24px; font-size:11.5px; color:rgba(255,255,255,.55); font-family:var(--font-mono); letter-spacing:.02em; }

/* ============================================================
   HERO + HOME
   ============================================================ */
.hero-grid { display:grid; grid-template-columns:1.4fr 1fr; gap:64px; align-items:center; }
.hero-title { font-family:var(--font-display); font-size:clamp(48px,6vw,76px); line-height:1.02; font-weight:500; color:var(--tap-forest-900); letter-spacing:-.025em; margin:20px 0 24px; }
.hero-lead { font-size:19px; line-height:1.55; color:var(--fg2); max-width:560px; margin:0 0 32px; }
.cred-row { display:flex; gap:8px; margin-top:36px; align-items:center; font-size:12.5px; color:var(--fg3); flex-wrap:wrap; }
.cred-pill { font-family:var(--font-mono); background:var(--tap-forest-50); color:var(--tap-forest-800); padding:3px 8px; border-radius:4px; font-weight:600; letter-spacing:.02em; }
.hero-quote-card { background:var(--tap-cloud); border-radius:var(--radius-xl); padding:36px; border:1px solid var(--tap-sand); aspect-ratio:4/5; display:flex; flex-direction:column; justify-content:space-between; }
.pull-quote { font-family:var(--font-display); font-size:28px; line-height:1.25; color:var(--tap-forest-900); font-style:italic; margin:0; padding-left:16px; border-left:3px solid var(--tap-marigold-700); }
.pull-quote cite { display:block; font-family:var(--font-sans); font-size:12px; font-style:normal; color:var(--fg3); margin-top:14px; letter-spacing:.06em; text-transform:uppercase; font-weight:700; }
.mini-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; padding-top:22px; border-top:1px solid var(--tap-sand); }
.mini-stats .v { font-family:var(--font-display); font-size:28px; font-weight:500; color:var(--tap-forest-900); }
.mini-stats .l { font-size:10.5px; color:var(--fg3); letter-spacing:.1em; text-transform:uppercase; margin-top:2px; font-weight:700; }

.involve-card { background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.12); border-radius:var(--radius-lg); padding:24px 22px; display:flex; flex-direction:column; gap:12px; }
.involve-card h4 { font-family:var(--font-display); font-size:21px; font-weight:500; color:#fff; margin:0; }
.involve-card p { font-size:13.5px; line-height:1.55; color:rgba(255,255,255,.7); margin:0; flex:1; }
.involve-card a { font-size:13.5px; color:var(--tap-marigold-400); font-weight:600; }
.contact-card { background:#fff; border:1px solid var(--tap-border); border-radius:var(--radius-lg); padding:28px 24px; box-shadow:var(--shadow-sm); display:flex; flex-direction:column; gap:14px; }
.contact-card h4 { font-family:var(--font-sans); font-size:13px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--fg3); margin:0; }
.contact-card p { font-size:16px; line-height:1.5; color:var(--tap-forest-900); margin:0; white-space:pre-line; font-weight:500; }

/* ============================================================
   PROJECT CARDS + FEATURED PARTNER ROWS
   ============================================================ */
.project-card { background:#fff; border:1px solid var(--tap-border); border-radius:var(--radius-lg); padding:22px 22px 20px;
  display:flex; flex-direction:column; gap:10px; box-shadow:var(--shadow-sm); transition:all 220ms var(--ease-out);
  cursor:pointer; position:relative; overflow:hidden; text-decoration:none; }
.project-card:hover { box-shadow:var(--shadow-md); transform:translateY(-2px); }
.project-card .side-bar { position:absolute; left:0; top:0; bottom:0; width:3px; }
.project-card h4 { font-family:var(--font-display); font-size:20px; font-weight:500; color:var(--tap-forest-900); margin:0; line-height:1.25; }
.project-card p { font-size:13.5px; line-height:1.55; color:var(--fg2); margin:0; }
.pill-tag { font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; padding:4px 10px; border-radius:var(--radius-pill); display:inline-flex; align-items:center; gap:5px; }
.status-dot { width:8px; height:8px; border-radius:50%; display:inline-block; }
.proj-metrics { display:flex; gap:20px; padding:10px 0; border-top:1px dashed var(--divider); margin-top:4px; }
.proj-metrics .v { font-family:var(--font-display); font-size:22px; font-weight:500; line-height:1; }
.proj-metrics .l { font-size:11px; color:var(--fg3); margin-top:4px; letter-spacing:.04em; }

.partner-row { border:1px solid var(--tap-sand); border-radius:20px; padding:24px 28px; display:grid; grid-template-columns:72px 1fr auto; gap:22px;
  align-items:stretch; cursor:pointer; position:relative; overflow:hidden; box-shadow:var(--shadow-sm); transition:all 180ms var(--ease-out); text-decoration:none; color:inherit; }
.partner-row:hover { transform:translateY(-2px); box-shadow:var(--shadow-lg); }
.partner-row .accent-bar { position:absolute; left:0; right:0; top:0; height:3px; }
.partner-logo { width:72px; height:72px; border-radius:16px; display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-weight:600;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.30); letter-spacing:.02em; align-self:flex-start; margin-top:4px; }
.partner-row h4 { font-family:var(--font-display); font-size:24px; font-weight:500; color:var(--tap-forest-900); margin:0 0 6px; line-height:1.2; }
.partner-row .summary { font-size:13.5px; color:var(--fg2); margin:0 0 14px; line-height:1.55; }
.in-words { margin-top:auto; padding-top:12px; border-top:1px dashed rgba(20,34,43,.14); display:grid; grid-template-columns:auto 1fr; gap:14px; align-items:flex-start; }
.in-words .label { font-size:9.5px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; padding-top:5px; }
.in-words .quote { font-family:var(--font-display); font-size:16px; line-height:1.5; color:var(--tap-forest-800); font-style:italic; font-weight:500; margin-bottom:6px; }
.in-words .attrib { font-size:11.5px; color:var(--fg3); line-height:1.4; }
.partner-cta { display:flex; flex-direction:column; justify-content:space-between; align-items:flex-end; text-align:right; font-size:14px; font-weight:600; color:var(--tap-forest-600); padding-top:6px; white-space:nowrap; }

/* filter rail */
.filter-rail { background:#fff; border:1px solid var(--tap-border); border-radius:var(--radius-lg); padding:20px 22px; position:sticky; top:96px; }
.filter-rail .rail-title { font-size:11px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--fg3); margin-bottom:14px; }
.filter-rail .grp-title { font-size:13px; font-weight:700; color:var(--tap-forest-900); margin-bottom:10px; }
.filter-btn { display:flex; align-items:center; gap:10px; padding:8px 12px; border-radius:8px; background:transparent; border:1px solid transparent;
  cursor:pointer; font-family:var(--font-sans); font-size:13.5px; color:var(--fg2); font-weight:500; text-align:left; width:100%; }
.filter-btn:hover { background:var(--tap-cloud); }
.filter-btn.active { background:var(--tap-cloud); border-color:var(--tap-sand); font-weight:600; }
.filter-btn .count { margin-left:auto; font-family:var(--font-mono); font-size:11px; color:var(--fg3); }

/* CTA banner */
.cta-banner { background:var(--tap-forest-900); border-radius:20px; padding:36px 40px; color:#fff; display:flex; align-items:center; justify-content:space-between; gap:32px; flex-wrap:wrap; }
.cta-banner h3 { font-family:var(--font-display); font-size:28px; font-weight:500; color:#fff; margin:10px 0 6px; line-height:1.2; }
.cta-banner p { font-size:14.5px; color:rgba(255,255,255,.75); margin:0; }

/* ============================================================
   NEWS / POSTS
   ============================================================ */
.post-card { background:#fff; border:1px solid var(--tap-border); border-radius:var(--radius-lg); overflow:hidden; box-shadow:var(--shadow-sm);
  transition:all 220ms var(--ease-out); display:flex; flex-direction:column; text-decoration:none; color:inherit; }
.post-card:hover { transform:translateY(-2px); box-shadow:var(--shadow-md); }
.post-card .body { padding:20px 22px 18px; display:flex; flex-direction:column; gap:10px; flex:1; }
.post-card h3 { font-family:var(--font-display); font-size:19px; font-weight:500; color:var(--tap-forest-800); margin:0; line-height:1.25; }
.post-card .excerpt { font-size:13.5px; line-height:1.55; color:var(--fg2); margin:0; flex:1;
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.post-card .meta { display:flex; justify-content:space-between; align-items:center; padding-top:12px; border-top:1px dashed var(--divider); font-size:12px; color:var(--fg3); margin-top:auto; }
.post-card .proj-tag { font-size:11px; color:var(--tap-blue-700); font-weight:600; font-family:var(--font-mono); letter-spacing:.01em; }
.post-thumb { aspect-ratio:16/10; display:flex; align-items:center; justify-content:center; font-size:48px; position:relative; overflow:hidden;
  border-top-left-radius:var(--radius-lg); border-top-right-radius:var(--radius-lg); }
.post-thumb .ph-note { position:absolute; bottom:8px; right:12px; font-size:10px; color:var(--fg3); font-family:var(--font-mono);
  background:rgba(255,255,255,.7); padding:3px 8px; border-radius:4px; backdrop-filter:blur(4px); }
.post-card--featured { display:grid; grid-template-columns:1.2fr 1fr; }
.post-card--featured .post-thumb { border-radius:0; aspect-ratio:auto; }
.post-card--featured .body { padding:28px; gap:12px; }
.post-card--featured h2 { font-family:var(--font-display); font-size:30px; font-weight:500; color:var(--tap-forest-800); margin:0; line-height:1.2; letter-spacing:-.01em; }
.post-card--featured .excerpt { -webkit-line-clamp:unset; font-size:15px; line-height:1.6; }

.news-filter-card { background:#fff; border:1px solid var(--tap-border); border-radius:14px; padding:6px; display:flex; flex-direction:column; gap:2px; }
.subscribe-box { background:var(--tap-forest-800); color:#fff; border-radius:14px; padding:18px 18px 16px; }
.subscribe-box .lbl { font-size:11px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--tap-marigold-400); margin-bottom:8px; }
.subscribe-box p { font-size:12.5px; line-height:1.5; color:rgba(255,255,255,.8); margin:0 0 12px; }
.subscribe-box input { width:100%; box-sizing:border-box; padding:9px 12px; border-radius:8px; border:none; font-size:13px; margin-bottom:8px; font-family:var(--font-sans); }
.subscribe-box button { width:100%; padding:10px 0; border-radius:8px; border:0; background:var(--tap-marigold-500); color:var(--tap-forest-900); font-weight:700; font-size:13px; cursor:pointer; font-family:var(--font-sans); }

/* single post */
.crumbs { display:flex; align-items:center; gap:8px; font-size:13px; color:var(--fg3); }
.crumbs a { color:var(--fg3); }
.crumbs .current { color:var(--tap-forest-700); font-weight:600; }
.post-hero h1 { font-family:var(--font-display); font-size:clamp(36px,5vw,52px); font-weight:500; color:var(--tap-forest-800); margin:0 0 24px; line-height:1.08; letter-spacing:-.025em; }
.byline { display:flex; align-items:center; gap:14px; padding-bottom:24px; border-bottom:1px solid var(--tap-border); }
.byline .avatar { width:44px; height:44px; border-radius:50%; background:var(--tap-forest-600); color:#fff; display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-weight:600; font-size:16px; flex-shrink:0; }
.byline .name { font-size:14.5px; color:var(--tap-forest-800); font-weight:600; }
.byline .sub { font-size:12.5px; color:var(--fg3); }
.prose { max-width:none; }
.prose > .lead-para { font-family:var(--font-display); font-size:22px; line-height:1.45; color:var(--tap-forest-800); font-style:italic; margin:0 0 28px; }
.prose h2 { font-family:var(--font-display); font-size:28px; font-weight:500; color:var(--tap-forest-800); margin:40px 0 16px; letter-spacing:-.01em; }
.prose p { font-size:17px; line-height:1.7; color:var(--fg2); margin:0 0 18px; }
.prose ul, .prose ol { font-size:17px; line-height:1.7; color:var(--fg2); margin:0 0 18px; padding-left:24px; }
.prose li { margin-bottom:10px; }
.prose blockquote { margin:32px 0; padding:24px 28px; background:var(--tap-cloud); border-left:4px solid var(--tap-marigold-700); border-radius:0 12px 12px 0; }
.prose blockquote p { font-family:var(--font-display); font-size:22px; line-height:1.4; color:var(--tap-forest-800); font-style:italic; margin:0; }
.prose blockquote cite { display:block; font-family:var(--font-sans); font-size:12.5px; color:var(--fg3); font-style:normal; margin-top:10px; letter-spacing:.06em; text-transform:uppercase; font-weight:700; }
.prose img { border-radius:var(--radius-lg); margin:24px 0; }
.author-bio { margin-top:24px; padding:22px 24px; background:var(--tap-cloud); border:1px solid var(--tap-sand); border-radius:var(--radius-lg); display:flex; gap:18px; align-items:center; }
.author-bio .avatar { width:64px; height:64px; border-radius:50%; background:var(--tap-forest-600); color:#fff; display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-weight:600; font-size:22px; flex-shrink:0; }
.post-sidebar-card { background:#fff; border:1px solid var(--tap-border); border-radius:14px; padding:18px; }
.post-sidebar-card .lbl { font-size:11px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--fg3); margin-bottom:12px; }
.donate-callout { background:var(--tap-forest-800); color:#fff; border-radius:14px; padding:20px 20px 18px; }
.donate-callout .lbl { font-size:11px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--tap-marigold-400); margin-bottom:8px; }
.donate-callout p { font-size:13.5px; line-height:1.55; color:rgba(255,255,255,.8); margin:0 0 14px; }
.donate-callout button, .donate-callout a.btn-block { display:block; text-align:center; width:100%; padding:11px 0; border-radius:var(--radius-pill); border:0; background:var(--tap-marigold-500); color:var(--tap-forest-900); font-weight:700; font-size:13.5px; cursor:pointer; font-family:var(--font-sans); }

/* ============================================================
   PROJECT DETAIL PAGE SHARED
   ============================================================ */
.proj-hero { background:var(--tap-paper); padding:40px 0 24px; border-bottom:1px solid var(--tap-divider); }
.proj-hero-grid { display:grid; grid-template-columns:1.6fr 1fr; gap:56px; align-items:end; }
.proj-hero h1 { font-family:var(--font-display); font-size:clamp(44px,6vw,64px); font-weight:500; color:var(--tap-forest-900); margin:12px 0 18px; letter-spacing:-.025em; line-height:1.04; }
.proj-hero .intro { font-size:19px; color:var(--fg2); line-height:1.55; max-width:620px; margin:0 0 28px; }
.partner-aside { background:#fff; border:1px solid var(--tap-border); border-radius:20px; padding:24px 26px; box-shadow:var(--shadow-sm); }
.partner-aside .lbl { font-size:11px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--fg3); margin-bottom:14px; }
.partner-aside .row { display:flex; justify-content:space-between; gap:16px; font-size:13.5px; color:var(--fg2); padding:4px 0; }
.partner-aside .row .k { color:var(--fg3); white-space:nowrap; }
.partner-aside .row .v { text-align:right; }
.stat-strip { background:#fff; border:1px solid var(--tap-border); border-radius:20px; padding:28px 36px; display:grid; gap:24px; box-shadow:var(--shadow-sm); }
.stat-strip .cell { padding-left:24px; border-left:1px solid var(--tap-divider); }
.stat-strip .cell:first-child { padding-left:0; border-left:0; }
.stat-strip .v { font-family:var(--font-display); font-size:46px; line-height:1; font-weight:500; color:var(--tap-forest-900); letter-spacing:-.02em; }
.stat-strip .l { font-size:11px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--fg3); margin-top:10px; }
.stat-strip .sub { font-size:12px; color:var(--fg2); margin-top:4px; line-height:1.4; }
.big-quote { font-family:var(--font-display); font-size:38px; line-height:1.25; font-weight:500; color:var(--tap-forest-800); margin:20px 0 16px; letter-spacing:-.015em; }
.timeline { list-style:none; margin:0; padding:0; position:relative; }
.timeline .spine { position:absolute; left:7px; top:6px; bottom:6px; width:2px; background:var(--tap-sand); }
.timeline li { position:relative; padding-left:36px; padding-bottom:24px; }
.timeline .dot { position:absolute; left:0; top:6px; width:16px; height:16px; border-radius:50%; background:#fff; border:3px solid var(--tap-marigold-500); box-sizing:border-box; }
.timeline .date { font-size:12px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--tap-marigold-700); margin-bottom:4px; }
.timeline .body { font-size:15.5px; color:var(--fg2); line-height:1.55; max-width:720px; }
.letter-card { background:#FFFDF8; border:1px solid var(--tap-sand); border-radius:4px; padding:28px 30px 24px;
  box-shadow:0 1px 2px rgba(20,34,43,.06),0 8px 22px rgba(20,34,43,.08); position:relative; display:flex; flex-direction:column;
  background-image:repeating-linear-gradient(transparent 0,transparent 27px,rgba(58,127,189,.06) 27px,rgba(58,127,189,.06) 28px); }
.letter-card .tape { position:absolute; top:-10px; left:50%; transform:translateX(-50%) rotate(-2deg); width:80px; height:18px; background:rgba(254,199,51,.55); border-radius:2px; }
.letter-card .quote { font-family:var(--font-hand); font-size:21px; line-height:1.55; color:var(--tap-forest-800); margin:0; font-style:italic; font-weight:500; }
.letter-card .kicker { font-family:var(--font-hand); font-size:19px; line-height:1.5; color:var(--tap-marigold-700); margin:14px 0 0; font-style:italic; font-weight:600; }
.letter-card .signoff { font-family:var(--font-hand); font-size:30px; font-weight:600; color:var(--tap-forest-900); line-height:1; }
.thanks-chip { font-size:11px; font-weight:600; color:var(--tap-blue-700); background:rgba(58,127,189,.08); border:1px solid rgba(58,127,189,.18); padding:3px 9px; border-radius:var(--radius-pill); }
.dark-card { background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.10); border-radius:var(--radius-lg); padding:20px 22px; }
.dark-card h4 { font-family:var(--font-display); font-size:19px; font-weight:500; color:#fff; margin:0 0 8px; line-height:1.25; }
.dark-card p { font-size:13.5px; line-height:1.55; color:rgba(255,255,255,.72); margin:0; }
.bar-track { height:6px; background:var(--tap-cloud); border-radius:3px; overflow:hidden; }
.bar-fill { height:100%; border-radius:3px; }
.stars-list { list-style:none; margin:0; padding:0; }
.stars-list li { display:grid; grid-template-columns:60px 1fr 60px; gap:18px; align-items:baseline; padding:16px 0; border-bottom:1px solid var(--tap-divider); }
.stars-list li:first-child { border-top:1px solid var(--tap-divider); }
.stars-list .idx { font-family:var(--font-mono); font-size:12px; color:var(--tap-marigold-700); font-weight:600; }
.stars-list .yr { font-family:var(--font-mono); font-size:11px; color:var(--fg3); font-weight:600; text-align:right; letter-spacing:.04em; }
.survey-quote { background:#fff; border:1px solid var(--tap-border); border-radius:var(--radius-lg); padding:20px 22px; margin:0; font-size:14.5px; color:var(--fg2); line-height:1.55; font-style:italic; position:relative; }
.survey-quote .mark { position:absolute; top:-4px; left:12px; font-family:var(--font-display); font-size:56px; color:var(--tap-marigold-300); line-height:1; }

/* ============================================================
   IMAGE PLACEHOLDERS (for project photos the editor will supply)
   ============================================================ */
.media-ph { position:relative; border-radius:var(--radius-lg); border:1px solid var(--tap-sand); overflow:hidden;
  background-color:var(--tap-cloud);
  background-image:repeating-linear-gradient(135deg, rgba(36,79,53,.05) 0, rgba(36,79,53,.05) 10px, transparent 10px, transparent 20px);
  display:flex; align-items:flex-end; }
.media-ph .ph-label { font-family:var(--font-mono); font-size:11px; color:var(--fg3); background:rgba(255,255,255,.78);
  padding:5px 10px; margin:10px; border-radius:6px; backdrop-filter:blur(4px); line-height:1.4; }

/* ============================================================
   BLOCK THEME — query-loop news cards (home/archive/search)
   ============================================================ */
.news-card { background:#fff; border:1px solid var(--tap-border); border-radius:var(--radius-lg); overflow:hidden;
  box-shadow:var(--shadow-sm); transition:all 220ms var(--ease-out); padding:0; display:flex; flex-direction:column; }
.news-card:hover { transform:translateY(-2px); box-shadow:var(--shadow-md); }
.news-card .wp-block-post-featured-image { margin:0; }
.news-card .wp-block-post-featured-image img { width:100%; height:180px; object-fit:cover; display:block; }
.news-card > :not(.wp-block-post-featured-image) { padding-left:22px; padding-right:22px; }
.news-card .wp-block-post-terms { margin:18px 0 0; font-size:11.5px; font-weight:600; color:var(--tap-forest-700); text-transform:uppercase; letter-spacing:.04em; }
.news-card .wp-block-post-title { font-family:var(--font-display); font-size:19px; font-weight:500; line-height:1.25; margin:10px 0 0; }
.news-card .wp-block-post-title a { color:var(--tap-forest-800); }
.news-card .wp-block-post-excerpt { font-size:13.5px; line-height:1.55; color:var(--fg2); margin:10px 0 0; }
.news-card .wp-block-post-excerpt__more-text { display:none; }
.news-card .news-meta { display:flex; justify-content:space-between; align-items:center; gap:10px; padding-top:12px; padding-bottom:18px; margin-top:14px; border-top:1px dashed var(--divider); font-size:12px; color:var(--fg3); }
.news-card .news-meta .wp-block-post-author-name a, .news-card .news-meta .wp-block-post-author-name { color:var(--fg2); font-weight:600; }
.news-query .wp-block-post-template { gap:16px !important; }
.news-query .wp-block-query-pagination { margin-top:40px; justify-content:center; font-family:var(--font-sans); }
.news-query .wp-block-query-pagination a { color:var(--tap-blue-700); }

/* single post (block) */
.post-single .wp-block-post-title { font-family:var(--font-display); font-size:clamp(36px,5vw,52px); font-weight:500; color:var(--tap-forest-800); line-height:1.08; letter-spacing:-.025em; margin:0 0 20px; }
.post-single .wp-block-post-featured-image { margin:24px 0; }
.post-single .wp-block-post-featured-image img { width:100%; border-radius:var(--radius-xl); border:1px solid var(--tap-sand); }
.post-single .post-byline { display:flex; gap:14px; align-items:center; padding-bottom:24px; border-bottom:1px solid var(--tap-border); margin-bottom:28px; font-size:13px; color:var(--fg3); }
.post-single .wp-block-post-content p { font-size:17px; line-height:1.7; color:var(--fg2); }
.post-single .wp-block-post-content h2 { font-family:var(--font-display); font-size:28px; font-weight:500; color:var(--tap-forest-800); margin:40px 0 16px; }
.post-single .wp-block-post-content blockquote { margin:32px 0; padding:24px 28px; background:var(--tap-cloud); border-left:4px solid var(--tap-marigold-700); border-radius:0 12px 12px 0; }
.post-single .wp-block-post-content blockquote p { font-family:var(--font-display); font-size:22px; font-style:italic; color:var(--tap-forest-800); }

/* ============================================================
   DONATE
   ============================================================ */
.stepper { display:flex; justify-content:center; gap:24px; margin-bottom:36px; flex-wrap:wrap; }
.stepper .step { display:flex; align-items:center; gap:8px; }
.stepper .num { width:30px; height:30px; border-radius:50%; background:var(--tap-cloud); color:var(--fg3); display:flex; align-items:center; justify-content:center; font-family:var(--font-display); font-weight:600; font-size:14px; }
.stepper .step.active .num { background:var(--tap-forest-600); color:#fff; border:2px solid var(--tap-marigold-500); }
.donate-grid { display:grid; grid-template-columns:1.6fr 1fr; gap:24px; align-items:flex-start; }
.donate-panel { background:#fff; border:1px solid var(--tap-border); border-radius:20px; padding:36px 36px 32px; box-shadow:var(--shadow-sm); }
.amount-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-bottom:14px; }
.amount-btn { padding:20px 0; border-radius:12px; background:#fff; border:1.5px solid var(--tap-border); cursor:pointer; text-align:center; font-family:var(--font-sans); }
.amount-btn .a { font-family:var(--font-display); font-size:22px; font-weight:600; color:var(--tap-forest-800); }
.amount-btn .d { font-size:11px; color:var(--fg3); margin-top:2px; }
.amount-btn.active, .amount-btn:has(input:checked) { background:var(--tap-forest-50); border:2px solid var(--tap-forest-600); }
.donate-summary { background:var(--tap-forest-800); color:#fff; border-radius:20px; padding:28px 26px; box-shadow:var(--shadow-md); position:sticky; top:96px; }
.donate-summary .amt { font-family:var(--font-display); font-size:56px; font-weight:500; color:#fff; line-height:1; letter-spacing:-.02em; margin:14px 0 4px; }
.field label { display:block; font-size:12px; font-weight:700; letter-spacing:.06em; color:var(--fg2); margin-bottom:6px; text-transform:uppercase; }
.field input, .field select { width:100%; box-sizing:border-box; padding:12px 14px; border-radius:10px; border:1.5px solid var(--tap-border); background:#fff; font-family:var(--font-sans); font-size:14px; color:var(--tap-forest-800); }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:900px){
  .hero-grid,.proj-hero-grid,.donate-grid { grid-template-columns:1fr; gap:36px; }
  .grid-4,.grid-5,.grid-3 { grid-template-columns:1fr 1fr; }
  .footer-grid { grid-template-columns:1fr 1fr; }
  .stat-strip { grid-template-columns:1fr 1fr !important; }
  .stat-strip .cell { padding-left:0; border-left:0; }
  .partner-row { grid-template-columns:1fr; }
  .post-card--featured { grid-template-columns:1fr; }
  .site-nav { display:none; }
  .site-nav.open { display:flex; position:absolute; top:100%; left:0; right:0; flex-direction:column; background:var(--tap-forest-600); padding:16px 32px; gap:14px; align-items:flex-start; }
  .nav-toggle { display:block; }
}
@media (max-width:600px){
  .container { padding-left:20px; padding-right:20px; }
  .grid-4,.grid-5,.grid-3,.grid-2 { grid-template-columns:1fr; }
  .footer-grid { grid-template-columns:1fr; }
  .section { padding-top:56px; padding-bottom:56px; }
  .section--sm { padding-top:40px; padding-bottom:40px; }

  /* --- Mobile type scale: shrink oversized display headings so they fit a phone.
     !important overrides the inline font-size set on hero/project headings. --- */
  body { font-size:15px; }
  .display,
  .hero-title { font-size:34px !important; line-height:1.08 !important; }
  .h1,
  .proj-hero h1,
  .post-hero h1,
  .post-single .wp-block-post-title { font-size:30px !important; line-height:1.1 !important; }
  .h2 { font-size:26px !important; line-height:1.15 !important; }
  .h3 { font-size:20px !important; }
  .lead,
  .hero-lead,
  .proj-hero .intro { font-size:16px !important; }
  .eyebrow { font-size:11px; }

  /* big numbers + quotes */
  .stat .stat-value { font-size:40px; }
  .stat-strip .v { font-size:32px !important; }
  .mini-stats .v { font-size:22px; }
  .big-quote { font-size:24px !important; line-height:1.3 !important; }
  .pull-quote { font-size:20px !important; }
  .donate-summary .amt,
  .donate-panel .amt { font-size:40px !important; }
  .prose > .lead-para { font-size:18px; }
  .prose p, .prose ul, .prose ol { font-size:16px; }
  .prose h2 { font-size:23px; }

  /* dense data tables/strips reflow */
  .stat-strip { grid-template-columns:1fr 1fr !important; gap:18px !important; padding:22px 22px !important; }
  .letter-card .quote { font-size:18px; }
  .letter-card .signoff { font-size:24px; }
}
@media (max-width:400px){
  .display, .hero-title { font-size:29px !important; }
  .h1, .proj-hero h1, .post-hero h1 { font-size:26px !important; }
  .h2 { font-size:23px !important; }
  .stat-strip { grid-template-columns:1fr !important; }
}
