@font-face{src:url(/fonts/SourceSans3VF-Upright.otf.woff2)format("woff2-variations");font-display:swap;font-family:"source sans 3";font-stretch:normal;font-style:normal;font-weight:200 900}@font-face{src:url(/fonts/SourceSans3VF-Italic.otf.woff2)format("woff2-variations");font-display:swap;font-family:"source sans 3";font-stretch:normal;font-style:italic;font-weight:200 900}:root{--type-heading:"Adobe Caslon Pro", "adobe-caslon-pro", Georgia, serif;--type-body:"Source Sans 3", sans-serif;--color-bg:rgb(250, 250, 250);--color-fg:rgb(22, 22, 22);--color-heading:#000;--nav-border-radius:0.125rem;--spacing-xs:0.25lh;--spacing-s:0.5lh;--spacing-m:1lh;--spacing-l:1.5lh;--spacing-xl:1.75lh;--viewport-padding:1rem;--content-max-width:54rem;--grid-col-gap:0.5rem;--grid-row-gap:0;--grid-gap:var(--grid-row-gap) var(--grid-col-gap);--inner-grid:[main-start]
        repeat(12, [col-start] minmax(0, calc(100% / 12)) [col-end])
        [main-end];--page-grid-margin:max(
        calc(var(--viewport-padding) - var(--grid-col-gap)),
        calc(50vw - var(--content-max-width) / 2 - var(--grid-col-gap))
    );--page-grid:[full-start]
        var(--page-grid-margin)
        var(--inner-grid)
        var(--page-grid-margin)
        [full-end];--x:calc(100vw - 2 * var(--page-grid-margin) - 13 * var(--grid-col-gap));--tmp-col-width:calc(var(--x) / 12);--n-cols-width-1:calc(
        1 * var(--tmp-col-width) + 0 * var(--grid-col-gap)
    );--n-cols-width-2:calc(
        2 * var(--tmp-col-width) + 1 * var(--grid-col-gap)
    );--n-cols-width-3:calc(
        3 * var(--tmp-col-width) + 2 * var(--grid-col-gap)
    );--n-cols-width-4:calc(
        4 * var(--tmp-col-width) + 3 * var(--grid-col-gap)
    );--n-cols-width-5:calc(
        5 * var(--tmp-col-width) + 4 * var(--grid-col-gap)
    );--n-cols-width-6:calc(
        6 * var(--tmp-col-width) + 5 * var(--grid-col-gap)
    );--n-cols-width-7:calc(
        7 * var(--tmp-col-width) + 6 * var(--grid-col-gap)
    );--n-cols-width-8:calc(
        8 * var(--tmp-col-width) + 7 * var(--grid-col-gap)
    );--n-cols-width-9:calc(
        9 * var(--tmp-col-width) + 8 * var(--grid-col-gap)
    );--n-cols-width-10:calc(
        10 * var(--tmp-col-width) + 9 * var(--grid-col-gap)
    );--n-cols-width-11:calc(
        11 * var(--tmp-col-width) + 10 * var(--grid-col-gap)
    );--n-cols-width-12:100%}@supports(font-variation-settings:normal){:root{--type-body:"Source Sans 3", sans-serif}body{font-feature-settings:"kern" 1,"liga" 1}}@keyframes fade-in{0%{opacity:0}100%{opacity:1}}@keyframes zoom-in{0%{scale:0}100%{scale:1}}@keyframes zoom-in-var{0%{scale:0}100%{scale:var(--final-scale)}}@keyframes hue-rotate{0%{filter:hue-rotate(0)}100%{filter:hue-rotate(360deg)}}@keyframes hue-wobble{0%{filter:hue-rotate(-30deg)}50%{filter:hue-rotate(30deg)}100%{filter:hue-rotate(-30deg)}}@keyframes emoji-hover-pop{0%{transform:translateX(0)scale(1)}5%{transform:translateX(.5rem)scale(1.75)}50%{transform:translateX(.5rem)scale(2.25)}55%{transform:translateX(0)scale(1)}100%{transform:translateX(0)scale(1)}}@keyframes emoji-pulse{0%{scale:1}100%{scale:1.25}}@keyframes invert{0%{filter:invert(0)}100%{filter:invert(1)}}@keyframes rotate-360{0%{rotate:0}100%{rotate:360deg}}#open-menu{position:absolute;right:1lh;right:var(--spacing-m);top:1.75lh;top:var(--spacing-xl)}body>header{display:block;font-family:adobe caslon pro,adobe-caslon-pro,Georgia,serif;font-family:var(--type-heading);font-size:1.25rem;font-weight:400;margin:0;padding:0;text-transform:lowercase}body>header::before{--direction:to bottom;animation:rotateHue 10s infinite linear;background-image:linear-gradient(to bottom,hsla(calc(2 * 40 + 220),40%,60%,1) 0%,hsla(calc(2 * 40 + 100),40%,60%,1) 100% );background-image:linear-gradient(var(--direction),hsla(calc(2 * 40 + 220),40%,60%,1) 0%,hsla(calc(2 * 40 + 100),40%,60%,1) 100% );content:"";transition:transform 250ms ease-out,opacity 750ms ease-in-out;transition-delay:0,250ms;display:block;z-index:-1;position:fixed;top:0;left:0;height:100%;width:.25rem}body>header .wordmark{font-size:2.5rem;margin-left:.25lh;margin-left:var(--spacing-xs);margin-right:.25lh;margin-right:var(--spacing-xs)}body>header p.wordmark{margin-top:-.25cap}header nav ol{display:block;list-style:none;padding:0;margin:.5lh 0;margin:var(--spacing-s)0;text-align:left}header nav .item{--transition-time:75ms;display:inline-block;padding:.25lh 2rem;padding:var(--spacing-xs)2rem;paint-order:stroke fill;position:relative;-webkit-text-decoration:none;text-decoration:none;transition:all 75ms ease-out;transition:all var(--transition-time)ease-out;-webkit-text-stroke:1rem transparent;width:10rem}header nav .item::before{display:block;content:"";width:100%;position:absolute;left:0;z-index:-1;border-top-right-radius:.125rem;border-top-right-radius:var(--nav-border-radius);border-bottom-right-radius:.125rem;border-bottom-right-radius:var(--nav-border-radius)}header nav .item::after{display:block;content:"";width:100%;position:absolute;left:0;z-index:-1;border-top-right-radius:.125rem;border-top-right-radius:var(--nav-border-radius);border-bottom-right-radius:.125rem;border-bottom-right-radius:var(--nav-border-radius)}header nav .item::before{--delta:60;--direction:to top right;background-image:linear-gradient(to top right,hsla(calc(var(--n) * 40 + 220),80%,60%,1) 0%,hsla(calc(var(--n) * 40 + 220 - 60),80%,60%,1) 100% );background-image:linear-gradient(var(--direction),hsla(calc(var(--n) * 40 + 220),80%,60%,1) 0%,hsla(calc(var(--n) * 40 + 220 - var(--delta)),80%,60%,1) 100% );height:100%;top:0;opacity:0;transition:opacity var(--transition-time)ease-out}header nav .item::after{--direction:to right;background:linear-gradient( to right,rgba(250,250,250,.8),#fafafa );top:0;left:.25rem;height:100%}@supports(color:lab(from red l 1 1% / calc(alpha + 0.1))){header nav .item::after{background:linear-gradient( var(--direction),oklch(from var(--color-bg) l c h/80%),var(--color-bg) )}}header nav .item:focus,header nav .item:hover{color:#000;-webkit-text-stroke-color:rgba(255,255,255,.5);-webkit-text-decoration:underline;text-decoration:underline}header nav .item:focus::before{opacity:1;animation:rotateHue 5s infinite linear}header nav .item:hover::before{opacity:1;animation:rotateHue 5s infinite linear}header nav .item:focus::after{opacity:1;animation:rotateHue 5s infinite linear}header nav .item:hover::after{opacity:1;animation:rotateHue 5s infinite linear}@supports selector(:focus-visible){header nav .item:focus,header nav .item:hover{-webkit-text-decoration:none;text-decoration:none}header nav .item:focus-visible{outline:none}}header nav li:nth-child(1){--n:1}header nav li:nth-child(2){--n:2}header nav li:nth-child(3){--n:3}header nav li:nth-child(4){--n:4}header nav li:nth-child(5){--n:5}header nav li:nth-child(6){--n:6}header nav li:nth-child(7){--n:7}header nav li:nth-child(8){--n:8}header nav li[aria-current=page] .item{-webkit-text-stroke:.5rem #fff;paint-order:stroke fill}header nav li[aria-current=page] .item::before{filter:brightness(1);transition:filter 175ms ease-in-out;opacity:1}header nav li[aria-current=page] .item::after{background:rgba(250,250,250,.8)}@supports(color:lab(from red l 1 1% / calc(alpha + 0.1))){header nav li[aria-current=page] .item::after{background:oklch(from var(--color-bg) l c h/80%)}}header nav li[aria-current=page] .item:focus::before{clip-path:none;height:100%}header nav li[aria-current=page] .item:hover::before{clip-path:none;height:100%}header nav li[aria-current=page] .item:focus::after{background:rgba(255,255,255,.8)}header nav li[aria-current=page] .item:hover::after{background:rgba(255,255,255,.8)}header nav ol:hover li[aria-current=page]:not(:hover):not(:focus-within) .item::before{filter:brightness(1.25)grayscale(1)}header nav ol:focus-within li[aria-current=page]:not(:hover):not(:focus-within) .item::before{filter:brightness(1.25)grayscale(1)}@media(not (color:2147477350)) and (not (min-width:46rem)){.js{overflow-x:hidden}.js body{overflow-x:hidden}.js header::before{transform:translateX(-5rem);opacity:0}.js header #open-menu{border:none;background:0 0;font-family:"source sans 3",sans-serif;font-family:var(--type-body);text-transform:lowercase;font-size:.875rem;line-height:1;cursor:pointer}.js header nav{position:absolute;transform:translateX(-120%);transition:all 250ms ease-out}.js main{mix-blend-mode:darken;transform:translateX(0);transition:transform 250ms ease-out,opacity 250ms ease-out}.js.menu-open header::before{opacity:1;transform:translateX(0)}.js.menu-open header nav{transform:translateX(0)}.js.menu-open main{opacity:.2;transform:translateX(12rem);pointer-events:none}}@media(color:2147477350){#open-menu{display:none}body>header{position:fixed;top:0}}@media(min-width:46rem){#open-menu{display:none}body>header{display:grid;grid-gap:0 .5rem;grid-gap:var(--grid-gap);gap:0 .5rem;gap:var(--grid-gap);grid-template-columns:[main-start] repeat(12,[col-start] minmax(0,calc(100%/12)) [col-end]) [main-end];grid-template-columns:var(--inner-grid);justify-content:space-between;margin:0 auto;max-width:54rem;max-width:var(--content-max-width);position:static;width:100%}body>header::before{--direction:to right;position:absolute;top:0;left:0;height:.25rem;width:100%}body>header .wordmark{grid-column:col-start 1/col-end 4;margin-left:0;margin-right:0}body>header nav{grid-column:col-start 5/col-end 12}body>header nav ol{display:flex;flex-direction:row;justify-content:flex-end;margin:0;text-align:center}body>header nav .item{padding:.5lh 1rem;padding:var(--spacing-s)1rem;width:8rem}body>header nav .item::before{border-bottom-left-radius:.125rem;border-bottom-left-radius:var(--nav-border-radius);border-top-right-radius:0}body>header nav .item::after{border-bottom-left-radius:.125rem;border-bottom-left-radius:var(--nav-border-radius);border-top-right-radius:0}body>header nav .item::before{--delta:120;--direction:to bottom right}body>header nav .item::after{--direction:to bottom;top:.25rem;left:0}}header .wordmark{text-align:center}.hero{--gap:var(--spacing-l);gap:.5rem calc(.5rem + 1.5lh);gap:var(--grid-col-gap)calc(var(--grid-col-gap) + var(--spacing-l));position:relative;width:100%}.hero .kaleidoscope{aspect-ratio:1;position:relative;display:flex;align-items:center}.hero .kaleidoscope::before{--final-scale:1.5;animation:fade-in 275ms linear 1.5s forwards,zoom-in-var 275ms ease-out 1.5s forwards,hue-rotate 10s linear infinite,rotate-360 60s linear infinite reverse;background-image:url(../images/kaleidoscope.jpg);background-image:-webkit-image-set( url(../images/kaleidoscope.avif) type("image/avif"),url(../images/kaleidoscope.jpg) type("image/jpeg") );background-image:image-set( url(../images/kaleidoscope.avif) type("image/avif"),url(../images/kaleidoscope.jpg) type("image/jpeg") );background-position:50%;background-repeat:no-repeat;background-size:contain;content:"";display:block;height:100%;left:0;mix-blend-mode:darken;opacity:0;pointer-events:none;position:absolute;top:0;width:100%}.hero .text p:first-child{font-family:"source sans 3",sans-serif;font-family:var(--type-body);font-weight:700;font-size:2em;line-height:1.25;margin-top:1.5lh;margin-top:var(--spacing-l);margin-bottom:calc(1cap - .5lh);text-transform:none}.hero .text h1{font-family:"source sans 3",sans-serif;font-family:var(--type-body);font-weight:700;font-size:2em;line-height:1.25;margin-top:1.5lh;margin-top:var(--spacing-l);margin-bottom:calc(1cap - .5lh);text-transform:none}.hero .text p:first-child+p{margin-top:1lh;margin-top:var(--spacing-m)}.hero .text h1+p{margin-top:1lh;margin-top:var(--spacing-m)}.hero.enhanced .kaleidoscope::before{display:none}.hero .logo{animation:invert 1s linear;animation-delay:500ms;animation-fill-mode:forwards;display:block;left:50%;max-width:256px;opacity:.94;position:absolute;top:50%;transform:translate(-50%,-50%);width:50%;z-index:1}.hero canvas{display:block;width:100%;scale:1.4;pointer-events:none}.hero .controls{position:absolute;top:100%;right:0;left:0;list-style:none;margin:0;padding:0;z-index:20;text-align:center}.hero .controls li{display:inline-block}@media(any-hover:hover){.hero .controls{opacity:0;transition:275ms opacity ease-in-out}.hero:focus-within .controls,.hero .kaleidoscope:hover .controls{opacity:1}}.hero button{background:0 0;border:none;cursor:pointer;font-size:.675rem;line-height:2rem;opacity:.75;padding:.5rem 1rem;text-transform:lowercase;transition:opacity 75ms ease-in}.hero button:active{top:1px;left:2px}.hero button:focus,.hero button:hover{opacity:1}.hero button svg{height:.5rem;margin-right:.25rem;vertical-align:middle;width:.5rem}.hero button svg.icon--regenerate{margin-top:-3px}.hero button.css-animating svg{animation:rotate-360 275ms ease-out}.hero button span{line-height:1.5rem}.hero button.button--play-pause{width:6rem}.hero button.button--play-pause svg{margin-top:-2px}@media screen and (min-width:35rem){.hero{display:grid;flex-wrap:wrap;grid-gap:0 .5rem;grid-gap:var(--grid-gap);gap:0 .5rem;gap:var(--grid-gap);grid-template-columns:[main-start] repeat(12,[col-start] minmax(0,calc(100%/12)) [col-end]) [main-end];grid-template-columns:var(--inner-grid);justify-content:center}.hero .kaleidoscope{grid-column:col-start 1/span 4}.hero .text{grid-column:6/main-end}.hero .text p:first-child{margin-top:1lh;margin-top:var(--spacing-m)}.hero .text h1{margin-top:1lh;margin-top:var(--spacing-m)}}@media screen and (min-width:50rem){.hero .text{font-size:.965rem}}.home .logos,.home .intro img{animation:fade-in .5s ease-in-out .75s forwards;opacity:0}.home .hero+.logos,.home canvas{animation:fade-in .5s ease-in-out forwards;opacity:0}.home main p{max-width:40rem}.home .hero+.logos{--gap:var(--spacing-l);--per-row:4;font-family:adobe caslon pro,adobe-caslon-pro,Georgia,serif;font-family:var(--type-heading);font-style:italic;margin:1.5lh 0;margin:var(--spacing-l)0;padding:0;text-align:center;text-transform:lowercase}.home .hero+.logos ul{display:flex;flex-wrap:wrap;justify-content:space-around;gap:.5lh var(--gap);gap:var(--spacing-s)var(--gap);list-style:none;margin:0;padding:0}.home .hero+.logos li{flex:0 0 calc( 100%/var(--per-row) - var(--gap)/var(--per-row) * (var(--per-row) - 1) );align-content:center;min-width:100px;text-align:center}.home .hero+.logos img{opacity:.9}.home .hero+.logos img[src$="nmv.svg"],.home .hero+.logos img[src$="nrv.svg"]{height:50%}.home .hero+.logos img[src$="ubc.svg"]{scale:1.25}@media screen and (min-width:45rem){.home .hero+.logos{display:flex;gap:var(--gap);justify-content:center}.home .hero+.logos p{align-self:center;text-align:right}.home .hero+.logos ul{max-width:calc( 8 * ((100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 7 * .5rem );max-width:calc( 8 * calc(calc(100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 7 * .5rem );max-width:var(--n-cols-width-8)}}.home .intro figure{margin:calc(2 * 1.75lh)auto .5lh;margin:calc(2 * var(--spacing-xl))auto var(--spacing-s);height:-moz-min-content;height:min-content;max-width:calc( 10 * ((100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 9 * .5rem );max-width:calc( 10 * calc(calc(100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 9 * .5rem );max-width:var(--n-cols-width-10)}@media screen and (min-width:450px){.home .intro figure{order:2}}.home .intro figure canvas,.home .intro figure img{max-width:100%;transition:all 175ms ease-in-out;scale:1.2;translate:0 -10%}.home .intro figure img{border-radius:8rem 4rem;-webkit-mask-size:100% 100%;mask-size:100% 100%}.home .intro figure img.painted{border-radius:0}.home .intro figure figcaption{font-size:.675rem;text-align:center}@media screen and (min-width:50rem){.home .intro{display:grid;grid-template-columns:[main-start] repeat(12,[col-start] minmax(0,calc(100%/12)) [col-end]) [main-end];grid-template-columns:var(--inner-grid);grid-gap:0 .5rem;grid-gap:var(--grid-gap);gap:0 .5rem;gap:var(--grid-gap)}.home .intro figure{grid-column:col-start 8/main-end;max-width:none;position:sticky;top:1.75lh;top:var(--spacing-xl)}.home .intro figure img{translate:-10% -10%}.home .intro .text{grid-column:main-start/span 6}}.home .services>ul,.home .technologies>ul,.home .values>ul{--gap:var(--spacing-l);--per-row:3;display:flex;flex-wrap:wrap;justify-content:space-around;gap:1.5lh;gap:var(--gap);list-style:none;padding:0}.home .services>ul>li,.home .technologies>ul>li,.home .values>ul>li{flex:1 0 calc( 100%/var(--per-row) - var(--gap)/var(--per-row) * (var(--per-row) - 1) );min-width:10rem}.home .services h3,.home .technologies h3,.home .values h3{font-size:1.25rem;font-family:adobe caslon pro,adobe-caslon-pro,Georgia,serif;font-family:var(--type-heading);font-style:italic;margin-top:.5lh;margin-bottom:.25lh;margin-top:var(--spacing-s);margin-bottom:var(--spacing-xs)}.home .services h3+p,.home .technologies h3+p,.home .values h3+p{margin-top:0}.home .technologies>ul{--per-row:3;background:#c27070;margin-top:1.75lh;margin-bottom:1.5lh;margin-top:var(--spacing-xl);margin-bottom:var(--spacing-l);margin-left:auto;margin-right:auto;padding:1lh;padding:var(--spacing-m)}.home .technologies>ul.painted{margin-top:calc(2 * 1.5lh);margin-top:calc(2 * var(--spacing-l))}.home .technologies>ul>li{min-width:6rem;max-width:7rem}.home .technologies>ul>li img{filter:saturate(0)invert(1);mix-blend-mode:screen}.home .technologies>ul .brush-blob{max-width:120%}.home .technologies .logos{}.home .technologies img[src$="php.svg"]{aspect-ratio:3/1}@media screen and (min-width:40rem){.home .technologies>ul{max-width:calc( 10 * ((100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 9 * .5rem );max-width:calc( 10 * calc(calc(100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 9 * .5rem );max-width:var(--n-cols-width-10)}}@media screen and (min-width:60rem){.home .technologies>ul{max-width:calc( 8 * ((100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 7 * .5rem );max-width:calc( 8 * calc(calc(100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 7 * .5rem );max-width:var(--n-cols-width-8)}}.home .values>ul{--per-row:3;margin-top:1lh;margin-bottom:1lh;margin-top:var(--spacing-m);margin-bottom:var(--spacing-m)}.home .contact form{margin-top:1lh;margin-bottom:1lh;margin-top:var(--spacing-m);margin-bottom:var(--spacing-m)}@media screen and (min-width:40rem){.home .contact form{display:grid;grid-template-columns:[main-start] repeat(12,[col-start] minmax(0,calc(100%/12)) [col-end]) [main-end];grid-template-columns:var(--inner-grid);grid-gap:0 .5rem;grid-gap:var(--grid-gap);gap:0 .5rem;gap:var(--grid-gap)}.home .contact form>ol{grid-column:main-start/span 6}.home .contact form .details{font-size:.875rem;grid-column:col-start 8/main-end;height:-moz-min-content;height:min-content;margin-bottom:1.75lh;margin-bottom:var(--spacing-xl);position:sticky;top:1.5lh;top:var(--spacing-l)}.home .contact form .details p:first-child{margin-top:0}.home .contact form .details ul{padding-left:0;padding-right:0}}@supports(scroll-snap-align:center){@media screen and (min-width:640px){html:has(body.work){scroll-snap-type:y mandatory}body>header{scroll-snap-align:start}.work .client{scroll-snap-align:center}body>footer{scroll-snap-align:end}}}#work-cloud{position:sticky;top:40%;left:50%;translate:-50% -50%;z-index:2}.work{--base-size:15rem;--base-padding-y:3rem;--base-padding-x:2rem;--mask-size-diff:6.25rem}.work .intro h1{text-align:center;margin:1.5lh 0;margin:var(--spacing-l)0}.work h2{font-family:"source sans 3",sans-serif;font-family:var(--type-body);font-weight:700}.work .brush-blob{position:absolute;top:50%;left:50%;translate:-50% -50%;z-index:-1}.work .client{display:flex;flex-direction:column;margin:3rem 0 6rem}.work .client:first-of-type{margin-top:0}.work .client:last-of-type{margin-bottom:0}.js .has-link:is(.work .client){cursor:pointer}.work .client header{order:1}.work .client .teaser{order:2}.work .client .image-1{order:3}.work .client blockquote{order:4}.work .client .image-2{order:5}.work .client .image-3{order:6}.work .client .teaser,.work .client blockquote{margin:2rem 1rem}.work .client header,.work .client figure{margin:2rem auto}.work .client header{border-radius:50%;height:var(--base-size);width:var(--base-size);padding:var(--base-padding-y)var(--base-padding-x);position:relative;z-index:2}.work .client header h2{padding:0;margin:0 0 2rem;font-size:2.5rem}.work .client header a{-webkit-text-decoration:none;text-decoration:none}.work .client header a:focus{-webkit-text-decoration:underline;text-decoration:underline;outline:none}.work .client header .skills{font-weight:700;font-size:.75rem;line-height:1.25;margin-right:1rem;text-align:right}.work .client .teaser p{font-family:adobe caslon pro,adobe-caslon-pro,Georgia,serif;font-family:var(--type-heading);line-height:1.5}.work .client .brush-blob{max-width:100vw;max-height:100vw;animation:rotate-360 180s infinite}.work .client header:not(.painted){background:var(--background)}.work .client h2,.work .client h2 a,.work .client .skills{color:var(--foreground)}.work .client figure{border-top:1rem solid var(--background);border-bottom:1rem solid var(--background)}.work .client figure img{display:block}@media screen and (min-width:640px){.work .client figure{border:1px solid var(--background);border-radius:4px;margin:-1px 0 0 -1px}}.work .client:focus-within{outline-color:var(--background)}.work .client b{background:var(--highlight);background:linear-gradient(to bottom,var(--highlight),var(--highlight))0/100% 2rem no-repeat;color:var(--foreground);font-weight:400;padding:.125rem .25rem;margin:0 -.125rem}.work .client.client--nmv{--background:#111b32;--foreground:#fff;--highlight:#4e50cb}.work .client.client--adbusters{--background:#fde303;--foreground:#222;--highlight:var(--background)}.work .client.client--adbusters .image-3{border:none}.work .client.client--pvn{--background:#244e4d;--foreground:#fff;--highlight:var(--background)}.work .client.client--push{--background:#40ad48;--foreground:#fff;--highlight:var(--background)}@media screen and (min-width:640px){.work main{max-width:80rem;padding:0 1rem}.work .intro{max-width:640px;margin:auto}.work .intro h1{margin-top:0}.work .client{display:grid;grid-template-columns:[main-start] repeat(12,[col-start] minmax(0,calc(100%/12)) [col-end]) [main-end];grid-template-columns:var(--inner-grid);grid-column-gap:.5rem;grid-column-gap:var(--grid-col-gap);-moz-column-gap:.5rem;column-gap:.5rem;-moz-column-gap:var(--grid-col-gap);column-gap:var(--grid-col-gap);grid-template-rows:auto auto 1fr;position:relative;margin:8rem 0 16rem}.work .client:focus-within{outline:2px solid #000;outline-offset:5px}.work .client header{grid-row:2/span 2;grid-column:5/span 2;top:-10%;margin:-3rem 0 0}@supports(animation-fill-mode:forwards){.js :is(.work .client header){opacity:0}.js .painted:is(.work .client header){animation:fade-in 175ms ease-out;animation-fill-mode:forwards}}.work .client .teaser{grid-column:main-start/span 5;grid-row:1;margin:0 0 6rem}.work .client .teaser p:last-child{margin-bottom:0}@supports(shape-outside:circle(200px)){.work .client .teaser:before{content:"";display:block;float:right;width:100%;height:100%;shape-outside:polygon(100% 100%,100% 50%,80% 100%)}}.work .client figure,.work .client blockquote{align-self:start}.work .client blockquote{grid-column:8/span 5;grid-row:3;margin-bottom:0}.work .client figure{overflow:hidden}.work .client .image-1{grid-column:main-start/span 6;grid-row:2/span 2}.work .client .image-2{grid-column:7/span 6;grid-row:1/span 2;margin-bottom:1rem!important}.work .client .image-3{grid-column:7/span 6;grid-row:3}}footer{font-size:.75rem;margin:4rem 0 1rem;padding:0;position:relative;text-align:center}footer a:focus,footer a:hover{-webkit-text-decoration:underline;text-decoration:underline}footer .logo{display:block;margin-left:auto;margin-right:auto;max-width:10rem}footer .logo img{width:100%}footer ul{list-style:none;margin:0;padding:0}footer .curse{grid-column:col-start 2/col-end -2;text-align:center}footer .curse+small{grid-column:main}footer p{margin-top:1lh;margin-bottom:1lh;margin-left:auto;margin-right:auto;max-width:calc( 10 * ((100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 9 * .5rem );max-width:calc( 10 * calc(calc(100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 9 * .5rem );max-width:var(--n-cols-width-10)}footer>small{text-align:center}@media screen and (min-width:40rem){footer{display:grid;grid-template-columns:[full-start] max( calc(1rem - 0.5rem),calc(50vw - 54rem/2 - 0.5rem) ) [main-start] repeat(12,[col-start] minmax(0,calc(100%/12)) [col-end]) [main-end] max( calc(1rem - 0.5rem),calc(50vw - 54rem/2 - 0.5rem) ) [full-end];grid-template-columns:var(--page-grid);grid-template-rows:1fr 2fr 1fr;grid-gap:0 .5rem;grid-gap:var(--grid-gap);gap:0 .5rem;gap:var(--grid-gap);align-items:start}footer .logo{grid-column:col-start 1/span 4;grid-row:1/span 3}footer nav{grid-column:col-start 6/span 2;text-align:center;grid-row:2}footer .land-acknowledgement{grid-column:col-start 9/span 4;grid-row:2;margin:0;text-align:right;font-style:italic}footer>small{grid-column:main}}form h2{margin:0 0 1rem;font-feature-settings:'dlig'}form ol{list-style:none;margin:0;padding:0}form>ol>li{margin-bottom:2rem}form .options{display:flex;flex-wrap:wrap;justify-content:space-between}form .options li{flex:none;position:relative}form .options label{color:#333;cursor:pointer;border-radius:.25rem;font-family:"source sans 3",sans-serif;font-family:var(--type-body);font-size:1rem;line-height:2rem;padding:.25rem 1.5rem .25rem 2.5rem;min-width:0}form .options input[type=radio]{position:absolute;z-index:1;margin:0 .5rem;top:50%;left:.25rem;transform:translateY(-55%)}form .options input[type=radio]:focus{outline:none}form .submit{text-align:right}form label{display:inline-block;min-width:50%}form button,label,legend{font-family:adobe caslon pro,adobe-caslon-pro,Georgia,serif;font-family:var(--type-heading);text-transform:lowercase}fieldset{border:none;margin:0;padding:0}legend{margin:0 0 1lh;margin:0 0 var(--spacing-m);padding:0}label.for-textarea{width:100%}a.btn,form button{animation:hue-rotate 2s infinite linear;animation-play-state:paused;border-radius:.25rem .25rem .125rem .125rem;color:#000;cursor:pointer;display:inline-block;font-size:1rem;padding:.25lh 1.5lh;padding:var(--spacing-xs)var(--spacing-l);box-shadow:1px 2px rgba(0,0,0,.1)}a.btn svg,form button:not(.does-not-exist) svg{margin-right:.125rem;fill:#19444d;translate:0 -.0625rem;vertical-align:middle;width:1rem}a.btn:hover,form button:not(.does-not-exist):hover,a.btn:focus,form button:not(.does-not-exist):focus{animation-play-state:running;background-size:100% calc(100% - .25rem),100% 100%}a.btn:active{transform:translate(1px,2px);box-shadow:none}form button:not(.does-not-exist):active{transform:translate(1px,2px);box-shadow:none}a.btn,form button,form .options :checked+label,input[type=text],input[type=email],textarea{background-image:linear-gradient( to right,hsla(0deg,100%,100%,.8),hsla(0deg,100%,100%,.8) ),linear-gradient( to bottom right,hsl(200deg,90%,60%),hsl(240deg,45%,60%) );background-repeat:no-repeat,no-repeat;background-position:0 0,0 0;background-size:100% 100%,100% 100%;filter:hue-rotate(0);transition:filter 375ms ease-out,background-size 75ms ease-out,background-position 75ms ease-out}form .options :checked+label:focus{filter:hue-rotate(-45deg);outline:none}a.btn:not(.does-not-exist):not(does-not-exist):focus,form button:not(.does-not-exist):not(.does-not-exist):focus,input[type=text]:not(.does-not-exist):not(does-not-exist):focus,input[type=email]:not(.does-not-exist):not(does-not-exist):focus,textarea:not(.does-not-exist):not(.does-not-exist):not(does-not-exist):focus{filter:hue-rotate(-45deg);outline:none}form .options :checked+label{color:#000;background-size:100% 100%,100% 100%}form .options :focus+label{filter:hue-rotate(-45deg);background-size:100% calc(100% - .25rem),100% 100%;border-radius:.25rem .25rem .125rem .125rem}form button,input[type=text],input[type=email]{border:none;border-radius:.25rem}form button:not(.does-not-exist):focus,input[type=text]:focus,input[type=email]:focus{border-radius:.25rem .25rem .125rem .125rem;background-size:100% calc(100% - .25rem),100% 100%}input[type=text],input[type=email]{font-size:1rem;line-height:1lh;margin:.25lh 0;margin:var(--spacing-xs)0;padding:.125lh .25lh .25lh}textarea{background-size:100% 100%,100% 100%;border:none;border-radius:.125rem;display:block;font-family:"source sans 3",sans-serif;font-family:var(--type-body);font-size:1rem;line-height:1lh;margin-top:.25lh;margin-top:var(--spacing-xs);min-height:8lh;padding:.25lh;padding:var(--spacing-xs);width:100%}textarea:focus{background-size:100% calc(100% - .5rem),100% 100%}.emoji{display:inline-block}.emoji-hue{animation:hue-rotate 4s linear infinite}.emoji-pulse{animation:emoji-pulse 1s ease-in-out infinite alternate}.emoji-pop{scale:1}p:focus-within .emoji-pop,p:hover .emoji-pop{animation:emoji-hover-pop 2s linear 1;animation-delay:.5s}.emoji-hue.emoji-pulse{animation:hue-rotate 2s linear infinite,emoji-pulse 1s ease-out infinite alternate}.cta{text-align:center;margin-left:auto;margin-right:auto;margin-top:1.75lh;margin-bottom:1.75lh;margin-top:var(--spacing-xl);margin-bottom:var(--spacing-xl)}.cta .btn{font-weight:600}.testimonial .logos,.technologies .logos{position:relative}.testimonial .logos .brush-blob,.technologies .logos .brush-blob{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:-1;width:auto;max-width:150%}.testimonial{--direction:to bottom right;color:#000;margin:5lh 0 1lh;margin:5lh 0 var(--spacing-m);padding:0;position:relative}.testimonial .logos{--gap:var(--spacing-m);--per-row:1;align-self:center;display:flex;flex-wrap:wrap;gap:1lh;gap:var(--gap);height:-moz-min-content;height:min-content;list-style:none;margin:0 auto 4lh;max-width:calc( 10 * ((100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 9 * .5rem );max-width:calc( 10 * calc(calc(100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 9 * .5rem );max-width:var(--n-cols-width-10);padding:0}.testimonial .logos li{flex:0 0 calc( 100%/var(--per-row) - var(--gap)/var(--per-row) * (var(--per-row) - 1) );align-content:center;min-width:100px;text-align:center}.testimonial .logos img[src$=".svg"]{filter:invert(1)}.testimonial:has(img[src$="ionica.svg"]) .logos{background-color:#6431f6}.testimonial:has(img[src$="nmv.svg"]) .logos{background-color:#111b32;justify-content:center}.testimonial:has(img[src$="nmv.svg"]) .logos li{flex:0 0 30%}.testimonial:has(img[src$="nmv.svg"]) .logos img[src$=".svg"]{mix-blend-mode:screen}.testimonial:has(img[src$="steel.svg"]) .logos{background-color:#292f33}.testimonial:has(img[src$="gryphon.svg"]) .logos{background-color:#8a734d}.testimonial blockquote{height:-moz-min-content;height:min-content;margin:0 1lh;margin:0 var(--spacing-m);position:relative}.testimonial blockquote::before{display:block;position:absolute;font-size:10rem;font-family:adobe caslon pro,adobe-caslon-pro,Georgia,serif;font-family:var(--type-heading);opacity:.05;z-index:-1;pointer-events:none}.testimonial blockquote::after{display:block;position:absolute;font-size:10rem;font-family:adobe caslon pro,adobe-caslon-pro,Georgia,serif;font-family:var(--type-heading);opacity:.05;z-index:-1;pointer-events:none}.testimonial blockquote::before{content:"\2018";top:-.35em;left:-.2em}.testimonial blockquote::after{content:"\2019";bottom:-.75em;right:0}@media screen and (min-width:40rem){.testimonial{display:flex;gap:.5rem .5rem;gap:var(--grid-col-gap)var(--grid-col-gap);margin:1lh 0 0}.testimonial .logos{flex:0 0 calc( 3 * ((100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 2 * .5rem );flex:0 0 calc( 3 * calc(calc(100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 2 * .5rem );flex:0 0 var(--n-cols-width-3);margin:0 0 2lh calc(.5rem + ( 1 * ((100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 0 * .5rem ));margin:0 0 2lh calc(.5rem + calc( 1 * calc(calc(100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 0 * .5rem ));margin:0 0 2lh calc(var(--grid-col-gap) + var(--n-cols-width-1));max-width:none}.testimonial .logos .brush-blob{max-width:130%}.testimonial blockquote{flex:auto;margin:0 0 0 calc(.5rem + ( 1 * ((100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 0 * .5rem ));margin:0 0 0 calc(.5rem + calc( 1 * calc(calc(100vw - 2 * max( calc(1rem - .5rem),calc(50vw - 54rem/2 - .5rem) ) - 13 * .5rem)/12) + 0 * .5rem ));margin:0 0 0 calc(var(--grid-col-gap) + var(--n-cols-width-1))}.testimonial blockquote::before{top:-.25em}}.screen-reader-only{border:0;clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.screen-reader-only-focusable:active,.screen-reader-only-focusable:focus{clip:auto;clip-path:none;height:auto;margin:0;overflow:visible;position:static;width:auto;white-space:inherit}*,*:before,*:after{box-sizing:border-box}@media(prefers-reduced-motion){*,*:before,*:after{animation-delay:0s!important;animation-duration:0s!important;transition-delay:0s!important;transition-duration:0s!important}}:root{font-family:"source sans 3",sans-serif;font-family:var(--type-body);font-size:max(18px,min(1.5vw,24px));line-height:1.625;word-wrap:break-word}body{color:#161616;color:var(--color-fg);background:#fafafa;background:var(--color-bg);margin:0}body.show-baseline{background-size:100% 1rlh;background-image:linear-gradient( to bottom,#aaa 0,transparent 1px,transparent calc(.5rlh - 1px),#eee .5rlh,transparent calc(.5rlh + 1px) );background-repeat:repeat-y}#baseline-toggle{position:fixed;bottom:1rem;right:1rem}h1{margin:0;padding:0;margin-top:-.25cap;position:relative}h1:before{content:"";background:red;width:1ch;height:calc(1cap + 1ex);position:absolute;top:0;left:4ch}h1:after{content:"";background:blue;width:1ch;height:1ex;position:absolute;top:1cap;left:4ch}h1::before,h1::after{display:none}main{margin:auto;display:grid;grid-template-columns:[full-start] max( calc(1rem - 0.5rem),calc(50vw - 54rem/2 - 0.5rem) ) [main-start] repeat(12,[col-start] minmax(0,calc(100%/12)) [col-end]) [main-end] max( calc(1rem - 0.5rem),calc(50vw - 54rem/2 - 0.5rem) ) [full-end];grid-template-columns:var(--page-grid);grid-gap:0 .5rem;grid-gap:var(--grid-gap);gap:0 .5rem;gap:var(--grid-gap)}:where(main>*){grid-column:main}:where(main>.full-width){grid-column:full}h1,h2,h3,h4,h5,h6{color:#000;color:var(--color-heading);font-family:adobe caslon pro,adobe-caslon-pro,Georgia,serif;font-family:var(--type-heading);font-weight:400;text-transform:lowercase}main h1,main h2,main h3,main h4,main h5,main h6{margin-top:1lh;margin-top:var(--spacing-m);margin-bottom:.25lh;margin-bottom:var(--spacing-xs)}figure{margin:0}figcaption{font-size:.875rem;text-align:right}img{max-width:100%;height:auto;aspect-ratio:attr(width)/attr(height)}svg{max-width:100%}p{margin:0;margin-top:1lh;margin-top:var(--spacing-m);position:relative}p:before{content:"";background:red;width:1ch;height:calc(1cap + 1ex);position:absolute;top:0;left:4ch}p:after{content:"";background:blue;width:1ch;height:1ex;position:absolute;top:1cap;left:4ch}p::before,p::after{display:none}h1,p,ul{padding-top:calc(.5lh - 1cap);margin-bottom:calc(1cap - .5lh)}h1+p,h2+p,h3+p,h4+p,h5+p,h6+p{margin-top:0}a{-webkit-text-decoration:none;text-decoration:none;color:#19444d}button{color:#333}strong{color:#000;color:var(--color-heading);font-weight:600}blockquote p.cite{font-size:.875rem;font-style:italic;text-align:right}table{margin:1.75lh;margin:var(--spacing-xl)}table th,table td{padding:0 .25lh;padding:0 var(--spacing-xs)}table th{font-family:adobe caslon pro,adobe-caslon-pro,Georgia,serif;font-family:var(--type-heading);font-style:italic;font-weight:400;text-align:left;text-transform:lowercase}table td{vertical-align:top;padding-bottom:.25lh;padding-bottom:var(--spacing-xs)}.text a:not(.btn),main p a:not(.btn){border-radius:.125rem;background-color:initial;background-image:linear-gradient(to bottom right,#d6e0f5 0%,#e0f5d6 100% );background-size:100% .25rem;background-position:0 98%;background-repeat:no-repeat;padding:.25rem;paint-order:stroke fill}@supports(paint-order:stroke fill){.text a:not(.btn),main p a:not(.btn){-webkit-text-stroke:4px transparent}}.text a:not(.btn):focus,main p a:not(.btn):not(.does-not-exist):focus,.text a:not(.btn):hover,main p a:not(.btn):not(.does-not-exist):hover{background-color:#ebb8ad;animation:hue-rotate 2s infinite;background-size:100% 100%;color:#111}@supports(paint-order:stroke fill){.text a:not(.btn):focus,main p a:not(.btn):not(.does-not-exist):focus,.text a:not(.btn):hover,main p a:not(.btn):not(.does-not-exist):hover{-webkit-text-stroke-color:#fff}}@media(color:2147477350){main{margin-left:25vw}}#fps{position:fixed;font-size:.875rem;bottom:.25lh;bottom:var(--spacing-xs);left:.25lh;left:var(--spacing-xs)}