:root{
  --ink:#14365C;
  --blue:#1F4E79;
  --gold:#C9952C;
  --paper:#F7F8FA;
  --card:#FFFFFF;
  --text:#25303D;
  --muted:#66758A;
  --line:#DDE4EC;
  --good:#1E7F5C;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}
body{
  font-family:'IBM Plex Sans',system-ui,sans-serif;
  background:var(--paper);
  color:var(--text);
  line-height:1.6;
  font-size:16.5px;
}
.mono{font-family:'IBM Plex Mono',monospace}
a{color:var(--blue)}
a:focus-visible,button:focus-visible{outline:3px solid var(--gold);outline-offset:2px;border-radius:2px}
.wrap{max-width:980px;margin:0 auto;padding:0 24px}
.wrap-narrow{max-width:720px;margin:0 auto;padding:0 24px}

/* ---------- nav ---------- */
nav{
  position:sticky;top:0;z-index:50;
  background:rgba(247,248,250,.92);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
.nav-inner{display:flex;align-items:center;justify-content:space-between;height:58px}
.nav-brand{display:flex;align-items:baseline;gap:8px;text-decoration:none}
.nav-brand b{font-weight:700;color:var(--ink);font-size:16px;letter-spacing:-.01em}
.nav-brand span{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--gold);letter-spacing:.1em;text-transform:uppercase}
.nav-links{display:flex;gap:22px;list-style:none}
.nav-links a{
  text-decoration:none;color:var(--muted);font-size:13.5px;font-weight:500;
  font-family:'IBM Plex Mono',monospace;letter-spacing:.02em;
}
.nav-links a:hover,.nav-links a.active{color:var(--blue)}
@media(max-width:640px){.nav-links{gap:14px}}

/* ---------- hero ---------- */
header.page-header{padding:64px 0 44px;background:linear-gradient(180deg,#FFFFFF 0%,var(--paper) 100%);border-bottom:1px solid var(--line)}
.eyebrow{
  font-family:'IBM Plex Mono',monospace;font-size:12.5px;font-weight:500;
  color:var(--gold);letter-spacing:.14em;text-transform:uppercase;margin-bottom:18px;
}
h1{
  font-size:clamp(32px,5vw,48px);line-height:1.1;color:var(--ink);
  font-weight:700;letter-spacing:-.022em;max-width:24ch;
}
.hero-sub{
  margin-top:18px;font-size:18px;color:var(--muted);max-width:58ch;line-height:1.65;
}
.hero-sub strong{color:var(--text);font-weight:600}
.hero-ctas{margin-top:30px;display:flex;gap:14px;flex-wrap:wrap}
.btn{
  display:inline-block;text-decoration:none;font-weight:600;font-size:15px;
  padding:12px 22px;border-radius:6px;transition:transform .15s ease, box-shadow .15s ease;
}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(31,78,121,.25)}
.btn-ghost{border:1.5px solid var(--line);color:var(--ink);background:#fff}
.btn-ghost:hover{border-color:var(--blue)}

/* ---------- ledger ---------- */
.ledger{margin:40px 0 0;border:1px solid var(--line);border-radius:8px;background:var(--card);overflow:hidden}
.ledger-head{display:flex;justify-content:space-between;align-items:center;padding:10px 18px;border-bottom:1px solid var(--line);background:#FBFCFE}
.ledger-head span{font-family:'IBM Plex Mono',monospace;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.ledger-row{display:grid;grid-template-columns:1fr auto auto;gap:14px;align-items:baseline;padding:13px 18px;border-bottom:1px solid var(--line);font-size:14.5px}
.ledger-row:last-child{border-bottom:none}
.ledger-row .desc{color:var(--text)}
.ledger-row .amt{font-family:'IBM Plex Mono',monospace;font-weight:600;color:var(--ink);white-space:nowrap}
.ledger-row .st{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--good);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
@media(max-width:560px){.ledger-row{grid-template-columns:1fr auto}.ledger-row .st{display:none}}

/* ---------- sections ---------- */
section{padding:60px 0}
section + section{border-top:1px solid var(--line)}
h2.label{
  font-size:13px;font-family:'IBM Plex Mono',monospace;font-weight:600;color:var(--gold);
  letter-spacing:.14em;text-transform:uppercase;margin-bottom:26px;
}
h3{font-size:21px;color:var(--ink);font-weight:700;letter-spacing:-.01em}
.lede{font-size:18px;max-width:62ch;color:var(--text)}
.lede + .lede{margin-top:14px}

/* work cards (home) */
.role{display:grid;grid-template-columns:170px 1fr;gap:26px;padding:28px 0;border-top:1px solid var(--line)}
.role:first-of-type{border-top:none;padding-top:0}
.role-meta{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--muted);line-height:1.7}
.role-meta b{display:block;color:var(--ink);font-weight:600;font-size:13.5px}
.role-body p{margin-top:10px;color:var(--text);max-width:60ch}
.role-body p:first-of-type{margin-top:8px}
.chips{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px}
.chip{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--blue);border:1px solid var(--line);background:#fff;border-radius:99px;padding:4px 12px}
@media(max-width:640px){.role{grid-template-columns:1fr;gap:8px}}

/* case study */
.case{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:34px;margin-top:8px}
.case h3{margin-bottom:6px}
.case .case-sub{color:var(--muted);font-size:15px;margin-bottom:20px}
.case p{max-width:64ch;margin-top:12px}
.case-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-top:26px}
.cm{background:#FBFCFE;padding:18px 16px;text-align:center}
.cm .n{font-family:'IBM Plex Mono',monospace;font-size:24px;font-weight:600;color:var(--ink)}
.cm .l{font-size:12.5px;color:var(--muted);margin-top:4px;line-height:1.4}
@media(max-width:560px){.case{padding:24px}.case-metrics{grid-template-columns:1fr}}

/* AI section */
.ai-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:6px}
.ai-card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:24px}
.ai-card h4{font-size:16px;color:var(--ink);font-weight:600;margin-bottom:8px}
.ai-card p{font-size:15px;color:var(--text)}
.ai-card .tool{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--gold);letter-spacing:.06em;text-transform:uppercase;display:block;margin-bottom:10px}
@media(max-width:640px){.ai-grid{grid-template-columns:1fr}}

/* skills */
.skill-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.skill-cols h4{font-size:14px;color:var(--ink);font-weight:600;margin-bottom:10px}
.skill-cols ul{list-style:none}
.skill-cols li{font-size:15px;color:var(--text);padding:5px 0;border-bottom:1px dashed var(--line)}
@media(max-width:640px){.skill-cols{grid-template-columns:1fr}}

/* ---------- blog index ---------- */
.post-list{display:flex;flex-direction:column}
.post-card{
  display:grid;grid-template-columns:140px 1fr;gap:24px;
  padding:26px 0;border-top:1px solid var(--line);text-decoration:none;color:inherit;
}
.post-card:first-of-type{border-top:none;padding-top:0}
.post-date{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--muted);padding-top:3px}
.post-title{font-size:19px;font-weight:700;color:var(--ink);letter-spacing:-.01em;transition:color .15s ease}
.post-card:hover .post-title{color:var(--blue)}
.post-excerpt{margin-top:8px;font-size:15px;color:var(--text);max-width:62ch}
.post-tags{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}
.post-tag{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--gold);letter-spacing:.04em;text-transform:uppercase}
@media(max-width:640px){.post-card{grid-template-columns:1fr;gap:6px}}

