@import "https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500..700&display=swap";:root{--color-text:#26251c;--color-bg:#fff;--color-link:#26251c;--color-link-hover:#26251c;--page-padding:1rem;--font-sans:"Geist", "Messina Sans", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"Geist Mono", "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--font-display:"Bricolage Grotesque", "Geist", system-ui, sans-serif;font-size:14px}@media (width>=600px){:root{--page-padding:1.5rem}}@media (width>=900px){:root{--page-padding:2rem;font-size:13px}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{overflow-y:scroll}@media (width>=900px) and (hover:hover) and (pointer:fine){html{scrollbar-gutter:stable}}body{color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:var(--font-sans);font-feature-settings:"ss01", "ss03";margin:0}body.detail-view{overflow:hidden}body.menu-open .site-header__brand,body.menu-open .site-header__trigger,body.menu-open .language-toggle__option,body.menu-open .language-toggle__sep{color:var(--color-bg)}body.lab-view{background-color:#e4e0d4}body.lab-view .site-header__brand,body.lab-view .site-header__trigger,body.lab-view .language-toggle__option,body.lab-view .language-toggle__sep{color:var(--color-bg)}a{color:var(--color-link);cursor:pointer;outline:none;text-decoration:none}a:hover{color:var(--color-link-hover);text-decoration:none}a:focus{background:#d3d3d3;outline:none}a:focus:not(:focus-visible){background:0 0}a:focus-visible{background:0 0;outline:2px solid red}.frame{padding:1rem var(--page-padding);z-index:1000;grid-row-gap:1rem;grid-column-gap:2rem;pointer-events:none;grid-template-columns:auto auto auto 1fr;grid-template-areas:"title title title title""back archive github.""tags tags tags tags";justify-items:start;display:grid;position:relative}.frame a,.frame button{pointer-events:auto}.frame__title{font-size:inherit;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;grid-area:title;margin:0;font-weight:500}.frame__back{grid-area:back;justify-self:start}.frame__archive{grid-area:archive;justify-self:start}.frame__github{grid-area:github}@media screen and (width>=53em){.frame{grid-template:"title back github archive demos""tags tags tags sponsor sponsor"/auto auto auto auto 1fr;align-content:space-between}.frame__title{padding-right:2rem}}#smooth-wrapper{z-index:10;position:relative}#smooth-content{will-change:transform}#webgl{z-index:0;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}h1{font-family:var(--font-sans);text-transform:none;letter-spacing:-.04em;align-self:end;padding-bottom:1.5rem;padding-left:1rem;font-size:clamp(2rem,5vw,5rem);font-weight:500;line-height:1}h2,h3{font-family:var(--font-sans);text-transform:none;letter-spacing:-.03em;font-weight:500;line-height:1.05}.container,.grid-container{flex-direction:column;display:flex}.grid{padding:4vh var(--page-padding);flex-direction:column;gap:8vh;display:flex}.grid__item{width:100%;aspect-ratio:var(--ar)}a.grid__item{display:block}.grid__item p{font-family:var(--font-sans);letter-spacing:-.02em;padding-top:.5rem;font-weight:500}.grid__item--paragraph{letter-spacing:-.03em;font-size:1.1rem;font-weight:500}@media (width>=600px){.grid{padding:6vh var(--page-padding);grid-template-columns:repeat(6,1fr);gap:15vh 1rem;display:grid}.grid__item{grid-column:auto / span min(var(--s), 6);grid-row:auto}.grid__item--paragraph{font-size:1.45rem}}@media (width>=900px){.grid{padding:10vh var(--page-padding);grid-template-columns:repeat(9,1fr);row-gap:30vh}.grid__item{grid-column:var(--c) / span var(--s);grid-row:var(--r)}}.container img{width:100%;height:auto;display:block}:root:not(.compact-mode) .container img{opacity:0}.details{max-width:100%;padding:4rem var(--page-padding) var(--page-padding);flex-direction:column;gap:.75rem;height:100dvh;display:flex;overflow:hidden}.details-data{flex:none;grid-template-columns:1fr auto;align-items:end;gap:.5rem 1rem;display:grid}.details-data__back{grid-column:1/-1;justify-self:start}.details-data__title{font-family:var(--font-sans);letter-spacing:-.03em;grid-column:1/-1;font-size:1.1rem;font-weight:500;line-height:1.2}.details-data__date{grid-column:1}.details-data__region{grid-column:2;justify-self:end}.details-data__back,.details-data__date,.details-data__region{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;font-size:.92rem;font-weight:500}@media (width>=900px){.details{padding:var(--page-padding);gap:.5rem}.details-data{grid-template-columns:1fr auto auto auto;gap:0 2rem}.details-data__back{grid-column:auto}.details-data__title{grid-column:auto;font-size:1.4rem}.details-data__date{grid-column:auto}.details-data__region{grid-column:auto;justify-self:auto}}.details-container{flex:auto;width:100%;min-height:0;overflow:hidden}.details img{object-fit:cover;width:100%;height:100%}:root:not(.compact-mode) .details img{opacity:0}:root.compact-mode .pixel-img{filter:grayscale();opacity:0;transform:translateY(16px) rotate(var(--pixel-img-rotate,0deg));will-change:opacity, transform;transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1)}:root.compact-mode .pixel-img.is-revealed{opacity:1;transform:translateY(0) rotate(var(--pixel-img-rotate,0deg));will-change:auto}@media (prefers-reduced-motion:reduce){:root.compact-mode .pixel-img{opacity:1;transform:rotate(var(--pixel-img-rotate,0deg));will-change:auto;transition:none}}[data-text-animation]{visibility:hidden}.split-line{text-align:start;display:block}.hover-slide{white-space:nowrap;vertical-align:bottom;will-change:transform;line-height:1.4;display:inline-block;position:relative;overflow:hidden}.hover-slide__copy{will-change:transform;display:block}.hover-slide__copy--back{width:100%;position:absolute;top:0;left:0;transform:translateY(105%)}@media (hover:hover) and (pointer:fine){.hover-slide__copy{transition:transform .7s cubic-bezier(.98,0,.02,1)}.hover-slide:hover .hover-slide__copy--front,:hover>.hover-slide .hover-slide__copy--front{transform:translateY(-100%)}.hover-slide:hover .hover-slide__copy--back,:hover>.hover-slide .hover-slide__copy--back{transform:translateY(0)}}:focus-visible>.hover-slide .hover-slide__copy{transition:transform .7s cubic-bezier(.98,0,.02,1)}:focus-visible>.hover-slide .hover-slide__copy--front{transform:translateY(-100%)}:focus-visible>.hover-slide .hover-slide__copy--back{transform:translateY(0)}@media (prefers-reduced-motion:reduce){.hover-slide__copy{transition:none}.hover-slide:hover .hover-slide__copy--front,:hover>.hover-slide .hover-slide__copy--front,:focus-visible>.hover-slide .hover-slide__copy--front{transform:none}.hover-slide:hover .hover-slide__copy--back,:hover>.hover-slide .hover-slide__copy--back,:focus-visible>.hover-slide .hover-slide__copy--back{transform:translateY(100%)}}.language-toggle[data-v-ff0e63bf]{pointer-events:auto;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;align-items:baseline;font-size:1rem;font-weight:500;line-height:1;display:inline-flex}.language-toggle__option[data-v-ff0e63bf]{font:inherit;color:var(--color-text);cursor:pointer;opacity:.4;touch-action:manipulation;background:0 0;border:0;margin:-.5rem 0;padding:.5rem 0;transition:opacity .3s,color .6s cubic-bezier(.82,0,.18,1)}@media (width>=900px){.language-toggle[data-v-ff0e63bf]{font-size:.92rem}}.language-toggle__option[data-v-ff0e63bf]:hover,.language-toggle__option[data-v-ff0e63bf]:focus-visible{opacity:.7}.language-toggle__option.is-active[data-v-ff0e63bf]{opacity:1;text-underline-offset:.25em;text-decoration:underline;text-decoration-thickness:1px}.language-toggle__option[data-v-ff0e63bf]:focus-visible{outline-offset:4px;outline:2px solid red}.language-toggle__sep[data-v-ff0e63bf]{opacity:.4;-webkit-user-select:none;user-select:none;padding-inline:.4em;transition:color .6s cubic-bezier(.82,0,.18,1)}@media (prefers-reduced-motion:reduce){.language-toggle__option[data-v-ff0e63bf],.language-toggle__sep[data-v-ff0e63bf]{transition:none}}.site-header[data-v-b97d7fd3]{z-index:1100;padding:1rem var(--page-padding);pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.site-header__brand[data-v-b97d7fd3],.site-header__trigger[data-v-b97d7fd3]{pointer-events:auto;color:var(--color-text);font:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0;margin:-.5rem 0;padding:.5rem 0;transition:color .6s cubic-bezier(.82,0,.18,1)}@media (prefers-reduced-motion:reduce){.site-header__brand[data-v-b97d7fd3],.site-header__trigger[data-v-b97d7fd3]{transition:none}}.site-header__controls[data-v-b97d7fd3]{align-items:center;gap:1rem;display:flex}.site-header__brand[data-v-b97d7fd3]{font-family:var(--font-sans);letter-spacing:-.02em;font-weight:500}.site-header__trigger[data-v-b97d7fd3]{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;font-size:1rem;font-weight:500}@media (width>=900px){.site-header__controls[data-v-b97d7fd3]{gap:1.5rem}.site-header__trigger[data-v-b97d7fd3]{font-size:.92rem}}.site-header__trigger[data-v-b97d7fd3]:focus-visible,.site-header__brand[data-v-b97d7fd3]:focus-visible{outline-offset:4px;outline:2px solid red}.menu-overlay[data-v-8f914912]{z-index:1050;position:fixed;inset:0}.menu-overlay[aria-hidden=true][data-v-8f914912]{pointer-events:none}.menu-overlay__panel[data-v-8f914912]{background:var(--color-text);color:var(--color-bg);padding:calc(2.5rem + var(--page-padding)) var(--page-padding) var(--page-padding);grid-template-rows:1fr auto;display:grid;position:absolute;inset:0;transform:translateY(-100%)}@media (width>=900px){.menu-overlay__panel[data-v-8f914912]{padding:calc(3rem + var(--page-padding)) var(--page-padding) var(--page-padding)}}.menu-overlay__close-sr[data-v-8f914912]{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.menu-overlay__nav[data-v-8f914912]{justify-content:center;align-items:center;width:100%;display:flex}.menu-overlay__list[data-v-8f914912]{counter-reset:menu;flex-direction:column;gap:.25rem;width:100%;margin:0;padding:0;list-style:none;display:flex}.menu-overlay__item[data-v-8f914912]{counter-increment:menu;justify-content:center;display:flex}.menu-overlay__row[data-v-8f914912]{align-items:center;display:inline-flex;position:relative}.menu-overlay__mask[data-v-8f914912]{display:block;overflow:hidden}.menu-overlay__line[data-v-8f914912]{font-family:var(--font-sans);text-transform:none;letter-spacing:-.04em;color:var(--color-bg);will-change:transform;font-size:clamp(2.75rem,9vw,7rem);font-weight:500;text-decoration:none;display:block}.menu-overlay__line[data-v-8f914912]:before{content:counter(menu, decimal-leading-zero);font-family:var(--font-mono);letter-spacing:.06em;vertical-align:top;color:color-mix(in srgb, var(--color-bg) 45%, transparent);margin-right:1.2em;font-size:.18em;font-weight:500;display:inline-block}.menu-overlay__line[data-v-8f914912]:hover{text-decoration:none}.menu-overlay__note[data-v-8f914912]{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;color:color-mix(in srgb, var(--color-bg) 50%, transparent);pointer-events:none;font-size:clamp(.78rem,1vw,.92rem);font-weight:400;position:absolute;top:50%}:root:not(.compact-mode) .menu-overlay__note[data-v-8f914912]{will-change:transform;transition:transform .7s cubic-bezier(.82,0,.18,1)}.menu-overlay__note--left[data-v-8f914912]{right:calc(100% + 1rem);transform:translateY(-50%)}.menu-overlay__row.is-row-active .menu-overlay__note--left[data-v-8f914912]{transform:translate(-1rem,-50%)}.menu-overlay__note--right[data-v-8f914912]{left:calc(100% + 1rem);transform:translateY(-50%)}.menu-overlay__row.is-row-active .menu-overlay__note--right[data-v-8f914912]{transform:translate(1rem,-50%)}@media (width<=53em){.menu-overlay__note[data-v-8f914912]{display:none}}@media (prefers-reduced-motion:reduce){.menu-overlay__note[data-v-8f914912]{transition:none}}.menu-overlay__meta-link[data-v-8f914912]{color:var(--color-bg);text-decoration:none;display:inline-block}.menu-overlay__footer[data-v-8f914912]{border-top:1px solid color-mix(in srgb, var(--color-bg) 15%, transparent);grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;padding-top:1.25rem;font-size:.95rem;display:grid}@media (width>=900px){.menu-overlay__footer[data-v-8f914912]{gap:2rem;padding-top:2rem}}.menu-overlay__meta[data-v-8f914912]{flex-direction:column;gap:.25rem;display:flex}.menu-overlay__meta-label[data-v-8f914912]{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;opacity:.55;font-size:.75rem}.menu-overlay__meta--copy[data-v-8f914912]{text-align:right;justify-self:end;align-items:flex-end}@media (width<=53em){.menu-overlay__footer[data-v-8f914912]{grid-template-columns:1fr 1fr}.menu-overlay__meta--copy[data-v-8f914912]{text-align:left;grid-column:1/-1;justify-self:start;align-items:flex-start}}@media (hover:hover) and (pointer:fine){.menu-overlay__line[data-v-8f914912]:hover .hover-slide__copy--front{transform:translateY(0)}.menu-overlay__line[data-v-8f914912]:hover .hover-slide__copy--back{transform:translateY(105%)}.menu-overlay__line.is-line-active[data-v-8f914912] .hover-slide__copy--front{transform:translateY(-100%)}.menu-overlay__line.is-line-active[data-v-8f914912] .hover-slide__copy--back{transform:translateY(0)}}.route-transition-overlay[data-v-dd4a062b]{z-index:1200;background:var(--color-bg);opacity:0;pointer-events:none;visibility:visible;will-change:opacity;position:fixed;inset:0}
