:root{--paper: #f7f3e8;--ink: #282828;--muted: #665c54;--blue: #458588;--link: #076678;--yellow: #d79921;--orange: #d65d0e;--red: #cc241d;--green: #98971a;--aqua: #689d6a;--line: #ded7c6;color:var(--ink);background:var(--paper);font-family:"Source Serif 4",Georgia,Times New Roman,serif;font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px}::selection{background:var(--yellow);color:var(--ink)}mark,.highlight{padding:0 .12em;background:color-mix(in srgb,var(--yellow) 45%,transparent);color:inherit}.scroll-progress{position:fixed;z-index:10;inset:0 0 auto;height:.28rem;background:var(--line);pointer-events:none}.scroll-progress:after{position:absolute;inset:0 auto 0 0;width:var(--scroll-progress, 0%);background:var(--orange);box-shadow:0 0 .65rem color-mix(in srgb,var(--orange) 55%,transparent);content:""}a{color:var(--link);text-decoration:none}a:hover{color:var(--orange)}a:focus-visible{outline:3px solid var(--orange);outline-offset:3px}.shell{width:min(100% - 3.75rem,82rem);margin:auto}.site-header{display:flex;align-items:center;justify-content:space-between;gap:2rem;min-height:5.8rem;border-bottom:1px solid var(--line)}.wordmark{color:var(--ink);font-size:clamp(1.7rem,3vw,2.35rem);font-weight:700;letter-spacing:-.06em;text-decoration:none;white-space:nowrap}nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.75rem clamp(1rem,2.8vw,2.5rem)}nav a{color:var(--ink);font-size:clamp(1rem,1.8vw,1.35rem);text-decoration:none}nav a:hover,nav a[aria-current=page]{color:var(--orange)}.intro{--portrait-size: clamp(11rem, 15vw, 16rem);display:grid;grid-template-columns:minmax(0,1fr) var(--portrait-size);align-items:start;gap:clamp(2.5rem,7vw,7rem);padding:clamp(3.5rem,7vw,5.5rem) 0 clamp(4rem,9vw,7rem)}.intro-copy{max-width:48rem}h1,h2,p{margin-top:0}h1,h2{text-wrap:balance}.intro h1{margin-bottom:1.65rem;font-size:clamp(2.5rem,5vw,4.3rem);font-weight:400;letter-spacing:-.055em;line-height:1}.intro p{margin-bottom:1.25rem;font-size:clamp(1.2rem,2.25vw,1.72rem);line-height:1.48}.portrait{width:100%;aspect-ratio:1;height:auto;object-fit:cover;object-position:50% 45%;border:2px solid var(--ink);border-radius:1rem;box-shadow:.35rem .35rem 0 var(--aqua)}.portrait-stack{width:var(--portrait-size)}.portrait-stack .social-links{margin-top:1.1rem}.portrait-stack .social-link{padding:.56rem .75rem;font-size:.85rem}.background-page{padding:clamp(4rem,9vw,7rem) 0 0}.background-page>h1{margin-bottom:clamp(3rem,7vw,5.5rem);font-size:clamp(3rem,7vw,5.5rem);font-weight:400;letter-spacing:-.065em;line-height:.95}.resume-section{display:grid;grid-template-columns:minmax(10rem,.32fr) minmax(0,1fr);gap:clamp(2rem,7vw,7rem);padding:0 0 clamp(4rem,8vw,6.5rem)}.section-heading{border-top:1px solid var(--line);padding-top:1.15rem}.section-kicker{margin-bottom:.45rem;color:var(--green);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.74rem;font-weight:750;letter-spacing:.12em;text-transform:uppercase}.resume-section h2{margin:0;font-size:clamp(2rem,4vw,3.3rem);font-weight:400;letter-spacing:-.055em;line-height:1}.section-summary{margin:.8rem 0 0;color:var(--muted);font-family:DM Sans,ui-sans-serif,system-ui,sans-serif;font-size:.95rem}.timeline,.education-list{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}.timeline>li{display:grid;padding:1.5rem 0}.timeline>li:last-child{border-bottom:1px solid var(--line)}.entry-content,.education-list>li{display:grid;grid-template-columns:3.5rem minmax(0,1fr);gap:1rem}.entry-logo{width:3.5rem;height:3.5rem;border-radius:.7rem;object-fit:contain}.timeline h3,.education-list h3{margin:0 0 .2rem;font-size:clamp(1.25rem,2.2vw,1.55rem);font-weight:500;letter-spacing:-.025em;line-height:1.15}.timeline p,.education-list p{margin:0;color:var(--muted);font-size:1.05rem}.secondary-detail{margin-top:.2rem!important;color:var(--muted);font-family:DM Sans,ui-sans-serif,system-ui,sans-serif;font-size:.92rem!important}.role-list{display:grid;gap:1.15rem;margin:0;padding:0;list-style:none}.role-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1rem}.role-list time{padding-top:.2rem;color:var(--orange);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.78rem;font-weight:500;text-align:right;white-space:nowrap}.education-list{display:block}.education-list>li{padding:1.25rem 1.25rem 1.25rem 0}.education-list>li:last-child{border-bottom:1px solid var(--line)}.course-list{margin-top:1.5rem;border:1px solid var(--line);border-radius:.55rem;font-family:DM Sans,ui-sans-serif,system-ui,sans-serif}.course-list summary{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.15rem;cursor:pointer;color:var(--ink);font-weight:600;list-style:none}.course-list summary::-webkit-details-marker{display:none}.course-list summary:after{color:var(--orange);content:"+";font-family:IBM Plex Mono,ui-monospace,monospace;font-size:1.2rem}.course-list[open] summary{border-bottom:1px solid var(--line)}.course-list[open] summary:after{content:"−"}.course-list ul{margin:0;padding:0;list-style:none}.course-list li{display:flex;justify-content:space-between;gap:1rem;padding:.75rem 1.15rem;border-bottom:1px solid var(--line)}.course-list li:last-child{border-bottom:0}.course-list code{color:var(--muted);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.82rem;white-space:nowrap}.writing-page{min-height:calc(100vh - 17rem);padding:clamp(4rem,9vw,7rem) 0}.eyebrow,.post-meta{margin-bottom:.8rem;color:var(--orange);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.75rem;font-weight:750;letter-spacing:.12em;text-transform:uppercase}.writing-page h1{margin-bottom:2.6rem;font-size:clamp(3rem,7vw,5.5rem);font-weight:400;letter-spacing:-.065em;line-height:.95}.empty-state{color:var(--muted);font-size:clamp(1.25rem,2vw,1.6rem)}.post-list{max-width:50rem}.post-list article{padding:1.7rem 0;border-top:1px solid var(--line)}.post-list h2{margin-bottom:.75rem;font-size:clamp(1.65rem,3vw,2.4rem);font-weight:400;letter-spacing:-.04em}.post-list h2 a{color:var(--ink)}.post-list h2 a:hover{color:var(--orange)}.post-list article>p:last-child{margin:0;color:var(--muted);font-size:1.15rem;line-height:1.5}.post-body{max-width:48rem;padding:clamp(4rem,9vw,7rem) 0}.post-body h1{margin-bottom:1rem;font-size:clamp(2.7rem,6vw,5rem);font-weight:400;letter-spacing:-.06em;line-height:1}.post-description{margin-bottom:2.5rem;color:var(--muted);font-size:clamp(1.2rem,2.2vw,1.55rem);line-height:1.5}.post-body p{font-size:1.2rem;line-height:1.65}.post-body blockquote{margin:2rem 0;padding:.2rem 0 .2rem 1.5rem;border-left:.28rem solid var(--green);color:#5b7420;font-size:1.18rem;line-height:1.65}.post-body blockquote p{margin:0}.post-body h2{margin:2.6rem 0 1rem;font-size:2rem;font-weight:400}.post-body h3{margin:2.1rem 0 .8rem;font-size:1.45rem;font-weight:700}.post-body pre{overflow-x:auto;padding:1.3rem;border-radius:.35rem;background:var(--ink);color:var(--paper)}footer{display:flex;justify-content:space-between;gap:1rem;padding:2rem 0 3rem;border-top:1px solid var(--line);color:var(--muted);font-family:DM Sans,ui-sans-serif,system-ui,sans-serif;font-size:.9rem}footer p{margin:0}.social-links{display:flex;flex-wrap:wrap;gap:1rem}.social-link{display:inline-flex;align-items:center;gap:.55rem;padding:.7rem 1rem;border:2px solid var(--ink);border-radius:.55rem;box-shadow:.22rem .22rem 0 var(--aqua);color:var(--ink);font-weight:600;text-decoration:none;transition:box-shadow .12s ease,transform .12s ease,background-color .12s ease}.social-link:hover{box-shadow:.06rem .06rem 0 var(--aqua);color:var(--ink);background:#fbf1c7;transform:translate(.16rem,.16rem)}.social-link:focus-visible{outline:3px solid var(--orange);outline-offset:3px}.social-link svg{width:1.05rem;height:1.05rem}@media(max-width:43rem){.shell{width:min(100% - 2rem,82rem)}.site-header{align-items:flex-start;flex-direction:column;gap:.8rem;padding:1.25rem 0}nav{justify-content:flex-start}.intro{grid-template-columns:1fr;padding-top:3.4rem}.portrait-stack{grid-row:1;width:min(52vw,16rem);justify-self:center}.resume-section{grid-template-columns:1fr;gap:1.25rem}.education-list{grid-template-columns:1fr}.role-list li{grid-template-columns:1fr;gap:.25rem}.role-list time{padding-top:0;text-align:left}.course-list li{align-items:flex-start;flex-direction:column;gap:.2rem}footer{align-items:flex-start;flex-direction:column}}.role-company{color:var(--muted);font-weight:400}
