:root{
  --paper:#FBF6EA;
  --paper-deep:#F2E8D2;
  --ink:#241E18;
  --ink-soft:#655A4C;
  --oxblood:#A6342A;
  --oxblood-deep:#7A2419;
  --indigo:#1E6FA6;
  --indigo-deep:#124867;
  --turmeric:#DB9A2E;
  --turmeric-deep:#A66E1C;
  --teal:#1F8A6F;
  --teal-deep:#125F49;
  --rose-tint:#FBE8E3;
  --blue-tint:#E3F1F8;
  --teal-tint:#E1F3EC;
  --gold-tint:#FCF0DA;
  --line: rgba(36,30,24,0.14);
  --radius: 2px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:"Work Sans", sans-serif;
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{
  font-family:"Fraunces", serif;
  font-weight:600;
  margin:0;
  color:var(--ink);
  letter-spacing:-0.01em;
}
a{color:inherit;}
:focus-visible{outline:3px solid var(--turmeric); outline-offset:3px;}
.eyebrow{
  font-family:"IBM Plex Mono", monospace;
  font-size:0.75rem;
  font-weight:600;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--oxblood);
}
.wrap{
  max-width:1120px;
  margin:0 auto;
  padding:0 32px;
}
@media (max-width:640px){ .wrap{padding:0 20px;} }

