/*
Theme Name: Common Source Partners
Description: Custom theme for Common Source Partners, an infrastructure and community alignment advisory firm.
Author: Common Source Partners
Version: 1.0
*/

:root{
  --navy:#1F3D61;
  --navy-deep:#142943;
  --slate-blue:#9BAEC9;
  --slate-blue-soft:#C9D3E1;
  --gray:#797C84;
  --cream:#F4F2EC;
  --paper:#FBFAF7;
  --ink:#2B3440;
  --ink-soft:#5B6672;
  --line:#DAD5C9;
}
*{ box-sizing:border-box; margin:0; padding:0; }
html{ scroll-behavior:smooth; }
body{
  background:var(--cream);
  color:var(--ink);
  font-family:'Jost', sans-serif;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  line-height:1.65;
}
a{ color:inherit; }
img{ max-width:100%; display:block; }

/* ---------- NAV ---------- */
.site-header{
  background:var(--cream);
  border-bottom:1px solid var(--line);
  position:sticky;
  top:0;
  z-index:50;
}
.nav-inner{
  max-width:1100px;
  margin:0 auto;
  padding:1.1rem 1.5rem;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1.5rem;
  flex-wrap:wrap;
}
.nav-inner .logo-link img{ height:38px; width:auto; }
nav.site-nav{
  display:flex;
  gap:1.8rem;
  flex-wrap:wrap;
}
nav.site-nav a{
  font-family:'Jost', sans-serif;
  font-size:.82rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  text-decoration:none;
  color:var(--ink-soft);
  padding-bottom:.3rem;
  border-bottom:2px solid transparent;
  transition:color .15s ease, border-color .15s ease;
}
nav.site-nav a:hover{ color:var(--navy); }
nav.site-nav a.active{
  color:var(--navy);
  border-bottom-color:var(--slate-blue);
}

/* ---------- PAGE HERO BAND (interior pages) ---------- */
.page-hero{
  background:var(--navy);
  color:#fff;
  padding:3.4rem 1.5rem 3rem;
  text-align:center;
}
.page-hero .eyebrow{
  font-size:1.7rem;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--slate-blue);
  margin-bottom:1.1rem;
  font-weight:500;
}
.page-hero h1{
  font-family:'Jost', sans-serif;
  font-weight:300;
  letter-spacing:.02em;
  font-size:clamp(2rem,5vw,2.7rem);
}
.page-hero h1.jumbo{
  font-size:clamp(4rem,11vw,6.5rem);
  letter-spacing:.03em;
}
.page-hero p.lede{
  max-width:660px;
  margin:1.2rem auto 0;
  color:var(--slate-blue-soft);
  font-size:1.25rem;
}

/* ---------- HOME HERO ---------- */
.home-hero{
  position:relative;
  width:100%;
  min-height:64vh;
  overflow:hidden;
  display:flex;
  align-items:flex-end;
}
.home-hero img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:50% 30%;
  filter:grayscale(35%);
}
.home-hero::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg, rgba(19,41,63,.15) 0%, rgba(19,41,63,.55) 55%, rgba(19,41,63,.92) 100%);
}
.home-hero-content{
  position:relative;
  z-index:2;
  color:#fff;
  max-width:1100px;
  margin:0 auto;
  padding:3.5rem 1.5rem 3rem;
  width:100%;
}
.home-hero-content .eyebrow{
  font-size:.7rem;
  letter-spacing:.32em;
  text-transform:uppercase;
  color:var(--slate-blue-soft);
  margin-bottom:1rem;
}
.home-hero-content h1{
  font-family:'Jost', sans-serif;
  font-weight:300;
  font-size:clamp(2.2rem,6vw,3.4rem);
  max-width:680px;
  line-height:1.15;
  margin-bottom:1.2rem;
}
.home-hero-content p{
  max-width:520px;
  color:rgba(255,255,255,.88);
  font-size:1.05rem;
  margin-bottom:1.8rem;
}
.btn{
  display:inline-block;
  font-family:'Jost', sans-serif;
  font-size:.82rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  text-decoration:none;
  padding:.85rem 1.7rem;
  border:1px solid #fff;
  color:#fff;
  transition:background .15s ease, color .15s ease;
}
.btn:hover{ background:#fff; color:var(--navy); }
.btn-navy{
  border-color:var(--navy);
  color:var(--navy);
}
.btn-navy:hover{ background:var(--navy); color:#fff; }

/* ---------- MAIN / SECTIONS ---------- */
main{ max-width:1100px; margin:0 auto; padding:0 1.5rem; }
.narrow{ max-width:760px; margin:0 auto; }

.section{ padding:4.5rem 0; }
.section + .section{ border-top:1px solid var(--line); }

.section-label{
  font-family:'Jost', sans-serif;
  font-weight:500;
  letter-spacing:.22em;
  text-transform:uppercase;
  font-size:.82rem;
  color:var(--navy);
  padding-bottom:.85rem;
  border-bottom:1px solid var(--line);
  margin-bottom:1.9rem;
}

main p{ font-size:1.06rem; margin-bottom:1.4rem; }
main p:last-child{ margin-bottom:0; }

.two-col{
  display:grid;
  grid-template-columns:1.1fr .9fr;
  gap:3rem;
  align-items:center;
}
.two-col.reverse{ grid-template-columns:.9fr 1.1fr; }
.two-col.reverse .media{ order:2; }
.two-col .media img{ border:1px solid var(--line); }

.pull-quote{
  background:var(--navy);
  color:#fff;
  padding:2.1rem 2rem 2.1rem 2.4rem;
  margin:2rem 0;
  border-left:3px solid var(--slate-blue);
}
.pull-quote.center{
  text-align:center;
  padding:2.1rem 2.4rem;
}
.pull-quote p{
  font-family:'Jost', sans-serif;
  font-weight:300;
  font-size:clamp(1.1rem,2.4vw,1.4rem);
  line-height:1.5;
  color:#fff;
  margin:0;
}

.divider-note{
  display:flex;
  align-items:center;
  gap:.9rem;
  margin:3rem 0 2.2rem;
  color:var(--ink-soft);
  font-size:.78rem;
  letter-spacing:.18em;
  text-transform:uppercase;
}
.divider-note::before, .divider-note::after{
  content:"";
  height:1px;
  background:var(--line);
  flex:1;
}

/* practice / service cards */
.card-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1.6rem;
}
.card{
  background:var(--paper);
  border:1px solid var(--line);
  padding:1.6rem 1.7rem 1.8rem;
}
.card h3{
  font-family:'Jost', sans-serif;
  font-weight:500;
  color:var(--navy);
  font-size:1.05rem;
  margin-bottom:.6rem;
}
.card p{ font-size:.95rem; color:var(--ink-soft); margin-bottom:0; }
.card a.card-link{
  display:inline-block;
  margin-top:.9rem;
  font-family:'Jost', sans-serif;
  font-size:.78rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--navy);
  text-decoration:none;
  border-bottom:1px solid var(--slate-blue);
}

