.circle-animation{width:100%;text-align:center;margin:1rem auto;min-height:48px;.circle-container{display:inline-block;margin:16px;width:16px;height:16px;position:relative;.circle{width:16px;height:16px;position:absolute;background-color:var(--primary-theme-colour);border-radius:50%;transition:all 1s;animation-duration:.75s;animation-timing-function:ease-in-out}&.circle-hidden-tablet{@media (max-width: 840px){display:none}}&.circle-animation-centre{.circle{animation-name:circle-jump-centre}}&.circle-animation-sibling{.circle{animation-name:circle-jump-sibling}}}}@keyframes circle-jump-centre{0%{margin-top:0}65%{background-color:var(--accent-theme-colour);margin-top:-26px;width:20px;height:20px}to{margin-top:0}}@keyframes circle-jump-sibling{0%{margin-top:0}65%{background-color:var(--secondary-theme-colour);margin-top:-12px}to{margin-top:0}}:root{--min-desktop-width: 1000px;--min-legacy-smartphones-width: 320px;--min-smartphones-width: 450px;--min-tablet-width: 840px;--max-comfort-text-width: 920px;--max-comfort-text-with-figure-width: 1200px}:root{--primary-theme-colour: #37474f;--secondary-theme-colour: #4078c0;--accent-theme-colour: #aeea00;--delimiter-colour: #d7d7d7;--mini-game-theme-colour: #ecebbd;--primary-titles-font-family: "Fira Sans", monospace;--primary-text-font-family: "Fira Sans", serif;--primary-blockquote-font-family: "Fira Sans", monospace;--mini-game-font-family: "Princess Sofia", cursive}.flip-figures{background-color:transparent;width:100%;perspective:1000px;margin:initial;cursor:pointer;user-select:none;.flip-figures__content{transition:transform .8s;transform-style:preserve-3d;width:100%;position:relative;.flip-back-padder{width:100%;visibility:hidden}.flip-hidden-figure,.flip-front-figure,.flip-back-figure{position:absolute;width:100%;height:100%;backface-visibility:hidden;left:50%;top:0;z-index:0;margin-left:-200px;@media (max-width: 440px){left:auto;margin-left:auto}}.flip-hidden-figure{visibility:hidden}.flip-back-figure{transform:rotateY(180deg);z-index:1}}&.flip-back-active{.flip-figures__content{transform:rotateY(180deg)}}&.flip-figure-blink:not(.flip-back-active){.flip-figures__content{transform:rotateY(15deg)}}&.flip-figure-blink{.flip-figures__content{transform:rotateY(195deg)}}}@keyframes swing-in-bottom-fwd{0%{transform:rotateX(100deg);transform-origin:bottom;opacity:0}to{transform:rotateX(0);transform-origin:bottom;opacity:1}}.mini-game-swing-in-bottom-fwd{animation:swing-in-bottom-fwd .5s cubic-bezier(.175,.885,.32,1.275) both}@keyframes fade-out-br{0%{transform:translate(0) translateY(0);opacity:1}to{transform:translate(50px) translateY(50px);opacity:0}}.mini-game-fade-out-br{animation:fade-out-br .7s cubic-bezier(.25,.46,.45,.94) both}*,*:before,*:after{box-sizing:border-box;-webkit-font-smoothing:antialiased}main,section,article,header,footer,aside{h1,h2,h3{font-family:var(--primary-titles-font-family);text-align:center;font-weight:400;line-height:2rem}h1{font-size:1.75em;@media (min-width: 1000px){font-size:2.5em}@media (max-width: 450px){font-size:1.25em;span{display:block}}}h2{font-size:1.5em;@media (max-width: 450px){font-size:1.25em}text-transform:uppercase}a{color:inherit;&:visited{color:inherit}&:hover{color:inherit}}p,ul,li,blockquote{font-size:1.5rem;line-height:2.25rem;font-weight:300;strong{font-weight:400}@media (max-width: 450px){font-size:1.25rem;line-height:1.65rem}}p,ul,li,a{font-family:var(--primary-text-font-family)}p{word-break:break-word}p.em-p{font-weight:400}blockquote{font-family:var(--primary-blockquote-font-family)}img{width:100%;height:auto}.stick-to-bottom{margin-bottom:.25rem}.stick-to-top{margin-top:.25rem}}body{margin:0;>article,aside{padding-top:1rem;padding-bottom:1rem}>footer{margin:2rem auto;p{text-align:center;font-size:1rem;margin:auto;line-height:1.75rem;padding-top:.25rem}.footer-subnote{padding-top:.5rem;font-size:.85rem;line-height:1rem;margin:auto .75rem;em{padding:.15rem;text-decoration:none;font-style:normal;font-weight:400}}}}.page-not-found-content{text-align:center;margin:2rem}.about-me{max-width:var(--max-comfort-text-with-figure-width);display:flex;margin:auto;.about-me__sidebar,.about-me__content{flex-basis:50%;padding:1rem;em{font-style:normal;font-weight:bolder}}.about-me__sidebar{figure{max-width:400px;margin:auto}}.about-me__content{margin:auto}@media (max-width: 840px){flex-direction:column}}.social-bar{.social-list{list-style:none;padding-left:0;text-align:right;@media (max-width: 840px){margin:2rem auto;display:flex;justify-content:space-evenly;justify-items:center}li{display:inline-block;min-width:64px;margin:auto;text-align:center;i{display:inline-block;width:48px;height:48px;background-color:var(--primary-theme-colour);background-size:cover;transition:background-color .35s}i.linked-in{mask-image:url(/img/social/_ionicons_svg_logo-linkedin.svg);-webkit-mask-image:url(/img/social/_ionicons_svg_logo-linkedin.svg);&:hover{background-color:#0e76a8}}i.twitter{mask-image:url(/img/social/_ionicons_svg_logo-twitter.svg);-webkit-mask-image:url(/img/social/_ionicons_svg_logo-twitter.svg);&:hover{background-color:#08a0e9}}i.bsky{mask-image:url(/img/social/bluesky-logo.svg);-webkit-mask-image:url(/img/social/bluesky-logo.svg);&:hover{background-color:#1185fe}}i.mastodon{mask-image:url(/img/social/mastodon.svg);-webkit-mask-image:url(/img/social/mastodon.svg);&:hover{background-color:#2b90d9}}i.github{mask-image:url(/img/social/_ionicons_svg_logo-github.svg);-webkit-mask-image:url(/img/social/_ionicons_svg_logo-github.svg);&:hover{background-color:#4078c0}}i.medium{mask-image:url(/img/social/medium.svg);-webkit-mask-image:url(/img/social/medium.svg);&:hover{background-color:#000}}}}}article.projects-article{margin:1rem auto auto;background-color:var(--primary-theme-colour);color:#fff;.projects{max-width:var(--max-comfort-text-with-figure-width);display:flex;margin:2em auto;padding:1em;justify-content:space-evenly;.project{background-color:#fff;color:#000;display:flex;padding:1.3rem;margin:1rem auto;max-width:424px;min-height:188px;box-shadow:0 0 2rem #0003;position:relative;.project-title{text-transform:uppercase;font-size:1.25rem;text-align:center;margin:auto;@media (max-width: 450px){margin-top:1rem}}.project-info{p{margin:1rem;font-size:1rem;line-height:1.25rem}}&:before{position:absolute;transition:all .5s;top:-15px;left:0;margin-left:16px;color:var(--secondary-theme-colour);background:var(--secondary-theme-colour);z-index:2;width:24px;height:48px;content:"";-webkit-mask:url(/img/paperclip-clipped-front.svg) no-repeat 50% 50%;mask:url(/img/paperclip-clipped-front.svg) no-repeat 50% 50%}}.project-link:hover{.project{&:before{background:var(--accent-theme-colour)}}}@media (max-width: 840px){flex-direction:column}}}article.publications-article{margin:2rem auto;border-bottom:1px solid var(--delimiter-colour);.publications{max-width:var(--max-comfort-text-with-figure-width);display:flex;margin:2em auto;flex-direction:column;.publication{display:flex;border-top:1px solid var(--delimiter-colour);padding:2rem;.publication-figure{flex-basis:20%;flex-grow:0;flex-shrink:1;margin:auto;text-align:center;img{height:auto;max-width:400px}}.publication-info{flex-basis:80%;flex-shrink:1;flex-grow:1;.publication-title{font-size:1.75rem;text-align:left;margin:auto;transition:color .35s;@media (max-width: 450px){margin-top:1.5rem}}p{font-size:1rem;line-height:1.25rem}}@media (max-width: 450px){flex-direction:column}}.publication-link{text-decoration:none;&:hover{.publication-title{color:var(--secondary-theme-colour)}}}}}aside.mini-game-container{width:100%;background-color:var(--mini-game-theme-colour);position:relative;box-shadow:inset 1rem 1rem 4rem 1rem #0000004d;user-select:none;>h2{font-family:var(--mini-game-font-family);text-transform:none;margin:4rem auto auto;@media (max-width: 450px){margin:4rem auto}font-size:4rem;color:#0009;line-height:4rem}.mini-game-content{display:flex;width:100%;align-items:center;align-content:center;justify-content:center;@media (max-width: 840px){flex-direction:column}.mini-game-canvas-container{flex-basis:50%;flex-shrink:0;flex-grow:1;display:flex;position:relative;max-width:420px;margin:4rem auto 8rem;@media (max-width: 450px){max-width:90%}min-height:640px;@media (max-width: 450px){min-height:540px}width:100%;canvas.mini-game-canvas{width:100%;height:100%;position:absolute;border:1px solid rgba(0,0,0,.2);border-radius:1rem}}.mini-game-info-panel{color:#0009;flex-basis:25%;flex-shrink:1;flex-grow:1;display:flex;margin:auto;text-align:center;align-content:center;justify-content:center;flex-direction:column;.mini-game-info-panel-content{text-align:initial;margin:auto}.mini-game-level{font-family:var(--mini-game-font-family);font-size:3em;margin-bottom:3rem;.mini-game-level__number{font-weight:700}}.mini-game-level-rules{font-family:var(--mini-game-font-family);font-size:1.5rem;.mini-game-level-rule{.mini-game-level-rule__value{font-weight:700}}}.mini-game-score{font-family:var(--mini-game-font-family);font-size:3em;margin-bottom:1rem;.mini-game-score__number{font-weight:700}}.mini-game-level-score{font-family:var(--mini-game-font-family);font-size:2em;margin-bottom:1rem;.mini-game-level-score__number{font-weight:700}}}}.mini-game-reaction-image-container{.mini-game-reaction-image{filter:opacity(.29);max-height:400px}}.mini-game-running__required{display:none}.mini-game-running{.mini-game-canvas-splash,.mini-game-running__hidden{display:none}.mini-game-running__required{display:inherit}.mini-game-mobile-toolbar{display:none}@media (max-width: 840px){.mini-game-running__required.mini-game-level,.mini-game-running__required.mini-game-score,.mini-game-level-score.mini-game-running__required,.mini-game-reaction-image-container.mini-game-running__required{display:none}.mini-game-mobile-toolbar{display:inherit;.mini-game-reaction-image-container.mini-game-running__required{display:inherit}}}}.mini-game-canvas-splash{width:100%;height:100%;position:absolute}.mini-game-canvas-splash-starter{display:flex;width:100%;height:100%;background-image:url(/img/mini-game/tetris-splash.png);background-repeat:no-repeat;background-size:cover;background-position:50% 50%;align-content:center;justify-content:center;flex-direction:column;.mini-game-run-button{font-family:var(--mini-game-font-family);width:auto;max-width:5em;font-size:3em;margin:auto;padding:.5em;border:0;background-color:var(--primary-theme-colour);color:var(--mini-game-theme-colour);cursor:pointer}}.mini-game-canvas-splash-lost-info{display:none;width:100%;align-content:center;justify-content:center;flex-direction:column;font-family:var(--mini-game-font-family);margin:2rem auto;text-align:center;font-size:2.5rem;background-color:#0009;color:#fff;padding:1rem}.mini-game-lost{.mini-game-canvas-splash-lost-info{display:flex}}.mini-game-instructions{width:100%;min-width:320px;max-width:640px;font-family:var(--primary-text-font-family);align-content:center;justify-content:center;flex-direction:column;padding:2rem;color:#0009;p,ul,li{font-size:1rem;line-height:2rem}h3,h4{font-family:var(--mini-game-font-family);font-size:2rem;font-weight:400}em{display:inline-block;font-weight:bolder;padding:0 .25rem;margin:.25rem .5rem;border:1px solid rgba(0,0,0,.6);font-style:normal}}.mini-game-mobile-toolbar{position:absolute;height:2em;width:100%;padding-left:2rem;padding-right:2rem;margin:1rem auto;display:flex;justify-content:space-between;.mini-game-mobile-toolbar__score,.mini-game-mobile-toolbar__level{font-family:var(--mini-game-font-family);display:flex;align-content:center;justify-content:space-between;align-items:center;font-size:1.5rem}.mini-game-reaction-image-container.mini-game-running__required{position:absolute;right:10%;max-width:30%}}}.signatures{text-align:right;.signature-list{list-style:none;padding-left:0;display:inline-block;@media (max-width: 840px){margin:2rem auto;display:flex;justify-content:space-evenly;justify-items:center}li{display:flex;margin:auto;text-align:center;font-size:1rem;i{display:inline-block;width:16px;height:16px;margin-left:.25rem;background-color:var(--primary-theme-colour);background-size:cover;transition:background-color .35s}i.public-pgp{mask-image:url(/img/key.svg);-webkit-mask-image:url(/img/key.svg);&:hover{background-color:#0e76a8}}a{text-decoration:none}}}}
