.bsteps{flex-wrap:wrap;gap:6px;margin:0 52px 22px 0;padding:0;list-style:none;display:flex}.bsteps li{color:var(--faint);border:1px solid var(--line);border-radius:999px;align-items:center;gap:8px;padding:6px 12px 6px 6px;font-size:13px;display:inline-flex}.bsteps li span{width:20px;height:20px;font:600 11px/1 var(--mono);background:var(--surface-2);color:var(--muted);border-radius:50%;place-items:center;display:grid}.bsteps li.is-on{color:var(--text);border-color:var(--line-strong)}.bsteps li.is-on span{background:var(--accent);color:var(--accent-ink)}.bsteps li.is-done span{background:var(--text);color:var(--bg)}.bview{animation:bviewIn .45s var(--ease) both}@keyframes bviewIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.bhead{letter-spacing:-.02em;margin-bottom:16px;font-size:1.25rem;font-weight:600}.btypes{gap:10px;display:grid}.btype{text-align:left;border:1px solid var(--line-strong);background:var(--surface);width:100%;color:var(--text);font:inherit;cursor:pointer;transition:border-color .2s ease, transform .3s var(--ease), background-color .2s ease;animation:bviewIn .5s var(--ease) both;animation-delay:calc(var(--i,0) * 70ms);border-radius:14px;grid-template-columns:auto 1fr auto;align-items:center;gap:18px;padding:16px 18px;display:grid}.btype:hover{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 5%, var(--surface));transform:translateY(-2px)}.btype__dur{background:var(--surface-2);width:58px;height:58px;font:600 1.35rem/1 var(--font);letter-spacing:-.02em;border-radius:12px;place-items:center;display:grid}.btype__dur small{font:500 10px/1 var(--mono);color:var(--faint);text-transform:uppercase;letter-spacing:.08em;margin-top:-8px}.btype__body{gap:4px;min-width:0;display:grid}.btype__body strong{font-size:16px;font-weight:600}.btype__body span{color:var(--muted);font-size:14px;line-height:1.45}.btype__go{color:var(--faint);transition:transform .3s var(--ease), color .2s ease}.btype:hover .btype__go{color:var(--accent);transform:translate(4px)}.cal__tz{color:var(--faint);align-items:center;gap:6px;margin-top:14px;font-size:13px;display:flex}.times__count{color:var(--faint);margin:-8px 0 12px;font-size:13px}.time{animation:bviewIn .4s var(--ease) both;animation-delay:calc(var(--i,0) * 25ms)}.bm__summaryType{font:500 11.5px/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin-bottom:6px;display:inline-block}.bm__form select{width:100%;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px 14px;font-size:16px}.bm__form select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.bm__fine{color:var(--faint);font-size:13px}.bm__check{background:0 0;width:60px;height:60px;padding:0}.bm__check svg{fill:none;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;width:60px;height:60px}.bm__check circle{stroke:var(--accent);stroke-dasharray:151;stroke-dashoffset:151px;animation:drawCheck .7s var(--ease) forwards}.bm__check path{stroke:var(--accent);stroke-dasharray:36;stroke-dashoffset:36px;animation:drawCheck .45s var(--ease) .55s forwards}@keyframes drawCheck{to{stroke-dashoffset:0}}.bm__when{background:var(--surface-2);border-radius:14px;width:100%;margin:10px 0 4px;padding:14px 16px}.bm__link{border:1px solid var(--line-strong);border-radius:12px;align-items:center;gap:10px;width:100%;margin:6px 0;padding:8px 8px 8px 14px;display:flex}.bm__link .ico{color:var(--accent)}.bm__link a{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:500 14px/1.3 var(--mono);flex:1;overflow:hidden}.bm__link a:hover{color:var(--accent)}.bm__link .iconBtn{width:36px;height:36px}.iconBtn.is-copied{color:#3fb96b;border-color:#3fb96b}.mg{place-items:center;min-height:100vh;padding:40px 16px;display:grid}.mg__card{border:1px solid var(--line-strong);background:var(--surface);border-radius:20px;width:min(860px,100%);overflow:hidden;box-shadow:0 30px 80px #00000040}.mg__top{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:20px 24px;display:flex}.mg__top .brand__mark{flex:none}.mg__top a{font-weight:600}.mg__body{padding:28px}.mg__status{font:500 12px/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;background:var(--surface-2);color:var(--muted);border-radius:999px;align-items:center;gap:8px;padding:5px 12px;display:inline-flex}.mg__status.is-confirmed{color:#3fb96b;background:#3fb96b26}.mg__status.is-cancelled{color:#e5736f;background:#d9534f26}.mg__title{letter-spacing:-.03em;margin:14px 0 6px;font-size:clamp(1.5rem,1.1rem + 1.4vw,2.1rem);line-height:1.15}.mg__actions{flex-wrap:wrap;gap:10px;margin-top:22px;display:flex}.mg__cancel{gap:14px;max-width:520px;margin-top:22px;display:grid}.btn--danger{color:#fff;background:#c9433e}.btn--danger:hover{background:#a8322e}@media (max-width:860px){.bsteps{margin-right:44px}.btype{grid-template-columns:auto 1fr;gap:14px;padding:14px}.btype__go{display:none}.btype__dur{width:50px;height:50px;font-size:1.15rem}.mg__body{padding:20px}}@media (prefers-reduced-motion:reduce){.bview,.btype,.time{animation:none}.bm__check circle,.bm__check path{stroke-dashoffset:0;animation:none}}.bm__done{grid-template-columns:minmax(0,1fr);width:100%}
:root{--ease-out:cubic-bezier(.16,1,.3,1);--ease-io:cubic-bezier(.76,0,.24,1);--blob-a:color-mix(in srgb, var(--accent) 38%, transparent);--blob-b:#4c7be242;--blob-c:#c24ce229}html[data-theme=light]{--blob-a:color-mix(in srgb, var(--accent) 22%, transparent);--blob-b:#4c7be224;--blob-c:#c24ce217}.nav{transition:transform .7s var(--ease-out) .15s, border-color .25s ease}html.is-loading .nav{transform:translateY(-100%)}.nav.nav--hidden{transition-delay:0s;transform:translateY(-100%)}.bgfx{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.bgfx__blob{will-change:transform;border-radius:50%;width:60vmax;height:60vmax;position:absolute}.bgfx__blob--a{background:radial-gradient(closest-side, var(--blob-a), transparent);animation:22s ease-in-out infinite alternate blobA;top:-30vmax;right:-18vmax}.bgfx__blob--b{background:radial-gradient(closest-side, var(--blob-b), transparent);animation:26s ease-in-out infinite alternate blobB;bottom:-34vmax;left:-22vmax}.bgfx__blob--c{background:radial-gradient(closest-side, var(--blob-c), transparent);width:40vmax;height:40vmax;animation:30s ease-in-out infinite alternate blobC;top:30%;left:40%}@keyframes blobA{to{transform:translate(-14vmax,18vmax)scale(1.15)}}@keyframes blobB{to{transform:translate(18vmax,-14vmax)scale(.9)}}@keyframes blobC{to{transform:translate(-30vmax,-10vmax)scale(1.3)}}.bgfx__grid{background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);opacity:.45;-webkit-mask-image:radial-gradient(520px circle at var(--mx,50%) var(--my,30%), #000, transparent 70%);-webkit-mask-image:radial-gradient(520px circle at var(--mx,50%) var(--my,30%), #000, transparent 70%);mask-image:radial-gradient(520px circle at var(--mx,50%) var(--my,30%), #000, transparent 70%);background-size:64px 64px;position:absolute;inset:0}.bgfx__spot{background:radial-gradient(600px circle at var(--mx,50%) var(--my,30%), var(--accent-soft), transparent 60%);position:absolute;inset:0}.grain{z-index:150;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:1s steps(6,end) infinite grain;position:fixed;inset:-50%}html[data-theme=light] .grain{opacity:.07}@keyframes grain{0%{transform:translate(0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}60%{transform:translate(-2%,-1%)}80%{transform:translate(3%,3%)}to{transform:translate(0)}}.progress{z-index:70;background:linear-gradient(90deg, var(--accent), color-mix(in srgb, var(--accent) 40%, #fff));transform-origin:0;height:2px;transform:scaleX(var(--sp,0));pointer-events:none;position:fixed;top:0;left:0;right:0}.cursor,.cursor-dot{z-index:180;pointer-events:none;mix-blend-mode:difference;opacity:0;border-radius:50%;transition:opacity .3s;position:fixed;top:0;left:0}.cursor{border:1px solid #fff;width:40px;height:40px;margin:-20px 0 0 -20px}.cursor__ring{transition:transform .35s var(--ease-out);background:#fff;border-radius:50%;position:absolute;inset:0;transform:scale(0)}.cursor-dot{background:#fff;width:6px;height:6px;margin:-3px 0 0 -3px}html.cursor-on .cursor,html.cursor-on .cursor-dot{opacity:1}html.cursor-hover .cursor__ring{transform:scale(1)}html.cursor-hover .cursor-dot,html.cursor-text .cursor{opacity:0}html.cursor-down .cursor{width:30px;height:30px;margin:-15px 0 0 -15px;transition:opacity .3s,width .2s,height .2s,margin .2s}html.modal-open .cursor,html.modal-open .cursor-dot{opacity:0!important}html.has-cursor:not(.modal-open) body,html.has-cursor:not(.modal-open) a,html.has-cursor:not(.modal-open) button,html.has-cursor:not(.modal-open) label{cursor:none}html.has-cursor input,html.has-cursor textarea{cursor:text}html.has-cursor:not(.modal-open) .chat{cursor:auto}html.has-cursor:not(.modal-open) .chat button,html.has-cursor:not(.modal-open) .chat a{cursor:pointer}html.has-cursor:not(.modal-open) .chat textarea{cursor:text}html.cursor-text .cursor-dot{opacity:0}.reveal{filter:blur(6px);transition:opacity .9s var(--ease-out), transform .9s var(--ease-out), filter .9s var(--ease-out);transition-delay:var(--rd,0s);transform:translateY(28px)}.reveal.show{filter:none}html.is-loading .hero .reveal{opacity:0;filter:blur(6px);transform:translateY(28px)}.w{vertical-align:top;margin-bottom:-.12em;padding-bottom:.12em;display:inline-block;overflow:hidden}.w__i{transform-origin:0 100%;transition:transform 1.1s var(--ease-out);transition-delay:calc(var(--i,0) * 45ms + var(--wd,0s));display:inline-block;transform:translateY(115%)rotate(4deg)}.reveal.show .w__i{transform:none}html.is-loading .hero .w__i{transform:translateY(115%)rotate(4deg)}html.is-loading .hero .reveal.is-split,.reveal.is-split{opacity:1;filter:none;transform:none}.hero__title em{background:linear-gradient(100deg, var(--accent) 20%, color-mix(in srgb, var(--accent) 35%, #fff) 40%, var(--accent) 60%);-webkit-text-fill-color:transparent;background-size:250% 100%;-webkit-background-clip:text;background-clip:text;animation:5s ease-in-out infinite shimmer}html[data-theme=light] .hero__title em{background-image:linear-gradient(100deg, var(--accent) 20%, color-mix(in srgb, var(--accent) 50%, #ffd27a) 40%, var(--accent) 60%)}@keyframes shimmer{0%,to{background-position:100% 0}50%{background-position:0 0}}.portrait{transform-style:preserve-3d;will-change:transform}.portrait.reveal{clip-path:inset(14% 10% 14% 10% round var(--r))}.portrait.reveal.show{clip-path:inset(0 0 0 0 round var(--r));transition:opacity 1s var(--ease-out), clip-path 1.5s var(--ease-io), transform .35s ease-out, filter 1s var(--ease-out);transition-delay:var(--rd,0s)}html.is-loading .hero .portrait.reveal{clip-path:inset(14% 10% 14% 10% round var(--r))}.portrait img{translate:0 var(--py,0px);transition:transform 2s var(--ease-out)}html.is-loading .portrait img{transform:scale(2.5)}.portrait:after{content:"";pointer-events:none;background:radial-gradient(420px circle at var(--gx,50%) var(--gy,0%), #ffffff2e, transparent 50%);opacity:0;transition:opacity .4s;position:absolute;inset:0}.portrait:hover:after{opacity:1}.portrait__cap{transform:translateZ(30px)}.glow{isolation:isolate;position:relative}.glow:before,.glow:after{content:"";border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .4s;position:absolute;inset:0}.glow:before{z-index:-1;background:radial-gradient(380px circle at var(--mx,50%) var(--my,50%), var(--accent-soft), transparent 45%)}.glow:after{background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%), var(--accent), transparent 60%);-webkit-mask-composite:xor;padding:1px;inset:-1px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.glow:hover:before,.glow:hover:after{opacity:1}.project.reveal.show:hover{transform:translateY(-4px)}.skillGroup.reveal.show{transition:opacity .9s var(--ease-out), transform .45s var(--ease-out), filter .9s var(--ease-out), border-color .25s ease;transition-delay:var(--rd,0s)}.skillGroup.reveal.show:hover{border-color:var(--line-strong);transform:translateY(-4px)}.skillGroup__list li{opacity:0;transition:opacity .5s var(--ease-out), transform .5s var(--ease-out), background-color .2s ease, color .2s ease;transition-delay:calc(var(--i,0) * 45ms + .25s);transform:translateY(10px)scale(.92)}.skillGroup.show .skillGroup__list li{opacity:1;transform:none}.skillGroup.show .skillGroup__list li:hover{background:var(--accent);color:var(--accent-ink);transition-delay:0s;transform:translateY(-2px)}.stack li{transition:background-color .2s,color .2s}.stack li:hover{background:var(--accent-soft);color:var(--accent)}.timeline{--tl:0;position:relative}.timeline:before,.timeline:after{content:"";width:1px;position:absolute;top:6px;bottom:0;left:196px}.timeline:before{background:var(--line)}.timeline:after{background:linear-gradient(var(--accent), color-mix(in srgb, var(--accent) 20%, transparent));transform-origin:top;transform:scaleY(var(--tl))}.job{position:relative}.job:before{content:"";z-index:1;background:var(--bg);border:1px solid var(--line-strong);border-radius:50%;width:9px;height:9px;transition:background-color .5s,border-color .5s,box-shadow .5s;position:absolute;top:42px;left:192px}.job:first-child:before{top:10px}.job.lit:before{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 5px var(--accent-soft)}.job__body{padding-left:20px}.btn--accent{position:relative;overflow:hidden}.btn--accent:after{content:"";pointer-events:none;background:linear-gradient(100deg,#0000,#ffffff73,#0000);width:40%;animation:4.5s ease-in-out infinite shine;position:absolute;top:0;bottom:0;left:-60%;transform:skew(-20deg)}@keyframes shine{0%,70%{left:-60%}to{left:130%}}.magnetic{transition:transform .45s var(--ease-out), background-color .2s ease, border-color .2s ease, color .2s ease, box-shadow .2s ease}.magnetic>*{pointer-events:none}.brand__mark{transition:transform .6s var(--ease-out), background-color .3s ease}.brand:hover .brand__mark{background:var(--accent);color:var(--accent-ink);transform:rotate(-12deg)scale(1.08)}.nav__links{position:relative}.nav__pill{background:var(--surface-2);opacity:0;width:0;height:100%;transition:transform .5s var(--ease-out), width .5s var(--ease-out), opacity .3s ease;border-radius:999px;position:absolute;top:0;left:0}.nav__link{z-index:1;position:relative}.nav__links.has-pill .nav__link.active{background:0 0}.marquee{border-top:1px solid var(--line);padding:26px 0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000);mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000)}.marquee__track{width:max-content;animation:38s linear infinite marquee;display:flex}.marquee:hover .marquee__track{animation-play-state:paused}.marquee__group{align-items:center;gap:36px;padding-right:36px;display:flex}.marquee__item{letter-spacing:-.03em;white-space:nowrap;color:#0000;-webkit-text-stroke:1px var(--line-strong);font-size:clamp(1.6rem,1rem + 2.2vw,3rem);font-weight:600;transition:color .3s,-webkit-text-stroke-color .3s}.marquee__item:nth-child(4n+1){color:var(--text);-webkit-text-stroke:0}.marquee__item:hover{color:var(--accent);-webkit-text-stroke-color:var(--accent)}.marquee__star{color:var(--accent);font-size:1.4rem;animation:6s linear infinite spin;display:inline-block}@keyframes marquee{to{transform:translate(-50%)}}@keyframes spin{to{transform:rotate(360deg)}}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}@media (max-width:640px){.timeline:before,.timeline:after,.job:before{display:none}.job__body{padding-left:0}.bgfx__grid{background-size:44px 44px}}@media (hover:none){.glow:before,.glow:after,.portrait:after{display:none}}@media (prefers-reduced-motion:reduce){.grain,.cursor,.cursor-dot{display:none!important}.w__i,.skillGroup__list li{opacity:1;transform:none}.reveal{filter:none}.portrait.reveal{clip-path:none}.portrait img{translate:none}.timeline:after{transform:none}}
.intro{--ink:#0b0b0c;--paper:#ecebe7;--dim:#8d8f94;--gold:#e2a64c;z-index:200;color:var(--paper);font-family:var(--font);display:none;position:fixed;inset:0;overflow:hidden}html.intro-on .intro{display:block}.intro.is-exit{pointer-events:none}.intro__cols{grid-template-columns:repeat(5,1fr);display:grid;position:absolute;inset:0}.intro__cols i{background:var(--ink);outline:1px solid var(--ink);transition:transform 1s var(--ease-io);transition-delay:calc(var(--c) * 75ms)}.intro__cols--accent i{background:var(--gold);outline-color:var(--gold);transition-delay:calc(var(--c) * 75ms + .15s)}.intro.is-exit .intro__cols i{transform:translateY(-101%)}.intro__cols:not(.intro__cols--accent):after{content:"";pointer-events:none;background:radial-gradient(60vmax 40vmax at 50% 55%,#e2a64c1a,#0000 70%);transition:opacity .5s;position:absolute;inset:0}.intro.is-exit .intro__cols:not(.intro__cols--accent):after{opacity:0}.intro__hud>*{font:500 11.5px/1.6 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim);opacity:0;animation:introFade .9s var(--ease-out) .15s forwards;position:absolute}.intro__tl{align-items:center;gap:12px;display:flex;top:28px;left:32px;color:var(--paper)!important}.intro__tl i{background:var(--gold);width:28px;height:1px}.intro__tr{top:28px;right:32px}.intro__bl{bottom:30px;left:32px}.intro__count{font-variant-numeric:tabular-nums;bottom:22px;right:32px;font:600 clamp(2.4rem, 1.4rem + 3.5vw, 4.75rem)/1 var(--font)!important;letter-spacing:-.04em!important;color:var(--paper)!important}.intro__count:after{content:"%";color:var(--gold);vertical-align:top;margin-left:4px;font-size:.35em}@keyframes introFade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.intro.is-exit .intro__hud>*,.intro.is-exit .intro__skip,.intro.is-name.is-exit .intro__role{opacity:0;transition:opacity .45s ease, transform .6s var(--ease-io);animation:none;transform:translateY(-12px)}.intro__hello{letter-spacing:-.035em;transition:opacity .55s ease, transform .8s var(--ease-io), filter .55s ease;place-items:center;font-size:clamp(2.2rem,1.4rem + 3.5vw,4.5rem);font-weight:600;display:grid;position:absolute;inset:0}.intro__hello span{align-items:center;gap:.4em;display:inline-flex}.intro__hello span:before{content:"";background:var(--gold);border-radius:50%;width:.22em;height:.22em;animation:1.2s ease-out infinite introPulse;box-shadow:0 0 #e2a64c99}@keyframes introPulse{70%,to{box-shadow:0 0 0 .3em #e2a64c00}}.intro.is-name .intro__hello{opacity:0;filter:blur(10px);transform:translateY(-40px)scale(.96)}.intro__stage{place-items:center;display:grid;position:absolute;inset:0}.intro__name,.intro__card{grid-area:1/1}.intro__name{letter-spacing:-.055em;white-space:nowrap;flex-wrap:wrap;justify-content:center;column-gap:.22em;margin:0;font-size:clamp(3.2rem,1rem + 11vw,12.5rem);font-weight:600;line-height:.9;display:flex}.intro__word{padding:0 .04em .08em;display:inline-flex;overflow:hidden}.intro__word+.intro__word .intro__ch{color:#0000;-webkit-text-stroke:1.5px var(--paper)}.intro__ch{transition:transform 1.1s var(--ease-out);transition-delay:calc(var(--i) * 45ms + 80ms);display:inline-block;transform:translateY(108%)rotate(6deg)}.intro.is-name .intro__ch{transform:none}.intro.is-exit .intro__ch{transition:transform .75s var(--ease-io);transition-delay:calc(var(--i) * 22ms);transform:translateY(-108%)rotate(-4deg)}.intro__card{z-index:2;aspect-ratio:4/5;transform-origin:0 0;filter:drop-shadow(0 30px 60px #0000008c);width:clamp(128px,7vw + 90px,236px);position:relative}.intro__photo{clip-path:inset(50% round 14px);width:100%;height:100%;transition:clip-path 1.2s var(--ease-io) .3s, transform 1.5s var(--ease-out) .3s;overflow:hidden;transform:rotate(-9deg)scale(.82)}.intro.is-name .intro__photo{clip-path:inset(0 round 14px);transform:none}.intro__photo img{object-fit:cover;object-position:49% 18%;transform-origin:49% 20%;width:100%;height:100%;transition:transform 2s var(--ease-out) .3s;transform:scale(2.5)}.intro.is-name .intro__photo img{transform:scale(1.9)}.intro__role{text-align:center;font:500 12.5px/1 var(--mono);letter-spacing:.32em;text-transform:uppercase;color:#b9bbc0;opacity:0;margin:0;transition:opacity .6s .5s;position:absolute;bottom:max(15vh,96px);left:0;right:0}.intro.is-name .intro__role{opacity:1}.intro__skip{color:var(--dim);font:500 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;cursor:pointer;opacity:0;animation:introFade .8s var(--ease-out) .9s forwards;background:#ecebe70a;border:1px solid #ecebe72e;border-radius:999px;padding:9px 16px;transition:color .2s,border-color .2s;position:absolute;bottom:26px;left:50%;translate:-50%}.intro__skip:hover,.intro__skip:focus-visible{color:var(--paper);border-color:var(--gold)}html.intro-on .cursor,html.intro-on .cursor-dot{z-index:210}html.intro-flip .hero .portrait{opacity:0!important;transition:none!important;transform:none!important}.portrait.no-anim,.portrait.no-anim img{transition:none!important}.portrait.no-anim{clip-path:inset(0 0 0 0 round var(--r))!important;opacity:1!important;filter:none!important;transform:none!important}.portrait.no-anim img{transform:scale(1.9)!important}@media (max-width:640px){.intro__tr{display:none}.intro__tl{top:20px;left:18px}.intro__bl{bottom:24px;left:18px;font-size:10px!important}.intro__count{bottom:18px;right:18px}.intro__name{flex-direction:column;align-items:center;font-size:clamp(3rem,19vw,6rem)}.intro__role{letter-spacing:.2em;font-size:11px;bottom:max(17vh,110px)}.intro__skip{bottom:82px}}@media (prefers-reduced-motion:reduce){.intro{display:none!important}}
@property --ang{syntax:"<angle>";inherits:false;initial-value:0deg}@keyframes angSpin{to{--ang:360deg}}main{overflow-x:clip}html.lenis,html.lenis body{height:auto}html.lenis{scroll-behavior:auto}.lenis.lenis-stopped{overflow:clip}.lenis [data-lenis-prevent]{overscroll-behavior:contain}.section__title{letter-spacing:-.045em;font-size:clamp(2.2rem,1.2rem + 3vw,4rem)}.about__big{max-width:24ch;font-size:clamp(1.6rem,1rem + 2.2vw,3rem);line-height:1.18}.hl{opacity:.15;transition:opacity .3s,color .3s}.hl.on{opacity:1}.hl.on.hl--key{color:var(--accent)}.pin{position:relative}.pin.is-pinned{height:var(--pin-h,240vh);padding-top:0;padding-bottom:0}.pin.is-pinned>.pin__sticky{height:100vh;padding-top:var(--nav-h);flex-direction:column;justify-content:center;display:flex;position:sticky;top:0}.pin.is-pinned .about__cols{opacity:var(--cols,0);translate:0 calc((1 - var(--cols,0)) * 24px);transition:none}.pin__bar{display:none}.pin.is-pinned .pin__bar{background:var(--line);height:1px;display:block;position:absolute;bottom:40px;left:0;right:0}.pin.is-pinned .pin__bar i{background:var(--accent);transform-origin:0;transform:scaleX(var(--p,0));position:absolute;inset:0}.hs__meta{display:none}.hscroll.is-on{border-top:1px solid var(--line);padding:0}.hscroll.is-on>.hs__sticky{width:100vw;height:100vh;padding:calc(var(--nav-h) + 4vh) var(--gut) 0;--gut:max(24px, calc((100vw - 1120px) / 2));flex-direction:column;justify-content:center;margin-left:calc(50% - 50vw);display:flex;position:sticky;top:0;overflow:hidden}.hscroll.is-on .section__head{margin-bottom:4vh}.hscroll.is-on .projects{width:max-content;transform:translate3d(var(--hx,0px), 0, 0);will-change:transform;align-items:stretch;gap:20px;display:flex}.hscroll.is-on .project{flex:none;width:min(430px,34vw)}.hscroll.is-on .project--featured{width:min(1000px,74vw)}.hscroll.is-on .project--featured .project__main{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-content:start;column-gap:40px;display:grid}.hscroll.is-on .project--featured .project__kind,.hscroll.is-on .project--featured .project__title,.hscroll.is-on .project--featured .project__desc,.hscroll.is-on .project--featured .stack{grid-column:1;align-content:start;align-self:start}.hscroll.is-on .project--featured .pstats{grid-area:1/2/span 2;grid-template-columns:repeat(3,minmax(0,1fr));margin:0}.hscroll.is-on .project--featured .project__bullets{grid-area:3/2/span 2;margin-top:16px}.hscroll.is-on .project--featured .project__bullets li{font-size:15px}.hscroll.is-on .project--featured .project__desc{font-size:16px}.hscroll.is-on .codepanel{display:flex}.hscroll.is-on .hs__meta{font:500 12px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);align-items:center;gap:20px;margin-top:4vh;display:flex}.hs__count{color:var(--text);font-variant-numeric:tabular-nums}.hs__bar{background:var(--line);flex:1;max-width:420px;height:1px;position:relative}.hs__bar i{background:var(--accent);transform-origin:0;transform:scaleX(var(--p,0));position:absolute;inset:0}.project--featured{position:relative}.project--featured>.edge{border-radius:inherit;pointer-events:none;z-index:-1;background:conic-gradient(from var(--ang), var(--line-strong) 0 55%, var(--accent) 72%, var(--line-strong) 88%);-webkit-mask-composite:xor;padding:1px;animation:7s linear infinite angSpin;position:absolute;inset:-1px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.project--featured{border-color:#0000}.codepanel{flex-direction:column;flex:none;gap:14px;width:min(520px,40vw);display:none}.codepanel__cap{font:500 12px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.codewin{color:#d6d4cd;font:400 12.5px/1.65 var(--mono);background:#0d0e10;border:1px solid #2a2d33;border-radius:14px;flex-direction:column;flex:1;display:flex;overflow:hidden;box-shadow:0 30px 70px -30px #0009}.codewin__bar{background:#16181b;border-bottom:1px solid #24272c;align-items:center;gap:7px;padding:11px 14px;display:flex}.codewin__bar i{border-radius:50%;width:11px;height:11px}.codewin__bar i:first-child{background:#ff5f57}.codewin__bar i:nth-child(2){background:#febc2e}.codewin__bar i:nth-child(3){background:#28c840}.codewin__tab{color:#e8e6df;margin-left:10px;font-size:12px}.codewin__lang{color:#7b7e85;margin-left:auto;font-size:11px}.codewin__body{flex:1;grid-template-columns:auto 1fr;padding:14px 0 16px;display:grid}.codewin__nums{color:#4a4d54;text-align:right;-webkit-user-select:none;user-select:none;white-space:pre;padding:0 12px 0 16px}.codewin pre{font:inherit;white-space:pre;margin:0;padding-right:16px;overflow:hidden}.codewin__caret{vertical-align:-.2em;background:var(--accent);width:7px;height:1.15em;animation:1s step-end infinite caret;display:inline-block}@keyframes caret{50%{opacity:0}}.codewin__status{color:#7b7e85;background:#121316;border-top:1px solid #24272c;align-items:center;gap:8px;padding:9px 14px;font-size:11.5px;display:flex}.codewin__status b{background:#febc2e;border-radius:50%;width:7px;height:7px}.codewin.is-done .codewin__status b{background:#28c840;box-shadow:0 0 8px #28c840}.tk-k{color:#c792ea}.tk-t{color:#e2a64c}.tk-m{color:#82aaff}.tk-c{color:#5c6370;font-style:italic}.tk-p{color:#89ddff}.job__title{transition:color .35s ease, translate .5s var(--ease-out)}.job:hover .job__title{color:var(--accent);translate:8px}.job__when{transition:color .35s}.job:hover .job__when{color:var(--text)}.bigtype{border-top:1px solid var(--line);padding:120px 0 96px;overflow:hidden}.bigtype__line{white-space:nowrap;letter-spacing:-.06em;transform:translate3d(var(--tx,0px), 0, 0);will-change:transform;margin:0;font-size:clamp(4rem,1rem + 11vw,13rem);font-weight:700;line-height:.95}.bigtype__line:first-child{padding-left:6vw}.bigtype__line--alt{text-align:right;color:#0000;-webkit-text-stroke:1.5px var(--text);padding-right:6vw}.bigtype__line--alt em{color:var(--accent);-webkit-text-stroke:0;font-style:normal}.bigtype+.section{border-top:0}.marquee.is-js .marquee__track{will-change:transform;animation:none}.bigname{text-align:center;padding:80px 0 .12em;line-height:.95;overflow:hidden}.bigname__txt{white-space:nowrap;letter-spacing:-.06em;font-weight:700;font-size:var(--bn,12vw);display:inline-block}.bigname__ch{background:linear-gradient(180deg, var(--text) 30%, transparent 105%);-webkit-text-fill-color:transparent;transition:transform 1.2s var(--ease-out);transition-delay:calc(var(--i) * 40ms);-webkit-background-clip:text;background-clip:text;display:inline-block;transform:translateY(100%)}.bigname.show .bigname__ch{transform:none}.bigname__ch:hover{-webkit-text-fill-color:var(--accent);transition-delay:0s}@media (max-width:640px){.bigtype{padding:80px 0 64px}.bigtype__line{font-size:11.5vw}.pin.is-pinned .pin__bar{bottom:20px}.bigtype__line--alt{-webkit-text-stroke-width:1px}}@media (prefers-reduced-motion:reduce){.hl{opacity:1}.bigname__ch{transform:none}.bigtype__line{white-space:normal;transform:none}}
