/* Coher for PCC Board — shared styles */
:root{
  --navy:#132F49; --navy-deep:#0D2337; --green:#2F6B4C; --gold:#E9A93D;
  --ivory:#FAF7EF; --paper:#FFFFFF; --line:#E2DBC6; --ink:#22364A; --ink-soft:#5A6B7C;
  --serif:'Playfair Display',Georgia,serif;
  --sans:'Libre Franklin',system-ui,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
/* [hidden] must win over author display rules below (.btn, .search-result, etc.) */
[hidden]{display:none !important}
html{scroll-behavior:smooth}
body{font-family:var(--sans);font-size:17px;line-height:1.7;color:var(--ink);background:var(--paper)}
img,svg{display:block}
a{color:var(--green)}
.wrap{max-width:1060px;margin:0 auto;padding:0 28px}

/* ---------- top strip ---------- */
.topbar{background:var(--navy-deep);color:#C9D6E2;font-size:.78rem;letter-spacing:.08em;text-align:center;padding:7px 14px;text-transform:uppercase}
.topbar b{color:#fff;font-weight:600}

/* ---------- header ---------- */
header.site{background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:40}
.nav{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:8px 0}
.brand{text-decoration:none;display:block;line-height:1}
.brand-logo{height:84px;width:auto}
.brand-name{display:block;font-family:var(--serif);font-weight:800;font-size:1.55rem;color:var(--navy);letter-spacing:.015em}
.brand-office{display:block;margin-top:5px;font-family:var(--serif);font-size:.72rem;font-weight:700;letter-spacing:.13em;color:var(--green)}
.nav-links{display:flex;align-items:center;gap:24px;list-style:none}
.nav-links a{font-size:.86rem;font-weight:600;letter-spacing:.04em;color:var(--navy);text-decoration:none;padding-bottom:4px;border-bottom:2px solid transparent}
.nav-links a:hover{border-color:var(--line)}
.nav-links a.active{border-color:var(--green)}
.btn{display:inline-block;padding:13px 30px;font-weight:700;font-size:.92rem;letter-spacing:.05em;text-decoration:none;border-radius:3px;border:2px solid transparent;transition:opacity .12s;cursor:pointer;font-family:inherit}
.btn:hover{opacity:.88}
.btn-green{background:var(--green);color:#fff}
.btn-gold{background:var(--gold);color:var(--navy-deep)}
.btn-navy-outline{border-color:var(--navy);color:var(--navy)}
.btn-cream-outline{border-color:#8FA6BA;color:#E7EEF4}
.btn-soon{border-color:#C9C0A6;color:var(--ink-soft);cursor:default}
.btn-soon:hover{opacity:1}
.menu-btn{display:none;background:none;border:0;cursor:pointer;padding:6px}
.menu-btn span{display:block;width:25px;height:2px;background:var(--navy);margin:6px 0}

/* ---------- ornament divider ---------- */
.ornament{display:flex;align-items:center;justify-content:center;gap:20px;color:var(--green);--orn-bg:var(--paper)}
.ornament span{display:block;height:2px;background:currentColor;flex:0 1 150px}
.ornament svg{flex:none}

/* ---------- hero (interior pages, centered) ---------- */
.hero{background:var(--paper);text-align:center;padding:84px 0 72px}
.hero .name{font-family:var(--serif);font-weight:800;color:var(--navy);font-size:clamp(4rem,11vw,8.2rem);line-height:.95;letter-spacing:.01em}
.hero .ornament{margin:36px auto 30px;max-width:640px}
.hero .office{font-family:var(--serif);font-weight:700;letter-spacing:.18em;color:var(--navy);font-size:clamp(.95rem,2.2vw,1.35rem)}
.hero .slogan{font-family:'Lora',Georgia,serif;font-style:italic;font-size:1.35rem;color:var(--ink-soft);margin:26px 0 38px}
.hero-ctas{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
.hero .election{margin-top:42px;font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}
.hero .election b{color:var(--navy)}

/* ---------- hero (home, photo-forward) ---------- */
.hero-photo{background:var(--paper);padding:70px 0 78px}
.hero-photo .grid{display:grid;grid-template-columns:1.05fr .9fr;gap:66px;align-items:center}
.hero-photo .kicker{font-size:.78rem;font-weight:800;letter-spacing:.3em;text-transform:uppercase;color:var(--green);margin-bottom:22px}
.hero-photo .name{font-family:var(--serif);font-weight:800;color:var(--navy);font-size:clamp(3.1rem,6.6vw,5.4rem);line-height:.98;letter-spacing:.01em}
.hero-photo .office{margin-top:20px;font-family:var(--serif);font-weight:700;letter-spacing:.15em;color:var(--navy);font-size:clamp(.9rem,1.7vw,1.08rem);text-transform:uppercase}
.hero-photo .slogan{font-family:'Lora',Georgia,serif;font-style:italic;font-size:1.3rem;color:var(--ink-soft);margin:24px 0 34px}
.hero-photo .hero-ctas{justify-content:flex-start}
/* Third hero action, one tier below the buttons: the pair keeps a single row and
   the ask reads as the quiet invitation it is rather than a wrapped button. */
.hero-photo .hero-ask{margin-top:22px}
.hero-photo .election{margin-top:32px;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}
.hero-photo .election b{color:var(--navy)}

.photo-card{position:relative;margin:0 14px 14px 0}
.photo-card::after{content:"";position:absolute;inset:22px -14px -14px 22px;border:2px solid var(--gold);z-index:0}
.photo-card img{position:relative;z-index:1;width:100%;aspect-ratio:4/5;object-fit:cover;object-position:50% 20%;border:1px solid var(--line);background:var(--ivory);box-shadow:0 18px 40px -22px rgba(13,35,55,.45)}
.photo-card figcaption{position:relative;z-index:1;margin-top:14px;font-size:.72rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft)}

/* ---------- donate band ---------- */
.donate-band{background:var(--navy);color:#E7EEF4;padding:64px 0;text-align:center}
.donate-band .inner{display:flex;flex-direction:column;align-items:center}
.donate-band h2{font-family:var(--serif);font-weight:800;color:#fff;font-size:clamp(1.6rem,3.2vw,2.2rem)}
.donate-band p{color:#C9D6E2;font-size:1rem;margin:12px auto 30px;max-width:56ch}
.amounts{display:flex;gap:16px;flex-wrap:wrap;align-items:center;justify-content:center}
.amounts a{display:inline-block;padding:17px 38px;min-width:112px;text-align:center;border:2px solid #8FA6BA;border-radius:3px;color:#E7EEF4;font-weight:800;font-size:1.12rem;letter-spacing:.04em;text-decoration:none;transition:border-color .12s,color .12s}
.amounts a:hover{border-color:var(--gold);color:var(--gold)}

/* ---------- shared section bits ---------- */
section{padding:78px 0}
.eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.26em;text-transform:uppercase;color:var(--green);margin-bottom:14px}
h1.page,h2.sect{font-family:var(--serif);font-weight:800;color:var(--navy);line-height:1.12}
h1.page{font-size:clamp(2.4rem,5vw,3.4rem)}
h2.sect{font-size:clamp(1.7rem,3.6vw,2.3rem);margin-bottom:22px}
.lead{font-size:1.08rem;max-width:66ch}
.band{background:var(--ivory);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.band .ornament{--orn-bg:var(--ivory)}

.pagehead{background:var(--ivory);border-bottom:1px solid var(--line);padding:64px 0 52px;text-align:center}
.pagehead .ornament{--orn-bg:var(--ivory);margin-top:26px}

/* ---------- home: intro + teaser ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}
.rule-list{list-style:none;margin-top:8px}
.rule-list li{display:flex;gap:22px;align-items:baseline;padding:20px 4px;border-top:1px solid var(--line)}
.rule-list li:last-child{border-bottom:1px solid var(--line)}
.rule-list .n{font-family:var(--serif);font-weight:800;color:var(--green);font-size:1.15rem;flex:none;width:34px}
.rule-list .t{font-weight:600;color:var(--navy)}
.more-link{display:inline-block;margin-top:26px;font-weight:700;font-size:.9rem;letter-spacing:.06em;color:var(--green);text-decoration:none;border-bottom:2px solid var(--green);padding-bottom:3px}

/* ---------- quote band ---------- */
.quote-band{background:var(--ivory);border-top:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;padding:72px 0}
.quote-band blockquote{font-family:'Lora',Georgia,serif;font-style:italic;font-size:clamp(1.35rem,3vw,1.8rem);color:var(--navy);max-width:34ch;margin:0 auto;line-height:1.5}
.quote-band cite{display:block;margin-top:22px;font-family:var(--sans);font-style:normal;font-size:.78rem;font-weight:700;letter-spacing:.2em;color:var(--ink-soft);text-transform:uppercase}

/* ---------- district teaser ---------- */
.district-teaser .inner{display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:center}
.fact-list{list-style:none;border-top:2px solid var(--navy)}
.fact-list li{display:flex;justify-content:space-between;gap:18px;padding:13px 2px;border-bottom:1px solid var(--line);font-size:.95rem}
.fact-list .k{font-weight:700;color:var(--navy);letter-spacing:.02em;flex:none}
.fact-list .v{color:var(--ink-soft);text-align:right}

/* ---------- join band ---------- */
.join-band{background:var(--navy-deep);color:#E7EEF4;text-align:center;padding:76px 0}
.join-band h2{font-family:var(--serif);font-weight:800;color:#fff;font-size:clamp(1.7rem,3.4vw,2.3rem);margin-bottom:12px}
.join-band p{max-width:52ch;margin:0 auto 34px;color:#C9D6E2}
.join-form{display:grid;gap:14px;max-width:760px;margin:0 auto;border:0;padding:0;background:none}
.jf-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.join-form input{padding:14px 16px;border:1px solid #3D5A75;background:#fff;font-size:1rem;font-family:inherit;color:var(--ink);border-radius:3px;flex:1 1 180px;min-width:0}
.join-form input:focus{outline:2px solid var(--gold);outline-offset:1px}
.join-form .btn{flex:0 0 auto}
/* yard sign request: checkbox plus the address block it reveals */
.jf-check{display:inline-flex;justify-self:center;align-items:center;gap:10px;font-size:.92rem;color:#DCEAE1;cursor:pointer}
.jf-check input{flex:none;width:16px;height:16px;accent-color:var(--gold)}
.jf-address{display:grid;gap:13px;text-align:left;padding:20px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);border-radius:3px}
.jf-address[hidden]{display:none}
.jf-address .jf-note{max-width:none;margin:0;font-size:.82rem;color:#C9D6E2}
.jf-address label{display:block;font-size:.7rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#DCEAE1;margin-bottom:6px}
.jf-address label .opt{font-weight:400;letter-spacing:.1em;text-transform:lowercase;color:#A8C3B2}
.jf-address input{width:100%;flex:none}
.jf-grid{display:grid;grid-template-columns:1.7fr .8fr;gap:12px}
.join-band small{display:block;margin-top:18px;color:#8FA1B3;font-size:.78rem}

.cta-band{background:var(--navy);color:#E7EEF4;text-align:center;padding:70px 0}
.cta-band h2{font-family:var(--serif);font-weight:800;color:#fff;font-size:clamp(1.7rem,3.4vw,2.3rem);margin-bottom:14px}
.cta-band p{max-width:56ch;margin:0 auto 30px;color:#C9D6E2}

/* ---------- about ---------- */
.bio{display:grid;grid-template-columns:1.15fr .85fr;gap:60px;align-items:start}
.bio p{margin-bottom:20px;max-width:64ch}
.bio-side{position:sticky;top:110px}
.photo-frame{border:1px solid var(--line);background:var(--ivory);aspect-ratio:4/5;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:var(--ink-soft)}
.photo-frame small{font-size:.68rem;letter-spacing:.22em;text-transform:uppercase}
.pull{border-top:2px solid var(--green);border-bottom:2px solid var(--green);padding:26px 6px;margin:34px 0;font-family:'Lora',Georgia,serif;font-style:italic;font-size:1.3rem;color:var(--navy);text-align:center}
.pull cite{display:block;margin-top:10px;font-family:var(--sans);font-style:normal;font-size:.78rem;font-weight:700;letter-spacing:.16em;color:var(--ink-soft);text-transform:uppercase}
.resume{display:grid;grid-template-columns:repeat(3,1fr);gap:44px}
.resume h3{font-size:.78rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--navy);border-top:2px solid var(--navy);padding-top:14px;margin-bottom:16px}
.resume ul{list-style:none}
.resume li{padding:9px 0;border-top:1px solid var(--line);font-size:.92rem;line-height:1.5}
.resume li b{color:var(--navy);font-weight:600}

/* ---------- family photo band (about) ---------- */
.family-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:40px}
.family-grid figure{margin:0}
/* height:auto is required — the width/height HTML attributes set a presentational
   height that would otherwise win over aspect-ratio and break the row alignment. */
.family-grid img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border:1px solid var(--line);background:var(--ivory);box-shadow:0 14px 32px -20px rgba(13,35,55,.5)}
.family-grid figcaption{margin-top:15px;font-size:.7rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);line-height:1.5}
.family-grid figcaption::before{content:"";display:block;width:34px;height:2px;background:var(--gold);margin-bottom:11px}

/* ---------- priorities page ---------- */
.prio{max-width:760px;margin:0 auto}
.prio-item{padding:40px 0;border-top:1px solid var(--line)}
.prio-item:first-child{border-top:0}
.prio-item .n{font-family:var(--serif);font-weight:800;color:var(--green);font-size:1rem;letter-spacing:.1em;margin-bottom:8px;display:block}
.prio-item h2{font-family:var(--serif);font-weight:800;color:var(--navy);font-size:1.6rem;margin-bottom:12px}

/* ---------- district map page ---------- */
.map-search{display:flex;gap:12px;flex-wrap:wrap;padding:16px;border:1px solid var(--line);border-bottom:0;background:var(--paper)}
.map-search input{flex:1 1 260px;min-width:0;padding:14px 16px;border:1px solid #C9C0A6;background:#fff;font-size:1rem;font-family:inherit;color:var(--ink)}
.map-search input:focus{outline:2px solid var(--green);outline-offset:1px}
.map-search .btn{flex:0 0 auto}
.search-result{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:15px 18px;border:1px solid var(--line);border-bottom:0;font-size:.98rem;background:var(--ivory);color:var(--ink)}
.search-result.in-area{background:#EAF3ED;border-left:5px solid var(--green)}
.search-result.in-area b{color:var(--green)}
.search-result.out-area{border-left:5px solid #C9C0A6}
.search-result .btn{padding:11px 22px;font-size:.85rem}
.map-toggle{background:#fff;border:1px solid var(--line);border-radius:3px;overflow:hidden;box-shadow:0 1px 5px rgba(0,0,0,.15);display:flex}
.map-toggle button{border:0;background:#fff;padding:8px 16px;font-family:var(--sans);font-size:.8rem;font-weight:700;letter-spacing:.05em;color:var(--ink-soft);cursor:pointer}
.map-toggle button.on{background:var(--navy);color:#fff}
.map-shell{border:1px solid var(--line);background:var(--ivory);position:relative}
#map{height:560px;width:100%;background:var(--ivory)}
.map-legend{display:flex;gap:26px;flex-wrap:wrap;align-items:center;padding:16px 18px;border:1px solid var(--line);border-top:0;background:var(--paper);font-size:.85rem;color:var(--ink-soft)}
.map-legend .chip{display:inline-flex;align-items:center;gap:9px;font-weight:600;color:var(--navy)}
.map-legend .swatch{width:15px;height:15px;border-radius:2px;display:inline-block}
.sw-green{background:rgba(47,107,76,.45);border:2px solid var(--green)}
.sw-gray{background:rgba(122,139,156,.18);border:2px solid #7A8B9C}
.sw-gold{background:var(--gold);border-radius:50%;border:2px solid #B57F1D;width:13px;height:13px}
.map-fallback{display:none;padding:56px 30px;text-align:center;color:var(--ink-soft)}
.map-fallback a{font-weight:700}
.map-note{margin-top:18px;font-size:.85rem;color:var(--ink-soft);max-width:74ch}
.map-note a{color:var(--green)}
.leaflet-container{font-family:var(--sans)}
.leaflet-tooltip.area-tip{font-family:var(--sans);font-weight:700;color:var(--navy);border:1px solid var(--line)}

/* ---------- endorsements ---------- */
.endorse-hold{max-width:680px;margin:0 auto;text-align:center}
.endorse-hold .sect{margin-bottom:16px}
.endorse-card{margin-top:46px;border:1px solid var(--line);background:var(--ivory);padding:40px 34px}
.endorse-card h3{font-family:var(--serif);font-weight:800;color:var(--navy);font-size:1.3rem;margin-bottom:10px}
.endorse-card p{color:var(--ink-soft);max-width:48ch;margin:0 auto 24px}

/* featured endorsement: portrait beside the quote */
.feature-band{background:var(--ivory);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:70px 0}
.endorse-feature{display:grid;grid-template-columns:230px 1fr;gap:56px;align-items:center;max-width:900px;margin:0 auto}
.endorse-feature .portrait{position:relative;margin:0 12px 12px 0}
.endorse-feature .portrait::after{content:"";position:absolute;inset:18px -12px -12px 18px;border:2px solid var(--gold);z-index:0}
/* height:auto is required — the width/height attributes would otherwise beat aspect-ratio */
.endorse-feature .portrait img{position:relative;z-index:1;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;border:1px solid var(--line);background:var(--paper);box-shadow:0 16px 38px -22px rgba(13,35,55,.45)}
.endorse-feature blockquote{font-family:'Lora',Georgia,serif;font-style:italic;font-size:clamp(1.3rem,2.7vw,1.72rem);line-height:1.5;color:var(--navy);position:relative;padding-top:40px}
.endorse-feature blockquote::before{content:"\201C";position:absolute;top:-4px;left:-4px;font-family:var(--serif);font-weight:800;font-size:3.6rem;line-height:1;color:var(--gold)}
.endorse-feature cite{display:block;margin-top:24px;font-family:var(--sans);font-style:normal;font-size:.78rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--navy)}
.endorse-feature cite span{display:block;margin-top:5px;letter-spacing:.14em;font-weight:600;color:var(--ink-soft)}

/* endorser cards and the neighbour roster */
.endorser-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:34px;margin-top:38px}
.endorser{margin:0}
.endorser img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;border:1px solid var(--line);background:var(--ivory);box-shadow:0 14px 32px -20px rgba(13,35,55,.5)}
.endorser figcaption{margin-top:15px}
.endorser figcaption::before{content:"";display:block;width:34px;height:2px;background:var(--gold);margin-bottom:11px}
.endorser .nm{display:block;font-family:var(--serif);font-weight:800;color:var(--navy);font-size:1.12rem;line-height:1.35}
.endorser .rl{display:block;margin-top:6px;font-size:.7rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);line-height:1.6}
.roster{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:0 44px;border-top:2px solid var(--navy);margin-top:34px}
.roster li{padding:14px 2px;border-bottom:1px solid var(--line)}
.roster .nm{display:block;font-family:var(--serif);font-weight:700;color:var(--navy);font-size:1.04rem;line-height:1.4}
.roster .rl{display:block;margin-top:3px;font-size:.82rem;color:var(--ink-soft);line-height:1.5}
.ident-note{margin-top:28px;font-size:.82rem;color:var(--ink-soft);max-width:72ch}

/* ---------- get involved ---------- */
.involve-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}
form{display:grid;gap:16px;border:1px solid var(--line);padding:34px;background:var(--paper)}
.field label{display:block;font-size:.72rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--navy);margin-bottom:7px}
.field input,.field textarea,.field select{width:100%;padding:13px 14px;border:1px solid #C9C0A6;background:#fff;font-size:1rem;font-family:inherit;color:var(--ink)}
.field input:focus,.field textarea:focus,.field select:focus{outline:2px solid var(--green);outline-offset:1px}
.field textarea{min-height:190px;line-height:1.65;resize:vertical}
.checks{display:grid;gap:10px;margin:4px 0}
.checks label{display:flex;gap:11px;align-items:center;font-size:.95rem}
.checks input{accent-color:var(--green);width:16px;height:16px}
.field label .opt{font-weight:400;letter-spacing:.1em;text-transform:lowercase;color:var(--ink-soft)}
.field-row{display:grid;grid-template-columns:1.7fr .8fr;gap:14px}
/* revealed when the yard sign box is checked */
.sign-address{display:grid;gap:16px;padding-left:18px;border-left:2px solid var(--green)}
.sign-address[hidden]{display:none}
.sa-head{font-family:var(--serif);font-weight:800;color:var(--navy);font-size:1.05rem}
.sa-note{color:var(--ink-soft);font-size:.82rem;max-width:46ch}
form small{color:var(--ink-soft);font-size:.8rem}
.donate-strip{border:1px solid var(--line);background:var(--ivory);padding:34px;display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;margin-top:56px}
.donate-strip h3{font-family:var(--serif);font-weight:800;color:var(--navy);font-size:1.35rem}

/* ---------- language toggle ---------- */
.nav-links .lang a{border:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:2px;padding:5px 11px;font-size:.74rem;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-soft)}
.nav-links .lang a:hover{border-color:var(--green);color:var(--green)}

/* ---------- skip link ---------- */
.skip-link{position:absolute;left:-9999px;top:0;z-index:100;background:var(--gold);color:var(--navy-deep);padding:12px 22px;font-weight:700;font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;text-decoration:none}
.skip-link:focus{left:0}

/* ---------- press kit ---------- */
.press-contact{display:flex;justify-content:space-between;align-items:center;gap:28px;flex-wrap:wrap;border:1px solid var(--line);background:var(--ivory);padding:34px}
.press-contact p{max-width:56ch;margin-top:6px}
.press-sub{font-size:.72rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--navy);border-top:2px solid var(--navy);padding-top:14px;margin:32px 0 14px}
.press-copy{max-width:70ch}
.asset-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;margin:34px 0 26px}
.asset{margin:0;border:1px solid var(--line);background:var(--paper)}
.asset img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-bottom:1px solid var(--line)}
.asset figcaption{padding:15px 16px 17px;font-size:.82rem;line-height:1.5}
.asset figcaption b{display:block;color:var(--navy);font-weight:700}
.asset figcaption span{display:block;color:var(--ink-soft);font-size:.74rem;margin:3px 0 9px}
.asset figcaption a{font-weight:700;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase}

/* ---------- footer ---------- */
footer.site{background:var(--navy-deep);color:#AFC0CF;padding:56px 0 30px;font-size:.92rem}
.foot-head{font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:#fff;margin-bottom:14px;font-weight:700}
.foot-meta{padding-top:22px;text-align:center;font-size:.8rem;letter-spacing:.04em}
.foot-meta a{color:#AFC0CF;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.25);padding-bottom:1px}
.foot-meta a:hover{color:#fff}
.foot-meta + .disclaimer{padding-top:12px}
.foot-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:44px;padding-bottom:38px;border-bottom:1px solid rgba(255,255,255,.14)}
.foot-brand .brand-name{color:#fff;font-size:1.5rem}
.foot-brand .brand-office{color:var(--gold)}
footer.site h4{font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:#fff;margin-bottom:14px}
footer.site ul{list-style:none}
footer.site li{margin-bottom:9px}
footer.site a{color:#AFC0CF;text-decoration:none}
footer.site a:hover{color:#fff}
.disclaimer{padding-top:24px;text-align:center;font-size:.78rem;letter-spacing:.05em;color:#8FA1B3}

/* ============================================================
   CUSTOM PASS — editorial print character (overrides above)
   ============================================================ */
::selection{background:var(--gold);color:var(--navy-deep)}

/* laid-paper texture on tinted surfaces */
.band,.pagehead,.quote-band,.feature-band,.endorse-card,.donate-strip{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7'%3E%3Cpath d='M0 7L7 0' stroke='%23132F49' stroke-opacity='.045' stroke-width='1'/%3E%3C/svg%3E")}

/* foothills ridgeline dividers */
.ridge{line-height:0;margin-bottom:-1px;background:var(--paper)}
.ridge svg{display:block;width:100%;height:62px;fill:currentColor}
.ridge-navy{color:var(--navy)}
.ridge-green{color:#24523A}
.ridge-on-ivory{background:var(--ivory)}

/* buttons: letterpress small caps */
.btn{border-radius:0;text-transform:uppercase;font-size:.8rem;letter-spacing:.13em;padding:15px 30px;transition:transform .12s,box-shadow .12s,opacity .12s}
.btn:hover{opacity:1;transform:translateY(-2px);box-shadow:0 6px 16px -8px rgba(13,35,55,.5)}
.btn-soon:hover{transform:none;box-shadow:none}
.amounts a{border-radius:0}

/* editorial section labels: gold rule trails the eyebrow */
.eyebrow{display:flex;align-items:center;gap:16px}
.eyebrow::after{content:"";height:1px;flex:1;background:linear-gradient(to right,var(--gold) 0 42px,rgba(233,169,61,.25))}
.pagehead .eyebrow,.endorse-hold .eyebrow{justify-content:center}
.pagehead .eyebrow::after,.endorse-hold .eyebrow::after{display:none}

/* gold tick under section heads */
h2.sect::after{content:"";display:block;width:58px;height:3px;background:var(--gold);margin-top:18px}
.endorse-hold h2.sect::after{margin:18px auto 0}
.donate-band h2::after,.join-band h2::after,.cta-band h2::after{display:none}

/* hero kicker: bar-chip */
.hero-photo .kicker{border-left:3px solid var(--gold);padding-left:14px}

/* quiet link arrows that move */
.more-link{position:relative;transition:padding-right .15s}
.more-link:hover{padding-right:6px}

/* rule-list numerals in gold */
.rule-list .n{color:var(--gold)}

/* pull quote: oversized gold mark */
.pull{position:relative;padding-top:44px}
.pull::before{content:"\201C";position:absolute;top:6px;left:50%;transform:translateX(-50%);font-family:var(--serif);font-weight:800;font-size:3.4rem;line-height:1;color:var(--gold)}

/* quote band: giant ghost mark + gold cite rule */
.quote-band{position:relative;overflow:hidden}
.quote-band .wrap{position:relative}
.quote-band .wrap::before{content:"\201C";position:absolute;top:-70px;left:50%;transform:translateX(-50%);font-family:var(--serif);font-weight:800;font-size:16rem;line-height:1;color:rgba(19,47,73,.06);pointer-events:none}
.quote-band cite::before{content:"";display:block;width:44px;height:2px;background:var(--gold);margin:0 auto 14px}

/* donate band: gold press rule */
.donate-band{border-top:3px solid var(--gold)}

/* join band: deep conservancy green */
.join-band{background:#24523A}
.join-band small{color:#A8C3B2}
/* the default green link colour is unreadable on the green band (1.4:1) */
.join-band small a{color:#DCEAE1;border-bottom:1px solid rgba(220,234,225,.45);text-decoration:none}
.join-band small a:hover{color:#fff;border-bottom-color:#fff}
.join-band p{color:#D3E2D8}
.join-form input{border-color:#3C6B50}
.jf-address{border-color:rgba(220,234,225,.22)}
.jf-address .jf-note{color:#D3E2D8}
.join-form input:focus{outline-color:var(--gold)}

/* footer: gold press rule + book mark */
footer.site{border-top:3px solid var(--gold)}

/* Eight nav links plus the logo and the Donate button run out of header room
   before the rest of the layout needs to change, so the menu button takes over
   here rather than at the main 840px breakpoint. */
@media (max-width:960px){
  .nav-links{display:none;position:absolute;top:100%;left:0;right:0;background:var(--paper);flex-direction:column;align-items:flex-start;padding:22px 28px;gap:18px;border-bottom:1px solid var(--line)}
  .nav-links.open{display:flex}
  .menu-btn{display:block}
  .nav-links .lang a{display:inline-block}
}
@media (max-width:900px){
  .hero-photo .grid{grid-template-columns:1fr;gap:48px}
  .hero-photo .photo-col{max-width:420px}
  .district-teaser .inner{grid-template-columns:1fr;gap:36px}
}
@media (max-width:840px){
  .split,.bio,.involve-grid{grid-template-columns:1fr;gap:40px}
  .endorse-feature{grid-template-columns:1fr;gap:34px;text-align:center}
  .endorse-feature .portrait{max-width:260px;margin:0 auto 12px}
  .endorse-feature .portrait::after{inset:16px -10px -10px 16px}
  .endorse-feature blockquote{padding-top:44px}
  .endorse-feature blockquote::before{left:50%;transform:translateX(-50%)}
  .endorser-grid{gap:24px}
  .resume{grid-template-columns:1fr;gap:30px}
  .family-grid{grid-template-columns:1fr;gap:32px;max-width:440px;margin-left:auto;margin-right:auto}
  .asset-grid{grid-template-columns:1fr 1fr;gap:20px}
  .photo-frame{max-width:360px}
  .bio-side{position:static;max-width:400px}
  section{padding:58px 0}
  .foot-grid{grid-template-columns:1fr;gap:30px}
  footer.site a{word-break:break-word}
  .brand-office{letter-spacing:.2em}
  .brand-logo{height:62px}
  #map{height:420px}
  .donate-band .inner{align-items:center}
  .amounts a{padding:14px 26px;min-width:96px;font-size:1.02rem}
  .field-row{grid-template-columns:1fr}
  .jf-grid{grid-template-columns:1fr}
}
