*,:before,:after{box-sizing:border-box}blockquote,body,h1,h2,h3,h4,p{margin:0}body{text-rendering:optimizelegibility;min-height:100dvh;line-height:1.5}img{max-width:100%}input,textarea,select{font:inherit}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.gradient-icon--brands-govspace,.gradient-icon--brands-lgre,.gradient-icon--brands-mordek,.gradient-icon--portfolio-ausgov,.gradient-icon--portfolio-dtostrap-mono,.gradient-icon--portfolio-govcms-new-white,.gradient-icon--portfolio-newdex{--gradient-icon-contained-height-ratio:.681564;--gradient-icon-contained-offset-block-ratio:.159218}.gradient-icon--brands-cst,.gradient-icon--portfolio-data,.gradient-icon--portfolio-mh,.gradient-icon--portfolio-mha-mono,.gradient-icon--portfolio-whichcar-compact,.gradient-icon--portfolio-yomm{--gradient-icon-contained-height-ratio:.681818;--gradient-icon-contained-offset-block-ratio:.159091}.gradient-icon--portfolio-ausgov{--gradient-icon-header-crop-ratio:5.47036}.gradient-icon--brands-cst{--gradient-icon-header-crop-ratio:2.74359}.gradient-icon--portfolio-data{--gradient-icon-header-crop-ratio:2.1;--gradient-icon-header-mask-size:101% 144.6%}.gradient-icon--portfolio-dtostrap-mono{--gradient-icon-header-crop-ratio:2.88963;--gradient-icon-header-mask-size:109.396% 215.453%}.gradient-icon--brands-lgre{--gradient-icon-header-crop-ratio:1.40621;--gradient-icon-header-mask-size:126.502% 121.242%}.gradient-icon--portfolio-mh{--gradient-icon-header-crop-ratio:1.52083}.gradient-icon--portfolio-mha-mono{--gradient-icon-header-crop-ratio:3.45098;--gradient-icon-header-mask-size:100% 235.294%}.gradient-icon--brands-mordek{--gradient-icon-header-crop-ratio:5.22628;--gradient-icon-header-mask-size:100% 356.204%}.gradient-icon--portfolio-newdex{--gradient-icon-header-crop-ratio:3.13739}.gradient-icon--portfolio-whichcar-compact{--gradient-icon-header-crop-ratio:2.70154;--gradient-icon-header-mask-position:100% 30.545%;--gradient-icon-header-mask-size:100.228% 184.615%}.gradient-icon--portfolio-yomm{--gradient-icon-header-crop-ratio:3.54839}.gradient-icon--referral-tesla{--gradient-icon-header-crop-ratio:7.51351}.gradient-icon--size-40x40{--gradient-icon-height:40px;--gradient-icon-ratio:40px / 40px;--gradient-icon-width:40px}.gradient-icon--size-120x120{--gradient-icon-height:120px;--gradient-icon-ratio:120px / 120px;--gradient-icon-width:120px}.gradient-icon--size-150x150{--gradient-icon-height:150px;--gradient-icon-ratio:150px / 150px;--gradient-icon-width:150px}.gradient-icon--size-220x150{--gradient-icon-height:150px;--gradient-icon-ratio:220px / 150px;--gradient-icon-width:220px}.gradient-icon--size-300x300{--gradient-icon-height:300px;--gradient-icon-ratio:300px / 300px;--gradient-icon-width:300px}.gradient-icon--brands-cst.gradient-icon--painted:before{mask-image:url(/_astro/cst.nPJBxFS5.svg)}.gradient-icon--brands-govdex.gradient-icon--painted:before{mask-image:url(/_astro/govdex.BsuNkSDs.svg)}.gradient-icon--brands-govspace.gradient-icon--painted:before{mask-image:url(/_astro/govspace.CWouKfJ0.svg)}.gradient-icon--brands-lgre.gradient-icon--painted:before{mask-image:url(/_astro/lgre.D8Wx7Ks2.svg)}.gradient-icon--brands-mordek.gradient-icon--painted:before{mask-image:url(/_astro/mordek.OLc0e1ff.svg)}.gradient-icon--icons-404.gradient-icon--painted:before{mask-image:url(/_astro/404.DkbPTIoh.svg)}.gradient-icon--icons-awards.gradient-icon--painted:before{mask-image:url(/_astro/awards.Dvd3irgg.svg)}.gradient-icon--icons-edu.gradient-icon--painted:before{mask-image:url(/_astro/edu.DaIQw79r.svg)}.gradient-icon--icons-home.gradient-icon--painted:before{mask-image:url(/_astro/home.CcL0umRW.svg)}.gradient-icon--icons-message.gradient-icon--painted:before{mask-image:url(/_astro/message.DCukGBSp.svg)}.gradient-icon--icons-skills.gradient-icon--painted:before{mask-image:url(/_astro/skills.Io9-tTwi.svg)}.gradient-icon--portfolio-ausgov.gradient-icon--painted:before{mask-image:url(/_astro/ausgov.CIjRVFAa.svg)}.gradient-icon--portfolio-data.gradient-icon--painted:before{mask-image:url(/_astro/data.BJYDTqRh.svg)}.gradient-icon--portfolio-dtostrap-mono.gradient-icon--painted:before{mask-image:url(/_astro/dtostrap-mono.BOgGWr4T.svg)}.gradient-icon--portfolio-govcms-new-white.gradient-icon--painted:before{mask-image:url(/_astro/govcms-new-white.BCiiyLed.svg)}.gradient-icon--portfolio-mh.gradient-icon--painted:before{mask-image:url(/_astro/mh.FIyfElu9.svg)}.gradient-icon--portfolio-mha-mono.gradient-icon--painted:before{mask-image:url(/_astro/mha-mono.Dfo1QsR0.svg)}.gradient-icon--portfolio-newdex.gradient-icon--painted:before{mask-image:url(/_astro/newdex.D_b7gNJB.svg)}.gradient-icon--portfolio-whichcar-compact.gradient-icon--painted:before{mask-image:url(/_astro/whichcar-compact.DNAhoPCK.svg)}.gradient-icon--portfolio-yomm.gradient-icon--painted:before{mask-image:url(/_astro/yomm.B6zwjAqS.svg)}.gradient-icon--referral-secretlab.gradient-icon--painted:before{mask-image:url(/_astro/secretlab.CAmtWeFJ.svg)}.gradient-icon--referral-tesla.gradient-icon--painted:before{mask-image:url(/_astro/tesla.BQ44_WXt.svg)}.gradient-icon--th.gradient-icon--painted:before{mask-image:url(/_astro/th.B24-I0RD.svg)}html{overflow-x:clip}body{--edge-fade-bleed:8px;--edge-fade-bottom-scroll-end:50px;--edge-fade-layer:5;--edge-fade-overlap:2px;--edge-fade-scroll-range:90px;--edge-fade-size:132px;--site-background-start:#0b0e16;--site-background-end:#121b31;--site-background-image:linear-gradient(to top left, var(--site-background-start), var(--site-background-end));--site-background-dither-size:160px 160px;--site-background-attachment:fixed, fixed;--site-background-blend-mode:soft-light, normal;--site-background-color:#1a1f2c;--site-background-repeat:repeat, no-repeat;--site-background-size:var(--site-background-dither-size), 100% 100%;color:#fffffff2;margin:0;font-family:SF Pro Display,SF Pro Icons,Helvetica Neue,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:2rem;overflow-x:clip}body,body:before,body:after{background-attachment:var(--site-background-attachment);background-blend-mode:var(--site-background-blend-mode);background-color:var(--site-background-color);background-image:url(/_astro/site-background-dither.ratJ3VI8.svg), var(--site-background-image);background-repeat:var(--site-background-repeat);background-size:var(--site-background-size)}body.is-home main,body.is-portfolio main{contain-intrinsic-height:none;content-visibility:visible}body:before,body:after{content:"";height:calc(var(--edge-fade-size) + var(--edge-fade-bleed) + var(--edge-fade-overlap));mask-image:linear-gradient(var(--edge-fade-direction), black 0, black var(--edge-fade-overlap), #000000f5 calc(var(--edge-fade-size) * .06), #000000e0 calc(var(--edge-fade-size) * .14), #000000bd calc(var(--edge-fade-size) * .26), #0000008f calc(var(--edge-fade-size) * .41), #0000005c calc(var(--edge-fade-size) * .59), #0003 calc(var(--edge-fade-size) * .76), #00000014 calc(var(--edge-fade-size) * .89), #00000004 var(--edge-fade-size), transparent 100%);pointer-events:none;z-index:var(--edge-fade-layer);position:fixed;left:0;right:0}body:before{--edge-fade-direction:to bottom;top:calc(var(--edge-fade-overlap) * -1)}body:after{--edge-fade-direction:to top;bottom:calc(var(--edge-fade-overlap) * -1)}@supports (height:100dvh){body:after{bottom:auto;top:calc(100dvh - var(--edge-fade-size) - var(--edge-fade-bleed))}}@supports (background-image:linear-gradient(in oklab to top left, red, blue)){body{--site-background-start:color(display-p3 .041 .054 .093);--site-background-end:color(display-p3 .062 .104 .216);--site-background-image:linear-gradient(in oklab to top left, var(--site-background-start), var(--site-background-end))}}body:before,body:after{mask-size:100% 100%;mask-repeat:no-repeat;mask-mode:alpha}.skip-wrapper{z-index:20}@supports (animation-timeline:scroll(root block)){body:before{animation:linear both edge-fade-in;animation-range:0 var(--edge-fade-scroll-range);animation-timeline:scroll(root)}body:after{animation:linear both edge-fade-out;animation-range:calc(100% - var(--edge-fade-scroll-range)) calc(100% - var(--edge-fade-bottom-scroll-end));animation-timeline:scroll(root)}header .logo .gradient-icon--painted:before{background-image:linear-gradient(#0000 20%,#eff1ff38 50%,#0000 80%),radial-gradient(circle at 50% 35%,#eff1ff 0%,#b3b8c3 24%,#56647a 100%);background-size:120% 120%,contain;background-attachment:fixed,scroll;animation:linear both header-logo-metal-shine scroll(root)}}@keyframes header-logo-metal-shine{0%{background-position:50% -50%,50%}to{background-position:50% 200%,50%}}@keyframes edge-fade-in{0%{opacity:0}to{opacity:1}}@keyframes edge-fade-out{0%{opacity:1}to{opacity:0}}::selection{background-color:var(--secondary-colour);color:#fffffff2}:root{--gradient-icon-filter:brightness(1);--gradient-icon-filter-brand:url(#metal);--gradient-icon-filter-header:url(#metal);--gradient-icon-filter-home-link:var(--gradient-icon-filter-brand) brightness(1.08) saturate(1.04);--gradient-icon-filter-metal:url(#metal-subtle);--gradient-icon-filter-nav-hover:brightness(0) saturate(100%) invert(8%) sepia(48%) saturate(1420%) hue-rotate(171deg) brightness(92%) contrast(101%);--glow-primary-02:#00c8ff05;--glow-primary-035:#00c8ff09;--glow-primary-045:#00c8ff0b;--glow-primary-05:#00c8ff0d;--glow-primary-08:#00c8ff14;--glow-primary-10:#00c8ff1a;--glow-primary-14:#00c8ff24;--glow-primary-20:#00c8ff33;--glow-primary-30:#00c8ff4d;--glow-secondary-018:#e056fd05;--glow-secondary-035:#e056fd09;--glow-secondary-04:#e056fd0a;--glow-secondary-07:#e056fd12;--glow-secondary-08:#e056fd14;--glow-secondary-10:#e056fd1a;--glow-secondary-14:#e056fd24;--glow-secondary-20:#e056fd33;--glow-secondary-30:#e056fd4d;--glow-secondary-76:#e056fdc2;--glow-secondary-90:#e056fde6;--primary-colour:lch(74% 58.57 229.04);--primary-colour-bright:lch(73% 58.75 230.32);--secondary-colour:lch(53% 119.49 319.53);--interactive-glow-shadow:0 0 0 1px #1a1f2c6b, 0 0 30px var(--glow-secondary-30), 0 14px 34px 8px #1a1f2ca8;--tooltip-inner-shadow:inset 0 1px 0 #ffffff47, inset 0 -.55rem 1rem #1a1f2c3d;accent-color:var(--primary-colour)}a{color:var(--primary-colour);overflow-wrap:anywhere;word-break:normal}.sr-only{color:#000;background-color:#fff;top:-99999px;left:-99999px;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.sr-only.focusable:active,.sr-only.focusable:focus{clip-path:none!important;height:auto!important;white-space:inherit!important;width:auto!important;margin:0!important;position:static!important;overflow:visible!important}.skip-wrapper{text-align:center;width:100%;position:absolute}#skip-link{background-color:var(--secondary-colour);color:#1a1f2c;border-end-end-radius:16px;border-end-start-radius:16px;outline:none;font-size:1.6rem;border:1px solid var(--secondary-colour)!important;margin-top:-1px!important;padding:.8rem 1.8rem!important}#skip-link:focus{display:inline-block}img{user-select:none;height:auto}.gradient-icon{aspect-ratio:var(--gradient-icon-ratio,1);filter:var(--gradient-icon-filter);object-fit:contain;user-select:none;max-width:100%;height:auto;width:var(--gradient-icon-width,100%);display:block}.gradient-icon--painted{--gradient-icon-paint-inset-block:0px;--gradient-icon-paint-inset-inline:0px;--gradient-icon-paint-area-height:calc(100% - 2 * var(--gradient-icon-paint-inset-block));--gradient-icon-paint-area-width:calc(100% - 2 * var(--gradient-icon-paint-inset-inline));filter:none;height:var(--gradient-icon-height,auto);object-fit:initial;position:relative}.gradient-icon--painted:before{block-size:calc(var(--gradient-icon-paint-area-height) * var(--gradient-icon-contained-height-ratio,1));content:"";inline-size:calc(var(--gradient-icon-paint-area-width) * var(--gradient-icon-contained-width-ratio,1));mask-position:var(--gradient-icon-mask-position,center);mask-repeat:no-repeat;mask-size:var(--gradient-icon-mask-size,contain);background-image:radial-gradient(circle at 50% 35%,#eff1ff 0%,#b3b8c3 24%,#56647a 100%);background-position:50%;background-repeat:no-repeat;background-size:contain;position:absolute;inset-block-start:calc(var(--gradient-icon-paint-inset-block) + var(--gradient-icon-paint-area-height) * var(--gradient-icon-contained-offset-block-ratio,0));inset-inline-start:calc(var(--gradient-icon-paint-inset-inline) + var(--gradient-icon-paint-area-width) * var(--gradient-icon-contained-offset-inline-ratio,0))}.gradient-icon__source{opacity:0;pointer-events:none;width:1px;max-width:none;height:1px;position:absolute;inset:0}.gradient-icon--tone-brand{--gradient-icon-filter:var(--gradient-icon-filter-brand)}.gradient-icon--tone-header{--gradient-icon-filter:var(--gradient-icon-filter-header)}.gradient-icon--tone-metal{--gradient-icon-filter:var(--gradient-icon-filter-metal)}.gradient-icon--tone-nav-hover{--gradient-icon-filter:var(--gradient-icon-filter-nav-hover)}.container{flex-direction:column;align-content:space-between;max-width:1335px;margin:0 auto;padding:4rem;display:flex}h1,h2,.role{color:#0000;opacity:.8;text-shadow:0 0 8px var(--glow-primary-05);text-align:center;text-rendering:optimizelegibility;background-image:radial-gradient(#eff1ffcc 10%,#757575cc 100%);background-position:50%;background-repeat:no-repeat;background-clip:text;width:100%;margin:0;font-family:SF Pro Display,SF Pro Icons,Helvetica Neue,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;line-height:1.2}h1{align-self:flex-start;font-family:SF Pro Display,SF Pro Icons,Helvetica Neue,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:clamp(2rem,18vw,10rem);font-weight:600}.and{font-size:50%;font-weight:300;line-height:.8;display:block}h2{margin-bottom:3rem;font-size:clamp(2rem,14vw,6rem)}h2:not(:first-of-type){margin-top:18rem}h3{color:var(--primary-colour);text-align:center;text-transform:uppercase;margin:18rem 0 2rem}main h2+h3{margin-top:5rem}p,ul,li,small,blockquote{font-family:Iowan Old Style,Apple Garamond,Baskerville,Times New Roman,Droid Serif,Times,Source Serif Pro,serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}p,blockquote{width:100%;max-width:50rem;margin:auto}.emphasis li{margin-bottom:2.5rem}.emphasis strong{color:var(--primary-colour);font-size:150%;font-style:normal;font-weight:600}.emphasis strong [data-title]{color:var(--primary-colour);font-weight:600}.emphasis [data-title]{color:#fffffff2}.emphasis [data-title]:is(:hover,:active,:focus):before{color:#1a1f2c;left:-10%}.emphasis.emphasis-smaller strong{font-size:115%}.emphasis.emphasis-smaller a{color:#fffffff2}html:not([data-useragent*=Firefox],[data-useragent*=iPhone]) .emphasis.gradient-text strong{color:#0000}.glow-button{--glow-button-hover-uplift:1px;--glow-button-near-offset-x:20px;--glow-button-near-offset-y:-10px;--glow-button-near-blur:80px;--glow-button-near-spread:0px;--glow-button-near-secondary:var(--glow-secondary-14);--glow-button-near-primary:var(--glow-primary-14);--glow-button-outer-blur:128px;--glow-button-outer-spread:8px;--glow-button-outer-colour:var(--glow-primary-08);--glow-button-fill-background-color:#141c30;--glow-button-fill-blend-mode:soft-light, normal;--glow-button-fill-layer:var(--glow-button-fill-gradient);--glow-button-fill-position:30% 70%;--glow-button-fill-repeat:repeat, no-repeat;--glow-button-fill-size:var(--site-background-dither-size), 100% 100%;--glow-button-fill-shape:ellipse;--glow-button-foreground-depth-shadow:0 1px 0 #00000057, 0 .5px .5px #00000038, 0 1.5px 2px #00000024;--glow-button-foreground-drop-filter:drop-shadow(0 0 25px #0000004d);--glow-button-foreground-outline-colour:#ffffff1f;--glow-button-foreground-outline-filter:drop-shadow(0 0 .75px var(--glow-button-foreground-outline-colour));--glow-button-foreground-outline-width:.5px;--glow-button-hover-primary-end:72%;--glow-button-hover-primary-mid:#008ec616;--glow-button-hover-primary-position:78% 26%;--glow-button-hover-primary-start:#00b0e221;--glow-button-hover-secondary-end:70%;--glow-button-hover-secondary-mid:#8e30be11;--glow-button-hover-secondary-position:18% 18%;--glow-button-hover-secondary-start:#be3ae220;--glow-button-fill-gradient:radial-gradient(var(--glow-button-fill-shape) at var(--glow-button-fill-position), #151f37 0%, #141c30 36%, #131b30 68%, #131b2e 100%);--glow-button-fill-hover-gradient:radial-gradient(ellipse at var(--glow-button-hover-secondary-position), var(--glow-button-hover-secondary-start) 0%, var(--glow-button-hover-secondary-mid) 36%, transparent var(--glow-button-hover-secondary-end)), radial-gradient(ellipse at var(--glow-button-hover-primary-position), var(--glow-button-hover-primary-start) 0%, var(--glow-button-hover-primary-mid) 40%, transparent var(--glow-button-hover-primary-end)), var(--glow-button-fill-gradient);--glow-button-resting-translate-y:16px;background-clip:border-box;background-color:var(--glow-primary-30);color:inherit;cursor:pointer;pointer-events:auto;transform:translateY(var(--glow-button-resting-translate-y));user-select:text;word-break:initial;border:4px solid #0000;border-radius:16px;padding:3.9rem 1rem 2.5rem;font-size:90%;text-decoration:none;transition:color .2s,opacity .3s,transform .2s ease-in-out;display:block;position:relative}.glow-button:is(:hover,:active,:focus){--glow-button-fill-background-color:#131b30;--glow-button-fill-blend-mode:soft-light, soft-light, soft-light, normal;--glow-button-fill-layer:var(--glow-button-fill-hover-gradient);--glow-button-fill-repeat:repeat, no-repeat, no-repeat, no-repeat;--glow-button-fill-size:var(--site-background-dither-size), 100% 100%, 100% 100%, 100% 100%;transform:translateY(calc(var(--glow-button-resting-translate-y) - var(--glow-button-hover-uplift)))}.glow-button:is(:hover,:active,:focus):before{opacity:1}.glow-button:is(:hover,:active,:focus) .brand-name,.glow-button:is(:hover,:active,:focus) .glow-button__content{filter:var(--glow-button-foreground-drop-filter);text-shadow:var(--glow-button-foreground-depth-shadow);-webkit-text-stroke-color:var(--glow-button-foreground-outline-colour)}.glow-button:is(:hover,:active,:focus) .glow-button__external-icon{filter:var(--glow-button-foreground-outline-filter);box-shadow:inset 0 1px 1px #0000003d}.glow-button:before{background-image:linear-gradient(130deg, var(--primary-colour), var(--primary-colour-bright), var(--secondary-colour), var(--primary-colour), var(--primary-colour-bright));box-shadow:var(--glow-button-near-offset-x) var(--glow-button-near-offset-y) var(--glow-button-near-blur) var(--glow-button-near-spread) var(--glow-button-near-secondary), calc(var(--glow-button-near-offset-x) * -1) calc(var(--glow-button-near-offset-y) * -1) var(--glow-button-near-blur) var(--glow-button-near-spread) var(--glow-button-near-primary), 0 0 var(--glow-button-outer-blur) var(--glow-button-outer-spread) var(--glow-button-outer-colour);opacity:0;z-index:1;border-radius:16px;transition:opacity .6s,transform .7s;inset:-4px}.glow-button:after{background-blend-mode:var(--glow-button-fill-blend-mode);background-color:var(--glow-button-fill-background-color);background-image:url(/_astro/site-background-dither.ratJ3VI8.svg), var(--glow-button-fill-layer);background-repeat:var(--glow-button-fill-repeat);background-size:var(--glow-button-fill-size);z-index:2;border-radius:13px;transition:background-color .2s ease-in-out;inset:0}.glow-button:before,.glow-button:after{content:"";position:absolute}.glow-button .brand-name,.glow-button .glow-button__content{filter:none;paint-order:stroke fill;-webkit-text-stroke:var(--glow-button-foreground-outline-width) transparent;transition:filter .2s ease-in-out,-webkit-text-stroke-color .2s ease-in-out,text-shadow .2s ease-in-out}.glow-button>*{z-index:3;position:relative}.glow-button__external-icon{filter:none;background-color:currentColor;flex:0 0 1em;align-self:stretch;min-height:1.25em;transition:box-shadow .2s ease-in-out,filter .2s ease-in-out;box-shadow:inset 0 1px 1px #0000;mask-image:url(/_astro/external-link.kakANnlR.svg);mask-position:50%;mask-size:1em 1em;mask-repeat:no-repeat}.btn{--btn-block-padding:.5rem;--btn-external-icon-size:1em;--btn-icon-gap:.75rem;--btn-inline-padding:1rem;--glow-button-fill-position:50% 35%;--glow-button-fill-shape:ellipse 160% 220%;--glow-button-hover-primary-position:22% 32%;--glow-button-hover-secondary-position:84% 72%;--glow-button-near-offset-x:14px;--glow-button-near-offset-y:-6.8px;--glow-button-near-blur:48px;--glow-button-near-spread:2px;--glow-button-near-secondary:var(--glow-secondary-10);--glow-button-near-primary:var(--glow-primary-10);--glow-button-outer-blur:72px;--glow-button-outer-spread:4px;--glow-button-outer-colour:var(--glow-primary-045);--glow-button-resting-translate-y:0px;color:var(--primary-colour);overflow-wrap:normal;inline-size:max-content;max-inline-size:100%;padding:var(--btn-block-padding) var(--btn-inline-padding);text-align:center;user-select:none;font-family:sans-serif;font-size:100%;line-height:1.25;display:inline-block}.btn:has(.glow-button__external-icon){padding-inline-end:calc(var(--btn-inline-padding) + var(--btn-external-icon-size) + var(--btn-icon-gap))}.btn .glow-button__content{min-width:0;display:block}.btn .glow-button__external-icon{bottom:var(--btn-block-padding);height:auto;min-height:0;inset-inline-end:var(--btn-inline-padding);top:var(--btn-block-padding);width:var(--btn-external-icon-size);flex:none;align-self:auto;position:absolute}.btn:before{background-image:linear-gradient(170deg, var(--primary-colour) 0%, var(--primary-colour-bright) 22%, var(--glow-secondary-76) 38%, var(--glow-secondary-90) 50%, var(--glow-secondary-76) 62%, var(--primary-colour-bright) 80%, var(--primary-colour) 100%)}.btn:is(:hover,:active,:focus){color:#1ad4ff}.btn:active{transform:translateY(var(--glow-button-resting-translate-y)) scale(.96)}section{padding:16rem 0}html:not([data-useragent*=Firefox],[data-useragent*=iPhone]) .gradient-text,html:not([data-useragent*=Firefox],[data-useragent*=iPhone]) blockquote:before{background-attachment:fixed;background-clip:text;background-image:linear-gradient(170deg, var(--secondary-colour), var(--primary-colour-bright), var(--primary-colour), var(--secondary-colour), var(--primary-colour), var(--primary-colour-bright), var(--primary-colour), var(--secondary-colour));background-position:50%;background-repeat:no-repeat}header{--header-h1-padding-top:2rem}header .container{flex-direction:column;align-items:center;min-height:100svh;padding-top:3rem;display:flex;position:relative}header+section{margin-top:5rem}.is404 header{margin-bottom:16rem}.logo{--activity-grid-base-offset:clamp(2rem, 10vmin, 4.5rem);--activity-grid-height:min(35vh, 58vw);--activity-grid-offset:var(--activity-grid-base-offset);--activity-grid-mask-height:calc(var(--activity-grid-height) * 1.15);--activity-grid-mask-ratio:clamp(1.1, var(--logo-mark-ratio), 4);--activity-grid-mask-width:min(100vw, calc(var(--activity-grid-height) * (1.18 + (var(--activity-grid-mask-ratio) - 1) * .52)));--logo-glow-radius:clamp(40px, 8vw, 68px);--logo-glow-extent:calc(var(--logo-glow-radius) * 1.1);--logo-height:clamp(11.25rem, calc(52svh + 20px), 35.25rem);--logo-mark-ratio:var(--gradient-icon-header-crop-ratio,1);--logo-padding-block:clamp(.75rem, 3svh, 5rem);--logo-padding-inline:1rem;--logo-width-scale:1;--logo-safe-padding-block:max(var(--logo-padding-block), var(--logo-glow-extent));--logo-safe-padding-inline:max(var(--logo-padding-inline), var(--logo-glow-extent));--logo-content-height:calc(var(--logo-height) - 2 * var(--logo-safe-padding-block));--logo-content-width:min(calc(100% - 2 * var(--logo-safe-padding-inline)), calc(var(--logo-content-height) * var(--logo-mark-ratio) * var(--logo-width-scale)));isolation:isolate;perspective:900px;user-select:none;flex:1;justify-content:center;align-items:center;width:100%;display:flex;position:relative}.logo.logo--case-study{--logo-wide-scale-penalty:max(0, calc(var(--logo-mark-ratio) - 2));--logo-width-scale:max(clamp(.46, calc(.85 - var(--logo-mark-ratio) * .045 - var(--logo-wide-scale-penalty) * .08), .81), calc(1 - (var(--logo-mark-ratio) - 1) * .55))}.logo .gradient-icon{--logo-lift-y:0px;--logo-rotate-x:0deg;--logo-rotate-y:0deg;--logo-rotate-z:0deg;--logo-shadow-filter:drop-shadow(0 1px 0 #d6e8f624) drop-shadow(3px 4px 2px #00000038) drop-shadow(0 0 calc(var(--logo-glow-radius) * .5) #00a6e647) drop-shadow(0 0 calc(var(--logo-glow-radius) * 1.1) #0096da2e);aspect-ratio:var(--logo-mark-ratio);backface-visibility:hidden;box-sizing:content-box;filter:var(--gradient-icon-filter) var(--logo-shadow-filter);object-fit:cover;object-position:var(--gradient-icon-header-mask-position,center);height:auto;padding:var(--logo-safe-padding-block) var(--logo-safe-padding-inline);transform:translate3d(0, var(--logo-lift-y), 1px) rotateX(var(--logo-rotate-x)) rotateY(var(--logo-rotate-y)) rotateZ(var(--logo-rotate-z));transform-origin:50% 54%;width:min(var(--logo-content-height) * var(--logo-mark-ratio), var(--logo-content-width));will-change:transform;z-index:3;display:block;position:relative;overflow:visible}.logo .gradient-icon.gradient-icon--painted{--gradient-icon-header-contained-height-ratio:1;--gradient-icon-header-contained-offset-block-ratio:0;--gradient-icon-paint-inset-block:var(--logo-safe-padding-block);--gradient-icon-paint-inset-inline:var(--logo-safe-padding-inline);filter:var(--logo-shadow-filter)}.logo .gradient-icon.gradient-icon--painted:before{block-size:calc(var(--gradient-icon-paint-area-height) * var(--gradient-icon-header-contained-height-ratio,1));inline-size:calc(var(--gradient-icon-paint-area-width) * var(--gradient-icon-header-contained-width-ratio,1));mask-position:var(--gradient-icon-header-mask-position,var(--gradient-icon-mask-position,center));mask-size:var(--gradient-icon-header-mask-size,cover);inset-block-start:calc(var(--gradient-icon-paint-inset-block) + var(--gradient-icon-paint-area-height) * var(--gradient-icon-header-contained-offset-block-ratio,0));inset-inline-start:calc(var(--gradient-icon-paint-inset-inline) + var(--gradient-icon-paint-area-width) * var(--gradient-icon-header-contained-offset-inline-ratio,0))}.logo:before{background-image:url(/_astro/github-activity.CODm295y.svg);background-position:50% calc(50% - var(--activity-grid-offset));background-repeat:no-repeat;background-size:auto var(--activity-grid-height);content:"";mask-image:radial-gradient(ellipse var(--activity-grid-mask-width) var(--activity-grid-mask-height) at 50% calc(50% - var(--activity-grid-offset)), #000 0, #000 52%, transparent 76%);opacity:.12;pointer-events:none;z-index:1;width:100vw;transition:opacity .5s ease-in-out;animation:10s ease-in-out infinite alternate bg-pulse;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%);mask-size:100% 100%;mask-repeat:no-repeat}.role{--header-role-lift:clamp(1rem, 3svh, 2rem);overflow-wrap:anywhere;max-width:100%;transform:translateY(calc(var(--header-role-lift) * -1));align-self:flex-end;font-size:clamp(3rem,13vw,5rem);line-height:1.2}.centered{text-align:center}.count-list,.brand-list{flex-wrap:wrap;justify-content:space-between;gap:10rem 2rem;padding:0;list-style:none;display:flex}.count-list li,.brand-list li{text-align:center;flex:1 1 0}.count-list span,.brand-list span{display:block}.brand-list{justify-content:space-between;width:100%;margin-top:3em}.brand-list .brand-logo{margin-bottom:.5rem}.brand-list.brand-list--larger{gap:10rem}.brand-list.brand-list--larger li{max-width:30rem;margin:auto;line-height:1.3}.brand-list.brand-list--larger .gradient-icon{user-select:none;width:100%;max-width:300px;margin-bottom:0}.brand-list li{flex-direction:column;gap:.5rem;min-width:min(100%,20rem);display:flex}.brand-list span{color:#fffc}.brand-list .gradient-icon{height:var(--gradient-icon-height,auto);margin-inline:auto;width:min(100%, var(--gradient-icon-width,100%) + 2rem);margin-bottom:0;padding-bottom:0}.brand-list .brand-name{color:#fffc}.brand-list .secondary-info{word-spacing:1px;padding:0 1rem;font-family:SF Pro Display,SF Pro Icons,Helvetica Neue,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:clamp(1.5rem,50%,2rem);color:#ffffff8c!important}.brand-list .secondary-info abbr[title]{text-underline-offset:.2rem}.brand-list em{font-family:Iowan Old Style,Apple Garamond,Baskerville,Times New Roman,Droid Serif,Times,Source Serif Pro,serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}#brands .brand-list .brand-logo{--brand-logo-box-height:clamp(5.5rem, 18vw, 7.5rem);--brand-logo-max-width:min(100%, 13.75rem);height:var(--brand-logo-box-height);justify-content:center;align-items:center;display:flex}#brands .brand-list .gradient-icon{height:100%;max-height:100%;max-width:var(--brand-logo-max-width);object-fit:contain;width:100%}blockquote{margin:2.2em auto;padding:0;font-size:120%;font-style:italic;position:relative}blockquote:before,blockquote:after{color:var(--primary-colour);opacity:.2;min-width:7rem;font-size:350%;font-weight:900;display:block;position:absolute}html:not([data-useragent*=Firefox],[data-useragent*=iPhone]) blockquote:before,html:not([data-useragent*=Firefox],[data-useragent*=iPhone]) blockquote:after{color:#0000}blockquote:before{content:"“";top:-4rem;left:-6rem}blockquote.gradient-text:before{color:#0000}blockquote footer{color:#ffffff8c;text-align:left;margin-top:1.5rem;margin-bottom:.4rem;font-family:SF Pro Display,SF Pro Icons,Helvetica Neue,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:clamp(1.25rem,60%,1.8rem);font-style:normal}abbr[title]{text-decoration:underline;text-decoration-color:var(--primary-colour);text-underline-offset:.15em;outline:none;font-weight:400;text-decoration-style:dotted;transition:text-decoration-color .16s ease-out}abbr[title]:is(:hover,:active,:focus){text-decoration-color:var(--secondary-colour)}[data-title]{--tooltip-arrow-half-size:4px;--tooltip-arrow-size:8px;--tooltip-arrow-transform:translateX(-50%) rotate(45deg);--tooltip-bubble-translate:-50% 0;--tooltip-arrow-overlap:2px;--tooltip-edge-gutter:.5rem;--tooltip-gap:var(--tooltip-arrow-size);--tooltip-max-width:min(80vw, 19rem);cursor:help;position:relative}[data-title]:before,[data-title]:after{content:"";opacity:0;pointer-events:none;transition:opacity 80ms ease-out,transform .16s cubic-bezier(.4,0,.6,1)}[data-title]:before{backdrop-filter:blur(5px)saturate(1.25);background-color:var(--primary-colour);box-shadow:var(--interactive-glow-shadow), var(--tooltip-inner-shadow);color:#222;content:attr(data-title);height:fit-content;max-width:var(--tooltip-max-width);overflow-wrap:break-word;text-align:center;transform-origin:top;min-width:0;transform:scale(.2,.16);translate:var(--tooltip-bubble-translate);white-space:normal;word-break:normal;z-index:1;border:0;border-radius:16px;outline:0;width:max-content;padding:.4rem .6rem .3rem;font-family:SF Pro Display,SF Pro Icons,Helvetica Neue,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1.2rem;font-style:normal;font-weight:400;display:inline-block;position:absolute;top:109%;bottom:-2.75rem;left:50%}[data-title]:after{background-color:var(--primary-colour);height:var(--tooltip-arrow-size);transform:var(--tooltip-arrow-transform) scale(.2, .16);transform-origin:top;width:var(--tooltip-arrow-size);z-index:2;position:absolute;bottom:-.3rem;left:50%}[data-title]:is(:hover,:active,:focus):before,[data-title]:is(:hover,:active,:focus):after{opacity:1;transition-duration:40ms,.16s;transition-delay:80ms,.12s;transition-timing-function:ease-out,cubic-bezier(.4,0,.6,1)}[data-title]:is(:hover,:active,:focus):before{animation:.34s cubic-bezier(.2,.95,.3,1.35) .12s both tooltip-bubble-spring;transform:scale(1)}[data-title]:is(:hover,:active,:focus):after{transform:var(--tooltip-arrow-transform) scale(1);animation:.3s cubic-bezier(.2,.95,.3,1.35) .12s both tooltip-arrow-spring;display:inline-block}[data-title]:not(:hover):not(:focus):not(:active):before,[data-title]:not(:hover):not(:focus):not(:active):after{opacity:0;transition-delay:0s,0s;animation:none}[data-title]:not(:hover):not(:focus):not(:active):before{transform:scale(.2,.16)}[data-title]:not(:hover):not(:focus):not(:active):after{transform:var(--tooltip-arrow-transform) scale(.2, .16)}@keyframes tooltip-arrow-spring{0%{transform:var(--tooltip-arrow-transform) scale(.2, .16)}42%{transform:var(--tooltip-arrow-transform) scale(1.18, .86)}64%{transform:var(--tooltip-arrow-transform) scale(.94, 1.08)}82%{transform:var(--tooltip-arrow-transform) scale(1.04, .97)}to{transform:var(--tooltip-arrow-transform) scale(1)}}@keyframes tooltip-bounce{0%{transform:scale(.2,.16)}45%{transform:scale(.9,1.1)}72%{transform:scale(1.04,.97)}to{transform:scale(1)}}@keyframes tooltip-bubble-spring{0%{transform:scale(.2,.16)}38%{transform:scale(1.12,.9)}61%{transform:scale(.97,1.06)}82%{transform:scale(1.035,.98)}to{transform:scale(1)}}@supports (top:anchor(bottom)) and (justify-self:anchor-center){@position-try --tooltip-above{bottom: calc(anchor(top) + var(--tooltip-gap)); top: auto;}@position-try --tooltip-arrow-above{bottom: calc(anchor(top) + var(--tooltip-gap) - var(--tooltip-arrow-half-size) - var(--tooltip-arrow-overlap)); top: auto;}html[data-useragent*=Chrome] main:has([data-title]:is(:active,:focus,:hover)){contain-intrinsic-height:none;content-visibility:visible}[data-title]:is(:hover,:active,:focus):before{justify-self:anchor-center;inline-size:max-content;bottom:auto;left:var(--tooltip-edge-gutter);max-inline-size:min(var(--tooltip-max-width), 100vi - var(--tooltip-edge-gutter) * 2);position-anchor:auto;position-try-fallbacks:--tooltip-above;position-visibility:anchors-visible;right:var(--tooltip-edge-gutter);top:calc(anchor(bottom) + var(--tooltip-gap));--tooltip-bubble-translate:0 0;width:max-content;animation-name:tooltip-bounce;position:fixed}[data-title]:is(:hover,:active,:focus):after{height:var(--tooltip-arrow-size);bottom:auto;left:clamp(var(--tooltip-arrow-size), anchor(50%), 100vi - var(--tooltip-arrow-size));position-anchor:auto;position-try-fallbacks:--tooltip-arrow-above;top:calc(anchor(bottom) + var(--tooltip-gap) - var(--tooltip-arrow-half-size) + var(--tooltip-arrow-overlap));width:var(--tooltip-arrow-size);position:fixed}}.more-cards{user-select:none}.more-cards .glow-button{--more-card-icon-active-scale:1.05;--more-card-icon-hover-scale:1.035;--glow-button-hover-primary-end:76%;--glow-button-hover-primary-mid:#008ec612;--glow-button-hover-primary-position:18% 18%;--glow-button-hover-primary-start:#00b0e21d;--glow-button-hover-secondary-mid:#8e30be0f;--glow-button-hover-secondary-position:82% 74%;--glow-button-hover-secondary-start:#be3ae21b;--glow-button-near-blur:64px;--glow-button-near-spread:4px;--glow-button-outer-blur:96px}.more-cards .glow-button:is(:hover,:active,:focus) .brand-logo img{opacity:1;transform:scale(var(--more-card-icon-hover-scale))}.more-cards .glow-button:active .brand-logo img{transform:scale(var(--more-card-icon-active-scale))}.more-cards li{min-width:min(100%,15rem);container:more-card/inline-size}.more-cards li:nth-of-type(2n) .glow-button{--glow-button-hover-primary-position:78% 26%;--glow-button-hover-secondary-position:18% 74%}.more-cards li:nth-of-type(2n) .glow-button:before{background-image:linear-gradient(230deg, var(--primary-colour), var(--primary-colour-bright), var(--secondary-colour), var(--primary-colour), var(--primary-colour-bright))}@container more-card (width>=36rem){.more-cards li .glow-button:before,.more-cards li:nth-of-type(2n) .glow-button:before{background-image:conic-gradient(from .58turn at 50% 50%, var(--primary-colour) 0turn, var(--primary-colour-bright) .16turn, var(--secondary-colour) .32turn, var(--primary-colour-bright) .5turn, var(--primary-colour) .68turn, var(--secondary-colour) .84turn, var(--primary-colour) 1turn)}}.more-cards .brand-logo{margin-bottom:0}.more-cards .brand-logo img{filter:var(--glow-button-foreground-outline-filter);padding:1rem 2rem;transition:opacity .18s ease-out,transform .18s cubic-bezier(.2,0,0,1);mask-image:radial-gradient(#000 5%,#0000 280%)}.more-cards .brand-logo img:before{justify-content:center;font-size:400%;display:flex}.more-cards .brand-logo img[src*=home]:before{content:"🏠"}.more-cards .brand-logo img[src*=skills]:before{content:"⭐️"}.more-cards .brand-logo img[src*=edu]:before{content:"🎓"}.more-cards .brand-logo img[src*=awards]:before{content:"🏆"}.more-cards .brand-logo img[src*=message]:before{content:"💬"}.more-cards .brand-name{user-select:text;font-weight:600}@supports (background-image:radial-gradient(circle at center in oklab, red, color(display-p3 0 0 1))){.glow-button{--glow-button-fill-gradient:radial-gradient(var(--glow-button-fill-shape) at var(--glow-button-fill-position) in oklab, color(display-p3 .079 .116 .212) 0%, color(display-p3 .074 .105 .188) 38%, color(display-p3 .07 .101 .188) 72%, color(display-p3 .07 .099 .181) 100%);--glow-button-fill-hover-gradient:radial-gradient(ellipse at var(--glow-button-hover-secondary-position) in oklab, var(--glow-button-hover-secondary-start) 0%, var(--glow-button-hover-secondary-mid) 38%, transparent var(--glow-button-hover-secondary-end)), radial-gradient(ellipse at var(--glow-button-hover-primary-position) in oklab, var(--glow-button-hover-primary-start) 0%, var(--glow-button-hover-primary-mid) 40%, transparent var(--glow-button-hover-primary-end)), var(--glow-button-fill-gradient);--glow-button-hover-primary-mid:color(display-p3 0 .48 .82/.085);--glow-button-hover-primary-start:color(display-p3 0 .62 .92/.13);--glow-button-hover-secondary-mid:color(display-p3 .48 .16 .76/.065);--glow-button-hover-secondary-start:color(display-p3 .66 .18 .9/.125)}.more-cards .glow-button{--glow-button-hover-primary-mid:color(display-p3 0 .48 .82/.07);--glow-button-hover-primary-start:color(display-p3 0 .62 .92/.115);--glow-button-hover-secondary-mid:color(display-p3 .48 .16 .76/.058);--glow-button-hover-secondary-start:color(display-p3 .66 .18 .9/.105)}}.gradient-outline-list{pointer-events:none;user-select:none;justify-content:space-between;gap:2rem;margin:3rem 0 11rem}.gradient-outline-list:is(:hover,:focus-within) .glow-button{opacity:.85}.gradient-outline-list:is(:hover,:focus-within) .glow-button:is(:active,:focus,:hover){opacity:1}.gradient-outline-list .glow-button .brand-name{color:var(--primary-colour-bright);flex-direction:column;justify-content:space-around;min-height:5.4rem;display:flex}@property --offset{syntax:"<length>";inherits:false;initial-value:0}.role a:not(.glow-button),li a:not(.glow-button),p a:not(.glow-button){--offset:.15em;color:inherit;text-decoration:underline .13em;text-decoration-color:var(--primary-colour);text-underline-offset:var(--offset);transition:text-underline-offset .35s,text-decoration-color .35s}.role a:not(.glow-button):is(:hover,:active,:focus),li a:not(.glow-button):is(:hover,:active,:focus),p a:not(.glow-button):is(:hover,:active,:focus){--offset:.2em;text-decoration-color:var(--secondary-colour)}.role a:not(.glow-button):active,li a:not(.glow-button):active,p a:not(.glow-button):active{--offset:.05em}.role a:not(.glow-button){--offset:.105em!important}.role a:not(.glow-button):is(:hover,:active,:focus){text-underline-offset:.25em}.home-link,nav{opacity:.0001;z-index:20;transition:opacity .3s ease-out .666s,translate .4s cubic-bezier(.68,-.55,.27,1.55) .666s;display:block;position:fixed;top:17.5px;translate:0 -1.1rem}.home-link{outline:none;left:17.5px}.home-link .gradient-icon{--gradient-icon-filter:var(--gradient-icon-filter-home-link);width:35px;height:35px;margin-top:-4px;margin-bottom:-4px}.home-link,nav .menu-toggle{backdrop-filter:blur(6px)saturate(1.25);cursor:pointer;user-select:none;z-index:21;background-color:#1d3e5a8c;background-image:radial-gradient(circle at 50% 45%,#2143642e,#1d3e5a0f 58%,#17314724);border:1px solid #ffffff1a;border-radius:16px;outline:none;min-height:calc(30px + 1.6rem);padding:.8rem .72rem;line-height:0;transition:transform .2s ease-out,translate .4s cubic-bezier(.68,-.55,.27,1.55) .666s,background-color .2s ease-in,border-color .2s ease-out,box-shadow .2s ease-out,opacity .3s ease-out .666s;display:block;box-shadow:0 12px 28px #0003,0 2px 4px #0003}.home-link:is(:hover,:active,:focus),nav .menu-toggle:is(:hover,:active,:focus){border-color:#00c8ff33;transform:scale(1.07)}.home-link:active,.home-link:focus,nav .menu-toggle:active,nav .menu-toggle:focus{border-color:#e056fd33}.home-link:focus-visible,nav .menu-toggle:focus-visible{border-color:var(--secondary-colour);box-shadow:0 0 0 6px #1a1f2c, 0 0 0 10px var(--secondary-colour), 0 12px 28px 0 #0003, 0 2px 4px 0 #0003}nav{z-index:20;right:17.5px}nav a{text-decoration:none;transition:color .3s}nav a:hover{color:#4f7794}nav .menu-toggle{appearance:none;font:inherit;justify-content:center;align-items:center;margin:0;font-size:0;display:flex;position:relative}nav .menu-toggle[aria-expanded=true] .burger{transform:translate(-19px)rotate(-45deg)translateY(31.5px)}nav .menu-toggle[aria-expanded=true] .burger:before{opacity:0;transition-delay:.12s,0s;transform:scale(0)}nav .menu-toggle[aria-expanded=true] .burger:after{transform:rotate(90deg)translateY(-19px)translate(-39.5px)}nav .menu-toggle[aria-expanded=true]+.menu-list{animation:.16s cubic-bezier(.2,0,0,1) .42s both menu-open-extra-bounce;transform:translate(-12rem)!important}nav .burger{transform-origin:3px 0;z-index:1;width:35px;top:-7.5px}nav .burger,nav .burger:before,nav .burger:after{user-select:none;background-color:#b3b8c3;background-image:linear-gradient(45deg,#d5dbe6 0%,#cbd1dc 30%,#f2f5fb 44% 56%,#cbd1dc 70%,#d5dbe6 100%);background-repeat:no-repeat;background-size:240% 100%;border-radius:8px;height:3px;margin-bottom:9px;transition:transform .4s cubic-bezier(.68,-.55,.27,1.55);display:block;position:relative}nav .burger:before,nav .burger:after{content:""}nav .burger{background-position:62%}nav .burger:before{opacity:1;transform-origin:0 100%;background-position:50%;transition:opacity .2s ease-in-out,transform .4s cubic-bezier(.68,-.55,.27,1.55);top:12px}nav .burger:after{transform-origin:0 0;background-position:38%;margin-bottom:0;top:12px}.menu-list{backdrop-filter:blur(15px)saturate(1.25);z-index:20;background-color:#1c2334d1;min-width:26rem;max-width:100vw;height:100%;max-height:100dvh;margin:0 -10px 0 0;padding:calc(5rem + 35px) 0 3rem;list-style-type:none;transition:none;position:fixed;top:0;left:calc(100vw - 8rem);box-shadow:0 12px 90px #0003,0 2px 4px #0003,0 0 1px 1px #ffffff0a,0 0 2px 2px #ffffff03;transform:translate(26rem)!important}@media (height<=550px){.menu-list{padding-top:calc(2.8rem + 35px)}}body.unload-menu .menu-list{transform:translate(26rem)!important}.menu-list li{filter:drop-shadow(0 0 .05rem #1a1f2c);padding:1px 0;font-family:SF Pro Display,SF Pro Icons,Helvetica Neue,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;overflow:hidden}.menu-list li:has(a.active),.menu-list li:has(a:hover),.menu-list li:has(a:active),.menu-list li:has(a:focus){filter:none}.menu-list li a{text-decoration:none}.menu-list a{color:#fffffff2;align-items:center;padding:1.4rem 3.8rem 1.4rem 3.1rem;font-weight:400;transition:background-color .12s ease-out,color .12s ease-out;display:flex;position:relative}.menu-list a:before{content:"";opacity:0;pointer-events:none;background-image:linear-gradient(21deg,color(display-p3 0 .9 1) 0%,color(display-p3 0 .82 1) 18% 82%,color(display-p3 0 .68 1) 100%);transition:background-color .28s ease-in-out,opacity .28s ease-in-out;position:absolute;inset:0}.menu-list a .nav-label{white-space:nowrap;z-index:1;margin-left:2rem;display:inline-grid;position:relative}.menu-list a .nav-label__base,.menu-list a .nav-label__hover{color:#0000;background-image:linear-gradient(135deg,#fff 0%,#dfe6f3 56%,#b7c2d4 100%);background-clip:text;grid-area:1/1}.menu-list a .nav-label__hover{opacity:0;background-image:linear-gradient(135deg,#0f3852 0%,#0a2940 58%,#061b2f 100%);transition:opacity .1s ease-in}.menu-list a.active{color:var(--primary-colour);background-image:none;font-weight:800}.menu-list a.active:before{opacity:.5;background-color:#0d111ac2;background-image:none}.menu-list a.active .nav-label__base{color:var(--primary-colour);background-image:none}.menu-list a.active .nav-label__hover{color:var(--secondary-colour);background-image:none}.menu-list a.active .nav-icon-stack{--nav-icon-scale:1.4}.menu-list a.active .nav-icon--base{color:var(--primary-colour)}.menu-list a:not(.active):hover,.menu-list a:not(.active):active,.menu-list a:not(.active):focus{backdrop-filter:blur(15px)saturate(1.25);color:#1a1f2c}.menu-list a:not(.active):hover:before,.menu-list a:not(.active):active:before,.menu-list a:not(.active):focus:before,.menu-list a:not(.active):hover .nav-label__hover,.menu-list a:not(.active):active .nav-label__hover,.menu-list a:not(.active):focus .nav-label__hover{opacity:1}.menu-list a:not(.active):hover .nav-icon-stack,.menu-list a:not(.active):active .nav-icon-stack,.menu-list a:not(.active):focus .nav-icon-stack{--nav-icon-scale:1.14}.menu-list a:not(.active):hover .nav-icon--hover,.menu-list a:not(.active):active .nav-icon--hover,.menu-list a:not(.active):focus .nav-icon--hover{opacity:1}.menu-list a:not(.active):active .nav-icon-stack{--nav-icon-scale:1.08}.menu-list a.active:hover,.menu-list a.active:focus{color:var(--secondary-colour)}.menu-list a.active:hover:before,.menu-list a.active:focus:before{background-color:#0d111a94}.menu-list a.active:hover .nav-label__hover,.menu-list a.active:focus .nav-label__hover{color:var(--secondary-colour);opacity:1}.menu-list a.active:hover .nav-icon-stack,.menu-list a.active:focus .nav-icon-stack{--nav-icon-scale:1.4}.menu-list a.active:hover .nav-icon--hover,.menu-list a.active:focus .nav-icon--hover{color:var(--secondary-colour);opacity:1}.menu-list a.active:focus-visible{color:#1a1f2c}.menu-list a.active:focus-visible:before{background-color:var(--secondary-colour);opacity:1;background-image:none}.menu-list a.active:focus-visible .nav-label__base{color:#1a1f2c;background-image:none}.menu-list a.active:focus-visible .nav-label__hover{color:#1a1f2c;opacity:1;background-image:none}.menu-list a.active:focus-visible .nav-icon--base{color:#1a1f2c}.menu-list a.active:focus-visible .nav-icon--hover{color:#1a1f2c;opacity:1}.menu-list a.active:active:before{background-color:#0d111a7a}body.loaded .menu-list{transition:transform .55s cubic-bezier(.68,-.55,.27,1.55)}@keyframes menu-open-extra-bounce{0%{translate:0}50%{translate:.16rem}to{translate:0}}.nav-icon-stack{--nav-icon-optical-scale:1;--nav-icon-scale:1;height:1.7rem;transform:scale(calc(var(--nav-icon-scale) * var(--nav-icon-optical-scale)));z-index:1;flex:0 0 1.7rem;width:1.7rem;transition:transform .12s ease-out;position:relative;overflow:hidden}.nav-icon{width:100%;height:100%}.nav-icon.gradient-icon--painted:before{background-color:currentColor;background-image:none;transition:background-color .12s ease-out}.nav-icon--hover{color:#1a1f2c;opacity:0;pointer-events:none;transition:opacity .1s ease-in;position:absolute;inset:0}.nav-icon-stack.gradient-icon--icons-edu{--nav-icon-optical-scale:1.12}@property --logo-lift-y{syntax:"<length>";inherits:true;initial-value:0}@property --logo-rotate-x{syntax:"<angle>";inherits:true;initial-value:0deg}@property --logo-rotate-y{syntax:"<angle>";inherits:true;initial-value:0deg}@property --logo-rotate-z{syntax:"<angle>";inherits:true;initial-value:0deg}body.loaded,body.loaded header .logo,body.loaded .home-link,body.loaded nav{opacity:1!important}body.loaded .home-link,body.loaded #main-nav{translate:none}.to-fade{--fade-view-translate-y:0}.to-fade.portrait{--fade-view-translate-y:10rem}@media screen and (prefers-reduced-motion:no-preference){body{opacity:.0001;transition:opacity 1s}body.no-js:not(.loaded){animation:.25s ease-out 1.4s both page-ready-timeout}body.no-js:not(.loaded) .home-link,body.no-js:not(.loaded) #main-nav{animation:.25s ease-out 1.4s both header-ready-timeout}.count-list .to-fade{opacity:0}body.loaded header .to-fade{animation:.6s ease-in both fade-in-view}body.loaded header h1.to-fade{animation-duration:.24s;animation-delay:50ms}body.loaded header .role.to-fade{animation-delay:.32s}body.loaded header .logo .gradient-icon{animation:1.4s ease-out both logo-lift,12s cubic-bezier(.45,.3,.55,.7) 1.4s infinite logo-float,24s ease-in-out 1.4s infinite logo-tilt}@supports (animation-timeline:view()){body.loaded main .to-fade{--fade-animation-timeline:view(block);animation:ease-out both fade-in-view;animation-range:entry;animation-timeline:var(--fade-animation-timeline)}body.loaded main .count-list .to-fade{opacity:var(--counts-visible);transition:opacity .42s ease-out;transition-delay:calc((sibling-index() - 1) * .16s);animation:none}body.loaded main .count-list{--count-animation-timeline:view(block);--counts-visible:0;animation:linear both counts-reveal-trigger;animation-range:entry 60% entry 61%;animation-timeline:var(--count-animation-timeline)}body.loaded main #counts:target .count-list{--counts-visible:1;animation:none}body.loaded main .portrait.to-fade{animation-name:fade-in-view-from-below;animation-range:entry cover 42%}}}.unload-overlay{background-attachment:var(--site-background-attachment);background-blend-mode:var(--site-background-blend-mode);background-color:var(--site-background-color);background-image:url(/_astro/site-background-dither.ratJ3VI8.svg), var(--site-background-image);background-repeat:var(--site-background-repeat);background-size:var(--site-background-size);opacity:0;pointer-events:none;z-index:18;transition:opacity .4s ease-out;position:fixed;inset:0}body.loaded:has(a[href^=\/]:active) .unload-overlay{opacity:.2;transition-duration:.14s}body.loaded:has(a[href^=\/]:active) a[href^=\/]:active:not(.home-link){z-index:19;position:relative}.unload-overlay.unload-visible{opacity:1}body.loaded.unload-active main:has(.unload-target){contain-intrinsic-height:none;content-visibility:visible}body.loaded.unload-active #main-nav,body.loaded.unload-active .home-link,body.loaded.unload-active nav .menu-toggle{transition-delay:0s}body.loaded.unload-active:not(.unload-menu) #main-nav,body.loaded.unload-active:not(.unload-menu) .home-link:not(.unload-target),body.loaded.unload-active.unload-menu .home-link{opacity:0!important}body.loaded.unload-active.unload-menu #menu-toggle{transition:opacity .55s ease-out;opacity:0!important}.unload-target{z-index:19;transition:opacity .16s ease-out,transform .16s ease-out;opacity:1!important}.unload-target.card{contain:none}.unload-target:not(.card,.home-link){position:relative}body.loaded .unload-target.unload-target-hidden{transition:opacity .16s ease-out,transform .16s ease-out;opacity:0!important}body.loaded .home-link.unload-target.unload-target-hidden{transition:none;opacity:0!important}@keyframes fade-in-view{0%{opacity:.0001}to{opacity:1}}@keyframes fade-in-view-from-below{0%{opacity:.0001;transform:translateY(var(--fade-view-translate-y))}to{opacity:1;transform:translateY(0)}}@keyframes counts-reveal-trigger{0%{--counts-visible:0}to{--counts-visible:1}}@keyframes page-ready-timeout{to{opacity:1}}@keyframes header-ready-timeout{to{opacity:1;translate:none}}@keyframes bounce{0%{transform:scale(1)translate(-50%)translateY(0)}10%{transform:scale(1.07,.9)translate(-50%)translateY(0)}30%{transform:scale(.9,1.1)translate(-50%)translateY(-5px)}50%{transform:scale(1.05,.95)translate(-50%)translateY(0)}57%{transform:scale(1)translate(-50%)translateY(-3px)}64%{transform:scale(1)translate(-50%)translateY(0)}to{transform:scale(1)translate(-50%)translateY(0)}}@keyframes bg-pulse{0%,to{opacity:.12}50%{opacity:.19}}@keyframes logo-lift{0%{--logo-lift-y:0px}to{--logo-lift-y:-1.15rem}}@keyframes logo-float{0%{--logo-lift-y:-1.15rem}50%{--logo-lift-y:.25rem}to{--logo-lift-y:-1.15rem}}@keyframes logo-tilt{0%{--logo-rotate-x:0deg;--logo-rotate-y:0deg;--logo-rotate-z:0deg}25%{--logo-rotate-x:1.4deg;--logo-rotate-y:-2.2deg;--logo-rotate-z:.14deg}50%{--logo-rotate-x:0deg;--logo-rotate-y:0deg;--logo-rotate-z:0deg}75%{--logo-rotate-x:1.4deg;--logo-rotate-y:2.2deg;--logo-rotate-z:.18deg}to{--logo-rotate-x:0deg;--logo-rotate-y:0deg;--logo-rotate-z:0deg}}footer{text-align:center;margin:2rem 0;font-size:clamp(1.3rem,65%,2rem)}footer .list-inline{padding-bottom:2rem}footer .gradient-outline-list li{min-width:0}footer .gradient-outline-list img{transition:filter .4s,transform .18s cubic-bezier(.2,0,0,1)}footer .gradient-outline-list img:before{background-color:#232a3c;padding:1px;font-size:255%;position:relative;top:1.6rem}footer .gradient-outline-list img[src*=cv]:before{content:"📄"}footer .gradient-outline-list img[src*=x]:before{content:"𝕏"}footer .gradient-outline-list img[src*=github]:before{content:"🐱"}footer .gradient-outline-list img[src*=email]:before{content:"✉️"}footer .gradient-outline-list img[src*=mastodon]:before{content:"🐘"}footer .gradient-outline-list .glow-button{--footer-link-icon-active-scale:1.09;--footer-link-icon-hover-scale:1.09;--glow-button-near-offset-x:10px;--glow-button-near-offset-y:-6px;--glow-button-near-blur:42px;--glow-button-outer-blur:62px;--glow-button-outer-spread:4px;opacity:.85;border-width:4px;line-height:0}footer .gradient-outline-list .glow-button,footer .gradient-outline-list .glow-button:before,footer .gradient-outline-list .glow-button:after{border-radius:50%;padding:1rem}footer .gradient-outline-list .glow-button:before{background-image:linear-gradient(130deg, var(--primary-colour-bright), var(--secondary-colour));inset:-4px}footer .gradient-outline-list .glow-button:is(:hover,:active,:focus){box-shadow:7px -1px 12px var(--glow-secondary-14), -7px 1px 12px var(--glow-primary-14);outline:none}footer .gradient-outline-list .glow-button:is(:hover,:active,:focus):before{transform:rotate(270deg)}footer .gradient-outline-list .glow-button:is(:hover,:active,:focus) img{filter:saturate(1.1);transform:scale(var(--footer-link-icon-hover-scale))}footer .gradient-outline-list .glow-button:is(:hover,:focus){transform:scale(1.07)translateY(16px)}footer .gradient-outline-list .glow-button:active{transform:scale(1.03)translateY(16px)}footer .gradient-outline-list .glow-button:active img{transform:scale(var(--footer-link-icon-active-scale))}.list-inline{margin:.5rem 0;padding-left:0;list-style:none}.list-inline li{margin:1rem 0;padding:0 1rem;display:inline-block}#by{color:#ffffffb3;opacity:.95;font-weight:200}#by strong{color:#fffffff2;font-weight:700}#by strong.cursor-design{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'  width='40' height='48' viewport='0 0 100 100' style='fill:%2300c8ff;font-size:24px;'><text y='50%'>🎨</text></svg>") 16 0,auto}#by strong.cursor-develop{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'  width='40' height='48' viewport='0 0 100 100' style='fill:%2300c8ff;font-size:24px;'><text y='50%'>👨🏻‍💻</text></svg>") 16 0,auto}#by .by-name strong{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'  width='40' height='48' viewport='0 0 100 100' style='fill:%2300c8ff;font-size:24px;'><text y='50%'>👋</text></svg>") 16 0,auto}#by .smile{color:#0000;cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'  width='40' height='48' viewport='0 0 100 100' style='fill:%2300c8ff;font-size:24px;'><text y='50%'>🙃</text></svg>") 16 0,auto;text-rendering:optimizelegibility;user-select:none;background-image:radial-gradient(#eff1ffbf 10%,#757575bf 100%);background-position:50%;background-clip:text;width:min-content;margin:auto;font-size:3rem;line-height:1;display:block}@media (width<=1100px){section{padding:13rem 0}.more-cards li{min-width:min(100%,22.5rem)}}@media (width>=801px) and (height<=800px),(width>=801px) and (width<=1100px){header{--header-h1-padding-top:1rem}header .container{padding-top:2rem;padding-bottom:3rem}header h1{font-size:clamp(2rem,14vw,8rem)}header .logo{--logo-padding-block:clamp(2rem, 5svh, 3.5rem)}.role{--header-role-lift:clamp(.75rem, 2svh, 1.25rem);font-size:clamp(2.5rem,8vw,4rem)}}@media (width<=1050px){blockquote{padding:0 0 0 4.5rem}blockquote:before{font-size:300%;top:-3.5rem;left:-1rem}}@media (width<=925px){header{--header-h1-padding-top:clamp(3rem, 8vw, 4rem)}header h1{font-size:clamp(2rem,15vw,7.5rem)}}@media (width<=900px){.count-list{flex-direction:column;gap:8rem}}@media (width<=880px){.container{padding-inline:2rem}}@media (width<=830px){.cards-wrapper{justify-content:center}}@media (width<=800px){.container{padding:4rem 2rem}.count-list li,.brand-list li{width:100%}.count-list.brand-list--larger li,.brand-list.brand-list--larger li{max-width:100%}.count-list.brand-list--larger img,.brand-list.brand-list--larger img{max-width:400px}.count-list .secondary-info,.brand-list .secondary-info{font-size:clamp(1.5rem,70%,2.5rem)}.by-name{display:block}footer .list-inline .glow-button{text-transform:capitalize}}#brands .brand-list li{container:home-brand/inline-size}@container home-brand (width>=20rem){#brands .brand-list .brand-logo{--brand-logo-box-height:clamp(7.5rem, 34cqw, 9rem);--brand-logo-max-width:clamp(11rem, 62cqw, 16.25rem)}}@media (width>=390px) and (width<=800px){#brands .brand-list{justify-content:space-around;gap:7rem 2rem}#brands .brand-list li{flex:0 calc(50% - 1rem);width:auto;min-width:0}#brands .brand-list .brand-name{font-size:82%;line-height:1.4}}@media (height<=850px){.logo{--logo-height:calc(40svh + 20px);--logo-padding-block:2vh}}@media (width<=600px){body{--edge-fade-bottom-scroll-end:28px;--edge-fade-scroll-range:56px;--edge-fade-size:74px}footer .gradient-outline-list .glow-button,footer .gradient-outline-list .glow-button:before,footer .gradient-outline-list .glow-button:after{padding:.85rem}footer .gradient-outline-list li{padding:0 .3rem}footer .gradient-outline-list img{width:40px}.role{--header-role-lift:clamp(.75rem, 2.5svh, 1.5rem)}.logo{--logo-height:calc(34svh + 20px);--logo-glow-radius:clamp(24px, 7vw, 34px);--logo-padding-block:clamp(1.75rem, 4.5svh, 2.75rem)}}@media (width<=550px){.container{padding:4rem 1rem}header .container{padding:3.25rem 2rem 6rem}header h1{padding-top:clamp(1.75rem,5svh,2.75rem);font-size:clamp(2rem,17vw,4.4rem)}#about p{line-height:1.25}}@media (height>=690px){header h1{padding-top:var(--header-h1-padding-top)}}
