.ContactForm-module-scss-module__jMp5HW__contactWrapper{flex-direction:column;min-height:calc(100vh - 70px);padding:10px;display:flex}.ContactForm-module-scss-module__jMp5HW__contactForm{flex-direction:column;flex:1;justify-content:center;align-items:center;padding:24px 20px 40px;display:flex}.ContactForm-module-scss-module__jMp5HW__form{flex-direction:column;gap:20px;width:100%;max-width:480px;display:flex}.ContactForm-module-scss-module__jMp5HW__fieldGroup{flex-direction:column;gap:6px;display:flex}.ContactForm-module-scss-module__jMp5HW__label{letter-spacing:.1em;text-transform:uppercase;color:#555;font-size:.72rem;font-weight:700}.ContactForm-module-scss-module__jMp5HW__input,.ContactForm-module-scss-module__jMp5HW__message{color:#111;box-sizing:border-box;background:#fff;border:1.5px solid #d0d0d0;border-radius:6px;outline:none;width:100%;padding:11px 14px;font-family:inherit;font-size:.95rem;transition:border-color .18s}.ContactForm-module-scss-module__jMp5HW__input::placeholder,.ContactForm-module-scss-module__jMp5HW__message::placeholder{color:#b0b0b0}.ContactForm-module-scss-module__jMp5HW__input:focus,.ContactForm-module-scss-module__jMp5HW__message:focus{border-color:#111}.ContactForm-module-scss-module__jMp5HW__message{resize:vertical;min-height:130px}.ContactForm-module-scss-module__jMp5HW__submit{color:#fff;letter-spacing:.04em;cursor:pointer;background:#111;border:none;border-radius:6px;align-self:flex-start;padding:12px 28px;font-size:.9rem;font-weight:600;transition:background .18s,transform .1s}.ContactForm-module-scss-module__jMp5HW__submit:hover{background:#333}.ContactForm-module-scss-module__jMp5HW__submit:active{transform:translateY(1px)}
.SharedCss-module-scss-module__iHb0AW__height100vh{height:100vh}.SharedCss-module-scss-module__iHb0AW__zeroPadding{padding:0}.SharedCss-module-scss-module__iHb0AW__tenPadding{padding:10px}.SharedCss-module-scss-module__iHb0AW__zeroMarginBottom{margin-bottom:0}.SharedCss-module-scss-module__iHb0AW__sectionHeader,.SharedCss-module-scss-module__iHb0AW__sectionHeader2{border-bottom:1px solid #000;width:72%;margin:0 auto 52px;font-family:Open Sans,sans-serif;font-size:25px}.SharedCss-module-scss-module__iHb0AW__sectionHeader2{border-bottom:none;width:50%;min-height:38px;margin:0}@media only screen and (max-width:400px){.SharedCss-module-scss-module__iHb0AW__sectionHeader2{min-height:20px;padding-top:5px;font-size:20px}}.SharedCss-module-scss-module__iHb0AW__sectionHeight{height:calc(100vh - 70px)}.SharedCss-module-scss-module__iHb0AW__viewWrapper{flex-flow:wrap;justify-content:space-evenly;width:80%;margin:auto;padding:10px;display:flex}.SharedCss-module-scss-module__iHb0AW__headerWrapper{border-bottom:1px solid #000;justify-content:space-between;width:75%;margin:0 auto 52px;display:flex}.SharedCss-module-scss-module__iHb0AW__alwaysCentered{width:200px;height:100px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.SharedCss-module-scss-module__iHb0AW__width75{width:75%;margin:auto}.SharedCss-module-scss-module__iHb0AW__minus10LeftMargin{margin-left:-10px}
.StackItems-module-scss-module__hqq6hq__projectStackItem{max-width:90px;margin:auto auto 10px;display:inline-block;position:relative}.StackItems-module-scss-module__hqq6hq__logo{width:40px;height:40px;margin:5px}.StackItems-module-scss-module__hqq6hq__typescript{background-image:url(/images/typescript.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__nextjs{background-image:url(/images/nextjs.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__postgres{background-image:url(/images/postgres.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__dynamodb{background-image:url(/images/dynamodb.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__lancedb{background-image:url(/images/lancedb-logo.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__mongo{background-image:url(/images/mongodb.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__react{background-image:url(/images/react.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__node{background-image:url(/images/nodejs.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__serverless{background-image:url(/images/serverless-logo.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__express{background-image:url(/images/expressjslogo.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__redux{background-image:url(/images/redux.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__javascript{background-image:url(/images/javascript.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__angular{background-image:url(/images/angular.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__docker{background-image:url(/images/docker-logo.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__go{background-image:url(/images/go-logo.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__awssam{background-image:url(/images/aws-sam.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__kubernetes{background-image:url(/images/kubernetes.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__cdk{background-image:url(/images/cdk.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__terraform{background-image:url(/images/terraform.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__lambda{background-image:url(/images/lambda.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__bedrock{background-image:url(/images/bedrock-logo.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__apigateway{background-image:url(/images/apigateway.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__eventbridge{background-image:url(/images/eventbridge-logo.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__route53{background-image:url(/images/route53-logo.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__s3{background-image:url(/images/s3-logo.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__jwt{background-image:url(/images/jwt.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__jest{background-image:url(/images/jest.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__python{background-image:url(/images/python.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__pytorch{background-image:url(/images/pytorch.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__cuda{background-image:url(/images/cuda.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__bash{background-image:url(/images/bash.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__athena{background-image:url(/images/athena.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__websockets{background-image:url(/images/websockets-logo.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__grpc{background-image:url(/images/grpc-logo.webp);background-position:50%;background-size:cover}.StackItems-module-scss-module__hqq6hq__mcp{background-image:url(/images/mcp-logo.webp);background-position:50%;background-size:cover}
.Tooltip-module__X6bSSG__tooltipContainer{display:inline-block;position:relative}.Tooltip-module__X6bSSG__tooltipText{visibility:visible;color:#000;text-align:center;background-color:#fff;border-radius:6px;width:70px;margin-left:-40px;padding:5px;font-size:12px;position:absolute;bottom:100%;left:50%}
.Project-module-scss-module__tAzyrW__padding10{padding:10px}.Project-module-scss-module__tAzyrW__imageWrapper{width:350px;height:350px;margin:10px;position:relative;overflow:hidden}@media (max-width:400px){.Project-module-scss-module__tAzyrW__imageWrapper{aspect-ratio:1;width:90vw;height:auto}}.Project-module-scss-module__tAzyrW__imageWrapper>span{width:100%;height:100%;display:block!important}.Project-module-scss-module__tAzyrW__imageWrapper:hover .Project-module-scss-module__tAzyrW__overlay{opacity:1}.Project-module-scss-module__tAzyrW__overlay{opacity:0;z-index:3;background-color:#000000e6;width:100%;height:100%;transition:all .5s;position:absolute;inset:0}.Project-module-scss-module__tAzyrW__placeholderOverlay{z-index:2;pointer-events:none;background:linear-gradient(120deg,#e8e8e8 25%,#f3f3f3 50%,#e8e8e8 75%) 0 0/200% 100%;animation:1.4s linear infinite Project-module-scss-module__tAzyrW__placeholderShimmer;position:absolute;inset:0}.Project-module-scss-module__tAzyrW__placeholderHidden{opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}.Project-module-scss-module__tAzyrW__projectImage{object-fit:cover;object-position:center;width:100%;height:100%}@keyframes Project-module-scss-module__tAzyrW__placeholderShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.Project-module-scss-module__tAzyrW__title{margin-top:0;font-size:1.5em;position:relative;top:20px}.Project-module-scss-module__tAzyrW__projectDescription{color:gold;max-width:320px;margin-bottom:10px;font-size:15px}.Project-module-scss-module__tAzyrW__projectStack{flex-flow:wrap;justify-content:space-evenly;max-width:300px;margin:auto;padding:0;display:flex}.Project-module-scss-module__tAzyrW__projectLinks{margin-bottom:50px;padding:10px}.Project-module-scss-module__tAzyrW__projectLinks ul{list-style-type:none}.Project-module-scss-module__tAzyrW__proLink{color:#f1f1f1;font-size:1.3em}.Project-module-scss-module__tAzyrW__text{color:gold;letter-spacing:1px}.Project-module-scss-module__tAzyrW__name{margin:0 10px;font-size:15px;display:block}
