:root{--font-display:"Pixelify Sans", monospace;--font-body:"Poppins", system-ui, -apple-system, sans-serif;--col-name:52.27%;--col-name-collapsed:11.48%;--col-nav:10.63%;--rule-w:2px;--rule-ink:#ffffffb8;--tile-size:24.77vw;--caption-gutter:8.6vw;--caption-gap:1.33vw;--tile-gap:3.67vw;--tile-size-open:29.6vw;--tile-inset-open:3.6vw;--detail-gap:1.9vw;--detail-width:37vw;--panel-h:67.7vh;--panel-tint:#ffffff21;--ease-open:cubic-bezier(.16, 1, .3, 1);--dur-open:.55s;--dur-swap:1.15s;--back-gap:6.9vw;--rule-travel:30vw;--fs-name:clamp(2.5rem, 5.94vw, 6.5rem);--fs-nav:clamp(1rem, 1.875vw, 2.1rem);--fs-caption:clamp(.8rem, 1.25vw, 1.4rem);--fs-detail-title:clamp(1rem, 1.64vw, 1.85rem);--fs-body:clamp(.8rem, 1.12vw, 1.05rem);--lh-body:1.5;--ink:#fff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;isolation:isolate;background:#0a0c07;margin:0;padding:0}#root{min-height:100vh}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}::selection{background:var(--ink);color:#0a0c07}.scene-bg{z-index:-1;background-image:linear-gradient(#00000026,#00000026),url(/images/bg/hero-bg.jpg);background-position:50%;background-size:cover;position:fixed;inset:0}.v-rule{flex:0 0 var(--rule-w);background:var(--rule-ink);align-self:stretch}@media (width<=899px){:root{--fs-body:.85rem}.v-rule{display:none}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.prose-link{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:from-font;transition:opacity .16s}a.prose-link:hover,a.prose-link:focus-visible{opacity:.68}.pixel-text{font-family:var(--font-display);white-space:pre;display:block}.pixel-text__canvas{max-width:100%;display:block}.about-bubble__anchor{display:inline-block;position:relative}.about-bubble{aspect-ratio:108/46;cursor:pointer;opacity:0;transform-origin:100% 100%;pointer-events:none;width:clamp(76px,7.4vw,118px);margin-bottom:clamp(2px,.4vh,8px);transition:opacity .24s,transform .24s cubic-bezier(.16,1,.3,1);display:block;position:absolute;bottom:100%;right:45%;transform:translateY(6px)scale(.92)}.about-bubble.is-visible{opacity:1;pointer-events:auto;transform:none}.about-bubble__body{width:100%;height:100%;display:block;overflow:visible}.about-bubble__hand{transform-origin:50% 20%;width:21%;height:auto;transition:transform .25s var(--ease-open);position:absolute;bottom:-14%;right:-5%;overflow:visible;transform:rotate(8deg)}.about-bubble__hand path{fill:#ffffff38;stroke:#ffffffb8;stroke-width:1.3px;stroke-linejoin:round;transition:fill .25s,stroke .25s}.about-bubble:hover .about-bubble__hand,.about-bubble:focus-visible .about-bubble__hand{transform:rotate(8deg)translateY(-8%)}.about-bubble:hover .about-bubble__hand path,.about-bubble:focus-visible .about-bubble__hand path{fill:#ffffff57;stroke:#fff}.about-bubble__shape{fill:#ffffff1f;stroke:#ffffff3d;stroke-width:1.2px;transition:fill .25s,stroke .25s}.about-bubble__label{fill:#ffffffdb;font-family:var(--font-body);letter-spacing:.03em;dominant-baseline:middle;font-size:15px;font-weight:300;transition:fill .25s}.about-bubble:hover .about-bubble__shape,.about-bubble:focus-visible .about-bubble__shape{fill:#ffffff42;stroke:#ffffff80}.about-bubble:hover .about-bubble__label,.about-bubble:focus-visible .about-bubble__label{fill:#fff}@media (prefers-reduced-motion:reduce){.about-bubble{transition:opacity .2s;transform:none}.about-bubble.is-visible{transform:none}}@media (width<=899px){.about-bubble__anchor{display:block}.about-bubble{display:none}}.socials{gap:clamp(10px,.95vw,16px);display:flex}.socials[hidden]{display:none}.socials__link{aspect-ratio:1;color:#ffffffd1;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#ffffff1f;border:1px solid #ffffff3d;border-radius:50%;flex:none;place-items:center;width:clamp(32px,3.05vw,46px);transition:background .25s,color .25s,border-color .25s;display:grid}.socials__link:hover,.socials__link:focus-visible{color:#fff;background:#ffffff42;border-color:#ffffff80}.socials__link svg{width:52%;height:52%;display:block}.name-panel{flex-direction:column;justify-content:center;min-width:0;height:100%;padding-left:3.75vw;padding-right:2.1vw;display:flex;overflow:hidden}.name-panel:not(.is-collapsed){overflow:visible}.name-panel__heading{font:inherit;margin:0}.name-panel__name-button{text-align:left;cursor:pointer;display:block}.name-panel__name{font-size:var(--fs-name);color:var(--ink);letter-spacing:.095em;margin:0;font-weight:700;line-height:.92}.name-panel__tagline{font-family:var(--font-body);font-weight:300;font-size:var(--fs-body);line-height:var(--lh-body);letter-spacing:.015em;color:var(--ink);max-width:92%;margin:3.7% 0 0}.name-panel__bio{font-family:var(--font-body);font-weight:300;font-size:var(--fs-body);line-height:var(--lh-body);letter-spacing:.015em;color:var(--ink);max-width:92%;margin:clamp(14px,2.2vh,26px) 0 0}.name-panel__socials{margin-top:clamp(18px,2.8vh,34px)}.name-panel.is-collapsed{justify-content:center;align-items:center;padding:0;position:relative}.name-panel__rotated{transform-origin:50%;font-size:var(--fs-name);letter-spacing:.095em;white-space:nowrap;margin:0;font-weight:700;line-height:1;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-90deg)}.name-panel__rotated .pixel-text__canvas{max-width:none}@media (width<=899px){.name-panel{height:auto;padding:clamp(18px,3.5vh,26px) 20px clamp(20px,4vh,32px);overflow-x:hidden}.name-panel__socials{border-bottom:var(--rule-w) solid var(--rule-ink);width:100%;padding-bottom:clamp(16px,3vh,24px)}.name-panel__name{letter-spacing:.05em;font-size:min(8.1vw,2.9rem)}.name-panel__tagline{max-width:100%;margin-top:18px}}.tile-row{width:100%;margin-bottom:var(--tile-gap);align-items:center;display:flex}.tile-row__tile{flex:0 0 var(--tile-size);width:var(--tile-size);margin-left:calc((100% - var(--tile-size)) / 2);aspect-ratio:1;transition:flex-basis var(--dur-open) var(--ease-open), width var(--dur-open) var(--ease-open), margin-left var(--dur-open) var(--ease-open);display:block;overflow:hidden}.tile-row__tile img{object-fit:cover;width:100%;height:100%}.tile-row__caption{min-width:0;padding-left:var(--caption-gap);cursor:pointer;flex:auto;justify-content:flex-start;align-items:center;display:flex}.tile-row__caption-text{writing-mode:vertical-rl;font-family:var(--font-body);font-weight:300;font-size:var(--fs-caption);letter-spacing:.015em;color:var(--ink);white-space:nowrap;line-height:1;transform:rotate(180deg)}.tile-row__caption-sub{opacity:.72;margin-block-start:.45em;font-style:italic;display:block}.tile-row.is-expanded{min-height:var(--panel-h);background:linear-gradient(#0a0c0785, #0a0c0785), var(--panel-tint);-webkit-backdrop-filter:blur(14px)saturate(.85);backdrop-filter:blur(14px)saturate(.85)}.tile-row.is-expanded .tile-row__tile{flex-basis:var(--tile-size-open);width:var(--tile-size-open);margin-left:var(--tile-inset-open)}.tile-row__detail{min-width:0;margin-left:var(--detail-gap);animation:detail-in .4s var(--ease-open) both;flex-direction:column;flex:auto;justify-content:safe center;align-self:stretch;padding-right:3vw;animation-delay:.18s;display:flex;position:relative}@keyframes detail-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:none}}.tile-row__close{top:calc((var(--panel-h) - var(--tile-size-open)) / 2);opacity:.65;font-size:1.5rem;line-height:1;position:absolute;right:1.5vw}.tile-row__close:hover{opacity:1}.tile-row__title{font-family:var(--font-body);font-weight:400;font-size:var(--fs-detail-title);margin:0 0 .35em;line-height:1.15}.tile-row__subtitle,.tile-row__meta,.tile-row__body,.tile-row__link{font-family:var(--font-body);font-weight:300;font-size:var(--fs-body);max-width:var(--detail-width);margin:0;line-height:1.3}.tile-row__subtitle,.tile-row__link{font-style:italic}.tile-row__body{margin-top:1.6em;line-height:1.45}.tile-row__link{margin-top:1.4em}.tile-row__more{font-family:var(--font-body);font-weight:400;font-size:var(--fs-body);text-underline-offset:3px;align-self:flex-start;align-items:center;gap:.45em;margin-top:1.5em;line-height:1.3;text-decoration:underline;text-decoration-thickness:from-font;transition:opacity .16s;display:inline-flex}.tile-row__more:hover,.tile-row__more:focus-visible{opacity:.68}.tile-row__more svg{width:1.05em;height:1.05em;transition:transform .22s var(--ease-open);flex:none}.tile-row__more:hover svg,.tile-row__more:focus-visible svg{transform:translate(3px)}@media (prefers-reduced-motion:reduce){.tile-row__more svg{transition:none}}.tile-row__link a{text-underline-offset:3px;text-decoration:underline}@media (width<=899px){.tile-row,.tile-row.is-expanded{background:0 0;flex-direction:column;align-items:stretch;min-height:0;margin-bottom:clamp(30px,6vw,46px);padding:0 20px}.tile-row.is-expanded{-webkit-backdrop-filter:none;backdrop-filter:none;background:#0a0c079e;padding-top:14px;padding-bottom:18px}.tile-row__tile,.tile-row.is-expanded .tile-row__tile{flex:none;width:100%;margin-left:0;transition:none}.tile-row__caption{flex:auto;min-width:0;margin:14px 0 0;padding-left:0;display:block}.tile-row__caption-text{writing-mode:horizontal-tb;white-space:normal;font-size:clamp(1.05rem,4.4vw,1.35rem);line-height:1.25;transform:none}.tile-row__detail{margin-left:0;padding:14px 0 0;display:contents}.tile-row__title{order:1}.tile-row__subtitle{order:2}.tile-row__meta{order:3}.tile-row.is-expanded .tile-row__tile{order:4;margin-top:12px}.tile-row__body{order:5}.tile-row__link{order:6}.tile-row__more{order:7}.tile-row.is-expanded{position:relative}.tile-row__close{top:14px;right:0}.tile-row__subtitle,.tile-row__meta,.tile-row__body,.tile-row__link{max-width:none;font-size:1rem}}.tile-row__meta.is-spacer{height:.75em}.project-rail{min-width:0;height:100%;position:relative;overflow:hidden}.project-rail__scroller{overscroll-behavior:contain;scrollbar-width:none;scroll-behavior:auto;position:absolute;inset:0;overflow-y:scroll}.project-rail__scroller::-webkit-scrollbar{display:none}.project-rail__track{flex-direction:column;display:flex}@media (width<=899px){.project-rail{height:auto;position:static;overflow:visible}.project-rail__scroller{position:static;overflow-y:visible}}.about-panel{--about-gap:clamp(14px, 1.9vh, 26px);flex:auto;min-width:0;height:100%;position:relative;overflow:hidden}.about-panel__scroller{scrollbar-width:none;justify-content:center;align-items:flex-end;gap:var(--about-gap);height:100%;padding:clamp(20px, 4vh, 48px) calc(var(--back-gap) + var(--about-gap)) clamp(20px, 4vh, 48px) 0;flex-direction:column;display:flex;overflow-y:auto}.about-panel__scroller::-webkit-scrollbar{display:none}.about-panel__photo{width:clamp(180px,22.8vw,420px);animation:about-photo-in .5s var(--ease-open) both;flex:none;margin:0}.about-panel__photo img{width:100%;height:auto;display:block}@keyframes about-photo-in{0%{opacity:0;transform:translate(-26px)}to{opacity:1;transform:none}}.about-panel__back{top:clamp(20px,5vh,56px);right:calc(var(--back-gap) / 2);z-index:2;aspect-ratio:1;color:#ffffffd9;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);width:clamp(34px,3.35vw,50px);animation:back-in var(--dur-swap) var(--ease-open) backwards;background:#ffffff24;border:1px solid #ffffff42;border-radius:50%;place-items:center;transition:background .25s,color .25s,border-color .25s;display:grid;position:absolute;transform:translate(50%)}@keyframes back-in{0%,55%{opacity:0}to{opacity:1}}.about-panel__back:hover,.about-panel__back:focus-visible{color:#fff;background:#ffffff47;border-color:#ffffff8c}.about-panel__back svg{width:50%;height:50%}@media (width<=899px){.about-panel{height:auto;overflow:visible}.about-panel__scroller{gap:18px;height:auto;padding:8px 20px 32px;overflow-y:visible}.about-panel__photo{width:100%}.about-panel__back{align-self:flex-end;margin:0 20px 0 auto;animation:none;position:sticky;top:12px;right:auto;transform:none}}.side-nav{flex:0 0 var(--col-nav);justify-content:center;align-items:center;height:100%;display:flex}.side-nav__list{flex-direction:column;align-items:center;gap:12.5vh;margin:0;padding:0;list-style:none;display:flex}.side-nav__link{writing-mode:vertical-rl;font-family:var(--font-display);font-weight:500;font-size:var(--fs-nav);letter-spacing:.16em;color:var(--ink);white-space:nowrap;line-height:1;transition:opacity .2s;display:block;transform:rotate(180deg)}.side-nav__link:hover,.side-nav__link:focus-visible,.side-nav__link.is-active{opacity:.7}.side-nav__about{display:none}@media (width<=899px){.side-nav__about{display:block}.side-nav{flex:none;justify-content:flex-start;width:100%;height:auto;padding:4px 20px 22px}.side-nav__list{border-bottom:var(--rule-w) solid var(--rule-ink);flex-direction:row;justify-content:space-between;gap:12px;width:100%;padding-bottom:18px}.side-nav__link{writing-mode:horizontal-tb;letter-spacing:.06em;white-space:nowrap;padding:0;font-size:clamp(.78rem,3.4vw,1.05rem);transform:none}}.landing{align-items:stretch;width:100%;height:100dvh;display:flex;position:relative;overflow:hidden}.landing__credit{z-index:1;font-family:var(--font-body);letter-spacing:.045em;color:#ffffff6b;pointer-events:none;transition:opacity var(--dur-open) var(--ease-open);margin:0;font-size:clamp(.66rem,.94vw,.95rem);font-weight:300;position:absolute;bottom:3vh;left:3.75vw}.landing.is-open .landing__credit{opacity:0}.landing>.name-panel{flex:0 0 var(--col-name);transition:flex-basis var(--dur-open) var(--ease-open)}.landing.is-open>.name-panel{flex-basis:var(--col-name-collapsed)}.landing__stage{flex:auto;min-width:0;height:100%;position:relative;overflow:hidden}.landing__layer{animation:layer-in var(--dur-swap) var(--ease-open) backwards;transition:transform var(--dur-swap) var(--ease-open), opacity calc(var(--dur-swap) * .7) ease;position:absolute;inset:0}.landing__layer.is-out{opacity:0;pointer-events:none;transform:translate(104%)}.landing__layer>.project-rail,.landing__layer>.about-panel{height:100%}@keyframes layer-in{0%{opacity:0;transform:translate(22%)}to{opacity:1;transform:none}}.landing__layer--about{animation-name:layer-in-left}.landing__layer--about.is-out{transform:translate(-104%)}@keyframes layer-in-left{0%{opacity:0;transform:translate(-22%)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.landing__layer{animation:none}}.v-rule--left{transition:transform var(--dur-swap) var(--ease-open)}.landing.is-about>.v-rule--left{transform:translateX(var(--rule-travel))}@media (width<=899px){.landing{flex-direction:column;max-width:100vw;height:auto;min-height:100vh;overflow-x:hidden}.landing>.name-panel,.landing.is-open>.name-panel{flex:none;transition:none}.side-nav{order:0}.name-panel{order:1}.landing__stage{order:3;height:auto;position:static;overflow:visible}.landing__layer{transition:none;animation:none;position:static}.landing__layer.is-out{display:none}.landing__credit,.landing.is-open .landing__credit{opacity:1;order:4;padding:26px 20px 32px;font-size:.78rem;position:static}}.pd-lightbox{z-index:200;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#080906ed;justify-content:center;align-items:center;padding:clamp(16px,4vw,56px);animation:.2s both pd-lightbox-in;display:flex;position:fixed;inset:0}@keyframes pd-lightbox-in{0%{opacity:0}to{opacity:1}}.pd-lightbox__img{width:auto;max-width:100%;height:auto;max-height:100%;display:block}.pd-lightbox__close,.pd-lightbox__arrow{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;font-family:var(--font-body);cursor:pointer;background:#080906a8;border:1px solid #ffffff47;border-radius:50%;justify-content:center;align-items:center;line-height:1;transition:background .18s,opacity .18s;display:flex;position:absolute}.pd-lightbox__close:hover:not(:disabled),.pd-lightbox__arrow:hover:not(:disabled){background:#080906e6}.pd-lightbox__arrow:disabled{opacity:.2;cursor:default}.pd-lightbox__close{width:40px;height:40px;padding-bottom:3px;font-size:24px;top:clamp(12px,2vw,24px);right:clamp(12px,2vw,24px)}.pd-lightbox__arrow{width:46px;height:46px;padding-bottom:4px;font-size:28px;top:50%;transform:translateY(-50%)}.pd-lightbox__arrow.is-prev{left:clamp(8px,1.6vw,22px)}.pd-lightbox__arrow.is-next{right:clamp(8px,1.6vw,22px)}.pd-lightbox__status{text-align:center;font-family:var(--font-body);color:#ffffffb8;margin:0;padding:0 clamp(56px,8vw,90px);font-size:.82rem;font-weight:300;position:absolute;bottom:clamp(10px,1.8vh,22px);left:0;right:0}.pd-lightbox__count{font-variant-numeric:tabular-nums;letter-spacing:.06em;color:#ffffff80}.pd-lightbox__caption:before{content:" — ";color:#ffffff80}@media (width<=899px){.pd-lightbox__arrow{width:38px;height:38px;font-size:23px}.pd-lightbox{padding:56px 12px 64px}}.pd-cards{grid-template-columns:repeat(var(--pd-card-cols,2), minmax(0, 1fr));gap:clamp(10px,1.1vw,20px);margin:1.8em 0;display:grid}.pd-cards[data-count="3"]{--pd-card-cols:3}.pd-card{aspect-ratio:388/517;perspective:1100px;position:relative}.pd-card__flip{z-index:1;cursor:pointer;background:0 0;border:none;padding:0;position:absolute;inset:0}.pd-card__inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .62s cubic-bezier(.2,.7,.2,1);display:block;position:relative}.pd-card[data-turned] .pd-card__inner{transform:rotateY(180deg)}.pd-card__face{backface-visibility:hidden;border-radius:6px;position:absolute;inset:0;overflow:hidden}.pd-card__face img{object-fit:contain;width:100%;height:100%;display:block}.pd-card__face.is-back{transform:rotateY(180deg)}.pd-card:hover .pd-card__inner{transform:translateY(-3px)}.pd-card[data-turned]:hover .pd-card__inner{transform:translateY(-3px)rotateY(180deg)}.pd-card__flip:focus-visible{outline-offset:4px;outline:2px solid #ffffffbf}@media (prefers-reduced-motion:reduce){.pd-card__inner,.pd-card:hover .pd-card__inner{transition:none;transform:none}.pd-card[data-turned] .pd-card__inner,.pd-card[data-turned]:hover .pd-card__inner{transform:none}.pd-card__face.is-back{opacity:0;transform:none}.pd-card[data-turned] .pd-card__face.is-front{opacity:0}.pd-card[data-turned] .pd-card__face.is-back{opacity:1}}@media (width<=899px){.pd-cards{--pd-card-cols:1;gap:14px}}.pd-card__prompt{z-index:1;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);color:#ffffffe0;font-family:var(--font-body);letter-spacing:.02em;white-space:nowrap;pointer-events:none;background:#08090657;border-radius:999px;padding:.3em .8em;font-size:.7rem;font-weight:300;line-height:1.2;transition:background .18s,color .18s;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.pd-card:hover .pd-card__prompt,.pd-card__flip:focus-visible .pd-card__prompt{color:#fff;background:#0809069e}@media (width<=899px){.pd-card__prompt{font-size:.78rem;bottom:12px}}.pd-model{height:var(--pd-model-h,42vh);touch-action:none;background:radial-gradient(120% 90% at 50% 25%,#ffffff12,#00000042);border:1px solid #ffffff29;min-height:240px;margin:1.8em 0;position:relative;overflow:hidden}.pd-model canvas{cursor:grab;display:block}.pd-model canvas:active{cursor:grabbing}.pd-model__status,.pd-model__hint{text-align:center;font-family:var(--font-body);color:#ffffff8c;pointer-events:none;margin:0;font-size:.8em;font-weight:300;position:absolute;left:0;right:0}.pd-model__status{top:50%;transform:translateY(-50%)}.pd-model__hint{letter-spacing:.04em;animation:5s ease-out forwards pd-model-hint;bottom:.7em}@keyframes pd-model-hint{0%,55%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion:reduce){.pd-model__hint{animation:none}}@media (width<=899px){.pd-model{--pd-model-h:52vh}}.project-detail{--pd-measure:none;font-family:var(--font-body);font-weight:300;font-size:var(--fs-body);line-height:var(--lh-body)}.pd-heading{font-family:var(--font-body);font-style:normal;font-weight:400;font-size:var(--fs-detail-title);letter-spacing:.01em;max-width:var(--pd-measure);margin:2.2em 0 .7em;line-height:1.2}.project-detail>:first-child{margin-top:0}.pd-text{max-width:var(--pd-measure);margin:0 0 1.6em}.pd-figure{margin:1.8em 0}.pd-figure img,.pd-figure video{background:#00000040;width:100%;height:auto;display:block}.pd-figure[data-size=small]{width:62%;margin-inline:auto}.pd-figure video{width:auto;max-width:100%;max-height:var(--pd-video-h,42vh);margin-inline:auto}.pd-caption{color:#ffffff9e;max-width:var(--pd-measure);margin-top:.6em;font-size:.82em}.pd-gallery{grid-template-columns:repeat(var(--pd-cols,2), minmax(0, 1fr));gap:clamp(10px,1vw,18px);margin:1.8em 0;display:grid}.pd-gallery[data-count="3"]{--pd-cols:3}.pd-gallery[data-count="1"]{--pd-cols:1}.pd-gallery .pd-figure{margin:0}.pd-quote{border-left:var(--rule-w) solid var(--rule-ink);max-width:var(--pd-measure);margin:2em 0;padding-left:1.1em}.pd-quote p{margin:0;font-size:1.18em;line-height:1.35}.pd-quote cite{color:#ffffff9e;margin-top:.7em;font-size:.82em;font-style:normal;display:block}.pd-list{max-width:var(--pd-measure);margin:0 0 1.6em;padding-left:1.1em}.pd-list li{margin-bottom:.45em}.pd-facts{border-top:1px solid #ffffff38;border-bottom:1px solid #ffffff38;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1em clamp(14px,1.6vw,28px);margin:1.6em 0 1.8em;padding:1.1em 0;display:grid}.pd-facts dt{letter-spacing:.11em;text-transform:uppercase;color:#ffffff94;margin-bottom:.35em;font-size:.74em}.pd-facts dd{margin:0}.pd-rule{height:1px;max-width:var(--pd-measure);background:#ffffff38;border:0;margin:2.4em 0 2.2em}.pd-link{margin:1.6em 0;font-style:italic}.pd-link a{text-underline-offset:3px;text-decoration:underline}@media (width<=899px){.project-detail{font-size:1rem}.pd-gallery[data-count="3"]{--pd-cols:2}.pd-figure[data-size=small]{width:78%}.project-detail{--pd-video-h:62vh}}.pd-text{display:block}.pd-carousel{--pd-carousel-h:46vh;margin:1.8em 0}.pd-carousel__frame{min-height:200px;position:relative}.pd-carousel__track{scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;display:flex;overflow-x:auto}.pd-carousel__track::-webkit-scrollbar{display:none}.pd-carousel__slide{scroll-snap-align:center;flex:0 0 100%;justify-content:center;align-items:center;display:flex}.pd-carousel__slide img{width:auto;max-width:100%;height:auto;max-height:var(--pd-carousel-h);display:block}.pd-carousel__arrow{z-index:1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);width:34px;height:34px;color:var(--ink);font-family:var(--font-body);cursor:pointer;background:#0a0c078c;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0 0 3px;font-size:20px;line-height:1;transition:opacity .18s,background .18s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.pd-carousel__arrow:hover:not(:disabled){background:#0a0c07c7}.pd-carousel__arrow:disabled{opacity:.22;cursor:default}.pd-carousel__arrow.is-prev{left:10px}.pd-carousel__arrow.is-next{right:10px}.pd-carousel__foot{max-width:var(--pd-measure);margin-top:.6em}.pd-carousel__status{color:#ffffff9e;margin:0;font-size:.82em}.pd-carousel__count{font-variant-numeric:tabular-nums;letter-spacing:.06em;color:#ffffff73}.pd-carousel__caption:before{content:" — ";color:#ffffff73}@media (width<=899px){.pd-carousel{--pd-carousel-h:58vh}.pd-carousel__arrow{display:none}}.pd-expand{z-index:2;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);width:30px;height:30px;color:var(--ink);cursor:pointer;opacity:.82;background:#0a0c078c;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:background .18s,opacity .18s;display:flex;position:absolute;top:10px;right:10px}.pd-expand:hover,.pd-expand:focus-visible{opacity:1;background:#0a0c07db}.pd-figure{position:relative}.work-card{--ar:.75;--card-h:min(var(--work-thumb-h), calc(var(--work-card-max-w) / var(--ar)));--card-w:calc(var(--card-h) * var(--ar));flex:0 0 var(--card-w);width:var(--card-w);height:100%;transition:flex-basis var(--dur-open) var(--ease-open), width var(--dur-open) var(--ease-open), background-color var(--dur-open) var(--ease-open);position:relative}.work-card__preview{text-align:left;flex-direction:column;justify-content:center;width:100%;height:100%;display:flex}.work-card__thumb{width:100%;height:var(--work-thumb-h);flex:none;align-items:flex-end;display:flex;overflow:hidden}.work-card__thumb img{width:100%;height:auto;transition:transform .5s var(--ease-open), opacity .3s ease;display:block}.work-card__preview:hover .work-card__thumb img,.work-card__preview:focus-visible .work-card__thumb img{transform:scale(1.04)}.work-card__caption{--cap-pad:clamp(10px, 1.1vw, 18px);padding-top:var(--cap-pad);min-height:calc(var(--cap-pad) + var(--fs-caption) * 3.95);flex:none;display:block}.work-card__caption-text{font-family:var(--font-body);font-weight:300;font-size:var(--fs-caption);letter-spacing:.015em;color:var(--ink);line-height:1.25;display:block}.work-card__caption-sub{opacity:.72;margin-top:.2em;font-style:italic;display:block}.work-card.is-expanded{flex-basis:var(--work-panel-w);width:var(--work-panel-w);background:linear-gradient(#0a0c0785, #0a0c0785), var(--panel-tint);-webkit-backdrop-filter:blur(14px)saturate(.85);backdrop-filter:blur(14px)saturate(.85)}.work-card__panel{height:100%;padding:var(--work-panel-pad);align-items:stretch;gap:var(--detail-gap);display:flex}.work-card__media{flex:0 0 var(--work-media-w);width:var(--work-media-w);justify-content:center;align-self:stretch;align-items:flex-start;gap:var(--work-media-gap);flex-direction:column;display:flex;position:relative;overflow:hidden}.work-card__media-item{width:100%;min-width:0;display:block;position:relative}.work-card__expand{inset:auto 10px 10px auto}.work-card__media[data-count="2"] .work-card__media-item:first-child .work-card__expand{top:10px;bottom:auto}.work-card__media img{object-fit:contain;width:100%;height:auto;max-height:100%;animation:work-media-in .5s var(--ease-open) both}.work-card__media[data-count="2"] .work-card__media-item{flex:1 1 0;min-height:0}.work-card__media[data-count="2"] .work-card__media-item img{height:100%;max-height:none}.work-card__media[data-count="2"] .work-card__media-item:first-child img{object-position:top}.work-card__media[data-count="2"] .work-card__media-item:last-child img{object-position:bottom}.work-card__media-item:nth-child(2) img{animation-delay:80ms}@keyframes work-media-in{0%{opacity:0;transform:scale(1.03)}to{opacity:1;transform:none}}.work-card__body{overscroll-behavior-y:contain;scrollbar-width:none;min-width:0;height:100%;animation:work-body-in .4s var(--ease-open) both;flex:auto;padding-bottom:12vh;animation-delay:.16s;overflow-y:auto}.work-card__body::-webkit-scrollbar{display:none}@keyframes work-body-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:none}}.work-card__title{font-family:var(--font-body);font-weight:400;font-size:var(--fs-detail-title);margin:0 0 .35em;padding-right:2.2rem;line-height:1.15}.work-card__subtitle,.work-card__meta,.work-card__lede,.work-card__link{font-family:var(--font-body);font-weight:300;font-size:var(--fs-body);margin:0;line-height:1.3}.work-card__subtitle,.work-card__link{font-style:italic}.work-card__lede{margin-top:1.6em;line-height:1.45}.work-card__link{margin-top:1.4em}.work-card__link a{text-underline-offset:3px;text-decoration:underline}.work-card__rule{background:#ffffff38;height:1px;margin:2.4em 0 2.2em}.work-card__body>.project-detail{margin-top:2.4em}.work-card__rule+.project-detail{margin-top:0}.work-card__close{top:var(--work-panel-pad);right:var(--work-panel-pad);z-index:2;opacity:.65;font-size:1.5rem;line-height:1;transition:opacity .2s;position:absolute}.work-card__close:hover,.work-card__close:focus-visible{opacity:1}.work-card__body{-webkit-mask-image:linear-gradient(#000 calc(100% - 5rem),#0000);mask-image:linear-gradient(#000 calc(100% - 5rem),#0000)}.work-card__body:not(.has-more){-webkit-mask-image:none;mask-image:none}.work-card__hint{left:calc(var(--work-panel-pad) + var(--work-media-w) + var(--detail-gap));bottom:calc(var(--work-panel-pad) + .4rem);font-family:var(--font-body);letter-spacing:.08em;color:#fff9;opacity:0;pointer-events:none;margin:0;font-size:.78rem;font-style:italic;font-weight:300;transition:opacity .4s,transform .4s;position:absolute;transform:translateY(6px)}.work-card__hint.is-shown{opacity:1;animation:1.9s ease-in-out .6s infinite work-hint-bob;transform:none}@keyframes work-hint-bob{0%,to{transform:none}50%{transform:translateY(4px)}}@media (width<=899px){.work-card,.work-card.is-expanded{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;flex:none;width:100%;height:auto;transition:none}.work-card.is-expanded{background:#0a0c079e;width:calc(100% + 40px);margin-inline:-20px;padding:12px}.work-card__preview{display:block}.work-card__thumb{width:100%;height:auto;display:block}.work-card__caption{min-height:0;padding:14px 0 0}.work-card__caption-text{font-size:clamp(1.05rem,4.4vw,1.35rem)}.work-card__panel{flex-direction:column;height:auto;padding:0;display:flex}.work-card__body{display:contents}.work-card__head{order:1;margin-bottom:14px}.work-card__media{order:2}.work-card__intro{order:3;margin-top:18px}.work-card__rule{order:4}.work-card .project-detail{order:5}.work-card__hint{order:6}.work-card__media{flex:none;width:100%;display:block}.work-card__media img{max-height:none}.work-card__media img+img{margin-top:var(--work-media-gap)}.work-card__body{height:auto;padding:18px 0 0;animation:none;overflow:visible}.work-card__title{font-size:clamp(1.15rem,5vw,1.5rem)}.work-card__subtitle,.work-card__meta,.work-card__lede,.work-card__link{max-width:none;font-size:1rem}.work-card__close{opacity:1;background:#00000073;width:2rem;height:2rem;top:10px;right:10px}.work-card__hint{display:none}}.work-card__meta.is-spacer{height:.75em}.work-strip{--work-thumb-h:min(46vh, 34vw);--work-card-max-w:30vw;--work-panel-w:62vw;--work-panel-pad:2.2vw;--work-media-w:24vw;--work-media-gap:.9vw;--work-gap:2.6vw;flex:auto;min-height:0;position:relative}.work-strip__scroller{scrollbar-width:none;outline:none;height:100%;overflow:auto hidden}.work-strip__scroller::-webkit-scrollbar{display:none}.work-strip__track{align-items:stretch;gap:var(--work-gap);height:100%;padding:var(--work-gap) 8vw var(--work-gap) 3.75vw;width:max-content;display:flex}.work-strip__arrow{z-index:3;width:2.4rem;height:2.4rem;color:var(--ink);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border:1px solid var(--rule-ink);opacity:.8;background:#00000059;place-items:center;font-size:2rem;line-height:1;transition:opacity .25s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.work-strip__arrow:hover:not(:disabled),.work-strip__arrow:focus-visible:not(:disabled){opacity:1}.work-strip__arrow:disabled{opacity:0;pointer-events:none}.work-strip__arrow--prev{left:1.1vw}.work-strip__arrow--next{right:1.6vw}.work-strip.is-open .work-strip__track{padding-right:max(8vw, calc(100% - var(--work-panel-w) + var(--work-gap)))}.work-strip.is-open .work-strip__arrow{opacity:0;pointer-events:none}@media (width<=899px){.work-strip{min-height:0}.work-strip__scroller{height:auto;overflow:visible}.work-strip__track{flex-direction:column;gap:clamp(30px,6vw,46px);width:auto;height:auto;padding:0 20px}.work-strip.is-open .work-strip__track{padding-right:20px}}.section-page{align-items:stretch;width:100%;height:100dvh;display:flex;overflow:hidden}.section-page__main{flex-direction:column;flex:auto;min-width:0;height:100%;min-height:0;display:flex}.section-page__header{flex:none;padding:clamp(20px,2.6vw,38px) 3.75vw clamp(14px,1.8vw,26px)}.section-page__top{justify-content:space-between;align-items:flex-start;gap:clamp(16px,3vw,40px);display:flex}.section-page__title{letter-spacing:.06em;margin:0;font-size:clamp(2.2rem,5.6vw,5rem);font-weight:700;line-height:1}.section-page__id{flex-direction:column;align-items:flex-end;gap:clamp(10px,1.1vw,16px);display:flex}.section-page__name{font-family:var(--font-display);letter-spacing:.095em;white-space:nowrap;opacity:.92;text-box-trim:trim-start;text-box-edge:cap alphabetic;font-size:clamp(1.05rem,2vw,1.75rem);font-weight:600;line-height:1;transition:opacity .2s}@supports not (text-box-trim:trim-start){.section-page__name{margin-top:calc(1px - .186em)}}.section-page__name:hover,.section-page__name:focus-visible{opacity:1}.section-page__tagline{font-family:var(--font-body);letter-spacing:.06em;color:#fffffff2;margin:clamp(8px,1vw,16px) 0 0;font-size:clamp(.85rem,1.35vw,1.25rem);font-weight:300;line-height:1.3}.section-page__rule{height:var(--rule-w);background:var(--rule-ink);flex:none}.section-page__empty{font-family:var(--font-body);color:#ffffff8c;padding:clamp(24px,5vh,48px) 3.75vw;font-style:italic;font-weight:300}@media (width<=899px){.section-page{flex-direction:column;max-width:100vw;height:auto;min-height:100vh;overflow-x:hidden}.section-page__main{order:2;height:auto;min-height:0;padding-bottom:8vh;display:block}.section-page__top{flex-direction:column-reverse;align-items:stretch;gap:clamp(14px,4vw,22px)}.section-page__id{flex-direction:row;justify-content:space-between;align-items:center;gap:clamp(12px,3vw,24px)}.section-page__title{font-size:clamp(2rem,11vw,3rem)}.section-page__tagline{letter-spacing:.03em;font-size:clamp(.9rem,3.9vw,1.1rem)}.section-page .side-nav{order:1;padding-top:clamp(24px,5vh,40px)}}.exp-page{--exp-pad:clamp(18px, 3.6vw, 46px);--exp-gap:clamp(14px, 1.9vw, 24px);--exp-fs-body:var(--fs-body);--exp-fs-head:clamp(.95rem, 1.45vw, 1.35rem);--exp-lh:var(--lh-body);align-items:stretch;width:100%;height:100dvh;display:flex;overflow:hidden}.exp-page__main{scrollbar-width:none;flex:auto;min-width:0;height:100%;overflow-y:auto}.exp-page__main::-webkit-scrollbar{display:none}.exp-header{padding:clamp(20px, 2.6vw, 38px) var(--exp-pad) clamp(14px, 1.8vw, 26px)}.exp-header__top{justify-content:space-between;align-items:flex-start;gap:clamp(16px,3vw,40px);display:flex}.exp-header__title{letter-spacing:.06em;margin:0;font-size:clamp(2.2rem,5.6vw,5rem);font-weight:700;line-height:1}.exp-header__id{flex-direction:column;align-items:flex-end;gap:clamp(10px,1.1vw,16px);display:flex}.exp-header__name{font-family:var(--font-display);letter-spacing:.095em;white-space:nowrap;opacity:.92;text-box-trim:trim-start;text-box-edge:cap alphabetic;font-size:clamp(1.05rem,2vw,1.75rem);font-weight:600;line-height:1;transition:opacity .2s}@supports not (text-box-trim:trim-start){.exp-header__name{margin-top:calc(1px - .186em)}}.exp-header__name:hover,.exp-header__name:focus-visible{opacity:1}.exp-header__tagline{font-family:var(--font-body);letter-spacing:.015em;font-size:clamp(.9rem,1.35vw,1.3rem);font-weight:300;line-height:var(--lh-body);color:var(--ink);margin:clamp(8px,1vw,16px) 0 0}.exp-rule{height:var(--rule-w);background:var(--rule-ink)}.exp-grid{gap:var(--exp-gap);grid-template-columns:1fr 1fr;align-items:start;padding:0 0 clamp(32px,4.5vw,72px);display:grid}.exp-col{gap:var(--exp-gap);flex-direction:column;min-width:0;display:flex}.exp-card{border:var(--rule-w) solid var(--rule-ink);padding:1.5em var(--exp-pad) 1.75em;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);min-width:0;font-family:var(--font-body);font-weight:300;font-size:var(--exp-fs-body);line-height:var(--exp-lh);letter-spacing:.01em;background:#ffffff08}.exp-col:first-child .exp-card{border-left:0}.exp-col:last-child .exp-card{border-right:0}.exp-card__title{font-size:var(--exp-fs-head);letter-spacing:.1em;margin:0 0 .85em;font-weight:700;line-height:1}.exp-list{flex-direction:column;gap:1.5em;margin:0;padding:0;list-style:none;display:flex}.exp-list p{font:inherit;line-height:var(--exp-lh);margin:0}.exp-degree__head strong,.exp-role__head strong,.exp-teach__head strong{font-weight:600}.exp-degree__date,.exp-role__where{color:#ffffffdb}.exp-degree__field,.exp-role__dates{color:#ffffffe0}.exp-role__dates.is-italic{font-style:italic}.exp-bullets{flex-direction:column;gap:.5em;margin:.5em 0 0;padding:0;list-style:none;display:flex}.exp-bullets>li{font:inherit;line-height:var(--exp-lh);color:#fffffff0;padding-left:1.15em;position:relative}.exp-bullets>li:before{content:"·";color:#ffffffe6;font-size:1.35em;line-height:1.2;position:absolute;top:-.05em;left:.15em}.exp-bullets--courses>li>strong{font-weight:600}.exp-bullets--with{margin-top:.25em}.exp-bullets--with>li:before{content:none}.exp-bullets--with>li{color:#ffffffd1;font-style:italic}.exp-cite{text-underline-offset:2px;font-style:italic;text-decoration:underline}a.exp-cite:hover,a.exp-cite:focus-visible{color:#ffffffbf}.exp-resume-row{padding:var(--exp-gap) var(--exp-pad);justify-content:center;display:flex}.exp-resume{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);font-family:var(--font-display);letter-spacing:.07em;white-space:nowrap;background:#ffffff29;border:1px solid #ffffff57;border-radius:999px;flex:none;padding:.8em 1.5em;font-size:clamp(.78rem,1.2vw,1.1rem);font-weight:600;line-height:1;transition:background .25s,border-color .25s}.exp-resume:hover,.exp-resume:focus-visible{background:#ffffff47;border-color:#fff9}@media (width<=899px){.exp-page{--exp-pad:clamp(16px, 5vw, 28px);--exp-fs-head:1.05rem;flex-direction:column;max-width:100vw;height:auto;min-height:100vh;overflow-x:hidden}.exp-page__main{order:2;height:auto;overflow-y:visible}.exp-page .side-nav{order:1;padding-top:clamp(24px,5vh,40px)}.exp-header__top{flex-direction:column-reverse;align-items:flex-start;gap:clamp(12px,3vw,20px)}.exp-header__id{flex-direction:row;align-items:center;gap:12px}.exp-grid{grid-template-columns:1fr}.exp-col{display:contents}.exp-card--education{order:1}.exp-card--current{order:2}.exp-card--past{order:3}.exp-card--teaching{order:4}.exp-col .exp-card{border-left:0;border-right:0}}.about-page{min-height:100dvh;display:flex;position:relative}.about-page__main{flex:auto;min-width:0}.about-page__header{padding:clamp(18px,3.6vw,46px) clamp(18px,3.6vw,46px) 0}.about-page__top{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.about-page__title{margin:0;font-size:clamp(2.2rem,5.6vw,5rem);line-height:1}.about-page__id{flex-direction:column;align-items:flex-end;gap:10px;display:flex}.about-page__name{font-family:var(--font-display);color:var(--ink);font-size:clamp(1.05rem,2vw,1.75rem);line-height:1}.about-page__rule{border-bottom:var(--rule-w) solid var(--rule-ink);margin-top:clamp(14px,2vw,24px)}.about-page__body{max-width:62ch;padding:clamp(20px,4vw,40px) clamp(18px,3.6vw,46px) clamp(40px,8vw,80px)}.about-page__intro,.about-page__para{font-family:var(--font-body);font-weight:300;font-size:var(--fs-body);line-height:var(--lh-body);letter-spacing:.015em;color:var(--ink);margin:0 0 1.1em}.about-page__photos{flex-direction:column;gap:clamp(12px,3vw,22px);margin-top:clamp(22px,5vw,40px);display:flex}.about-page__photo{margin:0}.about-page__photo img{width:100%;height:auto;display:block}@media (width<=899px){.about-page{flex-direction:column;height:auto}.about-page .side-nav{order:-1;padding-top:clamp(20px,5vh,36px)}}
