@font-face{font-family:DM Sans Variable;font-style:normal;font-display:optional;font-weight:100 1000;src:url(/fonts/dm-sans-latin-opsz-normal.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans Variable;font-style:normal;font-display:optional;font-weight:100 1000;src:url(/fonts/dm-sans-latin-ext-opsz-normal.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:EB Garamond Variable;font-style:normal;font-display:optional;font-weight:400 800;src:url(/fonts/eb-garamond-latin-wght-normal.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:EB Garamond Variable;font-style:normal;font-display:optional;font-weight:400 800;src:url(/fonts/eb-garamond-latin-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:EB Garamond Variable;font-style:italic;font-display:optional;font-weight:400 800;src:url(/fonts/eb-garamond-latin-wght-italic.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:EB Garamond Variable;font-style:italic;font-display:optional;font-weight:400 800;src:url(/fonts/eb-garamond-latin-ext-wght-italic.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}*,:before,:after{box-sizing:border-box}*{margin:0}html,body{height:100%}body{-webkit-font-smoothing:antialiased;line-height:1.5}img,picture,video,canvas,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--font-display:"DM Sans Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-text:"DM Sans Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-serif:"EB Garamond Variable", ui-serif, Georgia, Cambria, "Times New Roman", serif;--text-headline:clamp(2.5rem, 1.86rem + 2.86vw, 4rem);--text-subheadline:clamp(1.5rem, 1.29rem + .95vw, 2rem);--text-paragraph:1.125rem;--text-small:.875rem;--text-nav:1rem;--text-quote:clamp(1.375rem, 1.215rem + .72vw, 1.75rem);--text-lead:clamp(1.25rem, 1.195rem + .24vw, 1.375rem);--weight-headline:700;--weight-subheadline:500;--weight-paragraph:300;--weight-emphasis:500;--weight-strong:600;--weight-quote:400;--leading-tight:1.1;--leading-snug:1.35;--leading-relaxed:1.7;--tracking-tight:-.02em;--tracking-normal:0;--page-pad-inline:clamp(24px, 6vw, 64px);--page-pad-block:clamp(56px, min(9vw, 8vh), 120px);--toggle-corner-inset:20px;--space-section:clamp(88px, 12vw, 168px);--space-entry:clamp(56px, 7vw, 72px);--space-paragraph:20px;--globe-size:min(320px, 100%);--globe-label-gap:8px;--content-width:600px;--layout-gap:clamp(48px, 6vw, 112px);--layout-max-width:1160px;--text-headline-side:clamp(2.25rem, .4rem + 2.9vw, 3rem);--cloud-disc-size:48px;--cloud-height:clamp(320px, 52vw, 380px);--cloud-dim-opacity:.3;--cloud-dim-time:.3s;--spring-smooth:linear(0, .22, .4, .55, .67, .77, .84, .9, .94, .97, .99, 1);--spring-snappy:linear(0, .18, .42, .68, .89, 1.04, 1.11, 1.12, 1.09, 1.05, 1.02, 1);--spring-bounce:linear(0, .06, .24, .49, .78, 1.04, 1.21, 1.29, 1.28, 1.22, 1.13, 1.05, .99, .96, .97, .99, 1.01, 1.01, 1);--spring-landing:linear(0, .076, .274, .54, .824, 1.079, 1.274, 1.392, 1.429, 1.396, 1.312, 1.197, 1.076, .966, .882, .832, .816, .83, .866, .915, .968, 1.015, 1.05, 1.072, 1.079, 1.073, 1.057, 1.036, 1.014, .994, .978, .969, .966, .969, .975, .984, .994, 1.003, 1.009, 1.013, 1);--spring-landing-time:.45s}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root{--dark-color-background:#00030e;--dark-color-headline:#fff;--dark-color-paragraph:#b3b5c7;--dark-color-button:#bca4ff;--dark-color-button-text:#00030e;--dark-color-accent-text:#bca4ff;--dark-color-selection:#bca4ff;--dark-color-selection-text:#00030e;--dark-color-line:#191b22;--dark-grainient-1:#52418a;--dark-grainient-2:#241a52;--dark-grainient-3:#00030e;--dark-grainient-opacity:.92;--dark-globe-base:#9a9cb3;--dark-globe-marker:#bca4ff;--dark-globe-glow:#52418a;--dark-globe-dark:1;--dark-color-illustration-stroke:#191b22;--dark-color-illustration-main:#9a9cb3;--dark-color-illustration-highlight:#bca4ff;--dark-color-illustration-secondary:#fff;--dark-color-illustration-tertiary:#bca4ff;--dark-color-disc:#f2f1f9;--dark-color-disc-border:#0000002e;--dark-color-disc-text:var(--dark-color-background);--dark-disc-shadow:0 1px 2px #00000073;--dark-disc-shadow-lift:0 14px 34px #0009;--light-color-background:#fbfbfb;--light-color-headline:#000;--light-color-paragraph:#5a5a5a;--light-color-button:#bca4ff;--light-color-button-text:#00030e;--light-color-accent-text:#1241ff;--light-color-selection:#1241ff38;--light-color-selection-text:#000;--light-color-line:#cfcfcf;--light-grainient-1:#c9b8ff;--light-grainient-2:#bcc9ff;--light-grainient-3:#f9f8ff;--light-grainient-opacity:.7;--light-globe-base:#fff;--light-globe-marker:#103dff;--light-globe-glow:#c9b8ff;--light-globe-dark:0;--light-color-illustration-stroke:#000;--light-color-illustration-main:#646464;--light-color-illustration-highlight:#bca4ff;--light-color-illustration-secondary:#000;--light-color-illustration-tertiary:#bca4ff;--light-color-disc:#fff;--light-color-disc-border:var(--light-color-line);--light-color-disc-text:var(--light-color-headline);--light-disc-shadow:0 1px 3px #00000014;--light-disc-shadow-lift:0 16px 30px #00000029}@supports (color:lab(0% 0 0)){:root{--light-color-accent-text:lab(37.5765% 50.2518 -102.218);--light-color-selection:lab(37.5765% 50.2518 -102.218/.22)}}:root,:root[data-theme=dark]{--color-background:var(--dark-color-background);--color-headline:var(--dark-color-headline);--color-paragraph:var(--dark-color-paragraph);--color-button:var(--dark-color-button);--color-button-text:var(--dark-color-button-text);--color-accent-text:var(--dark-color-accent-text);--color-selection:var(--dark-color-selection);--color-selection-text:var(--dark-color-selection-text);--color-line:var(--dark-color-line);--grainient-1:var(--dark-grainient-1);--grainient-2:var(--dark-grainient-2);--grainient-3:var(--dark-grainient-3);--grainient-opacity:var(--dark-grainient-opacity);--globe-base:var(--dark-globe-base);--globe-marker:var(--dark-globe-marker);--globe-glow:var(--dark-globe-glow);--globe-dark:var(--dark-globe-dark);--color-illustration-stroke:var(--dark-color-illustration-stroke);--color-illustration-main:var(--dark-color-illustration-main);--color-illustration-highlight:var(--dark-color-illustration-highlight);--color-illustration-secondary:var(--dark-color-illustration-secondary);--color-illustration-tertiary:var(--dark-color-illustration-tertiary);--color-disc:var(--dark-color-disc);--color-disc-border:var(--dark-color-disc-border);--color-disc-text:var(--dark-color-disc-text);--disc-shadow:var(--dark-disc-shadow);--disc-shadow-lift:var(--dark-disc-shadow-lift)}:root[data-theme=light]{--color-background:var(--light-color-background);--color-headline:var(--light-color-headline);--color-paragraph:var(--light-color-paragraph);--color-button:var(--light-color-button);--color-button-text:var(--light-color-button-text);--color-accent-text:var(--light-color-accent-text);--color-selection:var(--light-color-selection);--color-selection-text:var(--light-color-selection-text);--color-line:var(--light-color-line);--grainient-1:var(--light-grainient-1);--grainient-2:var(--light-grainient-2);--grainient-3:var(--light-grainient-3);--grainient-opacity:var(--light-grainient-opacity);--globe-base:var(--light-globe-base);--globe-marker:var(--light-globe-marker);--globe-glow:var(--light-globe-glow);--globe-dark:var(--light-globe-dark);--color-illustration-stroke:var(--light-color-illustration-stroke);--color-illustration-main:var(--light-color-illustration-main);--color-illustration-highlight:var(--light-color-illustration-highlight);--color-illustration-secondary:var(--light-color-illustration-secondary);--color-illustration-tertiary:var(--light-color-illustration-tertiary);--color-disc:var(--light-color-disc);--color-disc-border:var(--light-color-disc-border);--color-disc-text:var(--light-color-disc-text);--disc-shadow:var(--light-disc-shadow);--disc-shadow-lift:var(--light-disc-shadow-lift)}@media (prefers-color-scheme:light){:root:not([data-theme]){--color-background:var(--light-color-background);--color-headline:var(--light-color-headline);--color-paragraph:var(--light-color-paragraph);--color-button:var(--light-color-button);--color-button-text:var(--light-color-button-text);--color-accent-text:var(--light-color-accent-text);--color-selection:var(--light-color-selection);--color-selection-text:var(--light-color-selection-text);--color-line:var(--light-color-line);--grainient-1:var(--light-grainient-1);--grainient-2:var(--light-grainient-2);--grainient-3:var(--light-grainient-3);--grainient-opacity:var(--light-grainient-opacity);--globe-base:var(--light-globe-base);--globe-marker:var(--light-globe-marker);--globe-glow:var(--light-globe-glow);--globe-dark:var(--light-globe-dark);--color-illustration-stroke:var(--light-color-illustration-stroke);--color-illustration-main:var(--light-color-illustration-main);--color-illustration-highlight:var(--light-color-illustration-highlight);--color-illustration-secondary:var(--light-color-illustration-secondary);--color-illustration-tertiary:var(--light-color-illustration-tertiary);--color-disc:var(--light-color-disc);--color-disc-border:var(--light-color-disc-border);--color-disc-text:var(--light-color-disc-text);--disc-shadow:var(--light-disc-shadow);--disc-shadow-lift:var(--light-disc-shadow-lift)}}::selection{background-color:var(--color-selection);color:var(--color-selection-text)}::selection{background-color:var(--color-selection);color:var(--color-selection-text)}html{overflow-x:clip}body{background-color:var(--color-background);color:var(--color-paragraph);padding:var(--page-pad-block) var(--page-pad-inline);font-family:var(--font-text);font-weight:var(--weight-paragraph);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;transition:background-color .4s,color .4s}@media (prefers-reduced-motion:reduce){body{transition:none}}.grainient{z-index:-1;pointer-events:none;opacity:var(--grainient-opacity,1);position:fixed;inset:0}.globe{width:var(--globe-size);aspect-ratio:1;margin-inline:auto;margin-top:calc(var(--space-paragraph) * 2);opacity:0;position:relative;transform:scale(.9)}.globe-in{opacity:1;transition:opacity var(--spring-landing-time) ease-out, transform var(--spring-landing-time) var(--spring-landing);transform:none}@media (prefers-reduced-motion:reduce){.globe{opacity:1;transition:none;transform:none}}:root:not([data-theme]) .globe{display:none}.globe-canvas{cursor:grab;touch-action:pan-y;width:100%;height:100%;display:block}.globe-canvas:active{cursor:grabbing}.globe-label{transform:translate(calc(var(--globe-label-x,-200%) - 50%), calc(var(--globe-label-y,-200%) - 100% - var(--globe-label-gap)));background:color-mix(in srgb, var(--color-background) 65%, transparent);border:1px solid var(--color-line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:var(--text-small);font-weight:var(--weight-emphasis);letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent-text);white-space:nowrap;pointer-events:none;opacity:var(--cobe-visible-hamburg,0);border-radius:999px;padding:3px 10px;transition:opacity .2s;position:absolute;top:0;left:0}.skip-link{z-index:100;background:var(--color-headline);color:var(--color-background);font-family:var(--font-display);font-size:var(--text-small);font-weight:var(--weight-emphasis);background-image:none;border-radius:8px;margin:10px;padding:10px 18px;text-decoration:none;transition:transform .2s;position:fixed;top:0;left:0;transform:translateY(calc(-100% - 20px))}.skip-link:hover{color:var(--color-background);background-image:none}.skip-link:focus-visible{outline:2px solid var(--color-accent-text);outline-offset:3px;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.skip-link{transition:none}}#main-content:focus{outline:none}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.theme-toggle{top:var(--page-pad-inline);right:var(--page-pad-inline);z-index:10;position:fixed}@media (width>=1024px){.theme-toggle{top:var(--toggle-corner-inset);right:var(--toggle-corner-inset)}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.layout{max-width:var(--layout-max-width);margin:0 auto}.layout>main{margin-top:var(--space-section)}@media (width>=1024px){.layout{column-gap:var(--layout-gap);grid-template-columns:minmax(0,2fr) minmax(0,3fr);display:grid}.layout>main{margin-top:0}.sidebar{top:var(--page-pad-block);height:calc(100vh - var(--page-pad-block) * 2);flex-direction:column;display:flex;position:sticky}.sidebar .headline{font-size:var(--text-headline-side)}}.side-nav{display:none}@media (width>=1024px){.side-nav{margin-top:var(--space-entry);display:block}}.side-nav ul{margin:0;padding:0;list-style:none}.side-nav-link{--squiggle-stroke-color:transparent;--squiggle-hover-color:var(--color-headline);--squiggle-hump-width:22px;--squiggle-amplitude:3;font-size:var(--text-nav);font-weight:var(--weight-emphasis);letter-spacing:.06em;text-transform:uppercase;color:var(--color-paragraph);padding-block:10px;transition:color .2s;display:inline-block}.side-nav-link:hover{--squiggle-stroke-color:var(--color-headline)}.side-nav-link[active]{--squiggle-stroke-color:var(--color-accent-text);color:var(--color-headline)}@media (prefers-reduced-motion:reduce){.side-nav-link{transition:none}}.section{max-width:var(--content-width);margin:0 auto;scroll-margin-block-start:var(--page-pad-block)}.section+.section{margin-top:var(--space-section)}.section:last-of-type{min-height:calc(100vh - var(--page-pad-block))}.headline{font-family:var(--font-serif);color:var(--color-headline);font-size:var(--text-headline);font-weight:var(--weight-headline);line-height:var(--leading-tight);letter-spacing:var(--tracking-normal);margin:0 0 12px}.subheadline{font-family:var(--font-serif);color:var(--color-accent-text);font-size:var(--text-subheadline);font-weight:var(--weight-subheadline);line-height:var(--leading-snug);letter-spacing:var(--tracking-normal);margin:0}h2.subheadline{align-items:center;gap:.5em;width:fit-content;margin-bottom:32px;display:flex}.heading-anchor,.heading-anchor:hover{color:inherit;background-image:none}.heading-icon{--heading-icon-size:1.4em;--stack-tint-middle:70%;--stack-tint-bottom:45%;--stack-drop-duration:.3s;--stack-stagger:90ms;--stack-touchdown:.4;--stack-landing-impact:.12;--stack-hover-gap:2px;--stack-hover-time:.25s;inline-size:var(--heading-icon-size);block-size:var(--heading-icon-size);flex:none}.heading-icon svg{block-size:100%;inline-size:100%;display:block}.stack-layer,.stack-layer polygon{transform-box:fill-box;transform-origin:50% 100%}.stack-layer-top polygon{fill:var(--color-accent-text)}.stack-layer-middle polygon{fill:color-mix(in oklab, var(--color-accent-text) var(--stack-tint-middle), var(--color-background))}.stack-layer-bottom polygon{fill:color-mix(in oklab, var(--color-accent-text) var(--stack-tint-bottom), var(--color-background))}@media (prefers-reduced-motion:no-preference){.heading-icon.will-pop:not(.is-popped) .stack-layer{opacity:0}.heading-icon.is-popped .stack-layer{animation:stack-drop var(--stack-drop-duration) var(--spring-snappy) backwards}.heading-icon.is-popped .stack-layer-bottom{--stack-drop-from:-9px}.heading-icon.is-popped .stack-layer-middle{--stack-drop-from:-11px;animation-delay:var(--stack-stagger);animation-duration:var(--spring-landing-time);animation-timing-function:var(--spring-landing)}.heading-icon.is-popped .stack-layer-top{--stack-drop-from:-14px;animation-delay:calc(var(--stack-stagger) * 2);animation-duration:var(--spring-landing-time);animation-timing-function:var(--spring-landing)}.heading-icon.is-popped .stack-layer-bottom polygon{animation:stack-absorb-bottom .4s ease-out calc(var(--stack-drop-duration) * var(--stack-touchdown))}.heading-icon.is-popped .stack-layer-middle polygon{animation:stack-absorb-middle .36s ease-out calc(var(--stack-stagger) + var(--spring-landing-time) * var(--stack-landing-impact))}.heading-icon.is-popped .stack-layer-top polygon{animation:stack-squash .15s ease-out calc(var(--stack-stagger) * 2 + var(--spring-landing-time) * var(--stack-landing-impact))}@keyframes stack-drop{0%{opacity:0;transform:translateY(var(--stack-drop-from))}}@keyframes stack-squash{45%{transform:scale(1.06,.88)}}@keyframes stack-absorb-bottom{10%{transform:scale(1.05,.9)}15%{transform:scale(1.07,.86)}30%{transform:scale(1.01,.99)}38%{transform:scale(1.09,.83)}60%{transform:scale(.98,1.03)}}@keyframes stack-absorb-middle{10%{transform:scale(1.06,.88)}22%{transform:scale(1.01,.98)}35%{transform:scale(1.08,.85)}62%{transform:scale(.98,1.03)}}.subheadline .stack-layer{transition:transform var(--stack-hover-time) var(--spring-snappy)}.subheadline:hover .stack-layer-middle{transform:translateY(calc(-1 * var(--stack-hover-gap)))}.subheadline:hover .stack-layer-top{transform:translateY(calc(-2 * var(--stack-hover-gap)))}}.paragraph{font-family:var(--font-text);color:var(--color-paragraph);font-size:var(--text-paragraph);font-weight:var(--weight-paragraph);line-height:var(--leading-relaxed);margin:var(--space-paragraph) 0}.paragraph-lead{font-size:var(--text-lead);color:color-mix(in oklab, var(--color-headline) 40%, var(--color-paragraph))}.paragraph strong,.paragraph b{font-weight:var(--weight-emphasis);color:var(--color-headline)}.globe-distance-line{display:grid}.globe-distance-line>span{grid-area:1/1}.globe-distance-sizer{visibility:hidden;-webkit-user-select:none;user-select:none}.pull-quote{margin:calc(var(--space-paragraph) * 2) auto;text-align:center;max-width:40ch}.pull-quote blockquote{font-family:var(--font-serif);font-style:italic;font-size:var(--text-quote);font-weight:var(--weight-quote);color:var(--color-headline);line-height:var(--leading-snug);text-wrap:balance}.pull-quote figcaption{margin-top:calc(var(--space-paragraph) / 2);font-size:var(--text-small);color:var(--color-paragraph)}a{color:var(--color-paragraph);background-image:linear-gradient(var(--color-paragraph), var(--color-paragraph));background-position:0 100%;background-repeat:no-repeat;background-size:100% 1px;border-radius:2px;text-decoration:none;transition:color .2s,background-size .2s}a:hover{color:var(--color-headline);background-image:linear-gradient(var(--color-headline), var(--color-headline))}a:focus-visible{outline:2px solid var(--color-paragraph);outline-offset:3px}button{background-color:var(--color-button);color:var(--color-button-text);font-family:var(--font-display);font-size:var(--text-paragraph);font-weight:var(--weight-emphasis);letter-spacing:var(--tracking-tight);cursor:pointer;border:none;border-radius:6px;padding:12px 24px;transition:opacity .2s}button:hover{opacity:.8}@keyframes fadeInFromScroll{0%{opacity:0}}@keyframes fadeReduced{0%{opacity:0}}.section>h2,.section>p,.experience-list>li>.role-body,.project-list>li{animation:fadeInFromScroll var(--spring-smooth) both;animation-timeline:view();animation-range:entry cover 50%}.experience-list>li>.timeline-node{animation:linear both fadeReduced;animation-timeline:view();animation-range:entry}@media (prefers-reduced-motion:reduce){.section>h2,.section>p,.experience-list>li>.role-body,.project-list>li{animation-name:fadeReduced;animation-timing-function:linear}}.experience{--timeline-gutter:clamp(28px, 7vw, 36px);--timeline-node:12px;--timeline-line:2px;position:relative}.experience-list{padding:0 0 0 var(--timeline-gutter);margin:0;list-style:none;position:relative}.experience-list>li{position:relative}.experience-list>li:last-child>.role-body{animation-range:entry}.experience-list>li+li{margin-top:var(--space-entry)}.timeline{left:calc(var(--timeline-gutter) / 2 - var(--timeline-line) / 2);width:var(--timeline-line);top:calc(var(--timeline-node) / 2);bottom:calc(var(--timeline-node) / 2);position:absolute}.timeline-track,.timeline-fill{width:var(--timeline-line);border-radius:var(--timeline-line);position:absolute;top:0;left:0}.timeline-track{background:var(--color-line);bottom:0}.timeline-fill{background:var(--color-headline);height:0}.timeline-node{left:calc(-1 * var(--timeline-gutter) / 2 - var(--timeline-node) / 2);width:var(--timeline-node);height:var(--timeline-node);box-sizing:border-box;background:var(--color-background);border:var(--timeline-line) solid color-mix(in srgb, var(--color-paragraph) 35%, transparent);z-index:1;transition:background .3s ease, border-color .3s ease, transform .3s var(--spring-snappy);border-radius:50%;position:absolute;top:4px}.timeline-node.is-active{background:var(--color-headline);border-color:var(--color-headline);transform:scale(1.15)}.role-date{font-size:var(--text-small);font-weight:var(--weight-emphasis);letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent-text)}.role-title{flex-direction:column;gap:1px;margin-top:8px;display:flex}.role-company{font-family:var(--font-display);font-size:var(--text-lead);font-weight:var(--weight-strong);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);color:var(--color-headline)}.role-position{font-family:var(--font-text);font-size:var(--text-paragraph);font-weight:var(--weight-emphasis);line-height:var(--leading-snug);color:var(--color-paragraph)}.role-summary{font-size:var(--text-paragraph);line-height:var(--leading-relaxed);color:var(--color-paragraph);margin-top:16px}.tech-tags{font-size:var(--text-small);color:var(--color-paragraph);flex-wrap:wrap;gap:8px 12px;margin-top:20px;padding:0;line-height:1.6;list-style:none;display:flex}.tech-tags li{align-items:center;gap:6px;display:inline-flex}.tech-tag-icon{box-sizing:border-box;background:var(--color-disc);border:1px solid var(--color-disc-border);object-fit:contain;border-radius:50%;flex-shrink:0;width:20px;height:20px;padding:3px}.project-list{--shot-gap:12px;--shot-lift:-3px;margin:0;padding:0;list-style:none}.project-list>li+li{margin-top:var(--space-entry)}.project-shots{gap:var(--shot-gap);grid-template-columns:1fr 1fr;margin-top:20px;display:grid}.project-shot{border:1px solid var(--color-line);border-radius:8px;margin:0;overflow:hidden}.project-shot-wide{grid-column:1/-1}.project-shot-button{cursor:zoom-in;background:0 0;border:0;border-radius:0;width:100%;padding:0;display:block}.project-shot:has(.project-shot-button:focus-visible){outline:2px solid var(--color-paragraph);outline-offset:3px}.project-shot img{width:100%;height:auto;display:block}@media (prefers-reduced-motion:no-preference){.project-shot{transition:transform .3s var(--spring-smooth)}.project-shot:hover,.project-shot:has(:focus-visible){transform:translateY(var(--shot-lift))}}.lightbox{border:1px solid var(--color-line);background:var(--color-background);border-radius:8px;max-width:min(90vw,1280px);margin:auto;padding:0}.lightbox-close{z-index:1;background:color-mix(in srgb, var(--color-background) 70%, transparent);width:40px;height:40px;color:var(--color-headline);border:1px solid var(--color-line);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:50%;justify-content:center;align-items:center;padding:0;transition:background .2s,border-color .2s;display:inline-flex;position:absolute;top:10px;right:10px}.lightbox-close svg{width:22px;height:22px;display:block}.lightbox-close:hover{background:var(--color-background);border-color:var(--color-paragraph);opacity:1}.lightbox-close:focus-visible{outline:2px solid var(--color-accent-text);outline-offset:2px}.lightbox::backdrop{--lightbox-backdrop-blur:8px;-webkit-backdrop-filter:blur(var(--lightbox-backdrop-blur));backdrop-filter:blur(var(--lightbox-backdrop-blur));background:#0009}.lightbox-img{cursor:zoom-out;width:100%;height:auto;display:block}@media (prefers-reduced-motion:no-preference){.lightbox[open]{animation:lightboxIn .3s var(--spring-smooth) both}@keyframes lightboxIn{0%{opacity:0;transform:scale(.96)}}}.skill-cloud-caption{text-align:center;font-size:var(--text-small);font-weight:var(--weight-emphasis);letter-spacing:.06em;text-transform:uppercase;color:var(--color-accent-text);margin:clamp(40px,7vw,64px) 0 0}.skill-cloud-filter{border:0;margin:16px 0 0;padding:0;display:none}.skill-cloud-filter.cloud-ready{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.skill-filter-option{cursor:pointer}.skill-filter-option input{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skill-filter-option span{font-size:var(--text-small);font-weight:var(--weight-emphasis);letter-spacing:.06em;text-transform:uppercase;color:var(--color-paragraph);border:1px solid #0000;border-radius:999px;padding:4px 14px;display:inline-block}.skill-filter-option input:checked+span{color:var(--color-disc-text);background:var(--color-disc);border-color:var(--color-disc-border)}.skill-filter-option input:focus-visible+span{outline:2px solid var(--color-accent-text);outline-offset:2px}.skill-cloud{opacity:0;flex-wrap:wrap;justify-content:center;gap:20px 28px;margin:20px 0 0;padding:0;list-style:none;display:flex}.skill-cloud.cloud-ready{height:var(--cloud-height);display:block;position:relative;overflow:visible}.skill-cloud.cloud-ready.cloud-visible{opacity:1;transition:opacity .4s}@media (prefers-reduced-motion:reduce){.skill-cloud.cloud-ready.cloud-visible{transition:none}}.skill-disc{flex-direction:column;align-items:center;gap:8px;width:84px;margin:0;display:flex}.cloud-ready .skill-disc{left:var(--x);top:var(--y);width:var(--cloud-disc-size);height:var(--cloud-disc-size);transform:translate(calc(-50% + var(--px,0px)), calc(-50% + var(--py,0px)));transition:opacity var(--cloud-dim-time) ease;display:block;position:absolute}.skill-disc-scale{width:var(--cloud-disc-size);height:var(--cloud-disc-size);background:var(--color-disc);border:1px solid var(--color-disc-border);box-shadow:var(--disc-shadow);border-radius:50%;place-items:center;display:grid}.cloud-ready .skill-disc-scale{width:100%;height:100%;transform:translateY(var(--lift,0px)) scale(var(--s,1));transition:transform .38s var(--spring-snappy), box-shadow .38s ease;will-change:transform}.cloud-ready .skill-disc.is-lifted .skill-disc-scale{box-shadow:var(--disc-shadow-lift)}.skill-disc img{object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:58%;height:58%}.skill-disc-name{font-size:var(--text-small);color:var(--color-paragraph);text-align:center;line-height:1.3}.cloud-ready .skill-disc-name{background:var(--color-headline);color:var(--color-background);font-size:var(--text-small);font-weight:var(--weight-emphasis);white-space:nowrap;opacity:0;pointer-events:none;z-index:3;border-radius:7px;padding:5px 10px;transition:opacity .16s,transform .16s;position:absolute;top:calc(100% + 4px);left:50%;transform:translate(-50%)translateY(-4px)}.cloud-ready .skill-disc-name:after{content:"";border:5px solid #0000;border-bottom-color:var(--color-headline);position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.cloud-ready .skill-disc:hover .skill-disc-name,.cloud-ready .skill-disc:focus-within .skill-disc-name{opacity:1;transform:translate(-50%)translateY(0)}.skill-cloud[data-filter=frontend] .skill-disc:not([data-domains~=frontend]),.skill-cloud[data-filter=backend] .skill-disc:not([data-domains~=backend]),.skill-cloud[data-filter=tooling] .skill-disc:not([data-domains~=tooling]){opacity:var(--cloud-dim-opacity)}.skill-cloud[data-filter] .skill-disc:hover,.skill-cloud[data-filter] .skill-disc:focus-within{opacity:1}@media (prefers-reduced-motion:reduce){.cloud-ready .skill-disc-scale,.cloud-ready .skill-disc-name{transition:none}}.contact-email-line{margin:calc(var(--space-paragraph) * 1.5) 0 0}.contact-email{--squiggle-hover-color:var(--color-accent-text);font-family:var(--font-display);font-size:var(--text-lead);font-weight:var(--weight-emphasis);letter-spacing:var(--tracking-tight);color:var(--color-headline)}
