Repository navigation
Expand file tree
/
Copy path404.html
More file actions
19 lines (18 loc) · 59.5 KB
/
Copy path404.html
File metadata and controls
19 lines (18 loc) · 59.5 KB
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 p=Object.defineProperty;var u=(c,t,e)=>t in c?p(c,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):c[t]=e;var s=(c,t,e)=>u(c,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;d.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(){d.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=d.getConditions(this);for(let a in e)d.map[a]&&t.push(d.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))}};s(r,"tagName","is-land"),s(r,"prefix","is-land--"),s(r,"attr",{template:"data-island",ready:"ready",defer:"defer-hydration"}),s(r,"onceCache",new Map),s(r,"onReady",new Map),s(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 m=n.getAttribute("shadowrootmode")||n.getAttribute("shadowroot")||"closed";o=e.attachShadow({mode:m}),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 f=r,l=class l{static hasConditions(t){return Object.keys(l.getConditions(t)).length>0}static getConditions(t){let e={};for(let a of Object.keys(l.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 m of a)e.removeEventListener(m,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(()=>{})}};s(l,"map",{visible:l.visible,idle:l.idle,interaction:l.interaction,media:l.media,"save-data":l.saveData});var d=l;"customElements"in window&&(window.customElements.define(f.tagName,f),window.Island=f);var y=f.ready;var h=class{};s(h,"attr",{autoInitType:"autoinit",import:"import"}),s(h,"types",{"petite-vue":function(t){t.createApp().mount(this)},vue:function(t){t.createApp().mount(this)},svelte:function(t){new t.default({target:this})},"svelte-ssr":function(t){new t.default({target:this,hydrate:!0})},preact:function(t){t.default(this)}});Island.onReady.set("import-autoinit",async function(c){let t,e=this.getAttribute(h.attr.import);if(e&&(t=await import(e)),t){let a=h.types[this.getAttribute(h.attr.autoInitType)||e];a&&await a.call(this,t)}});})();
(()=>{var a="theme-preference",l={dark:"#F2F2D9",light:"#2e2e2e"},t={value:d()};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 d(){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>@layer tailwindBase{.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: }}@layer reset{*,:after,:before{box-sizing:border-box}*{text-wrap:pretty}h1,h2,h3,h4{text-wrap:balance}html:focus-within{scroll-behavior:smooth}body{line-height:1.5;min-height:100vh;min-height:100dvh;text-rendering:optimizeSpeed}blockquote,body,dd,dl,figure,h1,h2,h3,h4,p{margin:0}ol[role=list],ul[role=list]{list-style:none}[role=list]{padding:0}a{-webkit-text-decoration-skip:ink;color:currentColor;text-decoration-skip-ink:auto}canvas,img,picture,svg{background-repeat:no-repeat;background-size:cover;block-size:auto;font-style:italic;max-inline-size:100%;shape-margin:.75rem;vertical-align:middle}button{all:unset}button,input,select,textarea{color:inherit;font:inherit}textarea{resize:vertical;resize:block}textarea:not([rows]){min-height:10em}[role=button],[role=option],button,label,select,summary{cursor:pointer}:target{scroll-margin-block-start:2ex}:focus{scroll-margin-block-end:8vh}dialog{max-height:unset;max-width:unset}[popover],dialog{background:none;border:none;inset:unset}[popover]{color:inherit}[popover]:not(:popover-open),dialog:not([open],[popover]){display:none!important}html:has(dialog[open]:modal){overflow:hidden}@media (prefers-reduced-motion:reduce){:focus-within{scroll-behavior:auto}*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}}@layer fonts{@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")}}@layer tailwindComponents{:root{--color-gray-100:#f8f8f8;--color-gray-200:#e4e4e4;--color-gray-300:#aeaeae;--color-gray-400:grey;--color-gray-500:#636363;--color-gray-600:#484848;--color-gray-700:#3a3a3a;--color-gray-800:#2e2e2e;--color-gray-900:#161616;--color-orange-100:#ffefdd;--color-orange-200:#ffe3b9;--color-orange-300:#ffc276;--color-orange-400:#e79c3d;--color-orange-500:#c17000;--color-orange-600:#994c00;--color-orange-700:#803400;--color-orange-800:#672900;--color-orange-900:#2d0900;--color-teal-100:#ebf4f4;--color-teal-200:#dbf0f1;--color-teal-300:#b5d9db;--color-teal-400:#8eb7b9;--color-teal-500:#638f92;--color-teal-600:#406c6f;--color-teal-700:#295558;--color-teal-800:#204446;--color-teal-900:#051a1b;--color-orange:#e79419;--color-orange-subdued:#db9a4a;--color-teal:#346063;--color-teal-subdued:#3d5e61;--color-teal-bright:#77b6a6;--color-teal-bright-subdued:#82b3a6;--border-radius-small:0.1875rem;--border-radius-medium:0.3rem;--space-3xs:clamp(0.125rem,0.11rem + 0.10vw,0.1875rem);--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}}@layer variables{:root{--gutter:var(--space-m-l);--border-radius:0.3rem;--transition-duration:250ms;--transition-timing:ease;--wrapper-width:85rem;--tracking:-0.04ch;--tracking-s:-0.075ch;--tracking-wide:0.04ch;--stroke:1px solid var(--color-bg-accent);--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-gray-900) 0 75%,var(--color-primary) 0 80%,var(--color-quaternary) 0 90%,var(--color-tertiary) 0 100%);--color-light:var(--color-gray-100);--color-dark:var(--color-gray-900);--color-mid:var(--color-gray-400)}:root,:root[data-theme=light]{--color-text:var(--color-gray-800);--color-bg:var(--color-gray-100);--color-primary:var(--color-orange);--color-secondary:var(--color-orange-subdued);--color-tertiary:var(--color-teal-bright);--color-quaternary:var(--color-teal-subdued);--color-quinary:var(--color-teal);--color-text-accent:var(--color-gray-700);--color-bg-accent:var(--color-gray-200);--color-bg-accent-2:var(--color-gray-300)}@media (prefers-color-scheme:dark){:root{--color-text:var(--color-gray-100);--color-bg:var(--color-gray-800);--color-primary:var(--color-orange-subdued);--color-secondary:var(--color-orange-subdued);--color-tertiary:var(--color-teal-bright);--color-quaternary:var(--color-teal-subdued);--color-quinary:var(--color-teal);--color-text-accent:var(--color-gray-300);--color-bg-accent:var(--color-gray-700);--color-bg-accent-2:var(--color-gray-600)}}:root[dark-theme=dark]{--color-text:var(--color-gray-100);--color-bg:var(--color-gray-800);--color-secondary:var(--color-orange-subdued);--color-tertiary:var(--color-teal-bright);--color-quaternary:var(--color-teal-subdued);--color-quinary:var(--color-teal);--color-text-accent:var(--color-gray-300);--color-bg-accent:var(--color-gray-700);--color-bg-accent-2:var(--color-gray-600)}}@layer global{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)}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:.61h;flex:none;inline-size:auto}b,strong{font-weight:var(--font-extra-bold)}hr{background-color:var(--color-bg-accent-2);border:none;height:1px;margin-block:var(--flow-space,var(--space-m-l));margin-inline-start:0;width:10%}figcaption:after{border-block:var(--stroke);content:"";display:block;inline-size:50%;margin-block:var(--space-xs);margin-inline:auto;opacity:.8}a{text-decoration-thickness:.15ex;text-underline-offset:.2ch}a:not([class]):hover{text-decoration:none}figcaption{border-bottom:1px solid var(--color-bg-accent);font-size:var(--size-step-min-1);margin-block-start:var(--space-s);padding-block-end:var(--space-xs);text-align:center}:focus{outline:none}:focus-visible{outline:3px solid var(--focus-color,currentColor);outline-offset:var(--focus-offset,.3ch)}@supports (-moz-appearance:none;){:root{--focus-offset:0.08em}}::-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}}}@layer compositions{.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)}.flow>*+*{margin-block-start:var(--flow-space,1em)}.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))}.grid[data-rows=masonry]{align-items:start;grid-template-rows:masonry}.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-rows=thirds]{--grid-placement:auto-fit;--grid-min-item-size:clamp(16rem,33%,20rem)}.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-quinary) 0 6.5rem,var(--color-tertiary) 6.5rem 7rem,var(--color-quinary) 7rem);grid-column:1}&:after,&:before{content:"";grid-row:1}&:after{background-color:var(--color-quinary);grid-column:3}}}.repel{align-items:var(--repel-vertical-alignment,center);display:flex;flex-wrap:wrap;gap:var(--gutter,var(--space-s-l));justify-content:space-between}.repel[data-nowrap]{flex-wrap:nowrap}.sidebar{display:flex;flex-wrap:wrap;gap:var(--gutter,var(--space-s-l))}.sidebar:not([data-direction])>:first-child{flex-basis:var(--sidebar-target-width,20rem);flex-grow:1}.sidebar:not([data-direction])>:last-child{flex-basis:0;flex-grow:999;min-inline-size:var(--sidebar-content-min-width,50%)}.sidebar[data-direction=rtl]>:last-child{flex-basis:var(--sidebar-target-width,20rem);flex-grow:1}.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}}@layer blocks{.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{--button-bg:var(--color-text);--button-color:color-mix(in oklab,var(--button-bg) 10%,var(--color-bg));--button-hover-bg:color-mix(in oklab,var(--button-bg) 90%,var(--color-bg));--button-hover-color:color-mix(in oklab,var(--button-bg) 5%,var(--color-bg));--button-border-width:var(--border-thickness);--button-border-style:solid;--button-border-color:color-mix(in oklab,var(--button-bg) 80%,var(--color-text));--button-radius:var(--border-radius-small);--button-gap:var(--space-2xs);--button-padding:var(--space-xs) var(--space-m);--button-font-family:var(--font-body);--button-font-weight:var(--font-bold);--button-font-size:var(--size-step-0);--button-text-transform:none;--button-tracking:normal;align-items:center;background:var(--button-bg);border-color:var(--button-border-color);border-radius:var(--button-radius-small);border-style:var(--button-border-style);border-width:var(--button-border-width);color:var(--button-color);display:inline-flex;font-family:var(--button-font-family);font-size:var(--button-font-size);font-weight:var(--button-font-weight);gap:var(--button-gap);letter-spacing:var(--button-tracking);line-height:var(--leading-flat);padding:var(--button-padding);text-decoration:none;text-transform:var(--button-text-transform);text-box-trim:trim-both;text-box-edge:cap alphabetic}.button svg{block-size:var(--button-icon-size,1.2cap)}.button:hover,.button[aria-current=page],.button[aria-pressed=true],.button[data-state=active]{background:var(--button-hover-bg);color:var(--button-color)}.button:focus{outline-color:var(--button-outline-color,var(--button-border-color))}.button:active{transform:scale(99%)}.button[data-button-variant=primary]{--button-bg:var(--color-primary);--button-color:var(--color-light);--button-color:color-mix(in oklab,var(--color-primary) 5%,var(--color-light))}.button[data-button-variant=secondary]{--button-bg:var(--color-secondary);--button-color:var(--color-light);--button-color:color-mix(in oklab,var(--color-secondary) 5%,var(--color-light))}.button[data-button-variant=tertiary]{--button-bg:var(--color-tertiary);--button-color:var(--color-dark);--button-color:color-mix(in oklab,var(--color-tertiary) 10%,var(--color-dark))}.button[data-button-variant=quaternary]{--button-bg:var(--color-quaternary);--button-color:var(--color-light);--button-color:color-mix(in oklab,var(--color-quaternary) 10%,var(--color-light))}.button[data-button-variant=quinary]{--button-bg:var(--color-quinary);--button-color:var(--color-light);--button-color:color-mix(in oklab,var(--color-quinary) 10%,var(--color-light))}.button[data-ghost-button]{--button-bg:var(--color-bg);--button-border-color:var(--color-text);--button-color:var(--color-text);--button-hover-color:var(--color-bg)}.button[data-ghost-button]:hover{--_ghost-hover-bg:var(--color-bg);--_ghost-hover-bg:color-mix(in oklab,var(--button-bg) 95%,var(--color-dark));background:var(--_ghost-hover-bg);color:var(--button-color)}.button[data-small-button]{--button-border-width:2px;--button-radius:var(--border-radius-small);--button-font-size:var(--size-step-min-2);--button-padding:var(--space-2xs) var(--space-s) var(--space-3xs) var(--space-s);--button-text-transform:uppercase;--button-tracking:var(--tracking-wide)}.button[data-button-radius=hard]{--button-radius:0}: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-medium);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-s) var(--space-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-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);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:var(--nav-list-opacity);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%);--nav-list-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);--nav-list-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-medium);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);--nav-list-opacity:1}.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);--nav-list-opacity:1;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 :is(pre,pre+*,figure,picture){--flow-space:var(--space-m-l)}.prose :is(figure+*,picture+*){--flow-space:var(--space-xl)}.prose :is(img,video){border:var(--stroke)}.prose :is(h2,h3,h4){--flow-space:1.5em;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:anywhere}@media (min-width:1024px){.prose :is(h1,h2,h3){-webkit-hyphens:unset;hyphens:unset;overflow-wrap:unset}}.prose :is(h1,h2,h3,h4):not(figure){--flow-space:var(--space-l)}.prose :is(p,li,dl,blockquote){max-inline-size:60ch;text-wrap:pretty}.prose .heading-anchor:where(:hover,:focus){text-decoration:none}.heading-anchor{text-decoration:none}.prose mark{background-color:var(--color-tertiary);color:var(--color-dark)}.prose :is(ul,ol):not([class]) li+li,.prose :is(ul,ol):not([class]) li>:is(ol,ul){padding-block-start:var(--space-s-m)}.prose :is(ul:not([class]),ol:not(.grid)){padding-inline-start:1.2ch}.prose :is(ul:not([class]):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-medium)}@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-quinary) 0 6.5rem,var(--color-tertiary) 6.5rem 7rem,var(--color-quinary) 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);color:var(--color-gray-100);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-quinary) 0 65%,var(--color-tertiary) 65% 70%,var(--color-quinary) 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-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-quinary)}}.site-foot{background-image:linear-gradient(to top,var(--color-quinary) 0 95%,var(--color-tertiary) 95% 100%);color:var(--color-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) 0 95%,var(--color-tertiary) 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 a: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-primary)}.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-medium);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}.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[aria-pressed=true]{--_color-contrast:var(--color-primary);--button-bg:var(--_color-contrast);--button-color:var(--color-dark);--button-border-color:var(--_color-contrast);outline-color:var(--_color-contrast)}is-land:not(:defined) .theme-switch{display:none}}@layer tailwindUtilities{.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-xl{margin-top:clamp(2.375rem,2.03rem + 1.73vw,3.5rem)}.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-2{font-size:clamp(1.8rem,1.63rem + .84vw,2.34375rem)}.text-step-min-1{font-size:clamp(1.041875rem,.99rem + .24vw,1.2rem)}.capitalize{text-transform:capitalize}.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)}.region-space-m{--region-space:clamp(0.875rem,0.74rem + 0.67vw,1.3125rem)}.gutter-2xs{--gutter:clamp(0.1875rem,0.15rem + 0.19vw,0.3125rem)}.gutter-xs-s{--gutter:clamp(0.3125rem,0.14rem + 0.87vw,0.875rem)}.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)}}.region{--region-space-fallback:var(--region-space,var(--space-l-xl));padding-block-end:var(--region-space-bottom,var(--region-space-fallback));padding-block-start:var(--region-space-top,var(--region-space-fallback))}.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}@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}}</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/xaQAyN2KyX.js" type="module"></script><meta name="description" content="My personal site, blog and repository of thought"><meta name="theme-color" content="#2e2e2e" media="(prefers-color-scheme: dark)"><meta name="theme-color" content="#F2F2D9" media="(prefers-color-scheme: light)"><meta name="robots" content="index,follow"><meta name="googlebot" content="index,follow"><meta name="generator" content="Eleventy v3.1.1"><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"><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"><picture><source type="image/webp" srcset="/img/szJMw8M-PK-1600.webp 1600w" sizes="auto"><img loading="lazy" decoding="async" src="/img/szJMw8M-PK-1600.jpeg" id="hero-image" 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." width="1600" height="900"></picture></div></section><div aria-hidden="true" class="site-main-spacer"></div><main id="main" tabindex="-1" class="flow | site-main"><div 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:website@bdock.mozmail.com">website@bdock.mozmail.com</a></p></div></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">© 2026 <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" data-ghost-button data-small-button class="button"><span>light</span></button> <button id="dark-theme-toggle" data-theme="dark" data-ghost-button data-small-button class="button"><span>dark</span></button></div></is-land><aside class="creator | cluster gutter-2xs text-step-min-1 mt-xl"><a href="https://www.11ty.dev/"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="none" viewBox="0 0 29 29" aria-label="Eleventy"><path fill="currentColor" d="M9.156 22.425q-.324 0-.324-.878V7.08q0-.419-.168-.394l-1.035.263q-.284.026-.284-.576V5.116q0-.523.31-.588l3.415-.89a.5.5 0 0 1 .116-.012q.284 0 .283.615V21.55q0 .878-.336.877zm8.846.027q-.518 0-.899-.073a2.4 2.4 0 0 1-.795-.328 2 2 0 0 1-.68-.7q-.265-.446-.432-1.245t-.168-1.899v-6.714q0-.263-.142-.263h-.802q-.324 0-.324-.627v-.708q0-.64.324-.641h.803q.14 0 .141-.353l.233-5.093q.039-.693.336-.693h1.295q.324 0 .324.693v5.093q-.001.354.156.353h1.65q.324 0 .324.641v.708q0 .627-.324.627h-1.655q-.09 0-.122.046-.032.045-.031.217v6.756q0 .759.096 1.264.097.504.283.739.188.235.375.313.188.08.459.078h.917q.349.001.348.484v.785q0 .537-.374.537zm4.964 1.57q.296 0 .516-.49.22-.493.221-1.396 0-.211-.26-1.454l-2.536-10.67a2 2 0 0 1-.026-.29q0-.47.195-.47h1.566q.18 0 .297.123.12.124.18.503l1.681 9.008q.051.157.065.158.052-.002.053-.144l1.319-8.983q.052-.392.16-.53a.34.34 0 0 1 .28-.138h1.085q.22 0 .22.51 0 .118-.026.302l-2.303 12.138q-.271 1.506-.595 2.305-.324.798-.726 1.086a1.85 1.85 0 0 1-1.061.302h-.13q-1.048 0-1.422-.564-.104-.118-.103-.603 0-.97.31-.97.026 0 .466.131.445.138.574.136M2.648 22.45q-.324.001-.324-.877V7.105q0-.42-.169-.394l-1.035.262Q.836 7 .837 6.397V5.14q0-.521.31-.588l3.417-.892a.5.5 0 0 1 .116-.012q.284 0 .283.615v17.309q0 .878-.336.877z"></path></svg></a></aside><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>