#logo-layer{position:fixed;inset:0;z-index:10;pointer-events:none;opacity:0;will-change:opacity}#logo-layer canvas{display:block;width:100%;height:100%}#footer{position:relative;z-index:15;height:100vh;overflow:hidden;mix-blend-mode:difference}#footer{--cred: min(calc(31vh / 6 / .94), calc((100vw - 2 * var(--pad)) / 23 / .58))}#credits{position:absolute;left:var(--pad);right:var(--pad);bottom:var(--pad);margin:0;text-align:center;white-space:nowrap;font-family:var(--mono);font-weight:500;text-transform:uppercase;font-size:var(--cred);line-height:.94;letter-spacing:-.02em;color:var(--ink)}#credits>span{display:block}#footer .corner{position:absolute;bottom:var(--pad);font-family:var(--mono);font-weight:500;font-size:12px;line-height:1;text-transform:uppercase;letter-spacing:.04em;color:var(--ink);text-decoration:none}#footer .corner.left{left:var(--pad)}#footer .corner.right{right:var(--pad)}@media(max-aspect-ratio:5/4){#credits{bottom:calc(var(--pad) + 24px)}}#credits [data-p],#credits .static{transition:color .2s ease}#credits[data-active] [data-p],#credits[data-active] .static{color:var(--quiet)}#credits[data-active] [data-p].on{color:var(--ink)}@font-face{font-family:Relative Faux;src:url(/fonts/Relative-Faux.woff2) format("woff2");font-weight:400;font-display:swap}@media(hover:hover){#credits .soon{cursor:none}}#credits[data-active] .soon.on{color:#2a2a2a}.cursor-label{position:fixed;left:0;top:0;z-index:100;pointer-events:none;white-space:nowrap;font-family:Relative Faux,system-ui,sans-serif;font-weight:400;font-size:clamp(15px,1.05vw,17px);line-height:1;text-transform:none;letter-spacing:0;color:#fff}@property --dot-gap{syntax: "<length-percentage>"; inherits: false; initial-value: -10%;}@keyframes dot-out{0%{--dot-gap: 0%;animation-timing-function:steps(24)}65%{--dot-gap: 100%;animation-timing-function:step-end}66%,to{--dot-gap: 130%}}.dot-link{position:relative;text-decoration:none}.dot-link:after{content:"";position:absolute;left:0;bottom:var(--dot-y, -2px);height:1px;width:calc(var(--reveal, 1) * 100%);background:linear-gradient(to right,var(--dot-color, rgba(242, 242, 238, .6)) 1px,transparent 1px) left / 4px 1px repeat-x}.dot-link:is(:hover,:focus-visible):after,#view-project.linked:is(:hover,:focus-visible) .vp-cta:after{-webkit-mask:linear-gradient(to right,#000 calc(var(--dot-gap) - 2px),transparent calc(var(--dot-gap) - 2px),transparent calc(var(--dot-gap) + 2px),#000 calc(var(--dot-gap) + 2px));mask:linear-gradient(to right,#000 calc(var(--dot-gap) - 2px),transparent calc(var(--dot-gap) - 2px),transparent calc(var(--dot-gap) + 2px),#000 calc(var(--dot-gap) + 2px));animation:dot-out 1.4s infinite}.arrow{position:relative;display:inline-block;overflow:hidden;width:1.143ex;height:1.143ex;margin-left:.22em;vertical-align:-.071ex}.arrow svg{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:var(--quiet);stroke-width:1;vector-effect:non-scaling-stroke;transition:transform .45s cubic-bezier(.2,.7,.2,1),stroke .2s ease}.arrow svg+svg{transform:translate(-110%,110%)}a:is(:hover,:focus-visible)+.arrow svg,.mail:is(:hover,:focus-visible) .arrow svg{stroke:var(--ink);transform:translate(110%,-110%)}a:is(:hover,:focus-visible)+.arrow svg+svg,.mail:is(:hover,:focus-visible) .arrow svg+svg{transform:translate(0)}#footer .corner:after{content:"";position:absolute;left:0;right:0;bottom:-5px;height:1px;background:linear-gradient(to right,var(--dot-color, rgba(242, 242, 238, .6)) 1px,transparent 1px) left / 4px 1px repeat-x;clip-path:inset(0 100% 0 0);transition:clip-path .35s ease}#footer .corner:focus-visible{outline:none}#footer .corner:focus-visible:after{clip-path:inset(0)}@media(hover:hover){#footer .corner:hover:after{clip-path:inset(0)}#footer .corner:is(:hover,:focus-visible):after{-webkit-mask:linear-gradient(to right,#000 calc(var(--dot-gap) - 2px),transparent calc(var(--dot-gap) - 2px),transparent calc(var(--dot-gap) + 2px),#000 calc(var(--dot-gap) + 2px));mask:linear-gradient(to right,#000 calc(var(--dot-gap) - 2px),transparent calc(var(--dot-gap) - 2px),transparent calc(var(--dot-gap) + 2px),#000 calc(var(--dot-gap) + 2px));animation:dot-out 1.4s .35s infinite}}
