.contact{gap:clamp(1.5rem,4vw,3rem);min-width:0;display:grid}.contact__label{border-top:var(--rule-hairline);font:400 var(--text-label) / var(--leading-micro) var(--font-mono);letter-spacing:var(--tracking-micro);padding-top:var(--space-md)}.contact__invitation{letter-spacing:var(--tracking-invitation);text-wrap:balance;max-width:none;font-size:clamp(4.5rem,17vw,12.5rem);line-height:.9}.contact__detail{overflow-wrap:anywhere;max-width:34rem}.contact__destinations{border-bottom:var(--rule-hairline);padding:0;list-style:none}.contact__destination{border-top:var(--rule-hairline);align-items:center;column-gap:var(--space-lg);grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) minmax(5.5rem,auto);min-width:0;display:grid}.contact__destination>.contact__link:only-child{column-gap:var(--space-lg);grid-column:1/3;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);display:grid}.contact__link{color:inherit;min-width:44px;min-height:44px;padding-block:var(--space-md);align-items:baseline;text-decoration:none}.contact__name{text-underline-offset:.2em;text-decoration:underline 1px}.contact__link:hover .contact__name{text-decoration-thickness:2px}.contact__value{overflow-wrap:anywhere;min-width:0}.contact__destination--email>.contact__link{justify-self:start}.contact__address{padding-block:var(--space-md)}.contact__copy:not([hidden]){border:var(--rule-hairline);color:inherit;cursor:pointer;font:400 var(--text-label) / 1 var(--font-mono);letter-spacing:var(--tracking-micro);min-width:5.5rem;min-height:44px;padding:0 var(--space-sm);background:0 0;border-radius:0;justify-content:center;justify-self:end;align-items:center;display:inline-flex}.contact__status{font:400 var(--text-label) / var(--leading-micro) var(--font-mono);letter-spacing:var(--tracking-micro);overflow-wrap:anywhere;grid-column:1/-1}.contact__status:not(:empty){padding-bottom:var(--space-md)}@media (width<=680px){.contact__destination{column-gap:var(--space-sm);grid-template-columns:minmax(0,1fr) auto}.contact__destination>.contact__link:only-child{row-gap:var(--space-xs);grid-column:1/-1;grid-template-columns:minmax(0,1fr)}.contact__destination--email>.contact__link{grid-area:1/1;padding-bottom:0}.contact__destination--email>.contact__address{padding-top:var(--space-xs);grid-area:2/1}.contact__destination--email>.contact__copy{grid-area:1/2/3}.contact__destination--email>.contact__status{grid-row:3}}[data-portfolio-letters=lift] .split-letters__letter{transition:translate .25s var(--ease-out);translate:0 calc(var(--letter-lift,0) * -1 * var(--letter-lift-em))}[data-portfolio-letters=wave][data-portfolio-letters-state=wave] .split-letters__letter{animation:contact-letter-wave .7s var(--ease-standard) calc(var(--letter-index,0) * var(--letter-wave-step)) both}@keyframes contact-letter-wave{0%,to{translate:0}40%{translate:0 -.16em}}@media (prefers-reduced-motion:reduce){.split-letters__letter{transition:none!important;animation:none!important;translate:none!important}}.hobbies{gap:clamp(2.5rem,6vw,5rem);display:grid}.hobbies__introduction{border-top:var(--rule-hairline);gap:var(--space-lg);overflow-wrap:anywhere;min-width:0;padding-top:var(--space-lg);display:grid}.hobbies__introduction p{max-width:41rem}.rolls{gap:clamp(2.5rem,6vw,4.5rem);display:grid}.roll{border-top:var(--rule-hairline);gap:var(--space-sm);min-width:0;padding-top:var(--space-md);display:grid}.roll__name{font-size:var(--text-hobby-title);letter-spacing:var(--tracking-body);overflow-wrap:anywhere;line-height:1.1}.roll__description{overflow-wrap:anywhere;max-width:42rem}.sheet{--sheet-gap:16px;align-items:flex-start;gap:var(--sheet-gap);margin-top:var(--space-sm);flex-wrap:wrap;min-width:0;display:flex}.sheet__frame{min-width:0;max-width:100%}.sheet__figure{margin:0}.sheet__open{color:inherit;cursor:zoom-in;font:inherit;background:0 0;border:0;border-radius:0;max-width:100%;padding:0;display:block}.sheet__open:disabled{cursor:default}.sheet__image{max-width:100%;height:auto;display:block}.sheet__caption{contain:inline-size;margin-top:var(--space-xs);font:400 var(--text-evidence) / var(--leading-evidence) var(--font-mono);letter-spacing:var(--tracking-evidence);overflow-wrap:anywhere}.sheet__number{color:var(--color-muted)}@media (width<=599px){.sheet{--sheet-gap:10px}}@property --mark-sweep{syntax:"<angle>";inherits:false;initial-value:0deg}[data-portfolio-sheet-lift] .sheet__open{transition:opacity .35s var(--ease-standard), scale .35s var(--ease-out), translate .35s var(--ease-out);position:relative}[data-portfolio-sheet-lift] .sheet__open:after{--mark-sweep:0deg;border:2px solid var(--color-safelight);content:"";mask-image:conic-gradient(from -24deg, #000 var(--mark-sweep), transparent 0);opacity:0;pointer-events:none;transition:opacity .2s var(--ease-standard), --mark-sweep 0s linear .2s;border-radius:46% 54% 48% 52%/54% 46% 52% 48%;position:absolute;inset:-12px;rotate:-2deg}[data-portfolio-sheet-lift] .sheet__open[data-portfolio-lift]{scale:var(--lift-scale);translate:var(--lift-x,0px) var(--lift-y,0px);z-index:1}[data-portfolio-sheet-lift] .sheet__open[data-portfolio-lift]:after{--mark-sweep:360deg;opacity:1;transition:opacity .1s var(--ease-standard), --mark-sweep var(--mark-duration) cubic-bezier(.4, 0, .2, 1)}[data-portfolio-sheet-state=lift] .sheet__open:not([data-portfolio-lift]){opacity:.45}@media (prefers-reduced-motion:reduce){[data-portfolio-sheet-lift] .sheet__open{opacity:1!important;transition:none!important;translate:none!important;scale:none!important}[data-portfolio-sheet-lift] .sheet__open:after{display:none}}.landing{margin-top:calc(-1 * var(--site-header-height));padding-block:0}.landing__frame{grid-template-rows:minmax(min-content, 1fr) minmax(calc(64px + var(--strip-chrome)), calc(min(19svh, 260px) + var(--strip-chrome)));--strip-chrome:4.45rem;height:100svh;min-height:min-content;padding-block:calc(var(--site-header-height) + clamp(.75rem, 5svh, 3.5rem)) clamp(.75rem, 3svh, 3.5rem);gap:clamp(1rem,3svh,2.5rem);display:grid}@media (height>=700px){.landing__frame{padding-bottom:clamp(1.5rem,5svh,3.5rem)}}.landing__words{grid-template-columns:minmax(0,1fr);align-content:center;align-items:start;gap:clamp(1rem,3svh,2rem);min-width:0;display:grid}.landing__title{gap:clamp(.5rem,2svh,1.2rem);min-width:0;margin:0;display:grid}.landing__positioning{font:400 var(--text-label) / var(--leading-micro) var(--font-mono);letter-spacing:var(--tracking-micro);text-transform:uppercase}.landing__name{overflow-wrap:anywhere;justify-self:start;max-width:100%}.landing__introduction{overflow-wrap:anywhere;gap:clamp(.4rem,1.5svh,.8rem);min-width:0;max-width:34rem;display:grid}.landing__statement{font-size:clamp(1.2rem,1.9vw,1.6rem);line-height:1.2}.landing__destinations{border-top:var(--rule-hairline);gap:0 var(--space-lg);margin-top:var(--space-xs);flex-wrap:wrap;display:flex}.landing__destinations a{font:400 var(--text-label) / 1.2 var(--font-mono);text-underline-offset:.3em;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.filmstrip{gap:var(--space-xs);grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0;display:grid}.filmstrip__label{font:400 var(--text-evidence) / var(--leading-evidence) var(--font-mono);gap:var(--space-md);letter-spacing:var(--tracking-evidence);text-transform:uppercase;justify-content:space-between;max-width:none;display:flex}.filmstrip__count{color:var(--color-muted)}.filmstrip__view{overscroll-behavior-x:contain;scrollbar-width:thin;min-width:0;scroll-padding-inline:4px;overflow-x:auto}.filmstrip__view:focus-visible{outline-offset:4px;outline:2px solid}.filmstrip__view{margin-top:-6px}.filmstrip__frames{box-sizing:border-box;gap:var(--space-sm);height:100%;padding:6px 4px var(--space-xs);width:max-content;display:flex}.filmstrip__frame{grid-template-rows:auto minmax(0,1fr) auto auto;gap:4px;display:grid}.filmstrip__image{width:auto;height:100%;min-height:0;display:block}.filmstrip__frame:before,.filmstrip__frame:after{--hole:7px;--pitch:11px;background:repeating-linear-gradient(90deg, currentColor 0 var(--hole), transparent var(--hole) var(--pitch)) top / 100% 1px no-repeat, repeating-linear-gradient(90deg, currentColor 0 var(--hole), transparent var(--hole) var(--pitch)) bottom / 100% 1px no-repeat, repeating-linear-gradient(90deg, currentColor 0 1px, transparent 1px calc(var(--hole) - 1px), currentColor calc(var(--hole) - 1px) var(--hole), transparent var(--hole) var(--pitch));color:var(--color-muted);content:"";height:5px}.filmstrip__frame:after{order:1}.filmstrip__number{color:var(--color-muted);font:400 var(--text-micro) / 1 var(--font-mono);letter-spacing:var(--tracking-micro);order:2}.filmstrip.is-waiting>*{opacity:0;visibility:hidden}@media (prefers-reduced-motion:no-preference){.filmstrip>*{transition:opacity .4s var(--ease-out), visibility .4s}}.filmstrip__image[role=button]{cursor:pointer}.filmstrip__image[role=button]:focus-visible{outline:2px solid var(--color-ink);outline-offset:2px}.filmstrip__view.is-drifting{cursor:grab;scrollbar-color:transparent transparent;touch-action:pan-y;user-select:none}.filmstrip__view.is-drifting .filmstrip__image{cursor:inherit}.filmstrip__view.is-drifting .filmstrip__frames{will-change:transform}.filmstrip__view.is-dragging{cursor:grabbing}.filmstrip__view.is-drifting .filmstrip__frame{rotate:calc(var(--filmstrip-lean,0) * 1deg);transition:translate .25s var(--ease-out)}.filmstrip__view.is-drifting.is-settled .filmstrip__frame:hover{translate:0 -4px}@media (width>=900px){.landing__name{white-space:nowrap}}@media (width>=900px) and (height<=780px){.landing__introduction{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(.4rem,1.5svh,.8rem) clamp(2rem,6vw,6rem);max-width:64rem}.landing__statement{grid-row:1/span 3}.landing__introduction>:not(.landing__statement){grid-column:2}}@media (width>=900px) and (height<=600px){.landing__frame{padding-top:calc(var(--site-header-height) + .25rem);gap:.5rem}.landing__words,.landing__title,.landing__introduction{gap:.25rem 2rem}}@media (width<=680px){.filmstrip__count{display:none}}@media (forced-colors:active){.filmstrip__frame:before,.filmstrip__frame:after{forced-color-adjust:none;color:canvastext}}@media screen{.landing.is-pinned{min-height:190svh}.landing.is-pinned .landing__frame{position:sticky;top:0}.landing.is-flying .landing__frame{pointer-events:none;z-index:21}.landing.is-flying .landing__frame>*{pointer-events:auto}.landing.is-flying .landing__name{pointer-events:none}}@media print{.landing__name,.landing__positioning,.landing__introduction,.filmstrip{opacity:1!important;transform:none!important}}@keyframes name-intro-hold{0%,to{opacity:0}}@keyframes name-intro-soft{0%,to{filter:blur(.09em)}}@media screen and (scripting:enabled) and (prefers-reduced-motion:no-preference) and (width>=1px){:root:not(:has(:target)) .landing[data-portfolio-intro-pending] [data-portfolio-dock-label],:root:not(:has(:target)) .landing[data-portfolio-intro-pending] [data-portfolio-dock-part],:root:not(:has(:target)) .site-header:has(~main .landing[data-portfolio-intro-pending]){animation:1.6s name-intro-hold}:root:not(:has(:target)) .landing[data-portfolio-intro-pending] [data-portfolio-dock-name]{animation:1.6s name-intro-soft}}.name-intro{color:var(--color-ink);contain:strict;font-size:var(--intro-font,4rem);pointer-events:none;z-index:80;position:fixed;inset:0;overflow:hidden}.name-intro:not(.name-intro--placed){visibility:hidden}.name-intro__frame{height:calc(var(--intro-height,1em) + .3em);left:calc(var(--intro-left,0px) - .15em);top:calc(var(--intro-top,0px) - .15em);width:calc(var(--intro-width,4em) + .3em);position:absolute}.name-intro__corner{border:0 solid;width:max(10px,.14em);height:max(10px,.14em);position:absolute}.name-intro__corner:first-child{border-top-width:1px;border-left-width:1px;top:0;left:0}.name-intro__corner:nth-child(2){border-top-width:1px;border-right-width:1px;top:0;right:0}.name-intro__corner:nth-child(3){border-bottom-width:1px;border-left-width:1px;bottom:0;left:0}.name-intro__corner:nth-child(4){border-bottom-width:1px;border-right-width:1px;bottom:0;right:0}.name-intro__label{font:400 var(--text-label) / 1 var(--font-mono);letter-spacing:var(--tracking-micro);text-transform:uppercase;white-space:nowrap;display:grid;position:absolute;bottom:calc(100% + .6rem);left:0}.name-intro__word{grid-area:1/1}.name-intro__spot{box-shadow:inset 0 0 0 max(4px, .05em) color-mix(in srgb, currentColor 12%, transparent);height:var(--intro-spot,1.2em);left:var(--intro-spot-x,50%);top:var(--intro-spot-y,50%);width:var(--intro-spot,1.2em);border:1px solid;border-radius:50%;position:absolute;translate:-50% -50%}.name-intro__window{border-radius:50%;position:absolute;inset:0;overflow:hidden}.name-intro__half{position:absolute;left:0;right:0;overflow:hidden}.name-intro__half--upper{top:0;bottom:50%}.name-intro__half--lower{top:50%;bottom:0}.name-intro__copy{left:calc(var(--intro-copy-left,0px) - var(--intro-spot-x,0px) + var(--intro-spot,0px) / 2 - 1px);top:calc(var(--intro-copy-top,0px) - var(--intro-spot-y,0px) + var(--intro-spot,0px) / 2 - 1px);width:var(--intro-copy-width,0px);display:block;position:absolute}.name-intro__half--lower .name-intro__copy{top:calc(var(--intro-copy-top,0px) - var(--intro-spot-y,0px))}.name-intro__seam{opacity:.5;border-top:1px solid;position:absolute;top:50%;left:max(4px,.05em);right:max(4px,.05em)}.name-intro__shutter{opacity:0;background:currentColor;width:1px;position:absolute;top:0;bottom:0;left:0}@media print{.name-intro{display:none}}.lightbox{--lightbox-chrome:calc(2 * var(--space-md) + 44px + 2 * var(--space-sm) + 2.2rem);background:var(--color-paper);box-sizing:border-box;color:var(--color-ink);overscroll-behavior:contain;max-width:none;height:100%;max-height:none;padding:var(--space-md) var(--gutter);border:0;width:100%;margin:0;overflow:auto}.lightbox[open]{align-content:start;gap:var(--space-sm);display:grid}.lightbox::backdrop{background:var(--color-paper)}.lightbox__controls{gap:var(--space-sm);max-width:var(--page-width);flex-wrap:wrap;width:100%;margin-inline:auto;display:flex}.lightbox__controls button{border:var(--rule-hairline);color:inherit;cursor:pointer;font:400 var(--text-label) / 1 var(--font-mono);letter-spacing:var(--tracking-micro);min-width:44px;min-height:44px;padding:0 var(--space-md);text-transform:uppercase;background:0 0;border-radius:0;justify-content:center;align-items:center;display:inline-flex}.lightbox__close{margin-inline-start:auto}.lightbox__figure{gap:var(--space-sm);margin:0;display:grid}.lightbox__image{height:auto;width:min(100%, calc((100svh - var(--lightbox-chrome)) * var(--frame-ratio,1)));margin-inline:auto;display:block}.lightbox__caption{font:400 var(--text-evidence) / var(--leading-evidence) var(--font-mono);letter-spacing:var(--tracking-evidence);overflow-wrap:anywhere;text-align:center}.lightbox__number{color:var(--color-muted)}.projects-section{gap:var(--space-xl);grid-template-columns:minmax(0,1fr);display:grid}.projects-heading{border-top:var(--rule-hairline);gap:var(--space-md);overflow-wrap:anywhere;min-width:0;padding-top:var(--space-lg);display:grid}.projects-heading p{max-width:34rem}.projects-introduction{gap:var(--space-md);overflow-wrap:anywhere;min-width:0;display:grid}.projects-introduction__kicker{font:400 var(--text-evidence) / var(--leading-evidence) var(--font-mono);letter-spacing:var(--tracking-label);text-transform:uppercase}.projects-introduction p:not(.projects-introduction__kicker){color:var(--color-muted);max-width:38rem}.plates{margin:0;padding:0;list-style:none;display:grid}.plate{border-top:var(--rule-hairline);gap:var(--space-lg);min-width:0;padding-block:var(--space-lg) var(--space-xl);grid-template-columns:minmax(0,1fr);display:grid}.plate:focus{outline:none}.plate__recording{align-content:start;gap:var(--space-sm);min-width:0;margin:0;display:grid}.plate__screen{gap:var(--space-sm);display:grid;position:relative}.plate__screen picture{display:block}.plate__screen img,.plate__player video{background:var(--color-silver);border:var(--rule-hairline);width:100%;max-width:100%;height:auto;display:block}.plate__player video{position:absolute;top:0;left:0}.plate__recording figcaption,.plate__role,.plate__facts dt,.plate__actions p{color:var(--color-muted);font:400 var(--text-evidence) / var(--leading-evidence) var(--font-mono);letter-spacing:var(--tracking-evidence)}.plate__body{align-content:start;gap:var(--space-md);overflow-wrap:anywhere;min-width:0;display:grid;container-type:inline-size}.plate__head,.plate__detail{gap:var(--space-md);min-width:0;display:grid}.plate__body h3{font-size:min(var(--text-title), 7vw);font-size:min(var(--text-title), 10cqi);overflow-wrap:normal;white-space:nowrap}.plate__role{text-transform:uppercase}.plate__frame{color:var(--color-ink);margin-right:var(--space-xs)}.plate__summary{font-size:var(--text-body)}.plate__facts{gap:var(--space-sm);margin:0;display:grid}.plate__facts div{border-top:var(--rule-hairline);gap:var(--space-xs);padding-top:var(--space-sm);display:grid}.plate__facts dd{margin:0}.plate__actions{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.plate__actions p{align-items:center;min-height:2.75rem;display:flex}.plate__control{border:var(--rule-hairline);border-radius:var(--radius-none);color:var(--color-ink);cursor:pointer;font:400 var(--text-label) / 1.2 var(--font-mono);align-items:center;gap:var(--space-xs);letter-spacing:var(--tracking-evidence);min-width:2.75rem;min-height:2.75rem;padding:var(--space-xs) var(--space-md);background:0 0;justify-self:start;text-decoration:none;display:inline-flex}.plate__control:hover{background:var(--color-ink);color:var(--color-paper)}.plate__control:focus-visible,.plate__control[data-portfolio-case-study]:focus{outline-offset:3px;outline:2px solid}.plate__player[open]>summary{background:var(--color-ink);color:var(--color-paper)}.plate__player>summary{width:fit-content;list-style:none}.plate__player>summary::-webkit-details-marker{display:none}.plates[data-portfolio-plates-state] .plate{transition:opacity .45s var(--ease-standard), scale .45s var(--ease-standard), transform .3s var(--ease-out);position:relative}.plates[data-portfolio-plates-state] .plate__screen{transition:opacity .45s var(--ease-standard)}.plates[data-portfolio-plates-state] .plate:before{background:var(--color-safelight);content:"";opacity:0;pointer-events:none;height:7px;transition:opacity .3s var(--ease-standard);border-radius:50%;width:7px;position:absolute;top:-4px;left:0}.plates[data-portfolio-plates-state] .plate[data-portfolio-plate-emphasis]:before{opacity:1}.plates[data-portfolio-plates-state] .plate[data-portfolio-plate-emphasis]{transform:perspective(1600px) rotateX(var(--plate-tilt-x,0deg)) rotateY(var(--plate-tilt-y,0deg))}.plates[data-portfolio-plates-state=emphasis] .plate:not([data-portfolio-plate-emphasis]){opacity:.85;scale:.985}.plates[data-portfolio-plates-state=emphasis] .plate:not([data-portfolio-plate-emphasis]) .plate__screen{opacity:.5}.plate__screen>video[data-portfolio-plate-preview]{background:var(--color-silver);border:var(--rule-hairline);pointer-events:none;width:100%;max-width:100%;height:auto;display:block;position:absolute;top:0;left:0}@media (prefers-reduced-motion:reduce){.plates[data-portfolio-plates-state] .plate,.plates[data-portfolio-plates-state] .plate__screen{opacity:1!important;transition:none!important;transform:none!important}}@media (width>=900px){.plate{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);column-gap:clamp(2rem,5vw,4rem)}}@media (forced-colors:active){.plate__control{border-color:buttontext}}
