:root{--ink:#17201f;--muted:#58605e;--line:#d6dcd9;--paper:#fafbf9;--blue:#142dce;--display:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--body:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:1rem;line-height:1.65}a{color:inherit;text-decoration:none}a:focus-visible{outline:3px solid #dd7900;outline-offset:6px}a:hover{text-decoration:underline;text-underline-offset:5px}::selection{background:#cbd2ff}.wrap{width:min(1240px,calc(100% - 112px));margin-inline:auto}.site-header{display:flex;align-items:center;justify-content:space-between;padding-block:23px;border-bottom:1px solid var(--line)}.wordmark{font-family:var(--display);font-size:2.25rem;line-height:1;letter-spacing:-.12em;font-weight:700}.wordmark span{color:var(--blue)}nav{display:flex;gap:35px;font-size:.9375rem}nav a,.resume-link{font-weight:550}.resume-link{font-size:.9375rem}.resume-link span{margin-left:13px}.hero{display:grid;grid-template-columns:1.2fr .85fr;gap:9%;padding-block:76px 88px;align-items:stretch}.eyebrow{font-size:.75rem;font-weight:650;letter-spacing:.13em;margin:0 0 23px;color:var(--blue)}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3,h4{font-family:var(--display);font-weight:500}h1{font-size:clamp(5rem,8.4vw,8.2rem);line-height:.91;letter-spacing:-.072em;margin-bottom:29px}.period{color:var(--blue)}.hero-intro{font-family:var(--display);font-size:1.65rem;line-height:1.3;letter-spacing:-.035em;margin-bottom:18px}.hero-description{color:var(--muted);max-width:470px;font-size:1.0625rem;line-height:1.7;margin-bottom:28px}.actions{display:flex;gap:27px;align-items:center;flex-wrap:wrap}.button{padding:14px 21px;display:inline-flex;gap:28px;align-items:center;font-weight:550;font-size:.9375rem}.primary{color:white;background:var(--ink);border:1px solid var(--ink);transition:background .2s}.primary:hover{background:var(--blue);text-decoration:none}.text-link{font-size:.9375rem;font-weight:550;display:inline-flex;gap:20px;align-items:center}.profile-panel{color:white;background:var(--blue);padding:29px 33px 0;display:flex;flex-direction:column;min-width:0}.panel-top{display:flex;justify-content:space-between;gap:16px;font-size:.75rem;letter-spacing:.1em;padding-bottom:42px}.panel-statement{font-family:var(--display);font-size:clamp(2rem,3.3vw,3.15rem);line-height:1.17;letter-spacing:-.055em;margin-bottom:40px}.panel-statement span{color:#bdc7ff}.profile-details{margin:0 0 28px}.profile-details>div{border-top:1px solid #ffffff40;padding-block:14px;display:grid;grid-template-columns:90px 1fr;gap:12px}.profile-details dt{font-size:.75rem;letter-spacing:.08em;color:#c6ceff;padding-top:4px}.profile-details dd{margin:0;font-size:.9375rem;line-height:1.5}.profile-details dd span{font-size:.8125rem;color:#d3d9ff}.panel-bottom{font-size:.8125rem;border-top:1px solid #ffffff40;padding-block:19px;margin-top:auto}.work-section{padding-bottom:78px}.section-heading{border-top:1px solid var(--ink);padding-top:30px;display:flex;justify-content:space-between;align-items:end;gap:25px;margin-bottom:35px}.section-heading .eyebrow{margin-bottom:10px}h2{font-size:clamp(2rem,3.6vw,3.1rem);line-height:1.12;letter-spacing:-.05em;margin-bottom:0}.section-heading>p{font-size:.9375rem;line-height:1.6;color:var(--muted);margin:0}.project{display:grid;grid-template-columns:.3fr 1.2fr 1fr;gap:40px;padding-block:35px;border-top:1px solid var(--line)}.project-index{font-family:var(--display);font-size:1.4rem;line-height:1.2;color:var(--blue)}.project-index span{display:block;font-size:.75rem;font-family:var(--body);letter-spacing:.08em;margin-top:15px;color:var(--muted)}.project h3{font-size:1.65rem;line-height:1.2;letter-spacing:-.04em;margin-bottom:14px;max-width:340px}.project p{font-size:1rem;color:var(--muted);line-height:1.65;margin-bottom:19px}.project-main{padding-right:10px}.tags{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0}.tags li{font-size:.75rem;padding:3px 9px;border:1px solid var(--line);border-radius:3px}.project-detail h4{font-family:var(--body);font-weight:600;font-size:.875rem;margin-bottom:4px}.project-detail p{font-size:.9375rem;margin-bottom:14px}.github-link{margin-top:12px;color:var(--blue)}.about-section{background:#edf0ec;border-block:1px solid var(--line);padding-block:76px}.about-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:12%}.about-intro h2{margin-bottom:28px}.about-intro>p:not(.eyebrow){color:var(--muted);max-width:510px}.toolkit{margin-top:37px}.toolkit h3,.background-list>h3{font-size:1.125rem;letter-spacing:-.015em;margin-bottom:22px}.toolkit dl{margin:0}.toolkit dl>div{display:grid;grid-template-columns:125px 1fr;gap:12px;border-top:1px solid #cdd4ce;padding-block:11px;font-size:.875rem}.toolkit dt{font-weight:550}.toolkit dd{margin:0;color:var(--muted)}.background-item{border-top:1px solid #cdd4ce;padding-top:20px;margin-top:22px}.date{font-size:.75rem;letter-spacing:.07em;color:var(--muted);margin-bottom:8px}.background-item h4{font-size:1.125rem;line-height:1.4;margin-bottom:4px}.background-item p:not(.date){font-size:.9375rem;margin-bottom:3px}.muted{color:var(--muted)}.contact-section{padding-block:84px 78px}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:10%}.contact-grid h2{font-size:clamp(3.4rem,6vw,5.4rem);line-height:1.05;letter-spacing:-.06em}.contact-grid h2 span{color:var(--blue)}.contact-grid>div>p{color:var(--muted);font-size:1.0625rem;max-width:465px}.contact-email{display:flex;justify-content:space-between;gap:16px;font-family:var(--display);font-size:clamp(1rem,1.7vw,1.45rem);border-bottom:1px solid var(--ink);padding-bottom:14px;letter-spacing:-.025em;overflow-wrap:anywhere}.contact-links{display:flex;gap:25px;flex-wrap:wrap;margin-top:22px;font-size:.875rem}footer{border-top:1px solid var(--line);padding-block:23px;display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:.8125rem}footer p{margin:0}.skip-link{position:absolute;top:-100px;left:16px;background:white;padding:12px;z-index:10}.skip-link:focus{top:12px}@media(min-width:1600px){.hero{padding-top:95px}}@media(max-width:1000px){.wrap{width:calc(100% - 64px)}.hero{gap:6%;grid-template-columns:1.1fr 1fr}.profile-panel{padding-inline:23px}.profile-details>div{grid-template-columns:1fr;gap:4px}.panel-top{padding-bottom:30px}.panel-statement{margin-bottom:30px}.project{grid-template-columns:70px 1fr 1fr;gap:23px}.about-grid{gap:7%}.contact-links{gap:18px}}@media(max-width:700px){.wrap{width:calc(100% - 40px)}.site-header{padding-block:20px}nav{gap:19px;font-size:.875rem}.wordmark{font-size:2rem}.resume-link{display:none}.hero{grid-template-columns:1fr;gap:37px;padding-block:43px 53px}.eyebrow{font-size:.75rem;letter-spacing:.085em;margin-bottom:23px}h1{font-size:5.75rem}.hero-intro{font-size:1.5rem}.hero-description{max-width:100%}.profile-panel{padding:25px 25px 0}.panel-top{padding-bottom:25px}.panel-statement{font-size:2.5rem}.profile-details>div{grid-template-columns:95px 1fr}.section-heading{display:block;padding-top:25px;margin-bottom:28px}.section-heading>p{margin-top:18px}.project{grid-template-columns:35px 1fr;gap:18px;padding-block:28px}.project-index{font-size:1.125rem}.project-index span{writing-mode:vertical-rl;margin-top:18px;font-size:.75rem}.project-main{padding-right:0}.project h3{font-size:1.5rem}.project-detail{grid-column:2}.work-section{padding-bottom:49px}.about-section{padding-block:47px}.about-grid{grid-template-columns:1fr;gap:43px}.toolkit dl>div{grid-template-columns:105px 1fr}.contact-section{padding-block:48px}.contact-grid{grid-template-columns:1fr;gap:26px}.contact-grid h2{font-size:3.6rem}.contact-email{font-size:1.25rem}.contact-links{gap:18px}footer{font-size:.75rem;flex-wrap:wrap}footer>p:nth-child(2){display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

.project-report{margin-top:20px;color:var(--blue);font-size:.875rem}

/* Calm, spacious surfaces and native system typography. */
:root{--ink:#1d1d1f;--muted:#626267;--line:#dedee3;--paper:#fff;--blue:#0066cc}
html{scroll-padding-top:7rem}
body{-webkit-font-smoothing:antialiased}
.wrap{width:min(1160px,calc(100% - 96px))}
.site-header{position:sticky;top:12px;z-index:5;margin-top:12px;padding:15px 24px;border:1px solid #e7e7eb;border-radius:24px;background:rgba(255,255,255,.88);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 4px 24px #00000005}
.wordmark{font-size:1.75rem;letter-spacing:-.075em;font-weight:650}
nav{gap:32px;font-size:.875rem}
.resume-link{color:var(--blue);font-size:.875rem}
.hero{padding-block:92px 100px;gap:8%;align-items:center}
.eyebrow{font-size:.8125rem;letter-spacing:.07em;font-weight:600}
h1{font-size:clamp(5rem,8.5vw,8rem);line-height:.96;letter-spacing:-.065em;font-weight:650;margin-bottom:30px}
.hero-intro{font-size:1.875rem;font-weight:550;line-height:1.2;letter-spacing:-.035em}
.hero-description{line-height:1.6;max-width:445px}
.button{border-radius:999px;padding:13px 23px;font-size:1rem;gap:21px}
.primary{background:#0071e3;border-color:#0071e3}
.primary:hover{background:#0077ed;border-color:#0077ed;box-shadow:0 5px 18px #0071e326}
.text-link{color:var(--blue)}
.profile-panel{background:linear-gradient(145deg,#f8faff,#eef1f8 70%,#f2effa);color:var(--ink);border:1px solid #e8eaf1;border-radius:32px;padding:32px 34px 0;box-shadow:0 20px 60px -30px #223a6559}
.panel-top{color:var(--muted);font-size:.75rem;letter-spacing:.08em;padding-bottom:40px}
.panel-statement{font-weight:600;font-size:clamp(2rem,3.3vw,3rem);line-height:1.15;letter-spacing:-.055em;margin-bottom:34px}
.panel-statement span{color:#365bb7;background:linear-gradient(100deg,#0071e3,#7754b8);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.profile-details>div{border-color:#d7dce6;padding-block:16px}
.profile-details dt{color:var(--muted);font-size:.75rem}
.profile-details dd{font-size:1rem}
.profile-details dd span{color:#626773;font-size:.8125rem}
.panel-bottom{border-color:#d7dce6;color:#434b5d;font-size:.875rem;padding-block:19px 24px}
.section-heading{border:0;padding-top:0;margin-bottom:38px}
h2{font-weight:600;font-size:clamp(2.1rem,3.6vw,3rem);letter-spacing:-.045em;line-height:1.12}
.section-heading>p{font-size:1rem}
.project{grid-template-columns:75px 1.05fr 1fr;border:1px solid #ededf0;border-radius:28px;background:#f5f5f7;padding:34px 30px;gap:28px;margin-bottom:18px;scroll-margin-top:7rem;box-shadow:0 3px 8px #00000002}
.project-index{font-size:1.125rem;color:#86868b;font-weight:500}
.project-index span{font-size:.75rem;letter-spacing:.03em;line-height:1.5;margin-top:12px}
.project h3{font-size:1.6rem;font-weight:600;letter-spacing:-.035em}
.project p{line-height:1.6}
.tags{gap:7px}
.tags li{background:white;border:1px solid #e5e5ea;border-radius:999px;padding:4px 11px;font-size:.875rem;line-height:1.4;color:#515159}
.project-detail{border-left:1px solid #dedee5;padding-left:26px}
.project-detail h4{font-size:.875rem;margin-bottom:6px}
.project-detail p{font-size:.9375rem}
.github-link{padding:13px 0;margin-top:8px}
.work-section{padding-bottom:90px}
.about-section{background:#f5f5f7;border:0;padding-block:88px}
.toolkit dl>div,.background-item{border-color:#dcdce1}
.background-list{background:#fff;border:1px solid #ededf0;border-radius:28px;padding:30px}
.background-item:first-of-type{margin-top:0}
.contact-section{padding-block:98px}
.contact-grid h2{font-weight:650}
.contact-email{color:var(--blue);border-bottom-color:#d2d2d7;padding-block:8px 17px}
.contact-links a{color:var(--blue)}
footer{padding-block:26px;color:#6e6e73}
@media(max-width:1000px){
 .wrap{width:calc(100% - 56px)}
 .hero{gap:6%;padding-block:70px 76px}
 .profile-panel{padding-inline:25px}
 .project{grid-template-columns:55px 1fr 1fr;gap:20px;padding:28px 24px}
 .project-detail{padding-left:20px}
 .background-list{padding:24px}
}
@media(max-width:700px){
 html{scroll-padding-top:6rem}
 .wrap{width:calc(100% - 32px)}
 .site-header{top:8px;margin-top:8px;padding:16px 20px;border-radius:20px}
 nav{gap:21px}
 .hero{padding-block:48px 62px;gap:38px;grid-template-columns:1fr}
 h1{font-size:clamp(4rem,19vw,6.2rem)}
 .hero-intro{font-size:1.75rem}
 .hero-description{font-size:1.0625rem}
 .profile-panel{padding:27px 25px 0;border-radius:26px}
 .panel-statement{font-size:2.5rem}
 .panel-top{padding-bottom:28px}
 .profile-details>div{grid-template-columns:88px 1fr}
 .project{grid-template-columns:1fr;padding:25px 23px;gap:18px;border-radius:25px;margin-bottom:16px}
 .project-index{display:flex;align-items:center;gap:13px;font-size:.875rem}
 .project-index span{writing-mode:horizontal-tb;margin:0}
 .project-detail{grid-column:1;border-left:0;border-top:1px solid #dedee5;padding:20px 0 0}
 .project-main>p{margin-bottom:17px}
 .project-detail p:last-child{margin-bottom:0}
 .section-heading{margin-bottom:27px}
 .section-heading>p br{display:none}
 .work-section{padding-bottom:48px}
 .about-section{padding-block:54px}
 .about-grid{gap:32px}
 .contact-section{padding-block:58px}
 .contact-grid h2{font-size:3.5rem}
 .contact-email{font-size:1.125rem}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Project categories provide context without decorative numbering. */
.project{grid-template-columns:1.05fr 1fr}
.project .project-category{font-size:.75rem;font-weight:600;letter-spacing:.06em;color:var(--blue);margin-bottom:12px}
@media(max-width:700px){.project{grid-template-columns:1fr}}
