:root{accent-color:var(--clr-accent);--clr-bg:#f7f4ee;--clr-text:#1f1d1a;--clr-text-muted:#66605a;--clr-accent:#9f4b2e;--clr-image-outline:#0000001a}
:root{--ff-body:"IBM Plex Sans", "Avenir Next", "Segoe UI", sans-serif;--ff-display:"Iowan Old Style", "Palatino Linotype", serif;--fs-body:1rem;--fs-body-sm:.875rem;--fs-circular:clamp(.625rem, .8vw, .75rem);--fs-subheading:2rem;--fs-heading:3rem;--fs-name:clamp(10rem, 25svh, 18rem);--fw-medium:500;--fw-bold:700;--font-body-md:var(--fw-medium) var(--fs-body) / 1.6 var(--ff-body);--font-body-sm:var(--fw-medium) var(--fs-body-sm) / 1.5 var(--ff-body);--font-subheading:var(--fw-bold) var(--fs-subheading) / 1.2 var(--ff-display);--font-heading:var(--fw-bold) var(--fs-heading) / 1.1 var(--ff-display);--font-name:var(--fw-bold) var(--fs-name) / 1 var(--ff-display);--space-4:4px;--space-8:8px;--space-12:12px;--space-16:16px;--space-20:20px;--space-24:24px;--space-32:32px;--space-48:48px;--space-64:64px;--space-96:96px;--size-border-1:1px;--size-outline:2px;--size-projects-min:520px;--size-list-max:680px;--size-projects-width:clamp(var(--size-projects-min), 52vw, var(--size-list-max));--size-icon:40px;--size-project-row:48px;--size-projects-preview:760px;--size-projects-header:80px;--size-page-block-gutter:var(--space-24);--size-hero-copy-max:360px;--size-photo:clamp(200px, 22vw, 320px);--size-links-cta:calc(var(--size-photo) / 2);--size-profile-inset:clamp(176px, calc(25svh - 8px), 288px);--size-projects-gutter:clamp(var(--space-48), calc(( 100% - var(--size-profile-inset) - var(--size-photo) - var(--size-projects-width) ) / 2), calc(100% - var(--size-projects-width) - var(--size-profile-inset) - var(--size-photo) - var(--space-64)));--size-scroll-fade:16px;--duration-fast:.16s;--bleed-name:.01em;--tracking-name:-.08em;--scale-name-x:1.8;--scale-name-y:1.1}
*{box-sizing:border-box;margin:0;padding:0}html{background-color:var(--clr-bg);height:100%;color:var(--clr-text);overscroll-behavior:none;-webkit-font-smoothing:antialiased;overflow:hidden}body{overscroll-behavior:none;touch-action:pan-y;min-width:320px;height:100%;min-height:100vh;font:var(--font-body-md);background-color:var(--clr-bg);-webkit-overflow-scrolling:touch;overflow-y:auto}:focus-visible{outline:var(--size-outline) solid var(--clr-accent);outline-offset:var(--size-outline)}main{min-height:100svh}.content{grid-template-columns:minmax(0, 1fr) var(--size-projects-width);gap:var(--space-64);width:100%;height:100svh;min-height:0;padding:var(--size-page-block-gutter) max(var(--space-48), calc(var(--size-projects-gutter) - var(--space-20))) var(--size-page-block-gutter) 0;display:grid;overflow:hidden}.hero{isolation:isolate;min-width:0;height:100svh;margin-block:calc(var(--size-page-block-gutter) * -1);align-self:start;position:relative;overflow:hidden}.hero__wordmark{z-index:0;pointer-events:none;position:absolute;inset:0}.hero__name{color:var(--clr-text);font:var(--font-name);letter-spacing:var(--tracking-name);text-box:trim-both cap alphabetic;white-space:nowrap;transform:rotate(90deg) translateY(var(--bleed-name)) scaleX(var(--scale-name-y)) scaleY(var(--scale-name-x)) translateX(-50%);transform-origin:0 100%;padding-inline-end:calc(var(--tracking-name) * -1);position:absolute;bottom:50%;left:0}.hero__profile{top:20%;right:var(--space-64);z-index:1;width:min(72%, var(--size-hero-copy-max), calc(100% - var(--size-profile-inset)));position:absolute}.hero__portrait{--offset-photo-x:clamp(calc(var(--space-32) * -1), calc((1200px - 100vw) * .16), 0px);--links-cta-angle:60deg;--links-cta-radius:calc((var(--size-photo) + var(--size-links-cta)) / 2 / sin(var(--links-cta-angle)));width:var(--size-photo);position:relative}.hero__photo{width:var(--size-photo);aspect-ratio:1;object-fit:cover;outline:var(--size-border-1) solid var(--clr-image-outline);max-width:100%;height:auto;translate:var(--offset-photo-x) 0;border-radius:50%;display:block}.links-cta:active,.project:active{transform:scale(.96)}.links-cta{top:calc(var(--size-photo) / 2 + sin(var(--links-cta-angle)) * var(--links-cta-radius) - var(--size-links-cta) / 2);left:calc(var(--offset-photo-x) + var(--size-photo) / 2 + cos(var(--links-cta-angle)) * var(--links-cta-radius) - var(--size-links-cta) / 2);width:var(--size-links-cta);height:var(--size-links-cta);padding:var(--space-8) 0;color:var(--clr-text);transition:color var(--duration-fast) ease, transform var(--duration-fast) ease;place-items:center;text-decoration:none;display:grid;position:absolute}.circular-text{--spin-duration:30s;animation:circular-spin var(--spin-duration) linear infinite;display:block;position:absolute;inset:0}.circular-text__motion{animation:circular-spin calc(var(--spin-duration) / 3) linear infinite paused;display:block;position:absolute;inset:0}.circular-text__character{padding-top:var(--space-4);font-size:var(--fs-circular);font-weight:var(--fw-bold);text-align:center;transform:rotate(calc(1turn / var(--character-count) * var(--character-index)));line-height:1;display:block;position:absolute;inset:0}.links-cta__icon{transition:translate var(--duration-fast) ease}.links-cta:hover{color:var(--clr-accent)}.links-cta:hover .circular-text__motion{animation-play-state:running}.links-cta:hover .links-cta__icon{translate:var(--space-4) 0}@keyframes circular-spin{to{rotate:1turn}}.projects{width:min(100%, var(--size-projects-min));height:min(100%, calc(var(--size-projects-header) + var(--size-projects-preview)));grid-template-rows:auto minmax(0,1fr);place-self:center;min-height:0;display:grid;position:relative}.projects__header{padding-top:var(--space-8);padding-bottom:var(--space-16)}h2{font:var(--font-heading);text-wrap:balance}.projects__viewport{overscroll-behavior:contain;scrollbar-width:none;touch-action:pan-y;height:100%;min-height:0;-webkit-mask-image:linear-gradient(to bottom, transparent 0, black var(--size-scroll-fade), black calc(100% - var(--size-scroll-fade)), transparent 100%);mask-image:linear-gradient(to bottom, transparent 0, black var(--size-scroll-fade), black calc(100% - var(--size-scroll-fade)), transparent 100%);-webkit-overflow-scrolling:touch;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:linear-gradient(to bottom, transparent 0, black var(--size-scroll-fade), black calc(100% - var(--size-scroll-fade)), transparent 100%);overflow-y:auto;-webkit-mask-repeat:no-repeat}.projects__viewport::-webkit-scrollbar{display:none}.projects__list{grid-auto-rows:minmax(var(--size-project-row), auto);row-gap:var(--space-32);width:100%;padding:var(--size-scroll-fade) 0 var(--space-48);list-style:none;display:grid}.project{align-items:center;gap:var(--space-16);color:inherit;text-align:left;transition:transform var(--duration-fast) ease;text-decoration:none;display:flex}.project__icon{flex:0 0 var(--size-icon);width:var(--size-icon);height:var(--size-icon);object-fit:contain}.project__icon--monochrome{filter:brightness(0)}.project__description{color:var(--clr-text-muted);font:var(--font-body-sm);text-wrap:pretty;display:block}@media (min-width:768px) and (max-width:1199px){:root{--size-projects-min:400px;--size-list-max:520px;--size-photo:clamp(224px, 20vw, 240px);--size-profile-inset:clamp(112px, 16vmin, 160px)}.content{gap:var(--space-32);padding:var(--size-page-block-gutter) var(--space-24) var(--size-page-block-gutter) 0}.hero{margin-block:calc(var(--size-page-block-gutter) * -1)}.hero__profile{width:min(72%, 280px, calc(100% - var(--size-profile-inset)));right:0}.hero__portrait{--offset-photo-x:calc(var(--space-32) * -1)}}@media (max-width:767px){:root{--size-mobile-padding:clamp(var(--space-20), 6vw, var(--space-32));--size-photo:clamp(120px, 32vw, 160px)}.content{gap:var(--space-32);height:auto;min-height:100svh;padding:var(--size-mobile-padding);grid-template-columns:1fr;overflow:visible}.hero{width:100%;height:auto;padding-block:var(--space-16);margin:0;overflow:visible}.hero__wordmark{position:relative;inset:auto}.hero__name{margin-bottom:var(--space-32);font:var(--font-heading);letter-spacing:normal;text-align:center;text-box:normal;text-wrap:balance;white-space:normal;padding:0;position:static;transform:none}.hero__profile{width:var(--size-photo);margin-inline:auto;position:relative;top:auto;right:auto}.hero__portrait{--offset-photo-x:0px}.links-cta{top:calc(var(--space-16) * -1);left:calc(var(--space-16) * -1);width:calc(100% + var(--space-32));height:calc(100% + var(--space-32));border-radius:50%;padding:0}.links-cta__icon{display:none}.projects{height:auto;display:block}.projects__header{text-align:center;padding-top:0}.projects__header h2{font:var(--font-subheading)}.projects__viewport{overscroll-behavior:auto;height:auto;overflow:visible;-webkit-mask-image:none;mask-image:none}.projects__list{padding:var(--size-scroll-fade) 0 var(--space-20)}}@media (prefers-reduced-motion:reduce){.links-cta,.project{transition:none}.circular-text,.circular-text__motion{animation-play-state:paused}}
