:root{
  --ink:#231F20;
  --forest:#33603C;
  --forest-deep:#24452B;
  --paper:#F7F5F0;
  --paper-line:#E4E0D6;
  --white:#FFFFFF;
  --max:1180px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'Inter',sans-serif;
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{font-family:'Fraunces',serif; font-weight:500; margin:0; color:var(--ink);}
a{color:inherit;}
img{max-width:100%; display:block;}
.wrap{max-width:var(--max); margin:0 auto; padding:0 40px;}
@media (max-width:640px){ .wrap{padding:0 22px;} }

.eyebrow{
  font-family:'IBM Plex Mono',monospace;
  font-size:0.72rem; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--forest); display:flex; align-items:center; gap:0.6em;
}
.eyebrow::before{content:''; width:1.4em; height:1px; background:var(--forest); display:inline-block;}
.on-dark .eyebrow{color:#9FB8A6;}
.on-dark .eyebrow::before{background:#9FB8A6;}

.arch-divider{width:100%; height:40px; overflow:hidden;}
.arch-divider svg{width:100%; height:100%; display:block;}

/* NAV */
header{position:sticky; top:0; z-index:50; background:rgba(247,245,240,0.94); backdrop-filter:blur(6px); border-bottom:1px solid var(--paper-line);}
nav.wrap{display:flex; align-items:center; justify-content:space-between; height:76px;}
.brand{display:flex; align-items:center; gap:12px; font-family:'Inter',sans-serif; text-decoration:none;}
.brand img{height:34px; width:auto; display:block; flex-shrink:0;}
.brand-text{display:flex; flex-direction:column; line-height:1.25;}
.brand-text .l1{font-size:0.98rem; font-weight:700; letter-spacing:0.005em; color:var(--ink); white-space:nowrap;}
.brand-text .l2{font-size:0.98rem; font-weight:700; letter-spacing:0.005em; color:var(--forest); white-space:nowrap;}
.navlinks{display:flex; gap:30px; font-size:0.87rem;}
.navlinks a{text-decoration:none; opacity:0.75; transition:opacity .2s;}
.navlinks a:hover, .navlinks a.active{opacity:1;}
.navlinks a.active{border-bottom:1px solid var(--forest);}
.portal-btn{font-size:0.8rem; padding:10px 20px; background:var(--forest); color:var(--white); text-decoration:none; font-family:'IBM Plex Mono',monospace; transition:background .2s; flex-shrink:0;}
.portal-btn:hover{background:var(--forest-deep);}
.navtoggle{display:none; background:none; border:none; cursor:pointer; padding:6px; flex-shrink:0;}
.navtoggle svg{display:block;}
@media (max-width:900px){
  .navlinks{display:none;}
  .navtoggle{display:block;}
}
@media (max-width:420px){
  .portal-btn{display:none;}
  .brand-text .l1, .brand-text .l2{font-size:0.86rem;}
}
.mobile-menu{display:none; flex-direction:column; background:var(--paper); border-bottom:1px solid var(--paper-line);}
.mobile-menu.open{display:flex;}
.mobile-menu a{padding:16px 22px; text-decoration:none; border-top:1px solid var(--paper-line); font-size:0.95rem;}

/* PAGE HERO (non-home) */
.page-hero{background:var(--forest-deep); color:var(--paper); padding:64px 0 48px;}
.page-hero h1{font-size:clamp(2rem,4vw,2.8rem); color:var(--paper);}
@media (max-width:480px){ .page-hero h1{font-size:1.5rem;} }
@media (max-width:360px){ .page-hero h1{font-size:1.3rem;} }
.page-hero p{margin-top:14px; max-width:560px; color:#C7CFC5; font-size:1rem;}

/* HOME HERO */
.hero{
  position:relative; height:86vh; min-height:640px; display:flex; align-items:flex-end; overflow:hidden;
  background:linear-gradient(135deg, #E9EDE7 0%, var(--forest) 55%, var(--forest-deep) 100%);
  background-image:url('hero-bg.jpg');
  background-size:cover; background-position:center;
  color:var(--white); overflow:hidden;
}
@media (max-width:760px){
  .hero{ background-image:linear-gradient(160deg, #E9EDE7 0%, var(--forest) 45%, var(--forest-deep) 100%); min-height:560px; }
}
.hero::after{content:''; position:absolute; inset:0; background:linear-gradient(0deg, rgba(35,31,32,0.55) 0%, rgba(35,31,32,0.05) 45%); pointer-events:none; z-index:1;}
.hero-inner{position:relative; z-index:2; padding:80px 0 64px;}
.hero .eyebrow{color:#D9E4DB; margin-bottom:22px;}
.hero .eyebrow::before{background:#D9E4DB;}
.hero h1{font-size:clamp(2.6rem,6vw,4.6rem); line-height:1.04; letter-spacing:-0.01em;}
.hero h1 .rotator{color:#D9E4DB; font-style:italic; font-weight:400; display:inline-block; width:min(680px, 78vw); min-height:1.15em; line-height:1.05; vertical-align:top; text-align:left; transition:opacity .25s ease;}
@media (max-width:560px){ .hero h1 .rotator{ min-height:2.2em; } }
.hero p.lede{max-width:520px; margin-top:26px; font-size:1.08rem; color:#EDEEE9;}
.hero-cta{display:flex; gap:16px; margin-top:38px; flex-wrap:wrap;}
.btn-primary{background:var(--white); color:var(--ink); padding:15px 28px; text-decoration:none; font-size:0.88rem; font-family:'IBM Plex Mono',monospace; transition:background .2s,color .2s; display:inline-block;}
.btn-primary:hover{background:var(--paper);}
.btn-primary.dark{background:var(--forest); color:var(--white);}
.btn-primary.dark:hover{background:var(--forest-deep);}
.btn-ghost-light{padding:15px 4px; text-decoration:none; border-bottom:1px solid rgba(255,255,255,0.5); font-size:0.88rem; color:var(--white);}

section{padding:100px 0;}
@media (max-width:640px){ section{padding:64px 0;} }
.on-dark{background:var(--ink); color:var(--paper);}
.on-dark h2, .on-dark h3{color:var(--paper);}
.on-forest{background:var(--forest-deep); color:var(--paper);}
.on-forest h2, .on-forest h3{color:var(--paper);}

.section-head{display:flex; justify-content:space-between; align-items:flex-start; gap:32px; margin-bottom:56px; flex-wrap:wrap;}
.section-head h2{font-size:clamp(1.8rem,3.2vw,2.5rem); max-width:9.5em;}
.section-head p{max-width:420px; font-family:'Fraunces',serif; font-style:italic; font-weight:400; font-size:1.2rem; line-height:1.4; color:#4a4a42;}
.section-head p a{font-family:'Inter',sans-serif; font-style:normal; font-size:0.85rem; vertical-align:middle;}
.on-dark .section-head p, .on-forest .section-head p{color:#C7CFC5;}

.statement{max-width:900px;}
.statement p{font-family:'Fraunces',serif; font-size:clamp(1.4rem,2.6vw,2rem); font-weight:400; line-height:1.4; color:var(--ink);}
.statement p strong{color:var(--forest); font-weight:500;}
.statement .sub{font-family:'Inter',sans-serif; font-size:1rem; color:#5A5651; margin-top:24px; max-width:560px; line-height:1.7;}

.services-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--paper-line); border:1px solid var(--paper-line);}
.service-card{background:var(--white); padding:38px 32px;}
.service-card .eyebrow{margin-bottom:16px;}
.service-card h3{font-size:1.18rem; margin-bottom:12px;}
.service-card p{font-size:0.9rem; color:#5A5651; margin:0;}
@media (max-width:860px){ .services-grid{grid-template-columns:1fr 1fr;} }
@media (max-width:580px){ .services-grid{grid-template-columns:1fr;} }

.npo{display:grid; grid-template-columns:1fr 1fr; gap:70px; align-items:center;}
.npo-visual{border:1px solid #3F6D4A; background:#2B4F33; padding:34px;}
.npo-visual .row{display:flex; justify-content:space-between; padding:15px 0; border-bottom:1px dashed #4A7454; font-family:'IBM Plex Mono',monospace; font-size:0.85rem;}
.npo-visual .row:last-child{border-bottom:none;}
.npo-visual .row span:first-child{color:#DCE6DA;}
.npo-visual .row span:last-child{color:#B9D4BE;}
@media (max-width:860px){ .npo{grid-template-columns:1fr;} }

.about-grid{display:grid; grid-template-columns:0.9fr 1.1fr; gap:70px;}
.about-grid p{margin:0 0 18px; color:#C7CFC5;}
.about-grid .quote{font-family:'Fraunces',serif; font-style:italic; font-size:1.3rem; line-height:1.5; color:var(--paper); border-left:2px solid #6E9878; padding-left:24px; margin-top:32px;}
@media (max-width:860px){ .about-grid{grid-template-columns:1fr;} }

.team-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:44px 34px;}
.team-card{border-top:1px solid var(--paper-line); padding-top:22px;}
.team-photo{width:100%; aspect-ratio:4/3; background:var(--paper-line); margin-bottom:18px; display:flex; align-items:center; justify-content:center; overflow:hidden;}
.team-photo img{width:100%; height:100%; object-fit:cover;}
.team-photo .ph-label{font-family:'IBM Plex Mono',monospace; font-size:0.7rem; color:#9a9384; text-transform:uppercase; letter-spacing:0.08em;}
.team-card h3{font-size:1.05rem; margin-bottom:4px;}
.team-card .role{font-family:'IBM Plex Mono',monospace; font-size:0.7rem; color:var(--forest); letter-spacing:0.06em; text-transform:uppercase; display:block; margin-bottom:12px;}
.team-card p{font-size:0.88rem; color:#5A5651; margin:0;}
@media (max-width:580px){ .team-grid{grid-template-columns:1fr;} }

/* CLIENT SERVICES page */
.svc-block{border-top:1px solid var(--paper-line); padding:56px 0;}
.svc-block:first-of-type{border-top:none;}
.svc-block-inner{display:grid; grid-template-columns:0.8fr 1.2fr; gap:60px;}
.svc-block h2{font-size:clamp(1.5rem,2.8vw,2rem); margin-bottom:8px;}
.svc-block .eyebrow{margin-bottom:16px;}
.svc-block p.lead{color:#5A5651; font-size:0.98rem; max-width:420px;}
.svc-list{list-style:none; margin:0; padding:0; display:grid; gap:14px;}
.svc-list li{padding-left:26px; position:relative; font-size:0.96rem; color:#3a3a34;}
.svc-list li::before{content:''; position:absolute; left:0; top:9px; width:8px; height:1px; background:var(--forest);}
.svc-list li strong{display:block; font-family:'Fraunces',serif; font-weight:500; font-size:1.02rem; color:var(--ink); margin-bottom:2px;}
@media (max-width:820px){ .svc-block-inner{grid-template-columns:1fr;} }

/* FOOTER */
footer{padding:90px 0 40px;}
.contact-grid{display:grid; grid-template-columns:1.2fr 0.8fr; gap:70px;}
.contact-grid h2{font-size:clamp(2rem,4.2vw,2.8rem); max-width:8em; margin-bottom:22px;}
.contact-details{font-family:'IBM Plex Mono',monospace; font-size:0.88rem; line-height:2.1;}
.contact-details a{text-decoration:none; border-bottom:1px solid #6E9878;}
.foot-bottom{margin-top:70px; padding-top:24px; border-top:1px solid #3a4a3f; display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; font-size:0.78rem; color:#8FA192;}
.foot-legal{display:flex; gap:18px; flex-wrap:wrap;}
.foot-legal a{color:#8FA192; text-decoration:none;}
.foot-legal a:hover{color:var(--paper);}

.draft-banner{background:#F4E6C9; border:1px solid #D9BE85; color:#4A3B18; padding:16px 20px; font-size:0.88rem; line-height:1.5; margin-bottom:0;}
.draft-banner strong{display:block; font-family:'IBM Plex Mono',monospace; font-size:0.72rem; letter-spacing:0.06em; text-transform:uppercase; margin-bottom:6px;}

.legal-body{max-width:760px;}
.legal-body h2{font-size:1.4rem; margin-top:44px; margin-bottom:14px;}
.legal-body h2:first-child{margin-top:0;}
.legal-body p{color:#3a3a34; font-size:0.96rem; line-height:1.75; margin:0 0 14px;}
.legal-body ul{color:#3a3a34; font-size:0.96rem; line-height:1.75; padding-left:22px; margin:0 0 14px;}
.legal-updated{font-family:'IBM Plex Mono',monospace; font-size:0.78rem; color:var(--forest); margin-bottom:32px;}
@media (max-width:760px){ .contact-grid{grid-template-columns:1fr;} }

/* CONTACT page extras */
.contact-page-grid{display:grid; grid-template-columns:1fr 1fr; gap:60px;}
.contact-card{border:1px solid var(--paper-line); background:var(--white); padding:40px;}
.contact-card h3{font-size:1.2rem; margin-bottom:20px;}
.contact-card .contact-details a{color:var(--forest);}
@media (max-width:820px){ .contact-page-grid{grid-template-columns:1fr;} }

.reveal{opacity:0; transform:translateY(16px); transition:opacity .6s ease, transform .6s ease;}
.reveal.in{opacity:1; transform:none;}
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto;} .reveal{opacity:1; transform:none; transition:none;} }
:focus-visible{outline:2px solid var(--forest); outline-offset:2px;}
