.particles-container{width:100%;height:100%;position:relative;overflow:hidden}.particles-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.text-type{white-space:pre-wrap;display:inline-block;position:relative}.text-type__sr{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.text-type__char{position:relative}.text-type__char--selected{background-color:color-mix(in srgb, currentColor 25%, transparent)}.text-type__caret{width:0;display:inline-block}.text-type__cursor{white-space:pre;pointer-events:none;will-change:transform;transition:opacity .2s;position:absolute;top:0;left:0}.text-type__cursor--hidden{opacity:0}.text-type__blink{display:inline-block}.text-type__cursor--character .text-type__blink{margin-left:.25rem}.text-type__shape{background-color:currentColor;margin-left:.06em;display:inline-block}.text-type__cursor--bar .text-type__shape{vertical-align:-.2em;border-radius:1px;width:max(2px,.07em);height:1.1em}.text-type__cursor--block .text-type__shape{vertical-align:-.2em;border-radius:.06em;width:.56em;height:1.1em}.text-type__cursor--underscore .text-type__shape{vertical-align:-.12em;border-radius:1px;width:.56em;height:max(2px,.075em)}.logoloop{--logoloop-gap:32px;--logoloop-logoHeight:28px;--logoloop-pad:0px;padding-top:var(--logoloop-pad);padding-bottom:var(--logoloop-pad);-webkit-tap-highlight-color:transparent;position:relative;overflow:clip}.logoloop--vertical{height:100%;padding:0 var(--logoloop-pad);display:inline-block}.logoloop[data-draggable]{cursor:grab;touch-action:pan-y pinch-zoom}.logoloop--vertical[data-draggable]{touch-action:pan-x pinch-zoom}.logoloop[data-dragging],.logoloop[data-dragging] *{cursor:grabbing}.logoloop__track{z-index:0;will-change:transform;-webkit-user-select:none;user-select:none;width:max-content;display:flex;position:relative}.logoloop--vertical .logoloop__track{flex-direction:column;width:100%;height:max-content}.logoloop__list{align-items:center;margin:0;padding:0;list-style:none;display:flex}.logoloop--vertical .logoloop__list{flex-direction:column}.logoloop__item{margin-right:var(--logoloop-gap);font-size:var(--logoloop-logoHeight);flex:none;line-height:1;position:relative}.logoloop--vertical .logoloop__item{margin-right:0;margin-bottom:var(--logoloop-gap)}.logoloop[data-intro] .logoloop__item{opacity:0}.logoloop__content{align-items:center;gap:calc(var(--logoloop-logoHeight) * .3);color:inherit;border-radius:4px;text-decoration:none;transition:opacity .35s,filter .35s,color .35s;display:inline-flex}.logoloop[data-labels=below] .logoloop__content{gap:calc(var(--logoloop-logoHeight) * .22);flex-direction:column}.logoloop__content:focus-visible{outline-offset:2px;outline:2px solid}.logoloop__node{align-items:center;display:inline-flex}.logoloop__item img{width:auto;height:var(--logoloop-logoHeight);object-fit:contain;image-rendering:-webkit-optimize-contrast;-webkit-user-drag:none;pointer-events:none;display:block}.logoloop__node,.logoloop__item img{transition:transform .3s cubic-bezier(.4,0,.2,1)}.logoloop--scale-hover .logoloop__item:hover img,.logoloop--scale-hover .logoloop__item:hover .logoloop__node{transform:scale(1.2)}.logoloop__label{font-size:max(12px, calc(var(--logoloop-logoHeight) * .5));letter-spacing:-.01em;white-space:nowrap;font-weight:600;line-height:1.2}.logoloop[data-labels=below] .logoloop__label{font-size:max(11px, calc(var(--logoloop-logoHeight) * .26));letter-spacing:0;opacity:.72;font-weight:500}.logoloop__tip{margin-top:calc(var(--logoloop-logoHeight) * .2);font-size:max(11px, calc(var(--logoloop-logoHeight) * .26));white-space:nowrap;opacity:0;pointer-events:none;font-weight:500;line-height:1.2;transition:opacity .25s,translate .25s;position:absolute;top:100%;left:50%;translate:-50% 4px}.logoloop--vertical .logoloop__tip{margin-top:0;margin-left:calc(var(--logoloop-logoHeight) * .25);top:50%;left:100%;translate:4px -50%}.logoloop__item:hover .logoloop__tip,.logoloop__item:focus-within .logoloop__tip,.logoloop__item[data-active] .logoloop__tip{opacity:.8;translate:-50%}.logoloop--vertical .logoloop__item:hover .logoloop__tip,.logoloop--vertical .logoloop__item:focus-within .logoloop__tip,.logoloop--vertical .logoloop__item[data-active] .logoloop__tip{translate:0 -50%}.logoloop[data-muted] .logoloop__content{filter:grayscale(var(--logoloop-gray,1));opacity:var(--logoloop-dim,.5)}.logoloop[data-muted] .logoloop__item:hover .logoloop__content,.logoloop[data-muted] .logoloop__item:focus-within .logoloop__content,.logoloop[data-muted] .logoloop__item[data-active] .logoloop__content{filter:none;opacity:1}.logoloop__item[data-color]:hover .logoloop__content,.logoloop__item[data-color]:focus-within .logoloop__content,.logoloop__item[data-color][data-active] .logoloop__content{color:var(--logoloop-item-color)}.logoloop:not([data-muted]) .logoloop__item:not([data-color]) a.logoloop__content:hover{opacity:.8}@media (prefers-reduced-motion:reduce){.logoloop__content,.logoloop__node,.logoloop__item img,.logoloop__tip{transition:none}}.tech-logo-loop{border-block:1px solid var(--gray-800);min-width:0;color:var(--gray-200);padding:2rem 0}.tech-logo-loop .logoloop{padding-block:1rem}.masonry{width:100%;position:relative}.masonry__item{will-change:transform;position:absolute;top:0;left:0}.masonry__item[data-dragging]{z-index:10}.masonry__item[data-hidden]{visibility:hidden}.masonry__card{border-radius:var(--masonry-radius,12px);width:100%;height:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;transform:perspective(900px) rotateX(var(--masonry-tilt-x,0deg)) rotateY(var(--masonry-tilt-y,0deg)) translateY(var(--masonry-lift,0px)) scale(var(--masonry-scale,1));background:0 0;border:0;outline:none;padding:0;text-decoration:none;transition:transform .5s cubic-bezier(.2,.8,.2,1),box-shadow .5s cubic-bezier(.2,.8,.2,1),opacity .35s;display:block;position:relative}.masonry__card:focus-visible{outline-offset:3px;outline:2px solid}.masonry[data-hover=lift] .masonry__item:hover .masonry__card{--masonry-lift:-6px;--masonry-scale:1.02;box-shadow:0 22px 40px -22px #0000008c}.masonry[data-hover=tilt] .masonry__card{transition:transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .5s cubic-bezier(.2,.8,.2,1),opacity .35s}.masonry[data-hover=tilt] .masonry__item:hover .masonry__card{--masonry-scale:1.03;box-shadow:0 26px 44px -24px #0000008c}.masonry__item[data-dragging] .masonry__card{--masonry-scale:1.05;cursor:grabbing;box-shadow:0 34px 60px -26px #0009}.masonry__item[data-dimmed] .masonry__card{opacity:.35}.masonry__media{border-radius:var(--masonry-radius,12px);isolation:isolate;background:#7f7f7f24;width:100%;height:100%;display:block;position:relative;overflow:hidden}.masonry__parallax{display:block;position:absolute;inset:0}.masonry__image{object-fit:cover;opacity:0;pointer-events:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;transition:opacity .5s,transform .8s cubic-bezier(.2,.8,.2,1);display:block}.masonry__image[data-loaded]{opacity:1}.masonry[data-hover=zoom] .masonry__item:hover .masonry__image{transform:scale(1.07)}.masonry__caption{color:#fff;pointer-events:none;background:linear-gradient(#0000 0%,#00000005 15%,#00000014 30%,#0000002e 45%,#0000004d 60%,#0000006b 75%,#00000080 88%,#0000008a 100%);flex-direction:column;gap:2px;padding:40px 14px 12px;transition:opacity .35s,transform .5s cubic-bezier(.2,.8,.2,1);display:flex;position:absolute;bottom:0;left:0;right:0}.masonry__caption[data-mode=hover]{opacity:0;transform:translateY(6px)}.masonry__item:hover .masonry__caption[data-mode=hover],.masonry__card:focus-visible .masonry__caption[data-mode=hover]{opacity:1;transform:none}.masonry__title{letter-spacing:-.01em;font-size:14px;font-weight:600;line-height:1.3}.masonry__text{opacity:.8;font-size:12px;line-height:1.4}.masonry__ghost{pointer-events:none;position:absolute;top:0;left:0}.masonry-lightbox{z-index:1000;position:fixed;inset:0}.masonry-lightbox__backdrop{background:#09090be6;position:absolute;inset:0}.masonry-lightbox__image{object-fit:cover;transform-origin:0 0;will-change:transform;cursor:zoom-out;user-select:none;-webkit-user-drag:none;display:block;position:fixed;top:0;left:0}.masonry-lightbox__caption{color:#fff;text-align:center;pointer-events:none;justify-content:center;align-items:center;gap:14px;padding:0 72px;font-size:14px;line-height:1.4;display:flex;position:fixed;left:0;right:0}.masonry-lightbox__caption a{color:inherit;pointer-events:auto;opacity:.8;align-items:center;gap:4px;font-weight:600;text-decoration:none;transition:opacity .2s;display:inline-flex}.masonry-lightbox__caption a:hover,.masonry-lightbox__caption a:focus-visible{opacity:1}.masonry-lightbox__muted{opacity:.6}.masonry-lightbox__button{color:#fff;cursor:pointer;background:#ffffff14;border:0;border-radius:999px;place-items:center;width:44px;height:44px;padding:0;transition:background .2s;display:grid;position:absolute;box-shadow:inset 0 0 0 1px #ffffff1a}.masonry-lightbox__button:hover{background:#ffffff29}.masonry-lightbox__button:focus-visible{outline-offset:2px;outline:2px solid #fff}.masonry-lightbox__close{top:16px;right:16px}.masonry-lightbox__prev{top:calc(50% - 22px);left:16px}.masonry-lightbox__next{top:calc(50% - 22px);right:16px}.masonry:not([data-laid-out]){grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:1.5rem;display:grid}.masonry:not([data-laid-out]) .masonry__item{min-height:16rem;position:relative}.work-gallery{min-width:0}.work-gallery.single-project{width:100%;max-width:40rem;margin-inline:auto}.work-masonry .masonry__media{border:1px solid var(--gray-800);background:var(--gray-999_40);box-shadow:var(--shadow-sm)}.work-masonry [data-no-image] .masonry__caption{height:100%;color:var(--gray-200);background:0 0;justify-content:center;gap:.75rem;padding:1.5rem;position:relative}.work-masonry .masonry__title{font-family:var(--font-brand);font-size:var(--text-xl);color:var(--gray-100)}.work-masonry .masonry__text{font-size:var(--text-base);color:var(--gray-300);opacity:1;line-height:1.5}.hero[data-astro-cid-lcdefpme]{isolation:isolate;flex-direction:column;align-items:center;gap:2rem;display:flex;position:relative}.hero-particles[data-astro-cid-lcdefpme]{z-index:-1;pointer-events:none;position:absolute;inset-block:-2.5rem;inset-inline:calc(50% - 50vw);mask-image:linear-gradient(#0000,#000 10% 80%,#0000)}.hero[data-astro-cid-lcdefpme] .title{font-weight:750;line-height:1.5em}.hero[data-astro-cid-lcdefpme] .tagline{font-weight:500}.name-highlight[data-astro-cid-lcdefpme]{background:var(--color-mint);color:var(--text-on-pastel);white-space:nowrap;border-radius:.2em;padding:.04em .18em;display:inline-block}.interests[data-astro-cid-lcdefpme]{font-family:var(--font-brand);font-size:var(--text-lg);font-weight:600}.interests[data-astro-cid-lcdefpme] .text-type{min-width:18ch;min-height:1.5em;line-height:1.5}.hero[data-astro-cid-lcdefpme] img[data-astro-cid-lcdefpme]{aspect-ratio:5/4;object-fit:contain;object-position:top;filter:drop-shadow(.5px 0 0 var(--brand-500)) drop-shadow(-.5px 0 0 var(--brand-500)) drop-shadow(0 .5px 0 var(--brand-500)) drop-shadow(0 -.5px 0 var(--brand-500)) drop-shadow(0 12px 20px #1237352e)}@media (width>=50em){.hero[data-astro-cid-lcdefpme]{grid-template-columns:6fr 4fr;gap:3.75rem;padding-inline:2.5rem;display:grid}.interests[data-astro-cid-lcdefpme]{font-size:var(--text-xl);margin-top:.5rem}.hero[data-astro-cid-lcdefpme] img[data-astro-cid-lcdefpme]{aspect-ratio:3/4;object-fit:contain}}.section[data-astro-cid-lcdefpme]{gap:2rem;display:grid}.logo-gallery[data-astro-cid-lcdefpme]{min-width:0}.section-header[data-astro-cid-lcdefpme]{text-align:center;max-width:50ch;font-size:var(--text-md);color:var(--gray-300);justify-self:center}.section-header[data-astro-cid-lcdefpme] h3[data-astro-cid-lcdefpme]{font-size:var(--text-2xl)}@media (width>=50em){.section[data-astro-cid-lcdefpme]{grid-template-columns:repeat(4,1fr);grid-template-areas:"header header header header""gallery gallery gallery gallery";gap:5rem}.section[data-astro-cid-lcdefpme].with-cta{grid-template-areas:"header header header cta""gallery gallery gallery gallery"}.section-header[data-astro-cid-lcdefpme]{font-size:var(--text-lg);grid-area:header}.section-header[data-astro-cid-lcdefpme] h3[data-astro-cid-lcdefpme]{font-size:var(--text-4xl)}.with-cta[data-astro-cid-lcdefpme] .section-header[data-astro-cid-lcdefpme]{text-align:left;justify-self:flex-start}.gallery[data-astro-cid-lcdefpme]{grid-area:gallery}.cta[data-astro-cid-lcdefpme]{grid-area:cta}}
