.project-detail{padding:2rem 0}.back-link{display:flex;align-items:center;gap:.5rem;margin-bottom:2rem;padding:.5rem 1rem;background:none;border:1px solid var(--colour-text);color:var(--colour-text);border-radius:.1rem;cursor:pointer;transition:all .2s ease;font-family:inherit;font-size:1rem}.back-link:hover{background-color:var(--colour-accent);border-color:var(--colour-accent);color:#fff}.back-link svg{width:1em;height:1em;flex-shrink:0}.loading,.error{padding:2rem;text-align:center}.error{color:#ef4444}.content{font-size:1rem;line-height:1.7}.content h1{font-size:2.5rem;margin-bottom:1.5rem;margin-top:0;font-weight:700}.content h2{font-size:1.875rem;margin-top:2.5rem;margin-bottom:1rem;border-bottom:2px solid var(--colour-accent);padding-bottom:.5rem;font-weight:700}.content h3{font-size:1.375rem;margin-top:1.5rem;margin-bottom:.75rem;font-weight:600}.content h4{font-size:1.1rem;margin-top:1.25rem;margin-bottom:.75rem;font-weight:600}.content h5{font-size:1rem;margin-top:1rem;margin-bottom:.5rem;font-weight:600}.content h6{font-size:.95rem;margin-top:1rem;margin-bottom:.5rem;font-weight:600}.content p{margin-bottom:1.25rem;color:var(--colour-text)}.content ul,.content ol{margin-bottom:1.25rem;padding-left:2rem}.content li{margin-bottom:.5rem;color:var(--colour-text)}.content strong{font-weight:700;color:var(--colour-accent)}.content code{background-color:#0000000f;padding:.25rem .5rem;border-radius:.25rem;font-family:Courier New,monospace;font-size:.9em;border:1px solid rgba(0,0,0,.1);color:inherit}.dark .content code{background-color:#ffffff1a;border-color:#fff3}.content pre{background-color:#0000000d;padding:1.5rem;border-radius:.5rem;overflow-x:auto;margin-bottom:1.25rem;border:1px solid rgba(0,0,0,.1);border-left:4px solid var(--colour-accent)}.content pre code{background-color:transparent;padding:0;font-size:.95em;font-family:Courier New,monospace;color:inherit;text-shadow:none;border:none}.content a{color:var(--colour-accent);text-decoration:underline;transition:opacity .2s ease}.content a:hover{opacity:.8}.content img{max-width:100%;height:auto;margin:1.5rem 0;border-radius:.5rem}.content video{max-width:100%;height:auto;margin:1.5rem 0;border-radius:.5rem;display:block}.dark .content pre{background-color:#ffffff0d;border-color:#ffffff1a}.dark .content pre code{color:#e0e0e0}.dark .back-link{border-color:var(--colour-text)}.dark .back-link:hover{background-color:var(--colour-accent);border-color:var(--colour-accent);color:#fff}.blog-meta[data-v-22bb43bf]{margin-bottom:1rem}.blog-date[data-v-22bb43bf]{font-size:.875rem;color:var(--colour-accent)}/*! modern-normalize v3.0.1 | MIT License | https://github.com/sindresorhus/modern-normalize */*,:before,:after{box-sizing:border-box}html{font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";line-height:1.15;-webkit-text-size-adjust:100%;tab-size:4}body{margin:0}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-color:currentcolor}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}:root{--colour-bg: #f4f6f8;--colour-text: #2d3136;--colour-accent: #5296a5}.dark{--colour-bg: #23272f;--colour-text: #e0e3e7;--colour-accent: #a5d8ff}*{margin:0;line-height:calc(1em + .5rem)}html{scroll-behavior:smooth}html,body{height:100%;margin:0}body{background:var(--colour-bg);color:var(--colour-text);font-family:Satoshi,Satoshi;min-height:100vh;display:flex;flex-direction:column}#app{flex:1;display:flex;flex-direction:column}img,picture,video,canvas,svg{display:block;max-width:100%;-webkit-user-select:none;user-select:none}button{display:inline-block;padding:0;border:none;background:none;cursor:pointer}.router__link{text-decoration:none;color:inherit}.header{display:flex;justify-content:space-between;align-items:center}.header__social{display:flex;align-items:center;list-style:none;padding:0;gap:2em}.header__link{cursor:pointer}.navigation{display:flex;justify-content:space-between;align-items:center}.navigation__list{display:flex;align-items:center;list-style:none;padding:0;gap:2em}.navigation__link{cursor:pointer}.navigation__link:hover{text-decoration:underline}.project{display:flex;flex-direction:column;padding-top:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--colour-text);opacity:.8;transition:opacity .2s ease}.project:hover{opacity:1}.project:hover .project__title{text-decoration:underline}.project__title{font-size:1.1rem;font-weight:600;margin-bottom:.5rem;margin-top:0}.project__description{font-size:.875rem;color:var(--colour-text);margin:0;line-height:1.5}.project__info{display:flex;flex-direction:column}.project-link{text-decoration:none;color:inherit;display:block;transition:opacity .2s ease}.project-link .project{cursor:pointer}@media (min-width: 475px){.project__title{font-size:1.1rem}.project__description{font-size:.9375rem}}@media (min-width: 640px){.project{padding-top:1.75rem;padding-bottom:1.75rem}.project__title{font-size:1.1rem}.project__description{font-size:1rem}}@media (min-width: 768px){.project{flex-direction:row;gap:2rem;align-items:flex-start}.project__title{font-size:1.1rem}.project__description{font-size:.9875rem}.project__info{flex:1}}@media (min-width: 1024px){.project{gap:2.5rem;padding-top:2rem;padding-bottom:2rem}.project__title{font-size:1.1rem}.project__description{font-size:.9875rem}}@media (min-width: 1280px){.project__title{font-size:1.1rem}.project__description{font-size:1rem}}@media (min-width: 1536px){.project{gap:3rem}.project__title{font-size:1.1rem}.project__description{font-size:1rem}}.blog{display:flex;flex-direction:column;padding-top:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--colour-text);opacity:.8;transition:opacity .2s ease}.blog:hover{opacity:1}.blog:hover .blog__title{text-decoration:underline}.blog__info{display:flex;flex-direction:column}.blog__title{font-size:1.1rem;font-weight:600;margin-bottom:.25rem;margin-top:0}.blog__date{font-size:.875rem;color:var(--colour-accent);margin-bottom:.75rem}.blog__preview{font-size:.875rem;color:var(--colour-text);margin:0;line-height:1.5}.blog-link{text-decoration:none;color:inherit;display:block;transition:opacity .2s ease}.blog-link .blog{cursor:pointer}@media (min-width: 475px){.blog__title{font-size:1.1rem}.blog__date{font-size:.875rem}.blog__preview{font-size:.9375rem}}@media (min-width: 640px){.blog{padding-top:1.75rem;padding-bottom:1.75rem}.blog__title{font-size:1.1rem}.blog__preview{font-size:1rem}}@media (min-width: 768px){.blog{flex-direction:row;gap:2rem;align-items:flex-start}.blog__info{flex:1}.blog__title{font-size:1.1rem}.blog__preview{font-size:.9875rem}}@media (min-width: 1024px){.blog{gap:2.5rem;padding-top:2rem;padding-bottom:2rem}.blog__title{font-size:1.1rem}.blog__preview{font-size:.9875rem}}@media (min-width: 1280px){.blog__title{font-size:1.1rem}.blog__preview{font-size:1rem}}@media (min-width: 1536px){.blog{gap:3rem}.blog__title{font-size:1.1rem}.blog__preview{font-size:1rem}}.about{display:flex;flex-direction:column;padding-top:.5rem;padding-bottom:.5rem}.www{border-bottom:solid 1px;padding-bottom:.75rem;margin-bottom:1.75rem}a{text-decoration:none;color:var(--colour-accent)}@media (min-width: 768px){.project{flex-direction:row}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}html,body{height:100% margin: 0}main{flex:1}.container{width:100%;margin-left:auto;margin-right:auto;padding-left:.5rem;padding-right:.5rem}.main-content{border:solid}@media (min-width: 475px){.container{max-width:475px}}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}.content-narrow{max-width:60ch;margin-left:auto;margin-right:auto}}
