@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:block;src:url(../media/8a480f0b521d4e75-s.8e0177b5.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:block;src:url(../media/7178b3e590c64307-s.b97b3418.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:block;src:url(../media/caa3a2e1cccd8315-s.p.853070df.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_b4eb8685-module__nWttDW__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_b4eb8685-module__nWttDW__variable{--font-geist-sans:"Geist","Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:block;src:url(../media/4fa387ec64143e14-s.c1fdd6c2.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:block;src:url(../media/bbc41e54d2fcbd21-s.799d8ef8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:block;src:url(../media/797e433ab948586e-s.p.dbea232f.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_85dbf7ca-module__keNEua__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_85dbf7ca-module__keNEua__variable{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}
.layout-module__BW1HIG__sectionContainer{justify-content:center;display:flex;position:relative}.layout-module__BW1HIG__sectionLayoutContainer{flex-direction:column;width:100%;max-width:1080px;margin:0 clamp(.5rem,.8rem + .8vw,1.5rem)}.layout-module__BW1HIG__sectionLayout{width:100%;margin:0 auto;padding:clamp(3rem,2rem + 4vw,5rem) clamp(1.5rem,1.2rem + 1.2vw,2rem)}.layout-module__BW1HIG__projectSectionLayout{flex-direction:column;gap:clamp(1.5rem,1.2rem + 1.2vw,2rem);width:100%;margin:0 auto;padding:clamp(2.5rem,2rem + 2vw,4rem) clamp(.75rem,1.2rem + 1.2vw,2rem);display:flex}@media (max-width:768px){.layout-module__BW1HIG__projectSectionLayout{padding-left:0;padding-right:0}}.layout-module__BW1HIG__sectionColumnLayout{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:flex-start;gap:clamp(1.5rem,1.2rem + 1.2vw,2rem);display:grid}.layout-module__BW1HIG__sectionCopyLayout{row-gap:clamp(1.5rem,1.2rem + 1.2vw,2rem);display:grid}.layout-module__BW1HIG__contentWrapper{row-gap:clamp(.75rem,.6rem + .6vw,1rem);display:grid}.layout-module__BW1HIG__sectionColumnImageLayout{justify-content:center;align-items:center;display:flex;position:relative}.layout-module__BW1HIG__sectionCardLayout{flex-direction:column;gap:clamp(3rem,2rem + 4vw,5rem);display:flex}.layout-module__BW1HIG__projectHeroContainer{flex-direction:column;align-items:center;width:100%;display:flex}.layout-module__BW1HIG__projectHeroImageWrapper{background-color:#f8f9fa;justify-content:center;width:100%;max-width:100%;display:flex;overflow:hidden}.layout-module__BW1HIG__projectHeroImageContainer{border-radius:clamp(.5rem,.4rem + .4vw,.75rem);width:100%;max-width:1280px;height:clamp(250px,20vw + 150px,400px);position:relative}.layout-module__BW1HIG__projecHeroImage{object-fit:cover}@media (max-width:768px){.layout-module__BW1HIG__sectionColumnLayout{flex-direction:column-reverse;display:flex}}
.OptimizationDrawing-module__MzVqUW__container{background-color:#a2bbff27;width:100%;margin:0 auto}.OptimizationDrawing-module__MzVqUW__svg{width:100%;height:400px}
.Button-module__hpuLQq__button{--btn-padding-small:.375rem .75rem;--btn-padding-medium:.5rem 1rem;--btn-padding-large:.75rem 1.25rem;--btn-font-small:.75rem;--btn-font-medium:.875rem;--btn-font-large:1rem;letter-spacing:.02em;cursor:pointer;color:inherit;border-radius:.25rem;justify-content:center;align-items:center;font-weight:600;text-decoration:none;transition:all .2s;display:inline-flex;position:relative;overflow:visible}@property --angle{syntax:"<angle>";inherits:false;initial-value:0deg}.Button-module__hpuLQq__animatedBorder{--border-width:1px;--border-radius:.25rem;--primary-color:var(--primary);--secondary-color:#a2bbffcc;isolation:isolate;z-index:1;position:relative;border:var(--border-width)solid transparent!important}.Button-module__hpuLQq__animatedBorder:before{content:"";inset:calc(var(--border-width)*-1);border-radius:var(--border-radius);padding:var(--border-width);background:conic-gradient(from var(--angle),var(--primary-color)80%,var(--secondary-color)88%,var(--secondary-color)92%,var(--primary-color)100%);-webkit-mask-composite:xor;z-index:-1;animation:2s linear infinite Button-module__hpuLQq__rotateBorder;position:absolute;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.Button-module__hpuLQq__animatedBorder:hover:before{animation-play-state:paused}@keyframes Button-module__hpuLQq__rotateBorder{to{--angle:360deg}}.Button-module__hpuLQq__arrowWrapper{justify-content:center;align-items:center;line-height:0;display:flex;overflow:visible}.Button-module__hpuLQq__small{padding:var(--btn-padding-small);font-size:var(--btn-font-small)}.Button-module__hpuLQq__medium{padding:var(--btn-padding-medium);font-size:var(--btn-font-medium)}.Button-module__hpuLQq__large{padding:var(--btn-padding-large);font-size:var(--btn-font-large)}.Button-module__hpuLQq__iconOnly{justify-content:center;align-items:center;width:20px;height:20px;padding:0;line-height:0;display:flex}.Button-module__hpuLQq__primary{background-color:var(--primary);color:#fff;border:1px solid var(--primary)}.Button-module__hpuLQq__primary:hover{opacity:.9}.Button-module__hpuLQq__secondary{background-color:var(--primary-light);color:var(--primary);border:1px solid var(--primary-light)}.Button-module__hpuLQq__secondary:hover{background-color:var(--primary);color:#fff}.Button-module__hpuLQq__outline{border:1px solid var(--primary);color:var(--primary);background-color:#0000}.Button-module__hpuLQq__outline:hover{background-color:var(--primary);color:#fff}.Button-module__hpuLQq__ghost{background-color:#0000;border:none;font-weight:500}.Button-module__hpuLQq__ghost:hover{color:var(--primary)}.Button-module__hpuLQq__justifyBetween{justify-content:space-between}.Button-module__hpuLQq__marginTopZero{margin-top:0}
.Card-module__eWv-xq__card{border-radius:var(--radius);color:var(--foreground);background-color:color-mix(in oklch,var(--card)33%,var(--background));border:1px solid var(--border);flex-direction:column;justify-content:space-between;gap:1.5rem;padding:1.5rem;display:flex;position:relative}.Card-module__eWv-xq__cardLift{gap:0;padding-bottom:0;overflow:hidden}.Card-module__eWv-xq__cardLift .Card-module__eWv-xq__content{background-color:color-mix(in oklch,var(--card)33%,var(--background));width:calc(100% + 3rem);margin-left:-1.5rem;margin-right:-1.5rem;padding:1.5rem 1.5rem 2rem;transition:transform .4s}.Card-module__eWv-xq__cardLift:hover .Card-module__eWv-xq__liftDiv{transform:translateY(-1rem)}.Card-module__eWv-xq__cardLift:hover .Card-module__eWv-xq__content{transform:translateY(-3rem)}.Card-module__eWv-xq__cardLift:hover .Card-module__eWv-xq__footer{opacity:1;transform:translateY(-1rem)}.Card-module__eWv-xq__cardLift:hover .Card-module__eWv-xq__image{transform:scale(1.04)}.Card-module__eWv-xq__header{grid-template-columns:1fr auto;align-items:center;gap:.5rem;max-width:100%;display:grid}.Card-module__eWv-xq__title{letter-spacing:-.025em;margin:0;font-size:1.25rem;font-weight:500;line-height:1}.Card-module__eWv-xq__description{color:var(--muted-foreground);white-space:unset;grid-column:1/-1;margin:0;font-size:.875rem}.Card-module__eWv-xq__content{flex-direction:column;gap:.75rem;display:flex}.Card-module__eWv-xq__textContent{flex-direction:column;gap:.375rem;display:flex}.Card-module__eWv-xq__footer{align-items:center;display:flex}.Card-module__eWv-xq__cardLift .Card-module__eWv-xq__footer{opacity:0;transition:opacity .3s,transform .4s;position:absolute;bottom:0;left:24px;right:24px}.Card-module__eWv-xq__image{object-fit:cover;aspect-ratio:16/9;border-radius:var(--radius)var(--radius)0 0;box-sizing:border-box;width:calc(100% + 3rem + 2px);max-width:100vw;height:300px;margin:calc(-1.5rem - 1px) calc(-1.5rem - 1px) 0;transition:transform .3s}@media (max-width:768px){.Card-module__eWv-xq__image{width:100%;max-width:none;height:250px;margin:-1.5rem 0 0}.Card-module__eWv-xq__cardLift .Card-module__eWv-xq__image{width:calc(100% + 3rem);margin-left:-1.5rem;margin-right:-1.5rem}}.Card-module__eWv-xq__imageContent{color:#fff;background:linear-gradient(#0000,#0009);flex-direction:column;justify-content:flex-end;display:flex;position:absolute;inset:0}.Card-module__eWv-xq__default{background-color:var(--background-muted)}.Card-module__eWv-xq__icon{background-color:var(--muted);border-radius:var(--radius);border:1px solid var(--border);z-index:1;justify-content:center;align-items:center;width:32px;height:32px;margin-bottom:1.125rem;padding:6px;display:flex;position:relative}.Card-module__eWv-xq__action{grid-area:1/2;place-self:start end}
.project-card-module__LpmyDa__projectCard{cursor:pointer;background-color:#0000;border:none;margin-left:calc(-1*clamp(1rem,.8rem + .8vw,1.5rem));padding:clamp(1rem,.8rem + .8vw,1.5rem);transition:all .2s;position:relative;overflow:hidden}.project-card-module__LpmyDa__noiseFilter{pointer-events:none;opacity:.01;mix-blend-mode:overlay;width:100%;height:100%;transition:opacity .2s;position:absolute;top:0;left:0}.project-card-module__LpmyDa__projectCard:hover{border-color:var(--muted);background-color:color-mix(in oklch,var(--card)33%,var(--background))}.project-card-module__LpmyDa__projectCard:hover .project-card-module__LpmyDa__noiseFilter{opacity:.15}.project-card-module__LpmyDa__header{justify-content:space-between;align-items:center;gap:clamp(.375rem,.3rem + .3vw,.5rem);padding:0;display:flex}.project-card-module__LpmyDa__content{flex-direction:column;flex:1;gap:.25rem;display:flex}.project-card-module__LpmyDa__title{color:var(--foreground);letter-spacing:.005em;margin:0;font-size:16px;font-weight:400;line-height:1.6}.project-card-module__LpmyDa__subtitle{color:var(--muted-foreground);margin:0;font-size:12px}.project-card-module__LpmyDa__icon{width:20px;height:20px;color:var(--foreground);flex-shrink:0;justify-content:center;align-items:center;display:flex}
.Footer-module__nm0PWG__footer{contain:layout style paint;background-color:#0000;width:100%;margin-top:auto;padding:4rem 0 2rem;position:relative}.Footer-module__nm0PWG__footerWrapper{width:100%;max-width:760px;padding:0 clamp(1rem,.8rem + .8vw,1.5rem)}.Footer-module__nm0PWG__content{justify-content:center;align-items:center;gap:2rem;font-size:12px;display:flex}.Footer-module__nm0PWG__links{align-items:center;gap:2rem;display:flex}.Footer-module__nm0PWG__xLink{align-items:center;gap:.5rem;display:flex}.Footer-module__nm0PWG__link{color:inherit;text-decoration:underline}.Footer-module__nm0PWG__link:hover{opacity:.7}.Footer-module__nm0PWG__githubLink{align-items:center;gap:.5rem;display:flex}.Footer-module__nm0PWG__iconLink{align-items:center;display:flex}.Footer-module__nm0PWG__iconLink:hover{opacity:.7}.Footer-module__nm0PWG__icon{fill:var(--title);transition:fill .3s}@media (max-width:768px){.Footer-module__nm0PWG__content{flex-direction:column;gap:1.5rem}.Footer-module__nm0PWG__links{flex-direction:column;gap:1rem}}
.project-modal-module__IaY30G__overlay{background:var(--dialog-overlay);-webkit-backdrop-filter:blur(8px);z-index:9998;position:fixed;inset:0}.project-modal-module__IaY30G__drawer{background:color-mix(in oklch,var(--card)33%,var(--background));border-radius:var(--radius-lg)var(--radius-lg)0 0;z-index:9999;box-sizing:border-box;outline:none;flex-direction:column;max-width:100vw;height:90vh;display:flex;position:fixed;bottom:0;left:0;right:0}.project-modal-module__IaY30G__scrollContainer{background:color-mix(in oklch,var(--card)33%,var(--background));border-radius:var(--radius-lg)var(--radius-lg)0 0;box-sizing:border-box;-webkit-user-select:text;user-select:text;flex-direction:column;flex:1;width:100%;padding:16px;display:flex;overflow:hidden auto}@media (max-width:768px){.project-modal-module__IaY30G__scrollContainer{padding:8px}}.project-modal-module__IaY30G__scrollContainer::-webkit-scrollbar{width:4px}.project-modal-module__IaY30G__scrollContainer::-webkit-scrollbar-track{background:var(--muted)}.project-modal-module__IaY30G__scrollContainer::-webkit-scrollbar-thumb{background:var(--foreground);border-radius:2px}.project-modal-module__IaY30G__scrollContainer::-webkit-scrollbar-thumb:hover{background:var(--foreground)}.project-modal-module__IaY30G__drawerContent{box-sizing:border-box;width:100%;max-width:900px;margin:0 auto}.project-modal-module__IaY30G__handle{background:var(--muted);-webkit-user-select:none;user-select:none;border-radius:9999px;flex-shrink:0;width:48px;height:6px;margin:0 auto 32px}.project-modal-module__IaY30G__contentContainer{flex-direction:column;gap:36px;margin-top:28px;display:flex}.project-modal-module__IaY30G__heading{letter-spacing:-.02em;color:var(--title);margin:0;font-size:clamp(1.5rem,1.25rem + 1vw,2rem);font-weight:700;line-height:1.3}.project-modal-module__IaY30G__subtitle{font-size:var(--font-size-sm);color:var(--muted-foreground);margin:.5rem 0 0}.project-modal-module__IaY30G__content{-webkit-user-select:text;user-select:text;flex-direction:column;gap:24px;display:flex}
@keyframes Hero-module__j8XN_q__enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.Hero-module__j8XN_q__heroWrapper{--delay:80ms;flex-direction:column;justify-content:center;align-items:flex-start;gap:clamp(1.5rem,1.2rem + 1.2vw,2rem);width:100%;max-width:600px;padding:clamp(4rem,3rem + 4vw,6rem) clamp(1rem,.8rem + .8vw,1.5rem) clamp(1rem,.8rem + .8vw,1.5rem);display:flex}.Hero-module__j8XN_q__heroWrapper>h1,.Hero-module__j8XN_q__heroWrapper>h2,.Hero-module__j8XN_q__heroWrapper .Hero-module__j8XN_q__copyWrapper>p,.Hero-module__j8XN_q__heroWrapper .Hero-module__j8XN_q__projectList>*{animation:.6s both Hero-module__j8XN_q__enter;animation-delay:calc(var(--delay)*var(--stagger))}.Hero-module__j8XN_q__heroWrapper h1,.Hero-module__j8XN_q__heroWrapper h2{font-size:18px;font-weight:600}.Hero-module__j8XN_q__copyWrapper{flex-direction:column;gap:clamp(.75rem,.6rem + .6vw,1rem);display:flex}.Hero-module__j8XN_q__copyWrapper p{max-width:600px;font-weight:300}.Hero-module__j8XN_q__spacer{width:1px;height:clamp(2.5rem,2rem + 2vw,4rem)}.Hero-module__j8XN_q__projectList{flex-direction:column;gap:clamp(.75rem,.6rem + .6vw,1rem);width:100%;margin:0;padding:0;list-style:none;display:flex}.Hero-module__j8XN_q__projectList>a{width:100%}.Hero-module__j8XN_q__arrowIcon{transform-origin:0;transition:transform .2s,color .2s}.Hero-module__j8XN_q__projectList a:hover .Hero-module__j8XN_q__arrowIcon,.Hero-module__j8XN_q__projectList>div:hover .Hero-module__j8XN_q__arrowIcon{transform:rotate(-45deg)translate(2px)}.Hero-module__j8XN_q__plusIcon{transition:transform .2s,color .2s}.Hero-module__j8XN_q__projectList>div:hover .Hero-module__j8XN_q__plusIcon{transform:rotate(90deg)}.Hero-module__j8XN_q__projectSubtitle{color:var(--foreground);margin-top:.25rem;font-size:clamp(.875rem,.8125rem + .25vw,1rem)}
