.AuthWrapper-module-scss-module__ugtKOa__loading{color:#18181c;opacity:.7;justify-content:center;align-items:center;min-height:50vh;display:flex}
.util-module-scss-module__AFLH7G__swappingText span,.util-module-scss-module__AFLH7G__swappingText{white-space:nowrap;height:1lh;display:block;overflow:hidden}.util-module-scss-module__AFLH7G__srOnly{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}
.CaseCover-module-scss-module__MOLPHG__image{object-fit:cover;background-color:#e6e6e6;width:100%;height:100%;display:block}.CaseCover-module-scss-module__MOLPHG__typeCover{background:radial-gradient(circle at 88% 18%,#fcda68 0 14%,#0000 14.2%),radial-gradient(at 0 100%,#57c5d9e6 0%,#0000 60%),linear-gradient(135deg,#8773ee 0%,#4121e4 100%);position:absolute;inset:0;overflow:hidden;container-type:size}.CaseCover-module-scss-module__MOLPHG__typeCover:after{content:"";background-image:radial-gradient(#fff3 1.5px,#0000 0);background-size:14px 14px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(to bottom right,#0000 35%,#000 100%);mask-image:linear-gradient(to bottom right,#0000 35%,#000 100%)}.CaseCover-module-scss-module__MOLPHG__typeCover .CaseCover-module-scss-module__MOLPHG__typeWords{font-family:var(--font-montserrat);color:#fff;letter-spacing:-.02em;z-index:1;flex-flow:column;font-size:15cqh;font-weight:700;line-height:.98;display:flex;position:absolute;bottom:8%;left:6%;right:6%}.CaseCover-module-scss-module__MOLPHG__typeCover .CaseCover-module-scss-module__MOLPHG__typeWords .CaseCover-module-scss-module__MOLPHG__typeWord:nth-child(2){color:#ffffff8c}.CaseCover-module-scss-module__MOLPHG__typeCover .CaseCover-module-scss-module__MOLPHG__typeWords .CaseCover-module-scss-module__MOLPHG__typeWord:nth-child(3){color:#fcda68}
.ToggleButtonGroup-module-scss-module___rCL5W__root{flex-flow:wrap;display:flex}.ToggleButtonGroup-module-scss-module___rCL5W__spacer{flex:100000 1 0}.ToggleButtonGroup-module-scss-module___rCL5W__button{background:0 0;border:none;font-size:17px;display:inline-block}@media (max-width:750px){.ToggleButtonGroup-module-scss-module___rCL5W__button{font-size:15px}}.ToggleButtonGroup-module-scss-module___rCL5W__button>span{color:#18181c;-webkit-user-select:none;user-select:none;border:2px solid #18181c;flex-flow:column;gap:.5em;width:100%;height:calc(1lh + 1em);margin:-1px 0;display:flex;overflow:hidden}@media (max-width:740px){.ToggleButtonGroup-module-scss-module___rCL5W__root{max-width:400px}.ToggleButtonGroup-module-scss-module___rCL5W__button{flex-grow:1}.ToggleButtonGroup-module-scss-module___rCL5W__button>span{width:100%}}
.CaseLightbox-module-scss-module__28yy-q__root{top:var(--site-header-offset,80px);z-index:1000;height:100dvh;position:fixed;bottom:0;left:0;right:0}.CaseLightbox-module-scss-module__28yy-q__backdrop{z-index:0;cursor:zoom-out;background:#18181cb8;position:absolute;inset:0}.CaseLightbox-module-scss-module__28yy-q__foreground{z-index:1;padding:max(20px,env(safe-area-inset-top))20px;box-sizing:border-box;pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.CaseLightbox-module-scss-module__28yy-q__close{z-index:1;top:max(20px,env(safe-area-inset-top));right:max(20px,env(safe-area-inset-right));color:#18181c;font-family:var(--font-montserrat);cursor:pointer;pointer-events:auto;background:#fff;border:none;border-radius:0;outline:none;padding:10px 16px;font-size:15px;font-weight:600;position:absolute}.CaseLightbox-module-scss-module__28yy-q__close:focus-visible{outline-offset:3px;outline:2px solid #fff}.CaseLightbox-module-scss-module__28yy-q__stage{cursor:default;pointer-events:auto;flex-flow:column;align-items:center;gap:16px;max-width:100%;display:flex}.CaseLightbox-module-scss-module__28yy-q__device{line-height:0}.CaseLightbox-module-scss-module__28yy-q__morph{z-index:1;position:relative}.CaseLightbox-module-scss-module__28yy-q__root .CaseLightbox-module-scss-module__28yy-q__deviceShell{width:min(420px,49.1148dvh - 78.5837px,85vw);max-width:min(420px,49.1148dvh - 78.5837px,85vw)}.CaseLightbox-module-scss-module__28yy-q__stageFigure .CaseLightbox-module-scss-module__28yy-q__figureImage{object-fit:contain;background:#fff;border:none;border-radius:0;width:auto;max-width:min(1200px,92vw);height:auto;max-height:calc(100dvh - 160px);display:block;box-shadow:0 1px 2px #0000000f,0 24px 60px -20px #00000073}.CaseLightbox-module-scss-module__28yy-q__stageCode{width:100%;max-width:min(920px,92vw)}.CaseLightbox-module-scss-module__28yy-q__caption{color:#fff;text-align:center;pointer-events:auto;max-width:36em;margin:0;font-size:15px;line-height:1.4}
.DeviceHit-module-scss-module__tj9uhW__host{width:100%;display:block;position:relative}.DeviceHit-module-scss-module__tj9uhW__host:focus-visible{outline:2px solid var(--foreground,#1a1a1a);outline-offset:4px}
.ScrollPin-module-scss-module__lO_mgW__track{width:100%;height:calc(var(--scroll-pin-vh,180)*1vh);border-radius:0;position:relative}.ScrollPin-module-scss-module__lO_mgW__trackStatic{height:auto}.ScrollPin-module-scss-module__lO_mgW__stage{box-sizing:border-box;background-color:var(--background,#fff);isolation:isolate;border-radius:0;flex-direction:column;justify-content:center;height:100dvh;padding:clamp(24px,4vh,48px) 0;display:flex;position:sticky;top:0;overflow:hidden}.ScrollPin-module-scss-module__lO_mgW__stageWithHeader{justify-content:flex-start;gap:var(--scroll-pin-header-gap,48px);padding:calc(var(--site-header-offset,80px) + 24px)0 clamp(16px,2.5vh,28px)}.ScrollPin-module-scss-module__lO_mgW__header{flex:none;width:100%}.ScrollPin-module-scss-module__lO_mgW__header>*{margin-bottom:0!important}.ScrollPin-module-scss-module__lO_mgW__stageStatic .ScrollPin-module-scss-module__lO_mgW__header{margin-bottom:40px}.ScrollPin-module-scss-module__lO_mgW__stageInner{width:100%;margin-inline:auto;position:relative}.ScrollPin-module-scss-module__lO_mgW__stageInnerWithHeader{flex-direction:column;flex:auto;justify-content:flex-start;min-height:0;display:flex}.ScrollPin-module-scss-module__lO_mgW__stageStatic{height:auto;padding:0;position:relative;overflow:visible}.ScrollPin-module-scss-module__lO_mgW__progress{transform-origin:0;opacity:.35;pointer-events:none;will-change:transform;background:#18181c;border-radius:0;width:100%;height:2px;position:absolute;top:0;left:0}.ScrollPin-module-scss-module__lO_mgW__stageWithHeader .ScrollPin-module-scss-module__lO_mgW__progress{top:var(--site-header-offset,80px);background:var(--accent,#8773ee);opacity:1;height:4px}@media (prefers-reduced-motion:reduce){.ScrollPin-module-scss-module__lO_mgW__progress{display:none}}
.StepRail-module-scss-module__Q8-AZG__rail{isolation:isolate;background:#f6f6f6;border:none;border-radius:0;margin:0;padding:0;display:flex;position:relative}.StepRail-module-scss-module__Q8-AZG__horizontal{flex-direction:row;width:100%}.StepRail-module-scss-module__Q8-AZG__vertical{flex-direction:column;width:100%;max-width:220px}.StepRail-module-scss-module__Q8-AZG__indicator{z-index:0;pointer-events:none;will-change:transform;background:#18181c;border:none;border-radius:0;position:absolute}.StepRail-module-scss-module__Q8-AZG__horizontal .StepRail-module-scss-module__Q8-AZG__indicator{top:0;bottom:0;left:0}.StepRail-module-scss-module__Q8-AZG__vertical .StepRail-module-scss-module__Q8-AZG__indicator{top:0;left:0;right:0}.StepRail-module-scss-module__Q8-AZG__step{z-index:1;color:#3b3b45;font-family:var(--font-montserrat);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:0;outline:none;flex-direction:column;flex:1 1 0;justify-content:center;align-items:flex-start;gap:2px;margin:0;padding:12px 14px;font-size:15px;font-weight:500;line-height:1.25;transition:transform .28s cubic-bezier(.4,0,.2,1),color .28s cubic-bezier(.4,0,.2,1),opacity .28s cubic-bezier(.4,0,.2,1);display:flex;position:relative}.StepRail-module-scss-module__Q8-AZG__step:focus-visible{outline-offset:3px;z-index:2;outline:2px solid #18181c}.StepRail-module-scss-module__Q8-AZG__step:after{content:"";background-color:var(--accent-strong,#5a49b0);transform-origin:0;height:2px;transition:transform .35s cubic-bezier(.4,0,.2,1);position:absolute;bottom:6px;left:14px;right:14px;transform:scaleX(0)}.StepRail-module-scss-module__Q8-AZG__step:not(.StepRail-module-scss-module__Q8-AZG__stepActive):hover,.StepRail-module-scss-module__Q8-AZG__step:not(.StepRail-module-scss-module__Q8-AZG__stepActive):focus-visible{color:#18181c;transform:translateY(-2px)}.StepRail-module-scss-module__Q8-AZG__step:not(.StepRail-module-scss-module__Q8-AZG__stepActive):hover:after,.StepRail-module-scss-module__Q8-AZG__step:not(.StepRail-module-scss-module__Q8-AZG__stepActive):focus-visible:after{transform:scaleX(1)}.StepRail-module-scss-module__Q8-AZG__step:not(.StepRail-module-scss-module__Q8-AZG__stepActive):active{transform:translateY(0)}.StepRail-module-scss-module__Q8-AZG__stepActive{color:#fff;font-weight:700}.StepRail-module-scss-module__Q8-AZG__stepActive:hover{color:#fff;transform:none}.StepRail-module-scss-module__Q8-AZG__label{display:block}.StepRail-module-scss-module__Q8-AZG__badge{letter-spacing:.04em;text-transform:uppercase;color:#4b4b4e;font-size:13px;font-weight:500;display:block}.StepRail-module-scss-module__Q8-AZG__stepActive .StepRail-module-scss-module__Q8-AZG__badge{color:#e3e3e4}@media (max-width:390px){.StepRail-module-scss-module__Q8-AZG__horizontal .StepRail-module-scss-module__Q8-AZG__step{padding:10px;font-size:13px}.StepRail-module-scss-module__Q8-AZG__badge{font-size:11px}}@media (prefers-reduced-motion:reduce){.StepRail-module-scss-module__Q8-AZG__step{transition:none}.StepRail-module-scss-module__Q8-AZG__step:not(.StepRail-module-scss-module__Q8-AZG__stepActive):hover{transform:none}.StepRail-module-scss-module__Q8-AZG__indicator{will-change:auto}}
.CodeReposSection-module-scss-module__Anm5gW__container{padding-bottom:calc(1vw + 2.5vh)!important}.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section{font-size:18px}@media (max-width:1200px){.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section{font-size:16px}}@media (max-width:1000px){.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section{font-size:14px}}@media (max-width:500px){.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section{font-size:12px}}.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section .CodeReposSection-module-scss-module__Anm5gW__repos{flex-flow:wrap;gap:min(.5em,10px);padding-top:1.5em;display:flex}.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section .CodeReposSection-module-scss-module__Anm5gW__repos .CodeReposSection-module-scss-module__Anm5gW__repo,.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section .CodeReposSection-module-scss-module__Anm5gW__repos .CodeReposSection-module-scss-module__Anm5gW__github{color:#fff;text-align:center;-webkit-user-select:none;user-select:none;background-color:#8773ee;flex:auto;min-width:min(130px,20vw);padding:.75em 1.25em;font-weight:600;display:inline-block}.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section .CodeReposSection-module-scss-module__Anm5gW__repos .CodeReposSection-module-scss-module__Anm5gW__repo:nth-child(odd),.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section .CodeReposSection-module-scss-module__Anm5gW__repos .CodeReposSection-module-scss-module__Anm5gW__github:nth-child(odd){border-radius:2em}.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section .CodeReposSection-module-scss-module__Anm5gW__repos .CodeReposSection-module-scss-module__Anm5gW__repo.CodeReposSection-module-scss-module__Anm5gW__icon,.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section .CodeReposSection-module-scss-module__Anm5gW__repos .CodeReposSection-module-scss-module__Anm5gW__github.CodeReposSection-module-scss-module__Anm5gW__icon{background-position:1em;background-repeat:no-repeat;background-size:1lh;padding-left:2.75em}.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section .CodeReposSection-module-scss-module__Anm5gW__repos .CodeReposSection-module-scss-module__Anm5gW__repo.CodeReposSection-module-scss-module__Anm5gW__github,.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section .CodeReposSection-module-scss-module__Anm5gW__repos .CodeReposSection-module-scss-module__Anm5gW__github.CodeReposSection-module-scss-module__Anm5gW__github{color:#fff;background-color:#18181c;background-image:url(/img/interface/github-light.png);max-width:17em}.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section .CodeReposSection-module-scss-module__Anm5gW__repos .CodeReposSection-module-scss-module__Anm5gW__repo span,.CodeReposSection-module-scss-module__Anm5gW__container .CodeReposSection-module-scss-module__Anm5gW__section .CodeReposSection-module-scss-module__Anm5gW__repos .CodeReposSection-module-scss-module__Anm5gW__github span{background:inherit;-webkit-text-fill-color:#0000;-webkit-user-select:inherit;user-select:inherit;-webkit-background-clip:text!important;background-clip:text!important}
.RolesSection-module-scss-module__zNK3bW__container{padding-bottom:0!important}.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__categories{margin-bottom:20px}.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__roles{flex-flow:column;justify-content:flex-start;align-items:stretch;display:flex}.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__roles .RolesSection-module-scss-module__zNK3bW__separator{background-color:#18181c;border:none;width:100%;height:2px;margin:0 auto}.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__roles .RolesSection-module-scss-module__zNK3bW__role{-webkit-user-select:auto;user-select:auto;grid-template-columns:7em 1fr;grid-template-areas:"dates head""dates info";margin:12px 0;padding:12px 0;font-size:14px;display:grid}@media (min-width:950px){.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__roles .RolesSection-module-scss-module__zNK3bW__role{font-size:16px}.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__roles .RolesSection-module-scss-module__zNK3bW__role:has(.RolesSection-module-scss-module__zNK3bW__roleInfo){grid-template-columns:1fr 1fr;grid-template-areas:"dates info""head info"}.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__roles .RolesSection-module-scss-module__zNK3bW__role:has(.RolesSection-module-scss-module__zNK3bW__roleInfo) .RolesSection-module-scss-module__zNK3bW__roleDates{font-size:14px;font-style:italic}.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__roles .RolesSection-module-scss-module__zNK3bW__role:has(.RolesSection-module-scss-module__zNK3bW__roleInfo) .RolesSection-module-scss-module__zNK3bW__roleInfo{max-width:500px}}@media (min-width:1250px){.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__roles .RolesSection-module-scss-module__zNK3bW__role:has(.RolesSection-module-scss-module__zNK3bW__roleInfo){grid-template-columns:7em .8fr 1fr;grid-template-areas:"dates head info"}.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__roles .RolesSection-module-scss-module__zNK3bW__role:has(.RolesSection-module-scss-module__zNK3bW__roleInfo) .RolesSection-module-scss-module__zNK3bW__roleDates{font-size:1em;font-style:normal}}.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__roles .RolesSection-module-scss-module__zNK3bW__role .RolesSection-module-scss-module__zNK3bW__roleDates{grid-area:dates;font-weight:500}.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__roles .RolesSection-module-scss-module__zNK3bW__role .RolesSection-module-scss-module__zNK3bW__roleHeader{grid-area:head;width:auto}.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__roles .RolesSection-module-scss-module__zNK3bW__role .RolesSection-module-scss-module__zNK3bW__roleHeader .RolesSection-module-scss-module__zNK3bW__roleTitle{font-size:22px;font-weight:600}.RolesSection-module-scss-module__zNK3bW__container .RolesSection-module-scss-module__zNK3bW__section .RolesSection-module-scss-module__zNK3bW__roles .RolesSection-module-scss-module__zNK3bW__role .RolesSection-module-scss-module__zNK3bW__roleInfo{color:#18181c80;grid-area:info;width:100%;margin:auto}
.CaseToc-module-scss-module__sCeieG__wrap{position:relative}.CaseToc-module-scss-module__sCeieG__progress{transform-origin:0;z-index:90;pointer-events:none;background:#5a49b0;width:100%;height:3px;position:fixed;top:0;left:0}.CaseToc-module-scss-module__sCeieG__rail{z-index:40;flex-flow:column;gap:6px;width:160px;max-height:calc(100dvh - 158px);padding:4px 0;display:none;position:fixed;top:134px;left:max(12px,50vw - 925px);overflow-y:auto}@media (min-width:1400px){.CaseToc-module-scss-module__sCeieG__rail{display:flex}}.CaseToc-module-scss-module__sCeieG__label{font-family:var(--font-montserrat);letter-spacing:.08em;text-transform:uppercase;color:#5a49b0;margin-bottom:8px;font-size:11px;font-weight:700}.CaseToc-module-scss-module__sCeieG__link{color:#535361;border-left:2px solid #e6e6e6;border-radius:0;outline:none;padding:6px 10px 6px 12px;font-size:13px;line-height:1.35em;text-decoration:none;transition:color .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1),background-color .2s cubic-bezier(.4,0,.2,1);display:block}.CaseToc-module-scss-module__sCeieG__link:hover,.CaseToc-module-scss-module__sCeieG__link:focus-visible{color:#18181c;background-color:#18181c0a}.CaseToc-module-scss-module__sCeieG__link:focus-visible{outline-offset:2px;outline:2px solid #18181c}.CaseToc-module-scss-module__sCeieG__link.CaseToc-module-scss-module__sCeieG__active{color:#18181c;border-left-color:#18181c;font-weight:600}@media (prefers-reduced-motion:reduce){.CaseToc-module-scss-module__sCeieG__link{transition:none}}
