.styles-module__p_wfta__root{font:inherit;border-collapse:collapse;-webkit-border-horizontal-spacing:0;width:100%}.styles-module__p_wfta__root th{font-weight:400;font-size:inherit;text-align:right;border:none;width:calc(((100vw - (var(--sp-m) * 2)) - var(--container-width)) / 2)!important}.styles-module__p_wfta__root th,.styles-module__p_wfta__root td{vertical-align:top;font-family:var(--font-sans);border:none;padding-inline:.25em;line-height:1.2}.styles-module__p_wfta__root th,.styles-module__p_wfta__root th+td{border-top:1px solid var(--meta-color)!important}.styles-module__p_wfta__root a{text-decoration:none}
.styles-module__BLmX2a__root{max-height:80vh;margin:0 auto var(--sp-m);place-content:center;align-items:stretch;display:grid;position:relative}.styles-module__BLmX2a__children{z-index:1;border-radius:20%;position:relative;overflow:hidden}.styles-module__BLmX2a__children video{object-fit:fill;width:100%;height:auto}.styles-module__BLmX2a__children :is(figure,video){margin-bottom:0}.styles-module__BLmX2a__bezel{pointer-events:none;z-index:2;width:auto;max-height:100%;margin:auto;position:absolute;inset:0}
.styles-module__tLLzbq__root{z-index:1;width:100%}@media (min-width:50em){.styles-module__tLLzbq__root{width:40%}}@media (min-width:64em){.styles-module__tLLzbq__root{width:50%}}.styles-module__tLLzbq__left{float:left;margin-left:-25%;margin-right:var(--sp-m)}.styles-module__tLLzbq__right{float:right;margin-right:-25%;margin-left:var(--sp-m)}@media (max-width:64em){.styles-module__tLLzbq__left{margin-left:0}.styles-module__tLLzbq__right{margin-right:0}}@media (max-width:50em){.styles-module__tLLzbq__left,.styles-module__tLLzbq__right{float:none;margin-left:0;margin-right:none}}
.styles-module__WcAikG__breakoutContainerHack{width:0;margin:0 auto}.styles-module__WcAikG__breakoutContainer{width:calc(100vw - var(--scrollbar-width,0px));margin-left:-50vw}.styles-module__WcAikG__withPadding{padding:var(--sp-s)}
.styles-module__RA19MW__root{gap:var(--sp-m);padding:var(--sp-m);align-items:center;width:fit-content;margin:0 auto;display:flex;overflow-x:scroll}.styles-module__RA19MW__root>*{flex:none}.styles-module__RA19MW__root>:first-child{margin-inline-start:var(--sp-m)}.styles-module__RA19MW__root>:last-child{margin-inline-end:var(--sp-m)}.styles-module__RA19MW__scrollSnapping{scroll-snap-type:x mandatory}.styles-module__RA19MW__scrollSnapping>*{scroll-snap-align:center}.styles-module__RA19MW__root::-webkit-scrollbar{width:1em;height:1em}.styles-module__RA19MW__root::-webkit-scrollbar-thumb{background-color:#8080804d;background-clip:padding-box;border:.25em solid #0000;border-radius:1em}.styles-module__RA19MW__root::-webkit-scrollbar-thumb:hover{background-color:#80808080}
.styles-module__tRrGpG__root{border-radius:var(--sp-s);padding:var(--sp-m);background-color:var(--code-wash);font-family:var(--font-sans);position:relative;overflow:hidden}.styles-module__tRrGpG__root :last-child{margin-block-end:0}
.styles-module__c9bOfq__rating{color:orange}
.styles-module__JSvI7a__reviewAverage{margin:0;padding:0;font-size:7rem;line-height:1}.styles-module__JSvI7a__reviewAverage:before{content:"★";opacity:.05;pointer-events:none;font-size:20rem;line-height:0;position:absolute;top:50%;left:0;transform:translateY(-50%)translate(-25%)}
.style-module__1uiBZq__container{position:relative}.style-module__1uiBZq__root{grid-template-columns:repeat(auto-fit,minmax(20rem,1fr));grid-template-rows:masonry;gap:var(--sp-m);max-height:36rem;display:grid;overflow:hidden}.style-module__1uiBZq__container:has(:checked) .style-module__1uiBZq__root{max-height:none}.style-module__1uiBZq__readMore{padding:calc(var(--sp-m) * 5) var(--sp-m) var(--sp-s);text-align:center;background-image:linear-gradient(transparent, var(--wash-color) 55%);place-items:center;display:grid;position:absolute;inset:50% 0 0}.style-module__1uiBZq__container:has(:checked) .style-module__1uiBZq__readMore{padding-block-start:0;position:relative}.style-module__1uiBZq__readMore label{cursor:pointer;font-family:var(--font-sans);padding:var(--sp-xs) var(--sp-s);border-radius:var(--sp-s);background-color:var(--text-color);color:var(--wash-color);margin:var(--sp-m);line-height:1}.style-module__1uiBZq__readMore input{display:none}.style-module__1uiBZq__readMoreLabel{display:inline-block}.style-module__1uiBZq__readMoreLabel:after{content:" ↓"}.style-module__1uiBZq__readLessLabel:after{content:" ↑"}.style-module__1uiBZq__readLessLabel{display:none}.style-module__1uiBZq__container:has(:checked) .style-module__1uiBZq__readMoreLabel{display:none}.style-module__1uiBZq__container:has(:checked) .style-module__1uiBZq__readLessLabel{display:inline-block}
.styles-module__o-UYlG__root{aspect-ratio:1;width:100%;max-width:24rem;height:auto;color:var(--color-gray-700,#888);margin:0 auto;display:block}.styles-module__o-UYlG__shapes>g{transform-box:view-box;animation-duration:8s;animation-timing-function:step-end;animation-iteration-count:infinite}.styles-module__o-UYlG__square{transform-origin:283px 132px;animation-name:styles-module__o-UYlG__square}@keyframes styles-module__o-UYlG__square{0%{transform:translate(0)rotate(0)}13.5%{transform:translate(-10px,10px)rotate(-2deg)}15%{transform:translate(-26px,28px)rotate(-6deg)}16.5%{transform:translate(-48px,56px)rotate(-9deg)}18%{transform:translate(-72px,96px)rotate(-9deg)}19.5%{transform:translate(-86px,142px)rotate(-7deg)}21%{transform:translate(-86px,180px)rotate(-3deg)}22.5%{transform:translate(-72px,212px)rotate(3deg)}24%{transform:translate(-69px,205px)rotate(0)}61.5%{transform:translate(-78px,198px)rotate(2deg)}63%{transform:translate(-72px,168px)rotate(6deg)}64.5%{transform:translate(-58px,130px)rotate(9deg)}66%{transform:translate(-38px,90px)rotate(9deg)}67.5%{transform:translate(-18px,50px)rotate(7deg)}69%{transform:translate(-2px,18px)rotate(3deg)}70.5%{transform:translate(8px,-8px)rotate(-2deg)}72%{transform:translate(0)rotate(0)}}.styles-module__o-UYlG__circle{transform-origin:128px 132px;animation-name:styles-module__o-UYlG__circle}@keyframes styles-module__o-UYlG__circle{0%{transform:translate(0)}15.5%{transform:translate(8px,-22px)}17%{transform:translate(28px,-46px)}18.5%{transform:translate(50px,-62px)}20%{transform:translate(50px,-62px)}21.5%{transform:translate(76px,-64px)}23%{transform:translate(98px,-52px)}24.5%{transform:translate(88px,-42px)}26%{transform:translate(86px,-45px)}63.5%{transform:translate(88px,-22px)}65%{transform:translate(82px,6px)}66.5%{transform:translate(70px,30px)}68%{transform:translate(50px,36px)}69.5%{transform:translate(28px,30px)}71%{transform:translate(28px,28px)}72.5%{transform:translate(8px,12px)}74%{transform:translate(0)}}.styles-module__o-UYlG__triangle{transform-origin:128px 310.67px;animation-name:styles-module__o-UYlG__triangle}@keyframes styles-module__o-UYlG__triangle{0%{transform:translate(0)rotate(0)}18.5%{transform:translate(4px,-8px)rotate(2deg)}20%{transform:translate(4px,-8px)rotate(2deg)}21.5%{transform:translate(24px,-46px)rotate(8deg)}23%{transform:translate(44px,-68px)rotate(12deg)}24.5%{transform:translate(74px,-90px)rotate(12deg)}26%{transform:translate(96px,-98px)rotate(6deg)}27.5%{transform:translate(84px,-76px)rotate(-2deg)}29%{transform:translate(86px,-82.84px)rotate(0)}66.5%{transform:translate(76px,-56px)rotate(-4deg)}68%{transform:translate(52px,-36px)rotate(-8deg)}69.5%{transform:translate(28px,-16px)rotate(-12deg)}71%{transform:translate(8px)rotate(-10deg)}72.5%{transform:translate(-6px,6px)rotate(-6deg)}74%{transform:translate(-4px,4px)rotate(-2deg)}75.5%{transform:translate(2px)rotate(0)}77%{transform:translate(0)rotate(0)}}.styles-module__o-UYlG__rightRect{transform-origin:323.5px 285px;animation-name:styles-module__o-UYlG__rightRect}@keyframes styles-module__o-UYlG__rightRect{0%{transform:translate(0)rotate(0)}21.5%{transform:translate(12px,-16px)rotate(6deg)}23%{transform:translate(16px,-42px)rotate(18deg)}24.5%{transform:translate(10px,-76px)rotate(30deg)}26%{transform:translate(-4px,-118px)rotate(42deg)}27.5%{transform:translate(-26px,-160px)rotate(52deg)}29%{transform:translate(-32px,-114px)rotate(28deg)}30.5%{transform:translate(-14px,-130px)rotate(38deg)}32%{transform:translate(-16.37px,-139.32px)rotate(37.11deg)}69.5%{transform:translate(-2px,-120px)rotate(32deg)}71%{transform:translate(12px,-86px)rotate(22deg)}72.5%{transform:translate(24px,-50px)rotate(10deg)}74%{transform:translate(22px,-8px)rotate(-2deg)}75.5%{transform:translate(14px,14px)rotate(-6deg)}77%{transform:translate(2px,8px)rotate(-3deg)}78.5%{transform:translate(-4px,4px)rotate(-1deg)}80%{transform:translate(0)rotate(0)}}.styles-module__o-UYlG__leftRect{transform-origin:242.5px 285px;animation-name:styles-module__o-UYlG__leftRect}@keyframes styles-module__o-UYlG__leftRect{0%{transform:translate(0)rotate(0)}25.5%{transform:translate(-10px,4px)rotate(-5deg)}27%{transform:translate(-18px,-2px)rotate(-10deg)}28.5%{transform:translate(-42px,-22px)rotate(-22deg)}30%{transform:translate(-72px,-48px)rotate(-32deg)}31.5%{transform:translate(-118px,-100px)rotate(-48deg)}33%{transform:translate(-138px,-140px)rotate(-52deg)}34.5%{transform:translate(-128px,-150px)rotate(-42deg)}36%{transform:translate(-121.63px,-136.13px)rotate(-45deg)}69.5%{transform:translate(-130px,-130px)rotate(-36deg)}71%{transform:translate(-118px,-100px)rotate(-22deg)}72.5%{transform:translate(-92px,-68px)rotate(-10deg)}74%{transform:translate(-58px,-38px)rotate(0)}75.5%{transform:translate(-32px,-22px)rotate(2deg)}77%{transform:translate(-12px,-6px)rotate(4deg)}78.5%{transform:translate(8px,12px)rotate(2deg)}80%{transform:translate(0)rotate(0)}}@media (prefers-reduced-motion:reduce){.styles-module__o-UYlG__shapes>g{animation:none}}
.styles-module___VI25W__root{text-align:center;margin-bottom:var(--sp-xxl);padding-block:3rem;position:relative}.styles-module___VI25W__title{font-family:var(--font-sans);margin:0;padding:0;font-size:clamp(5rem,8vw,6rem);font-weight:700;line-height:1}.styles-module___VI25W__iconContainer{place-items:center;display:grid;position:absolute;inset:0}.styles-module___VI25W__icon{opacity:.15;max-width:12rem}.styles-module___VI25W__tagline{font-family:var(--font-mono)}
.styles-module__rU1SAq__root{max-width:100%;font-family:var(--font-sans);--card-count:3.5;--border-width:1px;gap:.75rem;padding:.75rem;display:flex;overflow-x:scroll}@media (resolution:2x){.styles-module__rU1SAq__root{--border-width:.5px}}@media (min-resolution:3x){.styles-module__rU1SAq__root{--border-width:.333px}}.styles-module__rU1SAq__root h2{font-family:var(--font-sans);font-variation-settings:"wdth" 132;margin:0;padding:0}@media screen and (max-width:1256px){.styles-module__rU1SAq__root{--card-count:2.5}}@media screen and (max-width:800px){.styles-module__rU1SAq__root{--card-count:1.5;scroll-snap-type:x mandatory;scroll-padding:50%}}.styles-module__rU1SAq__card{--flex-basis:calc((100 / var(--card-count)) * 1vw);flex-direction:column;flex:1 0 var(--flex-basis);aspect-ratio:5/8;--highlight-color:#00000020;--button-background:#fafafacc;--border-radius:1.5em;border-radius:var(--border-radius);border:var(--border-width) solid transparent;scroll-snap-align:center;background-color:#8080801a;padding:.75rem;display:flex;position:relative;overflow:hidden}@media screen and (prefers-color-scheme:dark){.styles-module__rU1SAq__card{--highlight-color:#ffffff1a;--button-background:#141414cc}}.styles-module__rU1SAq__highlight{background-clip:padding-box}.styles-module__rU1SAq__highlight:after{border-radius:var(--border-radius);content:"";pointer-events:none;border:var(--border-width) solid var(--highlight-color);position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000,#00000080);mask-image:linear-gradient(#000,#00000080)}.styles-module__rU1SAq__stretcher{flex:auto;place-items:center;display:flex}.styles-module__rU1SAq__button{--border-radius:2em;background-color:var(--button-background);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10;border-radius:2rem;padding:.75em 1em;font-size:.8em;line-height:1;text-decoration:none;position:absolute;bottom:.75em;right:.75em;box-shadow:0 4px 8px #0000000d,0 1px 1px #00000020,0 2px 4px #0000000d}.styles-module__rU1SAq__button:after{content:"";border-radius:inherit;box-shadow:inset 0 0 0 var(--border-width) #ffffff40;mix-blend-mode:plus-lighter;position:absolute;inset:0;-webkit-mask:linear-gradient(#000,#00000080);mask:linear-gradient(#000,#00000080)}.styles-module__rU1SAq__button:hover{background-color:var(--site-color);color:#fff}
.styles-module__roozHa__root{text-align:center;margin-bottom:var(--sp-xxl);padding-block:3rem;position:relative}.styles-module__roozHa__title{font-family:var(--font-sans);margin:0;padding:0;font-size:clamp(5rem,8vw,6rem);font-weight:700;line-height:1}.styles-module__roozHa__iconContainer{place-items:center;display:grid;position:absolute;inset:0}.styles-module__roozHa__icon{opacity:.15;max-width:12rem}.styles-module__roozHa__tagline{font-family:var(--font-mono)}
.styles-module__9-iT4q__portfolioHeader{text-align:center;margin-block-start:var(--sp-xxl);margin-block-end:var(--sp-xl);padding-block-start:var(--sp-xl)}.styles-module__9-iT4q__appScreenshot{width:max(16rem,20vmax);margin:0 auto 1.5rem;display:block;position:relative}.styles-module__9-iT4q__title{margin:0!important;padding:0!important}
.home-module__mSBuAq__root{grid-template-columns:1fr;display:grid}.home-module__mSBuAq__intro{text-wrap:pretty;padding:1.5rem}.home-module__mSBuAq__xxl{font-size:clamp(1.4rem,7.5vmin,3.5rem);font-style:normal;line-height:1.2;font-family:var(--font-sans)}.home-module__mSBuAq__intro .home-module__mSBuAq__xxl a{--padding-size:.05em;font-family:var(--font-heading);letter-spacing:0;font-style:italic}
.styles-module__le48CG__root{grid-gap:var(--sp-xs);grid-template-columns:var(--sp-xxl) 1fr;border-top:1px solid var(--meta-color);margin-bottom:var(--sp-m);align-items:start;display:grid}.styles-module__le48CG__root figure{margin-bottom:0}.styles-module__le48CG__title{margin:0;line-height:1.4}
.styles-module__diHW9a__gallery{gap:var(--sp-xs);grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));display:grid}.styles-module__diHW9a__gallery figure{margin-bottom:0}
