:root{--bg:#000;--bg-2:#0a0b0c;--panel:#0e1011;--fg:#e8eaec;--muted:#8a9096;--dim:#555b61;--line:#ffffff1c;--chrome:#cfd5d9;--accent:#c9f31d;--sans:"Hanken Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"DM Mono",ui-monospace,"SF Mono",Menlo,monospace;--gutter:clamp(18px,3.4vw,44px);--ease:cubic-bezier(.2,.7,.1,1)}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-weight:300;line-height:1.55;overflow-x:hidden}body.is-loading{overflow:hidden}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}ul,ol{list-style:none}::selection{background:var(--fg);color:#000}.mono{font-family:var(--mono);letter-spacing:.09em;text-transform:uppercase;font-size:11.5px;font-weight:400}.wrap{width:100%;max-width:1320px;padding:0 var(--gutter);margin:0 auto}:focus-visible{outline:1px solid var(--chrome);outline-offset:4px;border-radius:6px}.loader{z-index:100;transition:opacity .8s var(--ease),visibility .8s;background:#000;place-items:center;display:grid;position:fixed;inset:0}.loader__mark{color:var(--fg);justify-items:center;gap:18px;display:grid}.loader__mark svg{animation:1.4s ease-in-out infinite pulse}.loader.is-done{opacity:0;visibility:hidden}@keyframes pulse{50%{opacity:.35;transform:translateY(3px)}}.nav{z-index:50;padding:18px var(--gutter);justify-content:space-between;align-items:center;gap:24px;transition:background .4s,-webkit-backdrop-filter .4s,backdrop-filter .4s;display:flex;position:fixed;top:0;left:0;right:0}.nav:before{content:"";z-index:-1;-webkit-backdrop-filter:blur(14px);opacity:0;pointer-events:none;background:#0000008c;transition:opacity .4s;position:absolute;inset:0}.nav.is-scrolled:before{opacity:1}.brand{letter-spacing:-.02em;align-items:center;gap:10px;font-size:26px;font-weight:300;display:flex}.nav__links{gap:clamp(18px,2.6vw,38px);margin-left:auto;display:flex}.nav__links a{color:var(--fg);opacity:.72;transition:opacity .25s;position:relative}.nav__links a:hover,.nav__links a.is-active{opacity:1}.pill{border:1px solid var(--line);border-radius:999px;gap:0;padding:3px;display:inline-flex}.pill span{color:var(--muted);border-radius:999px;padding:7px 14px}.pill .pill__on{color:var(--fg);background:#ffffff24}.pill:hover span:last-child{color:var(--fg)}.burger{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:50%;width:42px;height:42px;display:none;position:relative}.burger i{background:var(--fg);height:1px;transition:transform .3s;position:absolute;left:13px;right:13px}.burger i:first-child{top:17px}.burger i:last-child{top:24px}.burger[aria-expanded=true] i:first-child{transform:translateY(3.5px)rotate(45deg)}.burger[aria-expanded=true] i:last-child{transform:translateY(-3.5px)rotate(-45deg)}.hero{height:210vh;position:relative}.hero__pin{height:100svh;position:sticky;top:0;overflow:hidden}.stage{perspective:1500px;perspective-origin:50% 45%;position:absolute;inset:0}.slab{width:var(--s);height:var(--s);margin:calc(var(--s) / -2) 0 0 calc(var(--s) / -2);border-radius:calc(var(--s) * .09);transform-style:preserve-3d;will-change:transform;background:var(--g);position:absolute;top:50%;left:50%;box-shadow:inset 0 0 0 1.5px #ffffff8c,inset 0 -14px 30px #00000040,0 30px 70px #0009}.slab:after{content:"";border-radius:inherit;mix-blend-mode:soft-light;background:linear-gradient(115deg,#ffffff8c,#0000 38%);position:absolute;inset:0}.slab--light{--g:linear-gradient(140deg,#f6f9fb 0%,#c3cbd1 52%,#7e8890 100%)}.slab--mid{--g:linear-gradient(140deg,#aab3ba 0%,#5d666d 55%,#262b2f 100%)}.slab--dark{--g:linear-gradient(140deg,#262b2f 0%,#0b0c0d 60%,#000 100%);box-shadow:inset 0 0 0 1.5px #ffffff47,0 30px 70px #0009}.hero__copy{padding:0 var(--gutter);z-index:5;max-width:1500px;margin:0 auto;transition:opacity .2s linear,transform .2s linear;position:absolute;bottom:clamp(40px,8vh,90px);left:0;right:0}.hero__eyebrow{color:var(--muted);align-items:center;gap:10px;margin-bottom:22px;display:flex}.dot{background:var(--accent);border-radius:50%;width:7px;height:7px;animation:2s infinite ping;box-shadow:0 0 #c9f31d99}@keyframes ping{70%{box-shadow:0 0 0 10px #c9f31d00}to{box-shadow:0 0 #c9f31d00}}h1,h2,h3,h4{letter-spacing:-.03em;font-weight:200;line-height:1.04}h1{color:#d9dde0;font-size:clamp(44px,7.4vw,112px)}.hero__row{flex-wrap:wrap;align-items:flex-end;gap:clamp(24px,4vw,64px);margin-top:clamp(24px,4vh,44px);display:flex}.hero__sub{max-width:460px;color:var(--chrome);opacity:.88;font-size:clamp(15px,1.25vw,18px)}.scrollhint{right:var(--gutter);writing-mode:vertical-rl;color:var(--muted);z-index:5;align-items:center;gap:12px;display:flex;position:absolute;bottom:clamp(40px,8vh,90px)}.scrollhint:after{content:"";background:linear-gradient(var(--muted),transparent);width:1px;height:46px;animation:2s infinite drip}@keyframes drip{0%{transform-origin:top;transform:scaleY(0)}50%{transform-origin:top;transform:scaleY(1)}51%{transform-origin:bottom}to{transform-origin:bottom;transform:scaleY(0)}}.btn{background:var(--chrome);color:#0a0b0c;transition:transform .35s var(--ease),background .25s,color .25s,border-color .25s;border:1px solid #0000;border-radius:9px;align-items:center;gap:10px;padding:16px 26px;display:inline-flex}.btn:hover{background:#fff;transform:translateY(-2px)}.btn--ghost{color:var(--fg);border-color:var(--line);background:0 0}.btn--ghost:hover{color:#fff;background:#ffffff14;border-color:#ffffff4d}.section{padding:clamp(80px,13vw,180px) 0 0}.section__head{margin-bottom:clamp(40px,6vw,84px)}.label{color:var(--muted);margin-bottom:26px}h2{color:#d9dde0;font-size:clamp(34px,5.2vw,76px)}.reveal{opacity:0;transition:opacity 1s var(--ease),transform 1s var(--ease);transform:translateY(34px)}.reveal.is-in{opacity:1;transform:none}.stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);z-index:2;background:#000;margin-top:-1px;position:relative}.stats__grid{grid-template-columns:repeat(4,1fr);display:grid}.stat{border-left:1px solid var(--line);gap:10px;padding:clamp(28px,4vw,56px) 0 clamp(28px,4vw,56px) clamp(16px,2.4vw,34px);display:grid}.stat:first-child{border-left:0;padding-left:0}.stat b{letter-spacing:-.04em;color:#d9dde0;font-size:clamp(44px,6vw,92px);font-weight:200;line-height:1}.stat span{color:var(--muted)}.do{border-top:1px solid var(--line)}.do__item{border-bottom:1px solid var(--line);transition:padding .5s var(--ease),background .4s;grid-template-columns:80px minmax(0,1fr) minmax(0,1.1fr);align-items:baseline;gap:clamp(16px,3vw,48px);padding:clamp(28px,3.6vw,52px) 0;display:grid}.do__item:hover{background:linear-gradient(90deg,#ffffff0d,#0000);padding-left:18px}.do__item h3{font-size:clamp(26px,3vw,44px)}.do__item p{color:var(--muted);max-width:560px}.idx{color:var(--dim)}.projects{gap:clamp(40px,6vw,96px);display:grid}.project{grid-template-columns:1.25fr 1fr;align-items:center;gap:clamp(24px,4vw,64px);display:grid}.project--flip{grid-template-columns:1fr 1.25fr}.project--flip .project__visual{order:2}.project__visual{aspect-ratio:16/11;border:1px solid var(--line);background:radial-gradient(120% 90% at 20% 0%,#ffffff17,transparent 55%), linear-gradient(#ffffff08 1px,transparent 1px) 0 0/34px 34px, linear-gradient(90deg,#ffffff08 1px,transparent 1px) 0 0/34px 34px,var(--panel);transition:border-color .4s,transform .8s var(--ease);border-radius:18px;place-items:center;padding:clamp(14px,2.4vw,34px);display:grid;position:relative;overflow:hidden}.project:hover .project__visual{border-color:#ffffff47}.project__body h3{margin:14px 0 18px;font-size:clamp(28px,3.4vw,50px)}.project__body p{color:var(--muted);max-width:520px}.meta{color:var(--muted)}.tags{flex-wrap:wrap;gap:8px;margin-top:24px;display:flex}.tags li{border:1px solid var(--line);color:var(--chrome);border-radius:999px;padding:6px 12px;font-size:10.5px}.link{border-bottom:1px solid var(--line);margin-top:22px;padding-bottom:3px;transition:border-color .3s;display:inline-block}.link:hover{border-color:var(--fg)}.node{text-align:center;color:var(--fg);background:#00000073;border:1px solid #ffffff38;border-radius:10px;padding:10px 12px;font-size:clamp(11px,1.05vw,14px);font-weight:400;line-height:1.25;display:inline-block}.node em{color:var(--muted);font-size:.78em;font-style:normal;font-weight:300}.node--hi{color:#0a0b0c;background:linear-gradient(140deg,#e9eef1,#a9b2b8);border-color:#0000}.node--hi em{color:#3a4146}.badge{border:1px solid var(--line);color:var(--accent);background:#00000080;border-radius:999px;padding:6px 12px;position:absolute;bottom:16px;right:16px}.box{text-align:center;background:#ffffff0a;border:1px solid #fff3;border-radius:8px;flex:1;place-items:center;padding:10px 6px;font-size:clamp(10px,.95vw,12.5px);line-height:1.25;display:grid}.box--ghost{color:var(--muted);border-style:dashed}.flow{justify-content:center;align-items:center;gap:0;width:100%;display:flex}.flow i{background:linear-gradient(90deg,transparent,var(--chrome));flex:0 0 clamp(10px,1.8vw,26px);height:1px;position:relative}.flow i:after{content:"";border:3px solid #0000;border-left:5px solid var(--chrome);position:absolute;top:-3px;right:0}.flow .node{flex:1 1 0;min-width:0;padding:10px 4px}.flow .node em{display:block}.cloud{justify-items:center;gap:12px;width:100%;display:grid}.cloud__top{align-items:center;gap:0;display:flex}.cloud__top i.v{background:var(--chrome);width:22px;height:1px}.cloud__vpc{border:1px dashed #ffffff59;border-radius:14px;gap:10px;width:100%;padding:14px;display:grid;position:relative}.cloud__vpc b{color:var(--muted);font-size:10px;font-weight:400}.cloud__row{gap:10px;display:flex}.cf{color:var(--accent);border-color:#c9f31d66;padding:8px 12px;font-size:10px}.jitsi{justify-items:center;gap:18px;width:100%;display:grid}.jitsi__nodes{gap:10px;width:100%;display:flex}.jitsi__mon{color:var(--muted);gap:10px;font-size:10px;display:flex}.jitsi__mon span{border:1px solid var(--line);border-radius:999px;padding:5px 10px}.jitsi__mon span:first-child{color:#ff9f6b}.jitsi__mon span:nth-child(2){color:#ffb347}.vpn{align-items:center;gap:0;width:100%;display:flex}.vpn .node{flex:none;padding:12px 10px}.tunnel{flex:1;justify-items:center;gap:8px;padding:0 6px;display:grid}.tunnel b{color:var(--muted);text-align:center;font-size:9px;font-weight:400}.tunnel s{background:repeating-linear-gradient(90deg,var(--chrome) 0 6px,transparent 6px 12px);opacity:.7;border-radius:99px;width:100%;height:8px;animation:1.2s linear infinite march;display:block}@keyframes march{to{background-position:12px 0}}.metrics{grid-template-columns:repeat(3,1fr);gap:14px;width:100%;display:grid}.metrics div{border:1px solid var(--line);text-align:center;background:#0006;border-radius:14px;padding:clamp(14px,2.4vw,30px) 10px}.metrics b{letter-spacing:-.04em;color:var(--accent);font-size:clamp(34px,5vw,70px);font-weight:200;line-height:1;display:block}.metrics small{color:var(--muted);font-size:.45em}.metrics span{color:var(--muted);margin-top:10px;display:block}.more__label{margin-top:clamp(70px,10vw,140px)}.more{border-top:1px solid var(--line);margin-bottom:40px}.more__row{border-bottom:1px solid var(--line);transition:padding .5s var(--ease),background .4s;grid-template-columns:minmax(150px,.7fr) minmax(0,1fr) minmax(0,1.5fr) 40px;align-items:baseline;gap:clamp(12px,2.4vw,40px);padding:26px 0;display:grid}.more__row:hover{background:linear-gradient(90deg,#ffffff0f,#0000);padding-left:16px}.more__row span.mono{color:var(--muted)}.more__row h4{font-size:clamp(22px,2.2vw,32px)}.more__row p{color:var(--muted);font-size:15px}.arrow{text-align:right;color:var(--muted);transition:transform .4s var(--ease),color .3s}.more__row:hover .arrow{color:var(--fg);transform:translate(4px,-4px)}.timeline{border-top:1px solid var(--line)}.job{border-bottom:1px solid var(--line);grid-template-columns:minmax(210px,.55fr) 1.5fr;gap:clamp(20px,4vw,64px);padding:clamp(28px,3.6vw,52px) 0;display:grid}.job__when{color:var(--fg);line-height:1.8}.job__when span{color:var(--muted)}.job h3{margin-bottom:18px;font-size:clamp(26px,3vw,42px)}.job li{color:var(--muted);max-width:720px;padding:5px 0 5px 22px;position:relative}.job li:before{content:"";background:var(--chrome);width:10px;height:1px;position:absolute;top:.95em;left:0}.awards{grid-template-columns:repeat(6,1fr);gap:clamp(14px,1.8vw,26px);display:grid}.award{cursor:zoom-in;transition:transform .6s var(--ease);grid-column:span 2;grid-template-rows:auto 1fr;gap:18px;display:grid}.award--wide{grid-column:span 6;grid-template-rows:none;grid-template-columns:1.35fr 1fr;align-items:center;gap:clamp(20px,4vw,64px)}.award--text{cursor:default}.award__img{border:1px solid var(--line);aspect-ratio:3/4;background:#111;border-radius:16px;position:relative;overflow:hidden}.award--wide .award__img{aspect-ratio:3/2}.award__img img{object-fit:cover;width:100%;height:100%;transition:transform 1.1s var(--ease)}.award:hover .award__img img{transform:scale(1.04)}.award:hover .award__img{border-color:#ffffff59}.award__img--text{background:radial-gradient(80% 60% at 30% 0,#ffffff24,#0000 60%),linear-gradient(#ffffff08 1px,#0000 1px) 0 0/34px 34px,linear-gradient(90deg,#ffffff08 1px,#0000 1px) 0 0/34px 34px,#0c0d0e;place-items:center;display:grid}.award__img--text b{letter-spacing:-.04em;color:#d9dde0;text-align:center;font-size:clamp(40px,7vw,100px);font-weight:200;line-height:.95}.award figcaption span{color:var(--muted)}.award figcaption h3{margin:10px 0 12px;font-size:clamp(24px,2.5vw,38px)}.award figcaption p{color:var(--muted);max-width:480px;font-size:15px}.award:not(.award--wide):not(.award--text) figcaption h3{font-size:clamp(22px,1.9vw,28px)}.certs{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(3,1fr);display:grid}.cert{border-right:1px solid var(--line);border-bottom:1px solid var(--line);align-content:space-between;gap:12px;min-height:150px;padding:clamp(22px,2.4vw,34px);transition:background .4s;display:grid}.cert:hover{background:#ffffff0a}.cert span{color:var(--muted)}.cert h4{letter-spacing:-.02em;font-size:clamp(19px,1.7vw,25px);font-weight:300;line-height:1.2}.cert:last-child{grid-column:1/-1;min-height:0}.cert--hi{background:linear-gradient(160deg,#ffffff14,#0000 70%)}.cert--hi h4{font-size:clamp(22px,2.1vw,32px);font-weight:200}.cert--hi span{color:var(--accent)}.skills{background:var(--line);border:1px solid var(--line);border-radius:16px;grid-template-columns:repeat(4,1fr);gap:1px;display:grid;overflow:hidden}.skill{background:#000;align-content:start;gap:14px;padding:clamp(22px,2.4vw,34px);display:grid}.skill:first-child{grid-column:span 2}.skill:last-child{grid-column:1/-1}.skill h4{color:var(--muted);font-weight:400}.skill p{color:var(--chrome);font-size:15.5px;line-height:1.7}.about__grid{grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);align-items:start;gap:clamp(30px,6vw,100px);display:grid}.about__photo{border:1px solid var(--line);aspect-ratio:1;border-radius:18px;position:sticky;top:90px;overflow:hidden}.about__photo img{object-fit:cover;filter:grayscale()contrast(1.05);width:100%;height:100%}.about__photo span{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0009;border-radius:999px;padding:6px 12px;position:absolute;bottom:14px;left:14px}.about h2{margin-bottom:34px;font-size:clamp(30px,4vw,58px)}.about__text>p:not(.label){color:var(--muted);max-width:640px;margin-bottom:20px;font-size:clamp(16px,1.3vw,19px)}.edu{border-top:1px solid var(--line);gap:8px;margin-top:44px;padding-top:26px;display:grid}.edu span{color:var(--muted)}.edu h4{font-size:clamp(22px,2vw,30px)}.edu p{color:var(--muted)}.contact{border-top:1px solid var(--line);background:radial-gradient(70% 60% at 50% 100%,#ffffff1a,#0000 70%);margin-top:clamp(80px,12vw,160px);padding:clamp(100px,16vw,230px) 0 0}.contact h2{margin-bottom:clamp(30px,5vw,60px);font-size:clamp(40px,7.4vw,112px)}.contact__row{flex-wrap:wrap;gap:12px;display:flex}.footer{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:16px;padding-top:clamp(80px,12vw,170px);padding-bottom:30px;font-size:10.5px;display:flex}.footer a:hover{color:var(--fg)}.lightbox{z-index:90;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#000000eb;place-items:center;padding:60px 20px 20px;animation:.3s fade;display:grid;position:fixed;inset:0}.lightbox[hidden]{display:none}.lightbox img{object-fit:contain;border-radius:12px;max-width:min(1100px,100%);max-height:100%;box-shadow:0 40px 120px #000c}.lightbox__close{top:18px;right:var(--gutter);color:var(--fg);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:999px;padding:9px 16px;position:absolute}@keyframes fade{0%{opacity:0}}@media (width<=980px){.nav__links{opacity:0;pointer-events:none;padding:0 var(--gutter);background:#000;flex-direction:column;justify-content:center;gap:26px;margin:0;font-size:15px;transition:opacity .4s;position:fixed;inset:0}.nav__links a{font-size:34px;font-family:var(--sans);letter-spacing:-.02em;text-transform:none;font-weight:200}.nav.is-open .nav__links{opacity:1;pointer-events:auto}.nav .pill{margin-left:auto}.burger{z-index:2;display:block;position:relative}.brand,.nav .pill{z-index:2;position:relative}.project,.project--flip{grid-template-columns:1fr}.project--flip .project__visual{order:0}.do__item{grid-template-columns:1fr}.do__item:hover,.more__row:hover{padding-left:0}.more__row{grid-template-columns:1fr 30px}.more__row span.mono{grid-column:1/-1}.more__row p{grid-column:1}.more__row .arrow{grid-area:2/2}.job{grid-template-columns:1fr;gap:10px}.about__grid{grid-template-columns:1fr}.about__photo{max-width:340px;position:relative;top:0}.skills{grid-template-columns:repeat(2,1fr)}.skill:first-child{grid-column:1/-1}.certs{grid-template-columns:repeat(2,1fr)}.cert:last-child{grid-column:auto;min-height:150px}.award--wide{grid-template-columns:1fr}.awards{grid-template-columns:repeat(2,1fr)}.award,.award--text{grid-column:span 1}.award--wide{grid-column:span 2}}@media (width<=640px){.nav{gap:10px}.brand{gap:8px;font-size:20px}.brand svg{width:22px;height:22px}.pill span{padding:6px 10px}.stats__grid{grid-template-columns:repeat(2,1fr)}.stat:nth-child(3){border-left:0;padding-left:0}.stat{border-top:1px solid var(--line)}.stat:nth-child(-n+2){border-top:0}.awards{grid-template-columns:1fr}.award,.award--wide,.award--text{grid-column:span 1}.award__img{aspect-ratio:4/5}.award--wide .award__img{aspect-ratio:3/2}.certs,.skills{grid-template-columns:1fr}.skill:first-child,.skill:last-child{grid-column:auto}.scrollhint{display:none}.flow{flex-wrap:wrap;justify-content:flex-start;gap:8px}.flow i{display:none}.flow .node{flex:28%}.project__visual{aspect-ratio:auto;min-height:260px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transition:none;transform:none}.tunnel s,.dot,.scrollhint:after,.loader__mark svg{animation:none}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip{z-index:200;background:var(--chrome);color:#0a0b0c;transition:top .25s var(--ease);border-radius:9px;padding:12px 18px;font-size:14px;position:fixed;top:-80px;left:16px}.skip:focus{top:16px}.faq{border-top:1px solid var(--line)}.faq__item{border-bottom:1px solid var(--line)}.faq__item summary{cursor:pointer;justify-content:space-between;align-items:center;gap:24px;padding:clamp(22px,2.6vw,34px) 0;list-style:none;display:flex}.faq__item summary::-webkit-details-marker{display:none}.faq__item summary h3{letter-spacing:-.02em;transition:padding .5s var(--ease);font-size:clamp(20px,2.2vw,32px);font-weight:200;line-height:1.2}.faq__item summary:hover h3{padding-left:14px}.faq__icon{flex:0 0 22px;height:22px;position:relative}.faq__icon:before,.faq__icon:after{content:"";background:var(--chrome);height:1px;transition:transform .4s var(--ease);position:absolute;top:50%;left:0;right:0}.faq__icon:after{transform:rotate(90deg)}.faq__item[open] .faq__icon:after{transform:rotate(0)}.faq__item p{color:var(--muted);max-width:760px;padding:0 0 clamp(22px,2.6vw,34px);font-size:clamp(16px,1.25vw,18px)}.faq__item[open] summary h3{color:#fff}
