:root{--vt-c-white: #ffffff;--vt-c-white-soft: #f8f8f8;--vt-c-white-mute: #f2f2f2;--vt-c-black: #181818;--vt-c-black-soft: #222222;--vt-c-black-mute: #282828;--vt-c-indigo: #2c3e50;--vt-c-green: #8ace00;--vt-c-green-light: #b4e051;--vt-c-green-lighter: #d7f1a8;--vt-c-green-dark: #5b8c00;--vt-c-green-darker: #2d4e00;--vt-c-divider-light-1: rgba(60, 60, 60, .29);--vt-c-divider-light-2: rgba(60, 60, 60, .12);--vt-c-divider-dark-1: rgba(84, 84, 84, .65);--vt-c-divider-dark-2: rgba(84, 84, 84, .48);--vt-c-text-light-1: var(--vt-c-indigo);--vt-c-text-light-2: rgba(60, 60, 60, .66);--vt-c-text-light-3: rgba(60, 60, 60, .38);--vt-c-text-dark-1: var(--vt-c-white);--vt-c-text-dark-2: rgba(235, 235, 235, .64);--vt-c-text-dark-3: rgba(235, 235, 235, .38)}:root{--color-background: var(--vt-c-white);--color-background-soft: var(--vt-c-white-soft);--color-background-mute: var(--vt-c-white-mute);--color-border: var(--vt-c-divider-light-2);--color-border-hover: var(--vt-c-divider-light-1);--color-heading: var(--vt-c-text-light-1);--color-text: var(--vt-c-text-light-1);--color-text-mute: var(--vt-c-text-light-2);--color-accent: var(--vt-c-green-dark);--color-accent-dark: var(--vt-c-green-darker);--color-accent-contrast: var(--vt-c-black);--section-gap: 160px}@media (prefers-color-scheme: dark){:root{--color-background: var(--vt-c-black);--color-background-soft: var(--vt-c-black-soft);--color-background-mute: var(--vt-c-black-mute);--color-border: var(--vt-c-divider-dark-2);--color-border-hover: var(--vt-c-divider-dark-1);--color-heading: var(--vt-c-text-dark-1);--color-text: var(--vt-c-text-dark-2);--color-text-mute: var(--vt-c-text-dark-3);--color-accent: var(--vt-c-green);--color-accent-dark: var(--vt-c-green-dark);--color-accent-contrast: var(--vt-c-black)}}@media (prefers-contrast: more){:root{--color-heading: var(--vt-c-black);--color-text: var(--vt-c-black);--color-text-mute: var(--vt-c-black);--color-accent: var(--vt-c-green-dark)}}@media (prefers-contrast: more) and (prefers-color-scheme: dark){:root{--color-heading: var(--vt-c-white);--color-text: var(--vt-c-white);--color-text-mute: var(--vt-c-white);--color-accent: var(--vt-c-green)}}@media print{:root{--color-heading: var(--vt-c-black);--color-text: var(--vt-c-black);--color-accent: var(--vt-c-green-dark)}}*,*:before,*:after{box-sizing:border-box;margin:0;font-weight:400}@media (prefers-reduced-motion: reduce){*{transition-duration:0s!important}}@media (prefers-reduced-motion: no-preference){html{scroll-behavior:smooth}}:target{scroll-margin-top:1em}body{min-height:100vh;color:var(--color-text);background:var(--color-background);transition:color .5s,background-color .5s;line-height:1.6;font-family:Work Sans,Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:16px;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media print{body{font-size:16px}}@font-face{font-family:Work Sans;font-display:swap;font-optical-sizing:auto;font-weight:100 900;font-style:normal;src:url(/fonts/WorkSans-VariableFont_wght.woff2) format("woff2")}@font-face{font-family:Work Sans;font-display:swap;font-optical-sizing:auto;font-weight:100 900;font-style:italic;src:url(/fonts/WorkSans-Italic-VariableFont_wght.woff2) format("woff2")}@font-face{font-family:Aleo;font-display:swap;font-optical-sizing:auto;font-weight:100 900;font-style:normal;src:url(/fonts/Aleo-VariableFont_wght.woff2) format("woff2")}@font-face{font-family:Aleo;font-display:swap;font-optical-sizing:auto;font-weight:100 900;font-style:italic;src:url(/fonts/Aleo-Italic-VariableFont_wght.woff2) format("woff2")}:root{--app-horizontal-padding: 4rem;--app-max-width: min(1280px, 90dvw - var(--app-horizontal-padding));--app-horizontal-gap: 2rem}#app{width:100%;font-weight:400;min-height:100dvh}@media screen{a{text-decoration:none;color:var(--color-accent);transition:box-shadow .4s;border-radius:3px}}@media screen{em{font-weight:500}}button,a.button{font-size:.9em;padding:.5em 1em;border:2px solid var(--color-accent);border-radius:3px;background-color:transparent;color:var(--color-accent);cursor:pointer;transition:background-color .4s}button:has(svg),a.button:has(svg){display:flex;align-items:center;gap:.5em}@media (hover: hover){a:hover:not(.button){--color: rgba(from var(--color-accent) r g b / .2);box-shadow:inset 0 0 0 99px var(--color),0 0 0 3px var(--color)}button:hover,a.button:hover{background-color:var(--color-accent);background-color:rgba(from var(--color-accent) r g b / .2)}}@media (max-width: 1023px){#app{padding:0 2rem}}@media (min-width: 1024px){body{display:flex;place-items:center}#app{display:grid;--half-width: calc((var(--app-max-width) - var(--app-horizontal-gap)) / 2);--half-padding: calc(var(--app-horizontal-padding) / 2);grid-template-columns:[full-width-start] var(--half-padding) 1fr [wide-start] 0 [header-start] var(--half-width) [header-end] var(--app-horizontal-gap) [content-start] var(--half-width) [content-end] 0 [wide-end] 1fr var(--half-padding) [full-width-end];grid-template-rows:auto;place-content:center}}@media (prefers-color-scheme: light){a,button,button *,.accent{font-weight:600}}a>svg{display:inline-block}.accent{color:var(--color-accent)}@media print{body{background:#fff}a{font-weight:400;color:inherit;text-decoration:none}a[href]:not(.no-preview):after{content:" (" attr(href) ")";word-break:break-all}button,.no-print,.no-print *{display:none!important}.page-break{page-break-after:always}.page-break-avoid{page-break-inside:avoid}img{filter:grayscale(100%)}}@media not print{.no-screen,.no-screen *{display:none}.pad-bottom{height:calc(100% + 10em)}em[title]{cursor:help;text-decoration:underline dotted}}.lowercase{text-transform:lowercase}.first-letter:first-letter{text-decoration:underline var(--color-accent)}.sr-only{position:absolute;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0;z-index:9999}.sr-only-focusable:active,.sr-only-focusable:focus{width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}h1,h2,h3,h4,h5,h6{font-family:Aleo,serif}@page{size:A4;margin:11mm 17mm 17mm}.navigation-bar[data-v-fee794a8]{position:sticky;top:0;grid-area:full-width;grid-row:1;display:grid;grid-template-columns:subgrid;align-items:center;padding:10px;border-bottom:1px solid var(--color-border);background-color:var(--color-background);z-index:999}@media not (prefers-reduced-transparency: reduce){.navigation-bar[data-v-fee794a8]{background-color:rgb(from var(--color-background) r g b / .8);-webkit-backdrop-filter:blur(1em);backdrop-filter:blur(1em)}}.ghost-bar[data-v-fee794a8]{display:none}@media (max-width: 1023px){.navigation-bar[data-v-fee794a8]{position:fixed;left:0;right:0}.ghost-bar[data-v-fee794a8]{height:60px;display:block}}.content[data-v-fee794a8]{grid-area:wide;display:flex;gap:1em}.back-button[data-v-fee794a8]{cursor:pointer;border:none;aspect-ratio:1;padding:.2em;border-radius:1000px;height:40px;justify-content:center}.back-button[data-v-fee794a8]:dir(rtl){transform:rotateY(180deg)}.title[data-v-fee794a8]{font-size:1.5em;font-weight:700}@media screen and (not (prefers-contrast: more)){.animated-background[data-v-cadf72e0]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;overflow:hidden;filter:blur(10em);-webkit-user-select:none;user-select:none;pointer-events:none}.circle[data-v-cadf72e0]{position:absolute;border-radius:50%;aspect-ratio:1;background-color:var(--color);translate:-50% -50%;animation-iteration-count:infinite;animation-timing-function:linear;opacity:.25}.circle--1[data-v-cadf72e0]{width:700px;top:50%;left:50%;animation-duration:30s;transform-origin:0 0;transform:rotate(0);animation-name:rotate-cadf72e0}.circle--2[data-v-cadf72e0]{width:600px;top:50%;left:50%;animation-duration:80s;transform-origin:100% 100%;transform:rotate(89deg);animation-name:rotate-cadf72e0}.circle--3[data-v-cadf72e0]{width:500px;top:50%;left:50%;animation-duration:70s;transform-origin:0 100%;transform:rotate(179deg);animation-name:rotate-cadf72e0}.circle--4[data-v-cadf72e0]{width:400px;top:50%;left:50%;animation-duration:60s;transform-origin:100% 0;transform:rotate(269deg);animation-name:rotate-cadf72e0}.circle--5[data-v-cadf72e0]{width:300px;top:50%;left:50%;animation-duration:50s;transform-origin:0 0;transform:rotate(359deg);animation-name:rotate-cadf72e0}.circle--6[data-v-cadf72e0]{width:200px;top:50%;left:50%;animation-duration:40s;transform-origin:100% 100%;transform:rotate(45deg);animation-name:rotate-cadf72e0}.circle--7[data-v-cadf72e0]{width:100px;top:50%;left:50%;animation-duration:30s;transform-origin:0 100%;transform:rotate(135deg);animation-name:rotate-cadf72e0}.circle--8[data-v-cadf72e0]{width:50px;top:50%;left:50%;animation-duration:20s;transform-origin:100% 0;transform:rotate(225deg);animation-name:rotate-cadf72e0}}@media (prefers-reduced-motion: reduce){.circle[data-v-cadf72e0]{animation-play-state:paused}}@keyframes rotate-cadf72e0{0%{rotate:0deg}to{rotate:360deg}}.scroll-to-top-container[data-v-872c4c0c]{position:absolute;top:0;left:0}.scroll-to-top[data-v-872c4c0c]{position:fixed;bottom:1em;right:1em;padding:.7em;background-color:var(--color-accent);color:var(--color-accent-contrast);border:none;border-radius:50%;aspect-ratio:1;cursor:pointer;pointer-events:none;opacity:0;z-index:999;transition:opacity .3s}.scroll-to-top.visible[data-v-872c4c0c]{pointer-events:auto;opacity:1}@media print{.scroll-to-top[data-v-872c4c0c]{display:none}}footer[data-v-39cbeb1c]{grid-row:999;grid-column:wide;display:grid;place-items:center;text-align:center;gap:.5em;color:var(--color-text-mute);padding-block:2em}@media print{footer[data-v-39cbeb1c]{position:fixed;bottom:0;left:0;right:0;padding-block:1em;margin-bottom:-1em}}.icon-link[data-v-894cd030]{display:flex;place-content:center;align-items:center;aspect-ratio:1;width:28px}header[data-v-2245eccb]{display:flex;flex-direction:column;align-items:center;gap:1em}.brand[data-v-2245eccb]{text-align:center}.brand h1[data-v-2245eccb]{font-size:2.2em;letter-spacing:.03em;color:var(--color-heading)}.profile-picture-container[data-v-2245eccb]{display:inline-block;position:relative}.badge[data-v-2245eccb]{position:absolute;top:8px;left:8px;background-color:var(--color-background-mute);color:var(--color-text);padding:.25em .5em;border-radius:.5em;display:flex;align-items:center;gap:.25em}.profile-picture[data-v-2245eccb]{border-radius:50%;border:2px solid var(--color-background-mute);-webkit-user-select:none;user-select:none;margin:0 auto;display:block}.location[data-v-2245eccb]{display:flex;align-items:center;gap:.5em}.icon-link[data-v-2245eccb]{display:flex;place-content:center;align-items:center;aspect-ratio:1;width:28px}.contacts[data-v-2245eccb]{display:flex;gap:1em}.contacts-print[data-v-2245eccb]>*{margin-bottom:.5em;display:flex;align-items:center;place-content:center;gap:.5em;white-space:nowrap}nav[data-v-2245eccb]{display:flex;flex-direction:column;align-items:center;gap:.5em}.name[data-v-2245eccb]{position:relative}.name[data-v-2245eccb]:after{content:"";position:absolute;bottom:.46em;display:inline-block;width:.7ch;height:1em;margin-left:.2ch;border-bottom:3px solid var(--color-accent);animation:blink-2245eccb 1s infinite step-end;cursor:text}@media (prefers-reduced-motion: reduce){.name[data-v-2245eccb]:after{display:none}}@media (prefers-reduced-motion: no-preference){@keyframes blink-2245eccb{0%{opacity:1}50%{opacity:0}to{opacity:1}}}.skill-badge[data-v-de6eba93]{overflow:hidden;position:relative;background-image:radial-gradient(circle at -1em 0,rgba(from var(--color, var(--color-background-mute)) r g b / 30%) 0%,transparent 100%);display:inline-flex;align-items:flex-start;justify-content:space-between;gap:.5em;padding:.5em .7em;border-radius:.4em;border:1px solid rgb(from var(--color-border) r g b / 1);cursor:default}.skill-badge[data-v-de6eba93]:not(:has(.skill-logo-halo)){background-image:none;background-color:rgba(from var(--color-background) r g b / .4)}.skill-icon[data-v-de6eba93]{color:var(--color, var(--color-text));align-self:flex-start}.skill-icon[data-v-de6eba93]>*{display:block}.skill-name[data-v-de6eba93]{text-align:right;white-space:nowrap;line-height:1.2;font-weight:600;color:var(--color-heading);z-index:1}.skill-logo-halo[data-v-de6eba93]{position:absolute;top:0;left:0;right:0;bottom:0;filter:blur(4px);opacity:.2;color:var(--color, var(--color-background-mute))}.skill-logo-halo[data-v-de6eba93]>*{position:absolute;right:0;bottom:0;transform:translate(25%,25%);width:6em;height:6em}@keyframes ghost-de6eba93{0%{opacity:0;translate:-30% -20%}50%{opacity:.2}to{opacity:0;translate:0 0}}@media (prefers-contrast: more){@keyframes ghost-de6eba93{0%{opacity:0;translate:-30% -20%}50%{opacity:.05}to{opacity:0;translate:0 0}}}@media (prefers-reduced-motion: no-preference){.skill-logo-halo[data-v-de6eba93]{opacity:0;animation-name:ghost-de6eba93;animation-duration:12s;animation-delay:var(--animation-delay, 2s);animation-iteration-count:infinite;animation-timing-function:ease-in-out;will-change:opacity,transform}}@media (prefers-color-scheme: dark){.skill-badge[data-v-de6eba93]{background-image:radial-gradient(circle at -1em 0,rgba(from var(--color-dark, var(--color, var(--color-background-mute))) r g b / 30%) 0%,transparent 100%)}.skill-icon[data-v-de6eba93]{color:var(--color-dark, var(--color, var(--color-text)))}.skill-logo-halo[data-v-de6eba93]{color:var(--color-dark, var(--color, var(--color-background-mute)))}}@media print{.skill-badge[data-v-de6eba93]{background-image:none;justify-content:start;align-items:center}.skill-badge .skill-icon[data-v-de6eba93]{vertical-align:middle}.skill-icon[data-v-de6eba93]{color:var(--color-text)}.skill-logo-halo[data-v-de6eba93]{display:none}}@media screen{.collapsed[data-v-d03c9688],.collapsed[data-v-d03c9688]>*{cursor:pointer}.skills-container[data-v-d03c9688]{--background: rgba(from var(--color-background) r g b / .4);--border: rgba(from var(--color-border) r g b / 1)}.skills-container.collapsed[data-v-d03c9688]:hover .skill-name,.skills-container.collapsed[data-v-d03c9688]:focus-within .skill-name,.skills-container.collapsed:hover .more-skills[data-v-d03c9688],.skills-container.collapsed:focus-within .more-skills[data-v-d03c9688]{color:var(--color-accent)!important}.skills-container.collapsed[data-v-d03c9688] .skill-name,.skills-container.collapsed .more-skills[data-v-d03c9688]{transition:color .2s}.more-skills[data-v-d03c9688]{padding:.2em .7em;border-radius:.4em;border:1px solid var(--border);color:var(--color-text-mute);background-color:var(--background)}.more-skills[data-v-d03c9688]:after{content:"click for more";font-size:.8em}.hidden[data-v-d03c9688]{display:none}}.expandable-text[data-v-2465db38]{position:relative;white-space:pre-wrap}@media screen{.collapsed[data-v-2465db38]{display:flex;display:-webkit-box;-webkit-line-clamp:var(--max-lines, 2);line-clamp:var(--max-lines, 2);-webkit-box-orient:vertical;overflow:hidden;cursor:pointer;transition:color .2s}.collapsed[data-v-2465db38]:hover,.collapsed[data-v-2465db38]:focus-within{color:var(--color-accent);background:none}.collapsed[data-v-2465db38]:after{content:"click for more";font-size:.8em;position:absolute;right:0;bottom:0;color:var(--color-accent);background:var(--color-background);padding:.2em .4em 0;border-radius:.5em;cursor:pointer;place-content:center}.full-text[data-v-2465db38]{display:none}}@media screen{.external-link[data-v-d681d4eb]{color:var(--color-accent);text-decoration:none}.external-link-icon[data-v-d681d4eb]{vertical-align:text-top}}@media print{.external-link-icon[data-v-d681d4eb]{display:none}}.project-entry[data-v-1148e050]{display:grid;grid-template-areas:"icon image heading" "icon image description" "icon image skills";grid-template-columns:auto 1fr auto;row-gap:.5em}@media screen and (max-width: 600px){.project-entry[data-v-1148e050]{grid-template-areas:"icon" "image" "heading" "description" "skills";grid-template-columns:1fr;column-gap:1em}}.project-heading[data-v-1148e050]{grid-area:heading;display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:0 1em}.project-title[data-v-1148e050]{color:var(--color-heading)}.project-title a[data-v-1148e050]{color:inherit;text-decoration:none;font-family:var(--font-family-heading)}.project-period[data-v-1148e050],.project-location[data-v-1148e050]{font-size:.8em;color:var(--color-text-mute)}.project-location svg[data-v-1148e050]{width:1em;height:1em}.project-link[data-v-1148e050]{margin-inline-start:auto;align-self:start}.project-description[data-v-1148e050]{grid-area:description}.project-icon[data-v-1148e050]{grid-area:icon;place-self:center;margin-inline-end:.5em;font-size:2.5em;color:var(--color-heading)}.project-entry p[data-v-1148e050]{grid-area:description}.project-image[data-v-1148e050]{position:relative;padding:0;margin-inline-end:1em;grid-area:image;border-radius:.5em;border:1px solid var(--color-border);aspect-ratio:4/3;width:10em;place-self:center;overflow:hidden}.project-image img[data-v-1148e050]{width:100%;height:100%;object-fit:cover;display:block}.project-image .external-link-icon[data-v-1148e050]{position:absolute;top:8px;right:8px;color:#fffb;font-size:1.5em;filter:drop-shadow(0 0 2px #444)}.skill-set[data-v-1148e050]{font-size:.9em;grid-area:skills;display:flex;flex-wrap:wrap;gap:.5em}.project-entry[data-v-1148e050]:has(+.project-entry){padding-bottom:1.5em}.project-entry+.project-entry[data-v-1148e050]{border-top:1px solid var(--color-border);padding-top:1.5em}main section[data-v-52ecacf4]:not(:last-child){margin-bottom:3em}main h2[data-v-52ecacf4]{margin-bottom:1em;font-size:2em;color:var(--color-heading)}main h3[data-v-52ecacf4]{margin:1.5em 0 .5em;font-size:1.5em}main p[data-v-52ecacf4]{margin:1.7em 0}.skill-set[data-v-52ecacf4]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1em}.skill-set[data-v-52ecacf4]>*{min-height:70px}@media print{.skill-set[data-v-52ecacf4]{display:flex;flex-wrap:wrap}.skill-set[data-v-52ecacf4]>*{min-height:auto}}.header-container[data-v-b58319ef]{grid-area:header;height:100%}@media (max-width: 1023px){.header-container[data-v-b58319ef]{grid-row:1}.content[data-v-b58319ef]{grid-row:2}}@media not print{header[data-v-b58319ef],main[data-v-b58319ef]{padding-top:5em}}.header[data-v-b58319ef]{position:sticky;top:0}.content[data-v-b58319ef]{grid-area:content}main[data-v-bb6f45c9]{grid-row:2;grid-area:wide;text-align:center;place-content:center;min-height:calc(100vh - 12em)}.alert-icon[data-v-bb6f45c9]{font-size:10em}p[data-v-bb6f45c9]{font-size:1.5em;margin:1em 0}
