@font-face{font-family:Plex;src:url('assets/ibm-plex-mono-300.ttf') format('truetype');font-weight:300;font-display:swap}
@font-face{font-family:Plex;src:url('assets/ibm-plex-mono-400.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Plex;src:url('assets/ibm-plex-mono-500.ttf') format('truetype');font-weight:500;font-display:swap}
@font-face{font-family:Plex;src:url('assets/ibm-plex-mono-600.ttf') format('truetype');font-weight:600;font-display:swap}
:root{color-scheme:dark;--bg:#000;--fg:#eee;--muted:#939393;--line:#282828;--pad:clamp(22px,5vw,88px);font-family:Plex,'SFMono-Regular',Consolas,monospace;font-synthesis:none;background:var(--bg);color:var(--fg);scroll-behavior:smooth;scroll-padding-top:100px}
*{box-sizing:border-box}body{margin:0;font-size:14px;line-height:1.8;-webkit-font-smoothing:antialiased}body:has(dialog[open]){overflow:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button{background:none;border:0}a:hover{color:#fff}a:focus-visible,button:focus-visible{outline:1px solid #fff;outline-offset:7px}::selection{background:#eee;color:#050505}img{max-width:100%;display:block}p,h1,h2,h3,figure{margin:0}h1,h2,h3{font-weight:400;line-height:1.2;letter-spacing:-.06em}ul{padding:0;list-style:none}button:disabled{cursor:default}.skip-link{position:fixed;top:-100px;left:20px;padding:12px 20px;background:#fff;color:#000;z-index:100}.skip-link:focus{top:15px}.site-header{height:86px;position:relative;z-index:15;width:100%;padding:0 var(--pad);display:flex;align-items:center;justify-content:space-between}.wordmark{font-size:25px;font-weight:500;letter-spacing:-3px}.cursor{font-weight:300;color:#aaa}.site-header nav{display:flex;gap:30px;font-size:11px}.site-header nav a{color:#aaa;transition:color .2s}.site-header nav a:hover{color:white}.eyebrow,.date,.location,.tools-line{font-size:10px;line-height:1.7;letter-spacing:.05em}.eyebrow{color:var(--muted)}.muted{color:var(--muted)}

[hidden]{display:none!important}
html.intro-locked,html.intro-locked body{overflow:hidden;overscroll-behavior:none}
.intro{height:240svh;position:relative;background:#000}
.intro-stage{height:100svh;position:sticky;top:0;overflow:hidden;isolation:isolate}
.card-media{width:min(1180px,112vw);aspect-ratio:16/9;position:absolute;left:50%;top:48%;transform:translate(-50%,-50%) scale(var(--zoom,1));transform-origin:72% 42%;will-change:transform}
.card-media video,.card-media .card-still{position:absolute;width:100%;height:100%;object-fit:contain;pointer-events:none}
.card-media video{opacity:0}
.js #pcb-video{opacity:1}
.js .card-still{opacity:0}
.idle-playing #pcb-idle{opacity:1}
.idle-playing #pcb-video,.use-still #pcb-video{opacity:0}
.use-still .card-still{opacity:1}
.assembly-ready.use-still .card-still{animation:card-float 8s ease-in-out infinite}
.hero-controls{position:absolute;bottom:max(40px,7svh);left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:27px;z-index:3;opacity:var(--cue-opacity,1);white-space:nowrap;animation:cue-appear .8s both}
.hero-controls button{padding:8px 12px;color:#777;font-size:9px;font-weight:300;letter-spacing:.04em}
.hero-controls button:hover{color:#ddd}
.scroll-cue{display:flex;flex-direction:column;align-items:center;gap:15px;font-size:10px;letter-spacing:.12em;color:#bbb}
.scroll-arrow{font-size:21px;font-weight:300;animation:scroll-hint 2.2s ease-in-out infinite}
.start-animation,.no-script-cue{position:absolute;bottom:10svh;left:50%;transform:translateX(-50%);z-index:3;font-size:11px;color:#aaa}
@keyframes scroll-hint{0%,100%{transform:translateY(-4px);opacity:.35}50%{transform:translateY(5px);opacity:1}}
@keyframes cue-appear{from{opacity:0;translate:0 8px}to{opacity:var(--cue-opacity,1);translate:0 0}}
@keyframes card-float{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-7px) rotate(.4deg)}}
.intro-bloom{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 65% 45%,#fff 0%,#fff 22%,#e5e5e5 45%,#8c8c8c 70%,#000 100%);opacity:var(--bloom,0);mix-blend-mode:screen;z-index:2;will-change:opacity}
.intro-stage:after{content:'';position:absolute;inset:0;background:#000;opacity:var(--intro-fade,0);pointer-events:none;z-index:4}
.js:not(.content-visible) .document,.js:not(.content-visible) .outro{visibility:hidden}
.js:not(.content-visible) .reading-progress{opacity:0}
.document{position:relative;z-index:3;background:var(--bg)}.section-wrap{max-width:1440px;margin:auto;padding-left:var(--pad);padding-right:var(--pad)}.about{padding-top:110px;padding-bottom:150px}.section-kicker{margin-bottom:40px}h1{font-size:clamp(35px,5.2vw,76px);font-weight:300;line-height:1.12;letter-spacing:-.07em}.about-bottom{display:flex;justify-content:space-between;gap:70px;align-items:flex-end;margin-top:50px}.about-bottom p{max-width:650px;color:#aaa;font-size:13px;line-height:1.95}.text-link{white-space:nowrap;border-bottom:1px solid #777;padding-bottom:7px;font-size:12px}.text-link span{margin-left:35px}.resume-section{display:grid;grid-template-columns:1fr 2fr;gap:7%;padding-top:60px;padding-bottom:100px;border-top:1px solid var(--line)}.section-label h2{font-size:30px;margin-top:16px}.education-content h3,.experience-item h3{font-size:30px;margin:20px 0 13px}.education-content .degree{font-size:18px;line-height:1.7;margin-bottom:16px;letter-spacing:-.03em}.education-content .text-link{display:table;margin-top:32px}.education-content>.muted{font-size:11px}.date{color:#929292}.experience-item+.experience-item{margin-top:64px;padding-top:48px;border-top:1px solid var(--line)}.experience-item h3 a span{font-size:18px;vertical-align:top;color:#555;margin-left:10px}.role{font-size:15px;color:#ddd}.location{margin-top:7px;color:#858585}.experience-item ul{margin-top:27px;color:#aaa;font-size:12px;line-height:1.9}.experience-item li{position:relative;padding-left:19px;margin:12px 0}.experience-item li:before{content:'—';position:absolute;left:0;color:#666}.tools-line{margin-top:25px;color:#858585;letter-spacing:0}.current{font-size:9px;margin-left:22px;color:#bbb}.current i{width:4px;height:4px;background:#ccc;display:inline-block;margin-right:6px;vertical-align:middle;border-radius:50%}.projects-section{padding-top:60px;padding-bottom:40px;border-top:1px solid var(--line)}.projects-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:70px}.projects-heading h2{font-size:clamp(30px,4vw,52px);margin-top:20px;font-weight:300}.project-count{font-size:12px;color:#666;letter-spacing:0;vertical-align:top;margin-left:18px}.project{display:grid;grid-template-columns:.95fr 1.05fr;gap:8%;padding:65px 0 80px;border-top:1px solid var(--line);scroll-margin-top:40px}.project h3{font-size:clamp(28px,3vw,43px);margin:18px 0 12px}.description{color:#a5a5a5;font-size:12px;line-height:1.95;margin:26px 0 18px}.project-details{font-size:12px;line-height:1.9;color:#898989;margin:0}.project-details li{margin-bottom:12px;padding-left:16px;position:relative}.project-details li:before{content:'+';position:absolute;left:0;top:0;color:#555}.tags{display:flex;flex-wrap:wrap;gap:5px 13px;margin:27px 0 24px}.tags li{font-size:9px;color:#aaa;border-bottom:1px solid #333;padding-bottom:3px}.project-links{display:flex;gap:25px;font-size:11px}.project-links a span{margin-left:5px}.gallery{align-self:start;margin-top:5px}.gallery-open{padding:0;width:100%;height:390px;display:block;position:relative;overflow:hidden;background:#101010;border:1px solid #202020;cursor:zoom-in}.gallery-open>img{width:100%;height:100%;transition:transform .5s;object-position:center}.gallery-open>img.contain{object-fit:contain;padding:32px}.gallery-open>img.cover{object-fit:cover}.gallery-open:hover>img{transform:scale(1.025)}.enlarge{position:absolute;top:12px;right:15px;font-size:16px;background:#101010b0;width:27px;height:27px;line-height:27px}.gallery figcaption{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:55px;font-size:9px;line-height:1.6;color:#999}.gallery-nav{display:flex;align-items:center;gap:12px;white-space:nowrap}.gallery-nav button{font-size:16px;min-width:28px;min-height:40px;color:#bbb;padding:0}.gallery-nav [data-counter]{font-size:9px;min-width:41px;text-align:center}.thumbnails{display:flex;gap:9px}.thumbnails button{width:62px;height:47px;padding:4px;background:#101010;border:1px solid #222;opacity:.5;transition:opacity .2s,border-color .2s}.thumbnails button[aria-pressed=true]{opacity:1;border-color:#777}.thumbnails button:hover{opacity:1}.thumbnails img{width:100%;height:100%;object-fit:contain}.leadership{padding-top:65px}.leadership-content h3{font-size:20px;letter-spacing:-.04em}.leadership-content article+article{margin-top:38px}.leadership-content p:not(.location){font-size:12px;color:#aaa;line-height:1.9;margin-top:16px}.toolkit{padding-top:60px;padding-bottom:80px;border-top:1px solid var(--line)}.toolkit h2{font-size:clamp(25px,3vw,42px);margin-top:22px;font-weight:300}.toolkit dl{margin-top:45px}.toolkit dl>div{display:grid;grid-template-columns:220px 1fr;gap:20px;padding:21px 0;border-bottom:1px solid #202020}.toolkit dt{font-size:10px;color:#777;letter-spacing:.04em}.toolkit dd{margin:0;color:#aaa;font-size:11px;max-width:850px}.end-cue{margin-top:100px;text-align:center;font-size:11px;color:#777}.end-cue span{display:block;margin-top:25px;font-size:20px;color:#aaa}
.outro{height:210svh;background:var(--bg)}.outro-stage{height:100svh;min-height:720px;position:sticky;top:0;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:65px var(--pad) 25px;isolation:isolate}.outro-copy{text-align:center;z-index:2;opacity:var(--outro-copy,1);transform:translateY(var(--outro-y,0px))}.outro-copy h2{font-size:clamp(30px,4vw,57px);margin-top:15px;font-weight:300}.outro-copy p{font-size:11px;color:#8c8c8c;margin-top:20px}.outro-card{position:absolute;top:49%;left:50%;width:min(800px,90vw);aspect-ratio:16/9;transform-origin:72% 37%;transform:translate(-50%,-50%) scale(var(--outro-zoom,1));opacity:var(--outro-card,1);z-index:0;will-change:transform}.outro-card img,.outro-card video{width:100%;height:100%;object-fit:contain}
.outro-card video{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .25s}
.outro-card.idle-playing video{opacity:1}
.outro-card.idle-playing img{opacity:0}
.outro-bloom{position:absolute;inset:0;background:radial-gradient(ellipse at 65% 45%,#fff,#fff 20%,#8c8c8c 60%,#050505);opacity:var(--outro-bloom,0);mix-blend-mode:screen;z-index:1;pointer-events:none}.contact{width:100%;text-align:center;z-index:2;opacity:var(--outro-copy,1);scroll-margin-top:20px}.email-link{font-size:clamp(13px,1.7vw,21px);display:block;margin:12px 0 24px;letter-spacing:-.03em}.email-link span{font-size:14px;margin-left:12px}.contact-links{display:flex;justify-content:center;align-items:center;gap:30px;font-size:11px}.resume-button{padding:10px 15px;border:1px solid #444}.resume-button:hover{background:#eee;color:#050505}.footer-meta{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#707070;width:100%;margin-top:48px;gap:20px;font-weight:300;letter-spacing:.02em}.footer-meta a span{color:#aaa}.reading-progress{position:fixed;left:0;top:0;width:100%;height:1px;background:#aaa;transform:scaleX(var(--read,0));transform-origin:left;z-index:20;pointer-events:none}dialog{color:#eee;background:#090909;border:1px solid #333;width:min(1200px,94vw);max-height:92svh;padding:20px;overflow:hidden}dialog::backdrop{background:rgba(0,0,0,.92);backdrop-filter:blur(5px)}.dialog-toolbar,.dialog-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:11px;color:#aaa}.dialog-toolbar button,.dialog-bottom button{padding:8px;color:#eee}.dialog-toolbar{margin-bottom:16px}#dialog-image{max-height:65svh;width:100%;object-fit:contain;background:#111}#dialog-caption{text-align:center;font-size:10px}.dialog-bottom{margin-top:15px}
.gallery-open>img.photo{object-fit:contain}
.outro{position:relative}.contact-anchor{position:absolute;bottom:0;left:0;width:1px;height:1px}

@media(min-width:1600px){.site-header{max-width:1440px;margin:auto}}
@media(max-width:1000px){.project{gap:5%;grid-template-columns:1fr 1fr}.gallery-open{height:340px}.footer-meta{font-size:9px}.resume-section{gap:5%;grid-template-columns:1fr 2fr}.about-bottom{gap:35px}.section-label h2{font-size:26px}}
@media(max-width:700px){:root{scroll-padding-top:35px}.site-header{height:70px}.wordmark{font-size:23px}.site-header nav{gap:17px;font-size:9px}.site-header nav a:first-child{display:none}.intro{height:200svh}.card-media{width:120vw;top:45%}.hero-controls{bottom:max(48px,10svh)}.about{padding-top:65px;padding-bottom:80px}.section-kicker{font-size:9px;margin-bottom:27px}h1{font-size:clamp(30px,7.5vw,50px);line-height:1.18}.about-bottom{display:block;margin-top:27px}.about-bottom p{font-size:12px}.about-bottom .text-link{display:table;margin-top:30px}.resume-section{grid-template-columns:1fr;gap:38px;padding-top:38px;padding-bottom:65px}.section-label h2{font-size:28px;margin-top:12px}.education-content h3,.experience-item h3{font-size:25px;margin-top:16px}.education-content .degree{font-size:16px}.experience-item+.experience-item{margin-top:42px;padding-top:38px}.experience-item ul{font-size:12px}.date{font-size:9px}.current{font-size:8px;margin-left:15px}.projects-section{padding-top:38px}.projects-heading{display:block;margin-bottom:35px}.projects-heading h2{font-size:30px}.project{display:flex;flex-direction:column;padding:38px 0 55px;gap:30px}.project h3{font-size:33px}.project-copy>.eyebrow{font-size:9px}.description{margin-top:20px}.gallery{width:100%;margin:0}.gallery-open{height:355px}.gallery figcaption{font-size:8px;gap:5px}.gallery-nav{gap:8px}.project-links{font-size:11px}.toolkit{padding-top:38px;padding-bottom:30px}.toolkit h2{font-size:26px}.toolkit dl>div{grid-template-columns:1fr;gap:8px}.toolkit dl{margin-top:25px}.end-cue{margin-top:65px;font-size:9px}.outro{height:180svh}.outro-stage{height:100svh;min-height:660px;padding-top:60px;padding-bottom:24px}.outro-copy h2{font-size:31px}.outro-copy p{font-size:10px}.outro-card{width:125vw;top:44%}.contact .eyebrow{font-size:9px}.email-link{margin-bottom:20px}.contact-links{gap:20px;font-size:10px;flex-wrap:wrap}.resume-button{padding:8px 12px}.footer-meta{flex-wrap:wrap;justify-content:center;column-gap:25px;row-gap:13px;margin-top:32px;font-size:9px}.footer-meta>a:nth-child(2){order:3;width:100%}.dialog-toolbar{font-size:10px}dialog{padding:12px}.dialog-bottom{font-size:9px;gap:10px}#dialog-image{max-height:60svh}.dialog-bottom button{padding:8px 0;white-space:nowrap}#dialog-caption{font-size:8px}}
@media(max-width:380px){.site-header nav{gap:12px}.gallery-open{height:290px}.contact-links{gap:14px}}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}.intro{height:100svh}.intro-stage{position:relative}.intro-bloom,.outro-bloom{display:none}.card-media,.outro-card{will-change:auto;transform:translate(-50%,-50%)!important}.card-still{opacity:1!important}.intro video{display:none}.outro{height:auto}.outro-stage{position:relative;min-height:760px}.gallery-open>img{transition:none}.outro-copy,.contact{opacity:1!important;transform:none!important}.intro-stage:after{display:none}.intro-top,.outro-card{opacity:1!important}}

@media(prefers-reduced-motion:reduce){.hero-controls,.scroll-arrow,.card-still{animation:none!important}.hero-controls{opacity:1!important}.card-still{transform:none!important}}

@media(prefers-reduced-motion:reduce){.outro-card video{display:none}.outro-card img{opacity:1!important}}
