@font-face{font-family:Anton;font-style:normal;font-weight:400;font-display:swap;src:url(../media/0e7b7e0b829e3eb9-s.0s6677u7501n5.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Anton;font-style:normal;font-weight:400;font-display:swap;src:url(../media/daf789e4474d0d90-s.3w_oc3nqvqm6n.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Anton;font-style:normal;font-weight:400;font-display:swap;src:url(../media/9e9f04e3c37952ab-s.p.002ht2t_o636a.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Anton Fallback;src:local(Arial);ascent-override:129.7%;descent-override:36.29%;line-gap-override:0.0%;size-adjust:90.69%}.anton_a80c11eb-module__R3XFFW__className{font-family:Anton,Anton Fallback;font-style:normal;font-weight:400}.anton_a80c11eb-module__R3XFFW__variable{--font-display:"Anton", "Anton Fallback"}
@layer components{.font-display{font-family:var(--font-display), "Arial Narrow", var(--font-sans);letter-spacing:0;text-transform:uppercase;font-weight:400;line-height:.9}}@keyframes hero-rise{0%{transform:translateY(.35em)}}.hero-rise{animation:hero-rise .9s var(--ease-out-quint) both;animation-delay:calc(var(--i,0) * 70ms);display:inline-block}.hero-rise-block{animation:hero-rise .9s var(--ease-out-quint) both;animation-delay:calc(var(--i,0) * 70ms)}@keyframes marquee{to{transform:translate(-50%)}}.marquee-track{animation:28s linear infinite marquee}@media (hover:hover) and (pointer:fine){.marquee:hover .marquee-track{animation-play-state:paused}}.grain{opacity:.06;mix-blend-mode:overlay;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='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E")}@media (prefers-reduced-motion:reduce){.hero-rise,.hero-rise-block,.marquee-track{animation:none}}@keyframes intro-draw{to{stroke-dashoffset:0}}@keyframes intro-fade{to{opacity:0}}@keyframes intro-zoom{to{transform:scale(60)}}@keyframes intro-done{to{visibility:hidden}}.preloader{z-index:100;animation:0s 1.9s forwards intro-done;position:fixed;inset:0}.preloader-scene{width:100%;height:100%;position:absolute;inset:0}.preloader-zoom{transform-box:view-box;transform-origin:68.6px 46.6px;animation:.75s cubic-bezier(.7,0,.84,0) 1.15s forwards intro-zoom}.preloader-curtain,.preloader-cover{fill:var(--background)}.preloader-cover{stroke:var(--background);stroke-width:1.5px;animation:.25s .85s forwards intro-fade}.preloader-outline{fill:none;stroke:var(--accent);stroke-width:3px;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1px;animation:intro-draw .8s var(--ease-in-out-quint) 50ms forwards, intro-fade .2s ease 1.15s forwards}.preloader-skip{right:1.25rem;bottom:max(1.25rem, env(safe-area-inset-bottom));animation:.2s 1.1s forwards intro-fade;position:absolute}@media (min-width:640px){.preloader-skip{bottom:2rem;right:2rem}}[data-intro-seen] .preloader,[data-intro-skip] .preloader{display:none}@media (prefers-reduced-motion:no-preference){html:not([data-intro-seen]):not([data-intro-skip]) .hero-rise,html:not([data-intro-seen]):not([data-intro-skip]) .hero-rise-block{animation-delay:calc(.9s + var(--i,0) * 70ms)}html:not([data-intro-seen]):not([data-intro-skip]) .type-line,html:not([data-intro-seen]):not([data-intro-skip]) .type-caret{--intro-delay:1s}}@media (prefers-reduced-motion:reduce){.preloader{display:none}}.cascade-item{transition:opacity .4s var(--ease-out-quint), translate .4s var(--ease-out-quint);transition-delay:calc(var(--i,0) * 40ms)}@starting-style{.cascade-item{opacity:0;translate:0 .4em}}.skills-file{--line:3.25rem;min-height:calc(var(--rows) * var(--line) + 2rem)}.skills-lines{margin:0;padding:0;list-style:none;display:grid}.skills-lines>li{min-height:var(--line);grid-template-columns:2.75rem 2.75rem minmax(0,1fr);align-items:center;padding:.55rem 1rem .45rem 0;display:grid}.skills-lines .font-display{text-wrap:balance;font-size:clamp(1.75rem,2.6vw,2.6rem);line-height:1}.skills-mark{width:1.75rem;height:1.75rem;transition:scale .2s var(--ease-out-quint);display:block}.skills-icon{color:var(--muted);stroke-width:1.75px;padding:.1rem}.skills-ln{font-family:var(--font-mono);color:color-mix(in srgb, var(--muted) 70%, transparent);font-variant-numeric:tabular-nums;justify-self:end;padding-right:1.1rem;font-size:.75rem;transition:color .15s}@media (hover:hover) and (pointer:fine){.skills-lines>li:hover{background:color-mix(in srgb, var(--accent) 8%, transparent)}.skills-lines>li:hover .skills-ln{color:var(--accent)}.skills-lines>li:hover .skills-mark{scale:1.12}.skills-lines>li:hover .skills-icon{color:var(--accent)}}@media (min-width:1024px){.skills-file{--line:3.75rem;min-height:calc(var(--rows-2) * var(--line) + 3rem)}.skills-lines{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(var(--lines-2), auto);grid-auto-flow:column}}@keyframes type-line{to{clip-path:inset(0)}}@keyframes caret-blink{50%{opacity:0}}.type-line{clip-path:inset(0 100% 0 0);animation:type-line var(--dur) steps(var(--steps), jump-none) forwards;animation-delay:calc(var(--intro-delay,0s) + .45s + var(--at))}.type-caret{animation:1s step-end 8 caret-blink;animation-delay:calc(var(--intro-delay,0s) + .45s + var(--at))}@media (prefers-reduced-motion:reduce){.type-line{clip-path:none;animation:none}.type-caret{animation:none}}.case-study{counter-reset:section}.case-h2{counter-increment:section;font-family:var(--font-display), var(--font-sans);text-transform:uppercase;text-wrap:balance;align-items:baseline;gap:1rem;margin:4.5rem 0 1.25rem;font-size:clamp(2.25rem,5vw,3.75rem);line-height:1;display:flex}.case-h2:before{content:counter(section, decimal-leading-zero);font-family:var(--font-mono);letter-spacing:.1em;color:var(--accent);font-size:.8rem;translate:0 -.2em}.case-study :not(pre)>code{background:var(--surface);font-family:var(--font-mono);color:var(--foreground);border-radius:.375rem;padding:.1em .4em;font-size:.9em}.case-study [data-rehype-pretty-code-figure]{margin:1.75rem 0}.case-study [data-rehype-pretty-code-figure] pre{border:1px solid var(--border);background:var(--surface);font-family:var(--font-mono);border-radius:1rem;padding:1.25rem 0;font-size:.85rem;line-height:1.7;overflow-x:auto}.case-study [data-rehype-pretty-code-figure] [data-line]{padding:0 1.25rem}.case-study [data-rehype-pretty-code-figure] code span{color:var(--shiki-light)}.dark .case-study [data-rehype-pretty-code-figure] code span{color:var(--shiki-dark)}.case-study [data-rehype-pretty-code-title]{font-family:var(--font-mono);color:var(--muted);margin-bottom:.5rem;font-size:.75rem}@media print{@page{margin:14mm 16mm}#site-footer,.grain,canvas{display:none!important}.print-summary{break-inside:avoid}.dark .case-study [data-rehype-pretty-code-figure] code span{color:var(--shiki-light)}.case-study pre,.case-study figure,.case-study table{break-inside:avoid}}.journey{position:relative}.journey-view{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:thin;flex-direction:column;gap:2.25rem;padding-block:.5rem 1rem;display:flex;overflow-x:auto}.journey[data-pinned=true] .journey-view{scroll-snap-type:none;justify-content:center;gap:2rem;height:100svh;padding-block:4.5rem 5.5rem;position:sticky;top:0;overflow:hidden}.journey[data-pinned=true] .journey-track{flex:0 auto;min-height:0}.journey[data-pinned=true] .journey-card{width:min(clamp(22rem,28vw,34rem),82vw);min-height:0}.journey[data-pinned=true] .journey-media{aspect-ratio:4/3;flex:0 auto;min-height:4.5rem}.journey[data-pinned=true] .journey-text{flex:none}.journey-track{gap:1.5rem;width:max-content;padding-inline:1rem;display:flex}.journey-card{scroll-snap-align:start;flex-direction:column;gap:1rem;width:min(26rem,82vw);scroll-margin-inline:1rem;display:flex}.journey-media{aspect-ratio:16/9;border:1px solid var(--border);background:var(--surface);border-radius:1rem;overflow:hidden}.journey-media img{object-fit:cover;width:100%;height:100%}.journey-plate{height:100%;color:var(--muted);background:radial-gradient(110% 90% at 85% 0%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 65%);flex-direction:column;gap:.35rem;padding:1.25rem 1.5rem 1.25rem 3rem;display:flex;position:relative}.journey-plate:before{content:"";inset-block:0;background:linear-gradient(var(--border), var(--accent) 40%, var(--border));width:2px;position:absolute;left:1.5rem}.journey-plate:after{content:"";background:var(--surface);border:2px solid var(--accent);border-radius:50%;width:.7rem;height:.7rem;position:absolute;top:1.45rem;left:calc(1.5rem + 1px);translate:-50%}.journey-plate-year{color:color-mix(in srgb, var(--foreground) 14%, transparent);margin-top:auto;font-size:clamp(4rem,8vw,6rem);line-height:.85}.journey-card[data-kind=event] .journey-plate:after{border-color:var(--positive)}.journey-axis{flex:none;height:2.25rem;margin-inline:1rem;position:relative}.journey-axis-base,.journey-axis-fill{inset-inline:0;background:var(--border);border-radius:3px;height:3px;position:absolute;top:.45rem}.journey-axis-fill{background:var(--accent);transform-origin:0;transform:scaleX(var(--p,0))}.journey-tick{background:var(--background);border:2px solid var(--border);border-radius:50%;width:.85rem;height:.85rem;margin-left:-.425rem;transition:background-color .2s,border-color .2s;position:absolute;top:0}.journey-tick[data-on=true]{background:var(--accent);border-color:var(--accent)}.journey-tick-label{white-space:nowrap;font-family:var(--font-mono);color:var(--muted);font-size:.7rem;position:absolute;top:1.25rem;left:50%;translate:-50%}@media (min-width:640px){.journey-track{padding-inline:2rem}.journey-axis{margin-inline:2rem}.journey-card{scroll-margin-inline:2rem}}.journey-term{height:100%;font-family:var(--font-mono);flex-direction:column;font-size:.78rem;line-height:1.6;display:flex}.journey-term-brand{border-bottom:1px solid var(--border);background:radial-gradient(110% 100% at 50% 0%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 70%);flex:1;grid-template-rows:minmax(0,1fr);place-items:center;min-height:4.5rem;padding:1rem;display:grid}.journey-term-brand img{object-fit:contain;width:auto;max-width:70%;height:auto;max-height:min(5.5rem,100%)}.journey-term-brand .font-display{text-transform:uppercase;color:var(--accent);font-size:clamp(2.25rem,4.5vw,3.25rem);line-height:1}.journey-term-body{color:var(--muted);background:var(--background);flex:none;padding:.7rem .9rem .8rem}.journey-term-body ul{flex-wrap:wrap;column-gap:1rem;margin:0;padding:0;list-style:none;display:flex}.journey-term-caret{vertical-align:-.15em;background:currentColor;width:.55em;height:1.05em;margin-left:.4em;animation:1s step-end infinite caret-blink;display:inline-block}.journey[data-pinned=true] .journey-media:has(>.journey-term){min-height:11rem}@media (prefers-reduced-motion:reduce){.journey-term-caret{animation:none}}.journey-media:has(>.journey-term){aspect-ratio:auto}.journey-media:has(>.journey-term) .journey-term-brand{min-height:6.5rem}.build-caret{animation:1s step-end infinite caret-blink}@media (prefers-reduced-motion:reduce){.build-caret{animation:none}}.about-photo img{transition:scale .7s var(--ease-out-quint)}@media (hover:hover) and (pointer:fine){.about-photo:hover img{scale:1.04}}.mosaic{--mosaic-h:14rem;flex-wrap:wrap;gap:1rem .75rem;margin:0;padding:0;list-style:none;display:flex}@media (min-width:640px){.mosaic{--mosaic-h:20rem}}@media (min-width:1024px){.mosaic{--mosaic-h:26rem}}.mosaic>li{width:min(100%, calc(var(--mosaic-h) * var(--ratio)), calc(var(--mosaic-h) * 1.6));flex:none}.mosaic-photo{background:var(--surface);cursor:zoom-in;border:0;border-radius:1rem;width:100%;padding:0;display:block;overflow:hidden}.mosaic-photo img{width:100%;height:auto;transition:scale .6s var(--ease-out-quint);display:block}@media (hover:hover) and (pointer:fine){.mosaic-photo:hover img{scale:1.03}}.mosaic-photo:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.mosaic-caption{contain:inline-size;font-family:var(--font-mono);color:var(--muted);margin:.5rem 0 0;font-size:.75rem}@keyframes zoom-fade-in{0%{opacity:0}}@keyframes zoom-fade-out{to{opacity:0}}@keyframes zoom-in{0%{opacity:0;transform:scale(.96)}}.zoom-overlay[data-state=open]{animation:.2s zoom-fade-in}.zoom-overlay[data-state=closed]{animation:.16s zoom-fade-out}.zoom-content[data-state=open] .zoom-figure{animation:zoom-in .26s var(--ease-out-quint)}.zoom-figure{flex-direction:column;align-items:center;gap:.75rem;margin:0;display:flex}.zoom-figure img{object-fit:contain;border-radius:.75rem;width:auto;max-width:min(100%,64rem);max-height:78dvh}.zoom-figure figcaption{font-family:var(--font-mono);color:#ffffffd9;font-size:.8rem}.zoom-button{color:#fff;cursor:pointer;background:#0000004d;border:1px solid #ffffff4d;border-radius:999px;justify-content:center;align-items:center;width:2.75rem;height:2.75rem;transition:background-color .15s;display:inline-flex}.zoom-button:hover{background:#ffffff26}.zoom-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){.about-photo img,.mosaic-photo img{transition:none}.zoom-content .zoom-figure,.zoom-overlay{animation:none!important}}
