.Hero-module__Vtspxq__hero{flex-direction:column;display:flex}.Hero-module__Vtspxq__statusBar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:13px;width:100%;padding-top:26px;padding-bottom:26px;display:flex}.Hero-module__Vtspxq__statusText{font-family:var(--font-body);font-style:italic;font-size:var(--text-body-small-size);color:var(--color-text-primary);opacity:.9;flex-wrap:wrap;align-items:center;gap:3px 10px;display:flex}.Hero-module__Vtspxq__role{align-items:center;gap:3px;display:inline-flex}.Hero-module__Vtspxq__contactButtons{align-items:center;gap:12px;display:flex}.Hero-module__Vtspxq__iconLink{color:var(--color-text-primary);opacity:.8;transform-origin:50%;border-radius:3px;justify-content:center;align-items:center;font-size:clamp(1.76rem,1.76vw,2rem);transition:opacity .25s cubic-bezier(.4,0,.2,1),scale .25s cubic-bezier(.4,0,.2,1);display:flex}.Hero-module__Vtspxq__iconLink:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.Hero-module__Vtspxq__iconLink:hover{opacity:1;scale:1.05}.Hero-module__Vtspxq__content{flex-wrap:wrap;align-items:flex-end;gap:26px;padding:40px 26px;display:flex}.Hero-module__Vtspxq__imageWrapper{aspect-ratio:3/5;width:240px;position:relative}.Hero-module__Vtspxq__mainVideo{object-fit:cover;border-radius:6px;width:100%;height:100%}.Hero-module__Vtspxq__doodleAnimation{z-index:1;width:176px;height:auto;position:absolute;bottom:-76px;left:24px}.Hero-module__Vtspxq__heading{font-family:var(--font-display);color:var(--color-text-primary);flex-direction:column;display:flex}.Hero-module__Vtspxq__eyebrow{font-size:var(--text-subheading-size);line-height:var(--text-subheading-leading);font-weight:400}.Hero-module__Vtspxq__nameButton{font-family:inherit;font-size:var(--text-title-size);line-height:var(--text-title-leading);color:inherit;text-align:left;background:0 0;border:none;padding:0;font-weight:700}.Hero-module__Vtspxq__nameButton:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px}.Hero-module__Vtspxq__tooltipContent{background-color:var(--color-text-primary);color:var(--color-bg-page);font-family:var(--font-body);font-size:var(--text-body-small-size);box-shadow:var(--shadow-pill);will-change:transform, opacity;z-index:9999;border-radius:5px;padding:6px 10px;animation-duration:.2s;animation-timing-function:ease-out}.Hero-module__Vtspxq__tooltipContent[data-state=delayed-open]{animation-name:Hero-module__Vtspxq__slideUpFade}.Hero-module__Vtspxq__tooltipContent[data-state=closed]{animation-name:Hero-module__Vtspxq__fadeOut;animation-duration:.1s}@keyframes Hero-module__Vtspxq__slideUpFade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes Hero-module__Vtspxq__fadeOut{0%{opacity:1}to{opacity:0}}@media (max-width:768px){.Hero-module__Vtspxq__statusBar{text-align:center;flex-direction:column;align-items:center;gap:13px;display:flex}.Hero-module__Vtspxq__statusText{justify-content:center}.Hero-module__Vtspxq__contactButtons{position:static;top:auto;right:auto}.Hero-module__Vtspxq__content{justify-content:center}.Hero-module__Vtspxq__imageWrapper{aspect-ratio:1;justify-content:center;width:max(200px,100%)}.Hero-module__Vtspxq__doodleAnimation{bottom:-76px;left:50%;transform:translate(-50%)}.Hero-module__Vtspxq__heading{width:100%}}
.AnimatedIcon-module__1FctdW__wrapper{flex-shrink:0;width:64px;height:64px;display:inline-block;position:relative}.AnimatedIcon-module__1FctdW__frame{object-fit:contain;width:100%;height:100%;position:absolute;inset:0}.AnimatedIcon-module__1FctdW__frameOne{animation:2s step-end infinite AnimatedIcon-module__1FctdW__showFrameOne}.AnimatedIcon-module__1FctdW__frameTwo{animation:2s step-end infinite AnimatedIcon-module__1FctdW__showFrameTwo}@keyframes AnimatedIcon-module__1FctdW__showFrameOne{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes AnimatedIcon-module__1FctdW__showFrameTwo{0%,49%{opacity:0}50%,to{opacity:1}}@media (prefers-reduced-motion:reduce){.AnimatedIcon-module__1FctdW__frameOne,.AnimatedIcon-module__1FctdW__frameTwo{animation:none}.AnimatedIcon-module__1FctdW__frameTwo{opacity:0}}
.About-module__4EMPOa__about{text-align:center;justify-content:center;align-items:center;gap:16px;padding-block:40px;display:flex}.About-module__4EMPOa__circle{border:2px solid var(--color-text-primary);border-radius:50%;flex-shrink:0;width:64px;height:64px}.About-module__4EMPOa__bioText{font-family:var(--font-body);font-size:var(--text-body-size);line-height:var(--text-body-leading);color:var(--color-text-primary);opacity:.8;flex:240px;font-style:italic}
.Projects-module__hdPRpq__scallopTop,.Projects-module__hdPRpq__scallopBottom{z-index:-5;width:100%;display:block}.Projects-module__hdPRpq__scallopTop{margin-bottom:-8px}.Projects-module__hdPRpq__scallopBottom{margin-top:-8px}.Projects-module__hdPRpq__contentBg{background-color:var(--palette-light-blue)}.Projects-module__hdPRpq__content{align-items:flex-start;gap:32px;padding-block:64px;display:flex}.Projects-module__hdPRpq__contentInner{flex:1 1 0;min-width:0}.Projects-module__hdPRpq__sectionHeading{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:var(--text-label-size);line-height:var(--text-label-leading);color:var(--palette-dark-blue);opacity:.75;text-align:center;margin-bottom:6px}.Projects-module__hdPRpq__projectList{flex-direction:column;gap:58px;display:flex}.Projects-module__hdPRpq__tileGrid{flex-wrap:wrap;justify-content:center;gap:16px;padding:40px 0;display:flex}.Projects-module__hdPRpq__sectionHeading:not(:first-child){margin-top:64px}@media (max-width:768px){.Projects-module__hdPRpq__content{flex-direction:column}.Projects-module__hdPRpq__verticalLabel{writing-mode:horizontal-tb;position:static;top:auto;transform:none}.Projects-module__hdPRpq__tileGrid{gap:12px;margin:0}}
.Pill-module__df9fkq__pill{padding:var(--pill-padding-y) var(--pill-padding-x);border-radius:var(--radius-pill);font-family:var(--font-body);font-weight:300;font-size:var(--text-body-small-size);line-height:var(--text-body-small-leading);color:var(--color-text-primary);box-shadow:var(--shadow-pill);white-space:nowrap;justify-content:center;align-items:center;display:inline-flex}.Pill-module__df9fkq__design{background-color:var(--color-tag-design-bg)}.Pill-module__df9fkq__dev{background-color:var(--color-tag-dev-bg)}.Pill-module__df9fkq__tools{background-color:var(--color-tag-tools-bg)}
.ProjectCard-module__glg5Lq__card{color:inherit;z-index:5;border-radius:19px;align-items:center;gap:32px;padding:13px;text-decoration:none;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex}.ProjectCard-module__glg5Lq__imageRight{flex-direction:row-reverse}.ProjectCard-module__glg5Lq__imageWrapper{aspect-ratio:1;border:.5px solid var(--color-border);width:min(300px,55vw);box-shadow:var(--shadow-pill);border-radius:6px;flex-shrink:0;transition:all .25s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden;transform:rotate(-5deg)}.ProjectCard-module__glg5Lq__imageRight .ProjectCard-module__glg5Lq__imageWrapper{transform:rotate(5deg)}.ProjectCard-module__glg5Lq__card.ProjectCard-module__glg5Lq__isActive .ProjectCard-module__glg5Lq__imageWrapper{transform:rotate(0)}.ProjectCard-module__glg5Lq__image{object-fit:cover;object-position:top;opacity:.9;transition:all .25s cubic-bezier(.4,0,.2,1);transform:scale(1.01)}.ProjectCard-module__glg5Lq__card.ProjectCard-module__glg5Lq__isActive .ProjectCard-module__glg5Lq__image{opacity:1}.ProjectCard-module__glg5Lq__text{background-color:#0000;border:1px solid #0000;border-radius:6px;flex-direction:column;flex:1 1 0;gap:13px;padding:19px;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex;position:relative}.ProjectCard-module__glg5Lq__card.ProjectCard-module__glg5Lq__isActive .ProjectCard-module__glg5Lq__text{background-color:var(--palette-transparent-blue);border-color:var(--palette-white)}.ProjectCard-module__glg5Lq__viewLink{font-family:var(--font-body);font-size:var(--text-body-size);color:var(--color-accent-hover);opacity:0;align-items:center;gap:3px;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;top:16px;right:16px}.ProjectCard-module__glg5Lq__viewArrow{font-size:var(--text-body-size);color:var(--color-accent-hover);opacity:0;transition:all .25s cubic-bezier(.4,0,.2,1);position:absolute;top:16px;right:16px;transform:rotate(-45deg)}.ProjectCard-module__glg5Lq__card.ProjectCard-module__glg5Lq__isActive .ProjectCard-module__glg5Lq__viewArrow{opacity:1}@media (hover:hover){.ProjectCard-module__glg5Lq__card:hover .ProjectCard-module__glg5Lq__imageWrapper{transform:rotate(0)}.ProjectCard-module__glg5Lq__card:hover .ProjectCard-module__glg5Lq__image{opacity:1}.ProjectCard-module__glg5Lq__card:hover .ProjectCard-module__glg5Lq__text{background-color:var(--palette-transparent-blue);border-color:var(--palette-white)}.ProjectCard-module__glg5Lq__card:hover .ProjectCard-module__glg5Lq__viewLink,.ProjectCard-module__glg5Lq__card:hover .ProjectCard-module__glg5Lq__viewArrow{opacity:1}}.ProjectCard-module__glg5Lq__title{font-family:var(--font-display);font-weight:500;font-size:var(--text-h2-size);line-height:var(--text-h2-leading);color:var(--color-text-primary)}.ProjectCard-module__glg5Lq__description{font-family:var(--font-body);font-size:var(--text-body-size);line-height:var(--text-body-leading);color:var(--color-text-primary)}.ProjectCard-module__glg5Lq__tags{flex-wrap:wrap;gap:6px;display:flex}@media (max-width:768px){.ProjectCard-module__glg5Lq__card{flex-direction:column}}@media (hover:none){.ProjectCard-module__glg5Lq__viewLink{opacity:1;align-self:flex-end;margin:-10px;padding:10px;position:static}}
.Tile-module__L0t_rW__tile{width:180px;height:180px;transition:transform .25s cubic-bezier(.4,0,.2,1);display:block;position:relative}.Tile-module__L0t_rW__image{object-fit:contain;opacity:.9;filter:drop-shadow(0 4px 8px #0003);max-width:70%;max-height:55%;margin:auto;transition:opacity .25s cubic-bezier(.4,0,.2,1),scale .25s cubic-bezier(.4,0,.2,1)}.Tile-module__L0t_rW__tile:hover{transform:translateY(-2px)}.Tile-module__L0t_rW__tile:hover .Tile-module__L0t_rW__image{opacity:1;filter:drop-shadow(0 5px 9px #00000040)}@media (max-width:768px){.Tile-module__L0t_rW__tile{width:140px;height:140px}}
.VerticalLabel-module__DfOpwa__label{writing-mode:vertical-rl;font-family:var(--font-display);font-style:italic;font-weight:700;font-size:var(--text-label-size);line-height:var(--text-label-leading);color:var(--palette-dark-blue);opacity:.75;flex-shrink:0;position:sticky;top:26px;transform:rotate(180deg)}@media (max-width:768px){.VerticalLabel-module__DfOpwa__label{writing-mode:horizontal-tb;position:static;top:auto;transform:none}}
.Skills-module__qOQKrG__skills{flex-direction:row;align-items:flex-start;gap:32px;padding-block:51px;display:flex}.Skills-module__qOQKrG__pillRow{flex-wrap:wrap;flex:240px;justify-content:center;align-items:center;gap:6px;display:flex}@media (max-width:764px){.Skills-module__qOQKrG__skills{flex-direction:column;gap:26px}.Skills-module__qOQKrG__pillRow{flex:160px}}
.ScreenshotGallery-module__I6hK5W__gallery{grid-template-columns:repeat(2,1fr);grid-auto-rows:240px;grid-auto-flow:dense;gap:13px;margin-top:32px;display:grid}.ScreenshotGallery-module__I6hK5W__item{background:0 0;background-color:var(--palette-very-light-blue);border:none;border:.5px solid var(--color-border);width:100%;box-shadow:var(--shadow-pill);border-radius:6px;padding:0;transition:all .4s cubic-bezier(.34,1.56,.64,1),transform .25s cubic-bezier(.4,0,.2,1);display:block;overflow:hidden}.ScreenshotGallery-module__I6hK5W__item:hover{background-color:var(--palette-light-blue)}.ScreenshotGallery-module__I6hK5W__item:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.ScreenshotGallery-module__I6hK5W__image{opacity:.95;transform:scale(var(--shot-scale,1));transition:all .25s cubic-bezier(.4,0,.2,1)}.ScreenshotGallery-module__I6hK5W__image:hover{opacity:1}.ScreenshotGallery-module__I6hK5W__item:hover .ScreenshotGallery-module__I6hK5W__image{transform:scale(calc(var(--shot-scale,1) * 1.015))}.ScreenshotGallery-module__I6hK5W__imageWrapper{border:19px solid var(--palette-very-light-blue);border-radius:6px;width:100%;height:100%;padding:16px;transition:all .4s cubic-bezier(.34,1.56,.64,1),transform .25s cubic-bezier(.4,0,.2,1);position:relative}.ScreenshotGallery-module__I6hK5W__imageWrapper:hover{border:19px solid var(--palette-light-blue)}.ScreenshotGallery-module__I6hK5W__size1x1{grid-area:span 1/span 1}.ScreenshotGallery-module__I6hK5W__size2x1{grid-area:span 1/span 2}.ScreenshotGallery-module__I6hK5W__size1x2{grid-area:span 2/span 1}.ScreenshotGallery-module__I6hK5W__size2x2{grid-area:span 2/span 2}.ScreenshotGallery-module__I6hK5W__overlayImage{transition:transform .3s cubic-bezier(.4,0,.2,1)}@media (max-width:600px){.ScreenshotGallery-module__I6hK5W__gallery{grid-template-columns:1fr;grid-auto-rows:224px}.ScreenshotGallery-module__I6hK5W__size1x1,.ScreenshotGallery-module__I6hK5W__size2x1,.ScreenshotGallery-module__I6hK5W__size1x2,.ScreenshotGallery-module__I6hK5W__size2x2{grid-area:span 1/span 1}}.ScreenshotGallery-module__I6hK5W__overlay{z-index:10000;opacity:0;background-color:#00000080;justify-content:center;align-items:center;padding:32px;transition:opacity .25s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;inset:0}.ScreenshotGallery-module__I6hK5W__overlay.ScreenshotGallery-module__I6hK5W__visible{opacity:1}.ScreenshotGallery-module__I6hK5W__overlayImageWrapper{width:90vw;height:85vh;transition:transform .25s cubic-bezier(.4,0,.2,1);position:relative;transform:scale(.96)}.ScreenshotGallery-module__I6hK5W__overlay.ScreenshotGallery-module__I6hK5W__visible .ScreenshotGallery-module__I6hK5W__overlayImageWrapper{transform:scale(1)}.ScreenshotGallery-module__I6hK5W__overlayImage{border-radius:6px}.ScreenshotGallery-module__I6hK5W__closeButton{background-color:var(--palette-medium-blue);width:35px;height:35px;color:var(--palette-white);border:none;border-radius:50%;font-size:1.4rem;line-height:1;transition:background-color .2s;position:absolute;top:19px;right:19px}.ScreenshotGallery-module__I6hK5W__closeButton:hover{background-color:var(--palette-dark-blue)}.ScreenshotGallery-module__I6hK5W__closeButton:focus-visible{outline:2px solid var(--palette-white);outline-offset:2px}
.ProjectPage-module__y8P8lG__backLink{width:fit-content;font-family:var(--font-body);font-weight:300;font-size:var(--text-body-small-size);line-height:var(--text-body-small-leading);color:var(--palette-dark-blue);opacity:.85;background-color:#0000;border:none;align-items:center;gap:6px;padding-bottom:51px;text-decoration:none;transition:all .25s cubic-bezier(.4,0,.2,1);display:inline-flex}.ProjectPage-module__y8P8lG__backLink:hover{opacity:1;gap:11px;margin-left:-5px}.ProjectPage-module__y8P8lG__blueBand{background-color:var(--palette-very-light-blue);padding-block:38px 19px}.ProjectPage-module__y8P8lG__blueBandInner{flex-direction:column;gap:13px;display:flex}.ProjectPage-module__y8P8lG__title{font-family:var(--font-display);font-weight:700;font-size:var(--text-h1-size);line-height:var(--text-h1-leading);color:var(--color-text-primary);overflow-wrap:anywhere}.ProjectPage-module__y8P8lG__shortDescription{font-family:var(--font-body);font-weight:300;font-size:var(--text-body-small-size);line-height:var(--text-body-small-leading);color:var(--color-text-primary);overflow-wrap:anywhere;padding-right:80px}.ProjectPage-module__y8P8lG__body{padding-block:51px}.ProjectPage-module__y8P8lG__details{flex-direction:column;gap:26px;display:flex}.ProjectPage-module__y8P8lG__tags{flex-wrap:wrap;gap:6px;display:flex}.ProjectPage-module__y8P8lG__divider{border:none;border-top:.5px solid var(--color-border);width:100%;margin:0}.ProjectPage-module__y8P8lG__metadata{grid-template-columns:max-content 1fr;align-items:baseline;gap:6px 13px;margin:0;display:grid}.ProjectPage-module__y8P8lG__attribute{display:contents}.ProjectPage-module__y8P8lG__attribute dt{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:var(--text-label-small-size);line-height:var(--text-label-small-leading);color:var(--color-text-secondary);flex-shrink:0}.ProjectPage-module__y8P8lG__attribute dd{font-family:var(--font-body);font-size:var(--text-body-size);line-height:var(--text-body-leading);color:var(--color-text-primary);overflow-wrap:anywhere;margin:0}.ProjectPage-module__y8P8lG__attribute dd a{color:var(--color-accent-hover)}.ProjectPage-module__y8P8lG__longDescription{font-family:var(--font-body);font-size:var(--text-body-size);line-height:var(--text-body-leading);color:var(--color-text-primary);margin-top:51px}@media (max-width:899px){.ProjectPage-module__y8P8lG__shortDescription{padding:0}}
.Contact-module__sgxDga__contact{flex-wrap:wrap;justify-content:flex-start;align-items:flex-start;gap:32px;padding-block:51px;display:flex}.Contact-module__sgxDga__buttons{flex-wrap:wrap;flex:240px;justify-content:center;gap:13px;display:flex}.Contact-module__sgxDga__button{border-radius:var(--radius-pill);background-color:var(--palette-very-light-blue);box-shadow:var(--shadow-pill);font-family:var(--font-body);font-size:var(--text-body-size);line-height:var(--text-body-leading);color:var(--color-text-primary);align-items:center;gap:13px;padding:13px 26px;text-decoration:none;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex}.Contact-module__sgxDga__button:hover{background-color:var(--palette-light-blue);transform:translateY(-2px)}.Contact-module__sgxDga__button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.Contact-module__sgxDga__buttonIcon{flex-shrink:0;font-size:1.2rem}@media (max-width:700px){.Contact-module__sgxDga__contact{flex-direction:column;align-items:flex-start}.Contact-module__sgxDga__buttons{flex:none;justify-content:center;width:100%}}
