-
Notifications
You must be signed in to change notification settings - Fork 0
/
404.html
19 lines (18 loc) · 57.1 KB
/
404.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Not Found- Brian Baldock</title><base href="/404.html"><script><!-- inlined for all pages -->
(()=>{var m=Object.defineProperty;var p=(h,t,e)=>t in h?m(h,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[t]=e;var l=(h,t,e)=>p(h,typeof t!="symbol"?t+"":t,e);var r=class r extends HTMLElement{constructor(){super(),this.ready=new Promise(t=>{this.readyResolve=t})}static getParents(t,e=!1){let a=[];for(;t;){if(t.matches&&t.matches(r.tagName)){if(e&&t===e)break;c.hasConditions(t)&&a.push(t)}t=t.parentNode}return a}static async ready(t,e){if(e||(e=r.getParents(t)),e.length===0)return;let a=await Promise.all(e.map(i=>i.wait()));if(a.length)return a[0]}forceFallback(){window.Island&&Object.assign(r.fallback,window.Island.fallback);for(let t in r.fallback){let e=Array.from(this.querySelectorAll(t)).reverse();for(let a of e){if(!a.isConnected)continue;let i=r.getParents(a);if(i.length===1){let o=r.ready(a,i);r.fallback[t](o,a,r.prefix)}}}}wait(){return this.ready}async connectedCallback(){c.hasConditions(this)&&this.forceFallback(),await this.hydrate()}getTemplates(){return this.querySelectorAll(`template[${r.attr.template}]`)}replaceTemplates(t){for(let e of t){if(r.getParents(e,this).length>0)continue;let a=e.getAttribute(r.attr.template);if(a==="replace"){let i=Array.from(this.childNodes);for(let o of i)this.removeChild(o);this.appendChild(e.content);break}else{let i=e.innerHTML;if(a==="once"&&i){if(r.onceCache.has(i)){e.remove();return}r.onceCache.set(i,!0)}e.replaceWith(e.content)}}}async hydrate(){let t=[];this.parentNode&&t.push(r.ready(this.parentNode));let e=c.getConditions(this);for(let a in e)c.map[a]&&t.push(c.map[a](e[a],this));await Promise.all(t),this.replaceTemplates(this.getTemplates());for(let a of r.onReady.values())await a.call(this,r);this.readyResolve(),this.setAttribute(r.attr.ready,""),this.querySelectorAll(`[${r.attr.defer}]`).forEach(a=>a.removeAttribute(r.attr.defer))}};l(r,"tagName","is-land"),l(r,"prefix","is-land--"),l(r,"attr",{template:"data-island",ready:"ready",defer:"defer-hydration"}),l(r,"onceCache",new Map),l(r,"onReady",new Map),l(r,"fallback",{":not(is-land,:defined,[defer-hydration])":(t,e,a)=>{let i=document.createElement(a+e.localName);for(let n of e.getAttributeNames())i.setAttribute(n,e.getAttribute(n));let o=e.shadowRoot;if(!o){let n=e.querySelector(":scope > template:is([shadowrootmode], [shadowroot])");if(n){let f=n.getAttribute("shadowrootmode")||n.getAttribute("shadowroot")||"closed";o=e.attachShadow({mode:f}),o.appendChild(n.content.cloneNode(!0))}}return o&&i.attachShadow({mode:o.mode}).append(...o.childNodes),i.append(...e.childNodes),e.replaceWith(i),t.then(()=>{i.shadowRoot&&e.shadowRoot.append(...i.shadowRoot.childNodes),e.append(...i.childNodes),i.replaceWith(e)})}});var d=r,s=class s{static hasConditions(t){return Object.keys(s.getConditions(t)).length>0}static getConditions(t){let e={};for(let a of Object.keys(s.map))t.hasAttribute(`on:${a}`)&&(e[a]=t.getAttribute(`on:${a}`));return e}static visible(t,e){if("IntersectionObserver"in window)return new Promise(a=>{let i=new IntersectionObserver(o=>{let[n]=o;n.isIntersecting&&(i.unobserve(n.target),a())});i.observe(e)})}static idle(){let t=new Promise(e=>{document.readyState!=="complete"?window.addEventListener("load",()=>e(),{once:!0}):e()});return"requestIdleCallback"in window?Promise.all([new Promise(e=>{requestIdleCallback(()=>{e()})}),t]):t}static interaction(t,e){let a=["click","touchstart"];return t&&(a=(t||"").split(",").map(i=>i.trim())),new Promise(i=>{function o(n){i();for(let f of a)e.removeEventListener(f,o)}for(let n of a)e.addEventListener(n,o,{once:!0})})}static media(t){let e={matches:!0};if(t&&"matchMedia"in window&&(e=window.matchMedia(t)),!e.matches)return new Promise(a=>{e.addListener(i=>{i.matches&&a()})})}static saveData(t){if(!(!("connection"in navigator)||navigator.connection.saveData===(t!=="false")))return new Promise(()=>{})}};l(s,"map",{visible:s.visible,idle:s.idle,interaction:s.interaction,media:s.media,"save-data":s.saveData});var c=s;"customElements"in window&&(window.customElements.define(d.tagName,d),window.Island=d);var w=d.ready;})();
(()=>{var a="theme-preference";var l={dark:"#353535",light:"#F2F2D9"},t={value:s()};window.onload=()=>{let e=document.querySelector("#light-theme-toggle"),r=document.querySelector("#dark-theme-toggle");document.querySelector("[data-theme-switcher]")&&(c(),o(),e.addEventListener("click",()=>n("light")),r.addEventListener("click",()=>n("dark")),e.setAttribute("aria-pressed",t.value==="light"),r.setAttribute("aria-pressed",t.value==="dark"))};window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",({matches:e})=>{t.value=e?"dark":"light",i(),o()});function n(e){t.value=e,document.querySelector("#light-theme-toggle").setAttribute("aria-pressed",e==="light"),document.querySelector("#dark-theme-toggle").setAttribute("aria-pressed",e==="dark"),i(),o()}function s(){return localStorage.getItem(a)?localStorage.getItem(a):window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function i(){localStorage.setItem(a,t.value),c(),o()}function c(){document.firstElementChild.setAttribute("data-theme",t.value)}function o(){let e=document.querySelector('meta[name="theme-color"]'),r=t.value==="dark"?l.dark:l.light;e.setAttribute("content",r)}c();})();</script><script type="application/ld+json">{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebSite",
"@id": "https://www.brianbaldock.com#website",
"url": "https://www.brianbaldock.com",
"name": "Brian Baldock",
"description": "My personal site, blog and repository of thought",
"inLanguage": "en_CA"
}
]
}</script><style>.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1}.filter{--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: }*,:after,:before{box-sizing:border-box}:where(*){text-wrap:pretty}:where(h1,h2,h3,h4){text-wrap:balance}:where(html:focus-within){scroll-behavior:smooth}:where(body){line-height:1.5;min-height:100vh;min-height:100dvh;text-rendering:optimizeSpeed}:where(body,h1,h2,h3,h4,p,figure,blockquote,dl,dd){margin:0}:where(ul[role=list],ol[role=list]){list-style:none}:where([role=list]){padding:0}:where(a:not([class])){-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}:where(img,picture,svg,canvas){background-repeat:no-repeat;background-size:cover;block-size:auto;font-style:italic;max-inline-size:100%;shape-margin:.75rem;vertical-align:middle}:where(button){all:unset}:where(button,input,select,textarea){color:inherit;font:inherit}:where(textarea){resize:vertical;resize:block}:where(textarea:not([rows])){min-height:10em}:where(button,label,select,summary,[role=button],[role=option]){cursor:pointer}:where(:target){scroll-margin-block-start:2ex}:where(:focus){scroll-margin-block-end:8vh}:where(dialog){background:none;border:none;inset:unset;max-height:unset;max-width:unset}:where([popover]){background:none;border:none;color:inherit;inset:unset}:where([popover]:not(:popover-open)),:where(dialog:not([open],[popover])){display:none!important}:where(html:has(dialog[open]:modal)){overflow:hidden}@font-face{font-display:swap;font-family:RobotoMono;font-style:normal;font-weight:400;src:local(""),url(/assets/fonts/robotomono/robotomono-regular.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:normal;font-weight:100;src:local(""),url(/assets/fonts/claritycity/ClarityCity-Thin.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:italic;font-weight:100;src:local(""),url(/assets/fonts/claritycity/ClarityCity-ThinItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:normal;font-weight:200;src:local(""),url(/assets/fonts/claritycity/ClarityCity-ExtraLight.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:italic;font-weight:200;src:local(""),url(/assets/fonts/claritycity/ClarityCity-ExtraLightItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:normal;font-weight:300;src:local(""),url(/assets/fonts/claritycity/ClarityCity-Light.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:italic;font-weight:300;src:local(""),url(/assets/fonts/claritycity/ClarityCity-LightItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:normal;font-weight:400;src:local(""),url(/assets/fonts/claritycity/ClarityCity-Regular.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:italic;font-weight:400;src:local(""),url(/assets/fonts/claritycity/ClarityCity-RegularItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:normal;font-weight:500;src:local(""),url(/assets/fonts/claritycity/ClarityCity-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:italic;font-weight:500;src:local(""),url(/assets/fonts/claritycity/ClarityCity-MediumItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:normal;font-weight:600;src:local(""),url(/assets/fonts/claritycity/ClarityCity-SemiBold.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:italic;font-weight:600;src:local(""),url(/assets/fonts/claritycity/ClarityCity-SemiBoldItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:normal;font-weight:700;src:local(""),url(/assets/fonts/claritycity/ClarityCity-Bold.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:italic;font-weight:700;src:local(""),url(/assets/fonts/claritycity/ClarityCity-BoldItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:normal;font-weight:800;src:local(""),url(/assets/fonts/claritycity/ClarityCity-ExtraBold.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:italic;font-weight:800;src:local(""),url(/assets/fonts/claritycity/ClarityCity-ExtraBoldItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:normal;font-weight:900;src:local(""),url(/assets/fonts/claritycity/ClarityCity-Black.woff2) format("woff2")}@font-face{font-display:swap;font-family:Clarity City;font-style:italic;font-weight:900;src:local(""),url(/assets/fonts/claritycity/ClarityCity-BlackItalic.woff2) format("woff2")}:root{--color-base-dark:#353535;--color-base-light:#f2f2d9;--color-primary-highlight:#e79419;--color-secondary-highlight:#ecaa46;--color-tertiary-highlight:#77b6a6;--color-quaternary-highlight:#3c6e71;--color-quinary-highlight:#346063;--space-2xs:clamp(0.1875rem,0.15rem + 0.19vw,0.3125rem);--space-xs:clamp(0.3125rem,0.27rem + 0.19vw,0.4375rem);--space-s:clamp(0.625rem,0.55rem + 0.38vw,0.875rem);--space-m:clamp(0.875rem,0.74rem + 0.67vw,1.3125rem);--space-l:clamp(1.1875rem,1.01rem + 0.87vw,1.75rem);--space-xl:clamp(2.375rem,2.03rem + 1.73vw,3.5rem);--space-2xl:clamp(3.5625rem,3.04rem + 2.60vw,5.25rem);--space-3xl:clamp(5.9375rem,5.07rem + 4.33vw,8.75rem);--space-xs-s:clamp(0.3125rem,0.14rem + 0.87vw,0.875rem);--space-s-m:clamp(0.625rem,0.41rem + 1.06vw,1.3125rem);--space-m-l:clamp(0.875rem,0.61rem + 1.35vw,1.75rem);--space-l-xl:clamp(1.1875rem,0.48rem + 3.56vw,3.5rem);--space-l-2xl:clamp(2.375rem,1.49rem + 4.42vw,5.25rem);--space-xl-2xl:clamp(3.5625rem,1.97rem + 7.98vw,8.75rem);--space-2xl-3xl:clamp(5.9375rem,3.46rem + 12.40vw,14rem);--size-step-min-2:clamp(0.868125rem,0.84rem + 0.14vw,0.96rem);--size-step-min-1:clamp(1.041875rem,0.99rem + 0.24vw,1.2rem);--size-step-0:clamp(1.25rem,1.17rem + 0.38vw,1.5rem);--size-step-1:clamp(1.5rem,1.38rem + 0.58vw,1.875rem);--size-step-2:clamp(1.8rem,1.63rem + 0.84vw,2.34375rem);--size-step-3:clamp(2.16rem,1.92rem + 1.18vw,2.93rem);--size-step-4:clamp(2.591875rem,2.26rem + 1.65vw,3.661875rem);--size-step-5:clamp(3.110625rem,2.66rem + 2.26vw,4.5775rem);--size-step-6:clamp(3.7325rem,3.12rem + 3.06vw,5.721875rem);--leading-flat:1;--leading-fine:1.2;--leading-standard:1.4;--font-display:Clarity City,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;--font-base:Clarity City,Optima,Candara,Noto Sans,source-sans-pro,sans-serif;--font-mono:RobotoMono,ui-monospace,Cascadia Code,Source Code Pro,Menlo,Consolas,DejaVu Sans Mono,monospace;--font-thin:100;--font-extra-light:200;--font-light:300;--font-regular:400;--font-medium:500;--font-semi-bold:600;--font-bold:700;--font-extra-bold:800;--font-black:900;--gutter:var(--space-m-l);--border-radius:0.3rem;--transition-duration:250ms;--transition-timing:ease;--wrapper-width:85rem;--tracking:-0.05ch;--tracking-s:-0.075ch;--tracking-wide:0.05ch;--gradient-reflection:linear-gradient(45deg,var(--color-primary),var(--color-secondary),var(--color-primary));--gradient-linear:linear-gradient(0deg,var(--color-primary),var(--color-tertiary));--gradient-conic:conic-gradient(var(--color-primary) 0 33.333%,var(--color-quaternary) 0 66.666%,var(--color-tertiary) 0 99.999%);--gradient-stripes:linear-gradient(45deg,var(--color-base-dark) 0 70%,var(--color-primary) 0 80%,var(--color-quaternary) 0 90%,var(--color-tertiary) 0 100%)}:root,:root[data-theme=light]{--color-dark:var(--color-base-dark);--color-light:var(--color-base-light);--color-text:var(--color-base-dark);--color-bg:var(--color-base-light);--color-base:var(--color-base-dark);--color-primary:var(--color-primary-highlight);--color-secondary:var(--color-secondary-highlight);--color-tertiary:var(--color-tertiary-highlight);--color-quaternary:var(--color-quaternary-highlight);--color-quinary:var(--color-quinary-highlight);--color-text-accent:#505050;--color-bg-accent:#fdfdfd;--color-bg-accent-2:#f7f7f7}@media (prefers-color-scheme:dark){:root{--color-text:var(--color-base-light);--color-bg:var(--color-base-dark);--color-base:var(--color-base-light);--color-primary:var(--color-primary-highlight);--color-secondary:var(--color-secondary-highlight);--color-tertiary:var(--color-tertiary-highlight);--color-quaternary:var(--color-quaternary-highlight);--color-quinary:var(--color-quinary-highlight);--color-text-accent:#a8a8a8;--color-bg-accent:#383838;--color-bg-accent-2:#404040}}:root[data-theme=dark]{--color-text:var(--color-base-light);--color-bg:var(--color-base-dark);--color-base:var(--color-base-light);--color-primary:var(--color-primary-highlight);--color-secondary:var(--color-secondary-highlight);--color-tertiary:var(--color-tertiary-highlight);--color-quaternary:var(--color-quaternary-highlight);--color-quinary:var(--color-quinary-highlight);--color-text-accent:#a8a8a8;--color-bg-accent:#383838;--color-bg-accent-2:#404040}@supports (background:color-mix(in srgb,red 50%,blue)){:root,:root[data-theme=light]{--color-text-accent:color-mix(in oklab,var(--color-base-dark) 80%,var(--color-bg));--color-bg-accent:color-mix(in oklab,var(--color-bg) 90%,var(--color-text));--color-bg-accent-2:color-mix(in oklab,var(--color-bg) 70%,var(--color-text));--color-primary-sub-20:color-mix(in oklab,var(--color-primary-highlight),var(--color-bg) 20%);--color-secondary-sub-20:color-mix(in oklab,var(--color-secondary-highlight),var(--color-bg) 20%);--color-tertiary-sub-20:color-mix(in oklab,var(--color-tertiary-highlight),var(--color-bg) 20%);--color-quaternary-sub-20:color-mix(in oklab,var(--color-quaternary-highlight),var(--color-bg) 20%);--color-quinary-sub-20:color-mix(in oklab,var(--color-quinary-highlight),var(--color-bg) 20%);--color-primary-add-20:color-mix(in oklab,var(--color-primary-highlight),#000 20%);--color-secondary-add-20:color-mix(in oklab,var(--color-secondary-highlight),#000 20%)}@media (prefers-color-scheme:dark){:root{--color-text-accent:color-mix(in oklab,var(--color-base-light) 70%,var(--color-bg));--color-bg-accent:color-mix(in oklab,var(--color-bg) 92%,var(--color-text));--color-bg-accent-2:color-mix(in oklab,var(--color-bg) 80%,var(--color-text));--color-primary:var(--color-primary-sub-20);--color-secondary:var(--color-secondary-sub-20);--color-tertiary:var(--color-tertiary-sub-20);--color-quaternary:var(--color-quaternary-sub-20);--color-quinary:var(--color-quinary-sub-20);--color-primary-add-20:color-mix(in oklab,var(--color-primary-highlight),var(--color-bg) 20%);--color-secondary-add-20:color-mix(in oklab,var(--color-secondary-highlight),var(--color-bg) 20%)}}:root[data-theme=dark]{--color-text-accent:color-mix(in oklab,var(--color-base-light) 70%,var(--color-bg));--color-bg-accent:color-mix(in oklab,var(--color-bg) 92%,var(--color-text));--color-bg-accent-2:color-mix(in oklab,var(--color-bg) 80%,var(--color-text));--color-primary:var(--color-primary-sub-20);--color-secondary:var(--color-secondary-sub-20);--color-tertiary:var(--color-tertiary-sub-20);--color-quaternary:var(--color-quaternary-sub-20);--color-quinary:var(--color-quinary-sub-20);--color-primary-add-20:color-mix(in oklab,var(--color-primary-highlight),var(--color-bg) 20%);--color-secondary-add-20:color-mix(in oklab,var(--color-secondary-highlight),var(--color-bg) 20%)}}@supports (color:hsl(from red h s l)){@media (prefers-color-scheme:dark){:root{--color-primary:hsl(from var(--color-primary-highlight) h calc(s / 1.2) l);--color-secondary:hsl(from var(--color-secondary-highlight) h calc(s / 1.2) l);--color-tertiary:hsl(from var(--color-tertiary-highlight) h calc(s / 1.2) l);--color-quaternary:hsl(from var(--color-quaternary-highlight) h calc(s / 1.2) l);--color-quinary:hsl(from var(--color-quinary-highlight) h calc(s / 1.2) l)}}:root[data-theme=dark]{--color-primary:hsl(from var(--color-primary-highlight) h calc(s / 1.2) l);--color-secondary:hsl(from var(--color-secondary-highlight) h calc(s / 1.2) l);--color-tertiary:hsl(from var(--color-tertiary-highlight) h calc(s / 1.2) l);--color-quaternary:hsl(from var(--color-quaternary-highlight) h calc(s / 1.2) l);--color-quinary:hsl(from var(--color-quinary-highlight) h calc(s / 1.2) l)}}html{color-scheme:light dark;scrollbar-color:var(--color-text) var(--color-bg);scrollbar-width:auto}body{accent-color:var(--color-primary);background-color:var(--color-bg);color:var(--color-text);display:flex;flex-direction:column;font-family:var(--font-base);font-size:var(--size-step-0);font-size-adjust:from-font;font-weight:var(--font-medium);letter-spacing:var(--tracking);line-height:var(--leading-standard)}main{flex:auto}h1,h2,h3{font-family:var(--font-display);font-weight:var(--font-bold);letter-spacing:var(--tracking-s);line-height:var(--leading-fine)}h1{font-size:var(--size-step-6)}h2{font-size:var(--size-step-4)}h3{font-size:var(--size-step-2)}blockquote:not([class]),li,p{max-inline-size:65ch}ul:not([role=list]){margin-inline-start:1ch}blockquote{font-size:var(--size-step-2);padding:var(--space-m-l);position:relative;quotes:"“" "”" "‘" "’";&:before{content:open-quote;left:0;top:-.5rem}&:after,&:before{font-weight:var(--font-semi-bold);position:absolute}&:after{bottom:-.5rem;content:close-quote;right:0}}blockquote q{quotes:"‘" "’" "“" "”"}blockquote>*+*{margin-block-start:var(--space-m-l)}blockquote :last-child{font-family:var(--font-base);font-size:var(--size-step-1);font-style:normal}q{quotes:"“" "”" "‘" "’" "“" "”" "‘" "’" "“" "”"}svg{block-size:2ex;flex:none;inline-size:auto}b,strong{font-weight:var(--font-extra-bold)}hr{background-color:var(--color-bg-accent-2);border:0;height:1px;margin-block:var(--space-m-l);margin-inline-start:0;width:10%}a{color:currentcolor;text-decoration-thickness:.08em}a:hover{text-decoration:none}:focus-visible{outline:3px solid currentColor;outline-offset:.3ch}main:focus{outline:none}::-moz-selection{background-color:var(--color-text);color:var(--color-bg)}::selection{background-color:var(--color-text);color:var(--color-bg)}::-moz-placeholder{color:var(--color-text);opacity:1}::placeholder{color:var(--color-text);opacity:1}.preload-transitions *{transition:none!important}@media (scripting:none){.require-js{display:none}}@media (prefers-reduced-motion:reduce){html:focus-within{scroll-behavior:auto}*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}@media print{*,:after,:before{background-color:transparent!important;box-shadow:none!important;color:#000!important;text-shadow:none!important}@page{margin:1cm}a,a:visited{text-decoration:underline}a[href*="://"]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}body{font-size:var(--size-step-min-2);font-weight:var(--font-medium)}.grid{display:block!important}ul.grid{display:grid!important;grid-template-columns:1fr 1fr 1fr}h1{font-size:var(--size-step-1)}h2{font-size:var(--size-step-0)}h3{font-size:var(--size-step-min-1)}blockquote:not([class]),li,p{max-inline-size:75ch}#accessibility,.back-to-top-wrapper,.seperator,.site-footer-spacer,.site-head,.site-hero,.site-logo-spacer,.site-main-spacer,.site-navigation,.site-spacer,footer{display:none!important}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999}blockquote,figure,img,pre,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}h1:before{content:"brianbaldock.com";font-size:var(--size-step-min-2);font-weight:var(--font-medium);inset-block-start:3.5rem;inset-inline-end:-2.75rem;letter-spacing:.0125ch;position:absolute;transform:rotate(90deg);z-index:100}}:where(.cluster){align-items:var(--cluster-vertical-alignment,center);display:flex;flex-wrap:wrap;gap:var(--gutter,var(--space-s-l));justify-content:var(--cluster-horizontal-alignment,flex-start)}:where(.flow)>*+*{margin-block-start:var(--flow-space,1em)}:where(.grid){display:grid;gap:var(--gutter,var(--space-s-m));grid-template-columns:repeat(var(--grid-placement,auto-fill),minmax(var(--grid-min-item-size,16rem),1fr))}:where(.grid)[data-rows=masonry]{align-items:start;grid-template-rows:masonry}:where(.grid)[data-layout="50-50"]{--grid-placement:auto-fit;--grid-min-item-size:clamp(16rem,50vw,28rem);padding-block-end:var(--space-m-l);padding-inline:var(--space-m-l)}.grid[data-layout=site]{display:grid;gap:3px 3px;grid-template-areas:"header nav" "hero hero" "main main" "footer footer" "main-spacer main-spacer";grid-template-columns:1fr 1fr;grid-template-rows:10rem minmax(auto,min-content) minmax(250px,auto) max-content}@media (min-width:640px){.grid[data-layout=site]{background-color:var(--color-bg);grid-template-areas:". header ." "hero hero main-spacer" "nav main main-spacer" "nav main ." ". footer .";grid-template-columns:max(15ch) minmax(auto,3fr) minmax(10%,1.25fr);grid-template-rows:10rem minmax(200px,300px) minmax(200px,350px) auto max-content;&:before{background-image:linear-gradient(to bottom,var(--color-quaternary-highlight) 0 6.5rem,var(--color-tertiary-highlight) 6.5rem 7rem,var(--color-quinary-highlight) 7rem);grid-column:1}&:after,&:before{content:"";grid-row:1}&:after{background-color:var(--color-quaternary-highlight);grid-column:3}}}:where(.repel){align-items:var(--repel-vertical-alignment,center);display:flex;flex-wrap:wrap;gap:var(--gutter,var(--space-s-l));justify-content:space-between}:where(.repel)[data-nowrap]{flex-wrap:nowrap}:where(.sidebar){display:flex;flex-wrap:wrap;gap:var(--gutter,var(--space-s-l))}:where(.sidebar):not([data-direction])>:first-child{flex-basis:var(--sidebar-target-width,20rem);flex-grow:1}:where(.sidebar):not([data-direction])>:last-child{flex-basis:0;flex-grow:999;min-inline-size:var(--sidebar-content-min-width,50%)}:where(.sidebar)[data-direction=rtl]>:last-child{flex-basis:var(--sidebar-target-width,20rem);flex-grow:1}:where(.sidebar)[data-direction=rtl]>:first-child{flex-basis:0;flex-grow:999;min-inline-size:var(--sidebar-content-min-width,50%)}.switcher{align-items:var(--switcher-vertical-alignment,flex-start);display:flex;flex-wrap:wrap;gap:var(--gutter,var(--space-s-l))}.switcher>*{flex-basis:calc((var(--switcher-target-container-width, 40rem) - 100%)*999);flex-grow:1}.switcher>:nth-last-child(n+3),.switcher>:nth-last-child(n+3)~*{flex-basis:100%}.wrapper{--gap:clamp(1rem,6vw,3rem);--full:minmax(var(--gap),1fr);--content:min(var(--wrapper-width,85rem),100% - var(--gap) * 2);--popout:minmax(0,2rem);--feature:minmax(0,5rem);display:grid;grid-template-columns:[full-start] var(--full) [feature-start] var(--feature) [popout-start] var(--popout) [content-start] var(--content) [content-end] var(--popout) [popout-end] var(--feature) [feature-end] var(--full) [full-end]}.wrapper>*{grid-column:content}.prose-wrapper{--wrapper-width:64rem}.popout{grid-column:popout}.feature{grid-column:feature}.full{grid-column:full}.back-to-top-link-wrapper{display:none;inset-block-end:0;inset-block-start:100vh;inset-inline-end:0;position:absolute;width:3rem;z-index:100}.back-to-top-link{align-items:center;block-size:2rem;border:2px solid;border-radius:50%;display:flex;inline-size:2rem;inset-block-start:calc(100vh - 4.75rem);justify-content:center;padding:.25rem;position:fixed;transition:transform 80ms ease-in;&:hover{outline:outset currentColor;outline-offset:6px}}@media (min-width:662px){.back-to-top-link-wrapper{display:block}.back-to-top-link{border:0;inset-block-start:calc(100vh - 8rem)}}.button{background-color:var(--button-bg,var(--color-bg));border:2px solid var(--button-border,var(--color-text));border-radius:var(--border-radius);color:var(--button-text,var(--color-text));display:inline-block;font:inherit;font-weight:var(--font-bold);padding:.3rem var(--space-s);text-align:center;text-decoration:none}.button:hover,.button[aria-current=page],.button[aria-pressed=true],.button[data-state=active]{background-size:150% 150%;--button-bg:var(--color-text);--button-text:var(--color-bg);--button-border:var(--color-text)}.button:active{transform:scale(99%)}.button:where(:has(svg)){align-items:center;display:flex;gap:.5em}.button:where(:has(.visually-hidden)){border-radius:50%;padding:.5em}.button:where(:not(:has(svg))){min-inline-size:6ch;text-align:center}.button:where(:not(:has(.visually-hidden))){padding:var(--button-padding,.35em 1em)}:root{--color-code-orange:#e09952;--color-code-blue:var(--color-secondary);--color-code-indigo:#7d59c5;--color-code-violet:#e052bf;--color-code-pink:#e05269;--color-code-gray:#949494;--color-code-bg:color-mix(in oklab,var(--color-bg) 92%,#000)}code,pre{background-color:var(--color-code-bg);border-radius:var(--border-radius);font-family:var(--font-mono);font-size:var(--size-step-min-1)}code[class*=language-],pre[class*=language-]{white-space:pre;word-break:normal;word-spacing:normal;word-wrap:normal;-webkit-hyphens:none;hyphens:none}pre{grid-column:popout!important;overflow-x:auto;padding:var(--space-m-l)}:where(:not(pre))>code{padding:.1em .4em;position:relative;top:-.05em}pre[class*=language-]{overflow:auto;position:relative}[class*=language-] .namespace{opacity:.7}.token.atrule{color:var(--color-code-pink)}.token.attr-name{color:var(--color-code-orange)}.token.attr-value{color:var(--color-text-accent)}.token.attribute{color:var(--color-code-blue)}.token.boolean{color:var(--color-code-pink)}.token.builtin,.token.cdata,.token.char,.token.class,.token.class-name,.token.color{color:var(--color-code-orange)}.token.comment{color:var(--color-code-gray)}.token.constant,.token.deleted{color:var(--color-code-pink)}.token.doctype{color:var(--color-code-orange)}.token.entity,.token.function{color:var(--color-code-pink)}.token.hexcode{color:var(--color-code-orange)}.token.id,.token.important{color:var(--color-code-pink);font-weight:var(--font-bold)}.token.inserted{color:var(--color-code-orange)}.token.keyword{color:var(--color-code-pink);font-style:italic}.token.number{color:var(--color-text-accent)}.token.operator{color:var(--color-code-gray)}.token.prolog,.token.property{color:var(--color-code-orange)}.token.pseudo-class,.token.pseudo-element{color:var(--color-code-blue)}.token.punctuation{color:var(--color-code-gray)}.token.regex{color:var(--color-code-orange)}.token.selector{color:var(--color-code-pink)}.token.string{color:var(--color-text-accent)}.token.symbol,.token.tag,.token.unit{color:var(--color-code-pink)}.token.url{color:var(--color-code-violet)}.token.variable{color:var(--color-code-pink)}.codepen a{--icon-size:1.2em;align-items:center;display:flex;gap:var(--space-2xs)}.prose .cp_embed_wrapper,.prose .cp_embed_wrapper+script+:not(h2){--flow-space:var(--space-l)}.cp_embed_wrapper{display:grid;grid-column:popout;grid-template-areas:"container";overflow:auto;place-items:center;position:relative;resize:horizontal}.cp_embed_wrapper iframe{grid-area:container;width:100%}article [href^=http]:not([href*="localhost:8080"]):not([href*="brianbaldock.com"]):not(.button){padding-inline-end:.8em}article [href^=http]:not([href*="localhost:8080"]):not([href*="brianbaldock.com"]):not(.no-indicator):after{background-image:url(/assets/images/template/external.svg);background-position:50%;background-repeat:no-repeat;background-size:60% auto;block-size:1em;content:"(external link)";display:inline-block;inline-size:1em;overflow:hidden;position:absolute;text-indent:1em;white-space:nowrap}.faq dt{font-weight:var(--font-bold);margin-inline-start:2rem;&:before{color:var(--color-primary);content:"Q: ";margin-inline-start:-1.85rem}}.faq dd{margin-inline-start:2rem;&:before{content:"A: ";font-weight:var(--font-bold);margin-inline-start:-1.85rem}+dd:before{content:none}}form{padding-block-start:var(--space-m)}input{background-color:var(--color-bg);border-color:var(--color-text);border-width:4px;color:var(--color-text)}form>span,span>input{display:block}input+span{font-size:var(--size-step-min-1);font-weight:var(--font-light)}p+label,span+input{margin-block-start:var(--space-m)}p+label{display:inline-block}.site-hero{display:grid;gap:3px;grid-area:hero;grid-template-areas:"image" "blurb";grid-template-columns:fit-content auto}@media (min-width:662px){.site-hero{grid-template-areas:"blurb image";grid-template-columns:subgrid}}.hero-blurb{align-items:end;background-color:#141414;color:color-mix(in srgb,var(--color-base-light),transparent 50%);display:grid;font-size:var(--size-step-min-2);grid-area:blurb;justify-content:start;letter-spacing:-.0027777778rem;padding:var(--space-xs-s)}.hero-image{grid-area:image;img{aspect-ratio:3/2.75;filter:grayscale(1) sepia(25%) saturate(131%) hue-rotate(21deg) brightness(98%) contrast(101%);inline-size:100%;max-height:300px;-o-object-fit:cover;object-fit:cover;-o-object-position:50% 75%;object-position:50% 75%}}.mainnav{--nav-list-timing-function:cubic-bezier(0.68,-0.55,0.27,1.55);inset-inline-end:0;position:var(--nav-position,absolute);z-index:100}.mainnav:has([aria-expanded=true]){--nav-position:fixed;inset-inline-end:var(--gap)}.mainnav ul{--gutter:var(--space-xs);--cluster-vertical-alignment:normal;--nav-list-background:var(--color-bg-accent);--nav-list-shadow:-5px 0 11px 0 rgba(0,0,0,.2);--nav-list-layout:column;--nav-list-height:100dvh;--nav-list-padding:var(--space-2xl) var(--space-s);--nav-list-position:fixed;--nav-list-width:min(18rem,100vw);--nav-list-visibility:hidden;background:var(--nav-list-background);block-size:var(--nav-list-height);box-shadow:var(--nav-list-shadow);display:flex;flex-direction:var(--nav-list-layout);flex-wrap:wrap;inline-size:var(--nav-list-width);inset-block-start:10rem;inset-inline-end:0;list-style:none;margin:0;opacity:0;padding:var(--nav-list-padding);position:var(--nav-list-position);transition:opacity .3 var(--nav-list-timing-function) visibility .3s ease-in-out;visibility:var(--nav-list-visibility)}.mainnav ul[no-flash]{transition:none}@media (prefers-reduced-motion:no-preference){.mainnav ul{--nav-list-transform:translateX(100%);opacity:1;transform:var(--nav-list-transform);transition:transform .5s var(--nav-list-timing-function),visibility .3s linear}.mainnav svg{transition:transform .4s var(--nav-list-timing-function)}}.mainnav [aria-expanded=true]+ul{--nav-list-visibility:visible;--nav-list-transform:translateX(0);opacity:1}.mainnav button{--gutter:var(--space-2xs);--cluster-vertical-alignment:center;display:var(--nav-button-display,flex);line-height:var(--leading-flat);padding:var(--space-2xs) 0;position:relative;z-index:2}.mainnav span{font-family:var(--font-display);font-size:var(--size-step-min-1);font-weight:var(--font-extra-bold);text-transform:uppercase}.mainnav svg{block-size:.9em;color:var(--color-text);stroke-width:3}.mainnav [aria-expanded=true] svg{transform:rotate(45deg)}.mainnav a{--nav-item-background:transparent;--nav-item-text-color:var(--text-color);--nav-item-padding:var(--space-xs) var(--space-2xs);--nav-item-decoration-color:transparent;background:var(--nav-item-background);border-radius:var(--border-radius);color:var(--nav-item-text-color);display:block;padding:var(--nav-item-padding);text-decoration-color:var(--nav-item-decoration-color);text-decoration-line:underline;text-decoration-thickness:3px;text-underline-offset:.2em}.mainnav a:where(:hover,:focus){--nav-item-background:transparent;--nav-item-text-color:var(--color-text);--nav-item-decoration-color:var(--color-text)}.mainnav [aria-current=page],.mainnav [data-state=active]{--nav-item-background:var(--color-primary);--nav-item-text-color:var(--color-light);--nav-item-decoration-color:transparent}@media (min-width:662px){.mainnav{--nav-position:static;--nav-button-display:none}.mainnav ul{--gutter:0;--nav-list-layout:column;--nav-list-position:static;--nav-list-padding:0 var(--space-xs);--nav-list-height:auto;--nav-list-width:100%;--nav-list-shadow:none;--nav-list-visibility:visible;--nav-list-transform:translateX(0)}.mainnav [aria-current=page],.mainnav [data-state=active]{--nav-item-background:transparent;--nav-item-text-color:var(--color-primary);--nav-item-decoration-color:var(--color-primary)}}.mainnav ul:first-child{--nav-list-layout:row;--nav-list-position:static;--nav-list-padding:0;--nav-list-height:auto;--nav-list-width:100%;--nav-list-shadow:none;--nav-list-visibility:visible;--nav-list-transform:translateX(0);margin-block-end:var(--space-2xs)}.mainnav ul:first-child [aria-current=page],.mainnav ul:first-child [data-state=active]{--nav-item-background:transparent;--nav-item-text-color:var(--color-primary);--nav-item-decoration-color:var(--color-primary)}.mainnav:has(ul:first-child){--nav-position:relative}.prose{--flow-space:var(--space-m-l);--wrapper-width:64rem}.prose :where(pre,pre+*,figure,figure+*){--flow-space:var(--space-m-l)}.prose figcaption{border-bottom:1px solid var(--color-bg-accent);font-size:var(--size-step-min-1);margin-block-end:var(--space-s);padding-block-end:var(--space-xs);text-align:center}:where(.prose :is(h2,h3,h4)){--flow-space:var(--space-xl)}:where(.prose :is(h2+*,h3+*,h4+*):not(figure)){--flow-space:var(--space-m)}.prose .heading-anchor:is(:hover,:focus){text-decoration:none}.heading-anchor{text-decoration:none}.prose mark{background-color:var(--color-tertiary);color:var(--color-base-dark)}.prose :not(.cluster):not(.grid)>li+li{padding-block-start:var(--space-s-m)}.prose :where(ul:not(.grid),ol:not(.grid)){padding-inline-start:1.2ch}.prose :where(ul:not(.grid):not([role=list])) li::marker{color:var(--color-primary);content:"– "}.prose ol li::marker{color:var(--color-primary)}.prose img{border-radius:var(--border-radius)}@media (max-width:640px){.prose a,.prose>*{overflow-wrap:break-word;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;word-break:break-word}}.section>.seperator:first-child{transform:rotate(180deg) translateY(-1px)}.section__inner{background-color:var(--spot-color,var(--color-bg-accent));color:var(--color-text)}.section blockquote{font-size:var(--size-step-4);font-weight:var(--font-bold);letter-spacing:var(--tracking-s);line-height:1}.section :is(h1,h2,h3,blockquote){opacity:95%}.seperator{block-size:3.5em;display:block;inline-size:100%;fill:var(--spot-color,var(--color-bg))}.section>.seperator{transform:translateY(-1px)}.site-head{align-items:end;background-image:linear-gradient(to bottom,var(--color-quaternary-highlight) 0 6.5rem,var(--color-tertiary-highlight) 6.5rem 7rem,var(--color-quinary-highlight) 7rem);display:grid;grid-area:header;justify-content:end;padding-block-end:var(--space-xs);padding-inline-end:var(--space-s)}.logo{--gutter:var(--space-xs);font-size:var(--size-step-0);font-weight:var(--font-bold);text-decoration:none;text-transform:uppercase}.site-navigation{align-items:end;background-image:linear-gradient(to bottom,var(--color-quaternary-highlight) 0 65%,var(--color-tertiary-highlight) 65% 70%,var(--color-quinary-highlight) 70%);display:flex;grid-area:nav;justify-content:end;padding-block-end:var(--space-xs)}.site-navigation button span,.site-navigation button svg{color:var(--color-base-light)}@media (min-width:640px){.site-navigation{align-items:start;background-color:var(--color-bg-accent);background-image:none;justify-content:start}}.site-main{grid-area:main}.site-main-spacer{background-color:var(--color-bg-accent);background-image:repeating-linear-gradient(45deg,transparent,transparent .25rem,var(--color-bg) .25rem,var(--color-bg) .3rem);background-size:6px 6px;grid-area:main-spacer}.site-logo-spacer{display:none}@media (min-width:640px){.site-logo-spacer{align-items:end;background-color:var(--color-bg-accent);display:grid;justify-content:end;>svg{height:auto;margin-block:10%;margin-inline:10%;width:80%}>svg>path{fill:var(--color-bg);opacity:.4}}.site-spacer{background-color:var(--color-quaternary-highlight)}}.site-foot{background-image:linear-gradient(to top,var(--color-quinary-highlight) 0 95%,var(--color-tertiary-highlight) 95% 100%);color:var(--color-base-light);grid-area:footer;padding:var(--space-l-xl)}@media (min-width:640px){.site-footer-spacer{background-image:linear-gradient(to top,var(--color-quinary-highlight) 0 95%,var(--color-tertiary-highlight) 95% 100%)}}.site-foot__inner{align-items:center;display:flex;gap:var(--space-xs);justify-content:center}.site-foot__inner a{padding:var(--space-xs)}:not(nav#social).site-foot__inner{flex-wrap:wrap}.site-foot svg{block-size:1em;inline-size:1.1em}.site-foot .creator{text-decoration:none}.site-foot .creator:hover{-webkit-background-clip:text;background-clip:text;background-image:var(--gradient-reflection);background-repeat:repeat;background-size:100%;color:transparent}.site-foot .creator:hover svg{color:var(--color-text)}.skip-link{clip:rect(1px,1px,1px,1px);block-size:1px;display:block;inline-size:1px;left:1rem;overflow:hidden;position:absolute;top:1rem;z-index:999}.skip-link:focus{clip:auto;background-color:var(--color-text);block-size:auto;border-radius:var(--border-radius);color:var(--color-bg);inline-size:auto;line-height:1;overflow:visible;padding:var(--space-xs) var(--space-s-m)}.skip-link:not(:focus){border:0;clip:rect(0 0 0 0);block-size:auto;inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}.taglist{--gutter:var(--space-s-m)}.post-tag{--button-bg:var(--color-text);--button-text:var(--color-bg);--button-border:var(--color-text);font-size:var(--size-step-min-2);font-weight:var(--font-bold);padding:.1rem .625rem;text-transform:uppercase}.card .post-tag{--button-bg:var(--color-bg-accent-2);--button-text:var(--color-text);--button-border:var(--color-bg-accent-2)}.tags h1{font-size:var(--size-step-4)}.tags h2{font-size:var(--size-step-2)}.gradient-text{-webkit-background-clip:text;background-clip:text;background-image:var(--gradient-conic);background-size:100%;color:transparent;padding:.6rem 0}.gradient-text-reflection{background-image:var(--gradient-reflection)}.gradient-text-linear,.gradient-text-reflection{-webkit-background-clip:text;background-clip:text;background-repeat:repeat;background-size:auto;color:transparent}.gradient-text-linear{background-image:var(--gradient-linear)}.theme-switch h2{font-family:var(--font-base);font-size:var(--size-step-min-1)}.theme-switch .button{--button-border:var(--color-bg-accent-2);border-radius:var(--border-radius);font-size:var(--size-step-min-2);font-weight:var(--font-bold);min-block-size:1.5em;padding:.1rem .625rem;text-transform:uppercase}.theme-switch .button[aria-pressed=true]{--_color-primary-contrast:color-mix(in oklab,var(--color-primary) 85%,var(--color-base-dark));--button-bg:var(--_color-primary-contrast);--button-text:#000;--button-border:var(--_color-primary-contrast);outline-color:var(--_color-primary-contrast)}is-land:not(:defined) .theme-switch{display:none}.blur{filter:blur(.25rem)}.heading-line{align-items:flex-start;display:flex;text-align:left;&:after{background:var(--color-bg-accent-2);block-size:1px;content:"";flex-grow:1;margin-block-start:auto;margin-inline-start:var(--space-s);transform:translateY(-.25em)}}.ontop{position:relative;z-index:1}.region{padding-block-end:var(--region-space-bottom,var(--space-l-xl));padding-block-start:var(--region-space-top,var(--space-l-xl))}.region>:not(.section){padding-inline-end:var(--region-space-right,var(--space-m-l));padding-inline-start:var(--region-space-left,var(--space-m-l))}.region.section__inner{padding-inline-end:0;padding-inline-start:0}.spin{animation:spin 30s linear infinite}@media (prefers-reduced-motion:no-preference){@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}}.visually-hidden{border:0;clip:rect(0 0 0 0);height:0;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.my-s-m{margin-bottom:clamp(.625rem,.41rem + 1.06vw,1.3125rem);margin-top:clamp(.625rem,.41rem + 1.06vw,1.3125rem)}.mt-l-xl{margin-top:clamp(1.1875rem,.48rem + 3.56vw,3.5rem)}.mt-s-m{margin-top:clamp(.625rem,.41rem + 1.06vw,1.3125rem)}.mt-xs{margin-top:clamp(.3125rem,.27rem + .19vw,.4375rem)}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.text-center{text-align:center}.text-step-0{font-size:clamp(1.25rem,1.17rem + .38vw,1.5rem)}.text-step-min-1{font-size:clamp(1.041875rem,.99rem + .24vw,1.2rem)}.capitalize{text-transform:capitalize}.text-base-light{color:#f2f2d9}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}</style><link rel="preload" href="/assets/fonts/claritycity/ClarityCity-Medium.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/assets/fonts/claritycity/ClarityCity-Bold.woff2" as="font" type="font/woff2" crossorigin><script src="/bundle/jRNT8ldZjF.js" type="module"></script><meta name="description" content="My personal site, blog and repository of thought"><meta name="theme-color" content="#353535"><meta name="robots" content="index,follow"><meta name="googlebot" content="index,follow"><meta name="generator" content="Eleventy v3.0.0"><meta name="format-detection" content="telephone=no"><meta name="color-scheme" content="dark light"><meta name="view-transition" content="same-origin"><link rel="canonical" href="https://www.brianbaldock.com/404.html"><link rel="author" href="humans.txt"><link rel="me" href="https://fosstodon.org/@midknight"><meta name="fediverse:creator" content="https://fosstodon.org/@midknight"><meta property="og:url" content="https://www.brianbaldock.com/404.html"><meta property="og:type" content="website"><meta property="og:title" content="Not Found"><meta property="og:image" content="https://www.brianbaldock.com/assets/images/template/default-image.webp"><meta property="og:image:alt" content="Visible content: My personal site, blog and repository of thought"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="675"><meta property="og:description" content="My personal site, blog and repository of thought"><meta property="og:site_name" content="Brian Baldock"><meta property="og:locale" content="en_CA"><meta property="article:author" content="Brian Baldock"><link rel="alternate" type="application/atom+xml" title="Atom Feed for My Blog: Brian Baldock" href="/feed.xml"><link rel="alternate" type="application/json" title="JSON Feed: Brian Baldock" href="/feed.json"><link rel="icon" href="/favicon.ico" sizes="any"><link rel="icon" href="/favicon.svg" type="image/svg+xml"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="manifest" href="/site.webmanifest"></head><body class="page"><div id="accessibility" aria-label="accessibility navigation"><a href="#main" class="skip-link">Skip to content</a> <a href="#theme-switcher-label" class="skip-link">Skip to select theme</a></div><div data-layout="site" class="grid"><header class="site-head"><div class="repel"><a href="/" class="logo | cluster text-base-light"><span>Brian Baldock</span></a></div></header><div class="site-navigation"><nav id="mainnav" aria-label="Main" class="mainnav"><ul role="list" no-flash class="cluster"><li><a href="/about/">About</a></li><li><a href="/contact/">Contact</a></li><li><a href="/projects/">Projects</a></li><li><a href="/blog/">Blog</a></li></ul></nav><template id="burger-template"><button type="button" aria-expanded="false" aria-controls="mainnav" class="cluster"><span>Menu</span> <svg width="1em" height="1em" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button></template></div><section class="site-hero"><div class="hero-blurb"><p>Photo by <a href="https://unsplash.com/@victor_g?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Victor</a> on <a href="https://unsplash.com/photos/black-and-white-stripe-textile-iaquA2snPbk?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Unsplash</a></p></div><div class="hero-image"><img id="hero-image" src="/assets/images/template/victor-modern-architecture.webp" alt="The architectural marvel of Messe Basel in Switzerland, featuring a striking center void design. This innovative layout integrates sleek lines, glass, and steel, fostering creativity and seamless flow within the venue's dynamic spaces."></div></section><div aria-hidden="true" class="site-main-spacer"></div><main id="main" tabindex="-1" class="flow | site-main"><article class="region flow prose"><h1 class="gradient-text-reflection">Not Found</h1><h2 id="sorry-that-page-doesnt-exist"><a href="#sorry-that-page-doesnt-exist" class="heading-anchor">Sorry, that page doesn’t exist!</a></h2><p><a href="/">Please try visiting the home page!</a></p><p>Please let me know if you encounter more errors:<br><a href="mailto:[email protected]">[email protected]</a></p></article></main><div aria-hidden="true" class="site-main-spacer"></div><div aria-hidden="true" class="site-logo-spacer"><svg xmlns="https://www.w3.org/2000/svg" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" clip-rule="evenodd" viewBox="0 0 783 2159" aria-hidden="true"><path fill="#f7f7f780" d="M391.454 782.908 0 391.454 391.454 0l391.454 391.454zm-163.516-554.97V554.97H554.97V227.938z"></path><path fill="#f7f7f780" fill-rule="nonzero" d="M579.722 2145.638v-99.466c0-36.267-20.267-62.133-49.6-62.133-20 0-37.333 12.533-46.667 33.866-8-16-22.666-25.6-40.8-25.6-26.666 0-46.133 23.734-46.133 57.6v95.733zm-110.667-45.333H435.19v-39.466c0-12.534 6.933-21.6 16.8-21.6 9.866 0 17.066 9.066 17.066 21.6zm72 0h-36.8v-46.133c0-13.6 7.734-23.2 18.4-23.2 10.667 0 18.4 9.6 18.4 23.2zm38.667-132.8v-66.933c0-62.933-38.133-107.466-91.733-107.466s-91.467 44.533-91.467 107.466v66.933zm-41.333-45.6H437.856v-28.266c0-31.467 20.8-53.6 50.133-53.6s50.4 22.133 50.4 53.6zm44.533-239.465c0-53.334-43.467-98.4-94.933-98.4s-94.667 45.066-94.667 98.4c0 53.6 43.2 98.666 94.667 98.666s94.933-45.067 94.933-98.667Zm-41.333 0c0 28-24.534 51.732-53.6 51.732-28.8 0-53.333-23.733-53.333-51.733s24.533-51.466 53.333-51.466c29.066 0 53.6 23.466 53.6 51.466Zm41.333-209.6c0-28.534-12.267-54.4-31.733-72.534l-29.334 33.067c12 9.6 19.734 23.733 19.734 39.467 0 28-24.534 51.733-53.6 51.733-28.8 0-53.333-23.734-53.333-51.733 0-15.467 7.733-29.867 19.733-39.2l-29.6-33.334c-19.2 18.134-31.467 44-31.467 72.534 0 53.6 43.2 98.666 94.667 98.666s94.933-45.067 94.933-98.666m-3.2-86.134v-45.6h-49.867l-22.666-20.8 72.533-51.733v-54.933l-105.333 74.933-77.867-69.6v54.4l78.133 67.733h-78.133v45.6zm203.2 687.199c0-45.333-22.934-73.333-59.734-73.333-34.4 0-46.133 26.4-54.933 67.467-5.867 27.2-9.6 36-20.8 36-9.066 0-16-8.267-16-22.934 0-17.066 6.667-35.466 19.467-52.266l-32.533-23.2c-16 19.466-25.067 43.466-25.067 74.4 0 41.6 23.467 69.866 58.667 69.866 36.8 0 47.466-29.067 56.266-68.266 6.4-26.667 8.8-35.2 19.733-35.2 9.867 0 16.8 8.8 16.8 25.866 0 22.4-8.533 42.4-23.2 60.267l30.667 25.866c20-22.4 30.667-52 30.667-84.533m0-181.066c0-53.333-43.467-98.4-94.934-98.4s-94.666 45.067-94.666 98.4c0 53.6 43.2 98.666 94.666 98.666 51.467 0 94.934-45.066 94.934-98.666m-41.334 0c0 28-24.533 51.733-53.6 51.733-28.8 0-53.333-23.733-53.333-51.733s24.534-51.467 53.333-51.467c29.067 0 53.6 23.467 53.6 51.467m-2.666-158.399h-142.4v45.599h183.2v-133.866h-40.8zm44-181.067c0-50.134-34.4-85.067-83.467-85.067H596.522v45.333h100.8c25.866 0 44.266 16.534 44.266 39.734 0 22.933-18.4 39.466-44.266 39.466h-100.8v45.6h102.933c49.067 0 83.467-35.2 83.467-85.066m-3.2-167.2v-45.6h-142.4v-55.733h-40.8v156.8h40.8v-55.467zm-183.2-129.066v-45.6h183.2v45.6zm186.4-158.4c0-53.333-43.467-98.4-94.934-98.4s-94.666 45.067-94.666 98.4c0 53.6 43.2 98.666 94.666 98.666 51.467 0 94.934-45.066 94.934-98.666m-41.334 0c0 28-24.533 51.733-53.6 51.733-28.8 0-53.333-23.733-53.333-51.733s24.534-51.467 53.333-51.467c29.067 0 53.6 23.467 53.6 51.467m38.134-110.133v-45.6H671.455l108.267-80V817.64h-183.2v45.333h108.266l-108.266 80v45.6zm3.2-264.273c0-45.333-22.934-73.333-59.734-73.333-34.4 0-46.133 26.4-54.933 67.466-5.867 27.2-9.6 36-20.8 36-9.066 0-16-8.266-16-22.933 0-17.067 6.667-35.466 19.467-52.266l-32.533-23.2c-16 19.466-25.067 43.466-25.067 74.4 0 41.6 23.467 69.866 58.667 69.866 36.8 0 47.466-29.067 56.266-68.267 6.4-26.666 8.8-35.2 19.733-35.2 9.867 0 16.8 8.8 16.8 25.867 0 22.4-8.533 42.4-23.2 60.267l30.667 25.866c20-22.4 30.667-52 30.667-84.533"></path></svg></div><div aria-hidden="true" class="site-footer-spacer"></div><footer id="footer" class="site-foot"><div class="site-foot__inner"><nav aria-label="Complementary" class="site-foot__inner text-step-0">© 2024 <a href="/">Brian Baldock </a><a href="/credits/">Credits</a> <a href="/tidbits/">Tidbits</a> <a href="/styleguide/">Style guide</a></nav><nav aria-label="Platforms" class="site-foot__inner"><a href="/feed.xml" rel="alternate" type="application/atom+xml"><span class="visually-hidden">Atom Feed for My Blog</span> <svg xmlns="https://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24zM3.291 17.415a3.3 3.3 0 0 1 3.293 3.295A3.303 3.303 0 0 1 3.283 24C1.47 24 0 22.526 0 20.71s1.475-3.294 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z"></path></svg> </a><a href="https://github.com/Midknight" rel="me"><span class="visually-hidden">Github</span><div aria-hidden="true"><svg xmlns="https://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg></div></a><a href="https://www.linkedin.com/in/brian-baldock/" rel="me"><span class="visually-hidden">Linkedin</span><div aria-hidden="true"><svg xmlns="https://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.06 2.06 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0z"></path></svg></div></a><a href="https://fosstodon.org/@midknight" rel="me"><span class="visually-hidden">Mastodon</span><div aria-hidden="true"><svg xmlns="https://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38q.398-.092.786-.213c.585-.184 1.27-.39 1.774-.753a.06.06 0 0 0 .023-.043v-1.809a.05.05 0 0 0-.02-.041.05.05 0 0 0-.046-.01 20.3 20.3 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.6 5.6 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422q.059-.011.11-.024c2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102q0-1.965 1.011-3.12c.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164q1.012 1.155 1.012 3.12z"></path></svg></div></a><a href="https://www.buymeacoffee.com/bdock" rel="me"><span class="visually-hidden">Buymeacoffee</span><div aria-hidden="true"><svg xmlns="https://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="m20.216 6.415-.132-.666c-.119-.598-.388-1.163-1.001-1.379-.197-.069-.42-.098-.57-.241-.152-.143-.196-.366-.231-.572-.065-.378-.125-.756-.192-1.133-.057-.325-.102-.69-.25-.987-.195-.4-.597-.634-.996-.788a6 6 0 0 0-.626-.194c-1-.263-2.05-.36-3.077-.416a26 26 0 0 0-3.7.062c-.915.083-1.88.184-2.75.5-.318.116-.646.256-.888.501-.297.302-.393.77-.177 1.146.154.267.415.456.692.58.36.162.737.284 1.123.366 1.075.238 2.189.331 3.287.37q1.829.074 3.65-.118.449-.05.896-.119c.352-.054.578-.513.474-.834-.124-.383-.457-.531-.834-.473-.466.074-.96.108-1.382.146q-1.767.12-3.536.006a22 22 0 0 1-1.157-.107c-.086-.01-.18-.025-.258-.036q-.364-.055-.724-.13c-.111-.027-.111-.185 0-.212h.005q.416-.09.838-.147h.002c.131-.009.263-.032.394-.048a25 25 0 0 1 3.426-.12q1.011.029 2.017.144l.228.031q.4.06.798.145c.392.085.895.113 1.07.542.055.137.08.288.111.431l.319 1.484a.237.237 0 0 1-.199.284h-.003q-.056.008-.112.015a37 37 0 0 1-4.743.295 37 37 0 0 1-4.699-.304c-.14-.017-.293-.042-.417-.06-.326-.048-.649-.108-.973-.161-.393-.065-.768-.032-1.123.161-.29.16-.527.404-.675.701-.154.316-.199.66-.267 1-.069.34-.176.707-.135 1.056.087.753.613 1.365 1.37 1.502a39.7 39.7 0 0 0 11.343.376.483.483 0 0 1 .535.53l-.071.697-1.018 9.907c-.041.41-.047.832-.125 1.237-.122.637-.553 1.028-1.182 1.171q-.868.197-1.756.205c-.656.004-1.31-.025-1.966-.022-.699.004-1.556-.06-2.095-.58-.475-.458-.54-1.174-.605-1.793l-.731-7.013-.322-3.094c-.037-.351-.286-.695-.678-.678-.336.015-.718.3-.678.679l.228 2.185.949 9.112c.147 1.344 1.174 2.068 2.446 2.272.742.12 1.503.144 2.257.156.966.016 1.942.053 2.892-.122 1.408-.258 2.465-1.198 2.616-2.657q.511-4.997 1.024-9.995l.215-2.087a.48.48 0 0 1 .39-.426c.402-.078.787-.212 1.074-.518.455-.488.546-1.124.385-1.766zm-1.478.772c-.145.137-.363.201-.578.233-2.416.359-4.866.54-7.308.46-1.748-.06-3.477-.254-5.207-.498-.17-.024-.353-.055-.47-.18-.22-.236-.111-.71-.054-.995.052-.26.152-.609.463-.646.484-.057 1.046.148 1.526.22q.865.132 1.737.212c2.48.226 5.002.19 7.472-.14q.675-.09 1.345-.21c.399-.072.84-.206 1.08.206.166.281.188.657.162.974a.54.54 0 0 1-.169.364zm-6.159 3.9c-.862.37-1.84.788-3.109.788a5.9 5.9 0 0 1-1.569-.217l.877 9.004c.065.78.717 1.38 1.5 1.38 0 0 1.243.065 1.658.065.447 0 1.786-.065 1.786-.065.783 0 1.434-.6 1.499-1.38l.94-9.95a4 4 0 0 0-1.322-.238c-.826 0-1.491.284-2.26.613z"></path></svg></div></a></nav></div><is-land on:idle><div role="region" aria-labelledby="theme-switcher-label" data-theme-switcher style="--cluster-horizontal-alignment: center; --gutter: 0.5rem" class="theme-switch | cluster mt-xs"><h2 id="theme-switcher-label">Theme</h2><button id="light-theme-toggle" data-theme="light" class="button"><span>light</span></button> <button id="dark-theme-toggle" data-theme="dark" class="button"><span>dark</span></button></div></is-land><div role="navigation" class="back-to-top-link-wrapper"><a href="#accessibility" aria-label="Scroll to Top of Page" class="back-to-top-link"><svg xmlns="https://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 98.148 98.149" aria-hidden="true" id="caret"><path d="M97.562 64.692 50.49 17.618c-.75-.75-2.078-.75-2.828 0L.586 64.693a2 2 0 0 0 0 2.827l12.987 12.987c.391.391.902.586 1.414.586s1.023-.195 1.414-.586l32.674-32.674L81.75 80.506c.75.751 2.078.75 2.828 0l12.984-12.987a1.997 1.997 0 0 0 0-2.827"></path></svg></a></div></footer><div aria-hidden="true" class="site-spacer"></div></div></body>
</html>