/* services page detail blocks */
.service-block{ padding:3rem 0; text-align:center; }
.service-block + .service-block{ border-top:1px solid var(--line); }
.service-block h2{
  font-family:'Jost', sans-serif;
  font-weight:400;
  color:var(--navy);
  font-size:1.5rem;
  margin-bottom:.7rem;
}
.service-block .dek{ color:var(--ink-soft); font-size:1.02rem; margin:0 auto 1.4rem; max-width:620px; }
.service-block ul{
  list-style:none;
  margin:0 auto 1.6rem;
  padding:0;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:.55rem 2rem;
  max-width:680px;
  text-align:left;
}
.service-block li{
  font-size:.96rem;
  color:var(--ink);
  padding-left:1.1rem;
  position:relative;
}
.service-block li::before{
  content:"";
  position:absolute;
  left:0;
  top:.55em;
  width:6px;
  height:6px;
  background:var(--slate-blue);
}
.impact-box{
  background:var(--paper);
  border-left:3px solid var(--navy);
  padding:1.1rem 1.4rem;
  max-width:680px;
  margin:0 auto;
  font-size:.95rem;
  color:var(--ink-soft);
  text-align:center;
}
.impact-box strong{ color:var(--navy); font-family:'Jost', sans-serif; font-weight:500; letter-spacing:.03em; }

/* name meaning columns */
.name-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:2rem;
  margin-top:2rem;
}
.name-grid .word{
  font-family:'Jost', sans-serif;
  font-weight:500;
  color:var(--navy);
  font-size:1.15rem;
  letter-spacing:.04em;
  margin-bottom:.6rem;
}
.name-grid p{ font-size:.95rem; color:var(--ink-soft); }

/* founder section */
.founder-wrap{
  display:grid;
  grid-template-columns:280px 1fr;
  gap:2.6rem;
  align-items:start;
}
.founder-wrap img.founder-photo{ border:1px solid var(--line); }
.founder-name{
  font-family:'Jost', sans-serif;
  font-weight:300;
  font-size:1.6rem;
  color:var(--navy);
  margin-bottom:.2rem;
}
.founder-role{
  font-size:.85rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--gray);
  margin-bottom:1.3rem;
}

/* ---------- FOOTER ---------- */
footer.site-footer{
  background:var(--navy-deep);
  color:#fff;
  text-align:center;
  padding:3.4rem 1.5rem 2.6rem;
  margin-top:3rem;
}
footer.site-footer img{ height:38px; width:auto; margin:0 auto .9rem; }
footer.site-footer nav{
  display:flex;
  justify-content:center;
  gap:1.6rem;
  flex-wrap:wrap;
  margin:1.4rem 0 1.6rem;
}
footer.site-footer nav a{
  font-family:'Jost', sans-serif;
  font-size:.76rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  text-decoration:none;
  color:rgba(255,255,255,.75);
}
footer.site-footer nav a:hover{ color:#fff; }
footer.site-footer .tagline{
  font-size:.72rem;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--slate-blue);
}
footer.site-footer .contact{
  margin-top:1.6rem;
  font-size:.9rem;
  color:rgba(255,255,255,.85);
}
footer.site-footer .contact a{
  color:#fff;
  text-decoration:none;
  border-bottom:1px solid rgba(255,255,255,.4);
}
footer.site-footer .fine{
  margin-top:2rem;
  font-size:.72rem;
  color:rgba(255,255,255,.4);
}

@media (max-width:820px){
  .two-col, .two-col.reverse{ grid-template-columns:1fr; }
  .two-col.reverse .media{ order:0; }
  .card-grid{ grid-template-columns:1fr; }
  .service-block ul{ grid-template-columns:1fr; }
  .name-grid{ grid-template-columns:1fr; }
  .founder-wrap{ grid-template-columns:1fr; }
}
