.asset-loader{position:fixed;inset:0;z-index:calc(var(--z-tooltip) + 1);display:grid;place-items:center;padding:var(--space-md);color:var(--color-ink);background:var(--color-paper);transition:opacity var(--dur-long) var(--ease-out)}html.assets-loading .portfolio-hero *,html.assets-loading .site-nav{animation-play-state:paused!important}.asset-loader[data-state=leaving]{opacity:0;pointer-events:none}.asset-loader__content{width:min(100%,25rem)}.asset-loader h2{margin:0 0 var(--space-lg);font-family:var(--font-display);font-size:clamp(3.5rem,15vw,6rem);font-weight:400;line-height:.9}.asset-loader__pixels{display:grid;grid-template-columns:repeat(16,minmax(0,1fr));gap:var(--space-3xs);width:100%}.asset-loader__pixels span{aspect-ratio:1;background:var(--color-paper-3);clip-path:polygon(0 0,100% 0,100% 70%,70% 70%,70% 100%,0 100%)}.asset-loader__pixels span.is-filled{background:var(--color-accent)}.asset-loader__pixels span.is-current{animation:asset-loader-pulse .65s steps(2,end) infinite alternate}.asset-loader__meta{display:flex;align-items:center;justify-content:space-between;margin-block-start:var(--space-sm);color:var(--color-ink-2);font-family:var(--font-display);font-size:var(--text-base)}.asset-loader__meta button{min-width:3rem;min-height:2.75rem;padding:0 var(--space-2xs);border:0;color:var(--color-ink-2);background:none;font-family:inherit;font-size:inherit}.asset-loader__meta button:hover,.asset-loader__meta button:focus-visible{color:var(--color-ink)}@keyframes asset-loader-pulse{to{opacity:.4}}@media(prefers-reduced-motion:reduce){.asset-loader{transition:none}.asset-loader__pixels span.is-current{animation:none}}.experience-timeline{min-width:0}.experience-timeline__header{display:flex;flex-direction:column;gap:var(--space-lg);margin-block-end:var(--space-xl)}.experience-timeline__header h2{min-width:0;max-width:22ch;margin:0;overflow-wrap:anywhere;font-family:var(--font-display);font-size:clamp(var(--text-xl),7.3vw,var(--text-2xl));font-weight:400;line-height:1.1;letter-spacing:0;text-wrap:balance}.experience-timeline__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.experience-timeline__resume{display:inline-flex;min-height:2.75rem;align-items:center;gap:var(--space-2xs);padding-inline:var(--space-xs);color:var(--color-ink-2);font-size:var(--text-sm);white-space:nowrap;transition:color var(--dur-micro) var(--ease-out),transform var(--dur-micro) var(--ease-out)}.experience-view-toggle{display:inline-grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:var(--space-3xs);border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-pill);background:var(--color-paper)}.experience-view-toggle button{min-width:4.75rem;min-height:2.5rem;padding-inline:var(--space-sm);border:0;border-radius:var(--radius-pill);color:var(--color-ink-3);background:transparent;font:inherit;font-size:var(--text-sm);white-space:nowrap;transition:color var(--dur-short) var(--ease-out),background-color var(--dur-short) var(--ease-out),transform var(--dur-micro) var(--ease-out)}.experience-view-toggle button:hover{color:var(--color-ink)}.experience-view-toggle button[data-state=active]{color:var(--color-paper);background:var(--color-ink)}.experience-view-toggle button:focus-visible,.experience-timeline__resume:focus-visible,.experience-timeline__entry:focus-visible,.experience-timeline__list-button:focus-visible,.experience-timeline__list-link:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.experience-view-toggle button:active,.experience-timeline__resume:active,.experience-timeline__entry:active,.experience-timeline__list-button:active,.experience-timeline__list-link:active{transform:translateY(1px)}.experience-view-toggle button[aria-disabled=true],.experience-view-toggle button:disabled,.experience-timeline__resume[aria-disabled=true],.experience-timeline__entry[aria-disabled=true],.experience-timeline__list-button[aria-disabled=true],.experience-timeline__list-button:disabled,.experience-timeline__list-link[aria-disabled=true]{pointer-events:none;cursor:not-allowed;opacity:.45}.experience-view-toggle button[data-state=loading]{color:var(--color-ink-2);background:var(--color-paper-3)}.experience-view-toggle button[data-state=error]{outline:var(--rule-hair) dashed var(--color-focus)}.experience-view-toggle button[data-state=success]{color:var(--color-paper);background:var(--color-positive)}.experience-timeline__chart{min-width:0;--timeline-label-width: 13.5rem}.experience-timeline__axis,.experience-timeline__entry{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-xs)}.experience-timeline__axis{margin-block-end:var(--space-md)}.experience-timeline__axis-spacer{display:none}.experience-timeline__axis-years{display:grid;grid-template-columns:repeat(var(--timeline-years),minmax(0,1fr));min-width:0}.experience-timeline__axis-years span{color:var(--color-ink-3);font-family:var(--font-body);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.experience-timeline__lanes{display:grid;gap:var(--space-sm);margin:0;padding:0;list-style:none}.experience-timeline__lane{min-width:0}.experience-timeline__entry{min-width:0;align-items:center;padding-block:var(--space-xs);color:var(--color-ink);text-decoration:none;transition:transform var(--dur-micro) var(--ease-out)}.experience-timeline__entry-identity{display:flex;min-width:0;align-items:center;gap:var(--space-xs)}.experience-timeline__logo{width:2.75rem;height:2.75rem;flex:none;object-fit:cover;border-radius:var(--radius-input);background:var(--color-paper)}.experience-timeline__entry-copy{display:grid;min-width:0;gap:var(--space-3xs)}.experience-timeline__entry-copy strong,.experience-timeline__entry-copy>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.experience-timeline__entry-copy strong{font-family:var(--font-display);font-size:var(--text-md);font-weight:400;line-height:1.1}.experience-timeline__entry-copy>span{color:var(--color-ink-2);font-size:var(--text-xs)}.experience-timeline__entry-plot{display:grid;min-width:0;gap:var(--space-2xs)}.experience-timeline__entry-date{color:var(--color-ink-2);font-family:var(--font-body);font-size:var(--text-xs);font-variant-numeric:tabular-nums;text-align:end}.experience-timeline__track{position:relative;display:block;height:1.75rem;min-width:0;background-image:linear-gradient(to right,var(--color-rule-soft) 1px,transparent 1px);background-size:calc(100% / var(--timeline-years)) 100%}.experience-timeline__track:after{position:absolute;inset-block-end:0;inset-inline:0;height:var(--rule-hair);background:var(--color-rule-soft);content:""}.experience-timeline__overlap-band{position:absolute;inset-block:0;inset-inline-start:var(--timeline-overlap-start);width:var(--timeline-overlap-length);background:color-mix(in oklch,var(--color-focus) 14%,transparent)}.experience-timeline__bar{position:absolute;z-index:var(--z-raised);inset-block-start:50%;inset-inline-start:var(--timeline-start);display:block;width:var(--timeline-length);height:1rem;background:var(--color-ink-3);box-shadow:3px 3px color-mix(in oklch,var(--color-shadow) 45%,transparent);transform:translateY(-50%);transition:height var(--dur-short) var(--ease-out),filter var(--dur-short) var(--ease-out)}.experience-timeline__bar:before,.experience-timeline__bar:after{position:absolute;width:4px;height:4px;background:inherit;content:""}.experience-timeline__bar:before{inset-block-start:-4px;inset-inline-start:0}.experience-timeline__bar:after{inset-block-end:-4px;inset-inline-end:0}.experience-timeline__bar[data-company=lifestack]{background:var(--color-focus)}.experience-timeline__bar[data-company=ellenox]{background:color-mix(in oklch,var(--color-focus) 52%,var(--color-ink-2))}.experience-timeline__part-time{position:absolute;inset-block:0;inset-inline-start:0;width:var(--timeline-part-time);border-inline-end:2px solid var(--color-paper);background:repeating-linear-gradient(90deg,color-mix(in oklch,var(--color-paper) 60%,transparent) 0 3px,transparent 3px 7px)}.experience-timeline__entry:hover .experience-timeline__bar,.experience-timeline__entry:focus-visible .experience-timeline__bar{height:1.25rem;filter:brightness(1.15)}.experience-timeline__overlap-note{display:flex;align-items:flex-start;gap:var(--space-xs);margin:var(--space-lg) 0 0;color:var(--color-ink-2);font-size:var(--text-sm);line-height:1.5}.experience-timeline__overlap-note>span{width:.75rem;height:.75rem;flex:none;margin-block-start:.25em;background:color-mix(in oklch,var(--color-focus) 45%,var(--color-paper));box-shadow:3px 3px 0 var(--color-paper-3)}.experience-timeline__list{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:0;margin:0;padding:0;list-style:none}.experience-timeline__list:before{position:absolute;inset-block:1.375rem;inset-inline-start:1.25rem;width:var(--space-3xs);background:repeating-linear-gradient(to bottom,var(--color-rule) 0 var(--space-3xs),transparent var(--space-3xs) var(--space-xs));content:""}.experience-timeline__list-item{position:relative;min-width:0}.experience-timeline__list-button{position:relative;z-index:var(--z-base);display:grid;grid-template-columns:2.75rem minmax(0,1fr) auto;align-items:center;gap:var(--space-sm);width:100%;min-height:5rem;padding:var(--space-sm) 0;border:0;color:var(--color-ink);background:transparent;font:inherit;text-align:start;cursor:pointer;transition:color var(--dur-short) var(--ease-out),transform var(--dur-short) var(--ease-out)}.experience-timeline__list-toggle{display:grid;grid-column:3;grid-row:1 / 3;width:2rem;height:2rem;place-items:center;justify-self:end;border:var(--rule-hair) solid var(--color-rule);color:var(--color-ink-2);background:var(--color-paper-3);font-family:var(--font-display);font-size:var(--text-xl);line-height:1;clip-path:polygon(0 0,100% 0,100% 75%,75% 75%,75% 100%,0 100%);transition:color var(--dur-short) var(--ease-out),background-color var(--dur-short) var(--ease-out)}.experience-timeline__list-toggle:before{content:"+"}.experience-timeline__list-item[data-state=open] .experience-timeline__list-toggle{border-color:var(--color-accent);color:var(--color-accent-ink);background:var(--color-accent)}.experience-timeline__list-item[data-state=open] .experience-timeline__list-toggle:before{content:"−"}@media(hover:hover)and (pointer:fine){.experience-timeline__list-button:hover .experience-timeline__list-toggle{background:var(--color-accent-soft)}.experience-timeline__list-item[data-state=open] .experience-timeline__list-button:hover .experience-timeline__list-toggle{background:var(--color-accent)}}.experience-timeline__list-logo{position:relative;z-index:var(--z-raised);display:grid;width:2.75rem;height:2.75rem;place-items:center;background:var(--color-paper);box-shadow:var(--space-3xs) var(--space-3xs) 0 var(--color-rule-soft);transition:box-shadow var(--dur-short) var(--ease-out)}.experience-timeline__list-item[data-state=open] .experience-timeline__list-logo{box-shadow:var(--space-3xs) var(--space-3xs) 0 var(--color-accent)}.experience-timeline__list-logo .experience-timeline__logo{border-radius:0;clip-path:polygon(0 0,100% 0,100% 82%,82% 82%,82% 100%,0 100%)}.experience-timeline__list-logo[data-current=true]:after{position:absolute;inset-block-start:-.18rem;inset-inline-end:-.18rem;width:var(--space-2xs);height:var(--space-2xs);border:var(--rule-hair) solid var(--color-paper-2);background:var(--color-positive);content:""}.experience-timeline__list-copy{display:flex;min-width:0;flex-direction:column;gap:var(--space-3xs)}.experience-timeline__list-copy strong,.experience-timeline__list-copy span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.experience-timeline__list-copy strong{font-family:var(--font-display);font-size:var(--text-lg);font-weight:400;line-height:1.1}.experience-timeline__list-copy span{color:var(--color-ink-2);font-size:var(--text-sm)}.experience-timeline__list-date{grid-column:2 / 3;color:var(--color-ink-3);font-family:var(--font-body);font-size:var(--text-sm);font-variant-numeric:tabular-nums;white-space:nowrap}.experience-timeline__list-panel{display:grid;grid-template-rows:0fr;max-width:48rem;margin:calc(var(--space-3xs) * -1) 0 0 calc(2.75rem + var(--space-sm));color:var(--color-ink-2);opacity:0;filter:blur(.18rem);pointer-events:none;transform:translate3d(0,calc(var(--space-2xs) * -1),0);transition:grid-template-rows var(--dur-long) var(--ease-out),opacity var(--dur-short) var(--ease-out),filter var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out)}.experience-timeline__list-panel[data-state=open]{grid-template-rows:1fr;opacity:1;filter:blur(0);pointer-events:auto;transform:translateZ(0)}.experience-timeline__list-panel-inner{min-height:0;overflow:hidden;padding-block-end:0;transform:translate3d(0,calc(var(--space-2xs) * -1),0);transition:transform var(--dur-med) var(--ease-out)}.experience-timeline__list-panel[data-state=open] .experience-timeline__list-panel-inner{padding-block-end:var(--space-md);transform:translateZ(0)}.experience-timeline__list-panel p,.experience-timeline__list-panel li,.experience-timeline__list-link{opacity:0;transform:translate3d(0,var(--space-2xs),0);transition:opacity var(--dur-short) var(--ease-out),transform var(--dur-med) var(--ease-out)}.experience-timeline__list-panel[data-state=open] p,.experience-timeline__list-panel[data-state=open] li,.experience-timeline__list-panel[data-state=open] .experience-timeline__list-link{opacity:1;transform:translateZ(0)}.experience-timeline__list-panel[data-state=open] p{transition-delay:90ms}.experience-timeline__list-panel[data-state=open] li:nth-child(1){transition-delay:.13s}.experience-timeline__list-panel[data-state=open] li:nth-child(2){transition-delay:165ms}.experience-timeline__list-panel[data-state=open] li:nth-child(3){transition-delay:.2s}.experience-timeline__list-panel[data-state=open] .experience-timeline__list-link{transition-delay:.23s}.experience-timeline__list-panel p{max-width:66ch;margin:0;line-height:1.65}.experience-timeline__list-panel .experience-timeline__list-overlap{margin-block-start:var(--space-xs);color:var(--color-ink-3);font-size:var(--text-sm)}.experience-timeline__list-panel ul{display:grid;gap:var(--space-2xs);margin:var(--space-sm) 0 0;padding:0;list-style:none}.experience-timeline__list-panel li{position:relative;min-width:0;padding-inline-start:var(--space-md);line-height:1.55}.experience-timeline__list-panel li:before{position:absolute;inset-block-start:.55em;inset-inline-start:0;width:var(--space-2xs);height:var(--space-2xs);background:var(--color-focus);box-shadow:var(--space-3xs) var(--space-3xs) 0 var(--color-accent-soft);content:""}.experience-timeline__list-link{display:inline-flex;align-items:center;gap:var(--space-2xs);min-height:2.75rem;margin-block-start:var(--space-sm);color:var(--color-ink);font-family:var(--font-display);font-size:var(--text-base);font-weight:400;white-space:nowrap;transition:color var(--dur-short) var(--ease-out),transform var(--dur-micro) var(--ease-out)}.experience-timeline__list-link svg{color:var(--color-ink-3);transition:transform var(--dur-micro) var(--ease-out)}.experience-timeline__list-link:hover svg,.experience-timeline__list-link:focus-visible svg{transform:translate(2px,-2px)}@media(max-width:47.999rem){.experience-timeline__header{gap:var(--space-sm);margin-block-end:var(--space-sm)}.experience-timeline__actions{justify-content:space-between;gap:var(--space-xs)}.experience-view-toggle{order:-1}.experience-timeline__resume{padding-inline:0}}@media(min-width:40rem){.experience-timeline__axis,.experience-timeline__entry{grid-template-columns:minmax(0,var(--timeline-label-width)) minmax(0,1fr);gap:var(--space-md)}.experience-timeline__axis-spacer{display:block}.experience-timeline__overlap-note{margin-inline-start:calc(var(--timeline-label-width) + var(--space-md))}}@media(min-width:48rem){.experience-timeline__header{flex-direction:row;align-items:flex-end;justify-content:space-between}.experience-timeline__actions{justify-content:flex-end}.experience-timeline__list-button{grid-template-columns:2.75rem minmax(0,1fr) max-content 2rem}.experience-timeline__list-date{grid-column:auto;justify-self:end;text-align:end}.experience-timeline__list-toggle{grid-column:4;grid-row:1}}@media(min-width:60rem){.experience-timeline__header h2{white-space:nowrap}}@media(pointer:coarse){.experience-view-toggle button,.experience-timeline__resume,.experience-timeline__list-button,.experience-timeline__list-link{min-height:3rem}}@media(prefers-reduced-motion:reduce){.experience-view-toggle button,.experience-timeline__resume,.experience-timeline__entry,.experience-timeline__bar,.experience-timeline__list-button,.experience-timeline__list-logo,.experience-timeline__list-panel,.experience-timeline__list-panel-inner,.experience-timeline__list-panel p,.experience-timeline__list-panel li,.experience-timeline__list-link,.experience-timeline__list-link svg{transition-duration:.01ms;transition-delay:0ms}}@property --reveal-radius{syntax: "<length>"; inherits: true; initial-value: 0px;}@property --reveal-x{syntax: "<length>"; inherits: true; initial-value: 165.5px;}@property --reveal-y{syntax: "<length>"; inherits: true; initial-value: 209px;}@property --reveal-texture-opacity{syntax: "<number>"; inherits: true; initial-value: 0;}.identity-marquee{container-type:inline-size;position:relative;isolation:isolate;width:min(100%,62rem);min-height:clamp(24rem,78cqi,35rem);overflow:visible;--cursor-far-x: 0rem;--cursor-far-y: 0rem;--cursor-mid-x: 0rem;--cursor-mid-y: 0rem;--cursor-near-x: 0rem;--cursor-near-y: 0rem;--cursor-away-x: 0rem;--cursor-away-y: 0rem}.identity-marquee__headline{position:absolute;inset:var(--space-lg) 0 0;z-index:4;min-width:0;margin:0;font-family:var(--font-display);font-size:clamp(3.25rem,11cqi,7rem);font-weight:400;line-height:.9;letter-spacing:0;pointer-events:none}.identity-marquee__name{position:absolute;display:grid;min-width:0;min-height:clamp(6.5rem,16cqi,10rem);place-items:center;padding:var(--space-sm) clamp(var(--space-md),4cqi,var(--space-xl));overflow-wrap:anywhere;border:var(--rule-hair) solid var(--color-rule);box-shadow:0 var(--space-md) var(--space-xl) color-mix(in oklch,var(--color-shadow) 64%,transparent),inset 0 0 0 var(--rule-hair) color-mix(in oklch,var(--color-ink) 8%,transparent);text-align:center;--cursor-offset-x: 0rem;--cursor-offset-y: 0rem;--name-base-transform: rotate(0deg);--name-wave-x: .18rem;--name-wave-y: .32rem;--name-float-duration: 8.5s;--name-enter-delay: 0ms;--name-enter-x: 0rem;--name-enter-y: 5rem;opacity:0;scale:.97;transform:translate3d(var(--cursor-offset-x),var(--cursor-offset-y),0) var(--name-base-transform);animation:identity-name-in .88s cubic-bezier(.18,.92,.18,1) var(--name-enter-delay) both,identity-name-float var(--name-float-duration) var(--ease-in-out) calc(var(--name-enter-delay) + .88s) infinite;transition:transform .22s var(--ease-out);will-change:opacity,scale,transform,translate,filter}.identity-marquee__name--first{inset-block-start:16%;inset-inline-start:7%;z-index:3;width:58%;color:var(--color-paper);background:linear-gradient(115deg,color-mix(in oklch,var(--color-ink) 96%,var(--color-accent) 4%),var(--color-ink));border-radius:var(--radius-input) var(--radius-card) var(--radius-input) var(--radius-card);--cursor-offset-x: var(--cursor-far-x);--cursor-offset-y: var(--cursor-far-y);--name-base-transform: rotate(-3deg);--name-wave-x: -.16rem;--name-wave-y: .28rem;--name-float-duration: 9.6s;--name-enter-delay: .12s;--name-enter-x: -.8rem;--name-enter-y: 5.25rem}.identity-marquee__name--last{inset-block-start:49%;inset-inline-end:5%;z-index:5;width:74%;color:var(--color-ink);background:linear-gradient(98deg,var(--color-accent-soft),color-mix(in oklch,var(--color-accent-soft) 72%,var(--color-positive)));border-color:color-mix(in oklch,var(--color-accent) 78%,var(--color-rule));border-radius:var(--radius-card) var(--radius-input) var(--radius-card) var(--radius-input);--cursor-offset-x: var(--cursor-mid-x);--cursor-offset-y: var(--cursor-mid-y);--name-base-transform: rotate(2deg);--name-wave-x: .22rem;--name-wave-y: -.3rem;--name-float-duration: 8.8s;--name-enter-delay: .32s;--name-enter-x: .7rem;--name-enter-y: 5.75rem}.identity-marquee__loop{position:absolute;z-index:2;width:8rem;height:12rem;border:calc(var(--rule-hair) * 14) solid color-mix(in oklch,var(--color-positive) 34%,var(--color-ink));border-radius:var(--radius-pill);pointer-events:none}.identity-marquee__loop,.identity-marquee__portrait{--base-transform: rotate(0deg);--enter-delay: 0ms;--enter-x: 0rem;--enter-y: var(--space-md);--float-duration: 8s;--float-opacity: .82;--parallax-x: 0rem;--parallax-y: -2rem;--wave-x: .35rem;--wave-y: .7rem;--cursor-offset-x: 0rem;--cursor-offset-y: 0rem;opacity:0;transform:translate3d(var(--cursor-offset-x),var(--cursor-offset-y),0) var(--base-transform);animation:identity-float-in .88s cubic-bezier(.18,.92,.18,1) var(--enter-delay) both,identity-float-wave var(--float-duration) var(--ease-in-out) calc(var(--enter-delay) + .88s) infinite;transition:transform .22s var(--ease-out);will-change:opacity,scale,transform,translate,filter}.identity-marquee__loop:after{position:absolute;inset:30%;border:calc(var(--rule-hair) * 12) solid var(--color-paper);border-radius:inherit;content:""}.identity-marquee__loop--left{inset-block-start:23%;inset-inline-start:3%;--base-transform: rotate(17deg);--enter-delay: 40ms;--enter-x: -.8rem;--enter-y: 1.1rem;--float-duration: 9.4s;--float-opacity: .42;--parallax-x: -1.4rem;--parallax-y: -3.5rem;--wave-x: .38rem;--wave-y: .82rem;--cursor-offset-x: var(--cursor-away-x);--cursor-offset-y: var(--cursor-away-y)}.identity-marquee__portrait{position:absolute;inset-block-start:9%;inset-inline-end:3%;z-index:3;display:block;width:min(244px,28cqi);aspect-ratio:331 / 418;overflow:hidden;border:var(--rule-hair) solid color-mix(in oklch,var(--color-ink) 18%,transparent);border-radius:clamp(1.4rem,3cqi,2rem);background:linear-gradient(145deg,color-mix(in oklch,var(--color-paper) 92%,var(--color-accent)),color-mix(in oklch,var(--color-positive) 24%,var(--color-paper)));box-shadow:0 var(--space-md) calc(var(--space-xl) * 1.2) color-mix(in oklch,var(--color-shadow) 46%,transparent),inset 0 0 0 var(--rule-hair) color-mix(in oklch,var(--color-paper) 50%,transparent);--base-transform: rotate(8deg);--enter-delay: .52s;--enter-x: .9rem;--enter-y: -.3rem;--float-duration: 8.8s;--float-opacity: 1;--parallax-x: 1.1rem;--parallax-y: -3.1rem;--wave-x: .28rem;--wave-y: .48rem;--cursor-offset-x: var(--cursor-near-x);--cursor-offset-y: var(--cursor-near-y);--reveal-x: 165.5px;--reveal-y: 209px;--reveal-radius: 0px;--reveal-texture-opacity: 0;cursor:crosshair;touch-action:none;transition:transform .22s var(--ease-out),--reveal-x .18s linear,--reveal-y .18s linear,--reveal-radius 1.68s cubic-bezier(.22,.68,.15,1),--reveal-texture-opacity .86s var(--ease-out)}.identity-marquee__portrait:before{position:absolute;inset:0;z-index:3;pointer-events:none;background:repeating-conic-gradient(from 45deg,color-mix(in oklch,var(--color-paper) 58%,transparent) 0 25%,transparent 0 50%) 0 0 / 10px 10px,radial-gradient(circle at var(--reveal-x) var(--reveal-y),color-mix(in oklch,var(--color-accent) 34%,transparent),transparent 68%);mix-blend-mode:screen;opacity:var(--reveal-texture-opacity);-webkit-mask-image:radial-gradient(circle at var(--reveal-x) var(--reveal-y),transparent 0 calc(var(--reveal-radius) * .34),rgb(0 0 0 / .16) calc(var(--reveal-radius) * .48),#000 calc(var(--reveal-radius) * .68),rgb(0 0 0 / .32) calc(var(--reveal-radius) * .86),transparent var(--reveal-radius));mask-image:radial-gradient(circle at var(--reveal-x) var(--reveal-y),transparent 0 calc(var(--reveal-radius) * .34),rgb(0 0 0 / .16) calc(var(--reveal-radius) * .48),#000 calc(var(--reveal-radius) * .68),rgb(0 0 0 / .32) calc(var(--reveal-radius) * .86),transparent var(--reveal-radius));transition:opacity .86s var(--ease-out),--reveal-x .18s linear,--reveal-y .18s linear,--reveal-radius 1.68s cubic-bezier(.22,.68,.15,1)}.identity-marquee__portrait:after{position:absolute;inset:var(--space-xs);z-index:4;pointer-events:none;border:var(--rule-hair) solid color-mix(in oklch,var(--color-paper) 48%,transparent);border-radius:calc(clamp(1.4rem,3cqi,2rem) - var(--space-xs));content:""}.identity-marquee__portrait-img{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;object-fit:cover;object-position:center;-webkit-user-select:none;user-select:none}.identity-marquee__portrait-img--normal{z-index:1;filter:saturate(.96) contrast(1.04)}.identity-marquee__portrait-img--pixel{z-index:2;-webkit-mask-image:radial-gradient(circle at var(--reveal-x) var(--reveal-y),transparent 0 calc(var(--reveal-radius) * .34),rgb(0 0 0 / .04) calc(var(--reveal-radius) * .48),rgb(0 0 0 / .12) calc(var(--reveal-radius) * .61),rgb(0 0 0 / .28) calc(var(--reveal-radius) * .74),rgb(0 0 0 / .55) calc(var(--reveal-radius) * .88),#000 var(--reveal-radius));mask-image:radial-gradient(circle at var(--reveal-x) var(--reveal-y),transparent 0 calc(var(--reveal-radius) * .34),rgb(0 0 0 / .04) calc(var(--reveal-radius) * .48),rgb(0 0 0 / .12) calc(var(--reveal-radius) * .61),rgb(0 0 0 / .28) calc(var(--reveal-radius) * .74),rgb(0 0 0 / .55) calc(var(--reveal-radius) * .88),#000 var(--reveal-radius))}.identity-marquee__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes identity-settle{0%{opacity:0;transform:translateY(var(--space-sm))}to{opacity:1;transform:translateY(0)}}@keyframes identity-float-in{0%{opacity:0;filter:blur(8px);scale:.96;translate:var(--enter-x) calc(var(--enter-y) + 5rem)}64%{opacity:var(--float-opacity);filter:blur(2px);scale:.995;translate:0 .34rem}to{opacity:var(--float-opacity);filter:blur(0);scale:1;translate:0 0}}@keyframes identity-float-wave{0%,to{translate:0 0}28%{translate:var(--wave-x) calc(var(--wave-y) * -1)}58%{translate:calc(var(--wave-x) * -1) var(--wave-y)}78%{translate:calc(var(--wave-x) * .55) calc(var(--wave-y) * .35)}}@keyframes identity-name-in{0%{opacity:0;filter:blur(8px);scale:.96;translate:var(--name-enter-x) var(--name-enter-y)}64%{opacity:1;filter:blur(2px);scale:.995;translate:0 .3rem}to{opacity:1;filter:blur(0);scale:1;translate:0 0}}@keyframes identity-name-float{0%,to{translate:0 0}30%{translate:var(--name-wave-x) calc(var(--name-wave-y) * -1)}62%{translate:calc(var(--name-wave-x) * -1) var(--name-wave-y)}82%{translate:calc(var(--name-wave-x) * .45) calc(var(--name-wave-y) * .35)}}@keyframes identity-parallax{0%{transform:translate3d(var(--cursor-offset-x),var(--cursor-offset-y),0) var(--base-transform)}to{transform:translate3d(calc(var(--parallax-x) + var(--cursor-offset-x)),calc(var(--parallax-y) + var(--cursor-offset-y)),0) var(--base-transform)}}@supports (animation-timeline: scroll()){.identity-marquee__loop,.identity-marquee__portrait{animation-name:identity-float-in,identity-float-wave,identity-parallax;animation-duration:.88s,var(--float-duration),1ms;animation-timing-function:cubic-bezier(.18,.92,.18,1),var(--ease-in-out),linear;animation-delay:var(--enter-delay),calc(var(--enter-delay) + .88s),0s;animation-iteration-count:1,infinite,1;animation-fill-mode:both,both,both;animation-timeline:auto,auto,scroll(root block);animation-range:normal,normal,0 100svh}}@media(max-width:39.999rem){.identity-marquee{min-height:27rem}.identity-marquee__headline{inset-block-start:var(--space-xl);z-index:auto;font-size:clamp(2.95rem,18cqi,4.35rem)}.identity-marquee__name{min-height:7.25rem;padding-inline:var(--space-sm)}.identity-marquee__name--first{inset-block-start:8%;inset-inline-start:4%;width:80%}.identity-marquee__name--last{inset-block-start:43%;inset-inline-end:2%;width:94%;font-size:clamp(2.1rem,10cqi,3.6rem);overflow-wrap:normal;white-space:nowrap}.identity-marquee__loop{width:5rem;height:7.5rem;border-width:calc(var(--rule-hair) * 9)}.identity-marquee__loop:after{border-width:calc(var(--rule-hair) * 8)}.identity-marquee__loop--left{inset-block-start:21%;inset-inline-start:-3%}.identity-marquee__portrait{display:none}}@media(prefers-reduced-motion:reduce){.identity-marquee__headline{animation:portfolio-fade-in .12s linear both}.identity-marquee__name{animation:none;opacity:1;scale:1;filter:none;translate:0 0;transform:var(--name-base-transform)}.identity-marquee__loop,.identity-marquee__portrait{animation:none;opacity:var(--float-opacity);scale:1;translate:0 0;transform:var(--base-transform)}.identity-marquee__portrait{transition:transform 0ms linear,--reveal-x 0ms linear,--reveal-y 0ms linear,--reveal-radius 0ms linear,--reveal-texture-opacity 0ms linear}.identity-marquee__portrait:before{display:none}}.portfolio-schedule{padding-block:var(--space-xl) var(--space-2xl);color:var(--color-ink);background:transparent}.schedule-card{display:grid;grid-template-columns:minmax(0,1fr);align-items:center;gap:var(--space-xl);padding-block:var(--space-lg)}.schedule-card__copy{display:flex;min-width:0;flex-direction:column;align-items:flex-start}.schedule-card__copy h2{min-width:0;margin:0;overflow-wrap:anywhere;font-family:var(--font-display);font-size:clamp(3.25rem,11vw,5.5rem);font-weight:400;line-height:1.04;letter-spacing:-.035em}.schedule-card__copy>p{max-width:52ch;margin:var(--space-md) 0 0;color:var(--color-ink-2);font-size:var(--text-md);line-height:1.6}.schedule-card__actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm) var(--space-lg);margin-block-start:var(--space-lg)}.schedule-card__cta{display:inline-flex;min-height:3.25rem;align-items:center;justify-content:center;padding-inline:var(--space-md);border:var(--rule-hair) solid var(--color-ink);border-radius:var(--space-3xs);color:var(--color-paper);background:var(--color-ink);box-shadow:var(--space-3xs) var(--space-3xs) 0 var(--color-accent);font-family:var(--font-display);font-size:var(--text-lg);line-height:1;white-space:nowrap;transition:transform var(--dur-micro) var(--ease-out)}@media(hover:hover)and (pointer:fine){.schedule-card__cta:hover,.schedule-card__cta.is-hover{transform:translateY(-2px)}}.schedule-card__cta:focus-visible,.schedule-card__cta.is-focus{outline:2px solid var(--color-focus);outline-offset:5px}.schedule-card__cta:active,.schedule-card__cta.is-active{transform:translateY(1px)}.schedule-card__cta[aria-disabled=true],.schedule-card__cta.is-disabled{pointer-events:none;cursor:not-allowed;opacity:.5}.schedule-card__cta[data-state=loading]{cursor:wait;opacity:.72}.schedule-card__cta[data-state=error]{border-style:dashed;border-color:var(--color-focus)}.schedule-card__cta[data-state=success]{box-shadow:var(--space-3xs) var(--space-3xs) 0 var(--color-positive)}.schedule-card__ticket{position:relative;display:flex;width:min(100%,13rem);aspect-ratio:1;flex-direction:column;justify-content:space-between;justify-self:end;min-width:0;padding:var(--space-md);color:var(--color-paper);background:var(--color-ink);clip-path:polygon(0 var(--space-sm),var(--space-sm) var(--space-sm),var(--space-sm) 0,calc(100% - var(--space-sm)) 0,calc(100% - var(--space-sm)) var(--space-sm),100% var(--space-sm),100% calc(100% - var(--space-sm)),calc(100% - var(--space-sm)) calc(100% - var(--space-sm)),calc(100% - var(--space-sm)) 100%,var(--space-sm) 100%,var(--space-sm) calc(100% - var(--space-sm)),0 calc(100% - var(--space-sm)));transform:rotate(4deg)}.schedule-card__ticket:before{position:absolute;inset-block-start:var(--space-md);inset-inline-end:var(--space-md);width:var(--space-2xs);height:var(--space-2xs);background:var(--color-accent);box-shadow:calc(var(--space-xs) * -1) 0 0 var(--color-accent);content:""}.schedule-card__ticket-top{padding-inline-end:var(--space-xl);font-family:var(--font-display);font-size:var(--text-lg);line-height:1}.schedule-card__ticket strong{display:flex;align-items:baseline;gap:var(--space-2xs);font-family:var(--font-display);font-size:clamp(5.5rem,15vw,7rem);font-weight:400;line-height:.85;font-variant-numeric:tabular-nums}.schedule-card__ticket strong span{font-size:var(--text-xl)}@media(min-width:60rem){.schedule-card{grid-template-columns:minmax(0,1fr) minmax(0,17rem);gap:var(--space-2xl);padding-block:var(--space-xl)}.schedule-card__ticket{width:17rem;padding:var(--space-lg)}.schedule-card__ticket:before{inset-block-start:var(--space-lg);inset-inline-end:var(--space-lg)}}@media(prefers-reduced-motion:reduce){.schedule-card__cta{transition-duration:0ms}}.portfolio-testimonials{contain-intrinsic-size:auto 64rem;padding-block:var(--space-3xl) var(--space-3xl);overflow:clip;color:var(--color-ink);background:transparent}.testimonial-rail__filters{position:absolute;width:0;height:0;overflow:hidden}.testimonial-rail__heading{display:grid;justify-items:center;gap:var(--space-sm);margin-block-end:var(--space-2xl);text-align:center}.testimonial-rail__heading>p{margin:0;color:var(--color-ink-2);font-family:var(--font-body);font-size:var(--text-base)}.testimonial-rail__heading h2{display:flex;max-width:100%;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--space-sm);margin:0;font-family:var(--font-display);font-size:clamp(2.5rem,5vw,4.5rem);font-weight:400;line-height:1.05;letter-spacing:-.035em;text-wrap:balance;overflow-wrap:anywhere}.testimonial-rail__title-accent{display:inline-block;padding:var(--space-2xs) var(--space-xs) var(--space-3xs);color:var(--color-ink);background:var(--color-accent-soft);box-shadow:var(--space-2xs) var(--space-2xs) 0 var(--color-accent)}.testimonial-rail__spark{display:inline-block;width:1.1rem;height:1.1rem;flex:0 0 auto;background:var(--color-accent);clip-path:polygon(50% 100%,0 36%,27% 0,50% 25%,73% 0,100% 36%)}.testimonial-rail{position:relative;min-width:0}.testimonial-rail__viewport{position:relative;width:100%;height:38rem}.testimonial-rail__track{position:relative;width:100%;height:100%}.portfolio-testimonials .testimonial-card{--card-x: -32rem;--card-y: var(--space-2xl);--card-rotation: -16deg;--card-scale: .8;--card-opacity: 0;--card-z: 1;position:absolute;inset-block-start:0;inset-inline-start:50%;display:flex;width:clamp(19rem,34vw,21.5rem);height:37rem;flex-direction:column;align-items:center;padding:var(--space-lg) var(--space-lg) 0;gap:0;border:0;border-radius:0;color:var(--color-ink);background:transparent;text-align:center;z-index:var(--card-z);opacity:var(--card-opacity);pointer-events:none;transform:translate3d(calc(-50% + var(--card-x)),var(--card-y),0) rotate(var(--card-rotation)) scale(var(--card-scale));transition:opacity var(--dur-long) var(--ease-out),transform var(--dur-long) var(--ease-out)}.testimonial-card:before,.testimonial-card:after{position:absolute;pointer-events:none;clip-path:polygon(0 0,100% 0,100% 82%,50% 100%,0 82%);content:""}.testimonial-card:before{inset:0 0 auto;height:26.5rem;background:var(--color-rule)}.testimonial-card:after{inset:var(--space-2xs) var(--space-2xs) auto;height:calc(26.5rem - var(--space-sm));background:var(--color-paper-2)}.testimonial-card[data-offset="0"]{--card-x: 0rem;--card-y: 0rem;--card-rotation: 0deg;--card-scale: 1;--card-opacity: 1;--card-z: 5;pointer-events:auto}.testimonial-card[data-offset="0"]:before{background:var(--color-accent)}.testimonial-card[data-offset="0"]:after{background:var(--color-paper-3)}.testimonial-card[data-offset="1"]{--card-x: clamp(17rem, 33vw, 25rem);--card-y: var(--space-2xl);--card-rotation: 10deg;--card-scale: .91;--card-opacity: .62;--card-z: 4}.testimonial-card[data-offset="2"]{--card-x: clamp(31rem, 63vw, 48rem);--card-y: var(--space-3xl);--card-rotation: 20deg;--card-scale: .8;--card-opacity: .23;--card-z: 3}.testimonial-card[data-offset="-1"]{--card-x: -32rem;--card-opacity: 0;--card-z: 2}.testimonial-card[data-offset="-2"]{--card-x: -40rem;--card-opacity: 0}.testimonial-card__quote-mark{position:relative;z-index:1;margin-block-end:var(--space-xs);color:var(--color-focus);fill:color-mix(in oklch,var(--color-focus) 30%,transparent)}.testimonial-card h3{position:relative;z-index:1;margin:0 0 var(--space-sm);font-family:var(--font-display);font-size:clamp(1.3rem,2.2vw,1.65rem);font-weight:400;line-height:1.13;text-transform:uppercase;text-wrap:balance}.testimonial-card blockquote{position:relative;z-index:1;margin:0}.testimonial-card blockquote:focus-visible{outline:2px solid var(--color-focus);outline-offset:4px}.testimonial-card blockquote p{margin:0;color:var(--color-ink-2);font-size:var(--text-base);line-height:1.45}.testimonial-card__person{position:absolute;inset-block-start:20.25rem;inset-inline:0;z-index:2;display:flex;flex-direction:column;align-items:center;gap:var(--space-xs)}.testimonial-card__portrait,.testimonial-card__portrait-img-fallback{width:13.5rem;height:13.5rem;object-fit:cover}.testimonial-card__portrait{position:relative;display:block;overflow:hidden;flex:0 0 13.5rem;background:transparent;-webkit-mask-image:radial-gradient(ellipse 62% 68% at 50% 50%,var(--color-ink) 48%,transparent 100%);mask-image:radial-gradient(ellipse 62% 68% at 50% 50%,var(--color-ink) 48%,transparent 100%)}.testimonial-card__portrait-img{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;object-fit:cover;object-position:center;-webkit-user-select:none;user-select:none}.testimonial-card__portrait[data-key-black=true] .testimonial-card__portrait-img{filter:url(#testimonial-key-black)}.testimonial-card__portrait-img-fallback{-webkit-mask-image:linear-gradient(to bottom,var(--color-ink) 74%,transparent);mask-image:linear-gradient(to bottom,var(--color-ink) 74%,transparent)}.testimonial-card__person div{display:grid;min-width:0;gap:var(--space-3xs);justify-items:center;text-align:center}.testimonial-card__person strong{font-family:var(--font-display);font-size:var(--text-xl);font-weight:400;line-height:1}.testimonial-card__person span{color:var(--color-ink-2);font-size:var(--text-sm);line-height:1.4}.testimonial-rail__controls{display:flex;align-items:center;justify-content:center;gap:var(--space-md);margin-block-start:var(--space-md)}.testimonial-rail__buttons{display:flex;gap:var(--space-xs)}.testimonial-rail__buttons button{display:grid;width:3.25rem;height:3.25rem;place-items:center;padding:0;border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-input);color:var(--color-paper);background:var(--color-ink);transition:transform var(--dur-micro) var(--ease-out),color var(--dur-short) var(--ease-out),background-color var(--dur-short) var(--ease-out)}.testimonial-rail__pixel-arrow{width:1.625rem;height:1.625rem}.testimonial-rail__pixel-arrow[data-direction=right]{transform:scaleX(-1)}.testimonial-rail__buttons button:hover,.testimonial-rail__buttons button.is-hover{color:var(--color-ink);background:var(--color-accent-soft);transform:translateY(-1px)}.testimonial-rail__buttons button:focus-visible,.testimonial-rail__buttons button.is-focus{outline:2px solid var(--color-focus);outline-offset:3px}.testimonial-rail__buttons button:active,.testimonial-rail__buttons button.is-active{transform:translateY(1px)}.testimonial-rail__buttons button:disabled,.testimonial-rail__buttons button[aria-disabled=true],.testimonial-rail__buttons button.is-disabled{cursor:not-allowed;opacity:.45}.testimonial-rail__buttons button[data-state=loading]{cursor:wait;opacity:.72}.testimonial-rail__buttons button[data-state=error]{border-style:dashed;border-color:var(--color-focus)}.testimonial-rail__buttons button[data-state=success]{color:var(--color-paper);background:var(--color-positive)}.testimonial-rail__status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:39.999rem){.portfolio-testimonials{padding-block:var(--space-2xl)}.testimonial-rail__heading{margin-block-end:var(--space-xl)}.testimonial-rail__heading h2{gap:var(--space-2xs);font-size:clamp(1.8rem,7vw,2.6rem)}.testimonial-rail__spark{width:.75rem;height:.75rem}.testimonial-card{width:min(calc(100% - var(--space-xs)),21.5rem);padding-inline:var(--space-md)}.testimonial-card[data-offset="1"],.testimonial-card[data-offset="2"]{--card-opacity: 0;--card-x: 22rem}}@media(pointer:coarse){.testimonial-rail__buttons button{width:3.25rem;height:3.25rem}}@media(prefers-reduced-motion:reduce){.testimonial-card,.testimonial-rail__buttons button{transition-duration:0ms}}:root{scroll-padding-top:calc(var(--space-3xl) + var(--space-md))}.portfolio-page{min-height:100svh;overflow-x:clip;color:var(--color-ink);background:var(--color-paper)}.portfolio-shell{width:min(100%,var(--measure-wide));margin-inline:auto;padding-inline:var(--gutter)}.site-nav{position:fixed;inset-block-start:max(var(--space-md),env(safe-area-inset-top));inset-inline:0;z-index:var(--z-sticky);display:flex;justify-content:center;padding-inline:var(--gutter);pointer-events:none;animation:portfolio-fade-in var(--dur-long) var(--ease-out) both}.site-nav__inner{--site-nav-pixel-cut: polygon( 0 var(--space-3xs), var(--space-3xs) var(--space-3xs), var(--space-3xs) 0, calc(100% - var(--space-3xs)) 0, calc(100% - var(--space-3xs)) var(--space-3xs), 100% var(--space-3xs), 100% calc(100% - var(--space-3xs)), calc(100% - var(--space-3xs)) calc(100% - var(--space-3xs)), calc(100% - var(--space-3xs)) 100%, var(--space-3xs) 100%, var(--space-3xs) calc(100% - var(--space-3xs)), 0 calc(100% - var(--space-3xs)) );position:relative;pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3xs);min-height:3rem;max-width:100%;padding:var(--space-2xs);background:color-mix(in oklch,var(--color-paper-3) 82%,transparent);box-shadow:inset 0 0 0 var(--rule-hair) color-mix(in oklch,var(--color-ink) 18%,transparent),inset 0 var(--rule-hair) 0 color-mix(in oklch,var(--color-ink) 12%,transparent);clip-path:polygon(0 var(--space-2xs),var(--space-3xs) var(--space-2xs),var(--space-3xs) var(--space-3xs),var(--space-2xs) var(--space-3xs),var(--space-2xs) 0,calc(100% - var(--space-2xs)) 0,calc(100% - var(--space-2xs)) var(--space-3xs),calc(100% - var(--space-3xs)) var(--space-3xs),calc(100% - var(--space-3xs)) var(--space-2xs),100% var(--space-2xs),100% calc(100% - var(--space-2xs)),calc(100% - var(--space-3xs)) calc(100% - var(--space-2xs)),calc(100% - var(--space-3xs)) calc(100% - var(--space-3xs)),calc(100% - var(--space-2xs)) calc(100% - var(--space-3xs)),calc(100% - var(--space-2xs)) 100%,var(--space-2xs) 100%,var(--space-2xs) calc(100% - var(--space-3xs)),var(--space-3xs) calc(100% - var(--space-3xs)),var(--space-3xs) calc(100% - var(--space-2xs)),0 calc(100% - var(--space-2xs)));backdrop-filter:blur(24px) saturate(120%);-webkit-backdrop-filter:blur(24px) saturate(120%)}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.site-nav__inner{background:color-mix(in oklch,var(--color-paper-3) 94%,transparent)}}.site-nav__mark,.site-nav__link{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:2.25rem;color:var(--color-ink-2);font-family:var(--font-display);font-weight:600;letter-spacing:0;white-space:nowrap}.site-nav__mark{isolation:isolate;width:2.25rem;flex:0 0 2.25rem;font-size:var(--text-lg);line-height:1;color:var(--color-paper)}.site-nav__mark:before{position:absolute;z-index:-1;inset:0;background:var(--color-ink);clip-path:var(--site-nav-pixel-cut);content:""}.site-nav__link{isolation:isolate;min-width:2.75rem;padding-inline:var(--space-xs);font-size:var(--text-base);line-height:1;transition:color var(--dur-micro) var(--ease-out),transform var(--dur-micro) var(--ease-out)}.site-nav__link:before{position:absolute;z-index:-1;inset:0;background:var(--color-accent-soft);clip-path:var(--site-nav-pixel-cut);opacity:0;transition:opacity var(--dur-short) var(--ease-out);content:""}.site-nav__link--about,.site-nav__link--resume{display:none}.site-nav__link:focus-visible{color:var(--color-ink)}.site-nav__link:focus-visible:before{opacity:1}@media(hover:hover)and (pointer:fine){.site-nav__link:hover{color:var(--color-ink)}.site-nav__link:hover:before{opacity:1}}.site-nav__mark:active,.site-nav__link:active{transform:translateY(1px)}.site-nav__mark:focus-visible,.site-nav__link:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.portfolio-hero{position:relative;display:grid;min-height:80svh;align-items:center;isolation:isolate;overflow:clip}.portfolio-hero__blob{position:absolute;z-index:0;inset:0;width:100%;height:100%;pointer-events:none;image-rendering:pixelated;transform:translate3d(var(--hero-blob-x, 0px),var(--hero-blob-y, 0px),0);transition:transform .85s var(--ease-out);animation:portfolio-blob-breathe 11s ease-in-out infinite alternate}@keyframes portfolio-blob-breathe{0%{opacity:.86}to{opacity:1}}.portfolio-hero__content{position:relative;z-index:1;display:flex;max-width:var(--measure-wide);flex-direction:column;align-items:center;gap:var(--space-md);padding-block:clamp(5.5rem,10svh,7rem) clamp(var(--space-lg),5svh,var(--space-2xl));text-align:center}.portfolio-hero__title{display:flex;min-width:0;max-width:11ch;flex-direction:column;margin:0;overflow-wrap:anywhere;font-family:var(--font-display);font-size:var(--text-display);font-weight:400;line-height:.92;letter-spacing:-.045em;text-wrap:balance;animation:portfolio-enter var(--dur-long) var(--ease-out) both}.portfolio-hero__title span:last-child{animation:portfolio-enter var(--dur-long) var(--ease-out) 70ms both}.portfolio-hero__intro{max-width:50ch;margin:0;color:var(--color-ink-2);font-family:var(--font-retro-support);font-size:1.625rem;font-weight:400;line-height:1.32;letter-spacing:.025em;text-wrap:balance;animation:portfolio-intro-stagger .68s var(--ease-out) .98s both}.portfolio-hero__actions{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--space-sm);margin-block-start:calc(var(--space-2xs) * -1);animation:portfolio-intro-stagger .68s var(--ease-out) 1.12s both}.portfolio-hero__action{position:relative;display:inline-flex;min-height:2.75rem;align-items:center;justify-content:center;border-radius:var(--radius-pill);font-family:var(--font-body);font-size:var(--text-sm);font-weight:500;line-height:1;text-decoration:none;transition:color var(--dur-short) var(--ease-out),background-color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out),transform var(--dur-short) var(--ease-out)}.portfolio-hero__action--primary{min-width:7.5rem;padding-inline:var(--space-md);color:var(--color-paper);background:var(--color-ink);box-shadow:0 var(--space-xs) var(--space-lg) color-mix(in oklch,var(--color-shadow) 42%,transparent)}.portfolio-hero__action--email{padding-inline:0;color:var(--color-ink-2);background:transparent}.portfolio-hero__action--email:after{position:absolute;inset-block-end:.42rem;inset-inline:0;height:var(--rule-hair);background:currentColor;content:"";transform:scaleX(0);transform-origin:0 50%;transition:transform var(--dur-short) var(--ease-out)}.portfolio-hero__action:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.portfolio-work,.portfolio-frontend-craft,.portfolio-testimonials,.portfolio-schedule,.portfolio-contact{content-visibility:auto}.portfolio-experience{padding-block:var(--space-lg) var(--space-2xl)}.portfolio-work{contain-intrinsic-size:auto 180rem;padding-block:var(--space-lg) var(--space-2xl);color:var(--color-ink);background:transparent}.portfolio-work .portfolio-section-head{padding-block:var(--space-sm) var(--space-2xl)}.portfolio-section-head{display:flex;justify-content:center;padding-block:var(--space-xl) var(--space-2xl)}.portfolio-section-head h2,.portfolio-contact h2{min-width:0;margin:0;overflow-wrap:anywhere;font-family:var(--font-display);font-size:var(--text-3xl);font-weight:400;line-height:1;letter-spacing:-.035em;text-wrap:balance}.portfolio-section-head--split h2{font-size:clamp(var(--text-3xl),3.5vw,3rem);font-weight:600}.portfolio-section-head__pixel-word{position:relative;z-index:0;display:inline-block;padding:0 .18em .04em;white-space:nowrap}.portfolio-section-head__pixel-word:before{position:absolute;z-index:-1;inset:.17em 0 0;background:var(--color-accent-soft);clip-path:polygon(0 .14em,.14em .14em,.14em 0,calc(100% - .14em) 0,calc(100% - .14em) .14em,100% .14em,100% calc(100% - .14em),calc(100% - .14em) calc(100% - .14em),calc(100% - .14em) 100%,.14em 100%,.14em calc(100% - .14em),0 calc(100% - .14em));content:""}.portfolio-section-head__pixel-word:after{position:absolute;right:0;bottom:-.11em;width:.14em;height:.14em;background:var(--color-accent);box-shadow:-.14em 0 var(--color-accent),0 -.14em var(--color-accent);content:""}.portfolio-section-head--split{display:grid;grid-template-columns:minmax(0,1fr);justify-content:stretch;gap:var(--space-md);padding-block-start:0}.portfolio-section-head--split p{max-width:48ch;margin:0;color:var(--color-ink-2);line-height:1.6}.feature-grid{display:grid;grid-template-columns:minmax(0,1fr);row-gap:clamp(var(--space-sm),2vw,var(--space-md))}.feature-card{--feature-aura-shift: clamp(1.25rem, 3vw, 2.75rem);--feature-aura-origin: 70% 50%;--feature-aura-direction: 90deg;position:relative;isolation:isolate;display:flex;min-width:0;min-height:0;flex-direction:column;gap:var(--space-md);overflow:visible;padding:clamp(var(--space-sm),2vw,var(--space-md)) 0!important;border-radius:0;color:var(--color-ink);background:transparent;text-decoration:none;transition:color var(--dur-short) var(--ease-out)}.feature-card--featured{gap:var(--space-md)}.feature-card--featured:before,.feature-card--featured:after{position:absolute;inset:0;z-index:0;pointer-events:none;content:"";transition:opacity var(--dur-med) var(--ease-out),transform var(--dur-long) var(--ease-out)}.feature-card--featured:before{inset:clamp(var(--space-xs),1vw,var(--space-sm)) calc(var(--gutter) * -.35);border-radius:var(--radius-card);background:radial-gradient(ellipse 62% 72% at 76% 58%,color-mix(in oklch,var(--color-positive) 28%,transparent),transparent 66%),radial-gradient(ellipse 76% 84% at 28% 48%,color-mix(in oklch,var(--color-accent) 28%,transparent),transparent 72%),linear-gradient(var(--feature-aura-direction),transparent,color-mix(in oklch,var(--color-bloom-inner) 48%,transparent) 28%,color-mix(in oklch,var(--color-accent-soft) 34%,transparent) 64%,transparent);opacity:0;filter:blur(.45rem);transform:translate3d(var(--feature-aura-shift),0,0) scale(.985);transform-origin:var(--feature-aura-origin)}.feature-card--featured:after{inset:var(--space-sm) calc(var(--gutter) * -.28);border-radius:var(--radius-card);background:radial-gradient(circle at 68% 62%,color-mix(in oklch,var(--color-ink) 18%,transparent) 0 .65px,transparent 1.45px) 0 0 / 9px 9px,radial-gradient(circle at 82% 36%,color-mix(in oklch,var(--color-positive) 28%,transparent) 0 .7px,transparent 1.55px) 2px 3px / 13px 13px;mix-blend-mode:screen;opacity:0;-webkit-mask-image:radial-gradient(ellipse 74% 88% at 50% 50%,black 0 42%,transparent 82%);mask-image:radial-gradient(ellipse 74% 88% at 50% 50%,black 0 42%,transparent 82%);transform:translate3d(var(--feature-aura-shift),var(--space-2xs),0) scale(1.01);transform-origin:var(--feature-aura-origin)}.feature-card--featured:where(:hover,:focus-within):before{opacity:.38;transform:scale(1)}.feature-card--featured:where(:hover,:focus-within):after{opacity:.18;transform:translateZ(0) scale(1)}.feature-card--featured .feature-card__copy{max-width:48rem}.feature-card--featured .feature-card__description{max-width:56ch}.feature-card__copy{position:relative;z-index:var(--z-raised);display:flex;min-width:0;flex-direction:column;align-items:flex-start}.feature-card__brand{display:inline-grid;grid-template-columns:2.5rem minmax(0,1fr);align-items:center;gap:var(--space-xs);max-width:min(100%,22rem);margin-block-end:var(--space-sm)}.feature-card__brand-mark{display:grid;width:2.5rem;height:2.5rem;place-items:center;overflow:hidden;border:var(--rule-hair) solid color-mix(in oklch,var(--color-ink) 12%,transparent);border-radius:var(--radius-input);color:var(--color-ink);background:color-mix(in oklch,var(--color-paper) 72%,transparent);font-family:var(--font-display);font-size:var(--text-lg);line-height:1;box-shadow:0 var(--space-3xs) var(--space-sm) color-mix(in oklch,var(--color-shadow) 28%,transparent)}.feature-card__brand-mark img{width:100%;height:100%;object-fit:cover}.feature-card__brand-copy{display:grid;min-width:0;gap:var(--space-3xs);margin:0;line-height:1.1}.feature-card__brand-copy span,.feature-card__brand-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feature-card__brand-copy span{color:var(--color-ink);font-size:var(--text-sm);font-weight:500}.feature-card__brand-copy small{color:var(--color-ink-3);font-size:var(--text-xs)}.feature-card__title{min-width:0;margin:0;overflow-wrap:anywhere;font-family:var(--font-display);font-size:clamp(var(--text-xl),2vw,var(--text-2xl));font-weight:400;line-height:1;letter-spacing:-.03em}.feature-card__description{max-width:58ch;margin:var(--space-xs) 0 0;color:var(--color-ink-2);font-size:var(--text-base);line-height:1.6}.feature-card__proofs{display:flex;min-width:0;flex-wrap:wrap;gap:var(--space-2xs);margin:var(--space-sm) 0 0;padding:0;list-style:none}.feature-card__proofs li{display:inline-flex;min-width:0;align-items:center;gap:var(--space-3xs);padding:.35rem var(--space-xs);border:var(--rule-hair) solid color-mix(in oklch,var(--color-ink) 12%,transparent);border-radius:var(--radius-pill);color:var(--color-ink-2);background:color-mix(in oklch,var(--color-ink) 5%,transparent);font-family:var(--font-retro-support);font-size:var(--text-sm);font-weight:500;line-height:1;letter-spacing:.015em}.feature-card--featured .feature-card__proofs li:first-child,.feature-card__proof--product-hunt{color:var(--color-ink);border-color:color-mix(in oklch,var(--color-product-hunt) 44%,transparent);background:radial-gradient(circle at 12% 50%,color-mix(in oklch,var(--color-product-hunt) 24%,transparent),transparent 48%),color-mix(in oklch,var(--color-product-hunt) 12%,transparent)}.feature-card__proof-icon{width:.95rem;height:.95rem;flex:0 0 auto}.feature-card__integrations{display:flex;min-width:0;flex-wrap:wrap;align-items:center;gap:var(--space-2xs);margin:var(--space-sm) 0 0;padding:0;list-style:none}.feature-card__integrations li:not(.feature-card__integrations-more){display:grid;width:2.5rem;height:2.5rem;place-items:center;border:var(--rule-hair) solid color-mix(in oklch,var(--color-ink) 12%,transparent);border-radius:var(--radius-pill);background:radial-gradient(circle at 35% 20%,color-mix(in oklch,var(--color-ink) 10%,transparent),transparent 48%),color-mix(in oklch,var(--color-shadow) 42%,transparent);box-shadow:inset 0 0 0 var(--rule-hair) color-mix(in oklch,var(--color-ink) 5%,transparent),0 var(--space-3xs) var(--space-sm) color-mix(in oklch,var(--color-shadow) 30%,transparent)}.feature-card__integration-icon{display:block;width:1.12rem;height:1.12rem;mask-position:center;mask-repeat:no-repeat;mask-size:contain;-webkit-mask-position:center;-webkit-mask-repeat:no-repeat;-webkit-mask-size:contain}.feature-card__integrations-more{margin-inline-start:var(--space-2xs);color:var(--color-ink-3);font-family:var(--font-retro-support);font-size:var(--text-sm);line-height:1;white-space:nowrap}.feature-card:focus-visible{outline:2px solid var(--color-focus);outline-offset:var(--space-xs)}.feature-media{position:relative;z-index:var(--z-base);display:grid;width:100%;min-width:0;aspect-ratio:16 / 10;place-items:center;margin:0;overflow:clip;border:var(--rule-hair) solid var(--color-rule-soft);border-radius:calc(var(--radius-card) - var(--space-xs));color:var(--color-ink);background:linear-gradient(145deg,var(--color-media),var(--color-media-highlight))}.feature-media--placeholder{display:block;background:var(--color-media)}.feature-media--placeholder:after{position:absolute;inset:0;content:"";background:linear-gradient(to top,color-mix(in oklch,var(--color-shadow) 78%,transparent),transparent 54%);pointer-events:none}.feature-media__poster{width:100%;height:100%;object-fit:cover;filter:saturate(.72) brightness(.72);transform:scale(1.01);transition:transform var(--dur-med) var(--ease-out)}.feature-media__icon{display:grid;width:3rem;height:3rem;flex:0 0 3rem;place-items:center;border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-pill);color:var(--color-ink);background:color-mix(in oklch,var(--color-shadow) 76%,transparent)}.feature-media__caption{position:absolute;inset-inline:var(--space-md);inset-block-end:var(--space-md);z-index:var(--z-raised);display:flex;min-width:0;align-items:center;gap:var(--space-sm);width:fit-content;max-width:calc(100% - (var(--space-md) * 2));padding:var(--space-xs) var(--space-sm) var(--space-xs) var(--space-xs);border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-pill);color:var(--color-ink);background:color-mix(in oklch,var(--color-shadow) 80%,transparent);font-size:var(--text-sm);line-height:1.3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.feature-media__caption>span:last-child{display:flex;min-width:0;flex-direction:column;gap:var(--space-3xs);white-space:nowrap}.feature-media__caption small{color:var(--color-ink-3);font-size:var(--text-xs)}.feature-media__video{width:100%;height:100%;object-fit:cover}.feature-media--desktop{overflow:visible;aspect-ratio:auto;margin:0;padding:0;border:0;background:transparent}.feature-media__desktop-frame{--feature-desktop-radius: clamp(1.05rem, 2vw, 1.45rem);--feature-screen-radius: calc( var(--feature-desktop-radius) - var(--space-3xs) );position:relative;display:grid;width:min(100%,40rem);aspect-ratio:16 / 9;padding:var(--space-3xs);border:var(--rule-hair) solid color-mix(in oklch,var(--color-ink) 16%,transparent);border-radius:var(--feature-desktop-radius);background:linear-gradient(145deg,color-mix(in oklch,var(--color-paper-3) 86%,var(--color-positive)),color-mix(in oklch,var(--color-shadow) 90%,var(--color-accent)));box-shadow:0 var(--space-sm) var(--space-xl) color-mix(in oklch,var(--color-shadow) 52%,transparent),inset 0 0 0 var(--rule-hair) color-mix(in oklch,var(--color-ink) 12%,transparent);transform:translateZ(0);transform-origin:50% 64%;transition:transform var(--dur-med) var(--ease-out)}.feature-media__desktop-screen{display:grid;min-height:0;grid-template-columns:minmax(0,1fr);overflow:hidden;border:var(--rule-hair) solid color-mix(in oklch,var(--color-ink) 10%,transparent);border-radius:var(--feature-screen-radius);background:var(--color-shadow)}.feature-media__desktop-clip{position:relative;min-width:0;min-height:0;overflow:hidden;border-radius:inherit;background:radial-gradient(circle at 50% 0%,color-mix(in oklch,var(--color-positive) 12%,transparent),transparent 55%),var(--color-media)}.feature-media__desktop-clip--main{grid-column:1 / -1;grid-row:1 / -1}.feature-media__desktop-video{width:100%;height:100%;border-radius:inherit;object-fit:cover;filter:saturate(.9) contrast(1.02) brightness(.9);transform:scale(1.01);transition:filter var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out)}@media(max-width:47.99rem){.feature-media--desktop{margin-block-start:0}.feature-media__desktop-frame{aspect-ratio:16 / 10}}.portfolio-frontend-craft{contain-intrinsic-size:auto 120rem;padding-block:var(--space-2xl);color:var(--color-ink);background:transparent}.portfolio-shell--frontend-craft{width:min(100%,var(--measure-wide))}.frontend-craft-grid{display:grid;grid-template-columns:minmax(0,1fr);row-gap:clamp(var(--space-sm),2vw,var(--space-md))}.frontend-craft-piece{--frontend-aura-shift: clamp(1.25rem, 3vw, 2.75rem);--frontend-aura-origin: 70% 50%;--frontend-aura-direction: 90deg;position:relative;isolation:isolate;display:flex;min-width:0;min-height:0;flex-direction:column;gap:var(--space-md);overflow:visible;padding:clamp(var(--space-sm),2vw,var(--space-md)) 0;border-radius:0;color:var(--color-ink);background:transparent;text-decoration:none;transition:color var(--dur-short) var(--ease-out)}.frontend-craft-piece:before,.frontend-craft-piece:after{position:absolute;inset:0;z-index:0;pointer-events:none;content:"";transition:opacity var(--dur-med) var(--ease-out),transform var(--dur-long) var(--ease-out)}.frontend-craft-piece:before{inset:clamp(var(--space-xs),1vw,var(--space-sm)) calc(var(--gutter) * -.32);border-radius:var(--radius-card);background:radial-gradient(ellipse 58% 68% at 76% 58%,color-mix(in oklch,var(--color-positive) 22%,transparent),transparent 66%),radial-gradient(ellipse 72% 82% at 28% 48%,color-mix(in oklch,var(--color-accent) 20%,transparent),transparent 72%),linear-gradient(var(--frontend-aura-direction),transparent,color-mix(in oklch,var(--color-bloom-inner) 32%,transparent) 30%,color-mix(in oklch,var(--color-accent-soft) 24%,transparent) 64%,transparent);opacity:0;filter:blur(.45rem);transform:translate3d(var(--frontend-aura-shift),0,0) scale(.985);transform-origin:var(--frontend-aura-origin)}.frontend-craft-piece:after{inset:var(--space-sm) calc(var(--gutter) * -.24);border-radius:var(--radius-card);background:radial-gradient(circle at 68% 62%,color-mix(in oklch,var(--color-ink) 14%,transparent) 0 .65px,transparent 1.45px) 0 0 / 9px 9px,radial-gradient(circle at 82% 36%,color-mix(in oklch,var(--color-positive) 22%,transparent) 0 .7px,transparent 1.55px) 2px 3px / 13px 13px;mix-blend-mode:screen;opacity:0;-webkit-mask-image:radial-gradient(ellipse 74% 88% at 50% 50%,black 0 42%,transparent 82%);mask-image:radial-gradient(ellipse 74% 88% at 50% 50%,black 0 42%,transparent 82%);transform:translate3d(var(--frontend-aura-shift),var(--space-2xs),0) scale(1.01);transform-origin:var(--frontend-aura-origin)}.frontend-craft-piece:where(:hover,:focus-within):before{opacity:.28;transform:scale(1)}.frontend-craft-piece:where(:hover,:focus-within):after{opacity:.13;transform:translateZ(0) scale(1)}.frontend-craft-piece__media{position:relative;z-index:var(--z-base);display:grid;width:100%;min-width:0;aspect-ratio:16 / 9;place-items:center;margin:0;overflow:clip;border:var(--rule-hair) solid color-mix(in oklch,var(--color-ink) 16%,transparent);border-radius:calc(var(--radius-card) - var(--space-xs));background:linear-gradient(145deg,color-mix(in oklch,var(--color-paper-3) 86%,var(--color-positive)),color-mix(in oklch,var(--color-shadow) 90%,var(--color-accent)));box-shadow:0 var(--space-sm) var(--space-xl) color-mix(in oklch,var(--color-shadow) 48%,transparent),inset 0 0 0 var(--rule-hair) color-mix(in oklch,var(--color-ink) 10%,transparent);transform:translateZ(0);transform-origin:50% 64%;transition:transform var(--dur-med) var(--ease-out)}.frontend-craft-piece__poster,.frontend-craft-piece__video{width:100%;height:100%;border-radius:inherit;object-fit:contain;object-position:center top;background:var(--color-shadow);filter:saturate(.9) contrast(1.02) brightness(.9);transform:none;transition:filter var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out)}.frontend-craft-piece__body{position:relative;z-index:var(--z-raised);display:flex;min-width:0;max-width:48rem;flex-direction:column;align-items:flex-start}.frontend-craft-piece__brand{display:inline-grid;grid-template-columns:2.5rem minmax(0,1fr);min-width:0;align-items:center;gap:var(--space-xs);max-width:min(100%,22rem);margin-block-end:var(--space-sm)}.frontend-craft-piece__logo{width:2.5rem;height:2.5rem;object-fit:cover;border:var(--rule-hair) solid color-mix(in oklch,var(--color-ink) 12%,transparent);border-radius:var(--radius-input);background:color-mix(in oklch,var(--color-paper) 72%,transparent);box-shadow:0 var(--space-3xs) var(--space-sm) color-mix(in oklch,var(--color-shadow) 28%,transparent)}.frontend-craft-piece h3{min-width:0;margin:0;overflow-wrap:anywhere;font-family:var(--font-display);font-size:var(--text-xl);font-weight:400;line-height:1;letter-spacing:-.025em}.frontend-craft-piece p{max-width:56ch;margin:var(--space-xs) 0 0;color:var(--color-ink-2);font-size:var(--text-sm);line-height:1.55}.frontend-craft-piece__impact{color:var(--color-ink);font-family:var(--font-retro-support);font-size:var(--text-sm);line-height:1.2}.frontend-craft-piece__skills{display:grid;gap:var(--space-2xs);margin-block-start:var(--space-md)}.frontend-craft-piece__skills ul{display:flex;min-width:0;flex-wrap:wrap;gap:var(--space-2xs);margin:0;padding:0;list-style:none}.frontend-craft-piece__skills li{display:grid;width:2.5rem;height:2.5rem;place-items:center;border:var(--rule-hair) solid color-mix(in oklch,var(--color-ink) 12%,transparent);border-radius:var(--radius-pill);color:var(--color-ink);background:radial-gradient(circle at 35% 20%,color-mix(in oklch,var(--color-ink) 10%,transparent),transparent 48%),color-mix(in oklch,var(--color-shadow) 42%,transparent);box-shadow:inset 0 0 0 var(--rule-hair) color-mix(in oklch,var(--color-ink) 5%,transparent),0 var(--space-3xs) var(--space-sm) color-mix(in oklch,var(--color-shadow) 30%,transparent)}.frontend-craft-piece__skills .frontend-craft-piece__skill-icon{display:block;width:1.12rem;height:1.12rem;mask-position:center;mask-repeat:no-repeat;mask-size:contain;-webkit-mask-position:center;-webkit-mask-repeat:no-repeat;-webkit-mask-size:contain}.frontend-craft-piece__skills li span{font-family:var(--font-display);font-size:var(--text-xs);line-height:1}.frontend-craft-piece:focus-visible{outline:2px solid var(--color-focus);outline-offset:4px}.portfolio-contact{contain-intrinsic-size:auto 55rem;padding-block:var(--space-2xl) max(var(--space-xl),env(safe-area-inset-bottom));color:var(--color-ink);background:transparent}.portfolio-contact__intro{display:grid;gap:var(--space-md);max-width:45rem}.portfolio-contact__intro h2{font-size:var(--text-display-s)}.portfolio-contact__intro p{max-width:54ch;margin:0;color:var(--color-ink-2);line-height:1.65}.portfolio-contact__email{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-xs) var(--space-md);margin-block-start:var(--space-3xl);padding-block:var(--space-lg);border-block:var(--rule-hair) solid var(--color-rule)}.portfolio-contact__email>span{grid-column:1 / -1;color:var(--color-ink-3);font-size:var(--text-sm)}.portfolio-contact__email strong{min-width:0;font-family:var(--font-display);font-size:clamp(1rem,5vw,3.75rem);font-weight:400;line-height:1;letter-spacing:-.035em;white-space:nowrap}.portfolio-contact__email svg{transition:transform var(--dur-micro) var(--ease-out)}.portfolio-contact__email:hover svg,.portfolio-contact__email:focus-visible svg{transform:translate(3px,-3px)}.portfolio-contact__email:focus-visible{outline:2px solid var(--color-focus);outline-offset:6px}.portfolio-contact__meta{display:flex;flex-direction:column;gap:var(--space-md);padding-block-start:var(--space-xl);color:var(--color-ink-3);font-size:var(--text-sm)}.portfolio-contact__meta>div{display:flex;flex-wrap:wrap;gap:var(--space-lg)}.portfolio-contact__meta a{display:inline-flex;min-height:2.75rem;align-items:center;color:var(--color-ink-2);white-space:nowrap}.portfolio-contact__meta a:hover{color:var(--color-ink)}.portfolio-contact__meta a:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}@keyframes portfolio-enter{0%{opacity:0;transform:translateY(var(--space-xs))}to{opacity:1;transform:translateY(0)}}@keyframes portfolio-fade-in{0%{opacity:0}to{opacity:1}}@keyframes portfolio-intro-stagger{0%{opacity:0;filter:blur(6px);transform:translate3d(0,var(--space-sm),0)}to{opacity:1;filter:blur(0);transform:translateZ(0)}}@media(max-width:39.999rem){.site-nav{inset-block-start:max(var(--space-xs),env(safe-area-inset-top))}.site-nav__inner{width:100%;justify-content:flex-end;gap:var(--space-2xs);padding:var(--space-3xs)}.site-nav__mark{width:3rem;flex-basis:3rem;min-height:3rem;margin-inline-end:auto}.site-nav__link{min-width:0;min-height:3rem}}@media(min-width:40rem){.site-nav__inner{gap:var(--space-2xs);padding-inline:var(--space-xs)}.site-nav__link--about,.site-nav__link--resume{display:inline-flex}.portfolio-contact__meta{flex-direction:row;align-items:center;justify-content:space-between}}@media(min-width:48rem){.feature-grid{grid-template-columns:minmax(0,1fr)}.feature-card--featured{grid-column:auto}.portfolio-section-head--split{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:end}}@media(min-width:60rem){.feature-card{display:grid;min-height:0;grid-template-columns:minmax(0,.9fr) minmax(18rem,1fr);align-items:center;gap:clamp(var(--space-md),2.8vw,var(--space-xl))}.feature-card--featured{min-height:0}.feature-card--featured .feature-media{margin:0}.feature-card__brand{margin-block-end:var(--space-sm)}.feature-grid .feature-card:nth-child(2n){--feature-aura-shift: clamp(-2.75rem, -3vw, -1.25rem);--feature-aura-origin: 30% 50%;--feature-aura-direction: 270deg;grid-template-columns:minmax(18rem,1fr) minmax(0,.9fr)}.feature-grid .feature-card:nth-child(2n) .feature-card__copy{grid-column:2;grid-row:1}.feature-grid .feature-card:nth-child(2n) .feature-media{grid-column:1;grid-row:1}.frontend-craft-piece{display:grid;grid-template-columns:minmax(0,.9fr) minmax(18rem,1fr);align-items:center;gap:clamp(var(--space-md),2.8vw,var(--space-xl))}.frontend-craft-piece__body{max-width:30rem}.frontend-craft-grid .frontend-craft-piece:nth-child(2n){--frontend-aura-shift: clamp(-2.75rem, -3vw, -1.25rem);--frontend-aura-origin: 30% 50%;--frontend-aura-direction: 270deg;grid-template-columns:minmax(18rem,1fr) minmax(0,.9fr)}.frontend-craft-grid .frontend-craft-piece:nth-child(2n) .frontend-craft-piece__body{grid-column:2;grid-row:1}.frontend-craft-grid .frontend-craft-piece:nth-child(2n) .frontend-craft-piece__media{grid-column:1;grid-row:1}}:is(.site-nav__mark,.site-nav__link,.portfolio-hero__action,.feature-card,.frontend-craft-piece,.portfolio-contact__email,.portfolio-contact__meta a):active{transform:translateY(1px)}:is(.site-nav__mark,.site-nav__link,.portfolio-hero__action,.feature-card,.frontend-craft-piece,.portfolio-contact__email,.portfolio-contact__meta a)[aria-disabled=true]{pointer-events:none;cursor:not-allowed;opacity:.45}@media(min-width:90rem){.portfolio-hero__title{font-size:var(--text-display-wide)}}@media(hover:hover)and (pointer:fine){.portfolio-hero__action--primary:hover{transform:translateY(-1px);background:color-mix(in oklch,var(--color-ink) 90%,var(--color-accent))}.portfolio-hero__action--email:hover{color:var(--color-ink)}.portfolio-hero__action--email:hover:after,.portfolio-hero__action--email:focus-visible:after{transform:scaleX(1)}.feature-card:hover{color:var(--color-ink)}.feature-card:hover .feature-media__poster,.feature-card:hover .feature-media__desktop-video{transform:scale(1.035)}.frontend-craft-piece:hover .frontend-craft-piece__poster,.frontend-craft-piece:hover .frontend-craft-piece__video{filter:saturate(.96) brightness(.9);transform:none}.feature-card:hover .feature-media__desktop-video{filter:saturate(1.04) contrast(1.04) brightness(.98)}.feature-card:hover .feature-media__desktop-frame,.frontend-craft-piece:hover .frontend-craft-piece__media{transform:translate3d(0,-.35rem,0)}}@media(pointer:coarse){.site-nav__mark,.site-nav__link,.portfolio-hero__action,.feature-card,.frontend-craft-piece,.portfolio-contact__meta a,.portfolio-contact__email{min-height:3rem}}@media(prefers-reduced-motion:reduce){.portfolio-hero__blob{animation:none;transition:none}.site-nav,.portfolio-hero__title,.portfolio-hero__title span:last-child,.portfolio-hero__intro,.portfolio-hero__actions{animation:portfolio-fade-in .12s linear both;filter:none;transform:none}.feature-card,.frontend-craft-piece,.feature-media__poster,.frontend-craft-piece__poster,.frontend-craft-piece__video,.portfolio-contact__email svg,.portfolio-hero__action,.site-nav__link,.site-nav__link:before{transition-duration:0ms}}@property --about-reveal-radius{syntax: "<length>"; inherits: true; initial-value: 0px;}@property --about-reveal-x{syntax: "<length>"; inherits: true; initial-value: 0px;}@property --about-reveal-y{syntax: "<length>"; inherits: true; initial-value: 0px;}@property --about-reveal-texture-opacity{syntax: "<number>"; inherits: true; initial-value: 0;}.portfolio-about{padding-block:var(--space-2xl);color:var(--color-ink);background:transparent}.about-layout{display:grid;grid-template-columns:minmax(0,1fr);align-items:center;gap:var(--space-2xl)}.about-story{display:flex;min-width:0;flex-direction:column;gap:var(--space-xl)}.about-heading h2{min-width:0;margin:0;overflow-wrap:anywhere;font-family:var(--font-display);font-size:clamp(var(--text-3xl),3.5vw,3rem);font-weight:600;line-height:1.08;letter-spacing:-.035em}.about-heading h2 span{display:inline}.about-heading h2 span:first-child{color:var(--color-ink)}.about-heading h2 .about-heading__highlight{position:relative;z-index:0;display:inline-block;margin-inline-start:.18em;padding:0 .18em .04em;white-space:nowrap}.about-heading__highlight:before{position:absolute;z-index:-1;inset:.17em 0 0;background:var(--color-accent-soft);clip-path:polygon(0 .14em,.14em .14em,.14em 0,calc(100% - .14em) 0,calc(100% - .14em) .14em,100% .14em,100% calc(100% - .14em),calc(100% - .14em) calc(100% - .14em),calc(100% - .14em) 100%,.14em 100%,.14em calc(100% - .14em),0 calc(100% - .14em));content:""}.about-heading__highlight:after{position:absolute;right:0;bottom:-.11em;width:.14em;height:.14em;background:var(--color-accent);box-shadow:-.14em 0 var(--color-accent),0 -.14em var(--color-accent);content:""}.about-context{display:flex;max-width:58ch;flex-direction:column;gap:var(--space-lg)}.about-context p{margin:0;color:var(--color-ink-2);font-size:var(--text-md);line-height:1.65}.about-context strong{padding-inline:var(--space-3xs);color:var(--color-ink);background:var(--color-accent-soft);box-decoration-break:clone;-webkit-box-decoration-break:clone;font-weight:650}.about-learning{display:grid;gap:var(--space-sm)}.about-learning h3{margin:0;color:var(--color-ink);font-family:var(--font-display);font-size:var(--text-xl);font-weight:500;line-height:1.1}.about-learning__tools{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm) var(--space-lg);margin:var(--space-xs) 0 0;padding:0;list-style:none}.about-learning__tools li{display:inline-flex;align-items:center;gap:var(--space-2xs);color:var(--color-ink-2);font-family:var(--font-display);font-size:var(--text-base);line-height:1;white-space:nowrap}.about-learning__tools img{display:block;width:2rem;height:2rem;flex:none;object-fit:contain}.about-portrait{position:relative;min-width:0;width:min(100%,26rem);margin:0;justify-self:center;isolation:isolate;animation:about-portrait-float 8s var(--ease-in-out) infinite alternate}.about-portrait:before{position:absolute;inset:var(--space-md) calc(var(--space-sm) * -1) calc(var(--space-sm) * -1) var(--space-md);z-index:-1;background:var(--color-accent-soft);clip-path:polygon(0 0,100% 0,100% 84%,96% 84%,96% 90%,90% 90%,90% 96%,84% 96%,84% 100%,0 100%);content:""}.about-portrait__frame{position:relative;display:block;width:100%;aspect-ratio:1;padding:0;overflow:clip;border:0;background:var(--color-paper-3);cursor:pointer;isolation:isolate;--about-reveal-x: 0px;--about-reveal-y: 0px;--about-reveal-radius: 0px;--about-reveal-texture-opacity: 0;clip-path:polygon(0 0,100% 0,100% 84%,96% 84%,96% 90%,90% 90%,90% 96%,84% 96%,84% 100%,0 100%);transition:--about-reveal-x .18s linear,--about-reveal-y .18s linear,--about-reveal-radius 1.48s cubic-bezier(.22,.68,.15,1),--about-reveal-texture-opacity .82s var(--ease-out)}.about-portrait__frame:focus-visible{outline:3px solid var(--color-focus);outline-offset:var(--space-xs)}.about-portrait__frame:active{filter:brightness(.98)}.about-portrait__frame:disabled{opacity:.55;cursor:not-allowed}.about-portrait__frame:focus-visible:after{position:absolute;inset:var(--space-3xs);z-index:4;border:3px solid var(--color-focus);pointer-events:none;content:""}.about-portrait__frame:before{position:absolute;inset:0;z-index:3;pointer-events:none;background:repeating-conic-gradient(from 45deg,color-mix(in oklch,var(--color-paper) 58%,transparent) 0 25%,transparent 0 50%) 0 0 / 10px 10px,radial-gradient(circle at var(--about-reveal-x) var(--about-reveal-y),color-mix(in oklch,var(--color-accent) 34%,transparent),transparent 68%);mix-blend-mode:screen;opacity:var(--about-reveal-texture-opacity);-webkit-mask-image:radial-gradient(circle at var(--about-reveal-x) var(--about-reveal-y),transparent 0 calc(var(--about-reveal-radius) * .34),color-mix(in oklch,var(--color-shadow) 16%,transparent) calc(var(--about-reveal-radius) * .48),var(--color-shadow) calc(var(--about-reveal-radius) * .68),color-mix(in oklch,var(--color-shadow) 32%,transparent) calc(var(--about-reveal-radius) * .86),transparent var(--about-reveal-radius));mask-image:radial-gradient(circle at var(--about-reveal-x) var(--about-reveal-y),transparent 0 calc(var(--about-reveal-radius) * .34),color-mix(in oklch,var(--color-shadow) 16%,transparent) calc(var(--about-reveal-radius) * .48),var(--color-shadow) calc(var(--about-reveal-radius) * .68),color-mix(in oklch,var(--color-shadow) 32%,transparent) calc(var(--about-reveal-radius) * .86),transparent var(--about-reveal-radius));content:""}.about-portrait__image{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:center;pointer-events:none;-webkit-user-select:none;user-select:none}.about-portrait__image--normal{z-index:1}.about-portrait__image--pixel{z-index:2;image-rendering:pixelated;-webkit-mask-image:radial-gradient(circle at var(--about-reveal-x) var(--about-reveal-y),transparent 0 calc(var(--about-reveal-radius) * .34),color-mix(in oklch,var(--color-shadow) 4%,transparent) calc(var(--about-reveal-radius) * .48),color-mix(in oklch,var(--color-shadow) 12%,transparent) calc(var(--about-reveal-radius) * .61),color-mix(in oklch,var(--color-shadow) 28%,transparent) calc(var(--about-reveal-radius) * .74),color-mix(in oklch,var(--color-shadow) 55%,transparent) calc(var(--about-reveal-radius) * .88),var(--color-shadow) var(--about-reveal-radius));mask-image:radial-gradient(circle at var(--about-reveal-x) var(--about-reveal-y),transparent 0 calc(var(--about-reveal-radius) * .34),color-mix(in oklch,var(--color-shadow) 4%,transparent) calc(var(--about-reveal-radius) * .48),color-mix(in oklch,var(--color-shadow) 12%,transparent) calc(var(--about-reveal-radius) * .61),color-mix(in oklch,var(--color-shadow) 28%,transparent) calc(var(--about-reveal-radius) * .74),color-mix(in oklch,var(--color-shadow) 55%,transparent) calc(var(--about-reveal-radius) * .88),var(--color-shadow) var(--about-reveal-radius))}@keyframes about-portrait-float{0%{transform:translateZ(0) rotate(-1.5deg)}to{transform:translate3d(0,-.55rem,0) rotate(-.5deg)}}.about-stack{margin-block-start:var(--space-2xl)}.about-stack__heading{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2xs)}.about-stack h3{margin:0;font-family:var(--font-display);font-size:clamp(var(--text-xl),7.3vw,var(--text-2xl));font-weight:400;line-height:1.1}.about-stack__motion{min-width:2.75rem;min-height:2.75rem;padding:var(--space-2xs);border:0;color:var(--color-ink-3);background:transparent;font-family:var(--font-display);font-size:var(--text-xs);cursor:pointer}.about-stack__motion:hover{color:var(--color-ink)}.about-stack__motion:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.about-stack__motion:active{color:var(--color-accent)}.about-stack__motion:disabled{color:var(--color-ink-3);cursor:not-allowed}.about-stack__marquee{min-width:0;margin-block-start:var(--space-lg);overflow:clip;mask-image:linear-gradient(90deg,transparent,black 8%,black 92%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,black 8%,black 92%,transparent)}.about-stack__track{display:flex;width:max-content;animation:about-stack-scroll 48s linear infinite;will-change:transform}.about-stack__track[data-paused=true],.about-stack__marquee:hover .about-stack__track{animation-play-state:paused}.about-stack__line{display:flex;flex:none;align-items:center;gap:var(--space-xl);margin:0;padding:0 var(--space-xl) 0 0;list-style:none}.about-stack__line li{display:inline-flex;flex:none;align-items:center;gap:var(--space-2xs);color:var(--color-ink-2);font-family:var(--font-display);font-size:var(--text-base);line-height:1.35;white-space:nowrap}.about-stack__icon{display:block;width:1.4rem;height:1.4rem;flex:0 0 1.4rem;mask-position:center;mask-repeat:no-repeat;mask-size:contain;-webkit-mask-position:center;-webkit-mask-repeat:no-repeat;-webkit-mask-size:contain}@keyframes about-stack-scroll{to{transform:translate3d(-50%,0,0)}}@media(prefers-reduced-motion:reduce){.about-portrait{animation:none}.about-portrait__frame{transition:--about-reveal-x 0ms linear,--about-reveal-y 0ms linear,--about-reveal-radius .12s linear,--about-reveal-texture-opacity .12s linear}.about-portrait__frame:before{display:none}.about-stack__motion,.about-stack__line[aria-hidden=true]{display:none}.about-stack__marquee{overflow:visible;mask-image:none;-webkit-mask-image:none}.about-stack__track{width:auto;animation:none;will-change:auto}.about-stack__line{min-width:0;flex:1 1 auto;flex-wrap:wrap;gap:var(--space-sm) var(--space-md);padding:0}}@media(min-width:60rem){.about-layout{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}.about-portrait{justify-self:end}}@media(max-width:59.999rem){.about-portrait{margin-inline:auto}.about-stack{margin-block-start:var(--space-xl)}}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--theme-wipe-size:0px}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--container-xl:36rem;--container-3xl:48rem;--text-xs:.75rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.right-0{right:calc(var(--spacing) * 0)}.bottom-\[6px\]{bottom:6px}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-50{z-index:50}.mx-auto{margin-inline:auto}.my-5{margin-block:calc(var(--spacing) * 5)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-0{height:calc(var(--spacing) * 0)}.h-8{height:calc(var(--spacing) * 8)}.h-\[3px\]{height:3px}.h-\[5px\]{height:5px}.h-\[15px\]{height:15px}.h-full{height:100%}.w-0{width:calc(var(--spacing) * 0)}.w-8{width:calc(var(--spacing) * 8)}.w-\[3px\]{width:3px}.w-\[5px\]{width:5px}.w-\[15px\]{width:15px}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-xl{max-width:var(--container-xl)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:3.40282e38px}.rounded-none{border-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.p-\[3px\]{padding:3px}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[14px\]{font-size:14px}.text-\[clamp\(1\.6rem\,4vw\,3rem\)\]{font-size:clamp(1.6rem,4vw,3rem)}.leading-\[1\.4\]{--tw-leading:1.4;line-height:1.4}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.2px\]{--tw-tracking:.2px;letter-spacing:.2px}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--text\)\]{color:var(--text)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.no-underline{text-decoration-line:none}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-\[var\(--ease\)\]{--tw-ease:var(--ease);transition-timing-function:var(--ease)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media(hover:hover){.hover\:bg-\[var\(--bg-secondary\)\]:hover{background-color:var(--bg-secondary)}.hover\:text-\[var\(--text\)\]:hover{color:var(--text)}.hover\:opacity-60:hover{opacity:.6}}}:root{color-scheme:dark;--color-paper:#141414;--color-paper-2:oklch(17% .02 20);--color-paper-3:oklch(22% .024 20);--color-media:oklch(15% .028 20);--color-media-highlight:oklch(27% .07 20);--color-shadow:oklch(7% .012 20);--color-ink:oklch(95% .01 65);--color-ink-2:oklch(77% .014 55);--color-ink-3:oklch(61% .016 45);--color-rule:oklch(34% .02 25);--color-rule-soft:oklch(27% .018 25);--color-accent:oklch(55% .17 20);--color-accent-ink:oklch(96% .01 65);--color-accent-soft:oklch(25% .065 20);--color-focus:oklch(76% .17 24);--color-positive:oklch(72% .13 145);--color-product-hunt:oklch(63% .175 37);--color-bloom-inner:oklch(31% .105 18);--color-bloom-outer:oklch(18% .045 18);--font-display:"Pixelify Sans", ui-monospace, monospace;--font-body:"Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Geist Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--font-retro-support:"Pixelify Sans", "Geist Mono", ui-monospace, monospace;--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2rem;--space-xl:3rem;--space-2xl:4.5rem;--space-3xl:7rem;--space-4xl:9rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.0625rem;--text-lg:1.25rem;--text-xl:1.5rem;--text-2xl:1.875rem;--text-3xl:2.5rem;--text-display-s:clamp(2.25rem, 5vw, 3.5rem);--text-display:clamp(3.25rem, 9vw, 5.5rem);--text-display-wide:clamp(4.25rem, 7vw, 6rem);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--dur-micro:.12s;--dur-short:.18s;--dur-med:.28s;--dur-long:.42s;--radius-card:2.5rem;--radius-input:.75rem;--radius-pill:9999px;--measure:40rem;--measure-wide:62.5rem;--gutter:clamp(1rem, 4vw, 2rem);--rule-hair:1px;--z-base:1;--z-raised:10;--z-dropdown:100;--z-sticky:200;--z-modal:400;--z-toast:500;--z-tooltip:600}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}html{background:var(--color-paper);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;overflow-x:clip}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}.lenis.lenis-stopped{overflow:clip}.lenis.lenis-smooth iframe{pointer-events:none}body{min-height:100vh;font-family:var(--font-body);font-size:var(--text-md);color:var(--color-ink);background:var(--color-paper);font-feature-settings:"ss01","ss02","cv11";transition:background-color var(--dur-med) var(--ease-out),color var(--dur-med) var(--ease-out);line-height:1.65;overflow-x:clip}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}img{max-width:100%;height:auto;display:block}em,i{font-style:normal}::selection{background:var(--color-accent-soft);color:var(--color-ink)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px;border-radius:2px}@property --theme-wipe-size{syntax:"<length>";inherits:false;initial-value:0}html.theme-is-switching body{transition:none}html.theme-is-switching::view-transition-old(root){animation-duration:.9s;animation-timing-function:var(--ease-out);mix-blend-mode:normal}html.theme-is-switching::view-transition-new(root){animation-duration:.9s;animation-timing-function:var(--ease-out);mix-blend-mode:normal}html.theme-is-switching::view-transition-old(root){animation:none}html.theme-is-switching::view-transition-new(root){--theme-wipe-size:var(--theme-wipe-radius,150vmax);animation:theme-wipe .9s var(--ease-out);-webkit-mask-image:radial-gradient(circle at var(--theme-wipe-x,100%) var(--theme-wipe-y,0),black 0,black max(0px,calc(var(--theme-wipe-size) - 128px)),#000000b8 max(0px,calc(var(--theme-wipe-size) - 48px)),transparent calc(var(--theme-wipe-size) + 96px));mask-image:radial-gradient(circle at var(--theme-wipe-x,100%) var(--theme-wipe-y,0),black 0,black max(0px,calc(var(--theme-wipe-size) - 128px)),#000000b8 max(0px,calc(var(--theme-wipe-size) - 48px)),transparent calc(var(--theme-wipe-size) + 96px))}@keyframes theme-wipe{0%{--theme-wipe-size:0px}to{--theme-wipe-size:var(--theme-wipe-radius,150vmax)}}@media(prefers-reduced-motion:reduce){html.theme-is-switching::view-transition-old(root){animation:none}html.theme-is-switching::view-transition-new(root){animation:none}}.shell{max-width:var(--measure-wide);padding-inline:var(--gutter);margin:0 auto;position:relative}.measure{max-width:var(--measure)}.nav{z-index:20;background:var(--color-paper);animation:nav-drop .56s var(--ease-out) both;transition:transform var(--dur-med) var(--ease-in-out);position:sticky;top:0}.nav.is-hidden{transform:translateY(-101%)}.nav:after{content:"";pointer-events:none;background:linear-gradient(to bottom,var(--color-paper),transparent);inset-inline:0;height:28px;position:absolute;bottom:-28px}@supports (color:color-mix(in lab,red,red)){.nav:after{background:linear-gradient(to bottom,color-mix(in oklch,var(--color-paper) 30%,transparent),transparent)}}@keyframes nav-drop{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.nav{transition:none;animation:none}.nav.is-hidden{opacity:0;pointer-events:none;transform:none}}.nav__row{max-width:var(--measure-wide);padding:var(--space-md) var(--gutter);justify-content:space-between;align-items:baseline;gap:var(--space-md);margin:0 auto;display:flex}.nav__wordmark{font-family:var(--font-display);font-style:normal;font-size:var(--text-xl);letter-spacing:-.01em;color:var(--color-ink);line-height:1}.nav__wordmark:after{content:".";color:var(--color-accent)}.nav__links{gap:var(--space-md);align-items:baseline;display:flex}.nav__actions{align-items:center;gap:var(--space-md);display:flex}.nav__link{font-size:var(--text-sm);color:var(--color-ink-2);transition:color var(--dur-short) var(--ease-out);align-items:baseline;gap:4px;display:inline-flex;position:relative}.nav__link:after{content:"→";font-family:var(--font-mono);transition:transform var(--dur-short) var(--ease-out);font-size:.85em;display:inline-block;transform:translate(0)}.nav__link:hover{color:var(--color-ink)}.nav__link:hover:after{transform:translate(2px)}.theme-toggle{border-radius:var(--radius-pill);width:3.25rem;height:2rem;color:var(--color-ink);transition:transform var(--dur-short) var(--ease-out);background:0 0;border:0;place-items:stretch stretch;padding:0;display:inline-grid}.theme-toggle__track{border:1px solid var(--color-rule);border-radius:inherit;background:radial-gradient(circle at 24% 35%,var(--color-accent),transparent 34%),var(--color-paper-2);display:block;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.theme-toggle__track{background:radial-gradient(circle at 24% 35%,color-mix(in oklch,var(--color-accent) 24%,transparent),transparent 34%),color-mix(in oklch,var(--color-paper-2) 88%,transparent)}}.theme-toggle__track{box-shadow:inset 0 1px 0 var(--color-ink)}@supports (color:color-mix(in lab,red,red)){.theme-toggle__track{box-shadow:inset 0 1px color-mix(in oklch,var(--color-ink) 8%,transparent)}}.theme-toggle__track{transition:background-color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out),box-shadow var(--dur-short) var(--ease-out)}.theme-toggle__glow{background:linear-gradient(115deg,transparent 20%,var(--color-accent) 44%,transparent 68%);position:absolute;inset:-40% -20%}@supports (color:color-mix(in lab,red,red)){.theme-toggle__glow{background:linear-gradient(115deg,transparent 20%,color-mix(in oklch,var(--color-accent) 26%,transparent) 44%,transparent 68%)}}.theme-toggle__glow{opacity:0;transition:opacity var(--dur-short) var(--ease-out),transform var(--dur-med) var(--ease-out);transform:translate(-38%)}.theme-toggle__thumb{background:var(--color-paper);width:1.5rem;height:1.5rem;box-shadow:0 6px 14px var(--color-ink),inset 0 0 0 1px var(--color-rule);border-radius:50%;place-items:center;display:grid;position:absolute;top:3px;left:3px}@supports (color:color-mix(in lab,red,red)){.theme-toggle__thumb{box-shadow:0 6px 14px color-mix(in oklch,var(--color-ink) 12%,transparent),inset 0 0 0 1px color-mix(in oklch,var(--color-rule) 70%,transparent)}}.theme-toggle__thumb{transition:background-color var(--dur-short) var(--ease-out),box-shadow var(--dur-short) var(--ease-out),transform .42s var(--ease-out);transform:translate(0)rotate(0)}.theme-toggle__icon{transition:opacity var(--dur-short) var(--ease-out),transform .42s var(--ease-out);grid-area:1/1}.theme-toggle__icon--sun{color:var(--color-accent);opacity:1;transform:rotate(0)scale(1)}.theme-toggle__icon--moon{color:var(--color-ink-2);opacity:0;transform:rotate(-90deg)scale(.55)}.theme-toggle.is-dark .theme-toggle__track{background:radial-gradient(circle at 76% 34%,var(--color-accent),transparent 32%),var(--color-paper-3)}@supports (color:color-mix(in lab,red,red)){.theme-toggle.is-dark .theme-toggle__track{background:radial-gradient(circle at 76% 34%,color-mix(in oklch,var(--color-accent) 20%,transparent),transparent 32%),color-mix(in oklch,var(--color-paper-3) 88%,transparent)}}.theme-toggle.is-dark .theme-toggle__thumb{transform:translate(1.375rem)rotate(180deg)}.theme-toggle.is-dark .theme-toggle__icon--sun{opacity:0;transform:rotate(90deg)scale(.55)}.theme-toggle.is-dark .theme-toggle__icon--moon{opacity:1;transform:rotate(0)scale(1)}.theme-toggle:hover{transform:translateY(-1px)}.theme-toggle:hover .theme-toggle__track{border-color:var(--color-accent)}@supports (color:color-mix(in lab,red,red)){.theme-toggle:hover .theme-toggle__track{border-color:color-mix(in oklch,var(--color-accent) 70%,var(--color-rule))}}.theme-toggle:hover .theme-toggle__track{box-shadow:inset 0 1px 0 var(--color-ink),0 8px 24px var(--color-accent)}@supports (color:color-mix(in lab,red,red)){.theme-toggle:hover .theme-toggle__track{box-shadow:inset 0 1px color-mix(in oklch,var(--color-ink) 8%,transparent),0 8px 24px color-mix(in oklch,var(--color-accent) 16%,transparent)}}.theme-toggle:hover .theme-toggle__glow{opacity:1;transform:translate(38%)}.theme-toggle:active{transform:translateY(0)}@media(prefers-reduced-motion:reduce){.theme-toggle,.theme-toggle__track,.theme-toggle__glow,.theme-toggle__thumb,.theme-toggle__icon{transition:none}.theme-toggle:hover,.theme-toggle:hover .theme-toggle__glow{transform:none}}.letter{padding-top:clamp(var(--space-2xl),10vh,var(--space-3xl));padding-bottom:var(--space-2xl)}.avatar{width:84px;height:84px;margin:0 0 var(--space-lg) 0;border:1px solid var(--color-rule);background:var(--color-paper-2);border-radius:50%;position:relative;overflow:hidden}.avatar:after{content:"";border:1px solid var(--color-paper);pointer-events:none;z-index:2;border-radius:50%;position:absolute;inset:-1px}.avatar__blur,.avatar__full{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.avatar__blur{filter:blur(8px)saturate(1.1);z-index:0;transform:scale(1.15)}.avatar__full{opacity:0;z-index:1;transition:opacity .48s var(--ease-out)}.avatar__full.is-loaded{opacity:1}@media(prefers-reduced-motion:reduce){.avatar__full{transition:none}}.salutation{font-family:var(--font-display);font-style:normal;font-weight:400;font-size:var(--text-display);letter-spacing:-.015em;color:var(--color-ink);margin-bottom:var(--space-sm);overflow-wrap:anywhere;flex-direction:column;align-items:flex-start;gap:.05em;min-width:0;line-height:1.02;display:flex}.salutation__line{white-space:nowrap;display:inline-block}.salutation__period{color:var(--color-accent)}.salutation__qualifier{font-family:var(--font-display);letter-spacing:-.01em;color:var(--color-ink-2);font-size:clamp(1.5rem,3.2vw,2.5rem);font-style:normal;font-weight:400;line-height:1.1}@media(max-width:560px){.salutation__line{white-space:normal}}.salutation__shine{--salutation-shine-color:oklch(78% .006 270);background-image:linear-gradient(115deg,var(--color-ink) 0%,var(--color-ink) 36%,var(--salutation-shine-color) 50%,var(--color-ink) 64%,var(--color-ink) 100%);color:#0000;-webkit-text-fill-color:transparent;animation:salutation-shine 3.9s var(--ease-out) .9s infinite;background-position:150%;background-size:200%;-webkit-background-clip:text;background-clip:text;margin-block:-.08em -.16em;padding-block:.08em .16em;display:inline-block}:root.dark .salutation__shine{--salutation-shine-color:var(--color-accent)}@supports (color:color-mix(in lab,red,red)){:root.dark .salutation__shine{--salutation-shine-color:color-mix(in oklch, var(--color-accent) 44%, var(--color-ink))}}@media(prefers-color-scheme:dark){:root:not(.light) .salutation__shine{--salutation-shine-color:var(--color-accent)}@supports (color:color-mix(in lab,red,red)){:root:not(.light) .salutation__shine{--salutation-shine-color:color-mix(in oklch, var(--color-accent) 44%, var(--color-ink))}}}@keyframes salutation-shine{0%,28%{background-position:150%}78%,to{background-position:-50%}}@media(prefers-reduced-motion:reduce){.salutation__shine{color:var(--color-ink);-webkit-text-fill-color:currentColor;background-image:none;animation:none}}.letter__tagline{font-family:var(--font-display);font-style:normal;font-size:var(--text-xl);letter-spacing:-.01em;color:var(--color-ink-2);margin-bottom:var(--space-xl);max-width:var(--measure);line-height:1.4}.letter__body{font-size:var(--text-md);color:var(--color-ink);max-width:var(--measure);line-height:1.75}.letter__body p+p{margin-top:var(--space-md)}.letter__body em{font-family:var(--font-display);letter-spacing:-.005em;font-size:1.08em;font-style:normal}.letter__body .place{font-family:var(--font-display);font-size:1.05em;font-style:normal}.inline-mark{color:var(--color-ink);background-image:linear-gradient(currentColor,currentColor),linear-gradient(var(--color-ink-3),var(--color-ink-3));transition:background-size .32s var(--ease-out),color var(--dur-short) var(--ease-out);background-position:0 100%,0 100%;background-repeat:no-repeat;background-size:0 1px,100% 1px;align-items:baseline;gap:4px;padding-bottom:1px;font-weight:500;display:inline-flex}.inline-mark:hover{color:var(--color-accent);background-size:100% 1px,100% 1px}.currently{margin-top:var(--space-xl);align-items:center;gap:var(--space-2xs);padding:var(--space-2xs) var(--space-sm);border:1px solid var(--color-rule);border-radius:var(--radius-pill);background:var(--color-paper-2);font-size:var(--text-sm);color:var(--color-ink-2);flex-wrap:wrap;display:inline-flex}.currently__dot{background:var(--color-positive);border-radius:50%;flex-shrink:0;width:7px;height:7px;position:relative}.currently__dot:before{content:"";background:var(--color-positive);opacity:.35;animation:pulse-soft 2.4s var(--ease-in-out) infinite;border-radius:50%;position:absolute;inset:-3px}@keyframes pulse-soft{0%,to{opacity:0;transform:scale(.85)}50%{opacity:.35;transform:scale(1.4)}}@media(prefers-reduced-motion:reduce){.currently__dot:before{opacity:0;animation:none}}.currently__strong{color:var(--color-ink);font-weight:500}.section{padding-block:var(--space-2xl);border-top:1px solid var(--color-rule)}.section--tight{padding-block:var(--space-xl)}.section__head{font-family:var(--font-display);font-style:normal;font-size:var(--text-2xl);letter-spacing:-.01em;color:var(--color-ink);margin-bottom:var(--space-lg);max-width:var(--measure);line-height:1.1}.section__head em{color:var(--color-accent);font-style:normal}.section__intro{max-width:var(--measure);margin:calc(var(--space-sm) * -1) 0 var(--space-lg);color:var(--color-ink-2);font-size:var(--text-base);line-height:1.75}.capability-list{column-gap:var(--space-xl);row-gap:var(--space-lg);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.capability-row{padding-top:var(--space-md);border-top:1px solid var(--color-rule)}.problem-item__index{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em;color:var(--color-ink-3);font-variant-numeric:tabular-nums}.capability-row__tag{width:fit-content;margin:0 0 var(--space-2xs);background:var(--color-accent);border-radius:4px;padding:1px 6px;display:block}@supports (color:color-mix(in lab,red,red)){.capability-row__tag{background:color-mix(in oklch,var(--color-accent) 10%,transparent)}}.capability-row__tag{color:var(--color-accent);font-family:var(--font-mono);letter-spacing:.02em;font-size:.72em;line-height:1.2}.capability-row h3,.problem-item h3{color:var(--color-ink);font-size:var(--text-lg);margin:0;font-weight:500;line-height:1.2}.capability-row p,.problem-item p{margin-top:var(--space-2xs);color:var(--color-ink-2);font-size:var(--text-base);line-height:1.7}.problem-item__title-link{color:inherit;transition:color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out);border-bottom:1px solid #0000;align-items:center;gap:4px;padding-bottom:1px;display:inline-flex}.problem-item__title-link:hover{color:var(--color-accent);border-bottom-color:var(--color-accent)}.problem-list{border-top:1px solid var(--color-rule);flex-direction:column;display:flex}.problem-item{gap:var(--space-md);padding-block:var(--space-md);border-bottom:1px solid var(--color-rule);grid-template-columns:4ch minmax(0,1fr);align-items:start;display:grid}.problem-item:last-child{border-bottom:0}.work-list{gap:var(--space-xl);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.work-list--grid{gap:var(--space-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.work-list--grid>li{min-width:0}.work-list--grid .link-preview{width:100%;display:block}.work-item{gap:var(--space-md);grid-template-columns:48px minmax(0,1fr) auto;align-items:start;display:grid;position:relative}.work-item__primary{z-index:1;border-radius:inherit;text-indent:-9999px;background:0 0;position:absolute;inset:0;overflow:hidden}.work-item__primary:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.work-item__logo,.work-item__body,.work-item__arrow{pointer-events:none}.work-item__body a,.work-item__case{pointer-events:auto;z-index:2;position:relative}.work-item__logo{place-items:center;width:48px;height:48px;display:grid}.work-item__logo img{object-fit:cover;border-radius:var(--radius-pill);width:100%;height:100%;transition:transform var(--dur-short) var(--ease-out)}.work-item:hover .work-item__logo img{transform:scale(1.04)}.work-item__body{min-width:0}.work-item__name{font-family:var(--font-display);font-style:normal;font-size:var(--text-xl);letter-spacing:-.01em;color:var(--color-ink);margin-bottom:4px;line-height:1.1}.work-item__desc{font-size:var(--text-base);color:var(--color-ink-2);margin-bottom:var(--space-2xs);line-height:1.65}.work-item__arrow{width:34px;height:34px;color:var(--color-ink);border:1px solid var(--color-rule);border-radius:var(--radius-pill);transition:color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out),background-color var(--dur-short) var(--ease-out),transform var(--dur-med) var(--ease-out);justify-self:end;place-items:center;display:grid;transform:rotate(-8deg)}.work-item:hover .work-item__arrow,.work-item:focus-within .work-item__arrow{color:var(--color-accent);border-color:var(--color-accent);background-color:var(--color-accent-soft);transform:translate(3px,-3px)rotate(0)}.company-row{gap:var(--space-md);padding-block:var(--space-md);border-bottom:1px solid var(--color-rule);grid-template-columns:7ch 1fr auto;grid-template-areas:"year name role";align-items:start;display:grid}.company-row__year{grid-area:year}.company-row__name{grid-area:name}.company-row__role{grid-area:role}.company-row:last-child{border-bottom:0}.company-row__year{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-ink-3);letter-spacing:.02em;font-variant-numeric:tabular-nums;padding-top:4px}.company-row__name{align-items:center;gap:var(--space-2xs);font-size:var(--text-lg);color:var(--color-ink);width:fit-content;min-width:0;transition:color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out);border-bottom:1px solid #0000;padding-bottom:1px;font-weight:500;line-height:1.2;display:flex}.company-row__name:hover{color:var(--color-accent);border-bottom-color:var(--color-accent)}.company-row__logo{opacity:.7;filter:grayscale();width:auto;height:18px;transition:opacity var(--dur-short) var(--ease-out),filter var(--dur-short) var(--ease-out);border-radius:3px}.company-row:hover .company-row__logo{opacity:1;filter:none}.company-row__role{align-items:flex-end;gap:var(--space-2xs);text-align:right;flex-direction:column;padding-top:2px;display:flex}.company-row__role-line{font-family:var(--font-body);font-size:var(--text-md);color:var(--color-ink-2);line-height:1.25}.company-row__sub{align-items:center;gap:var(--space-sm);display:inline-flex}.company-row__place{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em;color:var(--color-ink-3);font-variant-numeric:tabular-nums}.closing{padding-block:var(--space-2xl) var(--space-xl);border-top:1px solid var(--color-rule)}.closing__line{font-family:var(--font-display);font-style:normal;font-size:var(--text-display-s);letter-spacing:-.01em;color:var(--color-ink);max-width:var(--measure);margin-bottom:var(--space-lg);overflow-wrap:anywhere;min-width:0;line-height:1.1}.closing__line em{color:var(--color-accent);font-style:normal}.closing__ctas{gap:var(--space-lg);flex-wrap:wrap;align-items:baseline;display:flex}.cta{align-items:baseline;gap:var(--space-2xs);font-size:var(--text-lg);color:var(--color-ink);border-bottom:1px solid var(--color-ink-3);transition:color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out);white-space:nowrap;padding-bottom:2px;font-weight:500;display:inline-flex}.cta__arrow{font-family:var(--font-mono);transition:transform var(--dur-short) var(--ease-out);font-size:.8em;display:inline-block}.cta:hover{color:var(--color-accent);border-bottom-color:var(--color-accent)}.cta:hover .cta__arrow{transform:translate(3px)}.cta--soft{color:var(--color-ink-2);border-bottom-color:var(--color-rule)}.signoff{margin-top:var(--space-2xl);color:var(--color-ink-2);font-size:var(--text-base);flex-direction:column;gap:4px;display:flex}.signoff__name{font-family:var(--font-display);font-style:normal;font-size:var(--text-xl);color:var(--color-ink)}.signoff__where{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;color:var(--color-ink-3);text-transform:uppercase}.footer{padding-block:var(--space-3xl) var(--space-2xl);background:var(--color-paper-2);margin-top:var(--space-2xl)}.footer__statement{font-family:var(--font-display);letter-spacing:-.015em;color:var(--color-ink);overflow-wrap:anywhere;min-width:0;max-width:14ch;font-size:clamp(2.5rem,7vw,4.5rem);font-style:normal;line-height:1.04}.footer__statement em{color:var(--color-accent);font-style:normal}.footer__meta{margin-top:var(--space-2xl);padding-top:var(--space-md);border-top:1px solid var(--color-rule);justify-content:space-between;align-items:baseline;gap:var(--space-md);flex-wrap:wrap;display:flex}.footer__meta-left,.footer__meta-right{align-items:baseline;gap:var(--space-md);font-size:var(--text-xs);color:var(--color-ink-3);font-family:var(--font-mono);letter-spacing:.02em;display:flex}.footer__link{color:var(--color-ink-2);transition:color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out);border-bottom:1px solid #0000;padding-bottom:1px}.footer__link:hover{color:var(--color-ink);border-bottom-color:var(--color-rule)}.page-fade{animation:page-fade-in .62s var(--ease-out) both}@keyframes page-fade-in{0%{opacity:0}to{opacity:1}}.work-item{padding:var(--space-xs);margin-inline:calc(var(--space-xs) * -1);transition:background-color var(--dur-short) var(--ease-out),transform var(--dur-short) var(--ease-out);border-radius:8px}.work-item:hover{background-color:var(--color-paper-2);transform:translateY(-1px)}@media(prefers-reduced-motion:reduce){.page-fade{animation:none}.work-item:hover{transform:none}}.section-nav{display:none}@media(min-width:1480px){.section-nav{right:calc(50% + var(--measure-wide) / 2 + var(--space-md));top:calc(4.5rem + clamp(var(--space-2xl),10vh,var(--space-3xl)));z-index:15;display:block;position:fixed}.section-nav__identity{margin-bottom:var(--space-sm);flex-direction:column;gap:3px;display:flex}.section-nav__name{font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:.07em;text-transform:uppercase;color:var(--color-ink);font-weight:600}.section-nav__role{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em;color:var(--color-ink-3)}.section-nav__list{padding:var(--space-sm) 0;gap:var(--space-xs);border-top:1px solid var(--color-rule);border-bottom:1px solid var(--color-rule);flex-direction:column;margin:0;list-style:none;display:flex}.section-nav__item{gap:var(--space-xs);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em;white-space:nowrap;color:var(--color-ink-3);transition:color var(--dur-short) var(--ease-out);grid-template-columns:2.5ch 1fr;padding:2px 0;display:grid}.section-nav__num{color:var(--color-accent);font-variant-numeric:tabular-nums}.section-nav__item:hover{color:var(--color-ink-2)}.section-nav__item.is-active{color:var(--color-ink)}}@media(min-width:1480px)and (prefers-reduced-motion:reduce){.section-nav__item,.section-nav.is-hidden{transition:none}}@media(max-width:640px){.nav__row{padding-block:var(--space-xs)}.nav__actions,.nav__links{gap:var(--space-sm)}.section{padding-block:var(--space-xl)}.capability-list{gap:var(--space-md);grid-template-columns:1fr}.problem-item{gap:var(--space-xs);grid-template-columns:1fr}.company-row{column-gap:var(--space-sm);row-gap:var(--space-3xs);padding-block:var(--space-sm);grid-template-columns:1fr auto;grid-template-areas:"name role""year role";align-items:start}.company-row__year{padding-top:2px}.company-row__role{padding-top:0}.company-row__role-line{font-size:var(--text-xs)}.company-row__place{font-size:.6875rem}.work-item{column-gap:var(--space-sm);grid-template-columns:40px minmax(0,1fr);grid-template-areas:"logo body";align-items:flex-start;row-gap:0}.work-item__logo{grid-area:logo;align-self:flex-start;width:40px;height:40px}.work-item__body{grid-area:body}.work-item__arrow{display:none}.footer__meta{flex-direction:column;align-items:flex-start}}.case{padding-top:clamp(var(--space-xl),8vh,var(--space-2xl));padding-bottom:var(--space-xl)}.case__back{align-items:center;gap:var(--space-2xs);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em;color:var(--color-ink-3);text-transform:lowercase;margin-bottom:var(--space-xl);transition:color var(--dur-short) var(--ease-out),transform var(--dur-short) var(--ease-out);display:inline-flex}.case__back:hover{color:var(--color-accent);transform:translate(-2px)}.case__header{gap:var(--space-md);padding-bottom:var(--space-lg);border-bottom:1px solid var(--color-rule);grid-template-columns:auto 1fr auto;align-items:center;display:grid}.case__logo{object-fit:contain;background:var(--color-paper-2);border:1px solid var(--color-rule);border-radius:12px;width:62px;height:62px;padding:6px}.case__head{min-width:0}.case__name{font-family:var(--font-display);font-style:normal;font-size:var(--text-3xl);letter-spacing:-.015em;color:var(--color-ink);margin:0;line-height:1.05}.case__meta{gap:var(--space-2xs) var(--space-xs);margin:var(--space-2xs) 0 0;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em;color:var(--color-ink-3);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.case__site{align-items:center;gap:var(--space-2xs);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em;color:var(--color-ink-2);padding:var(--space-2xs) var(--space-sm);border:1px solid var(--color-rule);border-radius:var(--radius-pill);transition:color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out),background-color var(--dur-short) var(--ease-out);white-space:nowrap;display:inline-flex}.case__site:hover{color:var(--color-accent);border-color:var(--color-accent);background-color:var(--color-accent)}@supports (color:color-mix(in lab,red,red)){.case__site:hover{background-color:color-mix(in oklch,var(--color-accent) 6%,transparent)}}.case__intro{margin:var(--space-lg) 0 0;color:var(--color-ink-2);font-size:var(--text-base);line-height:1.75}.company-row__case{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em;color:var(--color-ink-3);transition:color var(--dur-short) var(--ease-out),transform var(--dur-short) var(--ease-out);align-items:center;gap:4px;display:inline-flex}.company-row__case:hover{color:var(--color-accent);transform:translate(2px)}@media(max-width:640px){.case__header{row-gap:var(--space-sm);grid-template-columns:auto 1fr;grid-template-areas:"logo head""site site";align-items:start}.case__logo{border-radius:10px;grid-area:logo;width:48px;height:48px;padding:5px}.case__head{grid-area:head}.case__site{width:100%;padding-block:var(--space-xs);grid-area:site;justify-content:center;justify-self:stretch}.case__name{font-size:var(--text-2xl)}}.link-preview{width:fit-content;display:inline-block}.company-row>.link-preview{grid-area:name}.work-list .link-preview{width:100%;display:block}.link-preview__content{transform-origin:var(--radix-hover-card-content-transform-origin);z-index:50;pointer-events:none}.link-preview__card{background:var(--color-paper);border:1px solid var(--color-rule);width:fit-content;box-shadow:0 12px 32px var(--color-ink),0 2px 6px var(--color-ink);border-radius:12px;padding:4px}@supports (color:color-mix(in lab,red,red)){.link-preview__card{box-shadow:0 12px 32px color-mix(in oklch,var(--color-ink) 18%,transparent),0 2px 6px color-mix(in oklch,var(--color-ink) 10%,transparent)}}.link-preview__media{background:var(--color-paper-2);border-radius:8px;position:relative;overflow:hidden}.link-preview__media:before{content:"";background:linear-gradient(100deg,transparent 20%,var(--color-ink) 50%,transparent 80%);position:absolute;inset:0}@supports (color:color-mix(in lab,red,red)){.link-preview__media:before{background:linear-gradient(100deg,transparent 20%,color-mix(in oklch,var(--color-ink) 5%,transparent) 50%,transparent 80%)}}.link-preview__media:before{animation:skeleton-sweep 1.4s var(--ease-in-out) infinite;opacity:1;transition:opacity var(--dur-med) var(--ease-out)}.link-preview__media[data-loaded=true]:before{opacity:0;animation:none}.link-preview__media img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity var(--dur-med) var(--ease-out);border-radius:8px;display:block}.link-preview__media[data-loaded=true] img{opacity:1}@keyframes skeleton-sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.link-preview__media:before{animation:none}}@media(hover:none){.link-preview__content{display:none}}.letter__chips{margin-top:var(--space-xl)}.chips__list{align-items:center;gap:var(--space-sm);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.chip{border:1.5px dashed var(--color-ink-3);align-items:center;gap:8px;padding:7px 15px;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.chip{border:1.5px dashed color-mix(in oklch,var(--color-ink-3) 50%,var(--color-rule))}}.chip{border-radius:var(--radius-pill);transition:border-color var(--dur-short) var(--ease-out),background-color var(--dur-short) var(--ease-out),color var(--dur-short) var(--ease-out);background:0 0}.chip:hover{border-color:var(--color-accent);background-color:var(--color-accent-soft)}.chip:hover .chip__label{color:var(--color-accent)}@supports (color:color-mix(in lab,red,red)){.chip:hover .chip__label{color:color-mix(in oklch,var(--color-accent) 55%,var(--color-ink))}}.chip .tech-icon{vertical-align:0;width:17px;height:17px}.chip__label{font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-ink);white-space:nowrap;line-height:1}.metric{color:var(--color-accent);font-family:var(--font-display);letter-spacing:-.005em;white-space:nowrap;background:0 0;font-size:1.06em;font-style:normal;font-weight:500}.work-item--featured{background-color:var(--color-accent)}@supports (color:color-mix(in lab,red,red)){.work-item--featured{background-color:color-mix(in oklch,var(--color-accent) 3%,transparent)}}.work-item--featured{border:1px solid var(--color-rule-soft)}.work-item--featured:hover{background-color:var(--color-accent)}@supports (color:color-mix(in lab,red,red)){.work-item--featured:hover{background-color:color-mix(in oklch,var(--color-accent) 6%,transparent)}}.work-item--featured:hover{border-color:var(--color-rule)}.work-item__head{align-items:center;gap:var(--space-2xs);flex-wrap:wrap;margin-bottom:4px;display:flex}.work-item__badge{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent);border:1px solid var(--color-accent);font-size:.6875rem}@supports (color:color-mix(in lab,red,red)){.work-item__badge{border:1px solid color-mix(in oklch,var(--color-accent) 35%,var(--color-rule))}}.work-item__badge{background:var(--color-accent-soft);border-radius:var(--radius-pill);white-space:nowrap;padding:2px 7px;line-height:1}.work-item__tech{margin:var(--space-xs) 0 0;gap:var(--space-3xs) var(--space-2xs);flex-wrap:wrap;padding:0;list-style:none;display:flex}.work-item__tech li{font-family:var(--font-mono);letter-spacing:.02em;color:var(--color-ink-3);border:1px solid var(--color-rule-soft);border-radius:var(--radius-pill);background:var(--color-paper);white-space:nowrap;padding:2px 7px;font-size:.6875rem;line-height:1.4}.work-item__case{z-index:1;margin-top:var(--space-sm);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em;color:var(--color-accent);width:fit-content;transition:border-color var(--dur-short) var(--ease-out);border-bottom:1px solid #0000;align-items:center;gap:4px;padding-bottom:1px;display:inline-flex;position:relative}.work-item__case:hover{border-bottom-color:var(--color-accent)}.work-item__case:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:2px}@media(max-width:880px){.work-list--grid{gap:var(--space-sm);grid-template-columns:1fr}}.tech-icon{vertical-align:-2px;flex-shrink:0;width:14px;height:14px;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.stack-col__list li{align-items:center;display:flex}.work-item__tech li{align-items:center;gap:5px;display:inline-flex}.testimonials{margin-top:var(--space-md);max-width:var(--measure-wide)}.testimonials__list{--testimonials-dur:.72s;gap:var(--space-sm);max-height:760px;transition:max-height var(--testimonials-dur) var(--ease-in-out);flex-direction:column;display:flex;position:relative;overflow:hidden}.testimonials__list.is-expanded{max-height:none}.testimonial-card{gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--color-rule);border-radius:var(--radius-card);background:var(--color-paper-2);display:grid}.testimonial-card__head{align-items:center;gap:var(--space-sm);min-width:0;display:flex}.testimonial-card__company{object-fit:contain;opacity:.75;border-radius:6px;flex:none;width:28px;height:28px;margin-left:auto}.testimonial-card__avatar{object-fit:cover;border-radius:var(--radius-pill);border:1px solid var(--color-rule);background:var(--color-paper-3);flex:none;width:44px;height:44px}.testimonial-card__person{min-width:0}.testimonial-card__name{font-family:var(--font-body);font-size:var(--text-md);color:var(--color-ink);letter-spacing:-.005em;font-weight:500}.testimonial-card__role{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em;color:var(--color-ink-3);margin-top:2px}.testimonial-card__quote{font-family:var(--font-display);letter-spacing:-.005em;color:var(--color-ink);margin:0;font-size:clamp(1.0625rem,1.6vw,1.25rem);font-style:normal;line-height:1.55}.testimonial-card__quote p{margin:0}.testimonials__fade{pointer-events:none;opacity:1;background:linear-gradient(to bottom,transparent 0%,var(--color-paper) 55%,var(--color-paper) 100%);height:180px;position:absolute;inset:auto 0 0}@supports (color:color-mix(in lab,red,red)){.testimonials__fade{background:linear-gradient(to bottom,transparent 0%,color-mix(in oklch,var(--color-paper) 55%,transparent) 55%,var(--color-paper) 100%)}}.testimonials__fade{transition:opacity var(--testimonials-dur,.72s) var(--ease-out)}.testimonials__list.is-expanded .testimonials__fade{opacity:0}.testimonials__toggle{margin:var(--space-md) auto 0;border:1px solid var(--color-rule);border-radius:var(--radius-pill);background:var(--color-paper);width:40px;height:40px;color:var(--color-ink-2);cursor:pointer;transition:color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out),background-color var(--dur-short) var(--ease-out);justify-content:center;align-items:center;padding:0;display:flex}.testimonials__toggle:hover{color:var(--color-accent);border-color:var(--color-accent);background-color:var(--color-accent-soft)}.testimonials__toggle:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.testimonials__toggle svg{transition:transform var(--dur-short) var(--ease-out)}.testimonials__toggle[aria-expanded=true] svg{transform:rotate(180deg)}@media(prefers-reduced-motion:reduce){.testimonials__list,.testimonials__fade,.testimonials__toggle svg{transition:none}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
