/* ============================================================
   blog.css — shared styles for jasperliu.com blog
   Matches the main site tokens. Used by index.html (blog),
   _TEMPLATE.html, and every post.
   ============================================================ */
:root{
  --paper:#F2EEE6;
  --paper-2:#E8E2D6;
  --ink:#1C231F;
  --green:#22372C;
  --green-2:#2F4A3B;
  --brass:#B08542;
  --brass-soft:#C9A765;
  --line:#C9C1B2;
  --muted:#5C6359;
  --white:#FBFAF6;
  --radius:14px;
  --maxw:1080px;
  --readw:680px; /* narrower measure for article body */
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:"Inter",system-ui,sans-serif;font-size:17px;line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{font-family:"Fraunces",Georgia,serif;font-weight:500;line-height:1.12;letter-spacing:-0.01em;margin:0;}
a{color:inherit;}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 22px;}
.eyebrow{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--brass);font-weight:600;}
:focus-visible{outline:3px solid var(--brass);outline-offset:2px;border-radius:4px;}

/* nav */
header.nav{position:sticky;top:0;z-index:50;background:rgba(242,238,230,.86);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);}
.nav-in{display:flex;align-items:center;justify-content:space-between;height:64px;}
.brand{font-family:"Fraunces",serif;font-size:20px;font-weight:600;letter-spacing:-.01em;text-decoration:none;}
.brand span{color:var(--brass);}
.nav-links{display:flex;gap:26px;align-items:center;}
.nav-links a{text-decoration:none;font-size:15px;font-weight:500;color:var(--muted);}
.nav-links a:hover{color:var(--ink);}
.btn{display:inline-flex;align-items:center;gap:.5em;font-weight:600;font-size:15px;text-decoration:none;padding:13px 20px;border-radius:999px;border:1px solid transparent;transition:transform .15s,background .15s,color .15s;cursor:pointer;}
.btn-primary{background:var(--green);color:var(--white);}
.btn-primary:hover{transform:translateY(-1px);background:var(--green-2);}
.btn-ghost{background:transparent;color:var(--green);border-color:var(--green);}
.btn-ghost:hover{background:var(--green);color:var(--white);}
@media(max-width:760px){.nav-links a:not(.btn){display:none;}}

/* ---- blog index ---- */
.blog-head{padding:60px 0 30px;}
.blog-head h1{font-size:clamp(36px,6vw,58px);margin:14px 0 0;}
.blog-head h1 em{font-style:italic;color:var(--green);}
.blog-head p{color:var(--muted);font-size:19px;max-width:48ch;margin:18px 0 0;}

.posts{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:24px 0 80px;}
@media(max-width:760px){.posts{grid-template-columns:1fr;}}
.post-card{
  display:flex;flex-direction:column;background:var(--white);
  border:1px solid var(--line);border-radius:var(--radius);
  padding:26px;text-decoration:none;color:inherit;
  transition:transform .15s ease, box-shadow .15s ease;
}
.post-card:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(28,35,31,.08);}
.post-card .cat{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--brass);font-weight:600;}
.post-card h2{font-size:24px;margin:10px 0 10px;}
.post-card p{font-size:15px;color:var(--muted);margin:0 0 18px;flex:1;}
.post-card .meta{font-size:13px;color:var(--muted);display:flex;gap:10px;align-items:center;}
.post-card .meta .dot{width:3px;height:3px;border-radius:50%;background:var(--line);}
.post-card .more{margin-top:14px;font-size:14px;font-weight:600;color:var(--green);}

/* featured (first card spans full width) */
.posts .post-card.featured{grid-column:1 / -1;flex-direction:row;gap:28px;align-items:center;}
.posts .post-card.featured .body{flex:1;}
.posts .post-card.featured h2{font-size:30px;}
@media(max-width:760px){.posts .post-card.featured{flex-direction:column;align-items:flex-start;}}

/* ---- article (post) ---- */
.article-head{padding:54px 0 26px;border-bottom:1px solid var(--line);}
.article-head .wrap{max-width:var(--readw);}
.article-head .cat{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--brass);font-weight:600;}
.article-head h1{font-size:clamp(30px,5vw,46px);margin:14px 0 16px;}
.article-head .meta{font-size:14px;color:var(--muted);display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.article-head .dot{width:3px;height:3px;border-radius:50%;background:var(--line);}

article.post{max-width:var(--readw);margin:0 auto;padding:36px 22px 60px;}
article.post p{margin:0 0 20px;}
article.post h2{font-size:27px;margin:38px 0 14px;}
article.post h3{font-size:21px;margin:30px 0 10px;}
article.post ul,article.post ol{margin:0 0 20px;padding-left:22px;}
article.post li{margin:0 0 8px;}
article.post strong{color:var(--ink);}
article.post a{color:var(--green);text-decoration:underline;text-underline-offset:2px;}
article.post blockquote{
  margin:26px 0;padding:18px 22px;background:var(--paper-2);
  border-left:3px solid var(--brass);border-radius:0 8px 8px 0;
  font-family:"Fraunces",serif;font-size:19px;line-height:1.45;color:var(--green);
}
article.post .callout{
  background:var(--white);border:1px solid var(--line);border-radius:var(--radius);
  padding:22px 24px;margin:28px 0;
}
article.post .callout p:last-child{margin-bottom:0;}
article.post hr{border:none;border-top:1px solid var(--line);margin:40px 0;}

/* article CTA + back link */
.post-cta{background:var(--green);color:var(--white);border-radius:var(--radius);padding:30px;margin:46px 0 10px;text-align:center;}
.post-cta h3{color:var(--white);font-size:24px;margin-bottom:8px;}
.post-cta p{color:#C7D3CA;margin:0 0 18px;}
.post-cta .btn-primary{background:var(--brass);color:#231a08;}
.post-cta .btn-primary:hover{background:var(--brass-soft);}
.back{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:600;color:var(--green);text-decoration:none;margin-top:30px;}

/* footer (shared) */
footer{background:var(--ink);color:#C9CFC9;font-size:13px;margin-top:40px;}
footer .wrap{padding:40px 22px 48px;}
.foot-top{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;align-items:center;border-bottom:1px solid #313a33;padding-bottom:24px;margin-bottom:22px;}
.foot-brand{font-family:"Fraunces",serif;font-size:22px;color:var(--white);}
.eho{display:flex;align-items:center;gap:12px;}
.eho small{color:#9AA39B;}
.compliance{color:#8E978F;line-height:1.7;max-width:80ch;}
.compliance a{color:#B9C6BC;}
.legal{margin-top:18px;color:#6E776F;font-size:12px;}