/* ---------- header ---------- */
header{
  position:sticky; top:0; z-index:50;
  background:rgba(251,246,234,0.94);
  backdrop-filter:blur(6px);
  border-bottom:3px solid transparent;
  border-image:linear-gradient(90deg, var(--oxblood) 0%, var(--turmeric) 33%, var(--teal) 66%, var(--indigo) 100%) 1;
}
.nav{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 0;
}
.brand{
  display:flex;
  align-items:center;
  gap:12px;
  text-decoration:none;
}
.brand img{
  width:40px;height:40px;border-radius:50%;
  object-fit:cover;
  box-shadow:0 0 0 2px var(--paper), 0 0 0 3.5px var(--oxblood);
}
.brand .name{
  font-family:"Fraunces",serif;
  font-weight:600;
  font-size:1.02rem;
  line-height:1.15;
}
.brand .name small{
  display:block;
  font-family:"IBM Plex Mono",monospace;
  font-weight:500;
  font-size:0.75rem;
  letter-spacing:0.1em;
  color:var(--ink-soft);
  text-transform:uppercase;
  margin-top:2px;
}
nav.links{
  display:flex;
  align-items:center;
  gap:26px;
  font-size:0.94rem;
}
nav.links a{
  text-decoration:none;
  color:var(--ink);
  font-weight:700;
  letter-spacing:0.01em;
  transition:color .15s;
  position:relative;
  padding-bottom:3px;
}
nav.links a:hover{color:var(--oxblood);}
nav.links a.active{color:var(--oxblood);}
nav.links a.active::after{
  content:"";
  position:absolute; left:0; right:0; bottom:-3px;
  height:3px;
  background:linear-gradient(90deg, var(--oxblood), var(--turmeric));
  border-radius:2px;
}
nav.links a.btn-donate{
  background:linear-gradient(120deg, var(--oxblood), var(--turmeric-deep));
  color:#fff !important;
  padding:9px 20px;
  border-radius:999px;
  font-size:0.86rem;
  letter-spacing:.02em;
  box-shadow:0 6px 14px rgba(166,52,42,0.28);
  transition:transform .15s ease, box-shadow .15s ease;
}
nav.links a.btn-donate:hover{
  transform:translateY(-2px);
  box-shadow:0 10px 18px rgba(166,52,42,0.36);
  color:#fff;
}
nav.links a.btn-donate.active::after{ display:none; }
.nav-toggle{display:none;}
@media (max-width:900px){
  nav.links{display:none;}
  .nav-toggle{
    display:block; background:none; border:1.5px solid var(--ink); border-radius:var(--radius);
    padding:8px 10px; font-family:"IBM Plex Mono",monospace; font-size:0.75rem; font-weight:700;
    letter-spacing:.08em; text-transform:uppercase; cursor:pointer; color:var(--ink);
  }
  nav.links.open{
    display:flex; flex-direction:column; align-items:stretch; gap:0;
    position:absolute; top:100%; left:0; right:0;
    background:var(--paper); border-bottom:1px solid var(--line);
    padding:6px 20px 18px;
  }
  nav.links.open a{padding:12px 0; border-bottom:1px solid var(--line);}
  nav.links.open a.active::after{display:none;}
  nav.links.open a.btn-donate{
    text-align:center; margin-top:12px; border-bottom:none; padding:12px 20px;
  }
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; gap:8px;
  font-family:"IBM Plex Mono",monospace;
  font-size:0.76rem; font-weight:600;
  letter-spacing:0.08em; text-transform:uppercase;
  padding:13px 22px;
  text-decoration:none;
  border-radius:var(--radius);
  transition:transform .15s, box-shadow .15s;
}
.btn-primary{
  background:var(--oxblood); color:#FBF6EA;
}
.btn-primary:hover{transform:translateY(-1px); box-shadow:0 6px 16px rgba(166,52,42,0.32);}
.btn-ghost{
  border:1.5px solid var(--ink);
  color:var(--ink);
}
.btn-ghost:hover{transform:translateY(-1px);}
.btn-ghost.on-dark{ border-color:rgba(255,255,255,0.6); color:#fff; }

/* ---------- image slider (home) ---------- */
.slider{
  position:relative;
  width:100%;
  height:78vh;
  min-height:440px;
  max-height:720px;
  overflow:hidden;
  background:linear-gradient(135deg, var(--oxblood-deep) 0%, var(--indigo-deep) 60%, var(--teal-deep) 100%);
}
.slider .slide{
  position:absolute; top:0; left:0; right:0; bottom:0;
  opacity:0;
  transition:opacity 1.1s ease;
  pointer-events:none;
}
.slider .slide.active{
  opacity:1;
  pointer-events:auto;
}
.slider .slide img{
  width:100%; height:100%;
  object-fit:contain;
  object-position:center;
  display:block;
}
.slider .slide::after{
  content:"";
  position:absolute; top:0; left:0; right:0; bottom:0;
  background:linear-gradient(0deg, rgba(18,15,12,0.82) 0%, rgba(18,15,12,0.22) 46%, rgba(18,15,12,0.30) 100%);
}
.slider .slide-caption{
  position:absolute;
  left:0; right:0; bottom:0;
  padding:0 0 64px;
  z-index:2;
  color:#F3EFE5;
}
.slider .slide-caption .wrap{max-width:1120px;}
.slider .slide-caption .eyebrow{
  color:var(--turmeric);
}
.slider .slide-caption .slide-title{
  font-family:"Fraunces",serif;
  font-weight:600;
  font-size:clamp(1.6rem, 3.6vw, 2.6rem);
  line-height:1.25;
  color:#F9F5ED;
  margin:12px 0 0;
  max-width:20ch;
}
@media (max-width:640px){
  .slider{height:62vh; min-height:360px;}
  .slider .slide-caption{padding-bottom:44px;}
}
.slider-controls{
  position:absolute;
  z-index:3;
  left:0; right:0;
  bottom:20px;
  display:flex; align-items:center; justify-content:center;
  gap:0;
}
.slider-pause{
  position:absolute; z-index:3; right:20px; bottom:14px;
  background:rgba(18,15,12,0.45); border:1px solid rgba(243,239,229,0.7);
  border-radius:999px; color:#F3EFE5; padding:7px 11px; cursor:pointer;
  font:600 0.75rem "IBM Plex Mono",monospace; letter-spacing:.04em;
}
.slider-controls .dot{
  position:relative; width:28px; height:28px; border:0; background:none;
  padding:0; cursor:pointer;
}
.slider-controls .dot::before{
  content:""; position:absolute; top:50%; left:50%;
  width:10px; height:10px; margin:-5px 0 0 -5px; border-radius:50%;
  border:1.5px solid rgba(243,239,229,0.7);
  background:transparent;
  transition:background .2s, transform .2s;
}
.slider-controls .dot.active::before{
  background:var(--turmeric);
  border-color:var(--turmeric);
  transform:scale(1.2);
}
.slider-arrow{
  position:absolute;
  z-index:3;
  top:50%; transform:translateY(-50%);
  width:44px; height:44px;
  border-radius:50%;
  border:1px solid rgba(243,239,229,0.4);
  background:rgba(18,15,12,0.28);
  color:#F3EFE5;
  font-family:"IBM Plex Mono",monospace;
  font-size:1rem;
  display:flex; align-items:center; justify-content:center;
  cursor:pointer;
  transition:background .2s, border-color .2s;
}
.slider-arrow:hover{ background:rgba(18,15,12,0.55); border-color:rgba(243,239,229,0.8); }
.slider-arrow.prev{ left:20px; }
.slider-arrow.next{ right:20px; }
@media (max-width:700px){
  .slider-arrow{width:36px; height:36px;}
  .slider-arrow.prev{left:12px;}
  .slider-arrow.next{right:12px;}
}

/* ---------- hero (home, below slider) ---------- */
.hero{
  position:relative;
  overflow:hidden;
  padding:88px 0 80px;
  background:linear-gradient(160deg, var(--blue-tint) 0%, var(--paper) 45%, var(--gold-tint) 100%);
  border-bottom:1px solid var(--line);
}
.hero::before{
  content:"";
  position:absolute; top:0; left:0; right:0; bottom:0;
  background:
    radial-gradient(560px 560px at 88% -10%, rgba(166,52,42,0.10), transparent 60%),
    radial-gradient(620px 620px at -10% 110%, rgba(31,138,111,0.12), transparent 60%);
  pointer-events:none;
}
.hero-grid{
  position:relative;
  display:grid;
  grid-template-columns:1.15fr 0.85fr;
  gap:64px;
  align-items:center;
}
@media (max-width:900px){
  .hero-grid{grid-template-columns:1fr; gap:44px;}
  .hero{padding:64px 0 56px;}
}
.hero h1{
  font-size:clamp(2.1rem, 4.4vw, 3.4rem);
  line-height:1.06;
  margin-top:18px;
}
.hero h1 em{
  font-style:italic;
  color:var(--oxblood);
}
.hero p.lede{
  margin:22px 0 0;
  font-size:1.08rem;
  color:var(--ink-soft);
  max-width:52ch;
}
.hero-cta{
  display:flex;
  gap:14px;
  margin-top:34px;
  flex-wrap:wrap;
}
.hero-stats{
  display:flex; gap:14px;
  margin-top:44px;
  border-top:none;
  padding-top:0;
}
.hero-stats .stat{
  flex:1;
  padding:18px 16px;
  border-radius:12px;
  box-shadow:0 8px 18px rgba(36,30,24,0.1);
}
.hero-stats .stat + .stat{
  border-left:none;
  padding-left:16px;
}
.hero-stats .stat:nth-child(1){ background:var(--rose-tint); }
.hero-stats .stat:nth-child(2){ background:var(--teal-tint); }
.hero-stats .stat:nth-child(3){ background:var(--blue-tint); }
.hero-stats .num{
  font-family:"Fraunces",serif;
  font-size:1.9rem; font-weight:700;
}
.hero-stats .stat:nth-child(1) .num{ color:var(--oxblood); }
.hero-stats .stat:nth-child(2) .num{ color:var(--teal-deep); }
.hero-stats .stat:nth-child(3) .num{ color:var(--indigo-deep); }
.hero-stats .lbl{
  font-family:"IBM Plex Mono",monospace;
  font-size:0.75rem; letter-spacing:.06em; text-transform:uppercase;
  color:var(--ink-soft);
  margin-top:6px;
}
@media (max-width:640px){
  .hero-stats{flex-wrap:wrap; row-gap:14px;}
  .hero-stats .stat{flex:1 1 45%;}
  .hero-stats .stat:nth-child(2){border-left:none;}
}
.hero-seal{
  position:relative;
  display:flex; align-items:center; justify-content:center;
}
.hero-seal .ring-outer{
  position:relative;
  width:min(340px, 78vw); aspect-ratio:1/1;
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  animation:spin 60s linear infinite;
}
@media (prefers-reduced-motion: reduce){ .hero-seal .ring-outer{animation:none;} }
@keyframes spin{ to{ transform:rotate(360deg); } }
.hero-seal svg{ position:absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%; }
.hero-seal img{
  position:relative;
  width:64%; aspect-ratio:1/1;
  border-radius:50%;
  object-fit:cover;
  box-shadow:0 18px 40px rgba(42,37,32,0.22);
  animation:counterspin 60s linear infinite;
}
@media (prefers-reduced-motion: reduce){ .hero-seal img{animation:none;} }
@keyframes counterspin{ to{ transform:rotate(-360deg); } }

/* ---------- page banner (sub-pages) ---------- */
.page-banner{
  position:relative;
  overflow:hidden;
  padding:76px 0 56px;
  color:#FBF6EA;
}
.page-banner .wrap{ position:relative; z-index:1; }
.page-banner .eyebrow{ color:rgba(251,246,234,0.78); }
.page-banner h1{
  color:#fff;
  font-size:clamp(1.9rem, 3.6vw, 2.7rem);
  margin-top:14px;
  max-width:26ch;
}
.page-banner p{
  color:rgba(251,246,234,0.85);
  max-width:60ch;
  margin-top:16px;
  font-size:1.02rem;
}
.page-banner::before{
  content:"";
  position:absolute; inset:0;
  background-image:radial-gradient(rgba(255,255,255,0.14) 1.5px, transparent 1.5px);
  background-size:22px 22px;
  opacity:0.5;
}
.page-banner.tone-about{ background:linear-gradient(120deg, rgba(18,72,103,.86), rgba(30,111,166,.72)), url("../images/slider/home-community.webp") center/cover; }
.page-banner.tone-programs{ background:linear-gradient(120deg, rgba(122,36,25,.88), rgba(166,52,42,.7)), url("../images/slider/home-community-activity.webp") center/cover; }
.page-banner.tone-approach{ background:linear-gradient(120deg, rgba(18,95,73,.88), rgba(31,138,111,.7)), url("../images/gallery/img-34-1.webp") center/cover; }
.page-banner.tone-partners{ background:linear-gradient(120deg, rgba(122,36,25,.78), rgba(166,110,28,.68)), url("../images/slider/home-recognition.webp") center/cover; }
.page-banner.tone-documents{ background:linear-gradient(120deg, rgba(18,72,103,.88), rgba(122,36,25,.72)), url("../images/gallery/img-1.webp") center/cover; }
.page-banner.tone-trustees{ background:linear-gradient(120deg, rgba(122,36,25,.85), rgba(18,95,73,.72)), url("../images/slider/home-women-gathering.webp") center/cover; }
.page-banner.tone-contact{ background:linear-gradient(120deg, rgba(18,72,103,.86), rgba(18,95,73,.76)), url("../images/gallery/img-30.webp") center/cover; padding-bottom:28px; }
.page-banner.tone-donate{ background:linear-gradient(120deg, rgba(122,36,25,.86), rgba(166,110,28,.7)), url("../images/gallery/img-40.webp") center/cover; }
.page-banner.tone-gallery{ background:linear-gradient(120deg, rgba(18,95,73,.84), rgba(30,111,166,.7)), url("../images/slider/home-women-gathering.webp") center/cover; }
.page-banner.tone-contact p{ max-width:none; white-space:nowrap; }
@media (max-width:760px){ .page-banner.tone-contact p{ white-space:normal; } }

/* ---------- sections ---------- */
section{padding:84px 0;}
section + section{border-top:1px solid var(--line);}
@media (max-width:640px){ section{padding:56px 0;} }
.section-head{ max-width:1120px; margin-bottom:48px; }
.section-head h2{ font-size:clamp(1.7rem, 3vw, 2.3rem); margin-top:14px; }
.section-head p{ color:var(--ink-soft); margin-top:14px; }

.tint-blue{ background:var(--blue-tint); }
.tint-rose{ background:var(--rose-tint); }
.tint-teal{ background:var(--teal-tint); }
.tint-gold{ background:var(--gold-tint); }

/* about */
.about-grid{ display:grid; grid-template-columns:1fr 1fr; gap:64px; }
@media (max-width:840px){ .about-grid{grid-template-columns:1fr; gap:36px;} }
.about-photo{
  width:100%; aspect-ratio:4/3; object-fit:cover;
  border-radius:var(--radius);
  box-shadow:0 22px 50px rgba(42,37,32,0.20);
}
.quote-stamp{
  position:relative;
  border:2px solid var(--indigo);
  border-radius:50%;
  width:220px; aspect-ratio:1/1;
  display:flex; align-items:center; justify-content:center;
  text-align:center;
  padding:30px;
  margin:0 auto;
  color:var(--indigo-deep);
  background:var(--blue-tint);
  transform:rotate(-6deg);
}
.quote-stamp::before{
  content:""; position:absolute; inset:10px;
  border:1px solid var(--indigo); border-radius:50%; opacity:.5;
}
.quote-stamp span{ font-family:"Fraunces",serif; font-style:italic; font-size:0.98rem; line-height:1.35; }
.vm-block{ padding:28px 0; }
.vm-block + .vm-block{ border-top:1px solid var(--line); }
.vm-block .eyebrow{
  margin-bottom:14px; display:inline-block;
  background:var(--turmeric); color:#fff;
  padding:6px 14px; border-radius:999px; letter-spacing:0.12em;
}
.vm-block:nth-child(2) .eyebrow{ background:var(--indigo); }
.vm-block p{color:var(--ink-soft);}
ul.mission-list{ list-style:none; margin:14px 0 0; padding:0; }
ul.mission-list li{
  position:relative; padding:12px 0 12px 26px;
  border-top:1px solid var(--line); color:var(--ink-soft);
}
ul.mission-list li:first-child{border-top:none;}
ul.mission-list li::before{
  content:""; position:absolute; left:0; top:20px;
  width:8px; height:8px; border-radius:50%;
}
ul.mission-list li:nth-child(4n+1)::before{ background:var(--oxblood); }
ul.mission-list li:nth-child(4n+2)::before{ background:var(--teal); }
ul.mission-list li:nth-child(4n+3)::before{ background:var(--indigo); }
ul.mission-list li:nth-child(4n+4)::before{ background:var(--turmeric-deep); }
ul.mission-list li strong{ color:var(--ink); font-weight:600; }

/* beneficiaries chips */
.chip-row{ display:flex; flex-direction:column; align-items:flex-start; gap:12px; }
.chip{
  font-family:"IBM Plex Mono",monospace;
  font-size:0.78rem;
  padding:11px 16px;
  border:1.5px solid var(--line);
  border-radius:999px;
  color:#fff;
  width:100%;
}
.chip:nth-child(5n+1){ background:var(--oxblood); border-color:var(--oxblood); }
.chip:nth-child(5n+2){ background:var(--teal); border-color:var(--teal); }
.chip:nth-child(5n+3){ background:var(--indigo); border-color:var(--indigo); }
.chip:nth-child(5n+4){ background:var(--turmeric-deep); border-color:var(--turmeric-deep); }
.chip:nth-child(5n+5){ background:var(--oxblood-deep); border-color:var(--oxblood-deep); }

/* program rows */
.program-rows{ display:flex; flex-direction:column; gap:24px; }
.program-row{
  display:flex; align-items:stretch; min-height:320px; border-radius:18px; overflow:hidden;
  box-shadow:0 10px 24px rgba(36,30,24,0.1);
}
.program-row:nth-child(even){ flex-direction:row-reverse; }
@media (max-width:760px){
  .program-row{ flex-direction:column !important; }
}
.program-row:nth-child(5n+1){ background:var(--rose-tint); }
.program-row:nth-child(5n+2){ background:var(--teal-tint); }
.program-row:nth-child(5n+3){ background:var(--blue-tint); }
.program-row:nth-child(5n+4){ background:var(--gold-tint); }
.program-row:nth-child(5n+5){ background:var(--paper-deep); }
.program-row-photo{
  flex:0 0 42%; width:42%; min-height:320px; align-self:stretch;
  object-fit:cover; object-position:center; display:block;
}
.program-row:nth-child(5n+1) .program-row-photo{ object-position:center 35%; }
.program-row:nth-child(5n+2) .program-row-photo{ object-position:center 50%; }
.program-row:nth-child(5n+3) .program-row-photo{ object-position:center 40%; }
.program-row:nth-child(5n+4) .program-row-photo{ object-position:center 45%; }
.program-row:nth-child(5n+5) .program-row-photo{ object-position:center 42%; }
@media (max-width:760px){
  .program-row{ min-height:0; }
  .program-row-photo{ width:100%; flex:none; aspect-ratio:16/10; min-height:0; }
}
.program-row-body{ flex:1; padding:32px 36px; display:flex; flex-direction:column; justify-content:center; }
@media (max-width:760px){ .program-row-body{ padding:24px 24px 28px; } }
.program-row .idx{
  align-self:flex-start;
  font-family:"IBM Plex Mono",monospace; font-size:0.75rem; letter-spacing:.08em;
  display:inline-block; padding:5px 12px; border-radius:999px; color:#fff;
}
.program-row:nth-child(5n+1) .idx{ background:var(--oxblood); }
.program-row:nth-child(5n+2) .idx{ background:var(--teal-deep); }
.program-row:nth-child(5n+3) .idx{ background:var(--indigo-deep); }
.program-row:nth-child(5n+4) .idx{ background:var(--turmeric-deep); }
.program-row:nth-child(5n+5) .idx{ background:var(--oxblood-deep); }
.program-row h3{ font-size:1.32rem; margin:16px 0 14px; }
.program-row .sub{
  margin-bottom:12px; padding:12px 16px; border-radius:10px;
  background:rgba(255,255,255,0.7); border-left:3px solid var(--oxblood);
}
.program-row:nth-child(5n+2) .sub{ border-left-color:var(--teal-deep); }
.program-row:nth-child(5n+3) .sub{ border-left-color:var(--indigo-deep); }
.program-row:nth-child(5n+4) .sub{ border-left-color:var(--turmeric-deep); }
.program-row:nth-child(5n+5) .sub{ border-left-color:var(--oxblood-deep); }
.program-row .sub:last-child{ margin-bottom:0; }
.program-row .sub h4{ font-family:"Work Sans",sans-serif; font-weight:600; font-size:0.92rem; color:var(--indigo-deep); margin-bottom:4px; }
.program-row .sub p{ font-size:0.9rem; color:var(--ink-soft); margin:0; }

/* strengths / methodology two-col */
.twocol{ display:grid; grid-template-columns:1fr 1fr; gap:32px; }
@media (max-width:840px){ .twocol{grid-template-columns:1fr; gap:16px;} }
.card-list{ display:flex; flex-direction:column; gap:14px; counter-reset:item; }
.card-list .item{
  display:flex; gap:16px; align-items:flex-start;
  padding:20px 22px; border-radius:12px; border:none;
  background:var(--paper-deep);
}
.card-list .item::before{
  counter-increment:item; content:counter(item, decimal-leading-zero);
  flex:0 0 auto; width:34px; height:34px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-family:"IBM Plex Mono",monospace; font-size:0.76rem; font-weight:600;
  color:#fff;
}
.card-list .item:nth-child(4n+1){ background:var(--rose-tint); }
.card-list .item:nth-child(4n+1)::before{ background:var(--oxblood); }
.card-list .item:nth-child(4n+2){ background:var(--teal-tint); }
.card-list .item:nth-child(4n+2)::before{ background:var(--teal-deep); }
.card-list .item:nth-child(4n+3){ background:var(--blue-tint); }
.card-list .item:nth-child(4n+3)::before{ background:var(--indigo-deep); }
.card-list .item:nth-child(4n+4){ background:var(--gold-tint); }
.card-list .item:nth-child(4n+4)::before{ background:var(--turmeric-deep); }

.card-list.full-row{ margin-top:14px; counter-reset:item 3; }
.card-list.full-row .item{ background:var(--gold-tint); }
.card-list.full-row .item::before{ background:var(--turmeric-deep); }
.card-list .item h3, .card-list .item h4{ font-family:"Fraunces",serif; font-weight:600; font-size:1.02rem; margin-bottom:6px; }
.card-list .item p{ color:var(--ink-soft); font-size:0.94rem; margin:0; }

/* organogram */
.organogram{ display:flex; flex-direction:column; align-items:center; gap:0; }
.org-tier{
  position:relative; text-align:center; padding:20px 26px;
  background:var(--paper-deep); border:1px solid var(--line); border-radius:12px;
  font-family:"IBM Plex Mono",monospace; font-size:0.78rem; letter-spacing:.03em; max-width:640px;
  box-shadow:0 6px 16px rgba(36,30,24,0.08);
}
.org-tier.top{
  background:var(--indigo-deep); color:#F3EFE5; border-color:var(--indigo-deep);
  font-family:"Fraunces",serif; font-size:1rem; letter-spacing:normal; font-weight:600; max-width:320px;
}
.org-tier:nth-of-type(3){ background:var(--oxblood); color:#fff; border-color:var(--oxblood); }
.org-tier:nth-of-type(5){ background:var(--teal-deep); color:#fff; border-color:var(--teal-deep); }
.org-tier:nth-of-type(7){ background:var(--turmeric-deep); color:#fff; border-color:var(--turmeric-deep); }
.org-tier:nth-of-type(9){ background:var(--oxblood-deep); color:#fff; border-color:var(--oxblood-deep); max-width:760px; }
.org-connector{ width:3px; height:34px; background:linear-gradient(var(--indigo-deep), var(--oxblood)); }
.org-connector:nth-of-type(4){ background:linear-gradient(var(--oxblood), var(--teal-deep)); }
.org-connector:nth-of-type(6){ background:linear-gradient(var(--teal-deep), var(--turmeric-deep)); }
.org-connector:nth-of-type(8){ background:linear-gradient(var(--turmeric-deep), var(--oxblood-deep)); }
@media (max-width:640px){ .org-tier{font-size:0.75rem; padding:16px 18px;} }

/* tools */
.tool-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
@media (max-width:700px){ .tool-grid{grid-template-columns:1fr;} }
.tool{ background:var(--paper); padding:26px 28px; }
.tool .eyebrow{display:block; margin-bottom:8px;}
.tool p{margin:0; color:var(--ink-soft); font-size:0.92rem;}
.tool:nth-child(1) .eyebrow{ color:var(--oxblood); }
.tool:nth-child(2) .eyebrow{ color:var(--teal-deep); }
.tool:nth-child(3) .eyebrow{ color:var(--indigo-deep); }
.tool:nth-child(4) .eyebrow{ color:var(--turmeric-deep); }

/* colorful tool tiles: sustainability section ("Built to outlast any single project") */
.tint-teal .tool-grid{ gap:16px; background:transparent; border:none; }
.tint-teal .tool{
  border-radius:14px; padding:28px; box-shadow:0 8px 20px rgba(36,30,24,0.1);
}
.tint-teal .tool:nth-child(1){ background:linear-gradient(135deg, var(--oxblood), var(--oxblood-deep)); }
.tint-teal .tool:nth-child(2){ background:linear-gradient(135deg, var(--teal), var(--teal-deep)); }
.tint-teal .tool:nth-child(3){ background:linear-gradient(135deg, var(--indigo), var(--indigo-deep)); }
.tint-teal .tool:nth-child(4){ background:linear-gradient(135deg, var(--turmeric), var(--turmeric-deep)); }
.tint-teal .tool .eyebrow{ color:#fff !important; opacity:.85; }
.tint-teal .tool p{ color:rgba(255,255,255,0.94); }

/* colorful tool tiles: analytical frameworks section ("Frameworks we apply") */
.tint-rose .tool-grid{ gap:16px; background:transparent; border:none; }
.tint-rose .tool{
  border-radius:14px; padding:28px; box-shadow:0 8px 20px rgba(36,30,24,0.08);
}
.tint-rose .tool:nth-child(1){ background:var(--rose-tint); }
.tint-rose .tool:nth-child(2){ background:var(--teal-tint); }
.tint-rose .tool:nth-child(3){ background:var(--blue-tint); }
.tint-rose .tool:nth-child(4){ background:var(--gold-tint); }
.tint-rose .tool .eyebrow{
  display:inline-block; margin-bottom:10px; padding:5px 12px; border-radius:999px; color:#fff;
}
.tint-rose .tool:nth-child(1) .eyebrow{ background:var(--oxblood); }
.tint-rose .tool:nth-child(2) .eyebrow{ background:var(--teal-deep); }
.tint-rose .tool:nth-child(3) .eyebrow{ background:var(--indigo-deep); }
.tint-rose .tool:nth-child(4) .eyebrow{ background:var(--turmeric-deep); }

/* partners */
.partner-list{ display:grid; grid-template-columns:repeat(2,1fr); gap:20px; }
@media (max-width:700px){ .partner-list{grid-template-columns:1fr; gap:16px;} }
.partner-list > div{
  padding:26px 24px 24px; border-left:none; border-radius:14px;
  position:relative; box-shadow:0 8px 20px rgba(36,30,24,0.08);
}
.partner-list > div::before{
  content:""; display:block; width:40px; height:40px; border-radius:10px; margin-bottom:16px;
}
.partner-list > div:nth-child(1){ background:var(--rose-tint); }
.partner-list > div:nth-child(1)::before{ background:var(--oxblood); }
.partner-list > div:nth-child(1) h3, .partner-list > div:nth-child(1) h4{ color:var(--oxblood-deep); }
.partner-list > div:nth-child(2){ background:var(--teal-tint); }
.partner-list > div:nth-child(2)::before{ background:var(--teal-deep); }
.partner-list > div:nth-child(2) h3, .partner-list > div:nth-child(2) h4{ color:var(--teal-deep); }
.partner-list > div:nth-child(3){ background:var(--blue-tint); }
.partner-list > div:nth-child(3)::before{ background:var(--indigo); }
.partner-list > div:nth-child(3) h3, .partner-list > div:nth-child(3) h4{ color:var(--indigo-deep); }
.partner-list > div:nth-child(4){ background:var(--gold-tint); }
.partner-list > div:nth-child(4)::before{ background:var(--turmeric-deep); }
.partner-list > div:nth-child(4) h3, .partner-list > div:nth-child(4) h4{ color:var(--turmeric-deep); }
.partner-list h3, .partner-list h4{ font-family:"Fraunces",serif; font-size:1.05rem; margin-bottom:8px; }
.partner-list p{ margin:0; color:var(--ink-soft); font-size:0.92rem; }

/* org details table */
.detail-table{ width:100%; border-collapse:collapse; font-size:0.92rem; }
.detail-table tr{ border-top:1px solid var(--line); }
.detail-table tr:first-child{ border-top:none; }
.detail-table th{
  text-align:left; font-family:"IBM Plex Mono",monospace; font-weight:600; font-size:0.75rem;
  letter-spacing:.05em; text-transform:uppercase; color:var(--ink-soft);
  padding:14px 20px 14px 0; width:38%; vertical-align:top;
}
.detail-table td{ padding:14px 0; color:var(--ink); }
@media (max-width:640px){
  .detail-table, .detail-table tbody, .detail-table tr, .detail-table th, .detail-table td{
    display:block; width:100%; padding-left:0; padding-right:0;
  }
  .detail-table th{padding-bottom:2px;}
  .detail-table td{padding-top:2px; padding-bottom:14px;}
}
.note-box{
  margin-top:18px; padding:16px 20px;
  border:1px dashed var(--turmeric-deep);
  background:var(--gold-tint);
  font-size:0.84rem; color:var(--ink-soft);
  border-radius:var(--radius);
}
.donate-card{ padding:30px; background:var(--paper-deep); border-radius:12px; }
.donate-card h3{ font-size:1.55rem; margin-top:14px; }
.donate-card > p{ color:var(--ink-soft); }

/* documents */
.doc-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
@media (max-width:900px){ .doc-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:640px){ .doc-grid{grid-template-columns:1fr;} }
.doc-card{ background:var(--paper); padding:28px 24px; display:flex; flex-direction:column; gap:16px; border-top:4px solid var(--indigo); }
.doc-card:nth-child(6n+2){ border-top-color:var(--oxblood); }
.doc-card:nth-child(6n+3){ border-top-color:var(--teal); }
.doc-card:nth-child(6n+4){ border-top-color:var(--turmeric-deep); }
.doc-card:nth-child(6n+5){ border-top-color:var(--indigo-deep); }
.doc-card:nth-child(6n+6){ border-top-color:var(--oxblood-deep); }
.doc-icon{
  width:40px; height:48px; display:flex; align-items:center; justify-content:center;
  background:var(--oxblood); color:#F7EFE6; font-family:"IBM Plex Mono",monospace;
  font-size:0.75rem; font-weight:600; letter-spacing:0.04em;
  clip-path:polygon(0 0, 72% 0, 100% 28%, 100% 100%, 0 100%);
}
.doc-body h3, .doc-body h4{ font-family:"Fraunces",serif; font-size:1.04rem; margin:8px 0 4px; line-height:1.3; }
.doc-meta{ margin:0; font-family:"IBM Plex Mono",monospace; font-size:0.75rem; color:var(--ink-soft); }
.doc-actions{ display:flex; gap:10px; margin-top:auto; padding-top:6px; }
.btn-sm{ padding:9px 14px; font-size:0.75rem; border:none; cursor:pointer; font-family:"IBM Plex Mono",monospace; }
.btn-sm.btn-ghost{ border:1.5px solid var(--ink); background:none; }
.btn-sm.btn-primary{ background:var(--oxblood); color:#F7EFE6; }

/* document viewer modal */
.doc-modal{ position:fixed; inset:0; z-index:100; display:none; flex-direction:column; background:rgba(18,15,12,0.86); backdrop-filter:blur(3px); }
.doc-modal.open{ display:flex; }
.doc-modal-bar{ display:flex; align-items:center; justify-content:space-between; padding:14px 20px; background:var(--indigo-deep); color:#F3EFE5; flex:none; }
.doc-modal-title{ font-family:"Fraunces",serif; font-size:1rem; font-weight:600; }
.doc-modal-actions{ display:flex; align-items:center; gap:14px; }
.doc-modal-actions .btn-ghost{ border-color:rgba(243,239,229,0.5); color:#F3EFE5; }
.doc-modal-close{ background:none; border:none; color:#F3EFE5; font-size:1.6rem; line-height:1; cursor:pointer; padding:0 4px; }
.doc-modal-frame{ flex:1; background:#3a3530; }
.doc-modal-frame iframe{ width:100%; height:100%; border:none; }

/* trustees */
.trustee-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
@media (max-width:840px){ .trustee-grid{grid-template-columns:1fr;} }
.trustee{
  padding:28px 24px; border:none; border-top:none; border-radius:16px;
  box-shadow:0 10px 24px rgba(36,30,24,0.1);
}
.trustee:nth-child(1){ background:var(--rose-tint); }
.trustee:nth-child(2){ background:var(--teal-tint); }
.trustee:nth-child(3){ background:var(--blue-tint); }
.trustee::before{
  content:attr(data-initial); display:flex; align-items:center; justify-content:center;
  width:52px; height:52px; border-radius:50%; color:#fff;
  font-family:"Fraunces",serif; font-size:1.3rem; font-weight:600; margin-bottom:16px;
}
.trustee:nth-child(1)::before{ background:var(--oxblood); }
.trustee:nth-child(2)::before{ background:var(--teal-deep); }
.trustee:nth-child(3)::before{ background:var(--indigo-deep); }
.trustee .role{
  font-family:"IBM Plex Mono",monospace; font-size:0.75rem; letter-spacing:.08em; text-transform:uppercase;
  display:inline-block; padding:5px 12px; border-radius:999px; color:#fff;
}
.trustee:nth-child(1) .role{ background:var(--oxblood); }
.trustee:nth-child(2) .role{ background:var(--teal-deep); }
.trustee:nth-child(3) .role{ background:var(--indigo-deep); }
.trustee h3, .trustee h4{ font-family:"Fraunces",serif; font-size:1.1rem; margin:12px 0 6px; }
.trustee p{ margin:0; color:var(--ink-soft); font-size:0.86rem; line-height:1.5; }

/* contact / footer */
/*.contact{ background:linear-gradient(160deg, var(--teal-deep), var(--teal-deep) 130%); color:#F3EFE5; padding-top:36px; }*/
.contact .section-head p{ color:rgba(243,239,229,0.72); }
.contact .eyebrow{ color:var(--turmeric); }
.contact-grid{ display:block; max-width:640px; }
.contact-info .row{ display:flex; gap:16px; padding:16px 0; border-top:1px solid rgba(243,239,229,0.16); }
.contact-info .row:first-child{border-top:none; padding-top:0;}
.contact-info .lbl{
  font-family:"IBM Plex Mono",monospace; font-size:0.75rem; letter-spacing:.08em; text-transform:uppercase;
  color:black; width:110px; flex:none; padding-top:2px;
}
.contact-info .val a{ text-decoration:none; }
.contact-info .val a:hover{ text-decoration:underline; }

footer.bottom{
  background:var(--indigo-deep); color:rgba(243,239,229,0.55);
  border-top:1px solid rgba(243,239,229,0.16); padding:22px 0 34px; font-size:0.78rem;
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px;
}
footer.bottom a{ color:inherit; text-decoration:none; }
footer.bottom a:hover{ color:#F3EFE5; text-decoration:underline; }
.footer-contact{ width:100%; color:rgba(243,239,229,0.72); }
.donate-secondary-email{ margin-top:18px; font-size:0.92rem; }
.donate-secondary-email a{ color:var(--indigo-deep); font-weight:600; }

/* quick-link cards (home) */
.quicklink-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; background:transparent; border:none; }
@media (max-width:900px){ .quicklink-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:520px){ .quicklink-grid{grid-template-columns:1fr;} }
.quicklink{
  display:block; padding:30px 26px; text-decoration:none; color:#fff;
  border-top:none; border-radius:14px; transition:transform .18s ease, box-shadow .18s ease;
  box-shadow:0 8px 20px rgba(36,30,24,0.12);
}
.quicklink:hover{ transform:translateY(-4px); box-shadow:0 12px 26px rgba(36,30,24,0.18); }
.quicklink:nth-child(4n+1){ background:linear-gradient(135deg, var(--oxblood), var(--oxblood-deep)); }
.quicklink:nth-child(4n+2){ background:linear-gradient(135deg, var(--teal), var(--teal-deep)); }
.quicklink:nth-child(4n+3){ background:linear-gradient(135deg, var(--indigo), var(--indigo-deep)); }
.quicklink:nth-child(4n+4){ background:linear-gradient(135deg, var(--turmeric), var(--turmeric-deep)); }
.quicklink .eyebrow{
  display:inline-block; margin-bottom:14px; color:#fff; opacity:.85;
  background:rgba(255,255,255,0.18); padding:4px 10px; border-radius:999px;
}
.quicklink h3, .quicklink h4{ font-family:"Fraunces",serif; font-size:1.08rem; margin-bottom:8px; color:#fff; }
.quicklink p{ margin:0; font-size:0.86rem; color:rgba(255,255,255,0.92); }
.quicklink .arrow{ display:inline-block; margin-top:14px; font-family:"IBM Plex Mono",monospace; font-size:0.75rem; color:#fff; }

/* home programs grid */
.home-programs{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
@media (max-width:900px){ .home-programs{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .home-programs{grid-template-columns:1fr;} }
.home-program{
  display:block; text-decoration:none; color:inherit; background:var(--paper);
  border-radius:16px; overflow:hidden; box-shadow:0 10px 24px rgba(36,30,24,0.1);
  transition:transform .18s ease, box-shadow .18s ease;
}
.home-program:hover{ transform:translateY(-4px); box-shadow:0 14px 30px rgba(36,30,24,0.16); }
.home-program img{ width:100%; aspect-ratio:4/3; object-fit:cover; display:block; }
.home-program-body{ padding:18px 20px 22px; display:flex; flex-direction:column; gap:14px; }
.home-program-body h3, .home-program-body h4{ font-family:"Fraunces",serif; font-size:1.05rem; margin:0; }
.home-program .btn-view{
  align-self:flex-start; font-family:"IBM Plex Mono",monospace; font-size:0.75rem;
  letter-spacing:.06em; text-transform:uppercase; padding:8px 16px; border-radius:999px; color:#fff;
}
.home-program:nth-child(5n+1) .btn-view{ background:var(--oxblood); }
.home-program:nth-child(5n+2) .btn-view{ background:var(--teal-deep); }
.home-program:nth-child(5n+3) .btn-view{ background:var(--indigo-deep); }
.home-program:nth-child(5n+4) .btn-view{ background:var(--turmeric-deep); }
.home-program:nth-child(5n+5) .btn-view{ background:var(--oxblood-deep); }

/* gallery */
.gallery-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin-bottom: 28px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--line);
}
.gallery-filter-btn {
  background: var(--paper-deep);
  border: 1.5px solid var(--line);
  color: var(--ink);
  font-family: "IBM Plex Mono", monospace;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 8px 16px;
  border-radius: 999px;
  cursor: pointer;
  transition: all 0.2s ease;
}
.gallery-filter-btn:hover {
  border-color: var(--oxblood);
  color: var(--oxblood);
  transform: translateY(-1px);
}
.gallery-filter-btn.active {
  background: var(--oxblood);
  border-color: var(--oxblood);
  color: #fff;
  box-shadow: 0 4px 12px rgba(166, 52, 42, 0.28);
}

.gallery-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
@media (max-width: 980px) {
  .gallery-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 620px) {
  .gallery-grid { grid-template-columns: 1fr; }
}

.gallery-card {
  margin: 0;
  background: #ffffff;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: 0 8px 22px rgba(36, 30, 24, 0.07);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.gallery-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 16px 32px rgba(36, 30, 24, 0.14);
}

.gallery-media {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
  background: #241E18;
  cursor: pointer;
}
.gallery-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.4s ease;
}
.gallery-media:hover img {
  transform: scale(1.05);
}

.gallery-tag {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 2;
  font-family: "IBM Plex Mono", monospace;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 999px;
  color: #fff;
  background: rgba(18, 15, 12, 0.78);
  backdrop-filter: blur(4px);
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
}
.gallery-tag.tag-skill { background: var(--teal-deep); }
.gallery-tag.tag-shg { background: var(--oxblood); }
.gallery-tag.tag-visit { background: var(--indigo-deep); }
.gallery-tag.tag-community { background: var(--turmeric-deep); }

.gallery-zoom-badge {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 2;
  background: rgba(251, 246, 234, 0.94);
  color: var(--ink);
  border: 1px solid rgba(36, 30, 24, 0.15);
  border-radius: 999px;
  padding: 5px 11px;
  font-family: "IBM Plex Mono", monospace;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  cursor: pointer;
  transition: all 0.2s ease;
  box-shadow: 0 2px 8px rgba(0,0,0,0.18);
}
.gallery-media:hover .gallery-zoom-badge,
.gallery-zoom-badge:hover {
  background: var(--oxblood);
  color: #fff;
  border-color: var(--oxblood);
  transform: scale(1.04);
}

.gallery-content {
  padding: 20px 22px 22px;
  display: flex;
  flex-direction: column;
  flex: 1;
  background: var(--paper);
}
.gallery-eyebrow {
  font-family: "IBM Plex Mono", monospace;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--oxblood);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: 6px;
}
.gallery-title {
  font-family: "Fraunces", serif;
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1.32;
  color: var(--ink);
  margin: 0 0 10px;
}
.gallery-desc {
  font-family: "Work Sans", sans-serif;
  font-size: 0.88rem;
  line-height: 1.55;
  color: var(--ink-soft);
  margin: 0;
  flex: 1;
}
.gallery-footer {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px dashed var(--line);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.gallery-action-zoom {
  background: none;
  border: none;
  padding: 0;
  font-family: "IBM Plex Mono", monospace;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--oxblood);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: color 0.15s ease;
}
.gallery-action-zoom:hover {
  color: var(--oxblood-deep);
  text-decoration: underline;
}
.gallery-year {
  font-family: "IBM Plex Mono", monospace;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--ink-soft);
}

/* gallery pagination / progressive load more */
.gallery-pagination-wrap {
  margin-top: 42px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
  text-align: center;
}
.gallery-progress-info {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  width: 100%;
  max-width: 340px;
}
.gallery-progress-info span {
  font-family: "IBM Plex Mono", monospace;
  font-size: 0.76rem;
  font-weight: 600;
  color: var(--ink-soft);
  letter-spacing: 0.04em;
}
.gallery-progress-bar {
  width: 100%;
  height: 6px;
  background: var(--paper-deep);
  border: 1px solid var(--line);
  border-radius: 999px;
  overflow: hidden;
}
.gallery-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--oxblood), var(--turmeric));
  border-radius: 999px;
  transition: width 0.35s ease;
}
.gallery-load-actions {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 12px;
}
.gallery-load-actions .btn {
  cursor: pointer;
}
.gallery-all-loaded {
  font-family: "IBM Plex Mono", monospace;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--teal-deep);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 22px;
  background: var(--teal-tint);
  border: 1px solid rgba(31, 138, 111, 0.25);
  border-radius: 999px;
}

:where(html.js) .reveal{ opacity:0; transform:translateY(14px); transition:opacity .6s ease, transform .6s ease; }
:where(html.js) .reveal.in{ opacity:1; transform:translateY(0); }

/* enhanced lightbox zoom modal */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 1000;
  background: rgba(14, 11, 8, 0.94);
  backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
  padding: 20px;
}
.lightbox.active {
  opacity: 1;
  pointer-events: auto;
}
.lightbox-wrapper {
  position: relative;
  max-width: 980px;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  max-height: 94vh;
}
.lightbox-stage {
  position: relative;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.lightbox-img {
  max-width: 100%;
  max-height: 66vh;
  object-fit: contain;
  border-radius: 6px;
  box-shadow: 0 16px 48px rgba(0,0,0,0.6);
  transform: scale(0.96);
  transition: transform 0.25s ease;
}
.lightbox.active .lightbox-img {
  transform: scale(1);
}
.lightbox-caption-box {
  margin-top: 12px;
  width: 100%;
  max-width: 880px;
  background: rgba(36, 30, 24, 0.95);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 8px;
  padding: 14px 20px;
  color: #FBF6EA;
  text-align: left;
}
.lightbox-caption-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 4px;
}
.lightbox-tag {
  font-family: "IBM Plex Mono", monospace;
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--turmeric);
  font-weight: 600;
}
.lightbox-counter {
  font-family: "IBM Plex Mono", monospace;
  font-size: 0.75rem;
  color: rgba(251, 246, 234, 0.6);
}
.lightbox-title {
  font-family: "Fraunces", serif;
  font-size: 1.18rem;
  font-weight: 600;
  color: #ffffff;
  margin: 0 0 6px;
}
.lightbox-desc {
  font-family: "Work Sans", sans-serif;
  font-size: 0.88rem;
  line-height: 1.5;
  color: rgba(251, 246, 234, 0.88);
  margin: 0;
}
.lightbox-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(251, 246, 234, 0.18);
  border: 1px solid rgba(255, 255, 255, 0.3);
  color: #fff;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 1.5rem;
  transition: all 0.2s ease;
  z-index: 10;
}
.lightbox-nav:hover {
  background: var(--oxblood);
  transform: translateY(-50%) scale(1.08);
}
.lightbox-prev { left: 8px; }
.lightbox-next { right: 8px; }
@media (min-width: 1040px) {
  .lightbox-prev { left: -60px; }
  .lightbox-next { right: -60px; }
}
.lightbox-close {
  position: absolute;
  top: 18px;
  right: 18px;
  background: rgba(255, 255, 255, 0.15);
  border: 1px solid rgba(255, 255, 255, 0.3);
  color: #fff;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  font-size: 1.6rem;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.2s ease;
  z-index: 30;
}
.lightbox-close:hover {
  background: var(--oxblood);
  transform: rotate(90deg);
}

/* ======== contact page styles (moved from inline) ======== */
/* -------- contact cards section -------- */
.contact-cards-section { padding: 84px 0; }
.contact-cards-section .section-head { margin-bottom: 48px; }

.contact-cards-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-bottom: 0;
}
@media (max-width: 900px) { .contact-cards-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .contact-cards-grid { grid-template-columns: 1fr; } }

.contact-card {
  background: var(--paper);
  border-radius: 18px;
  padding: 32px 28px;
  box-shadow: 0 10px 28px rgba(36,30,24,0.10);
  display: flex;
  flex-direction: column;
  gap: 14px;
  transition: transform .2s ease, box-shadow .2s ease;
  position: relative;
  overflow: hidden;
}
.contact-card::after {
  content: "";
  position: absolute; inset: 0; border-radius: 18px;
  border: 1.5px solid transparent;
  transition: border-color .2s ease;
  pointer-events: none;
}
.contact-card:hover { transform: translateY(-5px); box-shadow: 0 18px 38px rgba(36,30,24,0.14); }
.contact-card:hover::after { border-color: rgba(166,52,42,0.22); }

.contact-card:nth-child(1) { background: var(--rose-tint); }
.contact-card:nth-child(2) { background: var(--teal-tint); }
.contact-card:nth-child(3) { background: var(--blue-tint); }
.contact-card:nth-child(4) { background: var(--gold-tint); }
.contact-card:nth-child(5) { background: var(--paper-deep); }

.contact-card.wide { grid-column: span 2; }
@media (max-width: 560px) { .contact-card.wide { grid-column: span 1; } }

.contact-card-icon {
  width: 52px; height: 52px; border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.5rem; flex-shrink: 0;
}
.contact-card:nth-child(1) .contact-card-icon { background: var(--oxblood); }
.contact-card:nth-child(2) .contact-card-icon { background: var(--teal-deep); }
.contact-card:nth-child(3) .contact-card-icon { background: var(--indigo-deep); }
.contact-card:nth-child(4) .contact-card-icon { background: var(--turmeric-deep); }
.contact-card:nth-child(5) .contact-card-icon { background: var(--oxblood-deep); }

.contact-card-label {
  font-family: "IBM Plex Mono", monospace;
  font-size: 0.75rem; font-weight: 600;
  letter-spacing: 0.12em; text-transform: uppercase;
}
.contact-card:nth-child(1) .contact-card-label { color: var(--oxblood); }
.contact-card:nth-child(2) .contact-card-label { color: var(--teal-deep); }
.contact-card:nth-child(3) .contact-card-label { color: var(--indigo-deep); }
.contact-card:nth-child(4) .contact-card-label { color: var(--turmeric-deep); }
.contact-card:nth-child(5) .contact-card-label { color: var(--oxblood-deep); }

.contact-card-value { font-size: 0.96rem; color: var(--ink); line-height: 1.65; margin: 0; }
.contact-card-value a {
  text-decoration: none; font-weight: 600;
  border-bottom: 1.5px solid transparent;
  transition: border-color .15s;
}
.contact-card-value a:hover { border-bottom-color: currentColor; }
.contact-card:nth-child(1) .contact-card-value a { color: var(--oxblood); }
.contact-card:nth-child(2) .contact-card-value a { color: var(--teal-deep); }
.contact-card:nth-child(3) .contact-card-value a { color: var(--indigo-deep); }
.contact-card:nth-child(4) .contact-card-value a { color: var(--turmeric-deep); }
.contact-card:nth-child(5) .contact-card-value a { color: var(--oxblood-deep); }

/* -------- Google Map section -------- */
.map-section { padding: 84px 0; background: var(--paper-deep); }
.map-section .section-head { margin-bottom: 36px; }

.map-wrapper {
  border-radius: 20px; overflow: hidden;
  box-shadow: 0 18px 48px rgba(36,30,24,0.14);
  border: 3px solid var(--paper);
  outline: 1px solid var(--line);
  position: relative;
}
.map-wrapper iframe { width: 100%; height: 460px; border: none; display: block; }
@media (max-width: 640px) { .map-wrapper iframe { height: 300px; } }

.map-badge {
  position: absolute; top: 20px; left: 20px;
  background: var(--oxblood); color: #fff;
  padding: 10px 18px; border-radius: 999px;
  font-family: "IBM Plex Mono", monospace;
  font-size: 0.75rem; font-weight: 600;
  letter-spacing: 0.08em; text-transform: uppercase;
  box-shadow: 0 6px 16px rgba(166,52,42,0.38);
  display: flex; align-items: center; gap: 8px; z-index: 2;
}

.map-direction-btn {
  display: inline-flex; align-items: center; gap: 10px;
  margin-top: 24px;
  font-family: "IBM Plex Mono", monospace;
  font-size: 0.76rem; font-weight: 600;
  letter-spacing: 0.08em; text-transform: uppercase;
  padding: 13px 24px; text-decoration: none;
  border-radius: var(--radius);
  background: linear-gradient(120deg, var(--indigo-deep), var(--indigo));
  color: #fff;
  transition: transform .15s, box-shadow .15s;
  box-shadow: 0 6px 16px rgba(18,72,103,0.28);
}
.map-direction-btn:hover { transform: translateY(-2px); box-shadow: 0 10px 22px rgba(18,72,103,0.36); }

/* ======== programs page styles (moved from inline) ======== */
/* ---------- programs: photo shown in full + full-width write-up ---------- */
.program-row:nth-child(5n+1){ --accent:var(--oxblood); }
.program-row:nth-child(5n+2){ --accent:var(--teal-deep); }
.program-row:nth-child(5n+3){ --accent:var(--indigo-deep); }
.program-row:nth-child(5n+4){ --accent:var(--turmeric-deep); }
.program-row:nth-child(5n+5){ --accent:var(--oxblood-deep); }

.program-row{ flex-wrap:wrap; align-items:center; min-height:0; }

/* show the whole photo (all source images are 3:2) instead of cropping it */
.program-row .program-row-photo,
.program-row:nth-child(n) .program-row-photo{
  flex:0 0 46%; width:46%; height:auto; min-height:0;
  aspect-ratio:3 / 2; object-fit:contain; object-position:center;
  align-self:center;
}
.program-row-body{ flex:1 1 0; min-width:0; }
@media (max-width:760px){
  .program-row .program-row-photo,
  .program-row:nth-child(n) .program-row-photo{
    flex:none; width:100%; aspect-ratio:3 / 2; align-self:auto;
  }
}

.program-row .sub .tagline{
  font-family:"Fraunces",serif; font-style:italic; font-size:0.95rem;
  color:var(--ink); margin:0 0 8px;
}
.program-row .sub p + p{ margin-top:8px; }

.program-toggle{
  align-self:flex-start; margin-top:16px; cursor:pointer;
  display:inline-flex; align-items:center; gap:10px;
  padding:9px 18px; border-radius:999px; font-family:inherit;
  border:1.5px solid var(--accent); background:transparent; color:var(--accent);
  font-weight:600; font-size:0.86rem;
  transition:background .2s ease, color .2s ease;
}
.program-toggle::after{ content:"+"; font-size:1.1rem; line-height:1; }
.program-toggle[aria-expanded="true"]::after{ content:"\2013"; }
.program-toggle:hover{ background:var(--accent); color:#fff; }
.program-toggle .lbl-open{ display:none; }
.program-toggle[aria-expanded="true"] .lbl-open{ display:inline; }
.program-toggle[aria-expanded="true"] .lbl-closed{ display:none; }

/* full-width write-up, sits under the photo + summary */
.program-full{
  flex:0 0 auto; width:100%;
  padding:30px 36px 34px; border-top:1px solid rgba(36,30,24,0.14);
  background:rgba(255,255,255,0.35);
}
.program-full[hidden]{ display:none; }
@media (max-width:760px){ .program-full{ padding:24px 24px 28px; } }

.pf-columns{ column-count:2; column-gap:56px; }
@media (max-width:900px){ .pf-columns{ column-count:1; } }
.pf-block{ break-inside:avoid; margin:0 0 26px; }
.pf-block h5{
  font-family:"Fraunces",serif; font-weight:600; font-size:1.08rem;
  color:var(--ink); margin:0 0 4px; padding-bottom:6px;
  border-bottom:2px solid var(--accent); display:inline-block;
}
.pf-block p{ font-size:0.94rem; color:var(--ink-soft); margin:10px 0 0; }
.pf-block ul{ list-style:none; margin:10px 0 0; padding:0; }
.pf-block li{
  position:relative; padding-left:20px; margin:6px 0;
  font-size:0.94rem; color:var(--ink);
}
.pf-block li::before{
  content:""; position:absolute; left:2px; top:0.6em;
  width:7px; height:7px; border-radius:50%; background:var(--accent);
}

/* extra photos: natural proportions, never cropped */
.pf-photos{ display:flex; flex-wrap:wrap; gap:16px; align-items:flex-start; margin-top:12px; }
.pf-photos img{
  width:calc(50% - 8px); max-width:420px; height:auto; aspect-ratio:3 / 2;
  object-fit:contain; border-radius:10px; display:block;
}
@media (max-width:560px){ .pf-photos img{ width:100%; max-width:none; } }

.pf-focus{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:24px; padding-top:16px; border-top:1px solid var(--line); }
.pf-focus-label{ font-weight:600; font-size:0.82rem; color:var(--ink-soft); margin-right:4px; }
.pf-chip{
  font-size:0.8rem; padding:4px 12px; border-radius:999px;
  background:rgba(255,255,255,0.8); border:1px solid var(--accent); color:var(--ink);
}
@media (prefers-reduced-motion:reduce){ .program-toggle{ transition:none; } }

/* ======== SEO / performance / mobile-usability additions ======== */
html{ -webkit-text-size-adjust:100%; text-size-adjust:100%; }
img{ max-width:100%; height:auto; }   /* width/height attrs reserve space; this keeps them responsive */
.sr-only{
  position:absolute; width:1px; height:1px; margin:-1px; padding:0;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
/* comfortable tap targets (>= 44px) */
.nav-toggle{ min-height:44px; min-width:44px; }
.slider-pause{ min-height:36px; padding:9px 14px; }
.slider-arrow{ min-width:44px; min-height:44px; }
.gallery-filter-btn, .gallery-action-zoom, .gallery-zoom-badge,
.program-toggle, .btn-sm, .doc-modal-close, .lightbox-close, .lightbox-nav{ min-height:44px; }
.doc-modal-close{ min-width:44px; }
footer.bottom a{ display:inline-block; padding:12px 6px; }
@media (max-width:900px){
  nav.links.open a{ padding:14px 0; }
}
@media (max-width:700px){
  .slider-arrow{ width:44px; height:44px; }
}
