@import url(https://fonts.googleapis.com/css2?family=Climate+Crisis&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Source+Code+Pro:ital,wght@0,200..900;1,200..900&family=Work+Sans:ital,wght@0,100..900;1,100..900&display=swap);body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--colour-background:#080808;--colour-background-light:#1b1b1b;--colour-symbols:#232323;--colour-symbols--light:#4b4b4b;--colour-accent-background--dark:#00131e;--colour-call-to-action:#5eccde;--colour-call-to-action--light:#98ebf8;--colour-accent-background:#014966;--colour-highlight:#148ec0;--colour-highlight--light:#20a0d3;--colour-text:#e9dfdf;--colour-error:#ff8f9d;--max-width:90em;--font-source-code-pro:"Source Code Pro",monospace;--font-work-sans:"Work Sans",sans-serif;--font-climate-crisis:"Climate Crisis",sans-serif}*{box-sizing:border-box;margin:0;padding:0}h1,h2{font-family:Source Code Pro,monospace;font-family:var(--font-source-code-pro);font-weight:600}p{font-family:Work Sans,sans-serif;font-family:var(--font-work-sans)}::-webkit-scrollbar{display:none}.App{align-items:center;background-color:#080808;background-color:var(--colour-background);display:flex;flex-direction:column;justify-content:center;width:100%}.App--light.App{--colour-background:#fcfcfc;--colour-background-light:#f5f5f5;--colour-symbols:#ededed;--colour-symbols--light:#cfcfcf;--colour-accent-background:#bbebff;--colour-accent-background--dark:#eaf7ff;--colour-call-to-action:#5eccde;--colour-call-to-action--light:#98ebf8;--colour-highlight:#148ec0;--colour-highlight--light:#20a0d3;--colour-text:#2c2a2a;--colour-error:#ff0021}.icon-mask{-webkit-mask-image:none;mask-image:none;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.section{max-width:90em;max-width:var(--max-width);padding:5em 3em;width:100%}@media screen and (max-width:1000px){.section{padding:2.5em 3em}}@media screen and (max-width:550px){.section{padding:2.5em 1.5em}}.section-title{align-items:center;color:#e9dfdf;color:var(--colour-text);display:flex;height:5em;justify-content:center}.section-title h1{font-size:2.5em}.error-message{color:#ff8f9d;color:var(--colour-error)}.Navigation{align-items:center;background-color:var(--colour-background-light);display:flex;flex-direction:row;height:5em;justify-content:space-between;padding:0 2em;width:100%;z-index:1000}.Navigation__box{background-color:var(--colour-symbols);background:radial-gradient(ellipse at center,var(--colour-symbols) 60%,var(--colour-background-light) 100%);border:.1em solid var(--colour-background-light);border-radius:5em;box-shadow:0 0 4px 1px var(--colour-text);height:2.5em;left:calc(50% - 15em);margin-top:1em;position:fixed;top:0;transition:width .5s ease-in-out,left .3s linear;width:30em}.lock{color:var(--colour-text);position:absolute;right:-2em;top:.55em;transform:scale(1);transition:all .1s ease}.lock:hover{cursor:pointer;transform:scale(1.5)}.Navigation__list{align-items:center;color:var(--colour-text);display:flex;flex-direction:row;height:100%;justify-content:space-between;list-style:none;padding:0 3em}.Navigation__list li{align-items:center;border:none;display:flex;height:1.75em;justify-content:center;transition:border .1s ease}.Navigation__list li:focus-within{border-bottom:.1em solid var(--colour-text);border-top:.1em solid #0000}.Navigation__list li:focus-within:has(a:focus,a:focus-visible){border-bottom:.1em solid var(--colour-call-to-action--light);border-top:.1em solid #0000}.Navigation__list li a{color:var(--colour-text);font-size:.8em;font-weight:500;padding:.1em 0;text-decoration:none;transition:color .3s ease}.Navigation__list li a:focus,.Navigation__list li a:focus-visible{border:none;outline:none}.Navigation__list li a:hover{color:var(--colour-call-to-action--light)}.logo{align-items:center;color:var(--colour-text);display:flex;flex-direction:row;gap:1em;justify-content:flex-start}.logo-font{font-family:var(--font-climate-crisis)}.logo__icon{opacity:1;transition:all .3s ease-in-out}.logo__text{font-size:1.2em;font-weight:300}.logo__name{align-items:center;display:flex;height:2em;justify-content:center;opacity:1;transition:all .3s ease-in-out;width:7em}.logo__text--bold.logo__text{font-weight:600}.theme-toggle{align-items:center;color:var(--colour-text);display:flex;flex-direction:column;gap:.1em;justify-content:center}.theme-toggle__button{background:linear-gradient(-70deg,var(--colour-background) 0,var(--colour-background-light) 60%);border-bottom:.01em solid var(--colour-highlight);border-left:.01em solid var(--colour-highlight--light);border-radius:5em;border-right:.01em solid var(--colour-highlight);border-top:.01em solid var(--colour-highlight--light);box-shadow:0 0 3px .1px var(--colour-highlight--light);display:block;height:2em;outline:none;overflow:hidden;transition:background .2s ease-in-out;width:4em}.theme-toggle__button:hover{background:linear-gradient(-70deg,var(--colour-highlight) 0,var(--colour-highlight--light) 60%);cursor:pointer}.theme-toggle__icon{align-items:center;background:var(--colour-highlight--light);border-radius:5em;display:flex;height:1.5em;justify-content:center;margin:0 .25em;position:relative;transition:left .2s linear,background .2s linear;width:1.5em}.theme-toggle__button:hover .theme-toggle__icon{background:var(--colour-text)}.Theme--light .theme-toggle__button:hover .theme-toggle__icon,.theme-toggle__icon{left:0}.Theme--light .theme-toggle__icon,.theme-toggle__button:hover .theme-toggle__icon{left:1.75em}.theme-toggle__icon svg{color:var(--colour-highlight)}.theme-toggle__text{font-size:.75em}@media screen and (max-width:900px){.logo{gap:0}.logo__name{height:0;opacity:0;width:0}.Navigation__box{left:calc(50% - 5em);width:10em}.Navigation__list{padding:0 1em}}@media screen and (max-width:450px){.logo__icon{opacity:0}.Navigation__box{left:1em}}.Modal{background-color:var(--colour-background);border:.1em solid var(--colour-text);border-radius:2em;display:flex;flex-direction:column;margin:0 auto;min-height:12em;position:fixed;top:5em;width:20em;z-index:2000}.Modal:has(.ContactForm){width:min(90%,30em)}.Modal__close{color:var(--colour-text);height:2em;padding:1.25em;text-align:right;transition:all .3s;width:100%}.Modal__close:hover{color:var(--colour-call-to-action);cursor:pointer}.Modal__content{align-items:center;display:flex;height:100%;justify-content:center;padding:0 3em 1.25em;width:100%}.PasswordModal__header{grid-gap:.5em;align-items:center;display:grid;flex-direction:row;gap:.5em;grid-template-columns:2em 1fr;justify-content:flex-start;width:100%}.PasswordModal__icon{align-items:center;border:.1em solid var(--colour-call-to-action--light);border-radius:5em;color:var(--colour-call-to-action--light);display:flex;height:2em;justify-content:center;width:2em}.PasswordModal__form{align-items:center;color:var(--colour-text);display:flex;flex-direction:column;gap:1em;height:100%;width:100%}.PasswordModal__form h1{font-size:1em}.PasswordModal__form p{font-size:.8em;font-weight:300}.PasswordModal__form .PasswordModal__password{background-color:initial;background-color:var(--colour-background-light);border:none;border-radius:.5em;color:var(--colour-text);height:2em;outline:none;padding:0 1em;transition:background-color .3s linear;width:100%}.PasswordModal__form .PasswordModal__password:focus{background-color:var(--colour-symbols);color:var(--colour-text)}.PasswordModal__buttons{display:flex;height:-webkit-fit-content;height:fit-content;justify-content:space-evenly;width:100%}.PasswordModal__button{background-color:color-mix(in srgb,var(--colour-call-to-action),#0000 60%);background-color:var(--colour-call-to-action--light);border:none;border-radius:5em;color:var(--colour-background);font-size:.8em;outline:none;padding:1em 0;transition:background-color .3s linear,color .3s ease;width:10em}.PasswordModal__button--cancel.PasswordModal__button{background-color:initial;border:none;color:var(--colour-text)}.PasswordModal__button:hover{background-color:var(--colour-call-to-action--light);color:var(--colour-highlight);cursor:pointer}.Hero{background-color:var(--colour-background-light);height:100%;position:relative;width:100%}.information{color:#fff;color:var(--colour-text);display:flex;flex-direction:column;gap:1em;left:50%;max-width:100em;padding:0 1.5em;position:absolute;text-align:center;top:21em;transform:translate(-50%,-50%);width:100%;z-index:10}.information__header{font-size:clamp(3rem,2.6596rem + 1.7021vw,4rem)}.information__text{font-size:.3em;font-size:clamp(1em,1vw,2em)}.Hero__buttonContainer{align-items:center;display:flex;flex-direction:row;gap:1em;justify-content:center}.Hero__button,.Hero__buttonContainer a{text-decoration:none}.Hero__button{align-items:center;background-color:var(--colour-call-to-action);border:.1em solid var(--colour-call-to-action);border-radius:5em;color:var(--colour-background);display:flex;flex-direction:row;gap:.5em;height:3.5em;justify-content:center;outline:none;padding:.5em 1em;transition:background-color .1s linear;width:12em}.Hero__button--alternative.Hero__button{background-color:var(--colour-background);color:var(--colour-text)}.Hero__button:hover{background-color:var(--colour-call-to-action--light);border:.1em solid var(--colour-call-to-action);color:var(--colour-background);cursor:pointer}@media screen and (max-width:600px){.information{padding:2em}}@media screen and (max-width:500px){.Hero__buttonContainer{flex-direction:column;gap:.2em}}.spline{background:radial-gradient(circle at bottom,var(--colour-accent-background) 0,var(--colour-background-light) 65%);height:calc(100dvh + 2em);opacity:.5;overflow:hidden;padding-top:15em}.fallback{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.fallback__image{margin-top:15em;perspective:100em;transform-style:preserve-3d}.fallback__image img{animation:fallbackSpin 10s linear infinite;transform:rotate(5deg) rotateY(0)}@keyframes fallbackSpin{0%{transform:rotate(5deg) rotateY(0)}50%{transform:rotate(5deg) rotateY(180deg)}to{transform:rotate(5deg) rotateY(1turn)}}.Tech{align-items:center;display:flex;flex-direction:column;height:4em;justify-content:center}.Tech__image{background:var(--colour-symbols);height:4em;width:4em}.Tech__name{color:var(--colour-symbols);font-size:.7em;font-weight:500}.Skills{background-color:var(--colour-background-light);bottom:0;height:7em;justify-content:center;overflow:hidden;position:absolute;width:100%}.Skills,.Skills__track{align-items:center;display:flex;flex-direction:row}.Skills__track{animation:move infinite;animation-duration:30s;animation-iteration-count:infinite;animation-timing-function:linear;flex-wrap:nowrap;gap:4em;justify-content:flex-start;padding:0 2em}@keyframes move{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.Loader{align-items:center;background-color:var(--colour-background);display:flex;height:200%;justify-content:center;left:0;position:fixed;top:-50%;transition:background-color 1s linear;width:100%;z-index:3000}.loader-animation{align-items:center;display:flex;justify-content:center}.typing-animation{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center}.typing-animation-code{background-color:var(--colour-background-light);border:.1em solid var(--colour-symbols--light);border-radius:1em;color:var(--colour-text);display:flex;flex-direction:row;padding:1em}.loading-animation__pinwheel{color:var(--colour-symbols)}.About,.loading-animation__pinwheel{align-items:center;display:flex;justify-content:center}.About{flex-direction:column}.About__container{grid-gap:2em;display:grid;gap:2em;grid-template-columns:1fr 1fr;padding:1em 0}.About__codeblock,.About__container{align-items:center;justify-content:center;width:100%}.About__codeblock{display:flex;height:100%;padding:3em}.About__information{display:flex;flex-direction:column;gap:1em;height:100%;justify-content:space-evenly}.About__information p{color:var(--colour-text);font-size:1.1em;font-size:clamp(.6em,2vw,1.1em);font-weight:300}.highlight{color:var(--colour-highlight);font-weight:500}.highlight2{color:var(--colour-call-to-action);font-weight:500}@media screen and (max-width:800px){.About__container{grid-template-columns:1fr;grid-template-rows:1fr 1fr}}.CodeBlock{background-color:var(--colour-background-light);border:.1em solid var(--colour-symbols);border-radius:1em;box-shadow:0 0 122px 4px var(--colour-accent-background--dark);display:flex;flex-direction:column;height:100%;width:100%}.CodeBlock__header{align-items:center;border-bottom:.1em solid var(--colour-symbols);color:var(--colour-text);display:flex;flex-direction:row;height:2.5em;justify-content:space-between;padding:0 1em;width:100%}.CodeBlock__container{font-size:clamp(.7em,1.2vw,1em);height:-webkit-fit-content;height:fit-content;margin:auto 0}.code-line{align-items:flex-start;color:var(--colour-symbols--light);display:flex;flex-direction:row;font-family:JetBrains Mono,monospace;gap:.5em;justify-content:flex-start;padding:.5em 1em}.code-line--indent.code-line{padding-left:2.5em}.code-line--array .code-line__header{color:var(--colour-highlight--light);display:flex;flex-direction:row;gap:.5em;justify-content:space-between}.code-line--array .code-line__header:after{color:var(--colour-text);content:"="}.code-line--array .code-line__group{display:flex;flex-direction:row;flex-wrap:wrap;gap:.2em;justify-content:flex-start}.code-line--array .code-line__group:before{content:"["}.code-line--array .code-line__group:after{content:"]"}@media screen and (max-width:1000px){.About__codeblock{padding:1em}}.CodeItem{color:var(--colour-call-to-action--light);display:flex;flex-direction:row;gap:.5em;justify-content:flex-start;position:relative}.CodeItem:hover{cursor:default;-webkit-user-select:none;user-select:none}.CodeItem__name:after,.CodeItem__name:before{content:'"'}.CodeItem:not(.CodeItem:last-child):after{color:var(--colour-text);content:","}.Tooltip{background-color:var(--colour-background-light);border:.2em solid var(--colour-symbols--light);border-radius:1em;bottom:2em;color:var(--colour-text);display:flex;flex-direction:column;gap:.5em;left:0;min-height:12em;min-width:12em;padding:1.5em;position:absolute}.Tooltip:after{border:.75em solid #0000;border-top:.75em solid var(--colour-symbols--light);bottom:-1.5em;content:"";height:0;left:.25em;position:absolute;width:0}.Tooltip__icon{background:var(--colour-text);height:1.5em;margin-bottom:auto;margin-left:auto;width:1.5em}.Tooltip p{font-size:.8em}.Projects{display:flex;flex-direction:column;gap:2em}.Projects__header{flex-direction:column;gap:1em;height:10em}.Projects__header,.Projects__refresh{align-items:center;display:flex;justify-content:center}.Projects__refresh{background:var(--colour-background-light);border:.2em solid var(--colour-symbols);border-radius:5em;color:var(--colour-text);flex-direction:row;gap:.6em;margin-left:auto;outline:none;padding:1em;transform:scale(1);transition:background .1s ease,transform .1s linear}.Projects__refresh:hover{background:var(--colour-symbols);cursor:pointer;transform:scale(1.05)}.Projects__Container{grid-gap:2em;display:grid;flex-wrap:nowrap;gap:2em;grid-template-columns:repeat(3,1fr);height:-webkit-fit-content;height:fit-content;min-height:30em;overflow:hidden;padding:1em}@media screen and (max-width:1440px){.Projects__Container{min-height:35em}}@media screen and (max-width:1000px){.Projects__Container{grid-template-columns:1fr;grid-template-rows:repeat(1,1fr);min-height:30em}.ProjectItem:nth-child(2),.ProjectItem:nth-child(3){display:none}}.ProjectItem{border:.15em solid var(--colour-symbols);border-radius:2em;color:var(--colour-text);flex-direction:column;gap:2em;justify-content:space-between;min-height:20em}.ProjectItem,.ProjectItem__iconContainer{align-items:center;background:var(--colour-background-light);display:flex}.ProjectItem__iconContainer{align-self:flex-end;border:.15em solid var(--colour-symbols);border-radius:.5em 2em .5em 2em;border-right:none;border-top:none;height:inherit;height:7em;justify-content:center;width:5em}.ProjectItem__icon{background:var(--colour-symbols--light);height:2em;width:2em}.ProjectItem__container{grid-gap:1em;display:grid;gap:1em;grid-template-rows:1fr 5em;height:100%;padding:.5em 3em .2em}.ProjectItem__text{align-items:flex-start;display:flex;flex-direction:column;gap:.5em;justify-content:flex-end}.ProjectItem__text .ProjectItem__title{-webkit-line-clamp:2;-webkit-box-orient:vertical;line-clamp:2;box-orient:vertical;color:var(--colour-text);display:-webkit-box;font-size:1.3em;font-weight:600;overflow:hidden;text-overflow:ellipsis}.ProjectItem__text .ProjectItem__association{color:var(--colour-text);display:flex;flex-direction:row;font-size:1em;font-weight:100;gap:.25em}.ProjectItem__text .ProjectItem-description{color:var(--colour-text);display:flex;flex-wrap:wrap;font-size:.7em;font-weight:300;gap:.5em;line-height:1.5em}.ProjectItem-description__link{align-items:center;color:var(--colour-call-to-action);display:flex;flex-direction:row;font-size:1.2em;font-weight:500;gap:.2em;text-decoration:none}.ProjectItem-description__link:hover{color:#adadff;text-decoration:underline}.ProjectItem__footer{align-items:center;display:flex;flex-direction:column;justify-content:space-between;padding:.5em 0}.ProjectItem__stacks .Tech__image{background:var(--colour-text)}.ProjectItem__stacks{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;font-size:.45em;gap:.5em}.ProjectItem__date{align-self:flex-end;color:var(--colour-symbols--light);justify-self:flex-end;margin-left:auto;text-align:right;width:100%}.Contact{align-items:center;display:flex;flex-direction:column;justify-content:space-between;overflow-y:hidden;width:100%}.Contact__section{height:-webkit-fit-content;height:fit-content;padding-bottom:0;position:relative;width:100%}.Contact__container{align-items:center;gap:4em;height:100%;margin-right:auto;max-width:var(--max-width);max-width:50em;min-height:20em;padding:4em 0;width:50%}.Contact__container,.Contact__messages{display:flex;flex-direction:column;justify-content:space-between}.Contact__messages{align-items:flex-start;color:var(--colour-text);gap:3em;margin-right:2em}.Contact__reachOut{text-wrap-mode:nowrap;align-items:center;color:var(--colour-highlight);display:flex;flex-wrap:nowrap;font-size:1.2em;font-weight:600;gap:.2em;justify-content:flex-start;padding:.5em 0}.Contact__showContact{align-items:center;background-color:var(--colour-background);border:none;border:.1em solid var(--colour-call-to-action);border-radius:5em;color:var(--colour-call-to-action);display:flex;height:2em;justify-content:center;margin-left:1em;outline:none;width:3.5em}.contact-list{display:flex;flex-direction:column;gap:2em;height:100%;justify-content:flex-start;padding:0 2em;width:100%}.contact-list__item{list-style-type:none}.contact-list__item .contact-list__link{align-items:center;background:#0000;border:none;color:var(--colour-symbols--light);display:flex;flex-direction:row;font-size:1.2em;gap:.5em;justify-content:flex-start;outline:none;text-decoration:none;transition:color .1s linear;width:-webkit-fit-content;width:fit-content}.contact-list__item .contact-list__link:hover{color:var(--colour-text);cursor:pointer}@media screen and (max-width:900px){.Contact__container{margin:0 auto;max-width:none;width:80%}}.Footer{align-items:center;height:-webkit-fit-content;height:fit-content;justify-content:flex-start}.Footer,.Footer__container{display:flex;flex-direction:column;width:100%}.Footer__container{border-top:.01em solid var(--colour-symbols);gap:2.5em;height:100%;justify-content:space-between;margin:0 auto;max-width:100em;min-height:10em;padding:5em 0 2em}.Footer__content{display:grid;grid-template-columns:1fr 1fr;padding:0 4em;width:57em}.Footer__title{color:var(--colour-text);display:flex;flex-direction:column;gap:.5em}.Footer__title .logo{font-size:2em}.footer-navigation{display:flex;flex-direction:row;gap:6em;justify-content:space-evenly}.footer-navigation__list{color:var(--colour-text);list-style-type:none}.footer-navigation__list p{color:var(--colour-symbols--light);font-weight:500}.footer-navigation__list li{font-size:.9em;font-weight:400;padding:.1em 0}.footer-navigation__list li a{color:var(--colour-text);text-decoration:none}.Footer__footer{align-items:center;color:var(--colour-text);display:flex;flex-direction:row;font-size:.85em;font-weight:200;height:3em;justify-content:space-between;padding:0 2em;width:100%}@media screen and (max-width:950px){.Footer__content{grid-template-columns:1fr;grid-template-rows:1fr 1fr;width:100%}.Footer__title{text-align:center}.Footer__title .logo{justify-content:center}}@media screen and (max-width:500px){.Footer__footer{flex-direction:column}.Footer__content{padding:0 1.5em}}.ContactForm{background-color:var(--colour-background);border:.1em solid var(--colour-background-light);box-shadow:0 0 10px 2px var(--colour-background-light);color:var(--colour-text);display:flex;flex-direction:column;gap:1em;height:30em;justify-content:space-evenly;padding:3em 4em;position:absolute;right:calc(25% - 12.5em);top:12.5em;width:27em}.Modal__content .ContactForm{background-color:initial;border:none;box-shadow:none;padding:0}.ContactForm__inputs{display:flex;flex-direction:column;height:100%;justify-content:space-evenly}.ContactForm__container{display:flex;flex-direction:row;gap:2em;height:-webkit-fit-content;height:fit-content;justify-content:space-between}.ContactForm__label{display:flex;flex-direction:column;gap:.5em}.ContactForm__text{font-size:.9em;font-weight:200}.ContactForm__label:has(input[required]) .ContactForm__text:after{color:var(--colour-highlight);content:" *"}.ContactForm__label input,.ContactForm__label textarea{background:var(--colour-background-light);border:none;color:var(--colour-text);height:2.5em;outline:none;padding:.5em 1em;transition:all .3s linear;width:100%}.ContactForm__label textarea{max-height:5em;max-width:100%;min-height:5em;min-width:100%;resize:none}.ContactForm__label input:focus,.ContactForm__label textarea:focus{background:var(--colour-text);color:var(--colour-background)}.ContactForm__button{background:var(--colour-call-to-action--light);border:none;height:2.5em;outline:none;width:100%}@media screen and (max-width:900px){.ContactForm{position:static}}.ContactForm__loader{align-items:center;display:flex;flex-direction:column;gap:2em;justify-content:center;padding:0 2em;width:100%}.ContactForm__loader svg{font-size:3em}.dots{align-items:center;display:flex;flex-direction:row;gap:1em;justify-content:center}.dots span{background-color:var(--colour-text);border-radius:5em;height:1em;width:1em}
/*# sourceMappingURL=main.f2f16946.css.map*/