.site-header[data-astro-cid-nen7h5rs]{z-index:50;background:var(--bg);border-bottom:1px solid var(--line);position:sticky;top:0}.header-inner[data-astro-cid-nen7h5rs]{z-index:1;pointer-events:none;justify-content:space-between;align-items:center;gap:var(--space-5);min-height:4.5rem;display:flex;position:relative}.name[data-astro-cid-nen7h5rs],nav[data-astro-cid-nen7h5rs]{pointer-events:auto}.name[data-astro-cid-nen7h5rs]{flex:0 auto;align-items:center;min-height:44px;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}nav[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-5);font-size:var(--step--1);white-space:nowrap;display:flex}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{align-items:center;min-height:44px;text-decoration:none;display:inline-flex}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs].active{color:var(--ink);text-underline-offset:.35em;text-decoration:underline 1px}.back-icon[data-astro-cid-nen7h5rs]{display:none}@media (width<=560px){.name[data-astro-cid-nen7h5rs].is-back{justify-content:flex-start;min-width:44px}.back-icon[data-astro-cid-nen7h5rs]{margin-left:-8px;display:block}.back-label[data-astro-cid-nen7h5rs]{display:none}.header-inner[data-astro-cid-nen7h5rs]{gap:var(--space-3);min-height:4rem}.name[data-astro-cid-nen7h5rs]{max-width:8ch}nav[data-astro-cid-nen7h5rs]{gap:var(--space-3)}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs].nav-external{display:none}}.site-footer[data-astro-cid-jo6i4kqk]{margin-top:var(--space-9);padding-block:var(--space-8) var(--space-6);border-top:1px solid var(--line)}.footer-line[data-astro-cid-jo6i4kqk]{max-width:18ch;font-family:var(--font-display);font-size:var(--step-4);font-weight:var(--weight-display);letter-spacing:-.01em;line-height:var(--leading-tight);text-decoration:none;display:inline-block}.footer-line[data-astro-cid-jo6i4kqk]:hover,.footer-line[data-astro-cid-jo6i4kqk]:focus-visible{text-underline-offset:.12em;text-decoration:underline 1px}.footer-meta[data-astro-cid-jo6i4kqk]{justify-content:space-between;align-items:center;gap:var(--space-5);margin-top:var(--space-8);color:var(--ink-3);font-size:var(--step--1);line-height:1.5;display:flex}.footer-meta[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{min-height:44px;color:var(--ink-3);align-items:center;display:inline-flex}.footer-meta[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--ink)}nav[data-astro-cid-jo6i4kqk]{gap:var(--space-4);display:flex}@media (width<=640px){.footer-meta[data-astro-cid-jo6i4kqk]{flex-direction:column;align-items:flex-start}}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-cyrillic-ext-wght-normal.DzyfIafT.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-cyrillic-wght-normal.BMDVbyM7.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-greek-ext-wght-normal.BWSLJLk6.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-greek-wght-normal.C9H9m1vD.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-vietnamese-wght-normal.C1uRvKPU.woff2)format("woff2-variations");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:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-latin-ext-wght-normal.C8iNium2.woff2)format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-latin-wght-normal.BqRLTx4X.woff2)format("woff2-variations");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:"Source Sans 3 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-cyrillic-ext-wght-italic.Bmy0yRBR.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Sans 3 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-cyrillic-wght-italic.BqzjwPnH.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Sans 3 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-greek-ext-wght-italic.CsGuNfVR.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:"Source Sans 3 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-greek-wght-italic.BfAgiArQ.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Sans 3 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-vietnamese-wght-italic.DnchwVcj.woff2)format("woff2-variations");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:"Source Sans 3 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-latin-ext-wght-italic.B1mMy0tD.woff2)format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Sans 3 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-sans-3-latin-wght-italic.Bg-PIjcQ.woff2)format("woff2-variations");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:Source Code Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-code-pro-cyrillic-ext-wght-normal.BODHZjil.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Source Code Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-code-pro-cyrillic-wght-normal.aqTvhEeI.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Source Code Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-code-pro-greek-ext-wght-normal.De6jIOMD.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Source Code Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-code-pro-greek-wght-normal.BvT6WsG1.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Source Code Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-code-pro-vietnamese-wght-normal.B6x53GZG.woff2)format("woff2-variations");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:Source Code Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-code-pro-latin-ext-wght-normal.0UZNSh4u.woff2)format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Source Code Pro Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-code-pro-latin-wght-normal.BP8Zz55n.woff2)format("woff2-variations");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}:root{color-scheme:light;--bg:#fbfbf9;--surface:#f1f1ee;--ink:#141413;--ok:#0a9a5a;--ok-ink:#0a7a48;--ground-bg:#141413;--ground-ink:#fbfbf9;--ground-ink-2:#c9c9c3;--ground-ink-3:#a3a39c;--ground-line:#34342f;--ground-surface:#1f1f1d;--fringe-1:#ffd21a;--fringe-2:#ff2d78;--fringe-3:#7a3dff;--fringe-4:#12c8ff;--ink-2:#474744;--ink-3:#696964;--line:#dededa;--mark:#ffe97a;--font-display:"Source Sans 3 Variable", system-ui, sans-serif;--font-body:"Source Sans 3 Variable", system-ui, sans-serif;--font-mono:"Source Code Pro Variable", ui-monospace, monospace;--weight-display:600;--step--1:clamp(.83rem, .8rem + .15vw, .9rem);--step-0:clamp(1rem, .96rem + .2vw, 1.125rem);--step-1:clamp(1.25rem, 1.15rem + .5vw, 1.5rem);--step-2:clamp(1.6rem, 1.4rem + 1vw, 2.2rem);--step-3:clamp(2.2rem, 1.8rem + 2vw, 3.4rem);--step-4:clamp(3rem, 2.2rem + 4.5vw, 6.5rem);--step-5:clamp(3.6rem, 2.2rem + 8vw, 10rem);--leading-tight:1.02;--leading-body:1.6;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4.5rem;--space-9:7rem;--gutter:clamp(1rem, 4vw, 3rem);--measure:66ch;--max:1360px;--radius-1:6px;--radius-2:14px;--ease-out:cubic-bezier(.22, 1, .36, 1);--dur-1:.16s;--dur-2:.42s;--dur-3:.9s}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;text-size-adjust:100%}body{background:var(--bg);min-width:320px;color:var(--ink);font-family:var(--font-body);font-size:var(--step-0);line-height:var(--leading-body);margin:0;overflow-x:hidden}main,section,article,header,footer,nav,figure,figcaption{display:block}h1,h2,h3,p,figure,blockquote,ul,ol,dl,dd{margin:0}ul,ol{padding:0}button,input,textarea,select{font:inherit}img,picture,video,canvas,svg{max-width:100%}img{height:auto;display:block}a{color:var(--ink);text-underline-offset:.2em;text-decoration-line:underline;text-decoration-thickness:1px}a:hover{color:var(--ink);text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--ink);outline-offset:3px}::selection{background:var(--mark);color:var(--ink)}.skip-link{top:var(--space-4);left:var(--space-4);z-index:100;padding:var(--space-2) var(--space-4);background:var(--ink);color:var(--bg);font-family:var(--font-mono);font-size:var(--step--1);transform:translateY(calc(-100% - var(--space-8)));transition:transform var(--dur-1) var(--ease-out);position:fixed}.skip-link:focus{color:var(--bg);transform:translateY(0)}.container{width:100%;max-width:var(--max);padding-inline:var(--gutter);margin-inline:auto}.prose{width:100%;max-width:var(--measure);padding-inline:var(--gutter);margin-inline:auto}.prose p,.prose ul,.prose ol{margin-block:var(--space-5)}.prose h2{margin-top:var(--space-8);margin-bottom:var(--space-4);font-family:var(--font-display);font-size:var(--step-3);font-weight:var(--weight-display);letter-spacing:-.01em;line-height:1.1}.prose h2+p{margin-top:var(--space-4)}.prose h3{margin-top:var(--space-7);margin-bottom:var(--space-4);font-family:var(--font-body);font-size:var(--step-1);font-weight:600;line-height:1.25}.prose ul,.prose ol{padding-left:var(--space-6)}.prose li+li{margin-top:var(--space-2)}.prose strong{font-weight:600}.prose em{font-style:italic}figure.media{margin-block:var(--space-7)}.prose figure.media,.prose .grid-1,.prose .grid-2,.prose .grid-3{margin-block:var(--space-6) var(--space-5)}.prose>h2+figure.media{margin-block:var(--space-7) calc(var(--space-5) + var(--space-1))}.prose>figure.media:has(+figure.media){margin-bottom:var(--space-5)}.prose>figure.media+figure.media{margin-top:var(--space-5)}.prose p.before-media{margin-bottom:2.5rem}figure.size-text{width:100%;max-width:var(--measure);margin-inline:auto}figure.size-wide,.grid-1.size-wide,.grid-2.size-wide,.grid-3.size-wide{width:min(calc(var(--max) - (2 * var(--gutter))), calc(100vw - (2 * var(--gutter))));max-width:none;margin-inline:calc(50% - min(calc(var(--max) - (2 * var(--gutter))), calc(100vw - (2 * var(--gutter)))) / 2)}figure.size-full{width:100vw;max-width:none;margin-inline:calc(50% - 50vw)}.media-frame{background:var(--surface);border-radius:var(--radius-2);position:relative;overflow:hidden}.media-frame>img,.media-frame>picture,.media-frame>picture>img,.media-frame>video,.media-frame>canvas{width:100%;height:100%}.media-frame>img,.media-frame>picture>img,.media-frame>video{object-fit:cover}.size-full .media-frame{border-radius:0}figcaption{margin-top:var(--space-3);color:var(--ink-3);font-family:var(--font-body);font-size:var(--step--1);line-height:1.5}.lede{max-width:var(--measure);color:var(--ink-2);font-family:var(--font-body);font-size:var(--step-2);line-height:1.4}.grid-1,.grid-2,.grid-3{gap:var(--space-5);margin-block:var(--space-7);display:grid}.grid-1.gap-tight{gap:var(--space-2)}.grid-1{grid-template-columns:minmax(0,1fr)}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-1>figure.media,.grid-2>figure.media,.grid-3>figure.media{width:100%;margin:0}.stats{margin-block:var(--space-8);border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.stat{padding-block:var(--space-5)}.stat+.stat{padding-left:var(--space-5)}.stat-value{font-family:var(--font-display);font-size:var(--step-4);font-weight:var(--weight-display);letter-spacing:-.01em;line-height:var(--leading-tight)}.stat-label,.stat-note{font-family:var(--font-body);font-size:var(--step--1);line-height:1.5}.stat-label{margin-top:var(--space-2);color:var(--ink-3)}.stat-note{margin-top:var(--space-2);color:var(--ink-2)}.callout{margin-block:var(--space-8);padding-left:var(--space-5);border-left:2px solid var(--ink);font-family:var(--font-body);font-size:var(--step-1);line-height:1.45}.callout p{margin:0}@media (width<=719px){.grid-2,.grid-3,.stats{grid-template-columns:1fr}.stat+.stat{border-top:1px solid var(--line);padding-left:0}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.media-frame[data-aspect]{aspect-ratio:16/9}::view-transition{pointer-events:none}@media (prefers-reduced-motion:no-preference){.site-header{view-transition-name:site-header}::view-transition-group(site-header){z-index:10;animation:none}::view-transition-old(site-header){display:none}::view-transition-new(site-header){animation:none}::view-transition-old(root){animation:.26s var(--ease-out) both vt-root-out;transform-origin:var(--vt-ox,50%) var(--vt-oy,50%)}::view-transition-new(root){animation:.32s var(--ease-out) .1s both vt-root-in}::view-transition-old(case-hero),::view-transition-new(case-hero){object-fit:cover;height:100%}::view-transition-group(case-hero){z-index:2;animation-duration:.5s;animation-timing-function:cubic-bezier(.3,.9,.2,1);animation-delay:60ms}::view-transition-group(case-title),::view-transition-group(case-rule){z-index:3}html.vt-case::view-transition-image-pair(case-hero){animation:.5s cubic-bezier(.3,.9,.2,1) 60ms both vt-camera-open}html.vt-case::view-transition-old(case-hero){animation:.24s linear 60ms both vt-cover-out}html.vt-case::view-transition-new(case-hero){animation:.4s var(--ease-out) .12s both vt-rack-in}html.vt-case::view-transition-new(case-title){animation:.28s var(--ease-out) both vt-title-in}html.vt-case::view-transition-new(case-meta){animation:.24s var(--ease-out) .46s both vt-details-in}html.vt-draw-rule::view-transition-new(case-rule){animation:.36s var(--ease-out) both vt-rule-draw;transform-origin:0}html.vt-home::view-transition-image-pair(case-hero){animation:.42s cubic-bezier(.3,.9,.2,1) 60ms both vt-camera-home}html.vt-home::view-transition-old(root){animation:.18s var(--ease-out) both vt-fade-out}html.vt-home::view-transition-old(case-hero){animation:.24s linear 60ms both vt-cover-out}html.vt-home::view-transition-new(case-hero){animation:.28s var(--ease-out) .2s both vt-rack-in-soft}html.vt-home::view-transition-old(case-title){animation:.14s ease-in both vt-title-out}html.vt-home [data-vt-frame]{animation:.22s var(--ease-out) .42s vt-land-home}html.land:not(.vt-full)::view-transition-old(root){animation:.2s var(--ease-out) both vt-fade-out}html.land:not(.vt-full)::view-transition-new(root){animation:.24s var(--ease-out) 80ms both vt-fade-in}html.land:not(.vt-full)::view-transition-group(case-hero){animation-duration:.42s}html.land:not(.vt-full)::view-transition-image-pair(case-hero){animation:.42s cubic-bezier(.3,.9,.2,1) both vt-camera-soft}html.land:not(.vt-full)::view-transition-old(case-hero){animation:.2s linear both vt-fade-out}html.land:not(.vt-full)::view-transition-new(case-hero){animation:.24s var(--ease-out) 60ms both vt-fade-in}html.vt-lite::view-transition-old(root),html.vt-lite::view-transition-new(root),html.vt-lite::view-transition-old(case-hero),html.vt-lite::view-transition-new(case-hero){filter:none!important}html.no-vt.land .project-meta{animation:.24s var(--ease-out) .46s both vt-details-in}html.no-vt.land .case-rule{animation:.36s var(--ease-out) both vt-rule-draw;transform-origin:0}@keyframes vt-root-out{to{opacity:0;filter:blur(6px);transform:scale(1.04)}}@keyframes vt-root-in{0%{opacity:0;filter:blur(4px);transform:scale(.985)}}@keyframes vt-fade-out{to{opacity:0}}@keyframes vt-fade-in{0%{opacity:0}}@keyframes vt-camera-open{0%{transform:perspective(1400px) rotateX(5deg) rotateY(var(--vt-ry,0deg)) translateZ(-60px)}}@keyframes vt-camera-home{0%{transform:perspective(1400px)rotateX(-3deg)translateZ(-40px)}}@keyframes vt-camera-soft{0%{transform:perspective(1400px)rotateX(3deg)scale(1.02)}}@keyframes vt-cover-out{to{opacity:0;filter:blur(4px)}}@keyframes vt-rack-in{0%{opacity:0;filter:blur(8px)}}@keyframes vt-rack-in-soft{0%{opacity:0;filter:blur(3px)}}@keyframes vt-title-in{0%{clip-path:inset(0 0 100%);transform:translateY(.35em)}to{clip-path:inset(0 0 -10%);transform:none}}@keyframes vt-title-out{to{opacity:0;transform:translateY(-.2em)}}@keyframes vt-details-in{0%{opacity:0;transform:translateY(10px)}}@keyframes vt-rule-draw{0%{transform:scaleX(0)}}@keyframes vt-land-home{0%{transform:scale(1.02)}}}.vt-rgb{z-index:2;background:var(--ground-bg);isolation:isolate;pointer-events:none;position:absolute;inset:0;overflow:clip}.vt-rgb canvas{mix-blend-mode:screen;width:100%;max-width:none;height:100%;position:absolute;inset:0}[data-vt-frame]{position:relative}.case-preview{z-index:5;aspect-ratio:16/10;border-radius:var(--radius-2);background:var(--surface);opacity:0;pointer-events:none;width:280px;transition:opacity var(--dur-1) linear;position:fixed;top:0;left:0;overflow:hidden}.case-preview.is-on{opacity:1}.case-preview img{object-fit:cover;width:100%;height:100%;display:block}.signal-field{z-index:1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.media-frame:has(>.signal-field){position:relative}@media print{.signal-field{display:none}}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.section-heading h2,.decision,.project-meta{animation-name:reveal-up;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view();animation-range:entry entry 45%}@keyframes reveal-up{0%{clip-path:inset(0 0 100%);transform:translateY(.6em)}to{clip-path:inset(0 0 -10%);transform:none}}}}.phone-reveal{transition:opacity .52s var(--ease-out), transform .62s var(--ease-out)}.phone-hidden{opacity:0;transform:translateY(28px);animation:none!important}@media (width<=760px){.phone-hidden{transform:translateY(16px)}}@media (prefers-reduced-motion:no-preference){html.no-vt main{animation:page-in .32s var(--ease-out) both}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}}}.rubber-name{position:relative}.rubber-canvas{pointer-events:none;max-width:none;position:absolute}.rubber-flow{z-index:-1;pointer-events:none;filter:blur(10px);max-width:none;position:absolute}.rubber-base{width:0;height:0;display:inline-block}.is-rubber,.is-rubber::selection{color:#0000}.intro-cover{display:none}html.intro .intro-cover{z-index:100;padding-inline:var(--gutter);background:var(--bg);place-items:center;animation:.62s cubic-bezier(.65,0,.35,1) 1.02s both intro-out;display:grid;position:fixed;inset:0}html.intro .intro-cover p{font-family:var(--font-display);font-size:var(--step-3);font-weight:var(--weight-display);letter-spacing:-.01em;animation:.62s cubic-bezier(.16,1,.3,1) both intro-text-in,.42s cubic-bezier(.55,0,.8,.2) .96s forwards intro-text-out}@keyframes intro-text-in{0%{opacity:0;filter:blur(8px);transform:translateY(14px)scale(.98)}}@keyframes intro-text-out{to{opacity:0;filter:blur(6px);transform:translateY(-14px)scale(1.01)}}@keyframes intro-out{to{opacity:0;visibility:hidden}}@media print{html.intro .intro-cover{display:none}}html{scroll-padding-top:6rem}html.ink-live .site-header{border-bottom-color:#0000}.ink-rail{height:0;position:absolute;bottom:-1px;left:0;right:0}.ink-line{height:0;position:relative}.ink-line canvas{pointer-events:none;max-width:none;position:absolute;top:-24px;left:0}.ink-marks a{width:44px;height:44px;margin-left:-22px;position:absolute;top:-22px}.ink-marks a:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}.ink-marks span{padding:var(--space-1) var(--space-2);color:var(--ink);font-size:var(--step--1);white-space:nowrap;background:var(--bg);border:1px solid var(--line);display:none;position:absolute;top:100%;left:50%;transform:translate(-50%)}.ink-marks a:hover span,.ink-marks a:focus-visible span{display:block}.ink-press{z-index:60;pointer-events:none;max-width:none;position:absolute}a:active{text-decoration-thickness:3px}.ink-pressing,.ink-pressing *{color:#0000!important;text-decoration-color:#0000!important}.ink-filter{width:0;height:0;position:absolute}.row-list{position:relative}.gust-rules{fill:none;width:100%;height:100%;stroke:var(--line);pointer-events:none;position:absolute;inset:0;overflow:visible}.gust-rules .is-hot{stroke:var(--ink)}.row-list.is-gusting .case-row{border-top-color:#0000}.row-list.is-gusting .row-rule,body:has(.is-gusting) .case-preview{visibility:hidden}@media print{.gust-rules{display:none}}.site-header .name.is-back{transition:transform .18s cubic-bezier(.2,.9,.2,1)}.site-header .name.is-back:hover{transform:translate(-3px)}@media (prefers-reduced-motion:no-preference){html.edit [data-vt-frame]{animation:none}html.edit.vt-full::view-transition-old(root){transform-origin:50%;animation:.26s cubic-bezier(.6,0,.9,.3) both e-whip-out}html.edit.vt-full::view-transition-new(root){transform-origin:50%;animation:.62s cubic-bezier(.1,.9,.16,1) 60ms both e-push-in}html.edit.vt-full.vt-home::view-transition-old(root){animation-duration:.24s}html.edit.vt-full.vt-home::view-transition-new(root){animation-duration:.56s;animation-delay:50ms}html.edit:not(.vt-full)::view-transition-old(root){animation:.22s cubic-bezier(.6,0,.9,.3) both e-whip-lite}html.edit:not(.vt-full)::view-transition-new(root){animation:.46s cubic-bezier(.1,.9,.16,1) 40ms both e-push-lite}html.edit:not(.vt-full).vt-home::view-transition-old(root){animation-duration:.2s}html.edit:not(.vt-full).vt-home::view-transition-new(root){animation-duration:.44s}@keyframes e-whip-out{0%{opacity:1}to{transform:translateX(calc(var(--vt-d) * 38vw)) skewX(calc(var(--vt-d) * 2.5deg)) scale(.97);filter:blur(10px);opacity:0}}@keyframes e-push-in{0%{transform:translateX(calc(var(--vt-d) * -100vw)) skewX(calc(var(--vt-d) * -4deg));filter:blur(14px);opacity:0}38%{filter:blur();opacity:1}to{filter:blur();opacity:1;transform:none}}@keyframes e-whip-lite{99%{transform:translateX(calc(var(--vt-d) * 30vw));opacity:1}to{transform:translateX(calc(var(--vt-d) * 30vw));opacity:0}}@keyframes e-push-lite{0%{transform:translateX(calc(var(--vt-d) * -100vw))}}html.edit.land::view-transition-group(case-hero){z-index:6}html.edit.land::view-transition-image-pair(case-hero){animation:none}html.edit.land::view-transition-old(case-hero),html.edit.land::view-transition-new(case-hero){opacity:1;mix-blend-mode:normal;animation:none}html.edit.vt-full.vt-case::view-transition-new(case-hero){animation:.42s cubic-bezier(.2,.8,.2,1) 40ms both e-rack}html.edit.vt-full.vt-home::view-transition-new(case-hero){animation:.3s cubic-bezier(.2,.8,.2,1) 40ms both e-rack-soft}@keyframes e-rack{0%{filter:blur(12px)}to{filter:blur()}}@keyframes e-rack-soft{0%{filter:blur(5px)}to{filter:blur()}}html.edit.vt-case::view-transition-group(case-title){z-index:7}html.edit.vt-full.vt-case::view-transition-new(case-title){animation:.62s cubic-bezier(.1,.9,.16,1) .1s both e-trail}html.edit:not(.vt-full).vt-case::view-transition-new(case-title){animation:.46s cubic-bezier(.1,.9,.16,1) 80ms both e-trail}html.edit.vt-full.vt-home::view-transition-old(case-title){animation:.18s cubic-bezier(.6,0,.9,.3) both e-title-out}html.edit:not(.vt-full).vt-home::view-transition-old(case-title),html.edit.vt-home::view-transition-old(case-rule){animation:.16s cubic-bezier(.6,0,.9,.3) both e-title-out}@keyframes e-trail{0%{transform:translateX(calc(var(--vt-d) * -100vw))}}@keyframes e-title-out{to{clip-path:inset(-12% -6% -12% 100%);transform:translate(12vw)}}html.edit.vt-full.vt-draw-rule::view-transition-new(case-rule){transform-origin:0;animation:.52s cubic-bezier(.1,.9,.16,1) 60ms both e-rule}html.edit:not(.vt-full).vt-draw-rule::view-transition-new(case-rule){transform-origin:0;animation:.44s cubic-bezier(.1,.9,.16,1) 50ms both e-rule}@keyframes e-rule{0%{transform:scaleX(0)}}html.edit.vt-full::view-transition-new(vt-lede){animation:.62s cubic-bezier(.1,.9,.16,1) .15s both e-trail}html.edit:not(.vt-full)::view-transition-new(vt-lede){animation:.46s cubic-bezier(.1,.9,.16,1) .12s both e-trail}html.edit.vt-full::view-transition-new(vt-m-0){animation:.62s cubic-bezier(.1,.9,.16,1) .2s both e-trail}html.edit.vt-full::view-transition-new(vt-m-1){animation:.62s cubic-bezier(.1,.9,.16,1) .235s both e-trail}html.edit.vt-full::view-transition-new(vt-m-2){animation:.62s cubic-bezier(.1,.9,.16,1) .27s both e-trail}html.edit.vt-full::view-transition-new(vt-m-3){animation:.62s cubic-bezier(.1,.9,.16,1) .305s both e-trail}html.edit.vt-full::view-transition-new(vt-m-4){animation:.62s cubic-bezier(.1,.9,.16,1) .34s both e-trail}html.edit.vt-full::view-transition-new(vt-m-5){animation:.62s cubic-bezier(.1,.9,.16,1) .375s both e-trail}html.edit:not(.vt-full)::view-transition-new(vt-m-0){animation:.46s cubic-bezier(.1,.9,.16,1) .16s both e-trail}html.edit:not(.vt-full)::view-transition-new(vt-m-1){animation:.46s cubic-bezier(.1,.9,.16,1) .19s both e-trail}html.edit:not(.vt-full)::view-transition-new(vt-m-2){animation:.46s cubic-bezier(.1,.9,.16,1) .22s both e-trail}html.edit:not(.vt-full)::view-transition-new(vt-m-3){animation:.46s cubic-bezier(.1,.9,.16,1) .25s both e-trail}html.edit:not(.vt-full)::view-transition-new(vt-m-4){animation:.46s cubic-bezier(.1,.9,.16,1) .28s both e-trail}html.edit:not(.vt-full)::view-transition-new(vt-m-5){animation:.46s cubic-bezier(.1,.9,.16,1) .31s both e-trail}html.edit::view-transition-group(vt-o-0),html.edit::view-transition-group(vt-o-1),html.edit::view-transition-group(vt-o-2),html.edit::view-transition-group(vt-o-3),html.edit::view-transition-group(vt-o-4),html.edit::view-transition-group(vt-o-5),html.edit::view-transition-group(vt-o-6),html.edit::view-transition-group(vt-o-7),html.edit::view-transition-group(vt-o-8),html.edit::view-transition-group(vt-o-9){z-index:3;animation-duration:0s}html.edit.vt-full.vt-case::view-transition-old(vt-o-0){animation:.16s cubic-bezier(.5,0,.9,.4) both e-layer-out}html.edit.vt-full.vt-home::view-transition-new(vt-o-0){animation:.52s cubic-bezier(.1,.9,.16,1) 90ms both e-layer-in}html.edit.vt-full.vt-case::view-transition-old(vt-o-1){animation:.16s cubic-bezier(.5,0,.9,.4) 18ms both e-layer-out}html.edit.vt-full.vt-home::view-transition-new(vt-o-1){animation:.52s cubic-bezier(.1,.9,.16,1) .126s both e-layer-in}html.edit.vt-full.vt-case::view-transition-old(vt-o-2){animation:.16s cubic-bezier(.5,0,.9,.4) 36ms both e-layer-out}html.edit.vt-full.vt-home::view-transition-new(vt-o-2){animation:.52s cubic-bezier(.1,.9,.16,1) .162s both e-layer-in}html.edit.vt-full.vt-case::view-transition-old(vt-o-3){animation:.16s cubic-bezier(.5,0,.9,.4) 54ms both e-layer-out}html.edit.vt-full.vt-home::view-transition-new(vt-o-3){animation:.52s cubic-bezier(.1,.9,.16,1) .198s both e-layer-in}html.edit.vt-full.vt-case::view-transition-old(vt-o-4){animation:.16s cubic-bezier(.5,0,.9,.4) 72ms both e-layer-out}html.edit.vt-full.vt-home::view-transition-new(vt-o-4){animation:.52s cubic-bezier(.1,.9,.16,1) .234s both e-layer-in}html.edit.vt-full.vt-case::view-transition-old(vt-o-5){animation:.16s cubic-bezier(.5,0,.9,.4) 90ms both e-layer-out}html.edit.vt-full.vt-home::view-transition-new(vt-o-5){animation:.52s cubic-bezier(.1,.9,.16,1) .27s both e-layer-in}html.edit.vt-full.vt-case::view-transition-old(vt-o-6){animation:.16s cubic-bezier(.5,0,.9,.4) .108s both e-layer-out}html.edit.vt-full.vt-home::view-transition-new(vt-o-6){animation:.52s cubic-bezier(.1,.9,.16,1) .306s both e-layer-in}html.edit.vt-full.vt-case::view-transition-old(vt-o-7){animation:.16s cubic-bezier(.5,0,.9,.4) .126s both e-layer-out}html.edit.vt-full.vt-home::view-transition-new(vt-o-7){animation:.52s cubic-bezier(.1,.9,.16,1) .342s both e-layer-in}html.edit.vt-full.vt-case::view-transition-old(vt-o-8){animation:.16s cubic-bezier(.5,0,.9,.4) .144s both e-layer-out}html.edit.vt-full.vt-home::view-transition-new(vt-o-8){animation:.52s cubic-bezier(.1,.9,.16,1) .378s both e-layer-in}html.edit.vt-full.vt-case::view-transition-old(vt-o-9){animation:.16s cubic-bezier(.5,0,.9,.4) .162s both e-layer-out}html.edit.vt-full.vt-home::view-transition-new(vt-o-9){animation:.52s cubic-bezier(.1,.9,.16,1) .414s both e-layer-in}html.edit:not(.vt-full).vt-case::view-transition-old(vt-o-0){animation:.15s cubic-bezier(.5,0,.9,.4) both e-layer-out-lite}html.edit:not(.vt-full).vt-home::view-transition-new(vt-o-0){animation:.46s cubic-bezier(.1,.9,.16,1) 70ms both e-layer-in-lite}html.edit:not(.vt-full).vt-case::view-transition-old(vt-o-1){animation:.15s cubic-bezier(.5,0,.9,.4) 16ms both e-layer-out-lite}html.edit:not(.vt-full).vt-home::view-transition-new(vt-o-1){animation:.46s cubic-bezier(.1,.9,.16,1) .102s both e-layer-in-lite}html.edit:not(.vt-full).vt-case::view-transition-old(vt-o-2){animation:.15s cubic-bezier(.5,0,.9,.4) 32ms both e-layer-out-lite}html.edit:not(.vt-full).vt-home::view-transition-new(vt-o-2){animation:.46s cubic-bezier(.1,.9,.16,1) .134s both e-layer-in-lite}html.edit:not(.vt-full).vt-case::view-transition-old(vt-o-3){animation:.15s cubic-bezier(.5,0,.9,.4) 48ms both e-layer-out-lite}html.edit:not(.vt-full).vt-home::view-transition-new(vt-o-3){animation:.46s cubic-bezier(.1,.9,.16,1) .166s both e-layer-in-lite}html.edit:not(.vt-full).vt-case::view-transition-old(vt-o-4){animation:.15s cubic-bezier(.5,0,.9,.4) 64ms both e-layer-out-lite}html.edit:not(.vt-full).vt-home::view-transition-new(vt-o-4){animation:.46s cubic-bezier(.1,.9,.16,1) .198s both e-layer-in-lite}html.edit:not(.vt-full).vt-case::view-transition-old(vt-o-5){animation:.15s cubic-bezier(.5,0,.9,.4) 80ms both e-layer-out-lite}html.edit:not(.vt-full).vt-home::view-transition-new(vt-o-5){animation:.46s cubic-bezier(.1,.9,.16,1) .23s both e-layer-in-lite}html.edit:not(.vt-full).vt-case::view-transition-old(vt-o-6){animation:.15s cubic-bezier(.5,0,.9,.4) 96ms both e-layer-out-lite}html.edit:not(.vt-full).vt-home::view-transition-new(vt-o-6){animation:.46s cubic-bezier(.1,.9,.16,1) .262s both e-layer-in-lite}html.edit:not(.vt-full).vt-case::view-transition-old(vt-o-7){animation:.15s cubic-bezier(.5,0,.9,.4) .112s both e-layer-out-lite}html.edit:not(.vt-full).vt-home::view-transition-new(vt-o-7){animation:.46s cubic-bezier(.1,.9,.16,1) .294s both e-layer-in-lite}html.edit:not(.vt-full).vt-case::view-transition-old(vt-o-8){animation:.15s cubic-bezier(.5,0,.9,.4) .128s both e-layer-out-lite}html.edit:not(.vt-full).vt-home::view-transition-new(vt-o-8){animation:.46s cubic-bezier(.1,.9,.16,1) .326s both e-layer-in-lite}html.edit:not(.vt-full).vt-case::view-transition-old(vt-o-9){animation:.15s cubic-bezier(.5,0,.9,.4) .144s both e-layer-out-lite}html.edit:not(.vt-full).vt-home::view-transition-new(vt-o-9){animation:.46s cubic-bezier(.1,.9,.16,1) .358s both e-layer-in-lite}@keyframes e-layer-out{30%{opacity:1}to{opacity:0;transform:translateX(calc(var(--vt-d) * 60vw));filter:blur(5px)}}@keyframes e-layer-in{0%{opacity:0;transform:translateX(calc(var(--vt-d) * -30vw))}22%{opacity:1}}@keyframes e-layer-out-lite{99%{opacity:1;transform:translateX(calc(var(--vt-d) * 50vw))}to{opacity:0;transform:translateX(calc(var(--vt-d) * 50vw))}}@keyframes e-layer-in-lite{0%{opacity:0;transform:translateX(calc(var(--vt-d) * -24vw))}22%{opacity:1}}html.no-vt.land main{animation:.48s cubic-bezier(.1,.9,.16,1) both e-ff-in}@keyframes e-ff-in{0%{opacity:0;transform:translate(40px)}30%{opacity:1}}html.no-vt.land .project-header h1{animation:.54s cubic-bezier(.1,.9,.16,1) 60ms both e-title-in}@keyframes e-title-in{0%{clip-path:inset(-12% 100% -12% 0);transform:translate(16vw)}to{clip-path:inset(-12% -6% -12% 0);transform:none}}}[id^=w-]{scroll-margin-top:6rem}
