.a11y{position:relative}.a11y__toggle{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;background:transparent;border:none;border-radius:2px;color:var(--color-text-muted);cursor:pointer;transition:color var(--transition)}.a11y__toggle .material-icons{font-size:1.5rem}.a11y__toggle:hover{color:var(--color-text)}.a11y__toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.a11y__panel{position:absolute;top:calc(100% + .5rem);right:0;width:16rem;padding:1.25rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;box-shadow:var(--shadow-lg)}.a11y__heading{margin:0 0 1rem;font-family:var(--font-heading);font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.a11y__group{margin:0 0 1rem;padding:0;border:none}.a11y__group legend{margin-bottom:.5rem;font-size:.8125rem;font-weight:500;color:var(--color-text)}.a11y__options{display:flex;flex-wrap:wrap;gap:.375rem}.a11y__option{padding:.375rem .625rem;font-family:var(--font-heading);font-size:.75rem;font-weight:500;color:var(--color-text-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:2px;cursor:pointer;transition:all var(--transition)}.a11y__option:hover{color:var(--color-text);border-color:var(--color-text-muted)}.a11y__option--active{color:var(--color-bg);background:var(--color-text);border-color:var(--color-text)}.a11y__option:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.a11y__checkbox{display:flex;align-items:center;gap:.625rem;margin-bottom:.625rem;font-size:.8125rem;color:var(--color-text);cursor:pointer}.a11y__checkbox:last-child{margin-bottom:0}.a11y__checkbox input{width:1rem;height:1rem;accent-color:var(--color-text)}.a11y__checkbox input:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.a11y--menu{display:flex;flex-direction:column}.a11y__menu-toggle{background:transparent;border:none;cursor:pointer;font-family:inherit;line-height:inherit}.a11y__menu-panel{padding:.25rem 1rem .5rem}.a11y__menu-panel .a11y__group{margin-bottom:.75rem}@media(max-width:640px){.a11y__panel{right:-.5rem;width:calc(100vw - 2.5rem);max-width:16rem}}.lang-switcher{position:relative}.lang-switcher__toggle{display:inline-flex;align-items:center;gap:.125rem;background:transparent;border:none;cursor:pointer;font-family:inherit;line-height:inherit}.lang-switcher__chevron{font-size:1.125rem;transition:transform var(--transition)}.lang-switcher__toggle[aria-expanded=true] .lang-switcher__chevron{transform:rotate(180deg)}.lang-switcher__menu{position:absolute;top:calc(100% + .375rem);right:0;z-index:110;min-width:9rem;margin:0;padding:.375rem;list-style:none;background:var(--color-bg);border:1px solid var(--color-border);border-radius:2px;box-shadow:var(--shadow-lg)}.lang-switcher__option{display:flex;align-items:center;width:100%;padding:.5rem .625rem;font-family:var(--font-heading);font-size:.8125rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;text-align:left;color:var(--color-text-muted);background:transparent;border:none;border-radius:2px;cursor:pointer;transition:color var(--transition),background var(--transition)}.lang-switcher__option:hover,.lang-switcher__option--active{color:var(--color-text);background:var(--color-surface)}.lang-switcher__option-name{text-transform:none;letter-spacing:.01em;font-weight:400}.lang-switcher__option:focus-visible,.lang-switcher__toggle:focus-visible,.lang-switcher__menu-option:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.lang-switcher--menu{display:flex;flex-direction:column;gap:.375rem}.lang-switcher__menu-option{background:transparent;border:none;cursor:pointer;font-family:inherit}.header{position:sticky;top:0;z-index:100;height:var(--header-height);background:var(--color-bg);border-bottom:1px solid var(--color-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);overflow:visible}.header__inner{display:flex;align-items:center;justify-content:space-between;height:100%;max-width:var(--layout-width);margin:0 auto;padding:0 var(--page-gutter)}.header__start{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.header__brand{display:inline-flex;align-items:center;gap:.5rem;flex-shrink:0;white-space:nowrap;font-family:var(--font-display);font-size:1.125rem;font-weight:500;letter-spacing:.02em;color:var(--color-text);text-decoration:none;transition:opacity var(--transition)}.header__brand-icon{display:block;width:3.75rem;height:3.75rem;flex-shrink:0}.header__brand-icon svg{display:block;width:100%;height:100%}.header__brand-icon--settled .grid-draw,.header__brand-icon--settled .shape-letter,.header__brand-icon--settled .shape-stem-left,.header__brand-icon--settled .shape-stem-middle,.header__brand-icon--settled .shape-stem-right{animation:none!important;stroke-dashoffset:0}.header__brand-icon--settled #Shape{animation:none!important;opacity:1;visibility:visible}.header__brand:hover{opacity:.7}.header__actions,.header__links{display:flex;align-items:center;gap:.5rem}.header__tools{display:flex;align-items:center;gap:.5rem;margin-left:2.5rem}.header__menu-tools{display:none}.header__menu-toggle{display:none;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;background:transparent;border:none;color:var(--color-text-muted);cursor:pointer;transition:color var(--transition)}.header__menu-toggle svg{width:1.5rem;height:1.5rem}.header__menu-toggle:hover{color:var(--color-text)}.header__menu-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.header__menu,.header__backdrop{display:none}.header__link{padding:.5rem 1rem;font-size:.875rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);text-decoration:none;border-radius:2px;transition:color var(--transition),background var(--transition)}.header__link:hover{color:var(--color-text)}.header__link--active{color:var(--color-bg);background:var(--color-text)}.header__link--active:hover{color:var(--color-bg);opacity:.85}.header__link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media(max-width:960px){.header__links,.header__tools--desktop{display:none}.header__menu-toggle{display:flex}.header--menu-open{z-index:101}.header__menu{display:block;position:absolute;top:100%;left:0;right:0;z-index:1;padding:.75rem var(--page-gutter) 1rem;background:var(--color-bg);border-bottom:1px solid var(--color-border);box-shadow:none}.header__backdrop{display:block;position:fixed;top:var(--header-height);right:0;bottom:0;left:0;z-index:99;padding:0;border:none;background:#1a1a1a59;cursor:default;animation:header-backdrop-in var(--transition) ease}@keyframes header-backdrop-in{0%{opacity:0}to{opacity:1}}.header__menu-nav{display:flex;flex-direction:column;gap:.375rem}.header__menu-nav .header__link{display:block;padding:.75rem 1rem;font-size:.8125rem}.header__menu-tools{display:flex;flex-direction:column;gap:.375rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border)}.header__menu-tools .header__link{display:flex;align-items:center;gap:.75rem;width:100%;padding:.75rem 1rem;font-size:.8125rem;text-align:left}.header__menu-nav .header__link--active,.header__menu-tools .header__link--active,.header__menu-nav .header__link--active:hover,.header__menu-tools .header__link--active:hover{color:#fff}.header__menu-tools .header__menu-icon{font-size:1.25rem;flex-shrink:0}}@media(max-width:640px){.header__inner{--brand-logo-inset: calc((var(--header-height) - 2.75rem) / 2);padding-left:var(--brand-logo-inset)}.header__brand{gap:var(--brand-logo-inset)}.header__brand-icon{width:2.75rem;height:2.75rem}}.footer{margin-top:auto;border-top:1px solid var(--color-border)}.footer__inner{max-width:var(--layout-width);margin:0 auto;padding:2rem var(--page-gutter)}.footer__inner p{margin:0;font-size:.8125rem;color:var(--color-text-muted)}.skip-link{position:absolute;top:-100%;left:1rem;z-index:1000;padding:.75rem 1.25rem;font-size:.875rem;font-weight:500;color:var(--color-bg);background:var(--color-text);text-decoration:none;border-radius:2px}.skip-link:focus{top:1rem}.profile-intro{display:grid;gap:2.5rem;align-items:start}.profile-intro--home{grid-template-columns:auto 1fr;align-items:center}.profile-intro--resume{--resume-photo-width: 16rem;--resume-photo-height: calc(var(--resume-photo-width) * 1455 / 1081 * 2 / 3);display:grid;grid-template-columns:1fr auto;grid-template-areas:"content figure";align-items:end;column-gap:3rem;min-height:var(--resume-photo-height);border-bottom:1px solid var(--color-border)}.profile-intro__photo-shape,.profile-intro__photo-mobile{display:none}.profile-intro--resume .profile-intro__content{grid-area:content;padding-bottom:2rem}.profile-intro__photo-desktop{grid-area:figure;align-self:end}.profile-intro__figure{margin:0;line-height:0;width:var(--resume-photo-width, 16rem);height:var(--resume-photo-height, calc(16rem * 1455 / 1081 * 2 / 3));overflow:hidden;flex-shrink:0}.profile-intro__photo{width:10rem;height:10rem;object-fit:cover;border-radius:50%;border:1px solid var(--color-border)}.profile-intro__photo--cutout{display:block;width:100%;height:auto;border:none;border-radius:0}.profile-intro__eyebrow{margin:0 0 .5rem;font-family:var(--font-heading);font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted)}.profile-intro__name{margin:0 0 .5rem;font-family:var(--font-display);font-size:clamp(2rem,4vw,2.75rem);font-weight:500;line-height:1.2;color:var(--color-text)}.profile-intro__role{margin:0 0 1rem;font-size:1rem;font-weight:500;color:var(--color-text)}.profile-intro__bio{margin:0;max-width:36rem;font-size:1.0625rem;font-weight:300;line-height:1.7;color:var(--color-text-muted)}.profile-intro__actions{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1.75rem}.profile-intro__download{gap:.4rem}.profile-intro__download-icon,.profile-intro__download-short{display:none}.profile-intro__download-icon{font-size:1.125rem;line-height:1}@media(max-width:640px){.profile-intro--home{grid-template-columns:1fr;gap:1rem;align-items:start}.profile-intro--home .profile-intro__content{text-align:center}.profile-intro--home .profile-intro__name,.profile-intro--resume .profile-intro__name{font-size:1.5rem}.profile-intro--home .profile-intro__name{margin-bottom:.25rem}.profile-intro--home .profile-intro__role{margin-bottom:.75rem}.profile-intro--home .profile-intro__content .profile-intro__bio{display:block;max-width:none;text-align:justify;text-align-last:left;-webkit-hyphens:auto;hyphens:auto;line-height:1.6}.profile-intro--home .profile-intro__photo{width:8rem;height:8rem;justify-self:center}.profile-intro--resume{--resume-photo-width: 11rem;--resume-button-gap: 1.25rem;position:relative;display:block;min-height:0}.profile-intro--resume .profile-intro__content{padding-bottom:0}.profile-intro__photo-desktop{display:none}.profile-intro__photo-shape{display:block;float:right;width:var(--resume-photo-width);height:calc(var(--resume-photo-height) + 5.5rem);margin:0 0 0 .75rem;shape-outside:inset(5.5rem 0 0 0)}.profile-intro__photo-mobile{display:block;position:absolute;right:0;bottom:0;width:var(--resume-photo-width);height:var(--resume-photo-height)}.profile-intro__photo-mobile .profile-intro__figure{width:100%;height:100%;overflow:hidden}.profile-intro__photo-mobile .profile-intro__photo--cutout{width:100%;height:auto}.profile-intro--resume .profile-intro__actions{clear:left;margin-top:var(--resume-button-gap);margin-bottom:var(--resume-button-gap)}.profile-intro--resume .profile-intro__bio-wrap:after{content:"";display:table;clear:both}.profile-intro--resume .profile-intro__bio{max-width:none}.profile-intro__download{padding:.625rem .875rem}.profile-intro__download-icon,.profile-intro__download-short{display:inline-flex;align-items:center}.profile-intro__download-full{display:none}}.project-card{position:relative;display:block;width:100%;aspect-ratio:4 / 3;overflow:hidden;padding:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:2px;text-decoration:none;color:#fff}.project-card--no-cover{background:#fff}.project-card__placeholder{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff}.project-card__image{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;max-width:100%;object-fit:cover;object-position:center;display:block;transition:transform .45s ease;backface-visibility:hidden}.project-card__overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1.5rem;text-align:center;background:#1a1a1a9e;opacity:0;transition:opacity var(--transition)}.project-card:hover .project-card__overlay,.project-card:focus-visible .project-card__overlay,.project-card:focus-within .project-card__overlay{opacity:1}[data-motion=normal] .project-card:hover .project-card__image,[data-motion=normal] .project-card:focus-visible .project-card__image,[data-motion=normal] .project-card:focus-within .project-card__image{transform:scale(1.02)}.project-card__year{font-size:.75rem;font-weight:500;letter-spacing:.08em;color:#fffc}.project-card__title{margin:0;font-family:var(--font-heading);font-size:1.375rem;font-weight:700;letter-spacing:-.02em;line-height:1.3;text-transform:uppercase;color:#fff}.project-card__description{margin:.15rem 0 0;max-width:22rem;font-size:.8125rem;font-weight:400;line-height:1.45;color:#ffffffd1;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden}.project-card:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}[data-contrast=high] .project-card{border-color:var(--color-border);border-width:2px}[data-contrast=high] .project-card__overlay{background:#000}[data-contrast=high] .project-card__year,[data-contrast=high] .project-card__title,[data-contrast=high] .project-card__description{color:#fff}@media(hover:none){.project-card__overlay{opacity:1}}.section-header{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;margin:0 0 1.5rem;padding-bottom:.75rem;border-bottom:1px solid var(--color-border)}.section-header__title{margin:0;font-family:var(--font-heading);font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted)}.section-header .text-link{margin-top:0}.home-about{margin-bottom:3rem}.home-projects__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}@media(max-width:640px){.page.home-page{padding:2rem 0 3rem}.home-about{margin-bottom:2.5rem}.home-projects__grid{grid-template-columns:1fr}}.projects-page{grid-column:1 / -1;display:grid;grid-template-columns:subgrid;align-items:start}.projects-sidebar{grid-column:1;justify-self:center;align-self:start;width:max-content;max-width:100%;position:sticky;top:calc(var(--header-height) + 1.5rem)}.projects-sidebar__title{margin:0 0 1.5rem;font-family:var(--font-display);font-size:1.5rem;font-weight:500;line-height:1.2;color:var(--color-text)}.projects-sidebar__title--back{display:inline-block;text-decoration:none;transition:opacity var(--transition)}.projects-sidebar__title--back:hover{opacity:.7}.projects-sidebar__title--back:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.projects-sidebar__nav{display:flex;flex-direction:column;gap:1.5rem}.projects-sidebar__heading{margin:0 0 .625rem;font-family:var(--font-heading);font-size:.6875rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted)}.projects-sidebar__list{margin:0;padding:0;list-style:none}.projects-sidebar__list li{margin-bottom:.375rem}.projects-sidebar__list li:last-child{margin-bottom:0}.projects-sidebar__link{font-size:.875rem;line-height:1.45;color:var(--color-text-muted);text-decoration:none;transition:color var(--transition)}.projects-sidebar__link:hover{color:var(--color-text)}.projects-sidebar__link--active{font-weight:600;color:var(--color-text)}.projects-sidebar__link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.projects-page__content{grid-column:2;min-width:0}.projects-section{margin-bottom:4rem}.projects-section:last-child{margin-bottom:0}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}.project-card{scroll-margin-top:calc(var(--header-height) + 1rem)}@media(max-width:900px){.projects-page{display:block;grid-column:2}.projects-sidebar{position:static;justify-self:start;width:100%;max-width:none;margin-bottom:1.5rem}.projects-sidebar__title{margin-bottom:0;text-align:left}.projects-sidebar__nav{display:none}}@media(max-width:640px){.projects-grid{grid-template-columns:1fr}}.image-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:0}.image-lightbox__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;padding:0;border:none;background:#000000e0;cursor:pointer}.image-lightbox__content{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;width:100%;height:100%;pointer-events:none}.image-lightbox__viewport{display:flex;align-items:center;justify-content:center;width:100%;height:100%;overflow:hidden;touch-action:none;cursor:zoom-in;pointer-events:auto}.image-lightbox__viewport--zoomed{cursor:grab}.image-lightbox__viewport--panning{cursor:grabbing}.image-lightbox__image{display:block;width:100%;height:100%;object-fit:contain;object-position:center;border:none;border-radius:0;transform-origin:center center;will-change:transform;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.image-lightbox__close{position:absolute;top:.75rem;right:.75rem;z-index:2;display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;padding:0;border:none;color:#fafaf8;background:#000;cursor:pointer;pointer-events:auto}.image-lightbox__close:focus-visible{outline:2px solid #fafaf8;outline-offset:2px}.image-lightbox__close-icon{display:block;width:1.35rem;height:1.35rem}.image-lightbox__nav{position:absolute;top:50%;z-index:2;display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;padding:0;border:none;color:#fafaf8;background:#000;cursor:pointer;pointer-events:auto;transform:translateY(-50%)}.image-lightbox__nav--prev{left:0}.image-lightbox__nav--next{right:0}.image-lightbox__nav:disabled{cursor:default;color:#555;background:#000;opacity:1;pointer-events:none}.image-lightbox__nav:disabled .image-lightbox__nav-icon path{stroke:#555}.image-lightbox__nav:focus-visible{outline:2px solid #fafaf8;outline-offset:2px}.image-lightbox__nav-icon{display:block;width:1.35rem;height:1.35rem}@media(max-width:640px){.image-lightbox__close{width:2.25rem;height:2.25rem}.image-lightbox__close-icon{width:1.2rem;height:1.2rem}.image-lightbox__nav{width:2.25rem;height:2.25rem}.image-lightbox__nav-icon{width:1.2rem;height:1.2rem}}.project-blocks{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--project-block-gap, 2.5rem);width:100%;--project-image-max-height: min(75vh, 720px);--project-carousel-btn-size: 2.75rem}.project-block{width:100%;min-width:0;margin:0}.project-block__layout{display:flex;flex-direction:column;gap:.5rem;width:100%;min-width:0}.project-block--text-top .project-block__layout{flex-direction:column-reverse}.project-block--text-left .project-block__layout,.project-block--text-right .project-block__layout{display:grid;grid-template-columns:1fr 1fr;gap:1.125rem;align-items:center}.project-block--text-left .project-block__carousel,.project-block--text-left .project-block__collage{order:2}.project-block--text-left .project-block__text,.project-block--text-right .project-block__carousel,.project-block--text-right .project-block__collage{order:1}.project-block--text-right .project-block__text{order:2}.project-block__carousel{position:relative;min-width:0}.project-block__collage{display:flex;gap:.75rem;width:100%;min-width:0;align-items:stretch;justify-content:center}.project-block__collage-item-wrap{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:.375rem;margin:0}.project-block__collage-item{flex:1 1 auto;min-width:0;display:block;margin-inline:0}.project-block__collage-caption{margin:0;text-align:center;color:var(--color-text-muted);font-size:var(--project-text-caption-font-size);font-weight:var(--project-text-caption-font-weight);line-height:var(--project-text-caption-line-height);letter-spacing:var(--project-text-caption-letter-spacing)}.project-block__collage-item img{display:block;width:100%;height:auto;max-height:var(--project-image-max-height);object-fit:contain}.project-block__media{position:relative;display:flex;justify-content:center;width:100%;min-width:0}.project-block__image-btn{display:block;width:fit-content;max-width:100%;margin-inline:auto;padding:0;border:none;background:none;cursor:pointer}.project-block__image-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px}.project-block__media img{display:block;width:auto;max-width:100%;height:auto;max-height:var(--project-image-max-height);margin-inline:auto;object-fit:contain}.project-block__media--carousel{width:max-content;max-width:100%;margin-inline:auto;overflow:hidden}.project-block__carousel-scroller{display:flex;width:100%;height:100%;min-width:0;min-height:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}.project-block__carousel-scroller::-webkit-scrollbar{display:none}.project-block__carousel-slide{flex:0 0 100%;width:100%;max-width:100%;height:100%;display:flex;align-items:center;justify-content:center;margin:0;scroll-snap-align:start;scroll-snap-stop:always;touch-action:pan-x}.project-block__carousel-slide img{max-width:100%;max-height:100%;object-fit:contain}.project-block__carousel-btn{position:absolute;top:50%;z-index:2;display:flex;align-items:center;justify-content:center;width:var(--project-carousel-btn-size);height:var(--project-carousel-btn-size);padding:0;border:none;cursor:pointer;color:var(--color-text);background:var(--color-bg);transform:translateY(-50%)}.project-block__carousel-btn--prev{left:0}.project-block__carousel-btn--next{right:0}.project-block__carousel-btn[aria-disabled=true]{cursor:default;color:#d3d3d3;opacity:1}.project-block__carousel-btn[aria-disabled=true] .project-block__carousel-btn-icon path{stroke:#d3d3d3}.project-block__carousel-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-block__carousel-btn-icon{display:block;width:1.35rem;height:1.35rem}.project-block__text{margin:0;font-family:var(--project-text-font-family);font-size:var(--project-text-caption-font-size);font-weight:var(--project-text-caption-font-weight);line-height:var(--project-text-caption-line-height);letter-spacing:var(--project-text-caption-letter-spacing);color:var(--project-text-color)}.project-block--text-only .project-block__text{max-width:42rem;font-size:var(--project-text-body-font-size);font-weight:var(--project-text-body-font-weight);line-height:var(--project-text-body-line-height);letter-spacing:var(--project-text-body-letter-spacing)}.project-block__text p,.project-block__collage-caption p,.project-block__text ul,.project-block__collage-caption ul,.project-block__text ol,.project-block__collage-caption ol{margin:0}.project-block__text p+p,.project-block__text p+ul,.project-block__text p+ol,.project-block__text ul+p,.project-block__text ol+p,.project-block__text ul+ul,.project-block__text ol+ol,.project-block__text ul+ol,.project-block__text ol+ul,.project-block__collage-caption p+p,.project-block__collage-caption p+ul,.project-block__collage-caption p+ol,.project-block__collage-caption ul+p,.project-block__collage-caption ol+p{margin-top:.8em}.project-block__text ul,.project-block__text ol,.project-block__collage-caption ul,.project-block__collage-caption ol{padding-inline-start:1.25em}.project-block__text li+li,.project-block__collage-caption li+li{margin-top:.2em}.project-block__text strong,.project-block__collage-caption strong{font-weight:700}.project-block__text em,.project-block__collage-caption em{font-style:italic}.project-block__text del,.project-block__collage-caption del{text-decoration:line-through}.project-block__text u,.project-block__collage-caption u{text-decoration:underline}.project-block--text-bottom .project-block__text,.project-block--text-top .project-block__text{max-width:none}@media(max-width:640px){.project-blocks{gap:2rem;--project-carousel-btn-size: 2.25rem}.project-block--text-left .project-block__layout,.project-block--text-right .project-block__layout{grid-template-columns:1fr}.project-block--text-left .project-block__carousel,.project-block--text-right .project-block__carousel,.project-block--text-left .project-block__collage,.project-block--text-right .project-block__collage,.project-block--text-left .project-block__text,.project-block--text-right .project-block__text{order:unset}.project-block__collage{flex-direction:column}.project-block__carousel-btn-icon{width:1.2rem;height:1.2rem}}.project-resources{margin-top:3.5rem}.project-resources__section+.project-resources__section{margin-top:2.5rem}.project-resources__links{list-style:none;margin:0;padding:0}.project-resources__link{position:relative;display:flex;flex-direction:column;gap:.25rem;padding:1rem 0 1rem 1rem;text-decoration:none;color:inherit;transition:color var(--transition)}.project-resources__link:before{content:"";position:absolute;top:.375rem;bottom:.375rem;left:0;width:2px;background:var(--color-border)}.project-resources__link:hover{color:var(--color-accent)}.project-resources__link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-resources__link-title{font-family:var(--font-display);font-size:1rem;font-weight:500;line-height:1.35}.project-resources__link-description{font-size:.875rem;line-height:1.55;color:var(--color-text-muted)}.project-resources__link-meta{display:inline-flex;align-items:center;gap:.25rem;margin-top:.125rem;font-family:var(--font-heading);font-size:.75rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted)}.project-resources__link-meta .material-icons{font-size:1rem}.project-resources__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.25rem}.resource-card{display:flex;flex-direction:column;overflow:hidden;background:var(--color-surface);border:1px solid var(--color-border);border-radius:4px;text-decoration:none;color:inherit;transition:border-color var(--transition),transform var(--transition),box-shadow var(--transition)}.resource-card:hover{border-color:var(--color-text-muted)}[data-motion=normal] .resource-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.resource-card__preview{position:relative;aspect-ratio:16 / 10;overflow:hidden;background:var(--color-bg);border-bottom:1px solid var(--color-border)}.resource-card__preview-image{width:100%;height:100%;object-fit:cover;display:block}.resource-card__pdf-embed{width:100%;height:100%;border:0;pointer-events:none}.resource-card__preview-fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;width:100%;height:100%;padding:1.5rem;text-align:center}.resource-card__preview-fallback--mobile{display:none}.resource-card__preview-fallback--pdf{background:linear-gradient(145deg,#fef2f2,#fff7ed);color:#b91c1c}.resource-card__preview-fallback--document,.resource-card__preview-fallback--presentation,.resource-card__preview-fallback--spreadsheet,.resource-card__preview-fallback--file{background:linear-gradient(145deg,#f4f4f5,#fafaf9);color:var(--color-text-muted)}.resource-card__preview-fallback .material-icons{font-size:2.5rem}.resource-card__file-type{font-size:.8125rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase}.resource-card__badge{position:absolute;top:.75rem;left:.75rem;padding:.25rem .5rem;font-family:var(--font-heading);font-size:.625rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text);background:#ffffffeb;border:1px solid var(--color-border);border-radius:2px}.resource-card__body{display:flex;flex:1;flex-direction:column;gap:.5rem;padding:1.125rem 1.25rem 1.25rem}.resource-card__title{margin:0;font-family:var(--font-display);font-size:1.125rem;font-weight:500;line-height:1.35;color:var(--color-text)}.resource-card__description{flex:1;margin:0;font-size:.875rem;line-height:1.55;color:var(--color-text-muted)}.resource-card__action{display:inline-flex;align-items:center;gap:.375rem;margin-top:.25rem;font-family:var(--font-heading);font-size:.75rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted)}.resource-card__action .material-icons{font-size:1rem}.resource-card:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media(max-width:640px){.project-resources__grid{grid-template-columns:1fr}.resource-card__pdf-embed{display:none}.resource-card__preview-fallback--mobile{display:flex}}.project-detail{--project-block-gap: 2.5rem}.project-detail__header{--project-header-inset: .75rem;--project-header-meta-optical: .15rem;margin-bottom:var(--project-block-gap);display:grid;grid-template-columns:var(--project-header-inset) minmax(0,1fr)}.project-detail__banner{position:relative;display:grid;grid-column:1 / -1;grid-template-columns:subgrid;width:100%;margin-bottom:.75rem;overflow:hidden}.project-detail__banner-image{grid-column:1 / -1;grid-row:1;z-index:0;display:block;width:100%;height:auto}.project-detail__banner:after{content:"";grid-column:1 / -1;grid-row:1;z-index:1;align-self:end;width:100%;height:55%;background:linear-gradient(to top,rgb(0 0 0 / .45),transparent);pointer-events:none}.project-detail__banner-title{grid-column:2;grid-row:1;z-index:2;align-self:end;justify-self:start;margin:0 0 -.22em;padding-left:0;max-width:100%;font-family:var(--font-heading);font-size:clamp(1.75rem,5.5vw,3.75rem);font-weight:700;line-height:1;letter-spacing:-.02em;text-transform:uppercase;text-box-trim:trim-end;text-box-edge:cap alphabetic;background-color:var(--color-bg);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}@supports (text-box-trim: trim-end){.project-detail__banner-title{margin-bottom:0}}.project-detail__banner-title--fallback{grid-column:2;position:static;max-width:none;margin-bottom:.5rem;font-size:clamp(2rem,4vw,2.75rem);line-height:1.1;letter-spacing:-.01em;background:none;-webkit-text-fill-color:currentColor;color:var(--color-text)}.project-detail__header-meta{grid-column:2;padding-left:var(--project-header-meta-optical)}.project-detail__subtitle{margin:0 0 1rem;font-family:var(--font-heading);font-size:.9375rem;font-weight:500;line-height:1.5;letter-spacing:-.02em;text-transform:uppercase;color:var(--color-text-muted)}.project-detail__description{grid-column:1 / -1;margin:0}.project-detail__description:not(:last-child){margin-bottom:1.25rem}.project-detail__tags{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1.5rem;padding:0;list-style:none}.project-detail__tags li{padding:.25rem .625rem;font-size:.6875rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:2px}.project-detail__external{margin-top:.5rem}.project-detail__authors{margin:3rem 0 0;padding-top:1.5rem;border-top:1px solid var(--color-border)}.resume-page__profile,.resume-page .page__header,.resume-section{margin-bottom:3rem}.resume-section__title{margin:0 0 1.5rem;padding-bottom:.75rem;font-family:var(--font-heading);font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted);border-bottom:1px solid var(--color-border)}.resume-entry{display:grid;grid-template-columns:8rem 1fr;gap:1.5rem;margin-bottom:2rem}.resume-entry:last-child{margin-bottom:0}.resume-entry__period{font-size:.8125rem;font-weight:500;color:var(--color-text-muted)}.resume-entry__content h3{margin:0 0 .25rem;font-family:var(--font-display);font-size:1.125rem;font-weight:500;color:var(--color-text)}.resume-entry__identity{display:flex;align-items:center;gap:1rem}.resume-entry__logo{width:3.5rem;height:3.5rem;object-fit:contain;flex-shrink:0}.resume-entry__labels{flex:1;min-width:0}.resume-entry__meta{display:flex;flex-direction:column;align-items:stretch;gap:.25rem;margin:0 0 .5rem}.resume-entry__org{margin:0;font-size:.875rem;font-weight:500;color:var(--color-text-muted)}.resume-entry__grade{margin:0;text-align:right;font-size:.875rem;font-weight:500;color:var(--color-text-muted)}.resume-entry__desc{margin:.5rem 0 0;font-size:.9375rem;line-height:1.65;color:var(--color-text-muted)}.resume-entry__content:has(.resume-entry__logo) .resume-entry__desc{padding-left:4.5rem}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:2rem}.skills-group h3{margin:0 0 .75rem;font-size:.875rem;font-weight:600;color:var(--color-text)}.skills-group ul{margin:0;padding:0;list-style:none}.skills-group li{padding:.375rem 0;font-size:.9375rem;color:var(--color-text-muted);border-bottom:1px solid var(--color-border)}.skills-group li:last-child{border-bottom:none}.languages-list{margin:0;padding:0;list-style:none}.languages-list li{display:flex;justify-content:space-between;padding:.75rem 0;font-size:.9375rem;border-bottom:1px solid var(--color-border)}.languages-list li:last-child{border-bottom:none}.languages-list__level{color:var(--color-text-muted)}@media(max-width:640px){.resume-entry{grid-template-columns:1fr;gap:.5rem}.resume-entry__content:has(.resume-entry__logo) .resume-entry__desc{padding-left:0}.resume-entry__org,.resume-entry__meta{margin-bottom:0}.resume-entry__desc{margin-top:.75rem}}:root{--font-body: "Roboto", sans-serif;--font-display: "Merriweather", serif;--font-heading: "Helvetica Neue", Helvetica, Arial, sans-serif;--color-bg: #fafaf8;--color-surface: #ffffff;--color-text: #1a1a1a;--color-text-muted: #6b6b6b;--color-border: #e8e8e4;--color-accent: #2563eb;--max-width: 72rem;--page-gutter: clamp(8rem, 22vw, 22rem);--layout-width: calc(var(--max-width) + 2 * var(--page-gutter));--header-height: 4.5rem;--footer-height: 5rem;--shadow-lg: 0 8px 32px rgba(0, 0, 0, .08);--transition: .2s ease;--font-scale: 1;--project-text-font-family: var(--font-body);--project-text-caption-font-size: .9375rem;--project-text-caption-font-weight: 400;--project-text-caption-line-height: 1.6;--project-text-caption-letter-spacing: normal;--project-text-body-font-size: 1.0625rem;--project-text-body-font-weight: 300;--project-text-body-line-height: 1.65;--project-text-body-letter-spacing: normal;--project-text-color: var(--color-text-muted)}[data-font-size=small]{--font-scale: .875}[data-font-size=medium]{--font-scale: 1}[data-font-size=large]{--font-scale: 1.125}[data-font-size=xlarge]{--font-scale: 1.25}[data-contrast=high]{--color-bg: #ffffff;--color-surface: #f5f5f5;--color-text: #000000;--color-text-muted: #333333;--color-border: #000000;--color-accent: #0000ee}[data-motion=reduced]{--transition: 0s}@media(max-width:900px){:root{--page-gutter: clamp(5rem, 15vw, 9rem)}}@media(max-width:640px){:root{--page-gutter: clamp(1rem, 4vw, 1.75rem)}}@media(prefers-reduced-motion:reduce){:root:not([data-motion=normal]){--transition: 0s}}*,*:before,*:after{box-sizing:border-box}html{font-size:calc(16px * var(--font-scale));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;font-family:var(--font-body);font-weight:400;line-height:1.6;color:var(--color-text);background:var(--color-bg)}#root{display:flex;flex-direction:column;min-height:100vh}.main{flex:1;display:grid;grid-template-columns:var(--page-gutter) minmax(0,var(--max-width)) var(--page-gutter);width:100%;max-width:var(--layout-width);margin:0 auto;padding:0}.main>:not(.projects-page){grid-column:2}.page{padding:3rem 0 4rem}.page__header{margin-bottom:3rem}.page__header h1{margin:0 0 .75rem;font-family:var(--font-display);font-size:clamp(2rem,4vw,2.75rem);font-weight:400;letter-spacing:-.01em;color:var(--color-text)}.page__header p{margin:0;max-width:36rem;font-size:1.0625rem;font-weight:300;line-height:1.65;color:var(--color-text-muted)}.project-body-text{font-family:var(--project-text-font-family);font-size:var(--project-text-body-font-size);font-weight:var(--project-text-body-font-weight);line-height:var(--project-text-body-line-height);letter-spacing:var(--project-text-body-letter-spacing);color:var(--project-text-color)}.project-caption-text{font-family:var(--project-text-font-family);font-size:var(--project-text-caption-font-size);font-weight:var(--project-text-caption-font-weight);line-height:var(--project-text-caption-line-height);letter-spacing:var(--project-text-caption-letter-spacing);color:var(--project-text-color)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 1.5rem;font-family:var(--font-heading);font-size:.8125rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;border-radius:2px;cursor:pointer;transition:all var(--transition)}.btn--primary{color:var(--color-bg);background:var(--color-text);border:1px solid var(--color-text)}.btn--primary:hover{opacity:.85}.btn--secondary{color:var(--color-text);background:transparent;border:1px solid var(--color-border)}.btn--secondary:hover{border-color:var(--color-text-muted)}.btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.text-link{flex-shrink:0;font-family:var(--font-heading);font-size:.8125rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;text-decoration:none;color:var(--color-text-muted);transition:color var(--transition)}.text-link:hover{color:var(--color-text)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media(max-width:640px){.main{padding:0 .625rem}.page{padding:2rem 0 3rem}}
