:root{--ink:#18313e;--paper:#f6f2ea;--sage:#d7dfd0;--muted:#60717a;--line:#c9cec4;--white:#fffdf8}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 "DM Sans",sans-serif}a{color:inherit}h1,h2{font-family:Fraunces,serif;line-height:1.05;letter-spacing:-.04em}h1{font-size:clamp(3.3rem,8vw,7.5rem);margin:.25rem 0 1.5rem}h2{font-size:clamp(2.3rem,4.5vw,4.8rem);max-width:16ch;margin:.3rem 0 2rem}h3{font-size:1.2rem;margin:.4rem 0}.site-header{height:80px;max-width:1280px;margin:auto;padding:0 4vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{font:700 1.5rem "DM Mono",monospace;text-decoration:none}.brand span,.eyebrow{color:#788c6b}.site-header nav{display:flex;gap:1.5rem}.site-header nav a{text-decoration:none;font-size:.9rem}.menu-toggle{display:none}.section{max-width:1280px;margin:auto;padding:7rem 4vw;border-bottom:1px solid var(--line)}.hero{min-height:calc(100vh - 80px);display:grid;grid-template-columns:1fr 280px;align-items:center;gap:3rem}.hero aside{border-left:1px solid var(--line);padding-left:2rem;font-size:.9rem}.hero aside p,.eyebrow{font:500 .72rem "DM Mono",monospace;letter-spacing:.08em;text-transform:uppercase}.intro{font-size:1.15rem;max-width:38rem}.button{display:inline-block;padding:.8rem 1.05rem;background:var(--ink);color:var(--white);text-decoration:none;font-weight:600;font-size:.9rem;border:1px solid var(--ink)}.button--quiet{background:transparent;color:var(--ink)}.text-link{margin-left:1rem;font-weight:600;text-underline-offset:.3rem}.about-grid{display:grid;grid-template-columns:minmax(210px,360px) minmax(0,520px);gap:10vw;align-items:center}.about-grid img{width:100%;aspect-ratio:1;object-fit:cover;filter:grayscale(1);border-radius:50%}.ink{max-width:none;background:var(--ink);color:var(--white);padding-left:max(4vw,calc((100vw - 1280px)/2 + 4vw));padding-right:max(4vw,calc((100vw - 1280px)/2 + 4vw))}.cards,.capabilities{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:#536772}.cards article{padding:2rem;background:var(--ink)}.cards small,dt{font:500 .7rem "DM Mono",monospace;color:#bfd0c4}.cards a{display:inline-block;margin-top:1.5rem}.cards dl{font-size:.86rem}.cards dt{margin-top:.8rem}.cards dd{margin:0}.capabilities{background:var(--line)}.capabilities article{padding:1.5rem;background:var(--paper)}.sage{background:var(--sage)}.sage video{display:block;width:min(100%,720px);margin:2rem 0 0}.posts{margin-top:2rem;border-top:1px solid var(--line)}.post{display:grid;grid-template-columns:130px 1fr auto;gap:1rem;padding:1.3rem 0;border-bottom:1px solid var(--line);align-items:center}.post time{font:500 .7rem "DM Mono",monospace;color:var(--muted)}.post h3{margin:0}.post p{margin:.3rem 0;color:var(--muted);font-size:.9rem}.contact{padding-bottom:8rem}.contact>p:not(.eyebrow){max-width:42rem}.contact .button{margin:.5rem .5rem 0 0}.skip-link{position:absolute;left:-999px}.skip-link:focus{left:1rem;top:1rem;padding:.5rem;background:var(--white);z-index:5}footer{max-width:1280px;margin:auto;padding:1.5rem 4vw;display:flex;justify-content:space-between;font-size:.85rem}a:focus-visible,button:focus-visible{outline:3px solid #a9b987;outline-offset:4px}@media(max-width:720px){.site-header{height:auto;min-height:70px;flex-wrap:wrap;padding-top:1rem;padding-bottom:1rem}.menu-toggle{display:block;background:none;border:0;color:var(--ink);font:inherit}.site-header nav{display:none;width:100%;padding-top:1rem}.site-header nav.open{display:flex;flex-direction:column}.header-resume{margin-left:auto}.hero{grid-template-columns:1fr;min-height:auto;padding-top:6rem}.hero aside{border-left:0;border-top:1px solid var(--line);padding:1rem 0 0}.about-grid,.cards,.capabilities{grid-template-columns:1fr}.about-grid{gap:2rem}.about-grid img{max-width:260px}.post{grid-template-columns:1fr}.post a{margin-top:.5rem}.section{padding-top:4.5rem;padding-bottom:4.5rem}footer{display:block}.text-link{display:inline-block;margin:1rem 0 0}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media(max-width:720px){.text-link{margin-left:1rem}}
@media(max-width:720px){.site-header{display:grid;grid-template-columns:1fr auto auto;column-gap:.7rem;align-items:center}.site-header .brand{grid-column:1;grid-row:1}.site-header .menu-toggle{grid-column:2;grid-row:1;display:flex;width:2.25rem;height:2.25rem;padding:.5rem 0;border:0;background:transparent;flex-direction:column;justify-content:space-between;align-items:center}.menu-toggle span{display:block;width:1.25rem;height:2px;background:var(--ink);transform-origin:center;transition:transform .22s ease,opacity .22s ease}.menu-toggle.is-open span:nth-child(1){transform:translateY(6px) rotate(45deg)}.menu-toggle.is-open span:nth-child(2){opacity:0}.menu-toggle.is-open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.site-header .header-resume{grid-column:3;grid-row:1;margin-left:0}.site-header nav{grid-column:1/-1;grid-row:2}.site-header nav.open{display:flex}}
@media(max-width:720px){.site-header .menu-toggle{position:relative;justify-content:initial;align-items:initial}.site-header .menu-toggle span{position:absolute;left:50%;top:50%;width:1.25rem;height:2px;transform:translate(-50%,-50%);transition:top .22s ease,transform .22s ease,opacity .22s ease}.site-header .menu-toggle span:nth-child(1){top:28%}.site-header .menu-toggle span:nth-child(3){top:72%}.site-header .menu-toggle.is-open span:nth-child(1),.site-header .menu-toggle.is-open span:nth-child(3){top:50%}.site-header .menu-toggle.is-open span:nth-child(1){transform:translate(-50%,-50%) rotate(45deg)}.site-header .menu-toggle.is-open span:nth-child(3){transform:translate(-50%,-50%) rotate(-45deg)}}
@media(max-width:720px){.hero{padding-top:3.5rem}.hero h1{font-size:clamp(2.8rem,12vw,4.6rem)}}
.hero{padding-top:4rem;padding-bottom:4rem}.hero h1{font-size:clamp(3rem,7vw,6.5rem)}
@media(max-width:720px){.hero{padding-top:3.5rem}.hero h1{font-size:clamp(2.8rem,12vw,4.6rem)}}
body{font-variant-emoji:text}.text-link,.button{font-variant-emoji:text}

:root{--motion-ease:cubic-bezier(.2,.8,.2,1);--motion-fast:180ms;--motion-base:320ms;--motion-slow:420ms;--motion-distance:12px}
@media(prefers-reduced-motion:no-preference){
  .motion-ready .reveal{opacity:0;transform:translateY(var(--motion-distance));transition:opacity var(--motion-base) var(--motion-ease),transform var(--motion-base) var(--motion-ease);transition-delay:var(--motion-delay,0ms)}
  .motion-ready .hero .reveal{--motion-distance:8px}
  .motion-ready .reveal.is-visible{opacity:1;transform:translateY(0)}
  .button,.text-link,.site-header nav a,footer a{transition:color var(--motion-fast) var(--motion-ease),background-color var(--motion-fast) var(--motion-ease),border-color var(--motion-fast) var(--motion-ease),box-shadow var(--motion-fast) var(--motion-ease),transform var(--motion-fast) var(--motion-ease)}
  .site-header nav a{background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat}
  .site-header nav a:hover,.site-header nav a:focus-visible{background-size:100% 1px}
  .text-link:hover{color:#476775;text-decoration-thickness:2px}
  .button:hover{background:#254653;border-color:#254653;box-shadow:0 8px 18px rgba(24,49,62,.16);transform:translateY(-2px)}
  .button--quiet:hover{background:var(--ink);color:var(--white)}
  .cards article,.capabilities article{transition:transform var(--motion-fast) var(--motion-ease),box-shadow var(--motion-fast) var(--motion-ease)}
  .cards article:hover,.capabilities article:hover{position:relative;z-index:1;box-shadow:0 10px 22px rgba(24,49,62,.13);transform:translateY(-2px)}
  .about-grid img{transition:transform var(--motion-base) var(--motion-ease),box-shadow var(--motion-base) var(--motion-ease)}
  .about-grid img:hover{box-shadow:0 10px 22px rgba(24,49,62,.14);transform:scale(1.01)}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .motion-ready .reveal{opacity:1;transform:none;transition:none}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}
}
