*,:after,:before{box-sizing:border-box;padding:0;margin:0}html{color-scheme:dark}body,html{min-height:100dvh}body{display:grid;grid-template-rows:auto 1fr auto;color:var(--neutral);background-color:var(--gray-400)}::-webkit-scrollbar{width:3px;background:transparent;display:none}::-webkit-scrollbar-thumb{background-color:var(--blue-200);border-radius:100vw}.projects-page{display:grid;place-items:center;padding:2rem}.page{isolation:isolate}.header{position:sticky;inset:0 0 auto;z-index:1;view-transition-name:header}.main{view-transition-name:main-content}.footer{text-align:center;background-color:rgba(0,0,0,.25);font-size:.75rem;font-weight:700;padding:.25em 0;view-transition-name:footer}.heading{font-size:clamp(2rem,7vw,4rem)}::view-transition-old(main-content){animation:page-exit .2s ease-in-out both;opacity:1;filter:blur(0)}::view-transition-new(main-content){animation:page-entry .2s ease-in-out both;opacity:0;filter:blur(10px)}@keyframes page-exit{0%{opacity:1;filter:blur(0)}to{opacity:0;filter:blur(10px)}}@keyframes page-entry{0%{opacity:0;filter:blur(10px)}to{opacity:1;filter:blur(0)}}.hero-heading,.resume-heading{view-transition-name:name-heading}.navbar{padding:.75em 1em;display:grid;grid-template-columns:auto 1fr;background-color:var(--primary);transition:all .2s ease;z-index:10}.nav-scroll{box-shadow:0 0 4px 0 #000}.nav-links{display:flex;justify-content:flex-end;align-items:center;padding-right:1em;gap:5em;list-style:none;view-transition-name:nav-links}.nav-link{color:currentColor;text-decoration:none;font-weight:700;position:relative;outline:none;height:-moz-max-content;height:max-content}.nav-link:after{content:"";--size:0.125em;position:absolute;inset:auto 0 calc(-1 * var(--size));height:var(--size);opacity:0;background-color:var(--secondary);transition:all .2s ease;transform-origin:top center}.nav-link[data-link-active=true]:after{opacity:1}.nav-link:is(:hover,:focus):after{opacity:1;scale:1 2}.hamburger{position:relative;isolation:isolate;cursor:pointer;display:none}.hamburger,.hamburger-icon{width:2rem;height:2rem}.bar{fill:var(--secondary);transform-origin:center;transition:y .1s ease .1s,rotate .1s ease}.hamburger[data-open=true] .hamburger-icon .bar{transition:y .1s ease,rotate .1s ease .1s}.hamburger[data-open=true] .hamburger-icon .top{y:45;rotate:45deg}.hamburger[data-open=true] .hamburger-icon .mid{scale:0 0}.hamburger[data-open=true] .hamburger-icon .bot{y:45;rotate:-45deg}.hamburger-checkbox{all:unset;position:absolute;inset:0;z-index:1}@media screen and (width < 750px){.navbar{padding:.75em;grid-template-columns:auto 1fr auto;position:relative}.logo-link{grid-column:3}.nav-links{flex-direction:column;font-size:1.5rem;gap:.25em;grid-column:1/-1;grid-row:2;transform-origin:top center;transition:all .2s ease;align-items:start;background-color:inherit;position:absolute;inset:100% -.5em auto;padding:.5em;z-index:-1;translate:-100% 0;opacity:0}.nav-link{pointer-events:none}.navbar[data-nav-open=true] .nav-links{translate:0 0;opacity:1}.navbar[data-nav-open=true] .nav-link{pointer-events:all}.nav-link:after{display:none}.hamburger{display:block}}[data-animate]{transition:all .5s ease}[data-animate=fade-in]{opacity:0}[data-animate=fade-from-right]{opacity:0;translate:var(--fade-offset,3rem) 0}[data-animate=fade-from-left]{opacity:0;translate:calc(-1 * var(--fade-offset, 3rem)) 0}[data-animate=fade-from-up]{opacity:0;translate:0 calc(-1 * var(--fade-offset, 3rem))}[data-animate=fade-from-down]{opacity:0;translate:0 var(--fade-offset,3rem)}.animate [data-animate=fade-in],[data-animate=fade-in].animate{opacity:1}.animate [data-animate=fade-from-down],.animate [data-animate=fade-from-left],.animate [data-animate=fade-from-right],.animate [data-animate=fade-from-up],[data-animate=fade-from-down].animate,[data-animate=fade-from-left].animate,[data-animate=fade-from-right].animate,[data-animate=fade-from-up].animate{opacity:1;translate:0 0}.logo{height:1.5rem}.logo .letter{fill:none;stroke:var(--secondary);stroke-linejoin:miter;stroke-width:8px;stroke-miterlimit:15;stroke-dasharray:0 100;animation:NavLogoLoad 1s ease-out forwards}@keyframes NavLogoLoad{to{stroke-dasharray:100 0}}.hero{background:var(--secondary);display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;padding:2rem 3rem;gap:.5rem 4rem;overflow-x:hidden}.hero ::-moz-selection{background-color:var(--primary)}.hero ::selection{background-color:var(--primary)}.hero-heading{line-height:1}.hero-summary{grid-row:2/-1;grid-column:1;text-wrap:balance;font-size:clamp(1rem,1.25vw,3rem)}.profile-img{border-radius:2rem;box-shadow:0 0 .75em 0 var(--gray-300);grid-row:1/-1}.profile-img img{display:block;border-radius:inherit;aspect-ratio:1/1;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}@media screen and (width < 900px){.hero{padding:2rem 1rem;gap:1rem}.hero-heading{grid-row:1;grid-column:1;font-size:clamp(2rem,13.5vw,5rem)}.hero-summary{font-size:1rem;grid-row:2;grid-column:1/-1}.profile-img{grid-column:2;grid-row:1;border-radius:1rem}.profile-img img{width:100%;height:100%}}.skills{padding:2rem;display:grid;overflow-x:hidden}.skills-heading{text-align:center;margin-bottom:1rem}.skill-title{margin-bottom:.5em}.skills-section{margin-bottom:2rem}.skill-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--card-size),1fr));place-items:center;gap:2rem;--card-size:8rem}.skill-card{width:var(--card-size);background-color:var(--gray-300);padding:2rem;position:relative;display:grid;place-items:center;border-radius:1rem;transform-style:preserve-3d;--flip-time:200ms;--z-offset:50px;animation:CardFlipBack var(--flip-time) ease forwards}.card-wrapper:is(:hover,:focus) .skill-card{animation:CardFlip var(--flip-time) ease forwards}.skill-card svg{transform:translateZ(var(--z-offset))}.skill-text{display:grid;place-items:center;position:absolute;inset:0;background-color:var(--gray-300);border-radius:inherit;transform-style:preserve-3d;transform:translateZ(-1px)}.skill-name{font-size:1rem;text-align:center;font-weight:300;transform:rotateY(180deg) translateZ(var(--z-offset))}@keyframes CardFlip{0%{transform:rotateY(0)}to{transform:rotateY(180deg)}}@keyframes CardFlipBack{0%{transform:rotateY(180deg)}to{transform:rotateY(1turn)}}@media screen and (width < 900px){.skills{padding:1rem}.skill-title{font-size:1rem}.skill-cards{--card-size:25vw;gap:1rem}.skill-card{padding:1rem}.skill-name{font-size:.75rem}}.homepage{display:grid}.resume-summary{font-size:clamp(.5rem,1.25vw,3rem);--fade-offset:1rem;text-wrap:balance}.experience-item{grid-template-areas:"position date" "organisation organisation" "description description"}.experience-position{grid-area:position;text-wrap:balance}.experience-organisation{grid-area:organisation;font-style:italic}.experience-date{grid-area:date;font-size:.75em}.experience-description{grid-area:description;font-size:.75em;margin-inline-start:2em}.education-item{grid-template-areas:"program date" "institute institute" "grade grade"}.education-program{grid-area:program;text-wrap:balance}.education-institute{grid-area:institute;font-style:italic;margin-bottom:.25em}.education-date{grid-area:date;font-size:.9em}.education-grade{grid-area:grade;font-size:.9em}.project-item{grid-template-areas:"title date" "organisation organisation" "description description"}.project-title{grid-area:title;text-wrap:balance}.project-organisation{grid-area:organisation;font-style:italic;margin-bottom:.25em}.project-date{grid-area:date;font-size:.9em}.project-description{margin-inline-start:1em;font-size:.8em}.certifications-item{grid-template-areas:"title link" "organisation organisation"}.certifications-title{grid-area:title;text-wrap:balance}.certifications-organisation{grid-area:organisation;font-style:italic}.certifications-link{color:var(--neutral);text-decoration:none;transition:-webkit-text-decoration .25s ease-in-out;transition:text-decoration .25s ease-in-out;transition:text-decoration .25s ease-in-out,-webkit-text-decoration .25s ease-in-out}.certifications-link:hover{text-decoration:underline}.resume-page{display:grid;padding:1rem;grid-template-columns:1fr auto}.resume-heading{font-size:clamp(2rem,5vw,5rem);line-height:1.25;position:relative;margin-inline-start:1.5rem}.resume-heading:after{content:"";position:absolute;inset:auto auto 0 0;height:.1em;min-width:0;--length:13.5ch;background-color:var(--secondary);transition:all .25s ease-out;animation:headingUnderline .5s ease-out forwards}@media (width < 500px){.resume-heading:after{--length:12.5ch}}@keyframes headingUnderline{to{min-width:var(--length)}}.resume-btn{background-color:var(--secondary);place-self:center;border-radius:.5rem;border:none;padding:.5em .75em;aspect-ratio:1/1;font-size:clamp(.75rem,1.5vw,3rem);font-weight:700;color:var(--neutral);text-decoration:none;transition:all .1s ease}.resume-btn:hover{background-color:var(--blue-100);color:var(--gray-400)}.resume-download{height:1em;width:1em}.resume-section{grid-column:1/-1;display:grid;gap:1em;grid-template-columns:auto 1fr;grid-auto-rows:auto;font-size:clamp(.6rem,1vw,3rem);padding:1.5em 3em 1.5em 1em;border-radius:1rem}.resume-section-heading{writing-mode:vertical-lr;text-orientation:mixed;line-height:1.25;text-align:end;rotate:180deg;border-block-start:.2em solid var(--secondary);background-color:var(--gray-400);padding-block-start:.15em;padding-inline:.05em .25em;z-index:1}.resume-item{display:grid;grid-template-columns:1fr auto;grid-column:2;--fade-offset:1rem;border-bottom:1px solid var(--neutral);padding-bottom:.25em}.contact-page{display:grid;place-items:center;padding:1rem;height:100%}.contact{display:grid;place-items:center}.contact-card{background:var(--primary);padding:2em;border-radius:.5em;font-size:1.5rem;display:grid;grid-template-columns:1fr auto;gap:1em}.contact-card a{color:var(--neutral);text-decoration:none;transition:all .1s ease}.contact-card a:hover{text-decoration:underline;color:var(--secondary)}.contact-card-content,.contact-card-socials{display:grid;gap:.5em}.contact-card-socials a{display:flex;flex-direction:row-reverse;place-items:center;gap:.5em}.contact-socials-icon{font-size:1.75rem;color:var(--neutral);height:1em;width:1em;transition:all .1s ease}.contact-card a:hover .contact-socials-icon{color:var(--secondary)}@media screen and (width < 900px){.contact-card{font-size:.75rem;padding:1em;grid-template-columns:auto}.contact-card-socials a{flex-direction:row}.contact-socials-icon{font-size:1rem;color:var(--neutral);height:1em;width:1em}}:root{font-family:Montserrat,sans-serif;font-size:16px;line-height:1.5;font-weight:400;font-synthesis:weight;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;--black:#000;--white:#fff;--gray-100:#eaeaea;--gray-200:#bfcbdc;--gray-300:#333;--gray-400:#1c1c1c;--blue-100:#80d4ff;--blue-200:#47b5ff;--blue-300:#0077e6;--primary:#333;--secondary:#0077e6;--neutral:#eaeaea}@font-face{font-family:__Montserrat_ba98fe;font-style:italic;font-weight:100 900;font-display:swap;src:url(/_next/static/media/11f947ee28183728-s.woff2) format("woff2");unicode-range:U+0460-052f,U+1c80-1c88,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:__Montserrat_ba98fe;font-style:italic;font-weight:100 900;font-display:swap;src:url(/_next/static/media/a5eacdf9ca01c2aa-s.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:__Montserrat_ba98fe;font-style:italic;font-weight:100 900;font-display:swap;src:url(/_next/static/media/564c57b1d64bbe08-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Montserrat_ba98fe;font-style:italic;font-weight:100 900;font-display:swap;src:url(/_next/static/media/374e8b918a6e5beb-s.woff2) format("woff2");unicode-range:U+0100-02af,U+0304,U+0308,U+0329,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__Montserrat_ba98fe;font-style:italic;font-weight:100 900;font-display:swap;src:url(/_next/static/media/2c8baa44e47ba07e-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__Montserrat_ba98fe;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/aec774cbe1963439-s.woff2) format("woff2");unicode-range:U+0460-052f,U+1c80-1c88,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:__Montserrat_ba98fe;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/634216363f5c73c1-s.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:__Montserrat_ba98fe;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/d83fe381bb17eb77-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Montserrat_ba98fe;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/88325a2c1fede2f4-s.woff2) format("woff2");unicode-range:U+0100-02af,U+0304,U+0308,U+0329,U+1e00-1e9f,U+1ef2-1eff,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:__Montserrat_ba98fe;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e1c529c04de64b40-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__Montserrat_Fallback_ba98fe;src:local("Arial");ascent-override:84.95%;descent-override:22.03%;line-gap-override:0.00%;size-adjust:113.95%}.__className_ba98fe{font-family:__Montserrat_ba98fe,__Montserrat_Fallback_ba98fe}