@import "https://api.fontshare.com/v2/css?f[]=satoshi@400,500,700&display=swap";@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500&family=Spline+Sans+Mono:wght@400;500&display=swap";:root{--bg:#fdfcfc;--bg-soft:#ededf2;--text:#080821;--text-strong:#050505;--text-muted:#585d74;--border:#e0e1e6;--border-soft:#dddde3;--shell-width:1200px;--content-width:960px;--page-padding:24px;--nav-height:70px;--section-gap:160px;--content-gap:36px;--space:24px;--radius:4px;--media-radius:0;--font-display:"Satoshi", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"Spline Sans Mono", ui-monospace, monospace}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-body);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:16px;line-height:1.2}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font:inherit}.page{min-height:100vh}.site-shell{width:100%;max-width:var(--shell-width);margin:0 auto}.site-content{gap:var(--section-gap);width:100%;max-width:var(--content-width);padding:0 var(--page-padding) var(--section-gap);flex-direction:column;margin:0 auto;display:flex}.site-content--project{gap:0;padding-top:0}.project-gallery-layout{flex-direction:column;gap:0;width:100%;display:flex}.project-hero{background:0 0;width:100%;margin-bottom:48px;line-height:0;overflow:hidden}.project-hero__tile{width:100%;display:block}.project-hero .media-tile__media{object-fit:contain;object-position:center top;width:100%;height:auto;max-height:none}.project-hero .media-tile picture{width:100%;display:block}.project-page__header{margin-bottom:64px}.project-meta{gap:var(--space);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;display:grid}.project-meta__item{flex-direction:column;gap:8px;display:flex}.project-meta__item--year{grid-column:3}.project-meta dt,.project-meta dd{font-family:var(--font-mono);letter-spacing:.02em;margin:0;font-size:12px;line-height:20px}.project-meta dt{color:var(--text-strong);font-weight:500}.project-meta dd{color:var(--text-muted);font-weight:400}.project-page__overview{margin-bottom:80px}.project-page__overview-copy{max-width:58ch;font-family:var(--font-mono);letter-spacing:.01em;color:var(--text-muted);margin:0;font-size:12px;font-weight:400;line-height:20px}.more-work{gap:var(--content-gap);margin-top:var(--section-gap);padding-top:var(--section-gap);border-top:1px solid var(--border);flex-direction:column;display:flex}.mono-muted{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-muted);margin:0;font-size:12px;font-weight:500;line-height:20px}.mono-inline{font-family:var(--font-mono);letter-spacing:.01em;color:var(--text-muted);margin:0;font-size:12px;font-weight:400;line-height:28px}.body-copy{max-width:52ch;font-family:var(--font-body);color:var(--text-muted);margin:0;font-size:16px;line-height:1.2}.section-heading{font-family:var(--font-display);letter-spacing:-.04em;color:var(--text-strong);margin:0;font-size:24px;font-weight:500;line-height:28px}.section-block{grid-template-columns:minmax(100px,200px) 1fr;align-items:start;gap:48px 80px;display:grid}.section-block__content{min-width:0}.text-button{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-strong);align-items:center;font-size:12px;font-weight:500;line-height:20px;transition:opacity .2s;display:inline-flex}.text-button:hover{opacity:.65}.site-nav{z-index:100;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fdfcfce6;position:sticky;top:0}.site-nav__bar{width:100%;max-width:var(--shell-width);height:var(--nav-height);padding:24px var(--page-padding);grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin:0 auto;display:grid}.site-nav__brand,.site-nav__project,.site-nav__links a{font-family:var(--font-mono);letter-spacing:.02em;font-size:12px;font-weight:500;line-height:20px}.site-nav__brand{color:var(--text-strong);justify-self:start}.site-nav__project{color:var(--text-muted);justify-self:center}.site-nav__spacer{display:block}.site-nav__links{justify-self:end;gap:24px;display:flex}.site-nav__links a{color:var(--text-muted);transition:color .2s}.site-nav__links a:hover{color:var(--text-strong)}.joey-hero{text-align:center;flex-direction:column;align-items:center;gap:20px;padding:56px 0 0;display:flex}.home-fold{flex-direction:column;gap:clamp(100px,14vh,160px);display:flex}.joey-hero__sparkle{color:var(--text-strong)}.joey-hero__stack{flex-direction:column;align-items:center;gap:28px;width:100%;display:flex}.joey-hero__intro{flex-direction:column;align-items:center;gap:0;display:flex}.joey-hero__name-block{width:100%;max-width:720px}.joey-hero__name{font-family:var(--font-display);letter-spacing:-.03em;color:var(--text-strong);flex-direction:column;gap:0;margin:0;font-size:clamp(104px,15vw,180px);font-weight:400;line-height:.82;display:flex}.joey-hero__name-first{align-self:flex-start;min-height:.82em;padding-left:8%}.joey-hero__name-last{align-self:flex-end;min-height:.82em;padding-right:8%}.joey-hero__caret{vertical-align:baseline;background:var(--text-strong);width:.06em;height:.72em;margin-left:.04em;animation:.85s step-end infinite joey-caret-blink;display:inline-block}.joey-hero__fade{opacity:0;transition:opacity 1.8s,transform 1.8s;transform:translateY(12px)}.joey-hero__fade--in{opacity:1;transform:none}.joey-hero__rule{background:var(--text-strong);border-radius:2px;width:64px;height:2px;margin:20px auto 0}@keyframes joey-caret-blink{0%,45%{opacity:1}46%,to{opacity:0}}@media (prefers-reduced-motion:reduce){.joey-hero__fade{opacity:1;transition:none;transform:none}.joey-hero__caret{animation:none;display:none}}.work-section{flex-direction:column;gap:16px;display:flex}.work-section__divider{background:var(--border);width:100%;height:1px}.work-section__filters{flex-wrap:wrap;align-items:flex-end;gap:24px;margin-top:-1px;display:flex}.work-section__filters--static .work-filter{pointer-events:none}.work-filter{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:12px 0 0;font-size:12px;font-weight:500;line-height:20px;transition:color .2s;position:relative}.work-filter:hover,.work-filter--active{color:var(--text-strong)}.work-filter--active:before{content:"";background:var(--text-strong);height:2px;position:absolute;top:0;left:0;right:0}.work-grid-wrap{width:100%;position:relative}.work-grid{gap:var(--space);grid-template-columns:repeat(3,minmax(0,1fr));width:100%;display:grid}.work-grid>.fade-in{min-width:0}.work-card{flex-direction:column;gap:8px;min-width:0;display:flex}.work-card--faded{opacity:.28;pointer-events:none;-webkit-user-select:none;user-select:none}.work-card--soon{cursor:default}.work-card__media{aspect-ratio:1;background:var(--bg-soft);border-radius:0;overflow:hidden}.work-card__media picture{width:100%;height:100%;display:block}.work-card__media--soon{background:#d8d8d8;place-items:center;display:grid}.work-card__soon-label{font-family:var(--font-mono);letter-spacing:.02em;color:#6b6b6b;font-size:12px;font-weight:500;line-height:20px}.work-card__image{object-fit:cover;border-radius:0;width:100%;height:100%;transition:transform .45s}.work-card:not(.work-card--soon):hover .work-card__image{transform:scale(1.02)}.work-card__title{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-strong);font-size:12px;font-weight:500;line-height:20px}.work-show-more{height:calc((100% - (var(--space) * 2)) / 3 + var(--space));pointer-events:none;background:linear-gradient(#fdfcfc00 0%,#fdfcfcb8 42%,#fdfcfcf7 100%);justify-content:center;align-items:flex-end;padding-bottom:28px;display:flex;position:absolute;bottom:0;left:0;right:0}.work-show-more__button{pointer-events:auto;font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-strong);cursor:pointer;background:0 0;border:none;font-size:12px;font-weight:500;line-height:20px;transition:opacity .2s}.work-show-more__button:hover{opacity:.55}.home-sections{gap:var(--section-gap);flex-direction:column;display:flex}.info-layout{grid-template-columns:1fr auto;align-items:start;gap:48px;display:grid}.info-layout__copy{flex-direction:column;gap:32px;max-width:52ch;display:flex}.info-layout__body{font-family:var(--font-mono);letter-spacing:.01em;color:var(--text-muted);margin:0;font-size:12px;font-weight:400;line-height:20px}.info-layout__photo{border-radius:0;flex-shrink:0;width:180px;overflow:hidden}.info-layout__photo img{aspect-ratio:3/4;object-fit:cover;border-radius:0;width:100%;height:auto}.resume-button{font-family:var(--font-mono);letter-spacing:.02em;color:#080821;background:0 0;border:1px solid #080821;border-radius:999px;justify-content:center;align-self:flex-start;align-items:center;padding:10px 22px;font-size:12px;font-weight:500;line-height:20px;transition:opacity .2s;display:inline-flex}.resume-button:hover{opacity:.65;color:#080821;background:0 0}.record-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.record-list__item{gap:var(--space);border-top:1px solid var(--border);grid-template-columns:1fr 1fr;padding:20px 0;display:grid}.record-list__item:last-child{border-bottom:1px solid var(--border)}.record-list__primary{flex-direction:column;gap:4px;display:flex}.record-list__title{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-strong);font-size:12px;font-weight:500;line-height:20px}.record-list__sub,.record-list__meta{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-muted);font-size:12px;font-weight:400;line-height:20px}.competency-pills{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.competency-pill{border-radius:var(--radius);background:var(--bg-soft);font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-strong);padding:8px 16px;font-size:12px;font-weight:500;line-height:20px}.stack-grid{gap:0 var(--space);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.stack-grid__item{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:16px 0;display:flex}.stack-grid__icon{object-fit:contain;background:0 0;border-radius:0;flex-shrink:0;width:32px;height:32px}.stack-grid__copy{flex-direction:column;gap:2px;min-width:0;display:flex}.stack-grid__name{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-strong);font-size:12px;font-weight:500;line-height:20px}.stack-grid__category{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-muted);font-size:12px;font-weight:400;line-height:20px}.experience-list{margin:0;padding:0;list-style:none}.experience-item{border-top:1px solid var(--border)}.experience-item:last-child{border-bottom:1px solid var(--border)}.experience-item__header{gap:var(--space);text-align:left;cursor:pointer;background:0 0;border:none;grid-template-columns:1.4fr 1fr 1fr auto;align-items:start;width:100%;padding:20px 0;display:grid}.experience-item__role{flex-direction:column;gap:4px;display:flex}.experience-item__title,.experience-item__period,.experience-item__company{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-strong);font-size:12px;line-height:20px}.experience-item__title,.experience-item__company{font-weight:500}.experience-item__period{font-weight:400}.experience-item__duration{font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-muted);font-size:12px;font-weight:400;line-height:20px}.experience-item__toggle{font-family:var(--font-mono);color:var(--text-strong);font-size:16px;font-weight:400;line-height:1}.experience-item__body{gap:var(--space);grid-template-columns:1.4fr 1fr 1fr auto;padding-bottom:20px;display:grid}.experience-item__description{max-width:52ch;font-family:var(--font-mono);letter-spacing:.01em;color:var(--text-muted);grid-column:2/4;margin:0;font-size:12px;font-weight:400;line-height:20px}.connect-section{width:100%;max-width:var(--content-width);padding:var(--section-gap) var(--page-padding);margin:0 auto}.connect-details{flex-direction:column;gap:24px;margin:0;display:flex}.connect-details__group{flex-direction:column;gap:4px;display:flex}.connect-details dt,.connect-details dd{font-family:var(--font-mono);letter-spacing:.02em;margin:0;font-size:12px;line-height:20px}.connect-details dt{color:var(--text-muted)}.connect-details dd{color:var(--text-strong);font-weight:500}.connect-details a:hover{opacity:.65}.project-gallery{gap:var(--space);flex-direction:column;width:100%;display:flex}.project-gallery>.fade-in,.project-gallery .image-grid{width:100%;min-width:0}.project-gallery__empty{font-family:var(--font-mono);color:var(--text-muted);margin:0;font-size:12px}.image-grid{gap:var(--space);align-items:start;display:grid}.image-grid__cell{min-width:0}.image-grid__tile{width:100%}.image-grid--wide,.image-grid--video{grid-template-columns:1fr}.image-grid--row-2{grid-template-columns:1fr 1fr;align-items:end}.image-grid--row-2 .image-grid__cell:first-child{justify-content:flex-start;display:flex}.image-grid--row-2 .image-grid__cell:last-child{justify-content:flex-end;display:flex}.image-grid--row-2 .image-grid__tile{width:auto;max-width:100%}.image-grid__row-fit{width:100%;min-width:0;max-width:100%}.image-grid--row-2-equal{align-items:end;gap:var(--space);grid-template-columns:auto 1fr;width:100%;display:grid}.image-grid__equal-start{justify-self:start}.image-grid__equal-end{justify-self:end}.image-grid--split-stack{align-items:start;gap:var(--space);grid-template-columns:auto 1fr;width:100%;display:grid}.image-grid__stack{gap:var(--space);flex-direction:column;display:flex}.image-grid__cell--menu{justify-self:end}.image-grid--row-3,.image-grid--logos-row{grid-template-columns:repeat(3,1fr)}.image-grid--logos-row .image-grid__cell{justify-content:center;align-items:center;display:flex}.media-tile{cursor:zoom-in;border-radius:var(--media-radius);background:0 0;border:none;width:100%;padding:0;line-height:0;display:block;position:relative;overflow:hidden}.media-tile__media{border-radius:var(--media-radius);width:100%;height:auto;display:block}.media-tile picture{width:100%;display:block}.media-tile--sized{width:auto;max-width:none}.media-tile--sized .media-tile__media{width:auto;max-width:none;height:auto}.media-tile__media--video{aspect-ratio:16/9;object-fit:contain;background:#111;width:100%}.media-tile:hover .media-tile__media:not(.media-tile__media--video){opacity:.92}.media-tile__play{color:#fff;pointer-events:none;background:#00000040;place-items:center;font-size:2rem;display:grid;position:absolute;inset:0}.lightbox{z-index:200;touch-action:none;background:#121212b8;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0;overflow:hidden}.lightbox__stage{cursor:zoom-in;-webkit-user-select:none;user-select:none;touch-action:none;background:0 0;justify-content:center;align-items:center;width:100%;max-width:100%;height:100%;max-height:100%;display:flex;overflow:hidden}.lightbox__stage--zoomed{cursor:grab}.lightbox__stage--zoomed:active{cursor:grabbing}.lightbox__media{object-fit:contain;object-position:center;width:auto;max-width:min(100%,1200px);height:auto;max-height:calc(100vh - 5rem);box-shadow:none;transform-origin:50%;will-change:transform;pointer-events:auto;cursor:zoom-in;background:0 0;border:none;border-radius:0;outline:none;transition:transform 50ms linear;display:block}.lightbox__media--video{pointer-events:auto;background:0 0;max-width:min(100%,1100px)}.lightbox__hint{font-family:var(--font-mono);letter-spacing:.04em;color:#ffffff73;pointer-events:none;white-space:nowrap;margin:0;font-size:11px;position:fixed;bottom:3rem;left:50%;transform:translate(-50%)}.lightbox__close,.lightbox__nav{z-index:1;border-radius:var(--radius);color:#fff;cursor:pointer;background:#ffffff1f;border:none;width:2.5rem;height:2.5rem;font-size:1.5rem;line-height:1;position:fixed}.lightbox__close{top:1rem;right:1rem}.lightbox__nav{top:50%;transform:translateY(-50%)}.lightbox__nav--prev{left:1rem}.lightbox__nav--next{right:1rem}.lightbox__counter{font-family:var(--font-mono);letter-spacing:.08em;color:#ffffffb8;margin:0;font-size:12px;position:fixed;bottom:1.25rem;left:50%;transform:translate(-50%)}.fade-in{opacity:0;transition:opacity 1.35s,transform 1.35s;transform:translateY(18px)}.fade-in--visible{opacity:1;transform:none}@media (width<=1199px){:root{--section-gap:120px}.site-shell,.site-nav__bar{max-width:810px}.joey-hero{gap:16px;padding-top:40px}.joey-hero__stack{gap:24px}.home-fold{gap:clamp(80px,12vh,120px)}.section-block{grid-template-columns:1fr;gap:32px}.joey-hero__name{font-size:104px;line-height:.67}}@media (width<=809px){:root{--section-gap:80px;--page-padding:16px}.site-shell,.site-nav__bar{max-width:390px}.site-nav__bar{grid-template-columns:1fr auto;height:auto;padding-top:16px;padding-bottom:16px}.site-nav__project,.site-nav__spacer{display:none}.site-nav__links{gap:16px}.joey-hero{gap:12px;padding-top:24px}.joey-hero__stack{gap:20px}.home-fold{gap:64px}.joey-hero__name-first,.joey-hero__name-last{align-self:center;padding-left:0;padding-right:0}.info-layout{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:16px}.info-layout__photo{width:112px;max-width:112px}.work-grid{grid-template-columns:1fr;gap:16px}.work-show-more{height:calc(33.3333% + 5.33333px);padding-bottom:20px}.stack-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}.experience-item__header{grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px}.experience-item__period{display:none}.experience-item__company{text-align:right;display:block}.experience-item__body{grid-template-columns:1fr}.experience-item__description{grid-column:1}.lightbox{background:#121212b8;padding:0}.lightbox__close,.lightbox__nav{border-radius:2px;width:1.75rem;height:1.75rem;font-size:1.1rem}.lightbox__nav--prev{left:.5rem}.lightbox__nav--next{right:.5rem}.lightbox__close{top:.65rem;right:.65rem}.lightbox__hint{white-space:normal;text-align:center;max-width:calc(100% - 2rem);padding:0 .5rem;font-size:10px;bottom:2.75rem}.lightbox__media{background:0 0;-webkit-background-clip:unset;width:auto;max-width:100%;height:auto;max-height:calc(100dvh - 4.5rem)}.record-list__item{grid-template-columns:1fr;gap:8px}.project-meta{grid-template-columns:1fr 1fr;gap:20px}.project-meta__item--year{text-align:right;grid-column:2;align-items:flex-end}.project-page__header{margin-bottom:40px}.project-page__overview{margin-bottom:48px}.image-grid--row-2,.image-grid--row-2-equal,.image-grid--row-3,.image-grid--logos-row,.image-grid--split-stack{grid-template-columns:1fr}.image-grid__equal-end,.image-grid__cell--menu{justify-self:stretch}.media-tile--sized,.media-tile--sized .media-tile__media{width:100%!important;height:auto!important}}
