@font-face{font-family:Space;src:url('assets/space-grotesk.ttf') format('truetype');font-weight:400;font-display:swap}@font-face{font-family:Space;src:url('assets/space-grotesk-semibold.ttf') format('truetype');font-weight:600 800;font-display:swap}@font-face{font-family:Plex;src:url('assets/ibm-plex-mono.ttf') format('truetype');font-weight:400;font-display:swap}
:root{--bg:#111315;--surface:#171a1d;--ink:#e9e9e4;--muted:#a0a5aa;--blue:#a0c5f8;--line:#34383d;--gutter:clamp(24px,5.55vw,96px);--hero-progress:0;color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--ink);font-family:Space,Arial,sans-serif;font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}::selection{background:var(--blue);color:var(--bg)}a{color:inherit;text-decoration:none}button{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a:hover{color:var(--blue)}:focus-visible{outline:2px solid var(--blue);outline-offset:6px}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:400;line-height:1.06;letter-spacing:-.05em}h2{font-size:clamp(48px,5.3vw,82px)}h3{font-size:34px}p{color:var(--muted)}p+p{margin-top:18px}.mono{font-family:Plex,monospace;font-size:11px;line-height:1.6;letter-spacing:.035em;text-transform:uppercase}.section-shell{padding:100px var(--gutter);position:relative;border-top:1px solid var(--line)}.section-kicker{display:flex;justify-content:space-between;gap:24px;color:var(--muted);margin-bottom:66px}.section-kicker>a{color:var(--ink)}.small-label{color:var(--blue)}.eyebrow{font-size:13px;margin-bottom:25px}.section-intro{font-size:18px;max-width:350px;margin-top:28px}.skip-link{position:fixed;left:24px;top:-100px;z-index:100;padding:12px;background:var(--blue);color:var(--bg)}.skip-link:focus{top:12px}
.site-header{height:88px;padding:0 var(--gutter);display:flex;align-items:center;justify-content:space-between;position:fixed;z-index:20;inset:0 0 auto;background:rgb(17 19 21 / .94);border-bottom:1px solid rgb(255 255 255 / .08);backdrop-filter:blur(16px)}.wordmark{font-size:30px;letter-spacing:-3px;font-weight:600}.wordmark span{color:var(--blue)}nav{display:flex;gap:36px;font-size:13px}nav a{color:#bfc2c4;transition:color .2s}nav a[aria-current]{color:var(--blue)}.header-contact{font-size:13px}.header-contact span{display:inline-block;margin-left:24px;color:var(--blue);font-size:20px}
.hero-scroll{position:relative}.hero{padding:120px var(--gutter) 32px;min-height:100svh;display:flex;flex-direction:column;justify-content:space-between}.hero-topline{display:flex;justify-content:space-between;gap:20px;color:var(--muted)}.location,.status{display:flex;align-items:center;gap:10px}.location i,.status i{height:6px;width:6px;display:inline-block;background:var(--blue);border-radius:50%;box-shadow:0 0 0 4px #a0c5f80c}.hero-main{display:grid;grid-template-columns:1.18fr 1fr;align-items:center;gap:4vw;padding:32px 0}.hero-name h1{font-size:clamp(130px,17.4vw,280px);line-height:.79;letter-spacing:-.085em;font-weight:600}.hero-name h1>span{display:inline-block;margin-top:16px}.name-dot{color:var(--blue)}.hero-aside{padding-left:24px}.system-art{max-width:420px;margin-left:auto}.system-art svg{width:100%;display:block;margin-top:10px;overflow:visible}.art-label{color:#919ba4;font-size:10px}.art-legend{display:flex;justify-content:space-between;color:#9faab5;font-size:9px}.hero-intro{color:var(--ink);font-size:clamp(22px,2.3vw,36px);line-height:1.28;letter-spacing:-.04em;margin-top:40px;max-width:420px;margin-left:auto}.hero-intro em{font-style:normal;color:var(--blue)}.hero-bottom{display:flex;align-items:flex-end;justify-content:space-between;padding-top:26px;border-top:1px solid var(--line);gap:24px}.hero-bottom p{font-size:13px}.scroll-cue{display:flex;align-items:center;gap:44px}.scroll-cue span{font-size:26px;color:var(--blue)}.board-top{transform:translateY(calc(var(--hero-progress) * -36px))}.board-bottom{transform:translateY(calc(var(--hero-progress) * 20px))}.hero-name{transform:translateY(calc(var(--hero-progress) * -12px))}
.current{background:#191d21}.current-grid{display:grid;grid-template-columns:1fr 1fr;gap:9vw}.current-detail{padding-top:9px}.current-detail h3{margin:18px 0 22px;font-size:38px}.work-list{list-style:none;padding:0;margin:26px 0 30px;color:#c5c8ca}.work-list li{padding:12px 0 12px 21px;border-top:1px solid var(--line);position:relative;font-size:15px}.work-list li:before{content:'↳';position:absolute;left:0;color:var(--blue)}.tags{display:flex;flex-wrap:wrap;gap:7px}.tags span{border:1px solid #3a4047;padding:4px 9px;font-family:Plex,monospace;font-size:10px;color:#b6bec6;line-height:1.6}
.journey{padding-bottom:110px}.journey-heading{margin-bottom:65px}.journey-heading .section-kicker{margin-bottom:32px}.journey-heading>p{margin-top:25px}.journey-grid{display:grid;grid-template-columns: .85fr 1.15fr;gap:7vw;align-items:start}.internship{min-height:78vh;padding:15px 0 95px;display:flex;flex-direction:column;justify-content:center;scroll-margin-top:125px}.internship+.internship{border-top:1px solid var(--line);padding-top:65px}.story-number{font-size:14px;color:var(--blue);margin-bottom:30px}.story-number span{font-size:11px;color:var(--muted);margin-left:10px}.internship .eyebrow{margin-bottom:16px}.internship h3{font-size:clamp(27px,2.6vw,40px);line-height:1.15;margin-bottom:22px}.internship .role{color:var(--ink);font-size:14px;margin-bottom:8px}.role span{color:var(--muted);display:block;margin-top:3px}.internship p:not(.eyebrow):not(.role){font-size:15px}.internship .tags{margin-top:28px}.result{margin-top:25px}.result>span{font-size:62px;line-height:1.2;letter-spacing:-.06em}.result-arrow{color:var(--blue);font-size:40px;padding:0 12px}.result p{font-family:Plex,monospace;font-size:10px!important;text-transform:uppercase}.map-sticky{position:sticky;top:120px}.map-frame{height:clamp(360px,53vh,590px);background:#191f25;position:relative;border:1px solid #343e49;overflow:hidden}#map{position:absolute;inset:0}.map-topline{position:absolute;top:0;left:0;right:0;padding:20px;display:flex;justify-content:space-between;pointer-events:none;background:linear-gradient(#151b23cc,transparent);color:#c4ccd5}.map-fallback{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;padding:40px;background:radial-gradient(ellipse at center,#273a4a 0, #161e27 70%);pointer-events:none}.map-ready .map-fallback{display:none}.map-fallback>.mono{color:var(--blue)}.fallback-route{display:flex;align-items:center;justify-content:space-between;margin:30px 0;font-size:26px}.fallback-route i{display:block;font:11px Plex,monospace;color:var(--muted)}.fallback-route b{color:var(--blue);font-weight:400}.map-message{font-size:12px}.map-controls{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line)}.map-controls button{color:var(--muted);border:0;border-bottom:2px solid transparent;background:none;display:flex;align-items:center;gap:14px;text-align:left;padding:18px 12px;cursor:pointer;font-size:14px}.map-controls button>span:last-child{margin-left:auto}.map-controls button:hover,.map-controls button[aria-pressed=true]{color:var(--blue);border-bottom-color:var(--blue)}.map-caption{font-size:9px;margin-top:14px;color:#919ba4}.map-marker{height:15px;width:15px;border-radius:50%;border:3px solid #e0eaf5;background:#80b5fc;box-shadow:0 0 0 8px #9ac4ff33;cursor:pointer;padding:0}.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right{z-index:3}.mapboxgl-ctrl-attrib{font-size:10px!important}
.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:65px}.section-heading>p{max-width:285px;font-size:15px}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:5vw}.project-art{height:270px;background:#181d22;border:1px solid #343e49;margin-bottom:30px;overflow:hidden}.infra-art{display:flex;flex-direction:column;justify-content:center;padding:30px;position:relative;background-image:radial-gradient(#39424d 1px,transparent 1px);background-size:20px 20px}.infra-path{display:flex;align-items:center;gap:12px;justify-content:center}.infra-path>span{border:1px solid #546270;background:#181d22;padding:13px 18px}.infra-path>i{font-style:normal;color:#718399}.infra-path .accent-box{border-color:var(--blue);color:var(--blue)}.infra-branch{display:flex;justify-content:space-around;gap:10px;margin:32px 10px 0;padding-top:18px;border-top:1px solid #536477;font-size:9px;color:#b0bbc5}.diagram-caption{font-size:9px;color:#8f9da9;position:absolute;bottom:20px}.terminal-top{height:43px;border-bottom:1px solid #343e49;display:flex;align-items:center;justify-content:space-between;padding:0 23px;color:#98a5b2;font-size:10px}.terminal-body{padding:20px 25px}.terminal-body>.mono{font-size:11px;color:var(--blue)}.chart-bars{display:flex;align-items:flex-end;height:110px;gap:9px;padding:15px 0 0}.chart-bars i{width:100%;background:#647f99;height:40%}.chart-bars i:nth-child(3n){height:70%;background:#8eb6e2}.chart-bars i:nth-child(2n){height:55%}.chart-bars i:nth-child(5n){height:90%;background:#b4d2f4}.terminal-bottom{display:flex;justify-content:space-between;font-size:8px;border-top:1px solid #536477;padding-top:15px;color:#a7b1bb}.project-title{display:flex;justify-content:space-between;color:var(--muted);gap:10px;margin-bottom:20px}.project-title .mono{font-size:10px}.project h3{font-size:40px;margin-bottom:24px;min-height:86px}.project>p{font-size:15px;max-width:520px}.project .tags{margin-top:28px}.background{background:#16191c}.background-grid{display:grid;grid-template-columns:1fr 1fr;gap:9vw}.education{margin-top:36px}.education>.mono{font-size:10px;color:var(--blue)}.education h3{font-size:24px;margin-top:12px;letter-spacing:-.03em}.education p{font-size:14px;margin-top:9px}.education p.education-note{font-size:12px;color:#89949e;margin-top:3px}.skill-group{border-top:1px solid var(--line);padding:25px 0}.skill-group h3{font-size:19px;letter-spacing:-.02em;display:flex;gap:20px;align-items:center;margin-bottom:14px}.skill-group h3>.mono{font-size:10px;color:var(--blue)}.skill-group p{font-size:14px;line-height:1.9;padding-left:34px}
.beyond{background:#e3e1d9;color:#202322;--muted:#5b615e;--line:#c4c6bc;--blue:#35573e;color-scheme:light}.beyond .section-kicker{color:#5b615e}.photo-grid{display:grid;grid-template-columns:1fr 1fr;gap:5vw;align-items:start}.photo-grid figure:nth-child(2){margin-top:110px}.photo-grid img{width:100%;height:auto;display:block;aspect-ratio:3/4;object-fit:cover}.photo-grid figcaption{margin-top:18px;display:flex;flex-direction:column;gap:5px}.photo-grid figcaption>.mono{font-size:10px}.photo-grid figcaption>span:last-child{font-size:13px;color:var(--muted)}.personal-grid{display:grid;grid-template-columns:1fr 1fr;gap:9vw;margin-top:100px;border-top:1px solid var(--line);padding-top:65px}.tinkering h3{font-size:44px;margin:24px 0}.tinkering>p{max-width:380px;font-size:16px}.elsewhere>a{display:flex;justify-content:space-between;gap:20px;padding:0 0 28px}.elsewhere>a+a{padding-top:28px;border-top:1px solid var(--line)}.elsewhere .mono{font-size:10px;color:#5b615e}.elsewhere h3{font-size:24px;letter-spacing:-.035em;margin:12px 0}.elsewhere p{font-size:14px}.elsewhere .address{display:block;margin-top:16px;color:#35573e}.external-arrow{font-size:27px;color:#35573e}.footer{padding-bottom:30px}.footer-top{display:flex;justify-content:space-between;align-items:center;gap:30px;margin-bottom:80px}.footer-top .mono{color:var(--muted)}.footer h2{font-size:clamp(65px,8vw,125px);margin-top:20px}.footer h2 span{color:var(--blue)}.contact-link{font-size:24px;border-bottom:1px solid #596877;padding-bottom:12px}.contact-link>span{margin-left:50px;color:var(--blue)}.footer-bottom{border-top:1px solid var(--line);padding-top:25px;display:flex;justify-content:space-between;gap:20px;font-size:9px;color:var(--muted)}
@media(min-width:768px) and (prefers-reduced-motion:no-preference){.motion-ready .hero-scroll{height:135svh}.motion-ready .hero{height:100svh;position:sticky;top:0;min-height:740px}.motion-ready .internship{opacity:.42;transition:opacity .5s}.motion-ready .internship.is-active{opacity:1}}
@media(min-width:1600px){body{max-width:2000px;margin:auto}.hero-main{grid-template-columns:1.2fr 1fr}}
@media(max-width:1100px){.hero-name h1{font-size:17vw}.hero-aside{padding-left:0}.system-art{max-width:340px}.hero-intro{margin-top:25px;font-size:27px;max-width:340px}.hero-main{gap:4vw}.current-grid,.background-grid{gap:6vw}.current-detail h3{font-size:32px}.journey-grid{gap:5vw;grid-template-columns:1fr 1fr}.internship h3{font-size:29px}.internship{min-height:85vh}.project-art{height:240px}.infra-art{padding:20px}.infra-path{gap:8px;font-size:9px}.infra-path>span{padding:12px}.diagram-caption{font-size:8px}.terminal-bottom{font-size:7px}.project h3{font-size:34px}.personal-grid{gap:6vw}.elsewhere h3{font-size:22px}.contact-link{font-size:20px}.contact-link>span{margin-left:25px}}
@media(max-width:767px){html{scroll-padding-top:90px}.site-header{height:72px;padding:0 24px}.wordmark{font-size:28px}nav{gap:19px;font-size:11px}.header-contact{display:none}.section-shell{padding:64px 24px}.section-kicker{font-size:9px;margin-bottom:38px;gap:15px}.hero{padding:105px 24px 25px;min-height:100svh}.hero-topline{font-size:9px}.hero-topline .location{display:none}.hero-main{display:flex;flex-direction:column;align-items:stretch;gap:28px;padding:38px 0 30px}.hero-name h1{font-size:clamp(100px,31vw,210px);line-height:.84;letter-spacing:-.075em}.hero-name h1>span{margin-top:7px}.hero-aside{display:grid;grid-template-columns:1.35fr 1fr;gap:12px;align-items:center}.hero-intro{font-size:17px;margin:0;line-height:1.4;letter-spacing:-.035em;grid-column:1;grid-row:1}.system-art{grid-column:2;grid-row:1;width:100%;max-width:240px}.art-label,.art-legend{display:none}.system-art svg{margin:0}.hero-bottom{gap:14px;padding-top:22px;align-items:center}.hero-bottom p{font-size:10px;line-height:1.7;max-width:205px}.scroll-cue{font-size:0;gap:0;min-width:44px;justify-content:flex-end}.scroll-cue span{font-size:26px}h2{font-size:48px}.current-grid,.background-grid{grid-template-columns:1fr;gap:40px}.eyebrow{font-size:11px;margin-bottom:20px}.section-intro{font-size:16px;margin-top:24px}.current-detail{padding-top:28px;border-top:1px solid var(--line)}.current-detail h3{font-size:31px}.current-detail p{font-size:15px}.small-label{font-size:10px}.work-list li{font-size:14px}.journey-heading{margin-bottom:35px}.journey-heading .section-kicker{margin-bottom:28px}.journey-heading>p{font-size:14px}.journey-grid{display:flex;flex-direction:column;gap:20px}.map-sticky{position:relative;top:auto;order:-1;width:100%}.map-frame{height:310px}.map-controls button{font-size:13px;padding:15px 8px;min-height:48px}.map-controls button>.mono{font-size:10px}.map-caption{font-size:8px}.map-topline{font-size:9px;padding:15px}.map-fallback{padding:25px}.internship{min-height:0;padding:36px 0 45px;scroll-margin-top:95px}.internship+.internship{padding:40px 0 0}.internship h3{font-size:30px}.internship .role{font-size:14px}.internship .tags{margin-top:22px}.story-number{margin-bottom:23px}.result>span{font-size:58px}.section-heading{display:block;margin-bottom:35px}.section-heading>p{margin-top:24px;font-size:14px}.project-grid{grid-template-columns:1fr;gap:55px}.project-art{height:225px;margin-bottom:24px}.project h3{font-size:35px;min-height:0}.project-title{margin-bottom:18px}.infra-path{font-size:10px}.infra-branch{font-size:8px}.terminal-bottom{font-size:8px}.education h3{font-size:25px}.skill-group{padding:23px 0}.skill-group h3{font-size:18px;gap:15px}.skill-group p{padding-left:29px}.beyond .section-kicker>span:last-child{display:none}.photo-grid{gap:32px;grid-template-columns:1fr}.photo-grid figure:nth-child(2){margin-top:0}.photo-grid figcaption{margin-top:13px}.personal-grid{grid-template-columns:1fr;gap:40px;margin-top:50px;padding-top:40px}.tinkering h3{font-size:38px}.elsewhere h3{font-size:24px}.footer-top{display:block;margin-bottom:50px}.footer h2{font-size:76px;margin-top:18px}.contact-link{display:inline-block;font-size:20px;margin-top:30px}.footer-bottom{flex-wrap:wrap;font-size:8px;gap:15px}.footer-bottom>span:nth-child(2){order:3;width:100%;text-transform:none;font-size:10px}.footer-bottom>a{margin-left:auto}.footer{padding-bottom:25px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.map-sticky{position:relative;top:0}.hero-name,.board-top,.board-bottom{transform:none}}
/* Full-height navigation targets remain easy to use on touch screens. */
nav a{display:flex;align-items:center;min-height:44px}
