@font-face{font-family:ABC Diatype Education;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/abc-diatype-edu-regular.woff2) format("woff2")}@font-face{font-family:ABC Diatype Education;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/abc-diatype-edu-medium.woff2) format("woff2")}:root{color-scheme:light dark;--font-family-body: "ABC Diatype Education", sans-serif;--font-size-body: 16px;--line-height-body: 23px;--font-weight-regular: 400;--font-weight-medium: 500;--page-gutter: 32px;--hero-space: 248px;--section-gap: 24px;--column-gap: 32px;--media-gap: 16px;--caption-gap: 12px;--media-height: 420px;--media-radius: 6px;--color-background: #ffffff;--color-background-secondary: #f2f4f8;--color-background-positive: #e6fce8;--color-background-foldable: #a8b6ac;--color-background-share-tablet: #f4f9ff;--color-foreground: #1d1f25;--color-foreground-subtle: #616670;--color-divider: #c4c7cd;--color-placeholder: #eceef1;--color-placeholder-strong: #dfe2e7;--color-placeholder-line: rgb(29 31 37 / 12%);--color-focus: #1d1f25;--color-overlay: rgb(0 0 0 / 75%);--divider-width: 1px}@media only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi){:root{--divider-width: .5px}}@media(prefers-color-scheme:dark){:root{--color-background: #1d1f25;--color-background-secondary: #31353e;--color-background-positive: #243b29;--color-foreground: #ffffff;--color-foreground-subtle: #979aa0;--color-divider: #31353e;--color-placeholder: #272a31;--color-placeholder-strong: #31353e;--color-placeholder-line: rgb(255 255 255 / 10%);--color-focus: #ffffff}}*{box-sizing:border-box}html{background:var(--color-background);color:var(--color-foreground);font-family:var(--font-family-body);font-size:var(--font-size-body);font-weight:var(--font-weight-regular);line-height:var(--line-height-body)}body{margin:0;min-width:320px;min-height:100vh;background:var(--color-background);color:var(--color-foreground);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,a,input,textarea,select{font:inherit;touch-action:manipulation}a{color:inherit;text-decoration:none}a:focus-visible,[tabindex]:focus-visible{outline:1px solid var(--color-focus);outline-offset:4px}p,h1,h2,figure{margin:0}.page-shell{display:flex;min-height:100vh;flex-direction:column;overflow-x:clip;padding:var(--page-gutter);padding-right:max(var(--page-gutter),env(safe-area-inset-right));padding-bottom:max(var(--page-gutter),env(safe-area-inset-bottom));padding-left:max(var(--page-gutter),env(safe-area-inset-left))}.work-page,.info-page{--load-animation-duration: 1.1s;--load-animation-distance: 16px;--load-animation-content-delay: 0ms;--load-animation-easing: cubic-bezier(.22, 1, .36, 1)}@keyframes route-exit{0%{opacity:1;filter:blur(0);transform:translateY(0)}to{opacity:0;filter:blur(6px);transform:translateY(-4px)}}@keyframes load-sharpen-in{0%{opacity:0;filter:blur(6px)}to{opacity:1;filter:blur(0)}}@keyframes load-stagger-in{0%{opacity:0;transform:translateY(var(--load-animation-distance))}to{opacity:1;transform:translateY(0)}}.route-stage--exit{pointer-events:none}.route-stage--exit .work-page main,.route-stage--exit .info-page main,.route-stage--exit .detail-page main{animation:route-exit var(--route-exit-duration) cubic-bezier(.4,0,1,1) forwards}.work-page .project-section,.info-page .info-intro,.info-page .info-portrait,.info-page .info-experience{animation-name:load-stagger-in;animation-duration:var(--load-animation-duration);animation-fill-mode:backwards;animation-timing-function:var(--load-animation-easing)}.work-page main,.info-page main{animation:load-sharpen-in .7s ease-out backwards}.work-page .project-section{animation-delay:var(--project-animation-delay)}.info-page .info-intro{animation-delay:var(--load-animation-content-delay)}.info-page .info-portrait{animation-delay:calc(var(--load-animation-content-delay) + 60ms)}.info-page .info-experience{animation-delay:calc(var(--load-animation-content-delay) + .12s)}.site-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--column-gap);padding-bottom:var(--hero-space)}.site-footer{--footer-divider-gap: 24px;position:relative;padding-top:calc(var(--footer-divider-gap) * 2);margin-top:auto;color:var(--color-foreground-subtle)}.site-footer:before{position:absolute;top:var(--footer-divider-gap);right:0;left:0;border-top:var(--divider-width) solid var(--color-divider);content:"";pointer-events:none}.identity{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:fit-content}.identity__name,.project-title{color:var(--color-foreground);font-weight:var(--font-weight-medium)}.identity__role,.site-nav,.project-meta,.media-card__caption{color:var(--color-foreground-subtle)}.site-nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:24px}.site-nav__link{position:relative}.site-nav__link:after{position:absolute;inset:-10px -6px;content:""}.site-nav__link--active{color:var(--color-foreground)}.projects{display:flex;flex-direction:column;gap:var(--section-gap)}.project-section{border-top:var(--divider-width) solid var(--color-divider);padding-top:var(--section-gap)}.project-row{display:grid;grid-template-columns:320px minmax(0,1fr);align-items:start;gap:var(--column-gap)}.project-description{display:flex;flex-direction:column;align-items:flex-start}.project-title{font-size:inherit;line-height:inherit;text-wrap:balance}.project-summary{max-width:320px;margin-top:8px;color:var(--color-foreground)}.project-gallery{--gallery-runway: max( 0px, calc(100% - var(--last-card-width) - var(--last-stack-offset)) );position:relative;isolation:isolate;display:flex;align-items:flex-start;gap:var(--media-gap);min-width:0;margin-right:calc(var(--page-gutter) * -1);overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-right:0;padding-bottom:4px;cursor:grab;scrollbar-width:none;touch-action:pan-x pan-y;-webkit-user-select:none;user-select:none;-webkit-overflow-scrolling:touch}.project-gallery:after{width:var(--gallery-runway);height:1px;flex:0 0 var(--gallery-runway);margin-left:calc(var(--media-gap) * -1);content:"";pointer-events:none}.project-gallery::-webkit-scrollbar{display:none}.project-gallery--dragging{cursor:grabbing}.media-card{position:sticky;left:var(--stack-offset);display:flex;flex:0 0 auto;flex-direction:column;align-items:flex-start;gap:var(--caption-gap);overflow:hidden;background:var(--color-background);box-shadow:var(--media-gap) 0 0 var(--color-background);transform-origin:left center;will-change:transform}.media-card--landscape{width:calc(var(--media-height) * 4 / 3)}.media-card--portrait{width:calc(var(--media-height) * 3 / 4)}.media-card--direct{width:var(--media-card-width)}.media-card--direct .media-card__trigger,.media-card--direct .media-card__caption{width:var(--media-visual-width)}.media-card--fit-width{min-height:calc(var(--media-height) + var(--caption-gap) + var(--line-height-body))}.media-card--fit-width .media-card__visual{height:auto}.media-card__trigger{display:block;width:100%;padding:0;border:0;border-radius:var(--media-radius);background:transparent;color:inherit;cursor:zoom-in;text-align:inherit;touch-action:pan-x pan-y}.media-card__trigger:focus-visible,.lightbox__control:focus-visible{outline:1px solid var(--color-focus);outline-offset:4px}.media-card__trigger>.media-card__visual{pointer-events:none}.media-card__visual{display:block;width:100%;height:var(--media-height);flex:0 0 var(--media-height);border-radius:var(--media-radius);object-fit:cover}.media-visual--contain{object-fit:contain}.media-visual--secondary{background-color:var(--color-background-secondary)}.media-visual--positive{background-color:var(--color-background-positive)}.media-visual--foldable{background-color:var(--color-background-foldable)}.media-visual--share-tablet{background-color:var(--color-background-share-tablet)}.media-card__visual--direct{border:var(--divider-width) solid var(--color-divider);background-color:transparent}.media-card__caption{max-width:100%;opacity:1;white-space:nowrap;will-change:opacity}@keyframes lightbox-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes lightbox-media-in{0%{opacity:0;transform:scale(var(--lightbox-enter-scale))}to{opacity:1;transform:scale(1)}}@keyframes lightbox-panel-in{0%{opacity:0;transform:translate(var(--lightbox-panel-distance))}to{opacity:1;transform:translate(0)}}@keyframes lightbox-sheet-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes lightbox-overlay-out{0%{opacity:1}to{opacity:0}}@keyframes lightbox-sheet-out{0%{transform:translateY(0)}to{transform:translateY(100%)}}.lightbox{--lightbox-enter-duration: .24s;--lightbox-panel-delay: 40ms;--lightbox-enter-scale: .97;--lightbox-panel-distance: -12px;--lightbox-easing: cubic-bezier(.215, .61, .355, 1);--lightbox-panel-width: 360px;--lightbox-asset-gutter: 32px;position:fixed;inset:0;isolation:isolate;grid-template-areas:"panel stage";grid-template-columns:minmax(300px,var(--lightbox-panel-width)) minmax(0,1fr);gap:var(--media-gap);width:100%;max-width:none;height:100dvh;max-height:none;padding:8px;border:0;margin:0;overflow:hidden;background:transparent;color:var(--color-foreground)}.lightbox[open]{display:grid}.lightbox::backdrop{background:var(--color-overlay);animation:lightbox-overlay-in var(--lightbox-enter-duration) var(--lightbox-easing)}.lightbox__stage{grid-area:stage;display:grid;min-width:0;min-height:0;padding:var(--lightbox-asset-gutter);place-items:center;cursor:zoom-out}.lightbox__figure{--lightbox-media-ratio: 4 / 3;position:relative;display:grid;width:min(100%,calc((100dvh - 16px - var(--lightbox-asset-gutter) * 2) * var(--lightbox-media-ratio)));height:auto;min-width:0;min-height:0;max-width:100%;max-height:100%;aspect-ratio:var(--lightbox-media-ratio);overflow:hidden;border-radius:var(--media-radius);place-items:center;box-shadow:0 16px 48px #00000024;animation:lightbox-media-in var(--lightbox-enter-duration) var(--lightbox-easing) backwards;will-change:opacity,transform}.lightbox__figure--direct{border-radius:var(--media-radius);box-shadow:none}.lightbox__advance{position:absolute;inset:0;display:block;width:100%;height:100%;padding:0;border:0;border-radius:inherit;background:transparent;color:inherit;cursor:pointer;touch-action:manipulation}.lightbox__advance:focus-visible{outline:2px solid var(--color-focus);outline-offset:-4px}.lightbox__advance:disabled{cursor:default}.lightbox__visual{position:absolute;inset:0;display:block;width:100%;max-width:100%;height:100%;max-height:100%;border-radius:inherit;object-fit:cover}.lightbox--portrait .lightbox__figure{--lightbox-media-ratio: 3 / 4}.lightbox--portrait .lightbox__visual{width:100%;height:100%;object-fit:cover}.lightbox__visual.media-visual--contain{object-fit:contain}.lightbox__placeholder{width:100%;height:100%;background-size:64px 64px}.lightbox--landscape .lightbox__placeholder{aspect-ratio:auto}.lightbox--portrait .lightbox__placeholder{width:100%;height:100%}.lightbox__panel{grid-area:panel;display:flex;min-width:0;min-height:0;flex-direction:column;gap:32px;padding:16px;overflow:hidden;border-radius:var(--media-radius);background:var(--color-background);box-shadow:0 16px 48px #0000001f;animation:lightbox-panel-in var(--lightbox-enter-duration) var(--lightbox-easing) var(--lightbox-panel-delay) backwards;will-change:opacity,transform}.lightbox__controls{display:flex;align-items:center;justify-content:space-between}.lightbox__mobile-controls{display:none}.lightbox__app-icon{display:block;width:44px;height:44px;flex:0 0 44px;object-fit:contain}.lightbox__app-icon--mobile{display:none}.lightbox__app-icon--airtable{border:var(--divider-width) solid var(--color-divider);border-radius:12px;box-shadow:0 2px 8px #1d1f251a}.lightbox__control{display:grid;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:var(--color-background-secondary);color:var(--color-foreground-subtle);cursor:pointer;place-items:center}.lightbox__control:disabled{cursor:default;opacity:.35}.lightbox__control svg{width:20px;height:20px}.lightbox__panel-content{display:flex;min-height:0;flex:1;flex-direction:column;justify-content:space-between;gap:40px;padding:0 4px 4px;overflow-y:auto}.lightbox__panel-copy{display:flex;flex-direction:column;align-items:flex-start}.lightbox__panel-heading{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px}.lightbox__panel-heading-copy{flex:1;min-width:0}.lightbox__eyebrow,.lightbox__metadata dt{color:var(--color-foreground-subtle)}.lightbox__description{color:var(--color-foreground)}.lightbox__title{margin:4px 0 0;color:var(--color-foreground);font-size:24px;font-weight:var(--font-weight-medium);line-height:30px;text-wrap:balance}.lightbox__description{margin-top:24px;white-space:pre-line}.lightbox__metadata{margin:0;padding:4px 12px;border-radius:var(--media-radius);background:var(--color-background-secondary)}.lightbox__metadata>div{display:grid;grid-template-columns:64px minmax(0,1fr);gap:16px;padding:10px 0}.lightbox__metadata>div+div{border-top:var(--divider-width) solid var(--color-divider)}.lightbox__metadata dd{margin:0;text-align:right}.media-placeholder{position:relative;isolation:isolate;overflow:hidden;background-color:var(--color-placeholder);background-image:linear-gradient(var(--color-placeholder-line) 1px,transparent 1px),linear-gradient(90deg,var(--color-placeholder-line) 1px,transparent 1px);background-position:center;background-size:48px 48px;color:var(--color-foreground-subtle)}.media-placeholder:before{position:absolute;inset:24px;z-index:-1;border:var(--divider-width) solid var(--color-placeholder-line);border-radius:calc(var(--media-radius) / 2);content:""}.media-placeholder--cool{background-color:color-mix(in srgb,var(--color-placeholder) 88%,#9fb9c8)}.media-placeholder--warm{background-color:color-mix(in srgb,var(--color-placeholder) 88%,#c8b09f)}.media-placeholder__index,.media-placeholder__ratio{position:absolute;top:24px;font-variant-numeric:tabular-nums}.media-placeholder__index{left:24px}.media-placeholder__ratio{right:24px}.detail-content{border-top:var(--divider-width) solid var(--color-divider);padding-top:var(--section-gap)}.detail-grid{display:grid;grid-template-columns:85px minmax(0,560px);gap:var(--column-gap)}.detail-title{color:var(--color-foreground-subtle);font-size:inherit;font-weight:var(--font-weight-regular);line-height:inherit}.detail-copy{display:flex;flex-direction:column;gap:var(--line-height-body)}.work-page,.info-page{--hero-space: 56px}.info-grid{display:grid;grid-template-columns:85px minmax(320px,560px) minmax(0,1fr);align-items:start;gap:0 var(--column-gap)}.info-intro{display:flex;max-width:600px;flex-direction:column;grid-column:1 / 3;gap:var(--section-gap)}.info-link{text-decoration:underline;text-decoration-thickness:var(--divider-width);text-underline-offset:2px}.info-portrait{width:min(156px,100%);grid-column:3;justify-self:end}.info-portrait img{display:block;width:auto;height:186px;margin-left:auto;transform:translateY(-8px)}.info-experience{max-width:600px;margin-top:48px;grid-column:1 / 3}.info-section-title{margin:0 0 16px;font-size:inherit;font-weight:var(--font-weight-regular);line-height:inherit}.experience-list{display:flex;padding:0;margin:0;flex-direction:column;gap:16px;list-style:none}.experience-item{display:flex;flex-direction:column;gap:2px}.experience-dates{color:var(--color-foreground-subtle);font-variant-numeric:tabular-nums}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:900px){:root{--page-gutter: 24px;--hero-space: 180px;--media-height: min(70vw, 420px)}.project-row{grid-template-columns:minmax(220px,320px) minmax(0,1fr);gap:24px}.info-grid{grid-template-columns:72px minmax(280px,480px) minmax(0,1fr);column-gap:24px}}@media(max-width:720px){:root{--font-size-body: 17px;--line-height-body: 25px;--page-gutter: 20px;--hero-space: 148px;--section-gap: 24px;--media-gap: 12px;--media-height: min(70vw, 320px)}.site-header{gap:24px}.project-row{grid-template-columns:minmax(0,1fr);gap:0}.project-description{grid-column:1;grid-row:1;padding-bottom:24px}.project-summary{max-width:440px}.project-gallery{grid-column:1 / -1;grid-row:2;padding-right:var(--page-gutter)}.lightbox{--lightbox-enter-duration: .28s;--lightbox-exit-duration: .22s;--lightbox-asset-gutter: 0px;inset:max(24px,env(safe-area-inset-top)) 0 0;grid-template-areas:"stage" "panel";grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto;align-content:start;gap:0;width:100%;height:auto;padding:0;overflow-x:hidden;overflow-y:auto;border-radius:20px 20px 0 0;background:var(--color-background);box-shadow:0 -12px 40px #0000002e;overflow-anchor:none;overscroll-behavior:contain;touch-action:pan-y pinch-zoom;animation:lightbox-sheet-in var(--lightbox-enter-duration) var(--lightbox-easing) backwards;will-change:transform}.lightbox--closing{animation:lightbox-sheet-out var(--lightbox-exit-duration) var(--lightbox-easing) forwards;pointer-events:none}.lightbox--closing::backdrop{animation:lightbox-overlay-out var(--lightbox-exit-duration) var(--lightbox-easing) forwards}.lightbox__panel{max-height:none;gap:0;padding:24px 20px max(20px,env(safe-area-inset-bottom));overflow:visible;border-radius:0;background:transparent;box-shadow:none;animation:none;will-change:auto}.lightbox--panel-omni .lightbox__panel{padding-top:32px}.lightbox__stage{display:grid;min-height:0;padding:0;place-items:start center;cursor:default;touch-action:pan-y pinch-zoom}.lightbox__figure{width:100%;max-height:none;border-radius:0;box-shadow:none;animation:none;will-change:auto}.lightbox__figure--mobile-contain,.lightbox__figure--mobile-crop{height:clamp(280px,48dvh,460px);aspect-ratio:auto;background:var(--color-background-secondary)}.lightbox__figure--mobile-contain .lightbox__visual{padding-block:0!important;object-fit:contain}.lightbox__figure--mobile-crop .lightbox__visual{padding-block:0!important;object-fit:cover}.lightbox__figure--surface-positive{background:var(--color-background-positive)}.lightbox__figure--surface-foldable{background:var(--color-background-foldable)}.lightbox__figure--surface-share-tablet{background:var(--color-background-share-tablet)}.lightbox__controls,.lightbox__app-icon--desktop{display:none}.lightbox__app-icon--mobile{display:block;width:44px;height:44px;flex-basis:44px}.lightbox__mobile-controls{position:absolute;z-index:2;top:12px;right:max(12px,env(safe-area-inset-right));display:flex;justify-content:flex-end;pointer-events:none}.lightbox__mobile-controls .lightbox__control{background:var(--color-background-secondary);background:color-mix(in srgb,var(--color-background) 78%,transparent);box-shadow:0 0 0 var(--divider-width) #1d1f251a,0 4px 14px #00000029;-webkit-backdrop-filter:blur(16px) saturate(140%);backdrop-filter:blur(16px) saturate(140%);pointer-events:auto}.lightbox__panel-content{gap:24px;padding:0;overflow:visible}.lightbox__panel-heading{align-items:flex-start}.lightbox__description{margin-top:16px}.detail-grid{grid-template-columns:72px minmax(0,1fr);gap:16px}.work-page,.info-page{--hero-space: 72px}.info-grid{grid-template-columns:minmax(0,1fr) auto;column-gap:32px}.info-intro,.info-experience{grid-column:1}.info-portrait{width:clamp(112px,20vw,144px);grid-column:2}.info-experience{margin-top:48px}}@media(max-width:430px){:root{--page-gutter: 16px;--hero-space: 116px;--media-height: calc(68vw + 24px) }.project-row,.detail-grid{grid-template-columns:1fr}.project-description,.project-gallery{grid-column:1}.project-description,.project-gallery{grid-row:auto}.media-card{max-width:calc(100vw - var(--page-gutter) * 2)}.media-card--direct .media-card__trigger,.media-card--direct .media-card__caption{width:min(var(--media-visual-width),100%)}.detail-grid{gap:12px}.work-page,.info-page{--hero-space: 56px}.info-grid{grid-template-columns:1fr;row-gap:40px}.info-intro,.info-portrait,.info-experience{grid-column:1}.info-intro{order:1}.info-experience{order:2}.info-portrait{width:128px;justify-self:start;order:3}.info-experience{margin-top:8px}}@media(hover:hover)and (pointer:fine){.site-nav__link:hover,.identity:hover .identity__role,.info-link:hover{color:var(--color-foreground)}.lightbox__control:not(:disabled):hover{background:var(--color-placeholder-strong);color:var(--color-foreground)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important}.media-card{position:relative;left:auto}.project-gallery{padding-right:var(--page-gutter)}.work-page .project-section,.info-page .info-intro,.info-page .info-portrait,.info-page .info-experience,.work-page main,.info-page main,.route-stage--exit .work-page main,.route-stage--exit .info-page main,.route-stage--exit .detail-page main{animation:none}.lightbox,.lightbox::backdrop,.lightbox__figure,.lightbox__panel{animation:none}}
