.portrait-hero{--hero-green:var(--forest);--hero-heading-size:clamp(72px,min(9.4vw,15svh),136px);--hero-top-space:clamp(16px,3svh,32px);--hero-bottom-space:clamp(16px,2.5svh,24px);--hero-label-gap:clamp(12px,2svh,20px);--hero-overlap:clamp(40px,5vw,72px);--hero-portrait-width-limit:max(240px,calc((100svh - 68px - var(--hero-top-space) - 20px - var(--hero-label-gap) - var(--hero-heading-size) * 1.8 + var(--hero-overlap) - var(--hero-bottom-space) - 16px) * 1.29543));position:relative;isolation:isolate;padding-top:var(--hero-top-space);padding-bottom:var(--hero-bottom-space)}.hero-intro{margin-bottom:var(--hero-label-gap);color:var(--secondary);font-size:12px;font-weight:500;line-height:1.6;letter-spacing:.1em;text-transform:uppercase}.hero-scene{position:relative;display:grid}.portrait-hero .hero-display{position:relative;z-index:1;grid-column:1;grid-row:1;display:block;max-width:none;font-family:var(--font-ui);font-size:var(--hero-heading-size);font-weight:900;line-height:.9;letter-spacing:-.075em}.hero-greeting{display:block;white-space:nowrap}.portrait-hero .hero-display .hero-name{display:block;color:var(--hero-green);white-space:nowrap;word-spacing:.12em}.hero-display [data-hero-reveal]{display:inline-block}.hero-portrait-entry{position:relative;z-index:3;grid-column:1;grid-row:2;justify-self:start;align-self:start;left:53%;width:min(65vw,780px,var(--hero-portrait-width-limit));margin-top:calc(-1 * var(--hero-overlap));aspect-ratio:1219/941;translate:-50% 0;pointer-events:none}.hero-portrait-image{width:100%;height:auto;filter:drop-shadow(0 12px 14px rgb(34 31 28/7%))}.hero-halo{left:53%;bottom:0;width:70%;aspect-ratio:1.2;translate:-50% 0;border-radius:50%;background:radial-gradient(ellipse,var(--accent-soft),transparent 68%)}.hero-halo,.hero-orbits{position:absolute;z-index:0;pointer-events:none}.hero-orbits{inset:0;width:100%;height:100%;overflow:visible;color:var(--input-border);opacity:.65}.hero-orbits ellipse{stroke:currentColor;stroke-width:1;vector-effect:non-scaling-stroke}.hero-summary{position:relative;z-index:4;grid-column:1;grid-row:2;align-self:start;width:360px;margin-top:clamp(24px,4.5svh,40px)}.hero-positioning{font-size:clamp(26px,min(2.3vw,4svh),32px);font-weight:600;line-height:1.15;letter-spacing:-.04em;text-wrap:pretty}.hero-description{margin-top:clamp(12px,2svh,20px);color:var(--secondary);font-size:clamp(15px,1.8svh,16px);line-height:1.6;text-wrap:pretty}.portrait-hero .hero-actions{flex-direction:row;margin-top:clamp(16px,2.5svh,24px);min-width:0;width:fit-content}.portrait-hero .hero-actions .text-link{width:auto}@media (min-width:1200px){.portrait-hero{--hero-overlap:clamp(120px,24svh,224px);--hero-art-outset:max(0px,calc((100vw - var(--page-width)) / 2))}.hero-portrait-entry{justify-self:end;left:auto;width:min(72vw,900px,var(--hero-portrait-width-limit));margin-right:calc(-1 * var(--hero-art-outset));translate:none}.hero-halo{translate:none}.hero-halo,.hero-orbits{left:auto;right:calc(-1 * var(--hero-art-outset))}}@media (min-width:768px) and (max-width:1199px){.hero-portrait-entry{left:62%;width:min(67vw,680px,var(--hero-portrait-width-limit))}.hero-halo{left:62%}.hero-summary{width:265px}.portrait-hero .hero-actions{flex-direction:column}.hero-description{font-size:15px}}@media (max-width:767px){.portrait-hero{padding-top:20px}.hero-intro{margin-bottom:16px;font-size:11px;letter-spacing:.08em}.hero-scene{display:flex;flex-direction:column;min-height:0}.portrait-hero .hero-display{display:block;text-align:center;font-size:clamp(64px,17vw,120px);line-height:.95}.hero-greeting{display:block}.hero-name{font-size:clamp(38px,12.8vw,96px);letter-spacing:-.075em;text-align:center}.hero-portrait-entry{align-self:center;left:auto;width:min(calc(100% + 24px),500px);margin-top:-20px;translate:none}.hero-halo{left:50%;top:8%;bottom:auto;width:100%;aspect-ratio:1}.hero-orbits{top:4%;height:55%}.hero-summary{position:relative;left:auto;top:auto;width:100%;margin-top:24px}.hero-positioning{max-width:20ch;font-size:28px}.hero-description{max-width:50ch;margin-top:16px;font-size:17px}.portrait-hero .hero-actions{flex-direction:column;width:100%;margin-top:20px}}@media (prefers-reduced-motion:no-preference){.hero-intro{animation:hero-fade-in .32s var(--ease) both}.hero-display [data-hero-reveal]{animation:hero-type-in .42s var(--ease) both}.hero-display [data-hero-reveal="0"]{animation-delay:50ms}.hero-display [data-hero-reveal="1"]{animation-delay:.11s}.hero-display [data-hero-reveal="2"]{animation-delay:.17s}.hero-portrait-entry{animation:hero-portrait-in .48s var(--ease) .18s both}.hero-summary{animation:hero-fade-in .36s var(--ease) .28s both}}@keyframes hero-fade-in{0%{opacity:0}to{opacity:1}}@keyframes hero-type-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes hero-portrait-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.motion-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.project-marquee{--marquee-card-width:clamp(240px,32vw,420px);--marquee-gap:clamp(16px,2vw,24px);display:grid;gap:var(--marquee-gap);padding-bottom:calc(var(--section-space) / 2)}.marquee-viewport{min-width:0;height:calc(var(--marquee-card-width) * .625 + 12px);overflow-x:auto;overflow-y:hidden;border-radius:var(--radius-image);scrollbar-width:thin;scrollbar-color:var(--input-border) transparent}.marquee-track{display:flex;gap:var(--marquee-gap);width:max-content;margin:0;padding:0;list-style:none}.marquee-card{flex:0 0 var(--marquee-card-width);width:var(--marquee-card-width)}.marquee-card--duplicate{display:none}.marquee-card figure{margin:0}.marquee-image{aspect-ratio:16/10;overflow:hidden;border-radius:var(--radius-image);background:var(--surface)}.marquee-image img{width:100%;height:100%;object-fit:contain}@media (prefers-reduced-motion:no-preference){.project-marquee[data-scroll-motion=on] .marquee-viewport{overflow-x:clip}.project-marquee[data-scroll-motion=on] .marquee-card--duplicate{display:block}.project-marquee[data-scroll-motion=on] .marquee-track{transform:translate3d(var(--marquee-x,0),0,0)}.project-marquee[data-scene-visible=true] .marquee-track{will-change:transform}.project-marquee[data-scroll-motion=on] .marquee-viewport:focus-within{overflow-x:auto}.project-marquee[data-scroll-motion=on] .marquee-viewport:focus-within .marquee-track{transform:none;will-change:auto}.project-marquee[data-scroll-motion=on] .marquee-viewport:focus-within .marquee-card--duplicate{display:none}}@media (prefers-reduced-motion:reduce){.scroll-reveal-about .about-reveal-word{opacity:1!important}}