:root{--charcoal:#232629;--ivory:#f4f1e9;--soft:#b8bcbc;--line:#3b3e40;--serif:Georgia,'Times New Roman',serif;--sans:-apple-system,BlinkMacSystemFont,'SF Pro Text','Segoe UI','Helvetica Neue',Helvetica,Arial,sans-serif;--gutter:clamp(24px,5.5vw,80px)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--charcoal);color-scheme:dark}
::selection{background:var(--ivory);color:var(--charcoal)}
body{margin:0;min-height:100svh;display:flex;flex-direction:column;background:var(--charcoal);color:var(--ivory);font:16px/1.7 var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
p{margin:0 0 1.1em;text-wrap:pretty}
h1,h2,h3{margin:0;font-weight:400;text-wrap:balance}
h1,h2{font-family:var(--serif);letter-spacing:-.035em;line-height:1.12}
:focus-visible{outline:1px solid currentColor;outline-offset:6px}
main:focus{outline:none}
.skip-link{position:absolute;top:8px;left:8px;z-index:20;padding:12px;background:var(--ivory);color:var(--charcoal);transform:translateY(-150%)}
.skip-link:focus{transform:none}
.nowrap{white-space:nowrap}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Header */
.site-header{view-transition-name:site-header;position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:28px;padding:24px var(--gutter);background:var(--charcoal);border-bottom:1px solid var(--line)}
.brand{display:inline-flex;align-items:center;gap:18px}
.brand img{width:46px;height:28px}
.brand-name{font-size:18px;line-height:1;letter-spacing:-.02em;white-space:nowrap}
nav{display:flex;gap:32px;font-size:14px}
nav a{padding:6px 0;color:var(--soft);background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:color .25s,background-size .35s cubic-bezier(.2,.7,.2,1)}
nav a:is(:hover,[aria-current="page"]){color:var(--ivory);background-size:100% 1px}

/* Page frame: one vertically centered composition per page */
main{flex:1;display:flex;flex-direction:column}
.section,.hero{flex:1;width:100%;margin:0 auto;display:flex;flex-direction:column;justify-content:center}
.section{max-width:1120px;padding:clamp(48px,8vh,96px) var(--gutter)}
.section h2{font-size:clamp(36px,3.7vw,54px);margin-bottom:clamp(36px,5vh,56px)}
.text-link{display:inline-block;align-self:flex-start;padding-bottom:6px;font-size:15px;border-bottom:1px solid currentColor;transition:opacity .2s}
.text-link:hover{opacity:.7}
.page-link{margin-top:48px}
.lede{margin:0;max-width:640px;font-size:18px;color:var(--soft);text-wrap:balance}
.section h2:has(+.lede){margin-bottom:16px}
.section-heading:has(.lede){margin-bottom:clamp(36px,5vh,56px)}

/* Home */
.hero{max-width:800px;align-items:center;gap:28px;padding:32px var(--gutter)}
.hero-portrait{margin:0;width:min(100%,412px,44svh);aspect-ratio:1082/1240}
.hero-portrait svg{display:block;width:100%;height:100%}
.hero h1{font-size:clamp(30px,3.4vw,48px);line-height:1.15;text-align:center}
.hero h1 em{color:var(--soft)}

/* Lists: education and consulting */
.list>div{padding:20px 0;border-bottom:1px solid var(--line)}
.list>div:first-child{padding-top:0}
.list h3{font-size:20px;line-height:1.35}
.ledger>div{display:flex;justify-content:space-between;align-items:baseline;gap:32px}
.ledger p{margin:0;color:var(--soft);text-align:right}

/* Contact */
.contact-body{max-width:640px}
.contact-lead{max-width:600px;font-size:18px;color:var(--soft)}
.contact-lead:first-child{color:var(--ivory)}
.contact-lead+.email-link{margin-top:40px}
.email-link{display:block;padding-bottom:16px;font:clamp(26px,3vw,42px)/1.3 var(--serif);letter-spacing:-.02em;border-bottom:1px solid var(--soft);overflow-wrap:anywhere;transition:border-color .2s}
.email-link:hover{border-color:var(--ivory)}
.contact-note{margin:20px 0 0;font-size:16px;color:var(--soft)}
.contact-note a{white-space:nowrap;color:var(--ivory);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}

@media(max-width:800px){
 .site-header{flex-wrap:wrap;gap:16px;padding-block:20px}
 nav{width:100%;justify-content:space-between;gap:0}
 .ledger>div{flex-direction:column;gap:4px}
 .ledger p{text-align:left}
 .hero-portrait{width:min(100%,300px,38svh)}
}
@media(max-width:520px){
 .brand{gap:14px}
 .brand img{width:40px;height:24px}
 .brand-name{font-size:16px}
 .section h2{font-size:34px}
}
/* Page-to-page crossfade; the header stays still. */
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.3s;animation-timing-function:ease}
@media(prefers-reduced-motion:reduce){*{transition:none!important}@view-transition{navigation:none}}
