:root{--bg: #070b16;--bg-rgb: 7 11 22;--ink: #e8edf6;--mute: #99a6bc;--card: #0d1424;--line: rgb(150 175 230 / .14);--line2: rgb(150 175 230 / .3);--acc: 122 184 250;--at: rgb(var(--acc));--ga1: .06;--ga2: .03;--grain: .035;--scrim: .7;--gutter: 72px;--pad: clamp(20px, 5vw, 88px);--pl: 28px;--mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--sans: ui-sans-serif, -apple-system, BlinkMacSystemFont, "SF Pro Display", "Inter", "Helvetica Neue", Arial, sans-serif;--ease: cubic-bezier(.22, .8, .24, 1);color-scheme:dark}:root[data-theme=light]{--bg: #f3f5fa;--bg-rgb: 243 245 250;--ink: #0b1326;--mute: #475269;--card: #fbfcfe;--line: rgb(20 40 110 / .14);--line2: rgb(20 40 110 / .3);--acc: 30 86 188;--at: rgb(var(--acc));--ga1: .045;--ga2: .022;--grain: .03;--scrim: .72;color-scheme:light}@media(max-width:719px){:root{--gutter: 34px;--pad: 16px}}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;overflow-x:clip;background:var(--bg)}html:not(.anim){scroll-behavior:smooth}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-stopped,html.menu-open{overflow:hidden}body{background:var(--bg);color:var(--ink);font:400 17px/1.55 var(--sans);overflow-x:hidden;min-width:320px;-webkit-font-smoothing:antialiased}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}ul,ol{list-style:none}h1,h2,h3,p,li{overflow-wrap:anywhere}:focus-visible{outline:2px solid rgb(var(--acc));outline-offset:3px;border-radius:3px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip{position:fixed;left:12px;top:-60px;z-index:100;background:var(--ink);color:var(--bg);padding:12px 16px;border-radius:6px}.skip:focus{top:12px}.theme-fade,.theme-fade *{transition:background-color .5s,color .5s,border-color .5s!important}.glow{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;overflow:hidden}.glow i{position:absolute;left:0;top:0;width:66vmax;height:66vmax;border-radius:50%;opacity:0;transition:opacity 1.2s ease;--c: 100 175 250;--x: 70;--y: 30;background:radial-gradient(closest-side,rgb(var(--c) / var(--ga1)),rgb(var(--c) / var(--ga2)) 45%,transparent);transform:translate3d(calc(var(--x) * 1vw - 50%),calc(var(--y) * 1vh - 50%),0)}.glow i.on{opacity:1}.anim .glow i{animation:drift 80s ease-in-out infinite alternate}.anim .glow i+i{animation-duration:90s;animation-direction:alternate-reverse}@keyframes drift{0%{translate:-1.5vw -1vh}to{translate:1.5vw 1vh}}#field{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:0;transition:opacity 1.4s ease}.gl-on #field{opacity:var(--cv, .3)}.grain{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;opacity:var(--grain);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .5  0 0 0 0 .5  0 0 0 0 .5  0 0 0 1 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}.veil{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,rgb(var(--bg-rgb) / .62),rgb(var(--bg-rgb) / .3) 42%,transparent 70%)}@media(max-width:899px){.veil{background:rgb(var(--bg-rgb) / .5)}}#trail{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:60;pointer-events:none}.nav{position:fixed;top:0;left:0;right:0;z-index:50;height:68px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 var(--pad) 0 calc(var(--gutter) - 20px)}.nav:before{content:"";position:absolute;top:0;right:0;bottom:-22px;left:0;z-index:-1;pointer-events:none;background:linear-gradient(to bottom,rgb(var(--bg-rgb) / .94) 0,rgb(var(--bg-rgb) / .94) 60%,rgb(var(--bg-rgb) / 0))}.brand{display:inline-flex;align-items:center;gap:10px;min-height:44px;font:600 15px var(--sans);letter-spacing:.01em}.brand .mark{width:8px;height:8px;border-radius:50%;background:rgb(var(--acc))}.navlinks{display:none}.navlinks a{display:inline-flex;align-items:center;height:44px;padding:0 14px;font-size:14px;color:var(--mute);transition:color .3s}.navlinks a:hover{color:var(--ink)}.tools{display:flex;gap:8px;align-items:center}.tool{height:40px;min-width:44px;display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:0 12px;cursor:pointer;font:500 11px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink);background:transparent;border:1px solid var(--line);border-radius:20px;transition:border-color .3s}.tool:hover{border-color:rgb(var(--acc) / .7)}.motion-toggle .lbl{display:none}.motion-toggle .lbl b{font-weight:600}.ico{display:inline-flex;align-items:center;gap:2px;height:12px}.ico i{width:2px;height:12px;background:currentColor;transform:scaleY(.3);transform-origin:center}.motion-toggle[aria-pressed=true] .ico i{transform:scaleY(.9)}.motion-toggle[aria-pressed=true] .ico i:nth-child(2){transform:scaleY(.5)}.menu-btn{flex-direction:column;gap:6px;padding:0}.menu-btn span{display:block;width:18px;height:2px;background:currentColor;transition:transform .4s var(--ease)}.menu-btn[aria-expanded=true] span:first-child{transform:translateY(4px) rotate(45deg)}.menu-btn[aria-expanded=true] span:last-child{transform:translateY(-4px) rotate(-45deg)}@media(min-width:900px){.navlinks{display:flex;margin-left:auto;margin-right:10px}.menu-btn{display:none}.motion-toggle .lbl{display:inline}}.menu{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;padding:110px var(--pad) 40px var(--gutter);display:flex;flex-direction:column;justify-content:center;background:rgb(var(--bg-rgb) / .97);opacity:0;visibility:hidden;transition:opacity .4s var(--ease),visibility 0s .4s}.menu.open{opacity:1;visibility:visible;transition:opacity .4s var(--ease)}.menu nav{display:flex;flex-direction:column}.menu a{display:flex;align-items:baseline;gap:16px;min-height:64px;padding:8px 0;border-bottom:1px solid var(--line);font-size:clamp(1.8rem,9vw,2.5rem);font-weight:600;letter-spacing:-.02em;transform:translateY(10px);opacity:0;transition:transform .6s var(--ease),opacity .6s}.menu.open a{transform:none;opacity:1}.menu.open a:nth-child(2){transition-delay:.04s}.menu.open a:nth-child(3){transition-delay:.08s}.menu.open a:nth-child(4){transition-delay:.12s}.menu.open a:nth-child(5){transition-delay:.16s}.menu a i{font:500 12px var(--mono);font-style:normal;color:var(--at);letter-spacing:.14em}.page{position:relative;z-index:2;overflow-x:clip;padding-left:var(--gutter);padding-right:var(--pad)}.circuit{position:absolute;left:0;top:0;width:var(--gutter);height:100%;pointer-events:none;overflow:visible}.circuit path{fill:none;stroke:rgb(var(--acc));stroke-width:1.25;stroke-linecap:square;vector-effect:non-scaling-stroke}.circuit .ghost{stroke:var(--line2);stroke-dasharray:2 5}.circuit circle{fill:var(--bg);stroke:rgb(var(--acc));stroke-width:1.25;transition:fill .4s}.circuit circle.cur{fill:rgb(var(--acc))}main{position:relative}.sec{position:relative;padding:clamp(88px,14vh,170px) 0 clamp(24px,6vh,70px) var(--pl)}.head{margin-bottom:clamp(28px,5vh,52px)}h2{font:600 clamp(2rem,4.6vw,3.5rem)/1.05 var(--sans);letter-spacing:-.03em;margin-top:14px}.prompt{position:relative;display:flex;align-items:baseline;gap:8px;font:400 12px var(--mono);letter-spacing:.02em;color:var(--mute);opacity:.62}.prompt .pd{color:rgb(var(--acc))}.prompt .pw{position:relative;display:inline-block;min-width:0}.prompt .pz{visibility:hidden;white-space:pre}.prompt .pt{position:absolute;left:0;top:0;white-space:pre}html:not(.anim) .prompt .pz{visibility:visible}html:not(.anim) .prompt .pt{display:none}.draft{display:inline-block;vertical-align:middle;margin-left:8px;padding:1px 6px;font:500 9.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mute);border:1px dashed var(--line2);border-radius:3px;cursor:help}.tag{display:inline-block;padding:3px 9px;border:1px solid var(--line);border-radius:6px;font:500 11.5px var(--mono);color:var(--mute)}.sc{display:inline}.hero{min-height:100svh;display:flex;align-items:center;position:relative;padding:96px 0 80px}.hero-in{width:100%;max-width:920px;padding-left:var(--pl)}.hero .prompt{margin-bottom:22px}h1{font:600 clamp(2.9rem,11vw,8rem)/.96 var(--sans);letter-spacing:-.045em}.nm{display:block;width:fit-content;max-width:100%;overflow:hidden;padding:.05em .12em .1em 0;margin:-.05em -.12em -.1em 0}.nm .w,.nm .i{display:block;overflow:hidden}.nm .i{overflow:visible}.role{margin-top:26px;font:500 clamp(1.05rem,2vw,1.35rem)/1.35 var(--sans);color:var(--at)}.lede{margin-top:20px;max-width:30em;font-size:clamp(1.1rem,1.8vw,1.4rem);line-height:1.42;letter-spacing:-.01em}.sub{margin-top:16px;font:500 12px var(--mono);letter-spacing:.06em;color:var(--mute)}.cta{margin-top:32px;display:flex;flex-wrap:wrap;gap:12px}.btn{position:relative;max-width:100%;display:inline-flex;align-items:center;gap:12px;min-height:46px;padding:0 18px;border-radius:3px;font:500 12.5px var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--at);cursor:pointer;background:rgb(var(--acc) / .14);border:1px solid rgb(var(--acc) / .42);transition:background .3s,border-color .3s}.btn:before{content:"$";color:rgb(var(--acc))}.btn:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;pointer-events:none;opacity:0;transition:opacity .25s,inset .25s var(--ease);background:linear-gradient(rgb(var(--acc)),rgb(var(--acc))) top left / 8px 1px no-repeat,linear-gradient(rgb(var(--acc)),rgb(var(--acc))) top left / 1px 8px no-repeat,linear-gradient(rgb(var(--acc)),rgb(var(--acc))) bottom right / 8px 1px no-repeat,linear-gradient(rgb(var(--acc)),rgb(var(--acc))) bottom right / 1px 8px no-repeat}.btn .ar{display:inline-block;font:500 19px/1 var(--sans);letter-spacing:0;color:rgb(var(--acc));transition:transform .35s var(--ease)}.btn:hover{background:rgb(var(--acc) / .26);border-color:rgb(var(--acc))}.btn:hover:after,.btn:focus-visible:after{opacity:1;top:-7px;right:-7px;bottom:-7px;left:-7px}.btn:hover .ar{transform:translate(4px)}.btn:focus-visible{outline:none}.btn.ghost{background:transparent;border-color:rgb(var(--acc) / .24);color:var(--ink)}.btn.ghost:hover{background:rgb(var(--acc) / .1);border-color:rgb(var(--acc) / .6)}.anim .rv0{opacity:0}.scan{position:fixed;z-index:30;top:0;bottom:0;left:0;width:1px;pointer-events:none;opacity:0;background:linear-gradient(to bottom,transparent,rgb(var(--acc) / .8) 20% 80%,transparent)}.work{position:relative}.work .pin{position:relative;padding:clamp(88px,15vh,170px) 0 clamp(32px,7vh,80px);margin-right:calc(var(--pad) * -1)}.work .head{padding-left:var(--pl);padding-right:var(--pad)}.hint{margin-top:14px;font:500 11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mute);opacity:.7}.vp{overflow-x:auto;overflow-y:hidden;padding-left:var(--pl);scroll-padding-left:var(--pl);scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch;outline-offset:-4px}.vp::-webkit-scrollbar{display:none}.track{display:flex;gap:20px;width:max-content;padding-right:var(--pad);align-items:stretch}.card{flex:none;width:min(82vw,350px);scroll-snap-align:start;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:14px;background:var(--card);overflow:hidden;transition:border-color .5s}.card:hover,.card.is-active{border-color:rgb(var(--acc) / .5)}.cb{padding:20px 20px 22px;display:flex;flex-direction:column;gap:10px;flex:1}.kind{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font:500 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}.kind>*{min-width:0;max-width:100%;overflow-wrap:anywhere}.kind b{color:var(--at);font-weight:600}.card h3{font:600 clamp(1.25rem,1.9vw,1.55rem)/1.15 var(--sans);letter-spacing:-.02em}.card p{color:var(--mute);font-size:15.5px;line-height:1.5}.stack{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:6px}.links{display:flex;flex-wrap:wrap;gap:0 16px}.card .links a{display:inline-flex;align-items:center;min-height:44px;color:var(--at);font-size:14px}.prog{margin:20px var(--pad) 0 var(--pl);display:flex;align-items:center;gap:16px}.pt2{font:500 11px var(--mono);letter-spacing:.12em;color:var(--mute);flex:none;font-variant-numeric:tabular-nums}.pl{flex:1;height:1px;background:var(--line2);position:relative}.pl i{position:absolute;left:0;right:0;top:-.5px;height:2px;background:rgb(var(--acc));transform-origin:left;transform:scaleX(0);transition:transform .5s var(--ease)}.work.pinned .pl i{transition:none}@media(min-width:900px){.card{width:clamp(340px,29vw,470px)}.work.pinned .pin{height:100vh;display:flex;flex-direction:column;justify-content:center;padding-top:84px;padding-bottom:40px;overflow:hidden}.work.pinned .vp{overflow:hidden;scroll-snap-type:none;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 28px);mask-image:linear-gradient(90deg,transparent 0,#000 28px)}.work.pinned .hint{display:none}.work.pinned .head{margin-bottom:clamp(16px,3vh,34px)}.work.pinned h2{font-size:clamp(1.9rem,3.6vw,3rem)}}@media(min-width:900px)and (max-height:760px){.card{width:clamp(320px,26vw,400px)}.card p{font-size:14.5px}}.media{position:relative;overflow:hidden;aspect-ratio:16 / 10;background:var(--card)}.media img{width:100%;height:100%;object-fit:cover}.media .wire{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .5s ease;mix-blend-mode:screen;pointer-events:none}:root[data-theme=light] .media .wire{mix-blend-mode:normal}.media .lbl{position:absolute;left:10px;bottom:10px;padding:3px 7px;font:500 10px var(--mono);letter-spacing:.12em;text-transform:uppercase;border-radius:4px;color:#cfe6ff;background:#050a18d1;opacity:0;transition:opacity .4s}@media(hover:hover)and (pointer:fine){.media:hover .wire,.item:focus-within .media .wire{opacity:1;filter:url(#edge)}.media:hover .lbl{opacity:1}.media:hover .wire{filter:url(#edge)}}.media.sweep .wire{opacity:.9;filter:url(#edge)}.media.sweep .lbl{opacity:1}:root[data-theme=light] .media:hover .wire,:root[data-theme=light] .media.sweep .wire{opacity:.85}.cv{display:grid;gap:clamp(36px,7vh,64px);max-width:1040px}.gh{font:500 11px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--mute);margin-bottom:22px}.cv-item{display:grid;grid-template-columns:22px 1fr;grid-template-areas:"rail when" "rail body";column-gap:18px;border-top:1px solid var(--line);padding-top:22px;transition:border-color .6s}.cv-item.is-active{border-top-color:rgb(var(--acc) / .55)}.cv-when{grid-area:when;font:500 12px var(--mono);letter-spacing:.05em;color:var(--mute);display:flex;flex-wrap:wrap;gap:2px 14px}.cv-when span{color:var(--at)}.cv-rail{grid-area:rail;position:relative}.cv-trk,.cv-fill{position:absolute;left:50%;top:6px;bottom:-24px;width:1px;margin-left:-.5px;background:var(--line2)}.cv-fill{background:rgb(var(--acc));transform-origin:top;transform:scaleY(0)}.cv-node{position:absolute;left:50%;top:3px;width:9px;height:9px;margin-left:-4.5px;border-radius:50%;background:var(--bg);border:1.25px solid var(--line2);transition:background .4s,border-color .4s}.cv-node.lit{background:rgb(var(--acc));border-color:rgb(var(--acc))}.cv-body{grid-area:body;padding:6px 0 36px}.cv-group li:last-child .cv-body{padding-bottom:6px}.cv-group li:last-child .cv-trk,.cv-group li:last-child .cv-fill{bottom:0}.cv-body h3{font:600 clamp(1.3rem,2.2vw,1.75rem)/1.15 var(--sans);letter-spacing:-.02em}.cv-role{margin-top:4px;color:var(--at);font-weight:500;font-size:16px}.cv-body p{margin-top:10px;color:var(--mute);max-width:56ch;font-size:16px}@media(min-width:760px){.cv-item{grid-template-columns:190px 22px 1fr;grid-template-areas:"when rail body";column-gap:26px}.cv-when{flex-direction:column;text-align:right;align-items:flex-end;gap:3px;padding-top:3px;font-size:12.5px}}.wins{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:18px;max-width:1040px}.win{padding:26px 24px 28px;border:1px solid var(--line);border-radius:14px;background:var(--card);transition:border-color .5s}.win.is-active{border-color:rgb(var(--acc) / .45)}.res{font:600 clamp(1.9rem,3.4vw,2.8rem)/1.05 var(--sans);letter-spacing:-.035em;color:var(--at)}.win h3,.more h3{font:600 1.12rem/1.25 var(--sans);letter-spacing:-.01em;margin-top:12px}.when{font:500 12px var(--mono);letter-spacing:.05em;color:var(--mute);margin-top:6px}.win p,.more p{margin-top:12px;color:var(--mute);font-size:15.5px;max-width:46ch}.more{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:12px 40px;margin-top:36px;max-width:1040px}.more li{padding:18px 0 20px;border-top:1px solid var(--line)}.more .when{margin:0 0 6px}.more h3{margin-top:0}.about-grid{display:grid;gap:44px;max-width:1140px}.big{font:500 clamp(1.3rem,2.5vw,2rem)/1.38 var(--sans);letter-spacing:-.018em;max-width:30em}.big .ch{--k: 1;color:color-mix(in srgb,var(--ink) calc(var(--k) * 100%),var(--mute))}.skills{margin-top:48px;display:grid;gap:24px}.sk h3{font:500 11px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--at);margin-bottom:12px}.sk ul{display:flex;flex-wrap:wrap;gap:8px}.sk li{padding:7px 12px;border:1px solid var(--line);border-radius:8px;font-size:14.5px;background:var(--card)}.photo{width:min(100%,320px)}.photo .media{aspect-ratio:900 / 1151;border-radius:14px;border:1px solid var(--line)}.edu{margin-top:26px;display:grid;gap:14px}.edu li{display:flex;flex-direction:column;border-left:1px solid rgb(var(--acc) / .6);padding-left:14px}.edu span{color:var(--mute);font-size:14.5px}@media(min-width:900px){.about-grid{grid-template-columns:minmax(0,1.5fr) minmax(260px,.7fr);gap:72px;align-items:start}.about-side{position:sticky;top:110px}}.contact{min-height:90svh;display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:80px}.contact-links{max-width:640px;width:100%;margin-top:12px}.contact-links>*{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;padding:14px 0;border-bottom:1px solid var(--line);transition:border-color .4s}.contact-links a:hover{border-bottom-color:rgb(var(--acc))}.contact-links .k{font:500 11px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--mute);flex:none}.contact-links .v{font-size:clamp(1.05rem,3vw,1.55rem);font-weight:500;letter-spacing:-.02em;text-align:right;min-width:0}.contact-links .v i{font-style:normal;color:var(--at)}.contact-links .ph .v{font-size:1rem;color:var(--mute)}@media(max-width:559px){.contact-links>*{flex-direction:column;align-items:flex-start;gap:6px;justify-content:center}.contact-links .v{text-align:left;font-size:clamp(1.05rem,5vw,1.35rem)}}@media(min-width:900px){.contact{justify-content:center}}.foot{position:relative;display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;padding:26px 0 34px var(--pl);font:400 11px var(--mono);letter-spacing:.06em;color:var(--mute);border-top:1px solid var(--line)}.foot .status{opacity:.6}@media(prefers-reduced-motion:reduce){html:not(.anim) *{transition-duration:.01s!important;animation:none!important}}.awards{margin-top:22px}.badge{display:inline-block;vertical-align:middle;margin-left:10px;padding:3px 8px;font:600 10px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:rgb(var(--acc));border:1px solid rgb(var(--acc) / .5);border-radius:999px;white-space:nowrap}.anim-media canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.anim-media{background:radial-gradient(ellipse at 50% 60%,rgb(var(--acc) / .12),transparent 70%),var(--card);cursor:pointer}.anim-media .on-lbl{opacity:.85}.duo{background:var(--card)}.duo img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.duo .d{filter:url(#duo) contrast(1.08)}:root[data-theme=light] .duo .d{filter:url(#duo-l) contrast(1.04)}.duo .c{clip-path:inset(0 100% 0 0);transition:clip-path .9s var(--ease)}.duo:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;opacity:.35;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .5  0 0 0 0 .5  0 0 0 0 .5  0 0 0 1 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}.scanbar{position:absolute;top:0;bottom:0;left:0;width:2px;z-index:3;background:rgb(var(--acc));box-shadow:0 0 18px 2px rgb(var(--acc) / .7);opacity:0;pointer-events:none;transition:left .9s var(--ease),opacity .3s}.photo:focus-visible{outline-offset:4px;border-radius:14px}@media(hover:hover)and (pointer:fine){.photo:hover .c,.photo:focus-visible .c{clip-path:inset(0 0 0 0)}.photo:hover .scanbar,.photo:focus-visible .scanbar{left:calc(100% - 2px);opacity:1}.photo:hover .scanbar,.photo:focus-visible .scanbar{animation:scanfade .9s forwards}}.duo.sweep .c{clip-path:inset(0 0 0 0)}.duo.sweep .scanbar{left:calc(100% - 2px);opacity:1;animation:scanfade .9s forwards}@keyframes scanfade{0%,80%{opacity:1}to{opacity:0}}html:not(.anim) .duo .c{transition:none}.tl{--ln: 1;display:grid;grid-auto-flow:column;grid-auto-columns:minmax(196px,1fr);overflow-x:auto;padding:4px 4px 18px;margin-right:calc(var(--pad) * -1);scrollbar-width:thin;position:relative;outline-offset:2px;max-width:calc(100% + var(--pad))}.tl-i{position:relative;padding:52px 14px 0;text-align:center}.tl-i:before{content:"";position:absolute;left:0;right:0;top:36px;height:1px;background:var(--line2);transform:scaleX(var(--ln, 1));transform-origin:left}.tl-i:first-child:before{left:50%}.tl-i:last-child:before{right:50%}.tl-y{position:absolute;top:0;left:0;right:0;text-align:center;font:500 12px var(--mono);letter-spacing:.12em;color:var(--mute)}.tl-d{position:absolute;left:50%;top:28px;width:17px;height:17px;margin-left:-8.5px;border-radius:50%;background:var(--bg);border:1.5px solid var(--line2);transition:box-shadow .4s,background .4s}.tl-i.r1 .tl-d{width:21px;height:21px;top:26px;margin-left:-10.5px;background:var(--bg);border-color:rgb(var(--acc));box-shadow:0 0 0 5px rgb(var(--acc) / .16)}.tl-i.r2 .tl-d,.tl-i.r3 .tl-d,.tl-i.r0 .tl-d{background:var(--bg);border-color:rgb(var(--acc))}.tl-i:hover .tl-d{box-shadow:0 0 0 6px rgb(var(--acc) / .22)}.tl-b{padding-top:6px}.tl-i h3{font:600 1.12rem/1.25 var(--sans);letter-spacing:-.01em}.tl-s{margin-top:6px;font:500 12px var(--mono);letter-spacing:.04em;color:var(--mute)}.tl-s b{color:var(--at);font-weight:600}.tl-i p{margin:8px auto 0;font-size:14px;color:var(--mute);max-width:26ch}.contact-grid{display:grid;gap:40px;max-width:1040px;margin-top:8px}@media(min-width:900px){.contact-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:72px;align-items:start}}.cintro{color:var(--mute);max-width:36ch;margin-bottom:18px}.cform{display:grid;grid-template-columns:1fr 1fr;gap:14px}.cform label{display:flex;flex-direction:column;gap:6px;min-width:0}.cform .full{grid-column:1 / -1}.cform label span{font:500 11px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}.cform input:not(.hp),.cform textarea{width:100%;font:400 16px var(--sans);color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;transition:border-color .3s}.cform textarea{resize:vertical;min-height:130px;max-height:360px;overflow-y:auto}.cform input:focus,.cform textarea:focus{outline:none;border-color:rgb(var(--acc))}.cform [aria-invalid=true]{border-color:#e5736b}.cform .hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.frow{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px}.cform .btn{cursor:pointer;font-family:var(--sans)}.cform .btn:disabled{opacity:.55;cursor:wait}.fstat{font-size:14px;color:var(--mute);min-width:0}.fstat.ok{color:var(--at)}.fstat.err{color:#e5736b}@media(max-width:559px){.cform{grid-template-columns:1fr}}.contact-grid .contact-links{max-width:none;margin-top:0}.contact-grid .contact-links .v{font-size:clamp(1rem,1.7vw,1.35rem);overflow-wrap:anywhere}.vid-media video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .5s ease}.vid-media.on video{opacity:1}.vid-media.on .lbl{opacity:0}.vid-media .on-lbl{opacity:.85;transition:opacity .4s}@media(max-width:899px){.about-txt,.about-side{display:contents}.about-grid .photo{order:0}.about-grid .big{order:1}.about-grid .skills{order:2;margin-top:0}.about-grid .edu{order:3;margin-top:0}}.work.pinned-s .pin{height:100vh;height:100svh;display:flex;flex-direction:column;justify-content:center;padding-top:70px;padding-bottom:22px;overflow:hidden}.work.pinned-s .vp{overflow:hidden;scroll-snap-type:none;touch-action:pan-y}.work.pinned-s .head{margin-bottom:14px}.work.pinned-s h2{font-size:clamp(1.7rem,7vw,2.4rem)}.work.pinned-s .prog{margin-top:14px}.work.pinned-s .pl i{transition:none}@media(max-width:899px)and (max-height:760px){.work.pinned-s .card p{font-size:14px;line-height:1.42}.work.pinned-s .cb{padding:14px 16px 12px;gap:8px}.work.pinned-s .media{aspect-ratio:16 / 9}}.tl-hint{display:none;margin-top:4px}.tl-hint span{display:inline-block;animation:nudge 1.6s var(--ease) infinite}@keyframes nudge{0%,to{transform:translate(0)}50%{transform:translate(6px)}}@media(max-width:899px){.awards.can-scroll .tl{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 72px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 72px),transparent);transition:-webkit-mask-position .3s}.awards.can-scroll.at-end .tl{-webkit-mask-image:none;mask-image:none}.awards.can-scroll:not(.moved):not(.at-end) .tl-hint{display:block}}@media(prefers-reduced-motion:reduce){.tl-hint span{animation:none}}
