@font-face{font-family:Syne Variable;font-style:normal;font-display:swap;font-weight:400 800;src:url(../assets/syne-greek-wght-normal.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Syne Variable;font-style:normal;font-display:swap;font-weight:400 800;src:url(../assets/syne-latin-ext-wght-normal.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Syne Variable;font-style:normal;font-display:swap;font-weight:400 800;src:url(../assets/syne-latin-wght-normal.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(../assets/instrument-sans-latin-ext-wght-normal.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(../assets/instrument-sans-latin-wght-normal.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(../assets/jetbrains-mono-cyrillic-wght-normal.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(../assets/jetbrains-mono-greek-wght-normal.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(../assets/jetbrains-mono-vietnamese-wght-normal.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(../assets/jetbrains-mono-latin-ext-wght-normal.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(../assets/jetbrains-mono-latin-wght-normal.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink: #000;--paper: #fff;--fg: var(--ink);--bg: var(--paper);--display: "Syne Variable", system-ui, sans-serif;--body: "Instrument Sans Variable", system-ui, sans-serif;--mono: "JetBrains Mono Variable", ui-monospace, monospace;--gutter: clamp(1.25rem, 5vw, 5rem);--rule: 1.5px;--ease: cubic-bezier(.65, 0, .35, 1)}html:has(#invert:checked){--fg: var(--paper);--bg: var(--ink)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--body);font-size:1rem;line-height:1.6;color:var(--fg);background-color:var(--bg);overflow-x:hidden;transition:color .4s var(--ease),background-color .4s var(--ease)}h1,h2,h3,p,ul,ol{margin:0}ul,ol{padding:0;list-style:none}@media(max-width:22rem),(max-height:30rem){*,*:before,*:after{animation:none!important}}.skip-link{position:fixed;top:.5rem;left:.5rem;z-index:100;padding:.6rem 1rem;font-family:var(--mono);font-size:.875rem;color:var(--bg);background:var(--fg);transform:translateY(-200%)}.skip-link:focus-visible{transform:translateY(0)}:focus-visible{outline:2px solid var(--fg);outline-offset:3px}.invert-input{position:fixed;top:0;left:0;width:1px;height:1px;opacity:0}.invert{position:fixed;z-index:40;right:var(--gutter);bottom:calc(var(--gutter) * .75);display:inline-flex;gap:.5rem;align-items:center;padding:.5rem .85rem;font-family:var(--mono);font-size:.875rem;letter-spacing:.06em;color:var(--fg);cursor:pointer;background:var(--bg);border:var(--rule) solid var(--fg);border-radius:2rem;transition:color .4s var(--ease),background-color .4s var(--ease)}.invert__icon{width:1.125rem;height:1.125rem;transition:transform .4s var(--ease)}.invert:hover .invert__icon{transform:rotate(180deg)}@media(max-width:34rem){.invert{padding:.6rem}.invert__label{display:none}}.invert-input:checked~.invert .invert__icon{transform:rotate(180deg)}.invert-input:focus-visible~.invert{outline:2px solid var(--fg);outline-offset:3px}.mark,.progress{position:fixed;z-index:41;mix-blend-mode:difference;pointer-events:none}.mark{top:calc(var(--gutter) * .6);left:var(--gutter);font-family:var(--mono);font-size:.8125rem;letter-spacing:.14em;color:#fff}.progress{top:0;left:0;width:100%;height:2px;background:#fff;transform-origin:left;animation:progress auto linear both;animation-timeline:scroll(root block)}@supports not (animation-timeline: scroll()){.progress{display:none}}@media(max-width:22rem),(max-height:30rem){.progress{display:none}}@keyframes progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}#main{height:920svh;view-timeline:--film block}.film{position:sticky;top:0;height:100svh;overflow:hidden}.frame{position:absolute;inset:0;display:grid;place-items:center;padding:clamp(2.5rem,6vh,4.5rem) var(--gutter);overflow:hidden}@media(max-height:46rem){.frame{padding:1.75rem var(--gutter)}}.frame:not(.frame--dark){background:var(--bg);transition:background-color .4s var(--ease)}.frame--dark{background:var(--fg);color:var(--bg);transition:background-color .4s var(--ease),color .4s var(--ease)}.frame--intro{z-index:1}.frame--skills{z-index:2;animation:fade-skills auto linear both;animation-timeline:--film;animation-range:contain}@supports not (animation-timeline: view()){.frame--skills{animation:fade-skills 1s linear paused both;animation-delay:calc(var(--p, 0) * -1s)}}.frame--work{z-index:3;animation:fade-work auto linear both;animation-timeline:--film;animation-range:contain}@supports not (animation-timeline: view()){.frame--work{animation:fade-work 1s linear paused both;animation-delay:calc(var(--p, 0) * -1s)}}.frame--about{z-index:4;animation:disc-about auto linear both;animation-timeline:--film;animation-range:contain}@supports not (animation-timeline: view()){.frame--about{animation:disc-about 1s linear paused both;animation-delay:calc(var(--p, 0) * -1s)}}.frame--path{z-index:5;animation:disc-path auto linear both;animation-timeline:--film;animation-range:contain}@supports not (animation-timeline: view()){.frame--path{animation:disc-path 1s linear paused both;animation-delay:calc(var(--p, 0) * -1s)}}.frame--contact{z-index:6;animation:disc-contact auto linear both;animation-timeline:--film;animation-range:contain}@supports not (animation-timeline: view()){.frame--contact{animation:disc-contact 1s linear paused both;animation-delay:calc(var(--p, 0) * -1s)}}@keyframes disc-about{0%{clip-path:circle(0% at 50% 50%)}14%,24%{clip-path:circle(80% at 50% 50%)}31%,to{clip-path:circle(0% at 50% 50%)}}@keyframes disc-path{0%,52%{clip-path:inset(50% 0 50% 0)}59%,80%{clip-path:inset(0 0 0 0)}85%,to{clip-path:inset(50% 0 50% 0)}}@keyframes disc-contact{0%,94%{clip-path:polygon(50% 50%,50% 50%,50% 50%,50% 50%)}to{clip-path:polygon(50% -60%,160% 50%,50% 160%,-60% 50%)}}@keyframes fade-skills{0%,14%{opacity:0}24%,to{opacity:1}}@keyframes fade-work{0%,59%{opacity:0}80%,to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(2rem)}to{opacity:1;transform:translateY(0)}}@keyframes draw{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes pop{0%{opacity:0;transform:scale(.82)}to{opacity:1;transform:scale(1)}}@keyframes slide-in{0%{opacity:0;transform:translate(-1.75rem)}to{opacity:1;transform:translate(0)}}.panel{display:grid;justify-items:start;gap:clamp(1.25rem,3.5vh,2.5rem);width:min(72rem,100%)}.frame__title{font-family:var(--display);font-size:clamp(1.75rem,5vw,3rem);font-weight:700;letter-spacing:-.02em}@media(max-width:22rem),(max-height:30rem){#main{height:auto}.film{position:static;height:auto}.frame{position:static;min-height:100svh;overflow:visible;clip-path:none!important;opacity:1!important;animation:none!important}}.frame--intro{gap:0}.hero{position:relative;display:flex;flex-direction:column;align-items:center}.hero__wave{position:absolute;left:50%;z-index:-1;width:100vw;height:8vh;min-height:3.5rem;overflow:hidden;pointer-events:none}@media(max-width:22rem),(max-height:30rem){.hero__wave{display:none}}.hero__wave--top{bottom:100%;margin-bottom:-.6rem;transform:translate(-50%)}.hero__wave--bottom{top:100%;margin-top:-.6rem;transform:translate(-50%) scaleY(-1)}.waves__svg{display:block;width:100%;height:100%}.waves__layer{fill:var(--fg);transition:fill .4s var(--ease);animation:wave-drift 16s cubic-bezier(.55,.5,.45,.5) infinite}.waves__layer--1{opacity:.3;animation-duration:8s;animation-delay:-2s}.waves__layer--2{opacity:.5;animation-duration:11s;animation-delay:-3s}.waves__layer--3{opacity:.7;animation-duration:15s;animation-delay:-4s}.waves__layer--4{opacity:1;animation-duration:22s;animation-delay:-5s}@keyframes wave-drift{0%{transform:translate3d(-90px,0,0)}to{transform:translate3d(85px,0,0)}}.name{display:flex;flex-direction:column;align-items:center;gap:.14em;font-family:var(--display);font-size:clamp(2.75rem,12vw,8.5rem);font-weight:800;line-height:.95;letter-spacing:-.03em;animation:name-load .8s var(--ease) both}.name__part{position:relative;isolation:isolate;width:min-content;color:var(--bg)}.name__part:before{position:absolute;inset:-.1em -100vw;z-index:-1;content:"";background:var(--fg);transition:background-color .4s var(--ease)}.name__part--lead{animation:fly-left auto linear both;animation-timeline:--film;animation-range:contain 0% contain 14%}@supports not (animation-timeline: view()){.name__part--lead{animation:fly-left 1s linear paused both;animation-delay:calc((var(--p, 0) - 0) / .14 * -1s)}}.name__part--trail{animation:fly-right auto linear both;animation-timeline:--film;animation-range:contain 0% contain 14%}@supports not (animation-timeline: view()){.name__part--trail{animation:fly-right 1s linear paused both;animation-delay:calc((var(--p, 0) - 0) / .14 * -1s)}}@media(max-width:22rem),(max-height:30rem){.name__part{animation:none}}@media(max-width:22rem),(max-height:30rem){.name{animation:none}}@keyframes name-load{0%{opacity:0;transform:translateY(1.2rem)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fly-left{0%{transform:translate(0)}to{transform:translate(-52vw)}}@keyframes fly-right{0%{transform:translate(0)}to{transform:translate(52vw)}}.pitch{position:absolute;z-index:1;bottom:19%;left:50%;display:grid;gap:.9rem;width:min(34ch,82vw);text-align:center;transform:translate(-50%);animation:fade-in .8s var(--ease) .35s both}@media(max-width:22rem),(max-height:30rem){.pitch{position:static;transform:none;margin-top:1.75rem;animation:none}}.pitch__role{font-family:var(--mono);font-size:.875rem;letter-spacing:.24em;text-transform:uppercase;opacity:.6}.pitch__line{font-size:clamp(1rem,2.2vw,1.375rem);text-wrap:balance}.scroll-cue{position:absolute;z-index:1;bottom:calc(13vh + 1rem);left:50%;font-family:var(--mono);font-size:.8125rem;letter-spacing:.3em;text-transform:uppercase;transform:translate(-50%);animation:cue-out auto linear both;animation-timeline:--film;animation-range:contain}@supports not (animation-timeline: view()){.scroll-cue{animation:cue-out 1s linear paused both;animation-delay:calc(var(--p, 0) * -1s)}}@media(max-width:22rem),(max-height:30rem){.scroll-cue{display:none}}@keyframes cue-out{0%{opacity:.6}8%,to{opacity:0}}.about{display:grid;gap:1.25rem;width:min(62ch,100% - var(--gutter) * 2)}.about__title,.about__body:first-of-type{animation:rise auto linear both;animation-timeline:--film;animation-range:contain 0% contain 10%}@supports not (animation-timeline: view()){.about__title,.about__body:first-of-type{animation:rise 1s linear paused both;animation-delay:calc((var(--p, 0) - 0) / .1 * -1s)}}@media(max-width:22rem),(max-height:30rem){.about__title,.about__body:first-of-type{animation:none}}.about__body:last-of-type{animation:rise auto linear both;animation-timeline:--film;animation-range:contain 12% contain 21%}@supports not (animation-timeline: view()){.about__body:last-of-type{animation:rise 1s linear paused both;animation-delay:calc((var(--p, 0) - .12) / .09 * -1s)}}@media(max-width:22rem),(max-height:30rem){.about__body:last-of-type{animation:none}}.about__title{font-family:var(--display);font-size:clamp(1.75rem,5vw,3rem);font-weight:700;letter-spacing:-.02em}.about__body{font-size:clamp(1rem,1.6vw,1.125rem);text-wrap:pretty}@media(max-width:40rem){.about{gap:.85rem}.about__body{line-height:1.45}}.frame--skills .frame__title{animation:rise auto linear both;animation-timeline:--film;animation-range:contain 24% contain 32%}@supports not (animation-timeline: view()){.frame--skills .frame__title{animation:rise 1s linear paused both;animation-delay:calc((var(--p, 0) - .24) / .08 * -1s)}}@media(max-width:22rem),(max-height:30rem){.frame--skills .frame__title{animation:none}}.skills{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,3vw,2rem);width:100%}@media(max-width:48rem){.skills{grid-template-columns:1fr;gap:.6rem}}.skill{display:grid;gap:1.1rem;padding:clamp(1.25rem,2.5vw,2rem);border:var(--rule) solid currentColor}@media(max-width:48rem){.skill{grid-template-columns:auto 1fr;align-items:center;gap:.5rem .85rem;padding:.85rem 1rem}}.skill:nth-child(1){animation:pop auto linear both;animation-timeline:--film;animation-range:contain 26% contain 36%}@supports not (animation-timeline: view()){.skill:nth-child(1){animation:pop 1s linear paused both;animation-delay:calc((var(--p, 0) - .26) / .1 * -1s)}}.skill:nth-child(2){animation:pop auto linear both;animation-timeline:--film;animation-range:contain 29% contain 39%}@supports not (animation-timeline: view()){.skill:nth-child(2){animation:pop 1s linear paused both;animation-delay:calc((var(--p, 0) - .29) / .1 * -1s)}}.skill:nth-child(3){animation:pop auto linear both;animation-timeline:--film;animation-range:contain 32% contain 42%}@supports not (animation-timeline: view()){.skill:nth-child(3){animation:pop 1s linear paused both;animation-delay:calc((var(--p, 0) - .32) / .1 * -1s)}}@media(max-width:22rem),(max-height:30rem){.skill{animation:none}}.skill__icon{width:clamp(2.5rem,5vw,3.25rem);height:clamp(2.5rem,5vw,3.25rem)}.skill__icon>*{stroke-dasharray:1;stroke-dashoffset:1}@media(max-width:48rem){.skill__icon{grid-row:span 2;width:2rem;height:2rem}}.skill:nth-child(1) .skill__icon>*{animation:draw-stroke auto linear both;animation-timeline:--film;animation-range:contain 28% contain 40%}@supports not (animation-timeline: view()){.skill:nth-child(1) .skill__icon>*{animation:draw-stroke 1s linear paused both;animation-delay:calc((var(--p, 0) - .28) / .12 * -1s)}}.skill:nth-child(2) .skill__icon>*{animation:draw-stroke auto linear both;animation-timeline:--film;animation-range:contain 30.5% contain 42.5%}@supports not (animation-timeline: view()){.skill:nth-child(2) .skill__icon>*{animation:draw-stroke 1s linear paused both;animation-delay:calc((var(--p, 0) - .305) / .12 * -1s)}}.skill:nth-child(3) .skill__icon>*{animation:draw-stroke auto linear both;animation-timeline:--film;animation-range:contain 33% contain 45%}@supports not (animation-timeline: view()){.skill:nth-child(3) .skill__icon>*{animation:draw-stroke 1s linear paused both;animation-delay:calc((var(--p, 0) - .33) / .12 * -1s)}}.skill__title{font-family:var(--display);font-size:clamp(1.25rem,2.2vw,1.5rem);font-weight:700}.skill__list{display:flex;flex-wrap:wrap;gap:.4rem}.skill__list li{padding:.25rem .7rem;font-family:var(--mono);font-size:.8125rem;border:var(--rule) solid currentColor;border-radius:1rem;opacity:.85}@media(max-width:22rem),(max-height:30rem){.skill__icon>*{stroke-dashoffset:0;animation:none}}@keyframes draw-stroke{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.frame--path .frame__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.75rem 1.5rem;animation:rise auto linear both;animation-timeline:--film;animation-range:contain 53% contain 59%}@supports not (animation-timeline: view()){.frame--path .frame__head{animation:rise 1s linear paused both;animation-delay:calc((var(--p, 0) - .53) / .06 * -1s)}}@media(max-width:22rem),(max-height:30rem){.frame--path .frame__head{animation:none}}.badge{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .8rem;font-family:var(--mono);font-size:.8125rem;letter-spacing:.04em;border:var(--rule) solid currentColor;border-radius:2rem}.badge__icon{width:1rem;height:1rem}.path{position:relative;display:grid;gap:clamp(1rem,2.4vh,1.75rem);width:min(60rem,100%);padding-left:clamp(2.5rem,6vw,5rem)}@media(max-width:40rem),(max-height:50rem){.path{gap:.5rem}}.path:before{position:absolute;top:.4em;bottom:.4em;left:clamp(.75rem,2vw,2rem);width:var(--rule);content:"";background:currentColor;transform-origin:top;animation:draw auto linear both;animation-timeline:--film;animation-range:contain 55% contain 75%}@supports not (animation-timeline: view()){.path:before{animation:draw 1s linear paused both;animation-delay:calc((var(--p, 0) - .55) / .2 * -1s)}}@media(max-width:22rem),(max-height:30rem){.path:before{animation:none}}.step{position:relative}.step:nth-child(1){animation:slide-in auto linear both;animation-timeline:--film;animation-range:contain 56% contain 65%}@supports not (animation-timeline: view()){.step:nth-child(1){animation:slide-in 1s linear paused both;animation-delay:calc((var(--p, 0) - .56) / .09 * -1s)}}.step:nth-child(2){animation:slide-in auto linear both;animation-timeline:--film;animation-range:contain 58.5% contain 67.5%}@supports not (animation-timeline: view()){.step:nth-child(2){animation:slide-in 1s linear paused both;animation-delay:calc((var(--p, 0) - .585) / .09 * -1s)}}.step:nth-child(3){animation:slide-in auto linear both;animation-timeline:--film;animation-range:contain 61% contain 70%}@supports not (animation-timeline: view()){.step:nth-child(3){animation:slide-in 1s linear paused both;animation-delay:calc((var(--p, 0) - .61) / .09 * -1s)}}.step:nth-child(4){animation:slide-in auto linear both;animation-timeline:--film;animation-range:contain 63.5% contain 72.5%}@supports not (animation-timeline: view()){.step:nth-child(4){animation:slide-in 1s linear paused both;animation-delay:calc((var(--p, 0) - .635) / .09 * -1s)}}.step:nth-child(5){animation:slide-in auto linear both;animation-timeline:--film;animation-range:contain 66% contain 75%}@supports not (animation-timeline: view()){.step:nth-child(5){animation:slide-in 1s linear paused both;animation-delay:calc((var(--p, 0) - .66) / .09 * -1s)}}@media(max-width:22rem),(max-height:30rem){.step{animation:none}}.step:before{position:absolute;top:.5em;left:calc(clamp(.75rem,2vw,2rem) - clamp(2.5rem,6vw,5rem));width:.75rem;height:.75rem;content:"";background:var(--fg);border:var(--rule) solid var(--bg);border-radius:50%;transform:translate(-50%)}.step__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .9rem}.step__year{font-family:var(--mono);font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums;opacity:.65}.step__title{font-family:var(--display);font-size:clamp(1.0625rem,2vw,1.375rem);font-weight:700}.step__note{margin-top:.15rem;max-width:60ch;font-size:clamp(.9375rem,1.4vw,1.0625rem);opacity:.78;text-wrap:pretty}@media(max-width:24rem),(max-height:46rem){.step__note{display:none}}.frame--work{z-index:3}.frame--work .panel{z-index:32;animation:rise auto linear both;animation-timeline:--film;animation-range:contain 80% contain 84%}@supports not (animation-timeline: view()){.frame--work .panel{animation:rise 1s linear paused both;animation-delay:calc((var(--p, 0) - .8) / .04 * -1s)}}.frame--work .panel{grid-template-rows:auto minmax(0,1fr);height:min(82svh,58rem)}@media(max-width:22rem),(max-height:30rem){.frame--work .panel{animation:none;height:auto;grid-template-rows:none}}.masonry-viewport{width:100%;height:100%;overflow:hidden;container-type:size;--edge: linear-gradient( to bottom, transparent 0, #000 5%, #000 88%, transparent 100% );-webkit-mask-image:var(--edge);mask-image:var(--edge)}@media(max-width:22rem),(max-height:30rem){.masonry-viewport{height:auto;overflow:visible;container-type:normal;-webkit-mask-image:none;mask-image:none}}.masonry{display:flex;align-items:flex-start;gap:clamp(.8rem,1.5vw,1.4rem);margin:0;padding:0}.masonry__col{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:clamp(.8rem,1.5vw,1.4rem);margin:0;padding:0;list-style:none;will-change:transform}.masonry__col--a,.masonry__col--c{animation:scrub-up auto linear both;animation-timeline:--film;animation-range:contain}@supports not (animation-timeline: view()){.masonry__col--a,.masonry__col--c{animation:scrub-up 1s linear paused both;animation-delay:calc(var(--p, 0) * -1s)}}.masonry__col--b{animation:scrub-down auto linear both;animation-timeline:--film;animation-range:contain}@supports not (animation-timeline: view()){.masonry__col--b{animation:scrub-down 1s linear paused both;animation-delay:calc(var(--p, 0) * -1s)}}@keyframes scrub-up{0%,86%{transform:translateY(0)}94%,to{transform:translateY(min(0px,100cqh - 100%))}}@keyframes scrub-down{0%,86%{transform:translateY(min(0px,100cqh - 100%))}94%,to{transform:translateY(0)}}@media(max-width:40rem){.masonry{flex-flow:row wrap;gap:clamp(.8rem,1.5vw,1.4rem);animation:scrub-up-wide auto linear both;animation-timeline:--film;animation-range:contain}@supports not (animation-timeline: view()){.masonry{animation:scrub-up-wide 1s linear paused both;animation-delay:calc(var(--p, 0) * -1s)}}.masonry__col{display:contents;animation:none}.card{flex:0 0 calc(50% - (clamp(.8rem,1.5vw,1.4rem)/2));min-width:0}.card__face{gap:.35rem;padding:.85rem .9rem}}@keyframes scrub-up-wide{0%,84%{transform:translateY(0)}94%,to{transform:translateY(min(0px,100cqh - 100%))}}@media(max-width:22rem),(max-height:30rem){.masonry{flex-direction:column;animation:none;transform:none}.masonry__col{display:contents;animation:none}.card{flex:0 0 auto;width:min(24rem,100%);margin-inline:auto}}.card__face{display:flex;flex-direction:column;gap:.45rem;padding:clamp(1.1rem,1.6vw,1.4rem);color:inherit;cursor:pointer;border:var(--rule) solid currentColor;transition:transform .2s var(--ease),background-color .2s var(--ease),color .2s var(--ease)}.card__face:hover,.card__face:focus-visible{transform:translateY(-4px);color:var(--bg);background:var(--fg)}.card__face:hover .card__cta .i-arrow,.card__face:focus-visible .card__cta .i-arrow{transform:translate(4px)}.card__face:focus-visible{outline:2px solid var(--fg);outline-offset:3px}.card__index{font-family:var(--display);font-size:clamp(1.5rem,3vw,2.1rem);font-weight:800;line-height:1;letter-spacing:-.02em;opacity:.28}.card__title{font-family:var(--display);font-size:clamp(1.2rem,2vw,1.55rem);font-weight:700;letter-spacing:-.01em}.card__hook{font-size:.9375rem;line-height:1.45;opacity:.82;text-wrap:pretty}.card__cta{display:inline-flex;gap:.45rem;align-items:center;margin-top:auto;padding-top:.8rem;font-family:var(--mono);font-size:.8125rem;letter-spacing:.04em}.card__cta .i-arrow{width:1.1rem;height:1.1rem;transition:transform .2s var(--ease)}.tags{display:flex;flex-wrap:wrap;gap:.35rem}.tags li{padding:.15rem .55rem;font-family:var(--mono);font-size:.75rem;letter-spacing:.02em;border:var(--rule) solid currentColor;border-radius:1rem;opacity:.7}.modal-radio,.modal-none{display:none}html:has(.modal-radio:checked){overflow:hidden}.modal{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:clamp(.75rem,3vw,2rem);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .3s var(--ease),visibility .3s var(--ease)}.modal__scrim{position:absolute;inset:0;cursor:pointer;background:color-mix(in srgb,var(--fg) 62%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal__sheet{position:relative;display:flex;flex-direction:column;width:min(42rem,100%);max-height:min(88svh,52rem);overflow-y:auto;overscroll-behavior:contain;padding:clamp(1.5rem,4vw,2.75rem);color:var(--bg);background:var(--fg);transform:translateY(1.75rem) scale(.985);transition:transform .35s var(--ease)}#p-quelio:checked~.modal--quelio{opacity:1;visibility:visible;pointer-events:auto}#p-quelio:checked~.modal--quelio .modal__sheet{transform:none}#p-revwatch:checked~.modal--revwatch{opacity:1;visibility:visible;pointer-events:auto}#p-revwatch:checked~.modal--revwatch .modal__sheet{transform:none}#p-oneair:checked~.modal--oneair{opacity:1;visibility:visible;pointer-events:auto}#p-oneair:checked~.modal--oneair .modal__sheet{transform:none}#p-dbgate:checked~.modal--dbgate{opacity:1;visibility:visible;pointer-events:auto}#p-dbgate:checked~.modal--dbgate .modal__sheet{transform:none}#p-followit:checked~.modal--followit{opacity:1;visibility:visible;pointer-events:auto}#p-followit:checked~.modal--followit .modal__sheet{transform:none}#p-timetable:checked~.modal--timetable{opacity:1;visibility:visible;pointer-events:auto}#p-timetable:checked~.modal--timetable .modal__sheet{transform:none}#p-slackmod:checked~.modal--slackmod{opacity:1;visibility:visible;pointer-events:auto}#p-slackmod:checked~.modal--slackmod .modal__sheet{transform:none}#p-annecy:checked~.modal--annecy{opacity:1;visibility:visible;pointer-events:auto}#p-annecy:checked~.modal--annecy .modal__sheet{transform:none}#p-redracing:checked~.modal--redracing{opacity:1;visibility:visible;pointer-events:auto}#p-redracing:checked~.modal--redracing .modal__sheet{transform:none}#p-tmdb:checked~.modal--tmdb{opacity:1;visibility:visible;pointer-events:auto}#p-tmdb:checked~.modal--tmdb .modal__sheet{transform:none}#p-raycast:checked~.modal--raycast{opacity:1;visibility:visible;pointer-events:auto}#p-raycast:checked~.modal--raycast .modal__sheet{transform:none}#p-phaser:checked~.modal--phaser{opacity:1;visibility:visible;pointer-events:auto}#p-phaser:checked~.modal--phaser .modal__sheet{transform:none}#p-mario:checked~.modal--mario{opacity:1;visibility:visible;pointer-events:auto}#p-mario:checked~.modal--mario .modal__sheet{transform:none}#p-maze:checked~.modal--maze{opacity:1;visibility:visible;pointer-events:auto}#p-maze:checked~.modal--maze .modal__sheet{transform:none}.modal__close{position:sticky;top:0;z-index:3;align-self:flex-end;display:grid;place-items:center;width:2.25rem;height:2.25rem;margin:-.5rem -.5rem 0 0;color:inherit;cursor:pointer;background:var(--fg);border:var(--rule) solid transparent;border-radius:50%;transition:border-color .2s var(--ease),transform .2s var(--ease)}.modal__close svg{width:1.25rem;height:1.25rem}.modal__close:hover,.modal__close:focus-visible{border-color:var(--bg);transform:rotate(90deg)}.modal__flow{display:flex;flex-direction:column;gap:clamp(1.5rem,3vw,2.25rem);margin-top:-1rem}.modal__hero{display:grid;gap:.5rem;padding-bottom:clamp(1.25rem,3vw,1.75rem);border-bottom:var(--rule) solid color-mix(in srgb,var(--bg) 30%,transparent)}.modal__index{font-family:var(--display);font-size:clamp(2.5rem,8vw,4rem);font-weight:800;line-height:.9;letter-spacing:-.03em;opacity:.35}.modal__kicker{font-family:var(--mono);font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;opacity:.6}.modal__title{font-family:var(--display);font-size:clamp(1.85rem,5vw,2.75rem);font-weight:800;letter-spacing:-.02em;line-height:1.02}.modal__tag{font-size:clamp(1rem,2.4vw,1.2rem);line-height:1.4;opacity:.8;text-wrap:balance}.modal__block{display:grid;gap:.5rem}.modal__block h4{font-family:var(--mono);font-size:.8125rem;letter-spacing:.08em;text-transform:uppercase;opacity:.55}.modal__block p{font-size:clamp(.95rem,2vw,1.05rem);line-height:1.65;text-wrap:pretty}.modal__block p b{font-weight:700}.modal__link{display:inline-flex;gap:.55rem;align-items:center;align-self:flex-start;padding:.65rem 1.2rem;font-family:var(--mono);font-size:.875rem;letter-spacing:.03em;color:inherit;text-decoration:none;border:var(--rule) solid currentColor;border-radius:2rem;transition:color .2s var(--ease),background-color .2s var(--ease)}.modal__link .i-gh,.modal__link .i-ext{width:1.1rem;height:1.1rem}.modal__link:hover,.modal__link:focus-visible{color:var(--fg);background:var(--bg)}.modal__link--none{padding-left:0;letter-spacing:.04em;opacity:.45;border-color:transparent;cursor:default}.modal__link--none:hover,.modal__link--none:focus-visible{color:inherit;background:none}@supports (animation-timeline: view()){.modal__block,.modal__link{animation:modal-rise both linear;animation-timeline:view();animation-range:entry 2% cover 22%}}@keyframes modal-rise{0%{opacity:0;transform:translateY(1.75rem)}to{opacity:1;transform:none}}.frame--contact{z-index:6}.frame--contact .contact{z-index:32}.contact{position:relative;display:grid;gap:1.5rem;justify-items:center;text-align:center;animation:rise auto linear both;animation-timeline:--film;animation-range:contain 94% contain 99%}@supports not (animation-timeline: view()){.contact{animation:rise 1s linear paused both;animation-delay:calc((var(--p, 0) - .94) / .05 * -1s)}}@media(max-width:22rem),(max-height:30rem){.contact{animation:none}}.contact__title{font-family:var(--display);font-size:clamp(2rem,7vw,4.5rem);font-weight:800;letter-spacing:-.03em;text-wrap:balance}.contact__list{display:grid;gap:.75rem}.cv-download{display:inline-flex;gap:.6rem;align-items:center;margin-top:.5rem;padding:.7rem 1.4rem;font-family:var(--mono);font-size:.9375rem;letter-spacing:.04em;color:inherit;text-decoration:none;border:var(--rule) solid currentColor;border-radius:2rem;transition:color .2s var(--ease),background-color .2s var(--ease)}.cv-download__icon{width:1.15rem;height:1.15rem}.cv-download:hover,.cv-download:focus-visible{color:var(--fg);background:var(--bg)}.colophon{max-width:46ch;font-family:var(--mono);font-size:.8125rem;line-height:1.7;letter-spacing:.04em;opacity:.5;text-wrap:pretty}.colophon--js{display:none}@supports not (animation-timeline: view()){.colophon--css{display:none}.colophon--js{display:inline}}.link{display:inline-flex;gap:.6rem;align-items:center;font-family:var(--mono);font-size:clamp(.9375rem,2vw,1.125rem);color:inherit;text-decoration:none;border-bottom:var(--rule) solid transparent;transition:border-color .2s var(--ease)}.link__icon{flex:none;width:1.125rem;height:1.125rem}.link:hover{border-bottom-color:currentColor}
