.page-module___8aEwW__home{padding-bottom:var(--section-space)}.page-module___8aEwW__cover{object-fit:cover}.page-module___8aEwW__hero{padding-top:clamp(2.5rem,1.5rem + 3vw,4.5rem)}.page-module___8aEwW__heroGrid{grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(2rem,1.5rem + 1.5vw,3rem) clamp(1.5rem,1rem + 2vw,2.5rem);display:grid}.page-module___8aEwW__heroHead{grid-column:1/-1}.page-module___8aEwW__heroEyebrow{margin-bottom:1.25rem}.page-module___8aEwW__heroTitle{letter-spacing:-.035em;max-width:22ch;color:var(--text);text-wrap:pretty;font-size:clamp(2.25rem,1.2rem + 3.6vw,4.5rem);line-height:1.02}.page-module___8aEwW__heroTitleTail{color:var(--accent-text)}@media (min-width:640px){.page-module___8aEwW__heroTitle{max-width:none}.page-module___8aEwW__heroTitleTail{display:block}}.page-module___8aEwW__heroBody{grid-column:1/span 6;align-self:start}.page-module___8aEwW__heroLead{max-width:50ch;color:var(--text-muted);font-size:clamp(1.0625rem,1rem + .3vw,1.1875rem);line-height:1.6}.page-module___8aEwW__heroActions{flex-wrap:wrap;gap:.75rem;margin-top:2rem;display:flex}@media (max-width:560px){.page-module___8aEwW__heroActions>*{flex:100%}}.page-module___8aEwW__heroMedia{grid-column:8/-1;padding:0 0 14% 14%;position:relative}.page-module___8aEwW__heroPortrait{aspect-ratio:4/5;border-radius:var(--radius);background:var(--surface-2);position:relative;overflow:hidden}.page-module___8aEwW__heroPlaceholder{background:var(--surface-2);position:absolute;inset:0}.page-module___8aEwW__heroInset{aspect-ratio:1;border-radius:var(--radius);background:var(--surface-2);outline:6px solid var(--surface);width:44%;box-shadow:0 24px 48px -24px var(--shadow-color);position:absolute;bottom:0;left:0;overflow:hidden}@media (max-width:900px){.page-module___8aEwW__heroBody,.page-module___8aEwW__heroMedia{grid-column:1/-1}.page-module___8aEwW__heroMedia{width:min(100%,440px);padding:0 0 12% 12%}}.page-module___8aEwW__bento{grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;display:grid}.page-module___8aEwW__cellWide{grid-column:span 7}.page-module___8aEwW__cellNarrow{grid-column:span 5}.page-module___8aEwW__cellFull{grid-column:1/-1}.page-module___8aEwW__serviceCell{border-radius:var(--radius);background:var(--surface-2);height:100%;min-height:340px;color:var(--text);transition:background-color .24s var(--ease-out),transform .16s var(--ease-out);padding:clamp(1.5rem,1rem + 1.5vw,2.25rem);display:grid;overflow:hidden}.page-module___8aEwW__serviceCellMedia{grid-template-columns:minmax(0,1fr) minmax(0,.85fr);gap:clamp(1.25rem,1rem + 1vw,2rem)}.page-module___8aEwW__serviceCell:active{transform:scale(var(--press-scale-lg))}.page-module___8aEwW__serviceBody{flex-direction:column;min-width:0;display:flex}.page-module___8aEwW__serviceIcon{color:var(--accent);margin-bottom:2rem}.page-module___8aEwW__serviceTitle{font-size:var(--text-xl);letter-spacing:-.02em}.page-module___8aEwW__serviceBlurb{margin-top:.75rem;font-size:.9375rem;line-height:1.6}.page-module___8aEwW__serviceBullets{flex-wrap:wrap;gap:6px;margin-top:1.25rem;list-style:none;display:flex}.page-module___8aEwW__serviceBullets li{border:1px solid var(--line);border-radius:var(--radius);color:var(--text-muted);padding:4px 10px;font-size:.8125rem;line-height:1.4}.page-module___8aEwW__serviceLink{align-items:center;gap:.4em;margin-top:auto;padding-top:1.75rem;font-size:.9375rem;font-weight:600;display:inline-flex}.page-module___8aEwW__serviceLink svg{transition:transform .2s var(--ease-out)}.page-module___8aEwW__serviceMedia{border-radius:var(--radius);background:var(--surface);min-height:220px;position:relative;overflow:hidden}.page-module___8aEwW__serviceMedia img{transition:transform .5s var(--ease-out)}@media (hover:hover) and (pointer:fine){.page-module___8aEwW__serviceCell:hover{background:color-mix(in oklab,var(--surface-2)75%,var(--line))}.page-module___8aEwW__serviceCell:hover .page-module___8aEwW__serviceLink svg{transform:translate(3px)}.page-module___8aEwW__serviceCell:hover .page-module___8aEwW__serviceMedia img{transform:scale(var(--hover-zoom))}}@media (max-width:900px){.page-module___8aEwW__cellWide,.page-module___8aEwW__cellNarrow{grid-column:1/-1}.page-module___8aEwW__serviceCell{min-height:0}.page-module___8aEwW__serviceCellMedia{grid-template-columns:1fr}.page-module___8aEwW__serviceMedia{aspect-ratio:16/10;order:-1;min-height:0}}.page-module___8aEwW__workGrid{--offset:clamp(3rem,2rem + 4vw,7.5rem);padding-bottom:var(--offset);grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(3rem,2rem + 3vw,5rem) clamp(1.5rem,1rem + 3vw,4rem);display:grid}.page-module___8aEwW__workItem:nth-child(2n){margin-top:var(--offset);margin-bottom:calc(var(--offset)*-1)}@media (max-width:760px){.page-module___8aEwW__workGrid{grid-template-columns:1fr;padding-bottom:0}.page-module___8aEwW__workItem:nth-child(2n){margin:0}}.page-module___8aEwW__blogGrid{grid-template-rows:auto 1fr;grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start;gap:1.5rem clamp(1.5rem,1rem + 3vw,3.5rem);display:grid}.page-module___8aEwW__blogLeadCell{grid-row:1/span 2}.page-module___8aEwW__blogRowCell+.page-module___8aEwW__blogRowCell{border-top:1px solid var(--line);padding-top:1.5rem}.page-module___8aEwW__blogLead,.page-module___8aEwW__blogRow{color:var(--text);display:grid}.page-module___8aEwW__blogLead{gap:1.25rem}.page-module___8aEwW__blogRow{grid-template-columns:128px minmax(0,1fr);align-items:start;gap:1.25rem}.page-module___8aEwW__blogThumb{border-radius:var(--radius);background:var(--surface-2);position:relative;overflow:hidden}.page-module___8aEwW__blogLead .page-module___8aEwW__blogThumb{aspect-ratio:16/10}.page-module___8aEwW__blogRow .page-module___8aEwW__blogThumb{aspect-ratio:1}.page-module___8aEwW__blogThumb img{transition:transform .5s var(--ease-out)}.page-module___8aEwW__blogThumbEmpty{color:var(--text-subtle);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.page-module___8aEwW__blogText{flex-direction:column;gap:.5rem;min-width:0;display:flex}.page-module___8aEwW__blogTitle{font-size:var(--text-lg);letter-spacing:-.015em;line-height:1.25}.page-module___8aEwW__blogLead .page-module___8aEwW__blogTitle{font-size:var(--text-xl)}.page-module___8aEwW__blogExcerpt{color:var(--text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.9375rem;line-height:1.6;display:-webkit-box;overflow:hidden}.page-module___8aEwW__blogLead .page-module___8aEwW__blogExcerpt{-webkit-line-clamp:3}.page-module___8aEwW__readMore{align-items:center;gap:.4em;margin-top:.5rem;font-size:.9375rem;font-weight:600;display:inline-flex}.page-module___8aEwW__readMore svg{transition:transform .2s var(--ease-out)}@media (hover:hover) and (pointer:fine){.page-module___8aEwW__blogLead:hover .page-module___8aEwW__blogThumb img,.page-module___8aEwW__blogRow:hover .page-module___8aEwW__blogThumb img{transform:scale(var(--hover-zoom))}.page-module___8aEwW__blogLead:hover .page-module___8aEwW__readMore svg{transform:translate(3px)}.page-module___8aEwW__blogLead:hover .page-module___8aEwW__blogTitle,.page-module___8aEwW__blogRow:hover .page-module___8aEwW__blogTitle{text-underline-offset:.2em;text-decoration:underline;text-decoration-thickness:1px}}@media (max-width:900px){.page-module___8aEwW__blogGrid{grid-template-columns:1fr}.page-module___8aEwW__blogLeadCell{grid-row:auto;margin-bottom:1rem}.page-module___8aEwW__blogRowCell:first-of-type{border-top:1px solid var(--line);padding-top:1.5rem}}@media (max-width:480px){.page-module___8aEwW__blogRow{grid-template-columns:88px minmax(0,1fr)}}.page-module___8aEwW__customersTitle{font-size:var(--text-md);letter-spacing:0;color:var(--text-muted);margin-bottom:1.5rem;font-weight:600}.page-module___8aEwW__logoWall{grid-template-columns:repeat(5,minmax(0,1fr));gap:.5rem;list-style:none;display:grid}.page-module___8aEwW__logoItem{border-radius:var(--radius);height:112px;transition:background-color .2s var(--ease-out);justify-content:center;align-items:center;display:flex}.page-module___8aEwW__logo{object-fit:contain;filter:url(#logo-ink);mix-blend-mode:multiply;opacity:.85;width:auto;height:76px;transition:opacity .2s var(--ease-out)}.page-module___8aEwW__logoName{color:var(--text-muted);text-align:center;font-weight:600}@media (hover:hover) and (pointer:fine){a.page-module___8aEwW__logoItem:hover{background:var(--surface-2)}a.page-module___8aEwW__logoItem:hover .page-module___8aEwW__logo{opacity:1}}@media (prefers-color-scheme:dark){.site-shell .page-module___8aEwW__logo{filter:url(#logo-ink)invert();mix-blend-mode:screen}}@media (max-width:900px){.page-module___8aEwW__logoWall{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:480px){.page-module___8aEwW__logoWall{grid-template-columns:repeat(2,minmax(0,1fr))}.page-module___8aEwW__logoItem{height:96px}}.page-module___8aEwW__faq{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:2.5rem clamp(2rem,1rem + 4vw,5rem);display:grid}.page-module___8aEwW__faqIntro p{color:var(--text-muted);margin:1rem 0 1.5rem}.page-module___8aEwW__faqItem{border-bottom:1px solid var(--line);interpolate-size:allow-keywords}.page-module___8aEwW__faqItem summary{min-height:64px;font-size:var(--text-md);cursor:pointer;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 0;font-weight:600;list-style:none;display:flex}.page-module___8aEwW__faqItem summary::-webkit-details-marker{display:none}.page-module___8aEwW__faqIcon{color:var(--text-subtle);transition:transform .2s var(--ease-out);flex:none}.page-module___8aEwW__faqItem[open] .page-module___8aEwW__faqIcon{transform:rotate(45deg)}.page-module___8aEwW__faqItem::details-content{block-size:0;transition:block-size .28s var(--ease-out),content-visibility .28s allow-discrete;overflow:hidden}.page-module___8aEwW__faqItem[open]::details-content{block-size:auto}.page-module___8aEwW__faqAnswer{max-width:62ch;color:var(--text-muted);padding-bottom:1.25rem}@media (max-width:900px){.page-module___8aEwW__faq{grid-template-columns:1fr}}.page-module___8aEwW__closing{border-radius:var(--radius);background:var(--accent-soft);flex-direction:column;align-items:flex-start;gap:1.25rem;padding:clamp(2.25rem,1.5rem + 4vw,5rem);display:flex}.page-module___8aEwW__closingTitle{max-width:20ch;font-size:var(--text-3xl);letter-spacing:-.03em;line-height:1.05}.page-module___8aEwW__closingText{max-width:52ch;font-size:var(--text-md);color:var(--text-muted);margin-bottom:.75rem}.page-module___8aEwW__filterDefs{width:0;height:0;position:absolute;overflow:hidden}
.ProjectCard-module__uQSOIq__wrap{height:100%}.ProjectCard-module__uQSOIq__card{height:100%;color:var(--text);overflow-wrap:break-word;transition:transform .16s var(--ease-out);flex-direction:column;gap:1.25rem;display:flex}.ProjectCard-module__uQSOIq__card:active{transform:scale(var(--press-scale-lg))}.ProjectCard-module__uQSOIq__media{aspect-ratio:4/3;border-radius:var(--radius);background:var(--surface-2);position:relative;overflow:hidden}.ProjectCard-module__uQSOIq__image{object-fit:cover;transition:transform .5s var(--ease-out)}.ProjectCard-module__uQSOIq__modelLoading{position:absolute;inset:0}.ProjectCard-module__uQSOIq__body{flex-direction:column;gap:.5rem;display:flex}.ProjectCard-module__uQSOIq__meta{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em;color:var(--text-subtle);flex-wrap:wrap;align-items:center;gap:.25rem 1rem;display:flex}.ProjectCard-module__uQSOIq__badge{color:var(--accent-text);align-items:center;gap:5px;display:inline-flex}.ProjectCard-module__uQSOIq__title{letter-spacing:-.02em;justify-content:space-between;align-items:flex-start;gap:.75rem;line-height:1.2;display:flex}.ProjectCard-module__uQSOIq__featured .ProjectCard-module__uQSOIq__title{font-size:var(--text-xl)}.ProjectCard-module__uQSOIq__grid .ProjectCard-module__uQSOIq__title{font-size:var(--text-lg)}.ProjectCard-module__uQSOIq__arrow{color:var(--text-subtle);transition:transform .2s var(--ease-out),color .2s var(--ease-out);flex:none;margin-top:.1em}.ProjectCard-module__uQSOIq__desc{color:var(--text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.9375rem;line-height:1.6;display:-webkit-box;overflow:hidden}.ProjectCard-module__uQSOIq__grid .ProjectCard-module__uQSOIq__desc{-webkit-line-clamp:3}@media (hover:hover) and (pointer:fine){.ProjectCard-module__uQSOIq__card:hover .ProjectCard-module__uQSOIq__image{transform:scale(var(--hover-zoom))}.ProjectCard-module__uQSOIq__card:hover .ProjectCard-module__uQSOIq__arrow{color:var(--text);transform:translate(2px,-2px)}}@media (prefers-reduced-motion:reduce){.ProjectCard-module__uQSOIq__card:hover .ProjectCard-module__uQSOIq__arrow{transform:none}}
.PortfolioFilter-module__LfNnjq__filterBar{top:var(--nav-height,72px);z-index:calc(var(--zi-nav) - 1);background:var(--surface);background:color-mix(in oklab,var(--surface)88%,transparent);-webkit-backdrop-filter:saturate(160%)blur(14px);backdrop-filter:saturate(160%)blur(14px);border-block:1px solid var(--line);margin:clamp(2rem,1.5rem + 1.5vw,3rem) 0;position:sticky}.PortfolioFilter-module__LfNnjq__filterRow{justify-content:space-between;align-items:center;gap:.75rem 1.5rem;min-height:64px;padding-block:.75rem;display:flex}.PortfolioFilter-module__LfNnjq__chips{scrollbar-width:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;gap:6px;min-width:0;display:flex;overflow-x:auto}.PortfolioFilter-module__LfNnjq__chips::-webkit-scrollbar{display:none}.PortfolioFilter-module__LfNnjq__chip{border:1px solid var(--line);border-radius:var(--radius);height:36px;font-size:var(--text-sm);color:var(--text-muted);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .2s var(--ease-out),background-color .2s var(--ease-out),border-color .2s var(--ease-out),transform .16s var(--ease-out);background:0 0;flex:none;padding:0 14px;font-weight:500}.PortfolioFilter-module__LfNnjq__chip:active{transform:scale(var(--press-scale))}.PortfolioFilter-module__LfNnjq__chip[aria-pressed=true]{background:var(--text);border-color:var(--text);color:var(--surface)}@media (hover:hover) and (pointer:fine){.PortfolioFilter-module__LfNnjq__chip[aria-pressed=false]:hover{border-color:var(--line-strong);color:var(--text)}}.PortfolioFilter-module__LfNnjq__tools{flex:none;align-items:center;gap:1rem;display:flex}.PortfolioFilter-module__LfNnjq__search{align-items:center;display:flex;position:relative}.PortfolioFilter-module__LfNnjq__searchIcon{color:var(--text-subtle);pointer-events:none;position:absolute;left:12px}.PortfolioFilter-module__LfNnjq__searchInput{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--raised);width:220px;height:40px;color:var(--text);transition:border-color .2s var(--ease-out),box-shadow .2s var(--ease-out);padding:0 12px 0 36px;font-size:1rem}.PortfolioFilter-module__LfNnjq__searchInput::placeholder{color:var(--text-subtle)}.PortfolioFilter-module__LfNnjq__searchInput:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.PortfolioFilter-module__LfNnjq__resultCount{white-space:nowrap}@media (max-width:900px){.PortfolioFilter-module__LfNnjq__filterRow{flex-direction:column;align-items:stretch}.PortfolioFilter-module__LfNnjq__tools{justify-content:space-between}.PortfolioFilter-module__LfNnjq__search{flex:1}.PortfolioFilter-module__LfNnjq__searchInput{width:100%}}
.AppShowcase-module__bKrQ4a__panel{--lift:clamp(2.5rem,1.5rem + 3vw,4.5rem);margin-top:var(--lift);border-radius:var(--radius);background:var(--surface-2);grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:end;gap:clamp(2rem,1rem + 4vw,5rem);padding:0 clamp(1.5rem,1rem + 3vw,4rem);display:grid}.AppShowcase-module__bKrQ4a__device{width:min(100%,300px);margin-top:calc(var(--lift)*-1);justify-self:center}.AppShowcase-module__bKrQ4a__screen{border:1px solid var(--line);border-radius:var(--radius)var(--radius)0 0;width:100%;height:auto;box-shadow:0 -12px 40px -24px var(--shadow-color);aspect-ratio:9/15;object-fit:cover;object-position:top;border-bottom:0}.AppShowcase-module__bKrQ4a__copy{align-self:center;padding-block:clamp(2.5rem,2rem + 2vw,4rem)}.AppShowcase-module__bKrQ4a__title{font-size:var(--text-2xl);letter-spacing:-.025em;margin-top:1rem}.AppShowcase-module__bKrQ4a__description{max-width:52ch;font-size:var(--text-md);color:var(--text-muted);margin-top:1rem}.AppShowcase-module__bKrQ4a__features{gap:1.25rem;margin-top:2rem;display:grid}.AppShowcase-module__bKrQ4a__feature{grid-template-columns:20px minmax(0,1fr);gap:.25rem .875rem;display:grid}.AppShowcase-module__bKrQ4a__featureIcon{color:var(--accent);grid-row:1/span 2;margin-top:2px}.AppShowcase-module__bKrQ4a__feature dt{color:var(--text);font-weight:600}.AppShowcase-module__bKrQ4a__feature dd{color:var(--text-muted);font-size:.9375rem;line-height:1.55}.AppShowcase-module__bKrQ4a__actions{flex-wrap:wrap;align-items:center;gap:1rem 1.25rem;margin-top:2.25rem;display:flex}@media (max-width:900px){.AppShowcase-module__bKrQ4a__panel{grid-template-columns:1fr;gap:0;padding-top:0}.AppShowcase-module__bKrQ4a__copy{order:-1;padding-bottom:2rem}.AppShowcase-module__bKrQ4a__device{width:min(70%,280px);margin-top:0}}
.GithubSection-module__n7VhFG__grid{grid-template-columns:minmax(0,4fr) minmax(0,8fr);align-items:start;gap:2.5rem clamp(2rem,1rem + 4vw,5rem);display:grid}.GithubSection-module__n7VhFG__identity{align-items:center;gap:1rem;display:flex}.GithubSection-module__n7VhFG__avatar{border-radius:var(--radius);background:var(--surface-2)}.GithubSection-module__n7VhFG__name{font-weight:600;font-size:var(--text-md);color:var(--text)}.GithubSection-module__n7VhFG__bio{color:var(--text-muted);margin-top:1.25rem;font-size:.9375rem}.GithubSection-module__n7VhFG__stats{gap:1.25rem;margin-top:2rem;display:grid}.GithubSection-module__n7VhFG__stats div{flex-direction:column-reverse;gap:.125rem;display:flex}.GithubSection-module__n7VhFG__stats dd{font-family:var(--font-heading);font-size:var(--text-2xl);letter-spacing:-.03em;color:var(--text);font-variant-numeric:tabular-nums;font-weight:600;line-height:1}.GithubSection-module__n7VhFG__stats dt{font-size:var(--text-sm);color:var(--text-subtle)}.GithubSection-module__n7VhFG__repos{border-top:1px solid var(--line);list-style:none}.GithubSection-module__n7VhFG__repos>li{border-bottom:1px solid var(--line)}.GithubSection-module__n7VhFG__repo{border-radius:var(--radius);color:var(--text);transition:background-color .2s var(--ease-out);grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.5rem 2rem;margin:0 -.75rem;padding:1.25rem .75rem;display:grid}.GithubSection-module__n7VhFG__repoName{font-family:var(--font-mono);letter-spacing:0;align-items:center;gap:.375rem;font-size:.9375rem;font-weight:500;display:inline-flex}.GithubSection-module__n7VhFG__repoArrow{color:var(--text-subtle);transition:transform .2s var(--ease-out)}.GithubSection-module__n7VhFG__repoDesc{color:var(--text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:.375rem;font-size:.9375rem;display:-webkit-box;overflow:hidden}.GithubSection-module__n7VhFG__repoMeta{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-subtle);white-space:nowrap;align-items:center;gap:1rem;padding-top:.2rem;display:flex}.GithubSection-module__n7VhFG__repoMeta span{align-items:center;gap:4px;display:inline-flex}@media (hover:hover) and (pointer:fine){.GithubSection-module__n7VhFG__repo:hover{background:var(--surface-2)}.GithubSection-module__n7VhFG__repo:hover .GithubSection-module__n7VhFG__repoArrow{transform:translate(2px,-2px)}}.GithubSection-module__n7VhFG__fallback{max-width:60ch;color:var(--text-muted)}.GithubSection-module__n7VhFG__fallback a{color:var(--accent-text);text-underline-offset:.2em;text-decoration:underline}.GithubSection-module__n7VhFG__avatarSkeleton{width:56px;height:56px}.GithubSection-module__n7VhFG__lineSkeleton{width:45%;height:14px}.GithubSection-module__n7VhFG__lineSkeletonWide{width:80%;height:14px}.GithubSection-module__n7VhFG__blockSkeleton{height:180px;margin-top:2rem}.GithubSection-module__n7VhFG__repoSkeleton{gap:.75rem;padding:1.5rem 0;display:grid}@media (max-width:900px){.GithubSection-module__n7VhFG__grid{grid-template-columns:1fr}.GithubSection-module__n7VhFG__stats{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:560px){.GithubSection-module__n7VhFG__repo{grid-template-columns:1fr}.GithubSection-module__n7VhFG__stats dd{font-size:var(--text-xl)}}
