:root{
  --bg:#E7E9E3; --surface:#FAFAF7; --surface-2:#FFFFFF;
  --text:#101418; --text-soft:#4A5259; --line:#C7CAC1;
  --brand:#16695A; --brand-hover:#0E4A3F; --on-brand:#FFFFFF;
  --accent:#B8862F; --danger:#B4482E;
  --foot-bg:#101418; --foot-text:#B9C0C0; --foot-line:#2A3138;
  --shadow:0 1px 0 rgba(16,20,24,.04),0 18px 40px -28px rgba(16,20,24,.35);
  --display:"Bricolage Grotesque",Georgia,serif;
  --body:"IBM Plex Sans",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace;
  --pad:clamp(20px,5vw,72px); --maxw:1180px;
}
[data-theme="dark"]{
  --bg:#0E1216; --surface:#161C21; --surface-2:#1C242A;
  --text:#E7EAE6; --text-soft:#9AA4A8; --line:#2A3238;
  --brand:#3FA98F; --brand-hover:#57C4A9; --on-brand:#08110E;
  --accent:#D9A445; --danger:#D4694A;
  --foot-bg:#080B0E; --foot-text:#9AA4A8; --foot-line:#222A30;
  --shadow:0 1px 0 rgba(0,0,0,.3),0 18px 40px -28px rgba(0,0,0,.9);
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--body);
  font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;
  transition:background .35s ease,color .35s ease;}
a{color:inherit;}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad);}

/* header */
header{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 88%,transparent);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line);}
.head-in{max-width:var(--maxw);margin:0 auto;padding:14px var(--pad);display:flex;align-items:center;gap:22px;}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--display);font-weight:700;
  font-size:18px;text-decoration:none;letter-spacing:-.01em;}
.nav{margin-left:auto;display:flex;align-items:center;gap:22px;}
.nav a:not(.btn){font-family:var(--mono);font-size:12.5px;letter-spacing:.04em;text-decoration:none;
  color:var(--text-soft);padding:4px 0;border-bottom:1px solid transparent;transition:color .2s,border-color .2s;}
.nav a:not(.btn):hover{color:var(--text);border-bottom-color:var(--brand);}
@media(max-width:900px){.nav a:not(.btn){display:none;}}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:var(--mono);
  font-size:12.5px;letter-spacing:.04em;text-decoration:none;padding:11px 18px;border-radius:2px;
  background:var(--brand);color:var(--on-brand);border:1px solid var(--brand);cursor:pointer;
  transition:background .18s,border-color .18s,transform .18s;}
.btn:hover{background:var(--brand-hover);border-color:var(--brand-hover);transform:translateY(-1px);}
.btn.ghost{background:transparent;color:var(--text);border-color:var(--line);}
.btn.ghost:hover{border-color:var(--brand);background:transparent;}
#themeToggle{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
  padding:0;border-radius:2px;background:transparent;color:var(--text-soft);border:1px solid var(--line);cursor:pointer;}
#themeToggle:hover{background:var(--surface);border-color:var(--brand);}
.cog{animation:spin 24s linear infinite;transform-origin:50% 50%;}
@keyframes spin{to{transform:rotate(360deg);}}

/* typography */
h1,h2,h3{font-family:var(--display);font-weight:700;letter-spacing:-.02em;line-height:1.12;margin:0;}
.kicker{font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--brand);margin:0 0 18px;}

/* article */
.art-head{padding:clamp(44px,6vw,80px) 0 0;}
.art-head h1{font-size:clamp(30px,4.6vw,50px);max-width:20ch;}
.art-meta{font-family:var(--mono);font-size:12px;color:var(--text-soft);margin-top:22px;
  padding-top:16px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:6px 18px;}
.art-body{max-width:70ch;padding:clamp(30px,4vw,48px) 0 clamp(40px,5vw,70px);}
.art-body .lede{font-size:20px;color:var(--text-soft);line-height:1.55;}
.art-body h2{font-size:clamp(22px,2.7vw,30px);margin:44px 0 14px;}
.art-body h3{font-size:19px;margin:32px 0 10px;}
.art-body p{margin:0 0 18px;}
.art-body ul,.art-body ol{margin:0 0 20px;padding-left:22px;}
.art-body li{margin-bottom:9px;}
.art-body strong{font-weight:600;}
.art-body a{color:var(--brand);text-underline-offset:3px;}
.pull{border-left:2px solid var(--brand);padding:4px 0 4px 20px;margin:28px 0;
  font-family:var(--display);font-size:21px;line-height:1.35;letter-spacing:-.01em;}
.note{background:var(--surface);border:1px solid var(--line);border-radius:3px;padding:20px 22px;margin:28px 0;}
.note p:last-child{margin-bottom:0;}
.note .tag{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--brand);display:block;margin-bottom:10px;}
table{width:100%;border-collapse:collapse;margin:26px 0;font-size:15.5px;}
th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line);}
th{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);font-weight:500;}

/* article CTA */
.art-cta{background:var(--surface);border:1px solid var(--line);border-radius:3px;
  padding:clamp(26px,3.4vw,38px);max-width:70ch;margin-bottom:clamp(46px,6vw,80px);}
.art-cta h2{font-size:clamp(21px,2.5vw,27px);margin-bottom:12px;}
.art-cta p{color:var(--text-soft);margin:0 0 22px;}
.art-cta .row{display:flex;flex-wrap:wrap;gap:12px;}

/* listing */
.list-head{padding:clamp(44px,6vw,80px) 0 clamp(28px,3.5vw,44px);max-width:64ch;}
.list-head h1{font-size:clamp(30px,4.6vw,48px);}
.list-head p{color:var(--text-soft);margin-top:16px;}
.posts{border-top:1px solid var(--line);margin-bottom:clamp(46px,6vw,84px);}
.post{display:block;text-decoration:none;padding:26px 0;border-bottom:1px solid var(--line);
  transition:padding-left .2s;}
.post:hover{padding-left:8px;}
.post .tag{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--brand);display:block;margin-bottom:10px;}
.post h2{font-size:clamp(20px,2.4vw,26px);margin-bottom:9px;}
.post p{font-size:15.5px;color:var(--text-soft);margin:0;max-width:72ch;}
.post .when{font-family:var(--mono);font-size:11.5px;color:var(--text-soft);margin-top:12px;display:block;}

/* footer */
footer{background:var(--foot-bg);color:var(--foot-text);padding:52px 0 30px;}
footer a{text-decoration:none;color:var(--foot-text);}
footer a:hover{color:#fff;}
.foot-grid{display:flex;flex-wrap:wrap;gap:24px;align-items:center;justify-content:space-between;
  padding-bottom:26px;border-bottom:1px solid var(--foot-line);}
footer .brand{color:#fff;}
footer nav{display:flex;flex-wrap:wrap;gap:8px 20px;font-family:var(--mono);font-size:12.5px;}
.foot-base{display:flex;flex-wrap:wrap;gap:10px 24px;justify-content:space-between;
  font-family:var(--mono);font-size:11.5px;padding-top:20px;color:var(--foot-text);opacity:.75;}
