:root{--room:#090a12;--bone:#e4e9ee;--bone-soft:#c5c9d8;--ash:#98a1ab;--seam:#48525d;--sky:#8fd6ff;--lilac:#b994ff;--purple:#a274ea;--resuelve:#66bfff;--apex:#22c55e;--accent:var(--lilac);--ui:.16s;--ease-out:cubic-bezier(.16, 1, .3, 1);--u:min(1vh, .5625vw);--gutter:max(16px, calc(7.8 * var(--u)));--column:calc(50 * var(--u));--type-label:clamp(13px, calc(1.45 * var(--u)), 16px);--type-small:clamp(14px, calc(1.55 * var(--u)), 18px);--type-body:clamp(16px, calc(2 * var(--u)), 24px);--type-lead:clamp(18px, calc(2.45 * var(--u)), 30px);--type-heading:clamp(22px, calc(3.3 * var(--u)), 40px);--type-title:clamp(44px, calc(10.3 * var(--u)), 160px);--type-display:calc(100cqi / 10.8);--track-label:.12em;font-optical-sizing:auto;color:var(--bone);background:var(--room);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-family:Archivo,system-ui,sans-serif}*,:before,:after{box-sizing:border-box}html{scroll-behavior:auto}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}body{background:var(--room);margin:0;overflow-x:hidden}.no-gl body{background:radial-gradient(120% 90% at 78% -20%, #1a2633, #17142c 38%, var(--room) 70%) fixed}a{color:inherit}.skip,.masthead,.kicker,.project__meta dt,.project__link,.surface-labels li,.hero__cue,.stack__item,.contact__links a{font-size:var(--type-label);letter-spacing:var(--track-label);text-transform:uppercase;font-weight:600;font-stretch:75%;line-height:1.2}.hero__line,.project__panel h3,.layer__name{text-wrap:balance}.hero__intro,.project__tagline,.project__panel p,.steps li,.layer__text,.contact__lead{text-wrap:pretty}:focus-visible{outline:1px solid var(--sky);outline-offset:4px}::selection{background:#8458b38c}.skip{left:var(--gutter);z-index:20;background:var(--sky);color:var(--room);transition:transform var(--ui) var(--ease-out);padding:10px 14px;text-decoration:none;position:fixed;top:12px;transform:translateY(-160%)}.skip:focus-visible{transform:none}#room{z-index:0;width:100%;height:100%;display:block;position:fixed;inset:0}.veil{z-index:5;background:var(--room);opacity:0;pointer-events:none;transition:opacity .8s var(--ease-out);position:fixed;inset:0}.veil.is-on{opacity:1;transition:opacity .24s ease-in}.capture,.capture *{cursor:none!important}.masthead{z-index:10;padding:14px var(--gutter);pointer-events:none;align-items:center;gap:32px;display:flex;position:fixed;inset:0 0 auto}.masthead>*{pointer-events:auto}.no-gl .masthead{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#090a12e6}.masthead a{text-decoration:none}.masthead__name{min-height:44px;transition:color var(--ui) var(--ease-out);align-items:center;margin-right:auto;display:inline-flex}.masthead__nav{gap:28px;display:flex}.masthead__nav a,.lang button{color:var(--bone-soft);transition:color var(--ui) var(--ease-out), text-decoration-color var(--ui) var(--ease-out);text-underline-offset:.6em;align-items:center;min-height:44px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:1px;display:inline-flex}.masthead__nav a[aria-current=true],.lang button[aria-pressed=true]{color:var(--bone);-webkit-text-decoration-color:var(--sky);text-decoration-color:var(--sky)}.masthead__name:hover,.masthead__nav a:hover,.lang button:hover{color:var(--sky)}.lang{gap:4px;display:flex}.lang button{font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;padding:0 8px}main{z-index:1;position:relative}.chapter{position:relative}.gl .chapter{height:calc(var(--length,1) * 100lvh)}.chapter__frame{min-height:100svh;padding:120px var(--gutter) 64px;position:relative}.gl .chapter__frame{pointer-events:none;min-height:0;padding:0;position:fixed;inset:0}.gl .chapter__frame[data-state=before],.gl .chapter__frame[data-state=after]{opacity:0}.gl .chapter__frame[data-state=active] a,.gl .chapter__frame[data-state=active] button{pointer-events:auto}.still{display:none}.no-gl .chapter__frame{max-width:1440px;min-height:0;padding:96px var(--gutter);border-top:1px solid var(--seam);grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);align-items:center;gap:48px 64px;margin:0 auto;display:grid}.no-gl .frame-hero{border-top:0;min-height:100svh}.no-gl .frame-quiet{display:none}.no-gl .frame-contact{grid-template-columns:minmax(0,1fr)}.no-gl .still{width:100%;height:auto;display:block}.no-gl main{z-index:auto}.no-gl .still--portrait{mix-blend-mode:lighten;justify-self:end;max-width:520px}.no-gl .still--phone{border-radius:28px;justify-self:center;max-width:320px}@media (max-width:760px){.no-gl .chapter__frame{padding:72px var(--gutter);grid-template-columns:minmax(0,1fr)}}[data-split] .line{white-space:nowrap;display:block}[data-split] .ch{will-change:transform, opacity;display:inline-block}.hero{max-width:50vw;container-type:inline-size}.gl .hero{left:var(--gutter);width:min(calc(66 * var(--u)), calc(50vw - var(--gutter)));max-width:none;position:absolute;top:50%;transform:translateY(-50%)}.hero__name{font-size:var(--type-display);letter-spacing:-.03em;text-transform:uppercase;margin:0;font-weight:800;font-stretch:112%;line-height:.84}.hero__name .line{display:inline-block}.hero__name .line+.line{margin-left:.21em}.hero__line{font-size:var(--type-heading);letter-spacing:-.015em;color:var(--bone);margin:.8em 0 0;font-weight:600;line-height:1.15}.hero__line .key{white-space:nowrap}.hero__intro{font-size:var(--type-body);color:var(--bone-soft);margin:.8em 0 0;line-height:1.55}.hero__cue{display:none}.gl .hero__cue{right:var(--gutter);color:var(--bone-soft);opacity:calc(1 - clamp(0, var(--t) * 12, 1));margin:0;display:block;position:absolute;bottom:clamp(28px,7vh,88px)}.gl .hero__cue:after{content:"";background:linear-gradient(var(--sky), transparent);transform-origin:top;width:1px;height:48px;animation:cue 2.4s var(--ease-out) infinite;margin:12px auto 0;display:block}.gl .chapter__frame:not([data-state=active]) .hero__cue:after{animation:none}@keyframes cue{0%{opacity:1;transform:scaleY(0)}70%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(1)}}.gl .hero__name .line{animation:hero-line 1.6s var(--ease-out) backwards}.gl .hero__name .line+.line{animation-delay:.12s}@keyframes hero-line{0%{opacity:0;letter-spacing:.12em;filter:blur(10px);transform:translate(-2vw)}}.gl .hero__name .ch{--o:clamp(0, (var(--t) - .02 - var(--d) * .1) * 7, 1);transform:translate3d(calc(var(--o) * (12vw + (1 - var(--d)) * 10vw)), calc(var(--o) * -7vh), 0);opacity:calc(1 - var(--o));filter:blur(calc(var(--o) * 7px));font-stretch:calc(112% + var(--o) * 13%)}.gl .hero__line,.gl .hero__intro{animation:fade-up 1.2s var(--ease-out) .5s backwards;opacity:calc(1 - clamp(0, var(--t) * 9, 1));transform:translate3d(calc(clamp(0, var(--t) * 9, 1) * 3vw), 0, 0)}.gl .hero__intro{animation-delay:.65s}@keyframes fade-up{0%{opacity:0;transform:translateY(14px)}}.stack{margin:calc(3.2 * var(--u)) -12.5% 0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000);mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000)}.stack__track{will-change:transform;width:max-content;animation:stack-travel var(--stack-time,40s) infinite;padding-inline:10%;display:flex}.stack:hover .stack__track{animation-play-state:paused}@keyframes stack-travel{0%,1.5%{animation-timing-function:cubic-bezier(.2,0,.25,1);transform:translate(0,0)}48.5%,51.5%{transform:translate3d(var(--stack-travel,0px), 0, 0);animation-timing-function:cubic-bezier(.2,0,.25,1)}98.5%,to{transform:translate(0,0)}}.stack__set{margin:0;padding:0;list-style:none;display:flex}.stack__item{white-space:nowrap;color:var(--bone-soft);align-items:center;gap:.8em;padding:.6em 1.6em;display:flex}.stack__item+.stack__item{border-left:1px solid var(--seam)}.stack__item:first-child{padding-left:0}.stack__item:last-child{padding-right:0}.stack__item img{flex:none;width:1.6em;height:1.6em}.gl .chapter__frame[data-state=active] .stack{pointer-events:auto}.stack[data-leaving]{overflow:visible;-webkit-mask-image:none;mask-image:none}.stack[data-leaving] .stack__track{animation-play-state:paused}.gl .stack[data-leaving] .stack__item{--o:clamp(0, (var(--t) - .02 - var(--d,.5) * .1) * 7, 1);opacity:calc(var(--fade,1) * (1 - var(--o)));transform:translate3d(calc(var(--o) * (12vw + (1 - var(--d,.5)) * 10vw)), calc(var(--o) * -7vh), 0);filter:blur(calc(var(--o) * 7px))}.key{font-weight:inherit;color:var(--accent)}.gl .project{right:var(--gutter);width:var(--column);isolation:isolate;position:absolute;top:50%;transform:translateY(-50%)}.gl .project:before{content:"";z-index:-1;pointer-events:none;transition:opacity .4s var(--ease-out);background:radial-gradient(closest-side,#090a12c7,#090a1280 55%,#090a1200);position:absolute;inset:-16% -30% -16% -6%}.gl .chapter__frame:not([data-state=active]) .project:before{opacity:0}.kicker{color:var(--accent);align-items:baseline;gap:14px;margin:0 0 1.4em;display:flex}.kicker:after,.panel-problem:before,.steps li:before,.project__note:before{content:"";background:var(--seam);transform-origin:0;height:1px;transform:scaleX(var(--show,1))}.kicker:after{flex:1;align-self:center}.project__lang{font-size:var(--type-small);color:var(--bone-soft);margin:-.8em 0 1.6em;line-height:1.4}.project__lang[data-only=en]:not(:lang(en)),.project__lang[data-only=es]:not(:lang(es)){display:none}.panel-problem,.steps li,.project__note{position:relative}.panel-problem:before,.steps li:before,.project__note:before{position:absolute;inset:0 0 auto}.project__title{font-size:calc(var(--title-scale,1) * var(--type-title));letter-spacing:-.03em;margin:0;font-weight:800;font-stretch:100%;line-height:.92}.project__tagline{font-size:var(--type-lead);color:var(--bone-soft);margin:1em 0 0;line-height:1.4}.project__tagline+.swap{margin-top:calc(4 * var(--u))}.project__meta{gap:calc(1.55 * var(--u));margin:0;display:grid}.project__meta div{grid-template-columns:calc(9 * var(--type-label)) minmax(0, 1fr);gap:calc(1.8 * var(--u));padding-top:calc(1.55 * var(--u));border-top:1px solid var(--seam);display:grid}.project__meta dt{color:var(--ash);padding-top:3px}.project__meta dd{font-size:var(--type-body);color:var(--bone-soft);margin:0;line-height:1.5}.panel-problem{padding-top:calc(1.55 * var(--u))}.project__panel h3{font-size:var(--type-heading);letter-spacing:-.015em;color:var(--bone);margin:0 0 .5em;font-weight:700;line-height:1.15}.project__panel p{font-size:var(--type-body);color:var(--bone-soft);margin:0 0 .8em;line-height:1.55}.project__panel .project__note{padding-top:calc(1.55 * var(--u));font-size:var(--type-small);color:var(--ash);margin-top:4px}.steps{gap:calc(1.55 * var(--u));margin:0;padding:0;list-style:none;display:grid}.steps li{padding-top:calc(1.55 * var(--u));font-size:var(--type-body);color:var(--bone-soft);line-height:1.5}.steps__title{color:var(--bone);margin-bottom:2px;font-weight:600;display:block}.project__link{border-bottom:1px solid var(--purple);min-height:44px;transition:color var(--ui) var(--ease-out), border-color var(--ui) var(--ease-out);align-items:center;margin-top:6px;text-decoration:none;display:inline-flex}.project__link:hover{color:var(--sky);border-color:var(--sky)}.gl .swap{display:grid}.gl .swap>*{grid-area:1/1}.no-gl .swap>*+*{margin-top:48px}.gl .frame-intro{--arrive:var(--enter)}.gl .frame-gather{--arrive:var(--t)}.gl .frame-project .project__title .ch{--in:clamp(0, (var(--arrive,1) - .8) * 8 - var(--d) * .5, 1);--out:clamp(0, var(--exit) * 7 - var(--d) * .5, 1);opacity:calc(var(--in) * (1 - var(--out)));transform:translate3d(calc((1 - var(--in)) * .5em - var(--out) * .7em), 0, 0);filter:blur(calc((1 - var(--in) + var(--out)) * 7px));font-stretch:calc(100% + (1 - var(--in)) * 25% + var(--out) * 25%)}.gl .frame-intro .kicker,.gl .frame-intro .project__tagline{--show:calc(clamp(0, (var(--enter) - .86) * 9, 1) * (1 - clamp(0, var(--exit) * 8, 1)));opacity:var(--show)}.gl .frame-intro .project__meta{--out:clamp(0, (var(--local) - .38) * 9, 1);opacity:calc(clamp(0, (var(--enter) - .92) * 14, 1) * (1 - var(--out)));transform:translate3d(0, calc(var(--out) * -.8em), 0)}.gl .frame-intro .panel-problem{--in:clamp(0, (var(--local) - .46) * 8, 1)}.gl .frame-intro .panel-problem>*,.gl .frame-intro .panel-problem:before{opacity:calc(var(--in) * (1 - clamp(0, var(--exit) * 4, 1)))}.gl .frame-intro .panel-problem>*{transform:translate3d(0, calc((1 - var(--in)) * .8em), 0)}.gl .frame-intro .panel-problem:before{--show:var(--in)}.gl .frame-intro .panel-problem h3{font-stretch:calc(100% + (1 - var(--in)) * 25%)}.gl .frame-detail .kicker{--show:calc(clamp(0, var(--t) * 8 - .4, 1) * (1 - var(--gone)));opacity:var(--show)}.gl .frame-detail .project__lang{opacity:calc(clamp(0, var(--t) * 8 - .4, 1) * (1 - var(--gone)))}.gl .frame-intro .project__lang{opacity:calc(clamp(0, (var(--enter) - .86) * 9, 1) * (1 - clamp(0, var(--exit) * 8, 1)))}.gl .frame-detail{--gone:clamp(0, var(--exit) * 4, 1)}.gl .frame-detail .panel-approach{--out:clamp(0, (var(--local) - .56) * 16, 1);opacity:calc(1 - var(--out));transform:translate3d(0, calc(var(--out) * -.8em), 0)}.gl .frame-detail .panel-approach h3{--in:clamp(0, (var(--t) - .05) * 7, 1);opacity:calc(var(--in) * (1 - var(--gone)));font-stretch:calc(100% + (1 - var(--in)) * 25%)}.gl .frame-detail .steps li{--in:clamp(0, (var(--t) - .12 - var(--k,0) * .08) * 7, 1);opacity:calc(var(--in) * (1 - var(--gone)));transform:translate3d(0, calc((1 - var(--in)) * .8em), 0)}.gl .frame-detail .steps li:before,.gl .frame-detail .project__note:before{--show:var(--in)}.gl .frame-detail .panel-result>*{--in:clamp(0, (var(--local) - .6 - var(--k,0) * .015) * 18, 1);opacity:calc(var(--in) * (1 - var(--gone)));transform:translate3d(0, calc((1 - var(--in)) * .8em), 0)}.gl .frame-detail .steps li:nth-child(2),.gl .frame-detail .panel-result>:nth-child(2){--k:1}.gl .frame-detail .steps li:nth-child(3),.gl .frame-detail .panel-result>:nth-child(3){--k:2}.gl .frame-detail .steps li:nth-child(4){--k:3}.gl .frame-detail .panel-result h3{font-stretch:calc(100% + (1 - var(--in)) * 25%)}.surface-labels{display:none}.gl .surface-labels{margin:0;padding:0;list-style:none;display:block}.gl .surface-labels li{transform:translate3d(var(--x,-999px), var(--y,-999px), 0) translateX(-50%);color:var(--ash);white-space:nowrap;opacity:calc(var(--a,0) * (1 - clamp(0, var(--exit) * 8, 1)));position:absolute;top:0;left:0}.gl .surface-labels[data-anchor=top] li{transform:translate3d(var(--x,-999px), var(--y,-999px), 0);background:var(--room);color:var(--bone-soft);padding:7px 10px 6px}.approach__title{--title-scale:.76}.gl .frame-gather .kicker,.gl .frame-gather .project__tagline{--show:calc(clamp(0, (var(--t) - .86) * 9, 1) * (1 - clamp(0, (var(--exit) - .05) * 4, 1)));opacity:var(--show)}.gl .frame-gather .project__title .ch{--out:clamp(0, (var(--exit) - .05) * 4 - var(--d) * .4, 1)}.layer__name{font-size:var(--type-heading);letter-spacing:-.015em;margin:0 0 .5em;font-weight:700;line-height:1.15}.layer__text{font-size:var(--type-lead);color:var(--bone-soft);margin:0 0 .8em;line-height:1.4}.gl .frame-approach .kicker{--show:calc(clamp(0, var(--local) * 20, 1) * (1 - clamp(0, var(--exit) * 4, 1)));opacity:var(--show)}.gl .frame-approach .layer{--vis:calc(clamp(0, (var(--local) - var(--a)) * 30, 1) * (1 - clamp(0, (var(--local) - var(--b)) * 30, 1)));opacity:var(--vis);transform:translate3d(0, calc((1 - var(--vis)) * 10px), 0)}.gl .frame-approach .layer:last-child{--vis:calc(clamp(0, (var(--local) - var(--a)) * 30, 1) * (1 - clamp(0, var(--exit) * 4, 1)))}.gl .frame-approach .layer__name{font-stretch:calc(100% + (1 - var(--vis)) * 25%)}.contact__name{font-size:var(--type-title);text-transform:uppercase;margin:0 0 24px;font-weight:800;font-stretch:112%;line-height:.9}.gl .contact__name{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.gl .contact{width:min(calc(80 * var(--u)), calc(100vw - 2 * var(--gutter)));text-align:center;--show:clamp(0, (var(--t) - .82) * 8, 1);opacity:var(--show);position:absolute;bottom:clamp(32px,11vh,120px);left:50%;transform:translate(-50%)}.gl .contact__kicker{justify-content:center}.gl .contact__kicker:before{content:"";background:var(--seam);transform-origin:100%;height:1px;transform:scaleX(var(--show,1));align-self:center}.gl .contact__kicker:before,.gl .contact__kicker:after{flex:0 0 calc(6 * var(--u))}.contact__lead{font-size:var(--type-lead);color:var(--bone-soft);margin:0 0 .5em;line-height:1.4}.contact__email{font-size:var(--type-heading);letter-spacing:-.01em;background:linear-gradient(90deg, var(--purple), var(--lilac) 55%, var(--sky)) 0 100% / 100% 1px no-repeat;transition:background-size var(--ui) var(--ease-out), color var(--ui) var(--ease-out);padding-bottom:6px;font-weight:600;line-height:1.15;text-decoration:none;display:inline-block}.contact__email:hover{color:var(--sky);background-size:100% 2px}.contact__links{margin:calc(2.9 * var(--u)) 0 0;flex-wrap:wrap;gap:8px 28px;padding:0;list-style:none;display:flex}.gl .contact__links{justify-content:center}.contact__links a{min-height:44px;color:var(--ash);transition:color var(--ui) var(--ease-out);align-items:center;text-decoration:none;display:inline-flex}.contact__links a:hover{color:var(--sky)}.contact__foot{font-size:var(--type-small);color:var(--ash);margin:1.3em 0 0}[data-scramble=wait],[data-h],[data-g]{-webkit-text-fill-color:transparent}[data-g]{position:relative}[data-g]:after{content:attr(data-g);-webkit-text-fill-color:var(--accent);position:absolute;top:0;left:50%;transform:translate(-50%)}@media (max-width:760px){:root{--u:8px;--gutter:clamp(16px, 4.4vw, 24px);--column:auto;--type-title:clamp(44px, 13vw, 72px);--type-display:calc(100cqi / 6.75)}.hero__name .line{display:block}.hero__name .line+.line{margin-left:0}.masthead{letter-spacing:.08em;gap:12px;padding-top:8px}.masthead__name{display:none}.masthead__nav{gap:16px;margin-right:auto}.masthead__nav a,.lang button{white-space:nowrap}.gl .hero{width:auto;right:var(--gutter);top:auto;bottom:16px;transform:none}.hero__line{font-size:var(--type-body);margin-top:.7em}.hero__intro{font-size:var(--type-small);margin-top:.5em;line-height:1.45}.stack{margin-top:10px}.stack__item{padding:.5em 1.2em}.gl .hero__cue{display:none}.gl .project{left:var(--gutter);right:var(--gutter);top:auto;bottom:24px;transform:none}.project__tagline{font-size:var(--type-body);margin-top:14px}.project__tagline+.swap{margin-top:20px}.project__meta{gap:8px}.project__meta div{grid-template-columns:minmax(0,1fr);gap:2px;padding-top:8px}.project__meta dd{font-size:var(--type-small);line-height:1.4}.panel-problem{padding-top:8px}.gl .swap>*{align-self:start}.steps{gap:8px}.steps li{font-size:var(--type-small);padding-top:8px;line-height:1.4}.gl .surface-labels{display:none}.gl [data-composed] .hero,.gl [data-composed] .project,.gl [data-composed] .contact{top:var(--text-top);bottom:auto}}@media (prefers-reduced-motion:reduce){.gl .hero__name .line,.gl .hero__line,.gl .hero__intro{animation:none}.gl .hero__cue:after{animation:none;transform:none}.stack{scrollbar-width:none;margin-inline:0;overflow-x:auto;-webkit-mask-image:none;mask-image:none}.stack__track{padding-inline:0;animation:none}.gl .stack[data-leaving] .stack__item{filter:none;transform:none}.gl [data-split] .ch{filter:none!important;font-stretch:100%!important;transform:none!important}.gl .hero__name .ch{font-stretch:112%!important}.gl .frame-approach .layer__name{font-stretch:100%}.gl .kicker:before,.gl .kicker:after,.gl .panel-problem:before,.gl .steps li:before,.gl .project__note:before,.gl .frame-intro .project__meta,.gl .frame-intro .panel-problem>*,.gl .frame-detail .panel-approach,.gl .frame-detail .panel-approach h3,.gl .frame-detail .steps li,.gl .frame-detail .panel-result>*{transform:none}.gl .frame-intro .panel-problem h3,.gl .frame-detail .panel-approach h3,.gl .frame-detail .panel-result h3{font-stretch:100%}}
