/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\!container{width:100%!important}@media (min-width:40rem){.\!container{max-width:40rem!important}}@media (min-width:48rem){.\!container{max-width:48rem!important}}@media (min-width:64rem){.\!container{max-width:64rem!important}}@media (min-width:80rem){.\!container{max-width:80rem!important}}@media (min-width:96rem){.\!container{max-width:96rem!important}}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.hidden{display:none}.resize{resize:both}}@font-face{font-family:Fracktif;src:url(/fonts/Fracktif-Regular/font.woff2)format("woff2"),url(/fonts/Fracktif-Regular/font.woff)format("woff"),url(/fonts/Fracktif-Regular/font.ttf)format("truetype");font-weight:400;font-display:swap}@font-face{font-family:Fracktif;src:url(/fonts/Fracktif-SemiBold/font.woff2)format("woff2"),url(/fonts/Fracktif-SemiBold/font.woff)format("woff"),url(/fonts/Fracktif-SemiBold/font.ttf)format("truetype");font-weight:500;font-display:swap}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{font-size:100%;font:inherit;vertical-align:baseline;border:0;margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}:root{--primary:#1c1c1c;--secondary:#8e8e8e;--hairline:#e0e0e0;--big-space:12vw;--small-space:2vw;--iphone-se-frame-width:38vw;--iphone-x-frame-width:35vw;--iphone-4s-frame-width:38vw;--full-frame-width:76vw;--iphone-se-frame-width-mob:55vw;--iphone-x-frame-width-mob:60vw;--iphone-4s-frame-width-mob:60vw;--full-frame-width-mob:84vw}body{background-color:#fff;font-family:Fracktif,sans-serif;font-size:2.8vw;line-height:1.3;transition:background-color .5s;animation:fadeInImg 1.2s}@media (max-width:767px){body{font-size:6.8vw}}.small{font-size:1.5vw;line-height:1.3}@media (max-width:767px){.small{font-size:4.5vw}}.huge,h3{background-size:100vw;font-weight:500}.huge{font-size:7vw}@media (max-width:767px){.huge{margin-bottom:12vh;font-size:11vw}}p{color:var(--secondary);margin:10px 0}p:last-child{margin-bottom:0}a{color:var(--primary);text-decoration:none}img,video{max-width:100%;transition:opacity .2s;display:block}.section{padding:0 var(--big-space);margin-left:auto;margin-right:auto}@media (max-width:767px){.section{padding:0 8vw}}.project{width:100%;padding-top:var(--big-space);position:relative}@media (max-width:767px){.project{margin-bottom:var(--big-space)}}.u-link{display:inline-block}.u-link:after{content:"";transform-origin:100%;background-color:#4d4d4d;width:100%;height:2px;margin-top:-8px;transition:transform .2s cubic-bezier(.29,.63,.44,1);display:block;transform:scaleX(0)}.u-link.active:after,.u-link:hover:after{transform-origin:0;transform:scale(1)}.f-link,.f-link svg{transition:all .2s}.f-link:hover{color:var(--primary)}.caret{cursor:pointer;align-items:center;animation:point 1.2s infinite alternate-reverse;display:flex;transform:translateY(50%)}.caret svg{width:3.5vw}@media (max-width:767px){.caret svg{width:8vw;height:6vh}}.caret span{padding-left:var(--small-space);opacity:0;animation:fadeInImg 4s cubic-bezier(.23,1,.32,1) 5s forwards;display:inline-block}@media (max-width:767px){.caret span{padding-left:calc(var(--small-space)*2)}}@keyframes point{0%{transform:translateY(60%)}to{transform:translateY(40%)}}.spacer{width:100%;display:flex}.spacer>span{color:var(--secondary);flex-grow:1;display:none}@media (max-width:767px){.spacer>span{display:block}}.intro{flex-direction:column;justify-content:space-around;align-items:flex-start;height:100vh;display:flex;top:0}@media (max-width:767px){.intro{height:calc(var(--vh,1vh)*100)}}.intro .details{z-index:1;box-sizing:border-box}.wide .details{padding-bottom:calc(var(--small-space)*2)}@media (max-width:767px){.wide .details{width:100%;position:static}}.details{top:var(--big-space)}.tile-list ul{margin:0;padding:0;list-style:none}.wide .tile{width:100vw;margin-bottom:var(--small-space);padding:calc(var(--small-space)*4)0;margin-left:calc(-1*var(--big-space));background-color:#f2f2f2;background-repeat:repeat;background-size:100vw;justify-content:center;display:flex}@media (max-width:767px){.wide .tile{padding:calc(var(--small-space)*7)0;margin-left:-8vw;margin-bottom:calc(var(--small-space)*4)}.wide .tile:first-child{margin-top:var(--small-space)}}.wide .tile:last-child{margin-bottom:0}.preview-container{pointer-events:inherit;margin:auto;position:relative}.preview-container.vid-container{cursor:wait}.preview-container.vid-container.loaded{cursor:default}.preview-frame{z-index:2;pointer-events:none;background-position:top;background-repeat:no-repeat;background-size:100% 100%;width:100%;height:100%;position:relative;top:0;left:0;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.preview-screen{z-index:1}.preview-screen,img.poster,video.vid{pointer-events:inherit;position:absolute;inset:0}img.poster,video.vid{width:100%;height:100%}img.preview{max-height:100%;margin:auto}@keyframes fadeInImg{0%{opacity:0}to{opacity:1}}.img-loading{opacity:0;cursor:wait;width:100%;height:auto}.img-loaded{opacity:0;animation:fadeInImg 2s cubic-bezier(.23,1,.32,1) .1s forwards;position:relative}.vid{transition:opacity .7s cubic-bezier(.23,1,.32,1)}.vid-idle,.vid-loading{opacity:0}.vid-loaded,.vid-playing{opacity:1}.preview-container.web{box-shadow:0 2px 20px #00000014}.preview-container.web .preview-frame{width:var(--full-frame-width);height:calc(var(--full-frame-width)*.625)}@media (max-width:767px){.preview-container.web .preview-frame{width:var(--full-frame-width-mob);height:calc(var(--full-frame-width-mob)*.625)}}.preview-container.square{box-shadow:none}.preview-container.square .preview-frame{width:var(--full-frame-width);height:calc(var(--full-frame-width)*.625)}@media (max-width:767px){.preview-container.square .preview-frame{width:var(--full-frame-width-mob);height:calc(var(--full-frame-width-mob)*.625)}}.preview-container.iphone-se .preview-frame{width:var(--iphone-se-frame-width);height:calc(var(--iphone-se-frame-width)*2.0728);background-image:url(/frames/iphone-se.jpg);-webkit-mask-image:url(/frames/iphone-se-mask.svg);mask-image:url(/frames/iphone-se-mask.svg)}@media (max-width:767px){.preview-container.iphone-se .preview-frame{width:var(--iphone-se-frame-width-mob);height:calc(var(--iphone-se-frame-width-mob)*2.0728)}}.preview-container.iphone-se .preview-screen{inset:14.86% 8.32% 13.86%}.preview-container.iphone-4s .preview-frame{width:var(--iphone-4s-frame-width);height:calc(var(--iphone-4s-frame-width)*1.932);background-image:url(/frames/iphone-4s.jpg);-webkit-mask-image:url(/frames/iphone-4s-mask.svg);mask-image:url(/frames/iphone-4s-mask.svg)}@media (max-width:767px){.preview-container.iphone-4s .preview-frame{width:var(--iphone-4s-frame-width-mob);height:calc(var(--iphone-4s-frame-width-mob)*1.932)}}.preview-container.iphone-4s .preview-screen{inset:17.99% 8.32% 17.32%}.preview-container.iphone-x .preview-frame{width:var(--iphone-x-frame-width);height:calc(var(--iphone-x-frame-width)*2);background-image:url(/frames/iphone-x.jpg);-webkit-mask-image:url(/frames/iphone-x-mask.svg);mask-image:url(/frames/iphone-x-mask.svg)}@media (max-width:767px){.preview-container.iphone-x .preview-frame{width:var(--iphone-x-frame-width-mob);height:calc(var(--iphone-x-frame-width-mob)*2)}}.preview-container.iphone-x .preview-screen{inset:2.94% 6.56%}.preview-container.iphone-14-pro .preview-frame{width:var(--iphone-x-frame-width);height:calc(var(--iphone-x-frame-width)*2.027);background-image:url(/frames/iphone-14-pro.png);-webkit-mask-image:url(/frames/iphone-14-pro-mask.svg);mask-image:url(/frames/iphone-14-pro-mask.svg)}@media (max-width:767px){.preview-container.iphone-14-pro .preview-frame{width:var(--iphone-x-frame-width-mob);height:calc(var(--iphone-x-frame-width-mob)*2.027)}}.preview-container.iphone-14-pro .preview-screen{border-radius:8%/4%;inset:2.5% 5%;overflow:hidden}.collaboration{color:var(--secondary);margin-top:var(--small-space);font-size:1.5vw;line-height:1.3}@media (max-width:767px){.collaboration{margin-top:calc(var(--small-space)*2);font-size:4.5vw;display:inline-block}}.role{color:var(--secondary);font-size:1.5vw;line-height:1.3;display:inline-block}@media (max-width:767px){.role{font-size:4.5vw}}.nav-right{box-sizing:border-box;z-index:100;width:0;height:100%;position:fixed;right:0}@media (max-width:767px){.nav-right{display:none}}.nav-left{z-index:100;width:8vw;height:100%;padding-left:2vw;position:fixed;left:0}@media (max-width:767px){.nav-left{display:none}}.site-title{top:var(--small-space);transform-origin:0 0;white-space:nowrap;font-size:2.5vw;display:block;position:absolute;left:-1.6vw;transform:rotate(90deg)}.site-title a{color:var(--secondary)}.socials{bottom:var(--small-space);right:var(--small-space);position:fixed}.socials li{padding-top:calc(var(--small-space)/2)}.socials a svg{fill:var(--secondary);width:24px;height:24px}.socials a:hover svg{fill:var(--primary)}@media (max-width:767px){.socials{align-content:flex-end;position:static}.socials ul{display:flex}.socials li{padding-left:calc(var(--small-space)*2)}}.project-list{transition:opacity .3s ease-out}.project-list>div:first-child .project{padding-top:0}.project-list.dim{opacity:.3}.project-nav{justify-content:center;height:100%;position:absolute}.project-nav,.tick-list{flex-direction:column;display:flex}.tick-list{gap:0;margin:0;padding:0;list-style:none}.tick-item{cursor:pointer;width:24px;height:24px;position:relative}.tick,.tick-item{justify-content:center;align-items:center;display:flex}.tick{width:100%;height:100%}.tick .dot{background-color:var(--secondary);border-radius:50%;flex-shrink:0;width:5px;height:5px;transition:background-color .2s,transform .2s}.tick-item.active .dot,.tick-item:hover .dot{background-color:var(--primary);transform:scale(1.5)}.tick .label{white-space:nowrap;opacity:0;color:var(--primary);pointer-events:none;flex-direction:row;align-items:baseline;gap:.4em;font-size:.85vw;line-height:1.4;transition:opacity .15s ease-out;display:flex;position:absolute;left:28px}.tick .label .role{font-size:inherit}.tick-item:hover .label{opacity:1}.footer{margin:var(--big-space)0}.footer-subtitle{color:var(--secondary);font-size:2.5vw;font-weight:400}.footer p,.footer-subtitle{margin-bottom:1em}.footer p:last-child{margin-bottom:0}:root{--line-width:1px;--line-color:#000;--sketch-duration:1.2s;--sketch-overflow:15%;--sketch-bottom-offset:23%;--sketch-top-offset:10%;--easing-function:cubic-bezier(.29,.63,.44,1)}.sketch-loader{display:inline-block;position:relative}.sketch-loader span{animation:text-fill var(--sketch-duration).3s var(--easing-function)forwards;background:linear-gradient(to right,var(--primary)20%,var(--primary)40%,#fff 60%,#fff 80%);color:#000;-webkit-text-fill-color:transparent;background-position:100%;background-size:300%;-webkit-background-clip:text;background-clip:text;display:block}.hero-desc{opacity:0;animation:fadeInImg var(--sketch-duration).3s var(--easing-function)forwards;animation-delay:1.5s}.intro .sketch-loader{display:block}.intro .sketch-loader:before{top:19px}.intro .sketch-loader span:before{left:7px}.intro .sketch-loader.line-2,.intro .sketch-loader.line-2 span,.intro .sketch-loader.line-2 span:after,.intro .sketch-loader.line-2 span:before,.intro .sketch-loader.line-2:after,.intro .sketch-loader.line-2:before{animation-delay:.7s}.sketch-loader:after{bottom:var(--sketch-bottom-offset);animation:wipe var(--sketch-duration).5s var(--easing-function)forwards}.sketch-loader:after,.sketch-loader:before{content:"";width:calc(100% + var(--sketch-overflow)*2);left:calc(-1*var(--sketch-overflow));height:var(--line-width);background:var(--line-color);z-index:-1;display:block;position:absolute;transform:scaleX(0)}.sketch-loader:before{top:var(--sketch-top-offset);animation:wipe var(--sketch-duration).3s var(--easing-function)forwards}.sketch-loader span:before{left:0;animation:wipe-down var(--sketch-duration).3s var(--easing-function)forwards;z-index:-1}.sketch-loader span:after,.sketch-loader span:before{content:"";height:calc(100% + var(--sketch-overflow)*2 - var(--sketch-top-offset)*2);width:var(--line-width);background:var(--line-color);top:calc(-1*var(--sketch-overflow));transform-origin:top;display:block;position:absolute;transform:scaleY(0)}.sketch-loader span:after{right:0;animation:wipe-down var(--sketch-duration).5s var(--easing-function)forwards}@keyframes wipe{0%{transform-origin:0;transform:scaleX(0)}50%{transform-origin:0;transform:scale(1)}50.01%{transform-origin:100%}to{transform-origin:100%;transform:scaleX(0)}}@keyframes wipe-down{0%{transform-origin:top;transform:scaleY(0)}50%{transform-origin:top;transform:scale(1)}50.01%{transform-origin:bottom}to{transform-origin:bottom;transform:scaleY(0)}}@keyframes text-fill{to{background-position:0}}@keyframes loading{0%{opacity:1}50%{opacity:.2}to{opacity:1}}.tile-text{padding-left:calc(var(--small-space)*2);padding-right:calc(var(--small-space)*2);padding-bottom:calc(var(--small-space)*1.5);text-align:center;color:var(--primary);font-size:1.5vw;line-height:1.3}@media (max-width:767px){.tile-text{padding-left:calc(var(--small-space)*4);padding-right:calc(var(--small-space)*4);padding-bottom:calc(var(--small-space)*4);font-size:4.5vw}}.icon{width:24px;height:24px;display:inline-block}