:root{--paper: #f3f0ea;--paper-deep: #e9e4da;--ink: #2a2926;--muted: #6b675f;--rule: #ddd7cc;--line: #bdb4a5;--wood: #b39c78;--accent: #3b5266;--accent-deep: #2c3e4e;--mark: #e6d8bd;--radius: 2px;--serif: "Source Serif 4", "Iowan Old Style", Georgia, serif;--sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--gutter: clamp(1rem, 4vw, 3rem);--margin-col: 13.5rem;--header-h: 3.75rem;color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 1.5rem);-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:1rem;line-height:1.6;font-feature-settings:"kern","liga";-webkit-font-smoothing:antialiased}img{max-width:100%;display:block}h1,h2,h3,h4{font-family:var(--serif);font-weight:500;line-height:1.15;margin:0;text-wrap:balance}p{margin:0;text-wrap:pretty}ul,ol{margin:0;padding:0;list-style:none}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.2em}a:hover{color:var(--accent-deep);text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:1px}::selection{background:var(--mark);color:var(--ink)}.page{max-width:76rem;margin:0 auto;padding-inline:var(--gutter)}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip-link{position:absolute;left:var(--gutter);top:-3rem;z-index:100;background:var(--ink);color:var(--paper);padding:.5rem .9rem}.skip-link:focus{top:.5rem;color:var(--paper)}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;padding-block:1.5rem 2.5rem;border-top:1px solid var(--line);color:var(--muted);font-size:.85rem}.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--paper) 94%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--rule)}.site-header-inner{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;min-height:var(--header-h)}.wordmark{font-family:var(--serif);font-weight:600;font-size:1.15rem;color:var(--ink);text-decoration:none;white-space:nowrap}.wordmark:hover{color:var(--accent)}.site-nav{display:flex;gap:clamp(.9rem,2.2vw,1.9rem)}.site-nav a{display:inline-block;padding-block:.35rem;color:var(--ink);font-size:.9rem;text-decoration:none;border-bottom:1px solid transparent}.site-nav a:hover{color:var(--accent)}.site-nav a[aria-current=true]{color:var(--accent);border-bottom-color:var(--accent)}@media (max-width: 720px){.site-header-inner{flex-wrap:wrap;row-gap:0;padding-block:.5rem .2rem}nav[aria-label=Sections]{width:100%;overflow-x:auto;scrollbar-width:none}.site-nav{gap:.85rem}.site-nav a{font-size:.8rem;white-space:nowrap}}.hero{padding-block:clamp(2rem,5vw,3.5rem) clamp(3.5rem,7vw,5rem)}.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,20rem);gap:clamp(2rem,6vw,5rem);align-items:start}.hero-kicker{color:var(--muted);font-size:.95rem}.hero-name{margin-top:.6rem;font-size:clamp(2.9rem,8.2vw,6.2rem);font-weight:400;font-optical-sizing:auto;letter-spacing:-.025em;line-height:.95;padding-bottom:1.25rem;border-bottom:1px solid var(--line)}.hero-statement{margin-top:1.75rem;display:grid;gap:1rem;max-width:38rem}.hero-statement p:first-child{font-family:var(--serif);font-size:clamp(1.3rem,2.2vw,1.6rem);line-height:1.38}.status{margin-top:2rem;width:100%;max-width:38rem;border-collapse:collapse;font-size:.9rem}.status tr{border-top:1px solid var(--rule)}.status tr:last-child{border-bottom:1px solid var(--rule)}.status th,.status td{text-align:left;padding:.55rem 1rem .55rem 0;vertical-align:baseline}.status th{font-weight:600;white-space:nowrap}.status th a{color:var(--ink);text-decoration:none}.status th a:hover{color:var(--accent);text-decoration:underline}.status-when{color:var(--muted);font-size:.8rem;text-align:right!important;padding-right:0!important;white-space:nowrap}.hero-actions{margin-top:2rem;display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem}.button{display:inline-block;padding:.7rem 1.15rem;border:1px solid var(--ink);border-radius:var(--radius);color:var(--ink);font-weight:500;font-size:.95rem;text-decoration:none;transition:background-color .12s,color .12s}.button:hover{background:var(--ink);color:var(--paper)}.button-tag{margin-left:.35rem;font-size:.68rem;color:var(--muted);vertical-align:.08em}.button:hover .button-tag{color:inherit}.button-solid{background:var(--accent);border-color:var(--accent);color:var(--paper)}.button-solid:hover{background:var(--accent-deep);border-color:var(--accent-deep);color:var(--paper)}.hero-link{font-size:.95rem}.hero-figure{margin:0;padding-top:.4rem}.hero-figure img{width:100%;height:auto;margin-top:10%;aspect-ratio:20 / 23;object-fit:cover;object-position:50% 50%;border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper-deep)}.hero-figure figcaption{margin-top:.7rem;padding-left:.8rem;border-left:2px solid var(--wood);font-family:var(--serif);font-style:italic;color:var(--muted);font-size:.95rem;line-height:1.45}@media (max-width: 760px){.hero-grid{grid-template-columns:minmax(0,1fr)}.hero-figure img{margin-top:0}.hero-figure{display:grid;grid-template-columns:7rem minmax(0,1fr);gap:1rem;align-items:end;padding-top:0}}@media (max-width: 460px){.status td:nth-child(2){display:none}}.entries{display:grid;gap:clamp(3rem,6vw,4.5rem)}.entry{scroll-margin-top:calc(var(--header-h) + 1.5rem)}.entry-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.4rem 2rem;padding-bottom:.9rem;margin-bottom:.4rem;border-bottom:1px solid var(--line)}.entry-title{font-size:clamp(1.5rem,2.6vw,1.95rem);letter-spacing:-.01em}.entry-sub{margin-top:.3rem;font-weight:500}.entry-meta{display:flex;flex-direction:column;align-items:flex-end;gap:.1rem;color:var(--muted);font-size:.875rem;text-align:right}.entry-meta .mono{font-size:.8rem;color:var(--ink)}.entry-links{margin-top:1.1rem;display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;font-size:.95rem}@media (max-width: 560px){.entry-meta{align-items:flex-start;text-align:left}}.section{display:grid;grid-template-columns:var(--margin-col) minmax(0,1fr);column-gap:clamp(1.5rem,4vw,3.5rem);padding-block:clamp(4rem,9vw,7rem);border-top:1px solid var(--line)}.section-margin{align-self:start;position:sticky;top:calc(var(--header-h) + 1.5rem)}.section-title{font-size:clamp(1.9rem,3.2vw,2.5rem);font-optical-sizing:auto;letter-spacing:-.01em}.section-note{margin-top:.75rem;color:var(--muted);font-size:.875rem;line-height:1.5;max-width:22ch}.section.is-wide{grid-template-columns:minmax(0,1fr)}.section.is-wide .section-margin{position:static;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 2rem;margin-bottom:clamp(2rem,4vw,3rem)}.section.is-wide .section-note{max-width:40ch;margin-top:0}@media (max-width: 860px){.section{grid-template-columns:minmax(0,1fr)}.section-margin{position:static;margin-bottom:2rem}.section-note{max-width:48ch}}.flow{container-type:inline-size;margin:2rem 0 0;padding:1.25rem;border:1px solid var(--rule);border-radius:var(--radius);background:color-mix(in srgb,var(--paper-deep) 55%,var(--paper))}.flow-title{font-family:var(--serif);font-size:1.05rem;font-weight:500;margin-bottom:1rem}.flow-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.5rem;counter-reset:none}.flow-step{position:relative;display:flex;flex-direction:column;gap:.2rem;padding:.7rem .8rem;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius)}.flow-step:not(:last-child):after{content:"";position:absolute;top:50%;right:-1.5rem;width:1.5rem;height:1px;background:var(--wood)}.flow-step:not(:last-child):before{content:"";position:absolute;top:calc(50% - 3.5px);right:-1.5rem;border:3.5px solid transparent;border-right:0;border-left:6px solid var(--wood)}.flow-step.is-branch{box-shadow:inset 3px 0 0 var(--accent)}.flow-name{font-weight:600;font-size:.9rem;line-height:1.3}.flow-note{font-size:.8rem;color:var(--muted);line-height:1.4}.flow-base{margin-top:.75rem;padding:.45rem .8rem;border:1px dashed var(--line);border-radius:var(--radius);font-size:.8rem;color:var(--muted);text-align:center;background:var(--paper)}.flow-caption{margin-top:.9rem;font-family:var(--serif);font-style:italic;font-size:.95rem;color:var(--muted)}@container (max-width: 34rem){.flow-steps{grid-template-columns:minmax(0,1fr);gap:1.1rem}.flow-step:not(:last-child):after{top:auto;bottom:-1.1rem;right:auto;left:1.25rem;width:1px;height:1.1rem}.flow-step:not(:last-child):before{top:auto;bottom:-1.1rem;right:auto;left:calc(1.25rem - 3px);border:3.5px solid transparent;border-top:6px solid var(--wood);border-bottom:0}}.cite{display:inline-block;font-size:.6875rem;font-weight:500;line-height:1;padding:.2rem .3rem .18rem;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);border-radius:var(--radius);color:var(--accent);text-decoration:none;vertical-align:.2em;white-space:nowrap}.cite:hover{background:var(--accent);color:var(--paper)}.cite-list{display:inline-flex;gap:.25rem;margin-left:.4rem;vertical-align:baseline}.source-line{display:grid;grid-template-columns:2.25rem minmax(0,1fr);column-gap:.75rem;padding-block:.55rem;border-top:1px solid var(--rule)}.source-line:first-child{border-top:0}.source-id{font-size:.75rem;color:var(--muted);padding-top:.22rem}.source-text{background-image:linear-gradient(var(--mark),var(--mark));background-repeat:no-repeat;background-size:0% 100%;box-decoration-break:clone;-webkit-box-decoration-break:clone}.source-line:target .source-id{color:var(--accent);font-weight:600}.source-line:target .source-text{animation:mark .9s cubic-bezier(.6,0,.2,1) .25s forwards}@keyframes mark{to{background-size:100% 100%}}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,2.2vw,1.75rem)}.cards>.card:not(.is-featured):last-child:nth-child(2n){grid-column:1 / -1}.card{display:flex;flex-direction:column;padding:clamp(1.25rem,2.4vw,1.9rem);background:color-mix(in srgb,var(--paper-deep) 40%,var(--paper));border:1px solid var(--rule);border-radius:var(--radius);scroll-margin-top:calc(var(--header-h) + 1.5rem);transition:border-color .16s}.card:hover,.card:focus-within{border-color:var(--line)}.card.is-featured{grid-column:1 / -1;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);grid-template-areas:"main aside" "foot foot";column-gap:clamp(1.5rem,4vw,3rem);border-top:2px solid var(--wood)}.card-main{grid-area:main}.card-aside{grid-area:aside}.card-aside .flow{margin-top:0}.card-head{padding-bottom:1rem;margin-bottom:.4rem;border-bottom:1px solid var(--rule)}.card-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;font-size:.85rem;color:var(--muted)}.card-meta .mono{font-size:.78rem;color:var(--ink)}.card-title{margin-top:.7rem;font-size:clamp(1.45rem,2.4vw,1.85rem);letter-spacing:-.01em}.is-featured .card-title{font-size:clamp(1.8rem,3.2vw,2.4rem)}.card-lede{margin-top:.55rem;font-family:var(--serif);font-size:1.08rem;line-height:1.45;color:var(--ink);max-width:40rem}.card-figure{display:flex;align-items:baseline;flex-wrap:wrap;gap:.2rem .9rem;margin:.6rem 0 .5rem;padding:.15rem 0 .15rem .9rem;border-left:2px solid var(--wood)}.card-figure-value{font-size:1.9rem;line-height:1.1;letter-spacing:-.02em}.card-figure-label{font-size:.875rem;color:var(--muted)}.card .source-line{font-size:.95rem}.card-foot{grid-area:foot;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1.5rem;margin-top:auto;padding-top:1rem;border-top:1px solid var(--rule);font-size:.875rem}.card>.card-main{margin-bottom:1.1rem}.card-stack{color:var(--muted)}.card-links{display:flex;flex-wrap:wrap;gap:.3rem 1.25rem}.card-note{color:var(--muted);font-style:italic;font-family:var(--serif)}@media (max-width: 960px){.card.is-featured{grid-template-columns:minmax(0,1fr);grid-template-areas:"main" "aside" "foot"}.card-aside{margin-bottom:1.1rem}}@media (max-width: 760px){.cards{grid-template-columns:minmax(0,1fr)}}.edu{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(2.5rem,5vw,3.5rem) clamp(2rem,5vw,3.5rem);align-items:start}.edu-item:first-child{grid-row:span 2}.edu-detail{margin-top:.8rem;font-family:var(--serif);font-size:1.1rem}.edu-label{margin-top:1.2rem;font-family:var(--sans);font-size:.85rem;font-weight:500;color:var(--muted)}.edu-courses{margin-top:.3rem}.edu-courses li{padding-block:.45rem;border-bottom:1px solid var(--rule)}.edu-footnote{margin-top:.7rem;font-size:.85rem;color:var(--muted)}@media (max-width: 960px){.edu{grid-template-columns:minmax(0,1fr)}.edu-item:first-child{grid-row:auto}}.skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:2.25rem clamp(1.5rem,4vw,3rem)}.skill-group-title{font-size:1.15rem;padding-bottom:.55rem;border-bottom:1px solid var(--line)}.skill{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding-block:.42rem;border-bottom:1px solid var(--rule);font-size:.95rem}.skill .cite-list{flex-shrink:0}.skill-level{color:var(--muted);font-size:.875rem}.skill-aside{margin-top:.8rem;font-family:var(--serif);font-style:italic;color:var(--muted)}.contact-lede{font-family:var(--serif);font-size:clamp(1.3rem,2.4vw,1.7rem);line-height:1.35;max-width:36rem}.contact-list{margin:2rem 0 0;border-top:1px solid var(--ink)}.contact-row{display:grid;grid-template-columns:9rem minmax(0,1fr);gap:1rem;padding-block:.9rem;border-bottom:1px solid var(--rule);align-items:baseline}.contact-row dt{font-size:.875rem;color:var(--muted)}.contact-row dd{margin:0;font-size:1.15rem;overflow-wrap:anywhere}@media (max-width: 520px){.contact-row{grid-template-columns:minmax(0,1fr);gap:.1rem}}
