:root{
  --paper:#FBFAF6; --paper-2:#F1EEE3; --card:#FFFFFF;
  --ink:#211E17; --ink-soft:#5B5748;
  --green:#2F6E44; --green-dark:#20512F; --green-tint:#E7EFE5;
  --clay:#8A7458; --gold:#B08D4F;
  --line:#E1DCC9; --line-dark:#4C4A3B;
}
*{box-sizing:border-box; margin:0; padding:0;}
body{background:var(--paper); color:var(--ink); font-family:'Karla', sans-serif; font-size:16px; line-height:1.7; -webkit-font-smoothing:antialiased;}
h1,h2,h3,h4{font-family:'Lora', serif; font-weight:600; line-height:1.15; color:var(--ink);}
.mono{font-family:'IBM Plex Mono', monospace; letter-spacing:0.05em;}
a{color:inherit; text-decoration:none;}
img{display:block; max-width:100%;}
.wrap{max-width:820px; margin:0 auto; padding:0 32px;}
.wrap-wide{max-width:1200px; margin:0 auto; padding:0 32px;}
@media (max-width:640px){ .wrap, .wrap-wide{padding:0 20px;} }

/* nav */
header.site-nav{position:sticky; top:0; z-index:50; background:rgba(251,250,246,0.95); backdrop-filter:blur(6px); border-bottom:1px solid var(--line);}
.nav-inner{display:flex; align-items:center; justify-content:space-between; padding:16px 32px; max-width:1200px; margin:0 auto;}
.brand-mark{font-family:'Lora', serif; font-weight:700; font-size:1.28rem;}
nav.links{display:flex; gap:30px; font-size:0.87rem; font-weight:500;}
nav.links a:hover{color:var(--green-dark);}
.nav-cta{display:inline-flex; align-items:center; gap:8px; background:var(--green); color:#fff; padding:10px 18px; border-radius:3px; font-size:0.82rem; font-weight:600;}
.nav-cta:hover{background:var(--green-dark);}
@media (max-width:860px){ nav.links{display:none;} }

/* footer */
footer{background:#161810; color:#A9A491; padding:48px 0 24px; margin-top:80px;}
.footer-inner{display:flex; justify-content:space-between; flex-wrap:wrap; gap:16px; align-items:center;}
.footer-brand{color:#fff; font-family:'Lora', serif; font-size:1.1rem;}
.footer-inner a{font-size:0.85rem;}
.footer-inner a:hover{color:#fff;}

/* buttons */
.btn{display:inline-flex; align-items:center; gap:10px; padding:14px 24px; font-size:0.9rem; font-weight:600; border-radius:4px; border:1px solid transparent; cursor:pointer;}
.btn-primary{background:var(--green); color:#fff;}
.btn-primary:hover{background:var(--green-dark);}
.btn-ghost{border-color:var(--ink); color:var(--ink);}
.btn-ghost:hover{border-color:var(--green-dark); color:var(--green-dark);}

/* hub page */
.hub-hero{padding:80px 0 50px; text-align:center;}
.hub-hero .section-eyebrow{font-family:'IBM Plex Mono', monospace; font-size:0.75rem; letter-spacing:0.16em; text-transform:uppercase; color:var(--green); margin-bottom:16px;}
.hub-hero h1{font-size:clamp(2.2rem,5vw,3.2rem); max-width:18ch; margin:0 auto 18px;}
.hub-hero p{color:var(--ink-soft); max-width:56ch; margin:0 auto; font-size:1.05rem;}

.post-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:28px; padding:0 0 90px;}
@media (max-width:760px){ .post-grid{grid-template-columns:1fr;} }
.post-card{background:var(--card); border:1px solid var(--line); border-radius:8px; padding:30px 28px; display:flex; flex-direction:column;}
.post-card .cat{font-family:'IBM Plex Mono', monospace; font-size:0.68rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--clay); margin-bottom:14px;}
.post-card h3{font-size:1.25rem; margin-bottom:12px;}
.post-card p{color:var(--ink-soft); font-size:0.92rem; margin-bottom:20px; flex-grow:1;}
.post-card .read-link{font-size:0.85rem; font-weight:600; color:var(--green-dark); border-bottom:1px solid var(--green-dark); padding-bottom:2px; align-self:flex-start;}

/* article page */
.article-hero{background:var(--paper-2); padding:70px 0 50px; border-bottom:1px solid var(--line);}
.article-hero .cat{font-family:'IBM Plex Mono', monospace; font-size:0.72rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--green-dark); margin-bottom:16px;}
.article-hero h1{font-size:clamp(1.9rem,4.4vw,2.8rem); max-width:20ch;}
.article-meta{margin-top:18px; font-family:'IBM Plex Mono', monospace; font-size:0.78rem; color:var(--ink-soft);}
article{padding:56px 0 20px;}
article p{margin-bottom:20px; font-size:1.02rem; color:var(--ink);}
article h2{font-size:1.5rem; margin:40px 0 16px;}
article h3{font-size:1.15rem; margin:28px 0 12px;}
article ul, article ol{margin:0 0 20px 22px;}
article li{margin-bottom:8px;}
article strong{color:var(--ink);}
.lede{font-size:1.15rem; color:var(--ink-soft); border-left:3px solid var(--green); padding-left:18px; margin-bottom:34px;}

.faq{background:var(--paper-2); border-radius:8px; padding:32px 30px; margin:44px 0;}
.faq h2{margin-top:0; margin-bottom:20px;}
.faq-item{border-top:1px solid var(--line); padding:18px 0;}
.faq-item:first-of-type{border-top:none; padding-top:0;}
.faq-item h4{font-size:1rem; margin-bottom:8px; font-family:'Karla', sans-serif; font-weight:700;}
.faq-item p{font-size:0.92rem; color:var(--ink-soft); margin-bottom:0;}

.author-box{display:flex; gap:18px; align-items:flex-start; border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:26px 0; margin:44px 0;}
.author-box img{width:64px; height:82px; border-radius:4px; object-fit:cover; flex-shrink:0;}
.author-box .name{font-family:'Lora', serif; font-weight:600; font-size:1.05rem;}
.author-box .role{font-family:'IBM Plex Mono', monospace; font-size:0.72rem; color:var(--green-dark); text-transform:uppercase; letter-spacing:0.05em; margin-top:2px;}
.author-contact-btns{ display:flex; gap:10px; flex-wrap:wrap; margin-top:14px; }
.author-contact-btn{
  display:inline-flex; align-items:center; gap:8px;
  background:var(--paper-2); border:1px solid var(--line); border-radius:20px;
  padding:8px 14px;
  font-family:'IBM Plex Mono', monospace; font-size:0.8rem; color:var(--ink);
}
.author-contact-btn svg{ flex-shrink:0; color:var(--green-dark); }
.author-contact-btn:hover{ background:var(--green); border-color:var(--green); color:#fff; }
.author-contact-btn:hover svg{ color:#fff; }
.author-tagline{ font-family:'Lora', serif; font-style:italic; font-weight:600; font-size:1rem; color:var(--ink); margin-top:14px; }

.article-cta{background:var(--green-dark); color:#fff; border-radius:8px; padding:36px 32px; text-align:center; margin:50px 0 10px;}
.article-cta h3{color:#fff; margin-bottom:12px; font-size:1.3rem;}
.article-cta p{color:#D7E5D2; margin-bottom:22px;}
