:root{--paper: #faf9f6;--ink: #171717;--muted: #6b6b6b;--line: #d9d9d4;--accent: #da291c;--field: #f0f0ec;--image-ground: #eeeee9;--space-1: 8px;--space-2: 16px;--space-3: 24px;--space-4: 40px;--space-5: 64px;--space-6: 112px;--type-small: 14px;--type-body: 17px;--type-lead: 24px;--type-subhead: 32px;--type-project: 43px;--type-section: 58px;color:var(--ink);background:var(--paper);font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;margin:0;background:var(--paper)}::selection{background:var(--accent);color:#fff}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}button,input,select{font:inherit}h1,h2,h3,h4,p,figure,ul{margin:0}ul{padding-left:1.1em}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:5px}[id]{scroll-margin-top:96px}.page-width{width:min(100% - 88px,1440px);margin-inline:auto}.section-band{padding-block:var(--space-6)}.skip-link{position:fixed;z-index:100;top:8px;left:8px;padding:12px 16px;background:var(--ink);color:#fff;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.site-header{position:sticky;z-index:30;top:0;background:var(--paper)}.header-inner{display:grid;grid-template-columns:minmax(190px,1fr) auto minmax(80px,1fr);align-items:center;min-height:76px;gap:var(--space-3)}.brand{width:max-content;font-size:var(--type-body);font-weight:750}.brand-mark{color:var(--accent);font-weight:600}.site-header nav{display:flex;align-items:center;gap:var(--space-4)}.site-header nav a,.header-cv{font-size:var(--type-small);font-weight:650}.site-header nav a,.header-cv,.footer-bottom a{transition:color .18s ease}.site-header nav a:hover,.header-cv:hover,.footer-bottom a:hover{color:var(--accent)}.header-cv{display:flex;align-items:center;justify-self:end;gap:6px}.hero{padding-block:44px 48px}.hero-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(290px,.72fr);align-items:end;gap:clamp(40px,6vw,104px);min-height:min(60svh,620px)}.hero-copy{min-width:0;padding-bottom:14px}.hero h1{font-size:clamp(68px,8.1vw,138px);font-weight:670;line-height:.92}.hero h1>span{display:block}.hero-role{max-width:690px;margin-top:48px;font-size:var(--type-lead);font-weight:640;line-height:1.32}.hero-summary{max-width:610px;margin-top:18px;font-size:var(--type-body);line-height:1.58}.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:28px;margin-top:40px}.primary-action,.text-action{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:46px;font-size:var(--type-small);font-weight:700}.primary-action{padding:0 18px;border-radius:4px;background:var(--accent);color:#fff;transition:background .18s ease,transform .14s ease}.primary-action:hover{background:#b51f17}.primary-action:active{transform:scale(.98)}.text-action{text-decoration:underline;text-underline-offset:6px;transition:color .18s ease}.text-action:hover{color:var(--accent)}.hero-portrait{min-width:0;align-self:end}.portrait-window{overflow:hidden;background:var(--image-ground)}.hero-portrait img{width:100%;max-height:520px;aspect-ratio:4 / 5;object-fit:cover;object-position:center top}.hero-portrait figcaption{display:flex;justify-content:space-between;gap:12px;padding-top:12px;color:var(--muted);font-size:var(--type-small)}.section-intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.8fr);align-items:end;gap:var(--space-5);margin-bottom:72px}.section-intro h2{max-width:820px;font-size:var(--type-section);font-weight:650;line-height:1.04}.section-intro p{max-width:490px;padding-bottom:5px;font-size:var(--type-body);line-height:1.45}.projects-section{padding-top:60px}.project-list{border-bottom:1px solid var(--line)}.project-entry{border-top:1px solid var(--line)}.project-entry details:not([open]) .project-detail{display:none}.project-row{display:grid;grid-template-columns:160px minmax(260px,.9fr) minmax(0,1fr) 24px;align-items:start;gap:36px;padding-block:34px;cursor:pointer;list-style:none}.project-row::-webkit-details-marker{display:none}.project-row:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.project-context{display:grid;gap:7px;padding-top:5px;color:var(--muted);font-size:var(--type-small);line-height:1.4}.project-row h3{max-width:490px;font-size:var(--type-subhead);font-weight:650;line-height:1.1;transition:color .18s ease}.project-row:hover h3,.project-entry details[open] .project-row h3{color:var(--accent)}.project-summary{max-width:580px;padding-top:4px;font-size:var(--type-body);line-height:1.5}.project-toggle{justify-self:end;padding-top:2px;font-size:24px;font-weight:400;line-height:1}.toggle-minus,.project-entry details[open] .toggle-plus{display:none}.project-entry details[open] .toggle-minus{display:inline}.project-detail{display:grid;grid-template-columns:160px minmax(260px,.9fr) minmax(0,1fr) 24px;gap:36px;padding-bottom:42px}.project-outcomes{grid-column:2}.project-resources{grid-column:3}.project-outcomes h4,.project-stack span{font-size:var(--type-body);font-weight:700}.project-outcomes ul{margin-top:13px;font-size:var(--type-body);line-height:1.5}.project-outcomes li+li{margin-top:8px}.project-stack{font-size:var(--type-small);line-height:1.55}.project-stack span{display:block;margin-bottom:10px;color:var(--ink)}.project-links{display:flex;flex-wrap:wrap;gap:13px 24px;margin-top:25px}.project-links a{display:inline-flex;align-items:center;gap:5px;font-size:var(--type-small);font-weight:700;text-decoration:underline;text-underline-offset:5px;transition:color .18s ease}.project-links a:hover{color:var(--accent)}.profile-section{background:var(--field)}.about-layout{display:grid;grid-template-columns:minmax(180px,.32fr) minmax(0,.95fr);align-items:start;gap:clamp(48px,8vw,140px)}.about-label h2{font-size:var(--type-section);font-weight:650;line-height:1.04}.about-main{min-width:0}.about-intro{max-width:680px}.about-headline{margin-bottom:16px;font-size:var(--type-lead);font-weight:570;line-height:1.25}.about-intro .profile-lead{max-width:640px;font-size:clamp(27px,2.65vw,40px);font-weight:480;line-height:1.17}.about-divider{margin:46px 0 0;border-top:1px solid var(--line)}.about-aside{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px}.about-note{padding:18px 0;border-top:1px solid var(--line)}.about-note:last-child{border-bottom:1px solid var(--line)}.about-note h3{margin-bottom:8px;color:var(--accent);font-size:var(--type-small);font-weight:700}.about-note p{color:var(--muted);font-size:var(--type-body);line-height:1.5}.timeline-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:96px}.timeline-intro{margin-bottom:72px}.timeline-intro h2{max-width:900px;font-size:var(--type-section);font-weight:650;line-height:1.04}.timeline-intro p{max-width:580px;margin-top:20px;font-size:var(--type-body);line-height:1.45}.timeline-group h3{margin-bottom:34px;font-size:var(--type-subhead);font-weight:650}.timeline-item{display:grid;grid-template-columns:122px minmax(0,1fr);gap:24px;padding-bottom:38px}.timeline-item+.timeline-item{padding-top:26px;border-top:1px solid var(--line)}.timeline-item time{color:var(--muted);font-size:var(--type-small);font-weight:650;line-height:1.5}.timeline-item h4{margin-bottom:7px;font-size:var(--type-body);font-weight:680;line-height:1.33}.timeline-item p,.timeline-item ul{font-size:var(--type-body);line-height:1.5}.timeline-item p+p,.timeline-item ul{margin-top:11px}.timeline-item li+li{margin-top:5px}.timeline-organization{font-weight:650}.skills-section{padding-top:28px}.skill-index{display:grid;gap:30px}.skill-row{display:grid;grid-template-columns:minmax(210px,.8fr) minmax(0,1.2fr);gap:40px;align-items:baseline}.skill-row h3{font-size:var(--type-lead);font-weight:640;line-height:1.25}.skill-row p{max-width:690px;font-size:var(--type-body);line-height:1.55}.contact-section{padding-block:92px 28px;background:#171717;color:#faf9f6}.contact-top{display:grid;grid-template-columns:minmax(240px,.75fr) minmax(0,1fr);align-items:start;gap:clamp(48px,9vw,160px)}.contact-top h2{font-size:var(--type-section);font-weight:640;line-height:1.04}.contact-top p{max-width:560px;padding-top:8px;font-size:var(--type-body);line-height:1.55}.contact-main{margin-top:76px}.contact-primary{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;padding-bottom:20px;border-bottom:1px solid #464646;font-size:clamp(30px,4vw,58px);font-weight:500;line-height:1.08;overflow-wrap:anywhere;transition:color .18s ease}.contact-primary:hover{color:#ff8a80}.contact-primary svg{flex-shrink:0}.contact-links{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px 32px;padding-top:22px}.contact-links a{display:flex;gap:16px;align-items:center;font-size:var(--type-small);transition:color .18s ease}.contact-links a:hover{color:#ff8a80}.contact-links a span:first-child{color:#b7b7b2}.contact-links a span:last-child{display:inline-flex;align-items:center;gap:5px}.footer-bottom{display:flex;justify-content:space-between;gap:24px;margin-top:72px;padding-top:18px;border-top:1px solid #464646;color:#b7b7b2;font-size:var(--type-small)}@media(prefers-reduced-motion:no-preference){.hero h1>span{animation:hero-enter .78s cubic-bezier(.22,1,.36,1) both}.hero h1>span+span{animation-delay:90ms}.hero-role,.hero-summary,.hero-actions,.hero-portrait{animation:hero-enter .8s cubic-bezier(.22,1,.36,1) both}.hero-role{animation-delay:.16s}.hero-summary{animation-delay:.24s}.hero-actions{animation-delay:.32s}.hero-portrait{animation-delay:.22s}.hero-portrait img{transition:transform .7s cubic-bezier(.22,1,.36,1)}.hero-portrait:hover img{transform:scale(1.025)}.motion-ready [data-reveal]{opacity:0;transform:translateY(20px);transition:opacity .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1)}.motion-ready [data-reveal].is-visible{opacity:1;transform:none}.about-aside[data-reveal]{transition-delay:90ms}}@keyframes hero-enter{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}@media(max-width:1120px){.page-width{width:min(100% - 64px,1440px)}.hero-layout{gap:48px}.hero h1{font-size:clamp(68px,8.1vw,100px)}.project-row,.project-detail{grid-template-columns:120px minmax(220px,.9fr) minmax(0,1fr) 24px;gap:24px}.project-row h3{font-size:28px}.about-layout{gap:48px}.timeline-columns{gap:54px}.timeline-item{grid-template-columns:100px minmax(0,1fr);gap:18px}}@media(max-width:820px){:root{--space-6: 88px}.header-inner{grid-template-columns:1fr auto;gap:0;padding-block:14px 10px}.site-header nav{grid-column:1 / -1;grid-row:2;gap:27px;margin-top:14px;overflow-x:auto;white-space:nowrap}.header-cv{grid-column:2;grid-row:1}.hero{padding-top:46px}.hero-layout{grid-template-columns:minmax(0,1.2fr) minmax(200px,.8fr);min-height:auto}.hero h1{font-size:clamp(56px,8vw,76px)}.hero-role{margin-top:28px;font-size:var(--type-body)}.hero-summary{font-size:16px}.hero-actions{margin-top:24px}.hero-portrait img{aspect-ratio:.88}.section-intro{gap:30px;margin-bottom:56px}.section-intro h2{font-size:var(--type-project)}.section-intro p{font-size:var(--type-body)}.project-row{grid-template-columns:minmax(0,1fr) 24px;grid-template-areas:"title title" "context toggle" "summary summary";gap:12px 16px;padding-block:27px}.project-context{display:flex;flex-wrap:wrap;gap:4px 14px;grid-area:context;padding-top:0}.project-row h3{grid-area:title;font-size:var(--type-subhead)}.project-summary{grid-area:summary;padding-top:0}.project-toggle{grid-area:toggle;padding-top:0}.project-detail{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;padding-bottom:32px}.project-outcomes{grid-column:1}.project-resources{grid-column:2}.about-layout{gap:48px}.timeline-columns{grid-template-columns:1fr;gap:56px}.timeline-intro h2{font-size:var(--type-project)}.skill-row{grid-template-columns:minmax(170px,.7fr) minmax(0,1.3fr)}.about-layout{grid-template-columns:minmax(150px,.3fr) minmax(0,1fr)}.contact-top{gap:40px}.contact-top h2{font-size:var(--type-project)}.contact-main{margin-top:56px}.contact-primary{font-size:var(--type-project)}.contact-links{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){:root{--space-6: 76px;--type-body: 16px}.page-width{width:min(100% - 40px,1440px)}[id]{scroll-margin-top:104px}.brand{font-size:var(--type-small)}.site-header nav{gap:24px}.site-header nav a{font-size:var(--type-small)}.hero{padding-block:28px 54px}.hero-layout{grid-template-columns:1fr;gap:30px}.hero-copy{padding-bottom:0}.hero h1{font-size:48px}.hero-role{max-width:440px;margin-top:28px;font-size:var(--type-body)}.hero-summary{margin-top:14px;font-size:var(--type-body)}.hero-actions{gap:24px;margin-top:25px}.hero-portrait{display:grid;grid-template-columns:132px minmax(0,1fr);align-items:end;gap:18px}.hero-portrait img{width:132px;height:158px;aspect-ratio:auto}.hero-portrait figcaption{display:block;padding-bottom:3px}.hero-portrait figcaption span{display:block}.hero-portrait figcaption span+span{margin-top:5px}.projects-section{padding-top:18px}.section-intro,.profile-section .section-intro{grid-template-columns:1fr;gap:14px;margin-bottom:42px}.section-intro h2{font-size:38px}.section-intro p{font-size:var(--type-body)}.project-row{padding-block:24px}.project-row h3{font-size:28px}.project-summary{font-size:var(--type-body)}.project-detail{grid-template-columns:1fr;gap:24px}.project-outcomes,.project-resources{grid-column:1}.project-outcomes ul{font-size:var(--type-body)}.about-layout{grid-template-columns:1fr;gap:30px}.about-label h2{font-size:38px}.about-headline{margin-bottom:12px;font-size:var(--type-lead)}.about-intro .profile-lead{font-size:var(--type-lead)}.about-divider{margin-top:30px}.about-aside{grid-template-columns:1fr;gap:0}.timeline-group h3{margin-bottom:25px}.timeline-intro{margin-bottom:42px}.timeline-intro h2{font-size:38px}.timeline-intro p{margin-top:14px}.timeline-item{grid-template-columns:1fr;gap:7px;padding-bottom:30px}.timeline-item time{font-size:14px}.skills-section{padding-top:10px}.skill-index{gap:28px}.skill-row{grid-template-columns:1fr;gap:6px}.skill-row h3{font-size:var(--type-lead)}.contact-section{min-height:auto;padding-block:76px 28px}.contact-top{grid-template-columns:1fr;gap:22px}.contact-top h2{font-size:48px}.contact-top p{font-size:var(--type-body)}.contact-main{margin-top:48px}.contact-primary{gap:10px;font-size:clamp(25px,6.7vw,34px)}.contact-primary svg{width:22px}.contact-links{grid-template-columns:1fr;gap:19px;padding-top:20px}.contact-links a{justify-content:space-between;font-size:var(--type-small)}.footer-bottom{flex-wrap:wrap;margin-top:48px}}@media(max-width:380px){.page-width{width:min(100% - 32px,1440px)}.site-header nav{gap:17px}.hero h1{font-size:46px}.hero-role{font-size:var(--type-body)}.hero-actions{gap:17px}.primary-action,.text-action{font-size:14px}.hero-portrait{grid-template-columns:110px minmax(0,1fr)}.hero-portrait img{width:110px;height:136px}.contact-primary{font-size:24px}.project-row h3{font-size:26px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