/* ---------- single post ---------- */
.post-header{padding:50px 0 36px;border-bottom:1px solid var(--line)}
.post-meta{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--muted);margin-bottom:14px;display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.post-meta .dot{width:4px;height:4px;border-radius:50%;background:var(--line)}
.post-h1{font-size:clamp(30px,4.4vw,42px);line-height:1.15;color:var(--ink);font-weight:700;letter-spacing:-.02em;max-width:26ch}
.post-dek{margin-top:16px;font-size:18px;color:var(--muted);max-width:58ch;line-height:1.6}
article.post-body{padding:46px 0;max-width:680px;margin:0 auto}
article.post-body p{font-size:17px;line-height:1.75;color:var(--text);margin-bottom:22px}
article.post-body h2{font-size:23px;color:var(--ink);font-weight:700;letter-spacing:-.01em;margin:42px 0 16px}
article.post-body h3{font-size:19px;margin:32px 0 12px}
article.post-body blockquote{
  border-left:3px solid var(--gold);padding:4px 0 4px 20px;margin:28px 0;
  font-size:18px;color:var(--ink);font-style:italic;
}
article.post-body ul,article.post-body ol{margin:0 0 22px 22px;color:var(--text);font-size:17px;line-height:1.75}
article.post-body li{margin-bottom:8px}
article.post-body code{font-family:'IBM Plex Mono',monospace;font-size:14.5px;background:#EEF1F5;padding:2px 6px;border-radius:4px}
.post-callout{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--blue);border-radius:6px;padding:18px 20px;margin:28px 0;font-size:15.5px;color:var(--text)}
.post-callout b{color:var(--ink)}
.post-nav{display:flex;justify-content:space-between;padding:30px 0;border-top:1px solid var(--line);max-width:680px;margin:0 auto}
.post-nav a{font-family:'IBM Plex Mono',monospace;font-size:13px;text-decoration:none;color:var(--muted)}
.post-nav a:hover{color:var(--blue)}

/* ---------- contact / footer ---------- */
footer{background:var(--ink);color:#C8D4E2;padding:56px 0 36px;margin-top:24px}
footer h2.label{color:var(--gold)}
.contact-line{font-size:21px;color:#fff;font-weight:600;max-width:30ch;line-height:1.4}
.contact-links{margin-top:24px;display:flex;gap:14px;flex-wrap:wrap}
.contact-links a{color:#fff;text-decoration:none;border:1.5px solid rgba(255,255,255,.3);padding:11px 20px;border-radius:6px;font-weight:600;font-size:15px}
.contact-links a:hover{border-color:var(--gold);color:var(--gold)}
.foot-note{margin-top:38px;font-family:'IBM Plex Mono',monospace;font-size:12px;color:#7E92AC}

/* reveal */
.reveal{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}
.reveal.in{opacity:1;transform:none}
