body{margin:0}:root{--cv-primary: #00684a;--cv-primary-dark: #00553a;--cv-focus: #3a7a9c;--cv-bg: #f8fafb;--cv-sidebar-bg: #f0f2ef;--cv-header-text: #0b3b2e;--cv-body-text: #1a1f1c;--cv-shadow: 0 2px 16px rgba(0, 0, 0, .07);--cv-dividers: #c2c7c0;--cv-dates: #7d8582;--hover-transition: transform .75s cubic-bezier(.4, 1.3, .6, 1);--animation-intensity: .5;--cv-width: 649px;--cv-height: 840px}.cv-page-container{display:flex;position:relative;justify-content:center;align-items:center;width:100%;height:100vh;height:100dvh;z-index:2}.cv-main-container{display:flex;flex-direction:column;gap:12px;width:var(--cv-width);height:var(--cv-height);padding:40px;background:var(--cv-bg);border-radius:19px;box-shadow:var(--cv-shadow);box-sizing:border-box;position:relative;overflow:hidden;transition:transform .75s cubic-bezier(.4,1.3,.6,1);user-select:none!important;-webkit-user-select:none!important;will-change:transform}.cv-main-container:hover{transform:scale(calc(1 + .005 * var(--animation-intensity))) translateY(calc(-4px * var(--animation-intensity)))}.cv-body{color:var(--cv-body-text);font-size:11px;font-family:Inter,sans-serif}.cv-header{display:flex;flex-shrink:0;justify-content:space-between;align-items:center}.cv-name{font-size:40px;font-weight:800;color:var(--cv-primary);margin:0;letter-spacing:-1px;font-family:Stack Sans Notch,Inter,sans-serif;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;background-image:radial-gradient(circle at var(--glare-x, 50%) var(--glare-y, 50%),#30856c 0%,var(--cv-primary) 40%,var(--cv-primary-dark) 100%)}.cv-contact{display:flex;flex-direction:column;align-items:flex-end;font-size:11px;color:#222;gap:3px}.cv-contact-link{color:inherit;text-decoration:none;cursor:pointer;transition:opacity .2s}.cv-contact-link:hover,.cv-contact-link:focus{opacity:.75;color:inherit}.cv-content-grid{flex:1 1 auto;display:grid;grid-template-columns:194px 1fr;height:auto;gap:5px;overflow:visible}.cv-sidebar{display:flex;position:relative;flex-direction:column;gap:20px;background:var(--cv-sidebar-bg);border-left:3px solid var(--cv-primary);padding:12px 5px 0 10px;box-sizing:border-box;max-height:100%;width:194px;overflow:visible;transition:var(--hover-transition)}.cv-sidebar:hover{transform:translate(calc(3px * var(--animation-intensity)))}.cv-sidebar:before{content:"";position:absolute;left:0;top:0;bottom:0;width:0px;background:var(--cv-primary);transition:width .5s cubic-bezier(.4,1.3,.6,1),left .5s cubic-bezier(.4,1.3,.6,1);z-index:2;backface-visibility:hidden;-moz-backface-visibility:hidden;perspective:1000px;-moz-perspective:1000px;will-change:width,left}.cv-sidebar:hover:before{width:1px;left:-4px}@-moz-document url-prefix(){.cv-sidebar:before{display:none}.cv-sidebar:hover:before{transform:none}}.cv-main-content{min-width:0;padding:12px 0 0 10px;transition:var(--hover-transition)}.cv-main-content:hover{transform:translate(calc(3px * var(--animation-intensity)))}.cv-skills{display:flex;flex-direction:column;overflow:visible;gap:10px}.cv-skills-sections{display:flex;flex-direction:column;gap:10px}.cv-skills-sections>div{flex:1}.cv-skills ul{list-style-type:disc;list-style-position:outside;padding-left:18px;padding-bottom:4px;margin:0;font-size:11px;color:var(--cv-body-text);overflow:visible}h2{font-size:16px;color:var(--cv-header-text);font-weight:700;letter-spacing:.01em;margin:0;text-transform:none;border-bottom:1px solid var(--cv-dividers);font-family:Stack Sans Text,Inter,sans-serif}h3{margin:0}.cv-education{display:flex;flex-direction:column;gap:5px}.cv-education h3{font-size:12px;color:var(--cv-body-text);font-weight:700}.cv-education .cv-specialisation{font-size:11px}.cv-education .cv-university{font-size:10px}.cv-experience{display:flex;flex-direction:column;gap:10px}.cv-experience .cv-role{margin-bottom:2rem}.cv-experience .cv-dates{font-size:11px;color:var(--cv-dates);margin-bottom:8px}.cv-experience strong{color:inherit;font-weight:700}.cv-role ul{padding-left:18px}.pdf-download-portal{position:fixed;bottom:.5rem;left:50%;z-index:9999}.pdf-download-fab{margin:0;border-radius:15px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.pdf-download-btn{display:flex;align-items:center;gap:8px;color:#fff;text-decoration:none;padding:10px 14px;transition:transform .18s cubic-bezier(.4,1.3,.6,1)}.pdf-download-icon{width:1.8rem;height:1.8rem;flex-shrink:0;display:block}.pdf-download-label{font-size:16px;font-weight:600;letter-spacing:.02em;white-space:nowrap;font-family:Inter,sans-serif}.pdf-download-btn:focus{outline:2px solid var(--cv-focus)}.pdf-download-btn:hover{opacity:.75;color:#fff}@media(min-width:768px){.pdf-download-portal{bottom:.5rem;left:50%}.pdf-download-btn{padding:6px}.pdf-download-icon{width:24px;height:24px}.pdf-download-label{font-size:12px}}.cv-skills ul li,.cv-experience .cv-role li,.cv-education-entry,.cv-role-summary,.cv-role-header,.cv-skills-section,.cv-name{transition:transform .18s cubic-bezier(.4,1.3,.6,1);border-radius:.4em;padding:1px;margin-right:15px}.cv-skills ul li:hover,.cv-skills ul li:focus,.cv-experience .cv-role li:hover,.cv-experience .cv-role li:focus,.cv-education-entry:hover,.cv-education-entry:focus,.cv-role-summary:hover,.cv-role-summary:focus,.cv-role-header:hover,.cv-role-header:focus,.cv-skills-section:hover,.cv-skills-section:focus,.cv-name:hover,.cv-name:focus{transform:translate(calc(5px * var(--animation-intensity))) scale(calc(1 + .05 * var(--animation-intensity)));outline:none}.cv-contact-link{position:relative}.cv-contact-link:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:var(--cv-primary);border-radius:1px;transform:scaleX(0);transform-origin:left;transition:transform .25s cubic-bezier(.25,0,0,1);pointer-events:none}.cv-contact-link:hover:after,.cv-contact-link:focus:after{transform:scaleX(1);transition:transform .3s cubic-bezier(.25,0,0,1)}.is-scrolling .cv-main-container,.is-scrolling .cv-sidebar,.is-scrolling .cv-main-content,.is-scrolling .cv-skills ul li,.is-scrolling .cv-experience .cv-role li,.is-scrolling .cv-education-entry,.is-scrolling .cv-role-summary,.is-scrolling .cv-role-header,.is-scrolling .cv-skills-section{transition:none!important}[class^=click-anim-]{display:inline-block;cursor:pointer}.click-anim-pushback{transition:transform .15s cubic-bezier(.4,0,.6,1)}.click-anim-pushback.active{transform:scale(.85);transition:transform .15s cubic-bezier(.4,0,.6,1)}.click-anim-rubberband{transition:transform .15s cubic-bezier(.4,0,.6,1)}.click-anim-rubberband.active{transform:scaleX(.8) scaleY(1.1);transition:transform .15s cubic-bezier(.4,0,.6,1)}.click-anim-shake.active{animation:shake .4s cubic-bezier(.36,.07,.19,.97)}@keyframes shake{0%{transform:translate(0)}15%{transform:translate(-6px)}30%{transform:translate(6px)}45%{transform:translate(-4px)}60%{transform:translate(4px)}75%{transform:translate(-2px)}90%{transform:translate(2px)}to{transform:translate(0)}}.click-anim-colourflash{transition:filter .1s ease-out}.click-anim-colourflash.active{animation:colourflash .4s ease-out forwards}@keyframes colourflash{0%{filter:brightness(1)}20%{filter:brightness(2.5)}to{filter:brightness(1)}}.click-anim-floatup{transition:transform .15s cubic-bezier(.4,0,.6,1)}.click-anim-floatup.active{transform:translateY(-8px);transition:transform .15s cubic-bezier(.4,0,.6,1)}.click-anim-implode.active{animation:implode .5s cubic-bezier(.4,1.4,.6,1) forwards}@keyframes implode{0%{transform:scale(1)}25%{transform:scale(.1)}to{transform:scale(1)}}.click-anim-skewsnap.active{animation:skewsnap .4s cubic-bezier(.4,1.3,.6,1) forwards}@keyframes skewsnap{0%{transform:skew(0)}20%{transform:skew(-12deg)}60%{transform:skew(6deg)}to{transform:skew(0)}}.carousel-page-item{flex-shrink:0;width:100%;height:100vh;height:100dvh;scroll-snap-align:start;scroll-snap-stop:always;display:flex;flex-direction:column;overflow:visible}.carousel-arrow-btn{position:fixed;left:50%;transform:translate(-50%);color:#fff;padding:.5rem;z-index:10;outline:none;border:none;background:transparent;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5));transition:opacity .3s ease}.carousel-arrow-btn-top{top:.25rem}.carousel-arrow-btn-bottom{bottom:.25rem}.carousel-arrow-btn:enabled:hover{cursor:pointer;opacity:.75}.carousel-arrow-btn:disabled{opacity:0;cursor:default}.carousel-arrow-btn:focus-visible{outline:2px solid #3b82f6}@media(min-width:768px){.carousel-arrow-btn{padding:.5rem;font-size:1rem}}@media(max-width:767px){.carousel-arrow-btn{padding:1rem;font-size:1.6rem}}.aurora-bg-wrapper{z-index:-1;user-select:none;-webkit-user-select:none;pointer-events:none}.aurora-blob{position:absolute;border-radius:50%;filter:blur(80px);opacity:.7;mix-blend-mode:lighten;pointer-events:none;will-change:transform;transform:translateZ(0)}.aurora-blob-1{width:40vw;height:60vw;left:-20vw;top:-10vw;background:radial-gradient(circle at 30% 30%,#00c87a,var(--cv-primary) 30%,transparent 60%)}.aurora-blob-2{width:45vw;height:50vw;right:-10vw;top:0;background:radial-gradient(circle at 70% 0%,#c9a8ff,var(--cv-focus) 30%,transparent 60%)}.aurora-blob-3{width:50vw;height:50vw;left:20vw;bottom:-20vw;background:radial-gradient(circle at 50% 70%,#e8a030 10%,#e07050 40%,#d95f7a 70% 100%)}@media(max-width:768px){.aurora-bg-wrapper{-webkit-mask-image:linear-gradient(to bottom,transparent 0%,black 40%,black 60%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0%,black 40%,black 60%,transparent 100%)}.aurora-blob{filter:blur(50px);opacity:.9}.aurora-blob-1{width:90vw;height:90vw;left:-30vw;top:5vw;background:radial-gradient(circle at 30% 30%,#00c87a,var(--cv-primary) 40%,transparent 70%)}.aurora-blob-2{width:90vw;height:90vw;right:-30vw;top:5vw;background:radial-gradient(circle at 70% 0%,#c9a8ff,var(--cv-focus) 40%,transparent 70%)}.aurora-blob-3{width:90vw;height:90vw;left:-10vw;bottom:-5vw;background:radial-gradient(circle at 50% 70%,#e8a030 15%,#e07050 45%,#d95f7a 75% 100%)}}*,*:before,*:after{box-sizing:border-box}html{height:-webkit-fill-available;background-color:#000;margin:0;scroll-behavior:smooth}body{margin:0;min-height:100vh;min-height:-webkit-fill-available;height:-webkit-fill-available;font-size:.75rem;color:#fff;overflow:hidden;height:100dvh;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}h1{font-size:3.2em;line-height:1.1}.centered-group{display:flex;flex-direction:column;justify-content:center;align-items:center}.centered-container{display:flex;flex-direction:column;justify-content:center;align-items:center;flex:1}.home-header{font-family:Stack Sans Notch,sans-serif;font-weight:400;text-align:center;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;background-image:radial-gradient(circle at var(--glare-x, 50%) var(--glare-y, 50%),rgba(255,255,255,.9) 0%,rgba(255,255,255,.6) 40%,rgba(255,255,255,.3) 100%);margin:auto}.home-subheader{font-family:Stack Sans Text,sans-serif;font-size:.75rem;font-weight:300;text-align:center;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;background-image:radial-gradient(circle at var(--glare-x, 50%) var(--glare-y, 50%),rgba(255,255,255,.9) 0%,rgba(255,255,255,.6) 40%,rgba(255,255,255,.3) 100%);margin:0;border:none}.bottom-fade{position:fixed;bottom:0;left:0;width:100%;height:2vh;background:linear-gradient(to bottom,transparent,black);pointer-events:none;z-index:5}@media(min-width:768px){body,.home-subheader{font-size:1rem}.bottom-fade{display:none}}@media(min-width:1200px){body{font-size:1.25rem}}
