@charset "UTF-8";.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}:root{--stroke:2px;--menu-gap:3px;--curve:14px;--base-font:clamp(1rem, .3571rem + 2.8571vmin, 2rem);--hue-accent:194;--hue-accent:calc( 194 + var(--hue,0) );--lightness:99%;--saturation:70%;--opacity:50%;--hue-text:0;--col-dark:hsl(var(--hue-accent), 99%, 0%);--col-dark-t:hsl(var(--hue-accent), 99%, 0%, var(--alpha,.8));--col-light:hsl(var(--hue-accent), 58%, 95%);--col-light-t:hsla(var(--hue-accent), 58%, 95%, var(--alpha,.5));--col-active:hsl(var(--hue-accent), 84%, 35%);--col-brand:hsla(var(--hue-accent, 270%), 90%, 20%, 98% ) ;--col-text:hsl( var(--hue-text), var(--saturation), var(--lightness) );--col-text-sheen:hsla(var(--hue-text), var(--saturation), var(--lightness), var(--opacity) );--shadow-color:0,0,0;--shadow-range:.25;--shadow-spread:0px;--shadow-1:0px 1.7px 2.7px var(--shadow-spread) rgba(var(--shadow-color),calc( var(--shadow-range) * .328) );--shadow-2:0px 4.1px 6.9px var(--shadow-spread) rgba(var(--shadow-color), calc( var(--shadow-range) * .474) );--shadow-3:0px 8.2px 14.2px var(--shadow-spread) rgba(var(--shadow-color), calc( var(--shadow-range) * .597) );--shadow-4:0px 16.4px 29.2px var(--shadow-spread) rgba(var(--shadow-color), calc( var(--shadow-range) * .738) );--shadow-5:0px 50px 80px var(--shadow-spread) rgba(var(--shadow-color), calc( var(--shadow-range) ));--drop-shadow: 0px 5px 7px rgba(0,0,0,.8);--inner-shadow: 0px -1px 0px rgba(255,255,255,.4);--shadow: var(--shadow-1), var(--shadow-2), var(--shadow-3), var(--shadow-4), var(--shadow-5);--shadow-filter: drop-shadow(var(--shadow-1)) drop-shadow(var(--shadow-2)) drop-shadow(var(--shadow-3)) drop-shadow(var(--shadow-4)) drop-shadow(var(--shadow-5));--shadow-text: 0 -1px 1px var(--col-light-t), 0 1px 1px var(--col-text-sheen), 0 2px 2px var(--col-text-sheen), 0 4px 4px var(--col-text-sheen), 0 6px 8px var(--col-text-sheen), 0 8px 16pxvar(--col-text-sheen);--path-length:3814.43212890625;--text-max-width:max(42ex,42ch);--pad:clamp(4px, 2vmin, 2rem);--percent:1;--draw:1;--direction:vertical;--border:dotted var(--col-light) var(--stroke);--noise:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='3.9' numOctaves='1' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");--viewport-height:100dvh;--ease-in-quick:90ms;--ease-in-medium:.25s;--ease-in-slow:.45s;--ease-out-back:$easeOutBack;--numerator:5.5;--denominator:5;--font-zoom:1;--font-scale:1;--harmonic:calc( var(--numerator) / var(--denominator) );--sub-harmonic:calc( var(--denominator) / var(--numerator) );--s0:1;--s1:calc( var(--s0) * var(--harmonic));--s2:calc( var(--s1) * var(--harmonic) );--s3:calc( var(--s2) * var(--harmonic) );--s4:calc( var(--s3) * var(--harmonic) );--s5:calc( var(--s4) * var(--harmonic) );--s6:calc( var(--s5) * var(--harmonic) );--s-1:calc( var(--s0) * var(--sub-harmonic) );--s-2:calc( var(--s-1) * var(--sub-harmonic) );--s-3:calc( var(--s-2) * var(--sub-harmonic) );--s-4:calc( var(--s-3) * var(--sub-harmonic) );--s-5:calc( var(--s-4) * var(--sub-harmonic) );--ease-in-back:cubic-bezier(.68, -.55, .265, 1.55);--ease-out-back:cubic-bezier(.175, .885, .32, 1.275)}:where(html){height:100%;height:fit-content;min-height:100vh;min-height:-webkit-fill-available;min-height:100dvh;max-width:100%;max-width:100vw;max-width:100dvw;text-decoration-skip-ink:auto;overflow-x:hidden;scroll-behavior:smooth;-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}:where(body){min-height:inherit;height:inherit}body,header,footer,nav,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,ul,ol,canvas{margin:0;padding:0}img,picture{max-width:100%;display:block;position:relative}img{border-radius:var(--curve, 0);font-style:italic;text-wrap:balance}input,button,textarea,select{font:inherit;--line-height: 1}dialog{visibility:hidden;pointer-events:none}dialog[open]{visibility:visible;pointer-events:auto}input{appearance:none;max-width:100%;padding:0 var(--pad);box-sizing:border-box}input[type=text]{font-weight:900}input[type=text]::placeholder{font-weight:300}input[type=submit]{background-color:var(--col-dark);color:inherit;cursor:pointer}:is(input[type=submit]:hover,input[type=submit]:focus-visible){background-color:var(--col-brand, var(--col-accent, var(--col-active, blue)))}svg{fill:currentColor}[hidden]{display:none!important}@font-face{font-family:MajorMonoDisplay;font-display:swap;font-style:normal;src:url(/fonts/majormonodisplay-regular-webfont.woff2) format("woff2"),url(/fonts/majormonodisplay-regular-webfont.woff) format("woff")}@font-face{font-family:Josefin Sans;font-display:swap;font-style:normal;src:url(/fonts/JosefinSans-VariableFont_wght.ttf) format("ttf")}html{text-rendering:optimizeSpeed;font-family:MajorMonoDisplay,monospace;line-height:var(--line-height, 1.5)}html,h1,h2,h3,h4,h5,h6,p,button,nav a,li,span{line-height:var(--line-height, 1.5);font-size:calc(var(--font-zoom, 1) * var(--font-scale, 1) * var(--base-font))}h1,h2,h3,h4,h5,h6,p{text-transform:lowercase;opacity:.7;font-weight:600}h1,h2,h3,h4{overflow-wrap:break-word;text-wrap:balance;text-wrap:pretty;line-height:1.1}.h1,h1{--font-scale:var(--s6);font-weight:200}.h2,h2{--font-scale:var(--s4)}.h3,h3{--font-scale:var(--s3)}h3,h4,h5{text-align:center;max-inline-size:var(--text-max-width)}p.flood,blockquote p,.h4,h4{--font-scale:var(--s2);font-weight:100}figure blockquote~figcaption,.h5,h5{--font-scale:var(--s1)}.h6,h6{--font-scale:var(--s-2);font-weight:300}button,p{--font-scale:var(--s-3)}p{font-weight:100}p[aria-label=Summary i]{--line-height: 1;--font-scale:var(--s1);border-top:var(--border);border-bottom:var(--border);border-bottom-color:transparent;padding-top:calc(2 * var(--pad));padding-bottom:calc(2 * var(--pad));margin:var(--pad);margin-top:calc(2 * var(--pad))}p[aria-label=Summary i] a{font-weight:600}abbr{pointer-events:all;cursor:help}.small,p.small{--font-scale:var(--s-5);font-weight:100}#menu a{font-weight:600}blockquote p,strong,em{font-weight:900;opacity:1}figure,blockquote{margin-top:var(--pad);margin-bottom:var(--pad)}q{quotes:"“" "”" "‘" "’"}blockquote{font-style:oblique;font-weight:900}blockquote p:before,blockquote p:after{content:'"';min-height:3rem;display:inline;font-weight:500}blockquote p:before{content:open-quote}blockquote p:after{content:close-quote}figcaption{margin-top:var(--pad)}blockquote,figcaption{text-align:center}blockquote~figcaption:before{content:"—";margin:0}a{text-decoration:none;text-transform:lowercase;transition:color var(--ease-in-quick),fill var(--ease-in-quick)}a.hide-text{--col-text-sheen:rgba(0,0,0,0)}a:focus-visible{outline:5px dotted var(--col-light);outline-offset:var(--pad)}.fake-link,:is(details,p,dialog) a{appearance:none;border:none;cursor:pointer;padding:0;color:inherit;background-color:inherit;text-transform:lowercase;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-skip-ink:auto;text-decoration-thickness:1x;text-underline-offset:7px;transition:var(--ease-in-slow) color}.fake-link:hover,:is(details,p,dialog) a:hover{color:var(--col-brand, var(--col-accent, var(--col-active, blue)));text-underline-offset:7px;text-decoration-style:dotted;text-decoration-thickness:calc(2 * var(--stroke, 4px))}.glitch:focus,.glitch:hover{text-transform:uppercase}.copyright-sign:after{content:"&#169;";content:"©"}::selection{background-color:var(--col-brand, var(--col-accent, var(--col-active, blue)));color:var(--col-light);-webkit-text-fill-color:var(--col-light);text-shadow:none}@property --hue{initial-value: 0; inherits: false; syntax: "<number>";}@property --sat{initial-value: 70%; inherits: false; syntax: "<percentage>";}body,a,.invert{--col-text:hsl( var(--hue-text), var(--saturation), var(--lightness) );--col-text-sheen:hsla(var(--hue-text), var(--saturation), 0%, var(--opacity) );color:var(--col-text)}.invert{--lightness:0%;--saturation:0%;--opacity:70%;text-decoration:none;background-color:var(--col-light);background-image:linear-gradient(0deg,#fff,#fff0),var(--noise);padding:calc(1.2 * var(--pad)) calc(1.7 * var(--pad));margin:var(--pad) auto}header{text-align:center}html{overflow:auto;scroll-snap-type:both proximity;min-height:100vh;min-height:100dvh}html:focus-within{scroll-behavior:smooth}body{--menu-pad-v: calc( 1.4 * var(--pad));--menu-pad-h: calc(3 * var(--pad));--min-size:30px;--size:clamp(var(--min-size), 6vw, 88px );--menu-height:calc( var(--size) + var(--menu-pad-v) * 2 );--nav-height:max( calc( 1rem + 2 * var(--menu-pad-v) + 2 * var(--stroke) ), calc( 44px + var(--menu-pad-v) * 2 ) );--gadget-height:calc(var(--menu-height) + var(--nav-height) );--pages:3;--page-width:100vw;--page-height:calc( 100dvh - var(--gadget-height) );min-height:100%;display:grid;align-items:center;justify-content:center;grid-gap:var(--gadget-height);margin:var(--pad);margin-top:var(--menu-height);margin-bottom:var(--nav-height);padding-top:var(--menu-height);padding-bottom:var(--nav-height);grid-template-columns:100%;grid-template-rows:repeat(var(--pages),var(--page-height))}ul[role=list]{list-style:inside}.main-header{display:flex;place-content:center}[data-page]{box-sizing:content-box;margin:var(--menu-height) auto var(--nav-height) auto;scroll-snap-align:center;flex:1 1 var(--page-height);height:100%;min-height:var(--page-height, 100%);max-width:min(100%,100vw);display:flex;flex-direction:column;justify-content:center;position:relative;transition:transform var(--ease-in-medium) cubic-bezier(.175,.885,.32,1.275)}#home{padding:0 calc((100% - 909px)/2);max-width:909px;display:flex;flex-direction:column;align-items:center}#about{box-sizing:border-box;padding:var(--pad);text-transform:lowercase;width:100%;display:flex;flex-direction:column}#about>*{margin-top:var(--pad);margin-bottom:var(--pad)}#about figure{margin:auto}#link-about{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:var(--pad);white-space:nowrap}[data-page=home]{justify-content:space-evenly}[data-page=home] h2{margin-top:var(--pad);margin-bottom:auto}.text-glitch:hover{text-transform:uppercase}.hide-link{text-decoration:none;color:inherit}#content{position:relative}.main-header a.project-link{--scale: 1.02;--logo-size:clamp(44px, 20%, 99px);display:inline-grid;grid-template-columns:var(--logo-size) auto;max-width:85%;box-shadow:var(--shadow);align-items:center;justify-content:center;gap:var(--pad);margin-top:calc(2 * var(--pad))}.main-header a.project-link svg{--shadow-range:.85;--shadow-color:255,0,0;height:100%;flex-grow:1;flex-shrink:0;flex-basis:var(--logo-size);max-height:min(44px,25vh)}.previous-projects ol{list-style:none;display:flex;justify-content:center}.previous-projects ol li+li:before{content:"/";margin:var(--pad)}.previous-projects ol small{text-transform:lowercase}p.inverted{padding:var(--pad);color:var(--col-dark);background-color:var(--col-light);font-weight:900}lite-youtube{max-width:100%!important}.associates{--min-size:44px;--max-size:88px;--size:clamp(var(--min-size), 3vw, var(--max-size));display:grid;width:100%;min-width:75%;padding:var(--pad);list-style:none;grid-template-columns:repeat(auto-fit,minmax(var(--size),1fr));grid-auto-flow:row dense;grid-auto-rows:minmax(var(--size),1fr);grid-gap:var(--pad);gap:var(--pad);box-sizing:border-box;align-items:center;justify-content:center}.associates li{width:100%;height:100%;margin:auto;max-width:var(--size);min-width:var(--min-size);box-sizing:border-box;display:grid;animation-timing-function:var(--ease-out-back, ease-out)}.associates svg{--y:-100%;grid-area:1/-1;fill:currentColor;display:block;height:auto;height:100%;max-width:100%;max-height:100%;margin:0 auto;position:relative;filter:drop-shadow(var(--drop-shadow));width:100%;object-fit:cover;animation:RevealViaCircle var(--ease-in-slow) both 0s 1,TranslateYFrom var(--ease-in-slow) both calc(var(--ease-in-slow) * .8) 1}.associates a{display:flex;flex-direction:column-reverse;align-items:center;justify-content:center;width:100%;height:100%;box-sizing:border-box}.associates a:hover,.associates a:focus{color:var(--col-brand, var(--col-accent, var(--col-active, blue)))}.associates a:hover svg,.associates a:focus svg{filter:drop-shadow(var(--inner-shadow)) drop-shadow(var(--drop-shadow))}.company-name{display:block}footer h6{margin:0;padding:var(--pad);text-align:left}ul[role=list]{display:flex;flex-direction:column;gap:var(--pad)}.menu-toggle{position:absolute}#root{position:fixed;inset:0}#visuals{position:fixed;inset:0;display:none;z-index:-1;pointer-events:none}html,#visuals{--gradient-vertical-accent:linear-gradient( hsla( var(--hue-accent, 270%), 100%, 4%, 85% ) , hsla( var(--hue-accent, 270%), 100%, .5%, 100% ) );--gradient-radial-accent:radial-gradient( ellipse farthest-corner at 50% 10% , rgba(255,255,255, 20% ) , rgba(255,255,255,0) );background-color:#000000e6;background-image:var(--gradient-vertical-accent);background-image:var(--gradient-radial-accent),var(--gradient-vertical-accent),var(--noise);background-size:100vw,cover,100%;background-repeat:repeat,repeat,repeat;background-position:top center,top left,top left}.skip-to-menu{position:absolute;top:0;left:0;opacity:0;z-index:-1}#menu{--alpha: .5;z-index:1;width:max-content;display:flex;margin:0 auto;pointer-events:none;transition:opacity var(--ease-in-quick) linear;justify-content:stretch;grid-gap:var(--menu-gap, 0);transition:background-color var(--ease-in-quick) linear}#menu a{--scaleX: 1;--scaleY: 1;--font-scale:var(--s-3);opacity:var(--alpha);position:relative;z-index:3;pointer-events:all;overflow:hidden;transition:color var(--ease-in-quick) linear,opacity var(--ease-in-quick) linear;flex:1 1 auto;text-align:center;text-decoration-style:dashed;padding:var(--menu-pad-v) var(--menu-pad-h)}#menu a:first-of-type{border-radius:var(--curve) 0 0 var(--curve)}#menu a:last-of-type{border-radius:0 var(--curve) var(--curve) 0}#menu a:before,#menu a:after{content:"";position:absolute;z-index:-1;top:0;left:0;width:100%;height:100%;transform-origin:center var(--direction, center);transition:transform var(--ease-in-slow) var(--ease-in-back, linear);transition:opacity var(--ease-in-quick) linear,transform var(--ease-in-slow) var(--ease-out-back, ease-out)}#menu a:before{background-color:var(--col-light);background-image:linear-gradient(0deg,#ffffff80,#fff0),var(--noise);transform:scale(calc(0 * var(--scaleX, 1)),calc(0 * var(--scaleY, 1)))}#menu a:after{background-color:var(--col-dark);z-index:-2}@media (hover: hover) and (pointer: fine){#menu a:hover{--alpha: 1;opacity:1;color:var(--col-dark);z-index:1}#menu a:hover:before,#menu a:hover:after{transition-duration:var(--ease-in-medium)}#menu a:hover:before{transform:scale(calc(1 * var(--scaleX, 1)),calc(1 * var(--scaleY, 1)))}#menu a:hover:after{transform:scale(calc(0 * var(--scaleX, 1)),calc(0 * var(--scaleY, 1)));background-color:var(--col-brand, var(--col-accent, var(--col-active, blue)))}}#menu a:focus{opacity:1}#menu a:active{opacity:1;box-shadow:0 1px 1px var(--col-dark-t),0 2px 2px var(--col-dark-t)}#menu a:active:before{transform:scale(calc(1 * var(--scaleX, 1)),calc(1 * var(--scaleY, 1)))}#menu a:active:after{opacity:1;background-color:var(--col-brand, var(--col-accent, var(--col-active, blue)));transform:scale(calc(1 * var(--scaleX, 1)),calc(1 * var(--scaleY, 1)));transition-duration:var(--ease-in-quick)}#menu a[aria-current]{text-decoration:underline;text-underline-offset:9px;text-decoration-style:dotted;text-decoration-color:var(--col-light-t);text-decoration-thickness:calc(2 * var(--stroke, 4px))}#menu:hover a{opacity:1}#menu a[href$="#home"]{--size:16px;padding:var(--menu-pad-v) var(--menu-pad-h);background-color:var(--col-dark);z-index:1}#menu a[href$="#home"]:after{background-color:var(--col-dark);background-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='1024'%20height='1024'%3e%3cpath%20d='M891.27%20380.782H645.133v94.678c0%2052.272-42.389%2094.678-94.676%2094.7-52.29%200-94.662-42.405-94.662-94.678%200-52.288%2042.372-94.678%2094.662-94.678h94.676V95.127l-.818-.268c-41.648-13.194-84.385-19.784-130.398-19.784C272.604%2075.1%2077%20270.7%2077%20512s195.6%20436.9%20436.9%20436.9c221.605%200%20404.672-164.968%20433.094-378.787H701.93l189.34-189.331z'%20stroke='hsl(30,%206%25,%2099%25)'%20stroke-width='40'/%3e%3c/svg%3e");background-size:calc(1.2 * var(--size, 100%)),100%;background-repeat:no-repeat;background-position:center;height:100%;bottom:0;top:auto;transform:translateY(0);z-index:2}#menu a[href$="#home"]:hover:after{opacity:0}#menu a[href$="#home"][aria-current]:after{transform:translateY(100%)}#contact,#menu{box-sizing:border-box;position:fixed;display:flex;flex-direction:row;bottom:var(--menu-gap);left:0;right:0;padding:0;scroll-snap-align:none;min-height:auto}#menu:after{--size:4px;content:"";position:absolute;bottom:calc(var(--pad) - var(--size));left:0;height:var(--size);width:100%;background-color:var(--col-light);transform-origin:center;transform:translate(0);transition:opacity var(--ease-in-quick) linear,transform var(--ease-in-slow) var(--ease-out-back, ease-out),background-color var(--ease-in-slow) linear;z-index:4;visibility:hidden}#menu:has(a:hover):after{background-color:var(--col-light)}#menu:has(a[aria-current]:hover):after{background-color:var(--col-brand, var(--col-accent, var(--col-active, blue)))}#menu:has(a[aria-current]:active):after{background-color:var(--col-dark)}#menu:not(:hover):after{background-color:var(--col-brand, var(--col-accent, var(--col-active, blue)))}#menu a[aria-current]{anchor-name:--menu-anchor}#menu:not(:hover) a[aria-current]{anchor-name:--menu-anchor}#menu a:is(:hover,[aria-current]:hover){anchor-name:--menu-anchor}@supports (selector(:has(p))){#menu:after{visibility:visible}#menu a[aria-current]{text-decoration:none}}@supports (anchor-name: --poo) and (selector(:has(p))){#menu:after{position-anchor:--menu-anchor;right:calc(anchor(right) + var(--pad));left:calc(anchor(left) + var(--pad));width:auto;transition:left var(--ease-in-slow),right var(--ease-in-slow);transition-delay:calc(var(--ease-in-quick));transition-timing-function:var(--ease-out-back)}#menu a[aria-current]{text-decoration:none}}@supports (selector(:has(p))) and (not (anchor-name: --poo)){#menu:has(a[href$="#home"][aria-current]):after{transform:translate(-35.5%) scaleX(11%)}#menu:has(a[href="#content"][aria-current]):after{transform:translate(0) scaleX(24%)}#menu:has(a[href="#about"][aria-current]):after{transform:translate(35.5%) scaleX(11%)}}@media screen and (min-width: 320px){#menu a[href$="#home"]{--size:16px}#contact ul svg{--min-size:44px;--factor:.7}}@media screen and (min-width: 420px){#menu a[href$="#home"]{--size:18px}#contact ul svg{--factor:.7}}@media screen and (min-width: 640px){#menu a[href$="#home"]{--size:24px}#contact ul svg{--factor:.6}}a.shortcut-social{width:0;max-width:0%;white-space:nowrap;overflow:hidden;color:transparent;transition:max-width .45s ease-out}a.shortcut-social:focus-visible{width:auto;max-width:100%}#contact{justify-content:space-between;bottom:auto;top:0;padding:0;height:auto;margin:0;pointer-events:none}#comms{order:-1;color:var(--col-brand, var(--col-accent, var(--col-active, blue)))}#contact ul{--items:2;list-style:none;display:grid;grid-auto-flow:column;grid-template-columns:repeat(auto-fill,var(--size));grid-template-columns:repeat(var(--items),var(--size));grid-gap:0;margin:var(--pad);margin-bottom:0}#contact ul#social{--items:4}#contact ul:focus,#contact ul:hover{filter:none}#contact ul li{--y-a:-100%;pointer-events:auto;overflow:hidden;width:var(--size);height:var(--size)}#contact a{display:grid;filter:grayscale(100%) brightness(100);transition:color var(--ease-in-quick) linear filter var(--ease-in-quick) linear}#contact a:focus,#contact a:hover{filter:grayscale(0%);color:var(--fill, var(--col-brand, var(--col-accent, var(--col-active, blue))))}#contact svg{--factor:.7;display:block;width:calc(var(--size));height:auto;order:-1;box-sizing:border-box;transform:scale(calc(var(--factor, 1) * var(--scale, 1)))}#contact svg path{transition:fill var(--ease-in-slow) linear,stroke var(--ease-in-slow) linear,opacity var(--ease-in-slow) linear;fill:var(--col-light)}#contact:hover svg path{opacity:.5}#contact li a:is(:focus,:hover) svg path{opacity:1;fill:var(--fill)}.button-show-dialog{text-decoration:none;width:100%;text-align:left;margin-left:var(--pad);margin-right:var(--pad);text-wrap:pretty}.button-show-dialog:hover{text-decoration:wavy}:is(button,input,a).cta{border:1px solid currentColor;padding:var(--pad) calc(3 * var(--pad));text-decoration:none;text-align:center}:is(button,input,a).cta:hover,:is(button,input,a).cta:focus{text-decoration:none;border-style:dotted;color:var(--col-brand);border-color:var(--col-brand)}details.floating[open]>summary:after{--pad:2rem;--size:clamp(44px, 2vw, 2rem);cursor:pointer;content:"×";font-weight:900;background-color:var(--col-light);color:var(--col-dark);display:block;text-align:right;padding:0;margin:0;width:var(--size);height:var(--size);line-height:1;font-size:28px;top:0;right:0;position:absolute;z-index:1;clip-path:polygon(100% 0,0 0,100% 100%)}details{display:flex;flex-direction:column}details h5{line-height:1;border-bottom:var(--border);padding-bottom:var(--pad)}details>*:not(summary){overflow:hidden;display:grid;grid-template-rows:0fr;transition:.1s opacity linear,.25s grid-template-rows ease}details>*:not(summary)>*{overflow:hidden}details[open]>*:not(summary){grid-template-rows:1fr}@starting-style{details[open]>*:not(summary){opacity:0;grid-template-rows:0fr}}details[open],[data-page].stagger>details[open]{animation:DetailsOpen 1s ease-out 1s 1 both}details.floating{--ofset:50%;--size:var(--popup-size,5rem);--overhang:calc( -1 * var(--stroke) );--color:var(--col-brand, var(--col-accent, var(--col-active, blue)));box-sizing:border-box;text-align:center}details.floating>summary{transition:max-width var(--ease-in-slow) ease-in-out,border-radius var(--ease-in-medium) ease-out;max-width:var(--size);white-space:nowrap;overflow:hidden;cursor:pointer;padding:var(--pad);background-color:var(--color, var(--col-dark-t))}details.floating>summary::marker{content:"";display:none}details.floating>summary:before{content:"+";text-align:center;width:var(--size);display:inline-block;color:var(--col-light);transform:scale(4) rotate(90deg) translateY(-2.8%);transition:var(--ease-in-medium) transform var(--ease-out-back, ease-out),var(--ease-in-quick) opacity linear;transform-origin:center;animation:SpinMarker 5s var(--ease-out-back) 2s infinite both}details.floating:hover>summary,details.floating:focus-within>summary,details.floating:focus>summary{color:inherit;max-width:100%}details.floating:hover>summary:before,details.floating:focus-within>summary:before,details.floating:focus>summary:before{animation:ThrobMarker 3s var(--ease-out-back) 0s infinite both}details.floating[open]{top:0;left:0;min-height:100%;padding:calc(2 * var(--pad));box-sizing:border-box;text-align:left;background-color:var(--col-dark);--animation: RevealFromTop;animation:RevealFromTop var(--ease-in-medium) ease-out 0s 1 both}details.floating[open]>summary{--color:var(--col-brand, var(--col-accent, var(--col-active, blue)));max-width:none;user-select:none;cursor:auto;background-color:transparent;color:transparent;position:absolute;top:var(--overhang);left:var(--overhang);right:var(--overhang);height:calc(100% - 8px);max-height:calc(100% - 8px);z-index:-1;border:0}details.floating[open]>summary::marker{display:none;content:""}details.floating[open]>summary:before{opacity:0;inset:0;position:absolute;animation:none;padding:0;margin:0;z-index:-1;max-height:auto;height:auto}details.floating[open]>summary:before:hover,details.floating[open]>summary:before:focus{color:var(--color);outline:2px solid yellow;transform:rotate(90deg) scale(1.8) translateY(0)}details.floating[open] :nth-child(2){margin-bottom:var(--pad) 0;margin-right:1rem}@keyframes DetailsOpen{0%,99%{overflow:hidden}to{overflow-y:auto;overflow-x:hidden}}dialog:after{--pad:2rem;--size:clamp(44px, 2vw, 2rem);cursor:pointer;content:"×";font-weight:900;background-color:var(--col-light);color:var(--col-dark);display:block;text-align:right;padding:0;margin:0;width:var(--size);height:var(--size);line-height:1;font-size:28px;top:0;right:0;position:absolute;z-index:1;clip-path:polygon(100% 0,0 0,100% 100%)}dialog::backdrop{background-color:var(--col-dark-t);backdrop-filter:invert(10%) blur(3px)}dialog{display:block;max-width:calc(100vw - 4 * var(--pad));max-height:calc(100vh - 4 * var(--pad));max-height:calc(100dvh - 4 * var(--pad));margin:auto;padding:calc(2 * var(--pad)) calc(3 * var(--pad)) calc(4 * var(--pad)) calc(3 * var(--pad));color:inherit;box-sizing:border-box;border:var(--border);width:fit-content;height:fit-content;overflow:hidden}dialog:after{pointer-events:none}dialog>*{z-index:1}dialog :is(h3,h4,h5,h6){margin-bottom:var(--pad)}dialog[open]{background-color:var(--col-dark);position:fixed;top:0;left:0;right:0;animation:RevealFromTop var(--ease-in-medium) ease-out 0s 1 both}form[method=dialog]{position:absolute;inset:0;z-index:-1;opacity:0}form[method=dialog] button[type=submit]{width:100%;height:100%;user-select:none}svg{fill:currentColor;max-width:100%;max-height:100%;height:auto;position:relative}svg.logo{--y:-100%;display:block;margin:0 auto}svg.logo:hover{fill:var(--col-light);stroke:var(--col-dark)}.source-code{position:absolute;bottom:calc(1.5 * var(--pad));right:calc(1.5 * var(--pad));z-index:1;max-width:5ch;font-size:40%;min-width:44px;min-height:44px;border-radius:999px;display:flex;text-align:center;justify-content:center;align-items:center;text-align:right;color:transparent;text-shadow:none;box-sizing:border-box;border:var(--stroke) solid transparent;background:url("data:image/svg+xml,%3csvg%20version='1.1'%20id='Capa_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20width='44px'%20height='44px'%20viewBox='0%200%20438.549%20438.549'%20style='enable-background:new%200%200%20438.549%20438.549;'%20xml:space='preserve'%3e%3cg%3e%3cpath%20d='M409.132,114.573c-19.608-33.596-46.205-60.194-79.798-79.8C295.736,15.166,259.057,5.365,219.271,5.365%20c-39.781,0-76.472,9.804-110.063,29.408c-33.596,19.605-60.192,46.204-79.8,79.8C9.803,148.168,0,184.854,0,224.63%20c0,47.78,13.94,90.745,41.827,128.906c27.884,38.164,63.906,64.572,108.063,79.227c5.14,0.954,8.945,0.283,11.419-1.996%20c2.475-2.282,3.711-5.14,3.711-8.562c0-0.571-0.049-5.708-0.144-15.417c-0.098-9.709-0.144-18.179-0.144-25.406l-6.567,1.136%20c-4.187,0.767-9.469,1.092-15.846,1c-6.374-0.089-12.991-0.757-19.842-1.999c-6.854-1.231-13.229-4.086-19.13-8.559%20c-5.898-4.473-10.085-10.328-12.56-17.556l-2.855-6.57c-1.903-4.374-4.899-9.233-8.992-14.559%20c-4.093-5.331-8.232-8.945-12.419-10.848l-1.999-1.431c-1.332-0.951-2.568-2.098-3.711-3.429c-1.142-1.331-1.997-2.663-2.568-3.997%20c-0.572-1.335-0.098-2.43,1.427-3.289c1.525-0.859,4.281-1.276,8.28-1.276l5.708,0.853c3.807,0.763,8.516,3.042,14.133,6.851%20c5.614,3.806,10.229,8.754,13.846,14.842c4.38,7.806,9.657,13.754,15.846,17.847c6.184,4.093,12.419,6.136,18.699,6.136%20c6.28,0,11.704-0.476,16.274-1.423c4.565-0.952,8.848-2.383,12.847-4.285c1.713-12.758,6.377-22.559,13.988-29.41%20c-10.848-1.14-20.601-2.857-29.264-5.14c-8.658-2.286-17.605-5.996-26.835-11.14c-9.235-5.137-16.896-11.516-22.985-19.126%20c-6.09-7.614-11.088-17.61-14.987-29.979c-3.901-12.374-5.852-26.648-5.852-42.826c0-23.035,7.52-42.637,22.557-58.817%20c-7.044-17.318-6.379-36.732,1.997-58.24c5.52-1.715,13.706-0.428,24.554,3.853c10.85,4.283,18.794,7.952,23.84,10.994%20c5.046,3.041,9.089,5.618,12.135,7.708c17.705-4.947,35.976-7.421,54.818-7.421s37.117,2.474,54.823,7.421l10.849-6.849%20c7.419-4.57,16.18-8.758,26.262-12.565c10.088-3.805,17.802-4.853,23.134-3.138c8.562,21.509,9.325,40.922,2.279,58.24%20c15.036,16.18,22.559,35.787,22.559,58.817c0,16.178-1.958,30.497-5.853,42.966c-3.9,12.471-8.941,22.457-15.125,29.979%20c-6.191,7.521-13.901,13.85-23.131,18.986c-9.232,5.14-18.182,8.85-26.84,11.136c-8.662,2.286-18.415,4.004-29.263,5.146%20c9.894,8.562,14.842,22.077,14.842,40.539v60.237c0,3.422,1.19,6.279,3.572,8.562c2.379,2.279,6.136,2.95,11.276,1.995%20c44.163-14.653,80.185-41.062,108.068-79.226c27.88-38.161,41.825-81.126,41.825-128.906%20C438.536,184.851,428.728,148.168,409.132,114.573z'/%3e%3c/g%3e%3c/svg%3e") no-repeat center center;background-size:contain;animation:Fade var(--ease-in-quick) both 1.8s 1}.source-code:before{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4cHgiIGhlaWdodD0iMTI4cHgiIHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICA8ZGVmcz4KICAgIDxtYXNrIGlkPSJoZWFkIj4KICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBmaWxsPSJ3aGl0ZSIvPgogICAgICAgIAoJCTxwYXRoIAoJCSBkPSJNMTMuMDc5OTg3OCwyMy4wNzg4NjUzIEM5LjUxOTk4Nzc5LDIyLjY3ODg2NTMgNS43OTk5ODc3OSwyMS4yOTg4NjUzIDUuNzk5OTg3NzksMTUuMTc4ODY1MyBDNS43OTk5ODc3OSwxMy40Mzg4NjUzIDYuNDE5OTg3NzksMTEuOTk4ODY1MyA3LjQzOTk4Nzc5LDEwLjg3ODg2NTMgQzcuMjc5OTg3NzksMTAuNDc4ODY1MyA2LjcxOTk4Nzc5LDguODM4ODY1MjkgNy41OTk5ODc3OSw2LjYzODg2NTI5IEM3LjU5OTk4Nzc5LDYuNjM4ODY1MjkgOC45Mzk5ODc3OSw2LjIxODg2NTI5IDExLjk5OTk4NzgsOC4yNzg4NjUyOSBDMTMuMjc5OTg3OCw3LjkxODg2NTI5IDE0LjYzOTk4NzgsNy43Mzg4NjUyOSAxNS45OTk5ODc4LDcuNzM4ODY1MjkgQzE3LjM1OTk4NzgsNy43Mzg4NjUyOSAxOC43MTk5ODc4LDcuOTE4ODY1MjkgMTkuOTk5OTg3OCw4LjI3ODg2NTI5IEMyMy4wNTk5ODc4LDYuMTk4ODY1MjkgMjQuMzk5OTg3OCw2LjYzODg2NTI5IDI0LjM5OTk4NzgsNi42Mzg4NjUyOSBDMjUuMjc5OTg3OCw4LjgzODg2NTI5IDI0LjcxOTk4NzgsMTAuNDc4ODY1MyAyNC41NTk5ODc4LDEwLjg3ODg2NTMgQzI1LjU3OTk4NzgsMTEuOTk4ODY1MyAyNi4xOTk5ODc4LDEzLjQxODg2NTMgMjYuMTk5OTg3OCwxNS4xNzg4NjUzIEMyNi4xOTk5ODc4LDIxLjMxODg2NTMgMjIuNDU5OTg3OCwyMi42Nzg4NjUzIDE4Ljg5OTk4NzgsMjMuMDc4ODY1MyBDMTguMTQwMDEyMywyMy4zMzc0Mzk5IDEzLjc2MTM1MTMsMjMuMTI0NjMxOSAxMy4wNzk5ODc4LDIzLjA3ODg2NTMgWiIKICAgICAgICAgZmlsbD0iYmxhY2siIAoJCSB0cmFuc2Zvcm09J3JvdGF0ZSgwKScKCQk+ICAKCiAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0KICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIKICAgICAgICAgIHR5cGU9InJvdGF0ZSIKICAgICAgICAgIGZyb209IjAgMTYgMjEiCiAgICAgICAgICB0bz0iMTUgMTYgMjEiCiAgICAgICAgICBiZWdpbj0iMHMiCiAgICAgICAgICBkdXI9IjEuNnMiCiAgICAgICAgICB2YWx1ZXM9IjAgMTYgMjE7MTUgMTYgMjE7MCAxNS41IDIxOy0xNSAxNiAyMTswIDE2IDIxIiAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICBrZXlTcGxpbmVzPSIKICAgICAgICAgICAgMCAwIDAuNSAxOwogICAgICAgICAgICAwLjUgMCAxIDE7CiAgICAgICAgICAgIDAgMCAwLjUgMTsKICAgICAgICAgICAgMC41IDAgMSAxIgogICAgICAgICAga2V5VGltZXM9IjA7MC4yNTswLjU7MC43NTsxIgogICAgICAgICAgY2FsY01vZGU9InNwbGluZSIKICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIgogICAgICAgIC8+CiAgICAgIDwvcGF0aD4gICAgICAKICAgIDwvbWFzaz4KICAgIDxtYXNrIGlkPSJhcm0iPgogICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9IndoaXRlIi8+CiAgICAgIDxwYXRoIGQ9Ik02LjY0LDI1LjU2IEM2LjQ2LDI1LjEgNS42OCwyMy42OCA1LDIzLjMgQzQuNDQsMjMgMy42NCwyMi4yNiA0Ljk4LDIyLjI0IEM2LjI0LDIyLjIyIDcuMTQsMjMuNCA3LjQ0LDIzLjg4IEM4Ljg4LDI2LjMgNi45NiwyNi40NiA2LjY0LDI1LjU2IFoiICAgICAgICAgICAKICAgICAgICBmaWxsPSJibGFjayIgdHJhbnNmb3JtPSJyb3RhdGUoMCkiPiAgICAgICAgICAgICAgICAKICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybQogICAgICAgICAgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIgogICAgICAgICAgdHlwZT0icm90YXRlIgogICAgICAgICAgZnJvbT0iMCA3LjUgMjUuNSIKICAgICAgICAgIHRvPSIxNCA3LjUgMjUuNSIKICAgICAgICAgIGJlZ2luPSIwcyIKICAgICAgICAgIGR1cj0iMC40cyIKICAgICAgICAgIHZhbHVlcz0iMCAxMCAyNS41Oy0xNCA3LjUgMjUuNTswIDcuNSAyNS41OyIKICAgICAgICAgIGtleVRpbWVzPSIwOzAuNTsxIgogICAgICAgICAgY2FsY01vZGU9ImxpbmVhciIKICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIgogICAgICAgIC8+ICAgICAgICAKICAgICAgPC9wYXRoPiAgICAgIAogICAgPC9tYXNrPiAgICAKICA8L2RlZnM+CiAgPGcgaWQ9ImxvYWRlciIgbWFzaz0idXJsKCNoZWFkKSI+CiAgICAgICAgPHBhdGggCgkJCWQ9Ik0wLDE2IEMwLDIzLjA4IDQuNTgsMjkuMDYgMTAuOTQsMzEuMTggQzExLjc0LDMxLjMyIDEyLjA0LDMwLjg0IDEyLjA0LDMwLjQyIEMxMi4wNCwzMC4wNCAxMi4wMiwyOC43OCAxMi4wMiwyNy40NCBDOC4wMjk3MDIwMywyNy42NTA3Mzc3IDYuOTYsMjYuNDYgNi42NCwyNS41NiBDNi40NiwyNS4xIDcuMTQ0Njk2MjIsMjQuODQzMjY0IDcuNDg0NTEyMDQsMjQuNTE5MTc3NCBDOS40OTA4NjY1MSwyNi40MjU3NTMxIDExLjE4LDI1LjYyIDEyLjEsMjUuMiBDMTIuMjQsMjQuMTYgMTIuNjYsMjMuNDYgMTMuMTIsMjMuMDYgQzEzLjU4LDIyLjY2IDE4LjQyNjg0ODksMjIuNjgwNDg1NiAxOC45NCwyMy4wNiBDMTkuNTIsMjMuNTYgMjAuMDIsMjQuNTIgMjAuMDIsMjYuMDIgQzIwLjAyLDI4LjE2IDIwLDI5Ljg4IDIwLDMwLjQyIEMyMCwzMC44NCAyMC4zLDMxLjM0IDIxLjEsMzEuMTggQzI3LjQyLDI5LjA2IDMyLDIzLjA2IDMyLDE2IEMzMiw3LjE2IDI0Ljg0LDAgMTYsMCBDNy4xNiwwIDAsNy4xNiAwLDE2IFoiIAogICAgICAgICAgCWlkPSJib2R5IiBmaWxsPSIjZmZmZmZmIiBtYXNrPSJ1cmwoI2FybSkiCgkJPjwvcGF0aD4gICAgCiAgPC9nPgo8L3N2Zz4=) no-repeat center center;content:"";visibility:hidden}#projects .project-link:hover~.source-code,.source-code:hover{background:var(--col-dark) url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4cHgiIGhlaWdodD0iMTI4cHgiIHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICA8ZGVmcz4KICAgIDxtYXNrIGlkPSJoZWFkIj4KICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBmaWxsPSJ3aGl0ZSIvPgogICAgICAgIAoJCTxwYXRoIAoJCSBkPSJNMTMuMDc5OTg3OCwyMy4wNzg4NjUzIEM5LjUxOTk4Nzc5LDIyLjY3ODg2NTMgNS43OTk5ODc3OSwyMS4yOTg4NjUzIDUuNzk5OTg3NzksMTUuMTc4ODY1MyBDNS43OTk5ODc3OSwxMy40Mzg4NjUzIDYuNDE5OTg3NzksMTEuOTk4ODY1MyA3LjQzOTk4Nzc5LDEwLjg3ODg2NTMgQzcuMjc5OTg3NzksMTAuNDc4ODY1MyA2LjcxOTk4Nzc5LDguODM4ODY1MjkgNy41OTk5ODc3OSw2LjYzODg2NTI5IEM3LjU5OTk4Nzc5LDYuNjM4ODY1MjkgOC45Mzk5ODc3OSw2LjIxODg2NTI5IDExLjk5OTk4NzgsOC4yNzg4NjUyOSBDMTMuMjc5OTg3OCw3LjkxODg2NTI5IDE0LjYzOTk4NzgsNy43Mzg4NjUyOSAxNS45OTk5ODc4LDcuNzM4ODY1MjkgQzE3LjM1OTk4NzgsNy43Mzg4NjUyOSAxOC43MTk5ODc4LDcuOTE4ODY1MjkgMTkuOTk5OTg3OCw4LjI3ODg2NTI5IEMyMy4wNTk5ODc4LDYuMTk4ODY1MjkgMjQuMzk5OTg3OCw2LjYzODg2NTI5IDI0LjM5OTk4NzgsNi42Mzg4NjUyOSBDMjUuMjc5OTg3OCw4LjgzODg2NTI5IDI0LjcxOTk4NzgsMTAuNDc4ODY1MyAyNC41NTk5ODc4LDEwLjg3ODg2NTMgQzI1LjU3OTk4NzgsMTEuOTk4ODY1MyAyNi4xOTk5ODc4LDEzLjQxODg2NTMgMjYuMTk5OTg3OCwxNS4xNzg4NjUzIEMyNi4xOTk5ODc4LDIxLjMxODg2NTMgMjIuNDU5OTg3OCwyMi42Nzg4NjUzIDE4Ljg5OTk4NzgsMjMuMDc4ODY1MyBDMTguMTQwMDEyMywyMy4zMzc0Mzk5IDEzLjc2MTM1MTMsMjMuMTI0NjMxOSAxMy4wNzk5ODc4LDIzLjA3ODg2NTMgWiIKICAgICAgICAgZmlsbD0iYmxhY2siIAoJCSB0cmFuc2Zvcm09J3JvdGF0ZSgwKScKCQk+ICAKCiAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0KICAgICAgICAgIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIKICAgICAgICAgIHR5cGU9InJvdGF0ZSIKICAgICAgICAgIGZyb209IjAgMTYgMjEiCiAgICAgICAgICB0bz0iMTUgMTYgMjEiCiAgICAgICAgICBiZWdpbj0iMHMiCiAgICAgICAgICBkdXI9IjEuNnMiCiAgICAgICAgICB2YWx1ZXM9IjAgMTYgMjE7MTUgMTYgMjE7MCAxNS41IDIxOy0xNSAxNiAyMTswIDE2IDIxIiAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICBrZXlTcGxpbmVzPSIKICAgICAgICAgICAgMCAwIDAuNSAxOwogICAgICAgICAgICAwLjUgMCAxIDE7CiAgICAgICAgICAgIDAgMCAwLjUgMTsKICAgICAgICAgICAgMC41IDAgMSAxIgogICAgICAgICAga2V5VGltZXM9IjA7MC4yNTswLjU7MC43NTsxIgogICAgICAgICAgY2FsY01vZGU9InNwbGluZSIKICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIgogICAgICAgIC8+CiAgICAgIDwvcGF0aD4gICAgICAKICAgIDwvbWFzaz4KICAgIDxtYXNrIGlkPSJhcm0iPgogICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9IndoaXRlIi8+CiAgICAgIDxwYXRoIGQ9Ik02LjY0LDI1LjU2IEM2LjQ2LDI1LjEgNS42OCwyMy42OCA1LDIzLjMgQzQuNDQsMjMgMy42NCwyMi4yNiA0Ljk4LDIyLjI0IEM2LjI0LDIyLjIyIDcuMTQsMjMuNCA3LjQ0LDIzLjg4IEM4Ljg4LDI2LjMgNi45NiwyNi40NiA2LjY0LDI1LjU2IFoiICAgICAgICAgICAKICAgICAgICBmaWxsPSJibGFjayIgdHJhbnNmb3JtPSJyb3RhdGUoMCkiPiAgICAgICAgICAgICAgICAKICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybQogICAgICAgICAgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIgogICAgICAgICAgdHlwZT0icm90YXRlIgogICAgICAgICAgZnJvbT0iMCA3LjUgMjUuNSIKICAgICAgICAgIHRvPSIxNCA3LjUgMjUuNSIKICAgICAgICAgIGJlZ2luPSIwcyIKICAgICAgICAgIGR1cj0iMC40cyIKICAgICAgICAgIHZhbHVlcz0iMCAxMCAyNS41Oy0xNCA3LjUgMjUuNTswIDcuNSAyNS41OyIKICAgICAgICAgIGtleVRpbWVzPSIwOzAuNTsxIgogICAgICAgICAgY2FsY01vZGU9ImxpbmVhciIKICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIgogICAgICAgIC8+ICAgICAgICAKICAgICAgPC9wYXRoPiAgICAgIAogICAgPC9tYXNrPiAgICAKICA8L2RlZnM+CiAgPGcgaWQ9ImxvYWRlciIgbWFzaz0idXJsKCNoZWFkKSI+CiAgICAgICAgPHBhdGggCgkJCWQ9Ik0wLDE2IEMwLDIzLjA4IDQuNTgsMjkuMDYgMTAuOTQsMzEuMTggQzExLjc0LDMxLjMyIDEyLjA0LDMwLjg0IDEyLjA0LDMwLjQyIEMxMi4wNCwzMC4wNCAxMi4wMiwyOC43OCAxMi4wMiwyNy40NCBDOC4wMjk3MDIwMywyNy42NTA3Mzc3IDYuOTYsMjYuNDYgNi42NCwyNS41NiBDNi40NiwyNS4xIDcuMTQ0Njk2MjIsMjQuODQzMjY0IDcuNDg0NTEyMDQsMjQuNTE5MTc3NCBDOS40OTA4NjY1MSwyNi40MjU3NTMxIDExLjE4LDI1LjYyIDEyLjEsMjUuMiBDMTIuMjQsMjQuMTYgMTIuNjYsMjMuNDYgMTMuMTIsMjMuMDYgQzEzLjU4LDIyLjY2IDE4LjQyNjg0ODksMjIuNjgwNDg1NiAxOC45NCwyMy4wNiBDMTkuNTIsMjMuNTYgMjAuMDIsMjQuNTIgMjAuMDIsMjYuMDIgQzIwLjAyLDI4LjE2IDIwLDI5Ljg4IDIwLDMwLjQyIEMyMCwzMC44NCAyMC4zLDMxLjM0IDIxLjEsMzEuMTggQzI3LjQyLDI5LjA2IDMyLDIzLjA2IDMyLDE2IEMzMiw3LjE2IDI0Ljg0LDAgMTYsMCBDNy4xNiwwIDAsNy4xNiAwLDE2IFoiIAogICAgICAgICAgCWlkPSJib2R5IiBmaWxsPSIjZmZmZmZmIiBtYXNrPSJ1cmwoI2FybSkiCgkJPjwvcGF0aD4gICAgCiAgPC9nPgo8L3N2Zz4=) no-repeat center center;background-size:contain}.source-code:hover,.source-code:focus{outline:none;border-color:var(--col-brand, currentcolor);background-color:var(--col-brand, currentcolor)}svg[data-icon=youtube-playlist]{transform:scale(.83)}.logo-photosynth{--animation:RevealViaCircle;--scale:1.4;transform:scale(var(--scale, 1));transition:color var(--ease-in-slow) linear}.logo-photosynth:hover{color:var(--col-brand);transition-duration:var(--ease-in-quick)}@media screen and (min-width: 520px){.logo-photosynth{--scale:2}}.logo-twitter{color:#1da1f3}.logo-github{color:#1b1817;stroke:#fff;stroke-width:1px}.logo-github path{stroke:#fff;stroke-width:1px}.logo-pintrest{color:#bd081b}.logo-youtube{color:red}.logo-patreon{color:#f96854}@keyframes octocat-wave{0%{transform:rotate(0)}20%{transform:rotate(-25deg)}40%{transform:rotate(10deg)}60%{transform:rotate(-25deg)}80%{transform:rotate(10deg)}to{transform:rotate(0)}}:root{--dark-blue:rgba(1, 112, 186,1);--light-blue:rgba(41, 169, 223,1);--white-fade:rgba(255,255,255, .15);--white-fade2:rgba(255,255,255, .7);--logo-duration:2s;--gloss-throw:104%;--logo-tilt:45deg}#logo-dz{--size:clamp(72px, 1rem , 33vmin );border-radius:50%;overflow:hidden;z-index:-1;margin:0;height:var(--size);width:auto;stroke-width:10px;stroke:var(--stroke, var(--col-light-t));fill:var(--col-dark-t)}#logo-dz path{stroke-width:20px}.logo{--fill:transparent;--stroke:var(--col-accent);--logo-size:1024px;--path-length:3814.4321289063;--stroke-width:30px;--draw:100;--percent:100;position:relative;overflow:hidden;border-radius:104%}.logo:hover:after{opacity:1;animation:bg-shift calc(var(--logo-duration) / 2) ease-in-out infinite alternate}.logo:hover svg{animation:Tilt var(--logo-duration) ease-in-out infinite;animation:Zoom var(--logo-duration) ease-in-out infinite}.logo:hover path:last-child{--stroke:orange;animation:Dashes 9s linear 0s infinite alternate,DashLengths 7s linear 0s infinite alternate}.logo:active:after{animation:bg-shift calc(var(--logo-duration) / 2) ease-in-out infinite alternate}.logo:active svg path:last-child{--stroke:blue;animation:Dashed 9s linear 0s infinite alternate}.logo{border-radius:50%;overflow:hidden;shape-outside:circle(50%);clip-path:circle(50% at 50% 50%);max-width:100%;max-height:100%;height:auto;position:relative;z-index:2}.logo path{fill:var(--fill);stroke:var(--stroke);stroke-opacity:1;stroke-width:var(--stroke-width)}.logo path:first-child{stroke-dasharray:40 30;stroke-miterlimit:3;animation:none;animation:Dot 11s var(--ease-out-back) 0s both infinite alternate,Round 2s ease-in-out 0s both infinite alternate}.logo path:last-child{--fill:transparent;--stroke:var(--col-light);stroke-dasharray:calc(var(--percent, 1) / 100 * var(--path-length));stroke-dashoffset:calc(var(--draw, 1) / 100 * var(--path-length));transition:fill var(--ease-in-quick) linear,stroke var(--ease-in-quick) linear;animation:LogoProgress 9s linear 2s both infinite alternate-reverse;stroke-miterlimit:3}.logo text{font-size:4rem;pointer-events:none;user-select:none}.logo text textPath{pointer-events:none}.logo-animated{position:fixed;inset:0;filter:none}.logo-animated path{fill:#ff0;stroke:red;stroke-width:21px;stroke-dasharray:10,10;animation:DashOffset 9s linear 0s both infinite,DashLengths 13s linear 0s both infinite}.loading .logo{--duration:1s;--progress:0}.loading .logo svg path:first-child{--stroke:pink;animation:LogoGuage var(--duration) linear calc(-1 * var(--progress) * var(--duration)) 1 both}.loading .logo svg path:last-child{--stroke:green;animation:LogoProgress var(--duration) ease-in-out calc(-1 * var(--progress) * var(--duration)) 1 both}.logo:hover .logo path:last-child,#home:is(:target,:focus,:focus-within,:hover) .logo path:last-child{--fill:var(--col-dark-t);animation:DashLengths 13s var(--ease-out-back) 2s both infinite alternate,Fill 13s linear 2s both 1}@keyframes LogoProgress{0%,33%{stroke-dashoffset:var(--path-length)}66%,to{stroke-dashoffset:0}}@keyframes LogoGuage{0%{opacity:0}50%{opacity:1}to{opacity:1}}@keyframes DashOffset{0%{stroke-dashoffset:var(--path-length)}to{stroke-dashoffset:0}}@keyframes DashLengths{0%{stroke-dasharray:var(--path-length)}66%,to{stroke-dasharray:0}}@keyframes Fill{0%{fill:transparent}66%,to{fill:var(--fill)}}@keyframes Dashed{0%{stroke-linecap:"circle";fill:transparent;stroke-dashoffset:var(--path-length);stroke-dasharray:var(--path-length)}39%{fill:#fff;stroke-dasharray:var(--path-length);stroke-dashoffset:0}to{fill:#fff;stroke-dasharray:0;stroke-dashoffset:0}}@keyframes MarchingAnts{0%{stroke-dashoffset:calc(.9 * var(--path-length))}to{stroke-dashoffset:0}}@keyframes Dot{0%{stroke-dasharray:1 1}33%{stroke-dasharray:10 30}to{stroke-dasharray:40 30}}@keyframes Round{0%{stroke-miterlimit:0}}@keyframes Dash{0%{fill:transparent;stroke-dashoffset:var(--path-length)}50%{fill:#ffcfcf}to{fill:#fff;stroke-dashoffset:0}}@keyframes Zoom{0%{transform:perspective(70px) rotateY(var(--logo-tilt))}50%{transform:perspective(700px) rotateY(calc(-1 * var(--logo-tilt)))}to{transform:perspective(70px) rotateY(var(--logo-tilt))}}@keyframes Tilt{0%{transform:perspective(700px) rotateY(var(--logo-tilt))}50%{transform:perspective(700px) rotateY(calc(-1 * var(--logo-tilt)))}to{transform:perspective(700px) rotateY(var(--logo-tilt))}}@keyframes bg-shift{0%{transform:translate(calc(-1 * var(--gloss-throw)))}to{transform:translate(var(--gloss-throw))}}.projects{--popup-size:clamp(26px, 9vmin, 38px) ;box-sizing:border-box;position:relative;display:grid;max-height:100%;min-width:100%;min-height:100%}.project{max-height:var(--page-height, 100%);border:var(--border)}.project header{flex-grow:1;display:grid;grid-auto-columns:100%;grid-auto-flow:column;overflow:auto;position:relative}.project header a svg{margin:auto;max-height:max(var(--viewport-height) / 5,44px);height:100%;filter:drop-shadow(var(--inner-shadow)) drop-shadow(var(--drop-shadow))}.project header:hover~details>summary{border-color:var(--col-light)}.project details{overflow:auto;overflow-x:clip;animation:Fade var(--ease-in-slow) var(--ease-out-back, ease-out) 1s var(--ease-in-slow) 1 both reverse;right:calc(2 * var(--pad));top:calc(2 * var(--pad));width:calc(100% - 4 * var(--pad));position:absolute;display:flex;flex-direction:column;z-index:1}.project details h5{text-align:left}.project details button{margin-top:auto}.project details svg{float:left;color:var(--col-brand, var(--col-accent, var(--col-active, blue)));max-width:56px;height:100%;width:auto;margin:auto;margin-right:calc(2 * var(--pad));margin-top:4px}.project details>summary{border-radius:99px;border:var(--border);border-color:transparent}.project details>summary:before{margin-right:23px}.project details[open]{width:100%;top:0;text-align:left;max-height:100%;background-size:contain}.project details[open]>summary{border-radius:0;padding:0;margin:0}.project details[open] button{margin-top:var(--pad)}.project details[open] button,.project details[open] p{position:relative;z-index:3}.project details[open] p{pointer-events:none}.project details[open] a{pointer-events:auto;margin:var(--pad) auto;display:block}.project ul.tech{--scale:1.1;flex-grow:0;flex-shrink:1;list-style:none;display:flex;flex-wrap:wrap;flex-direction:column;gap:var(--pad);padding:var(--pad);padding-top:0;box-sizing:border-box;text-transform:lowercase;justify-content:space-between}.project ul.tech li{--font-scale: var(--s-3);--line-height: 1;text-align:center;text-wrap:balance}.project ul.tech li:first-of-type{text-align:left}.project ul.tech li:last-of-type{text-align:right}.project ul.tech footer{margin-top:auto;border-top:var(--border);align-items:center;width:100%}.project a.project-link{--index:-1.5;--scale: 1.02;overflow:hidden;display:grid;grid-template-rows:auto auto auto;gap:var(--pad);padding:var(--pad) calc(1 * var(--popup-size));margin:var(--pad);background-color:var(--col-light);color:var(--col-dark);background-image:linear-gradient(0deg,#fff,#fff0),var(--noise);flex-shrink:1;flex-grow:1;flex-basis:clamp(5rem,30vh,33%);transition:color var(--ease-in-medium) linear,background-color var(--ease-in-quick) linear;position:relative;box-sizing:border-box;border:var(--border);display:flex;flex-direction:column;align-items:center;justify-content:space-around}.project a.project-link:before{--gap:1px;content:"";position:absolute;top:var(--gap);right:var(--gap);bottom:var(--gap);left:var(--gap);display:block;opacity:.1;background-image:linear-gradient(var(--col-brand, var(--col-accent, var(--col-active, blue))),rgba(255,255,255,.5))}.project a.project-link[data-page-active]{animation:Reveal var(--ease-in-slow) var(--ease-out-back, ease-out) 0s 1 both}.project a.project-link>h3{align-self:end;line-height:1}.project a.project-link>*:last-child{align-self:start}.project a.project-link:is(:hover,:focus){border-top-color:color-mix(in srgb,var(--col-light),transparent 10%);background-color:var(--col-dark);background-image:linear-gradient(0deg,hsla(var(--hue-accent),99%,0%,100%),hsla(var(--hue-accent),99%,0%,50%)),var(--noise);color:var(--col-light)}#project-cravatomatic a.project-link{display:block}.layer-scroller ol.toc{position:sticky;left:0;z-index:3;display:flex;flex-direction:column;justify-content:flex-end}.layer-scroller>ol{display:grid;overflow:hidden;overflow-x:scroll;scroll-behavior:smooth;scroll-snap-type:x mandatory;grid-auto-columns:66%;grid-auto-flow:column;gap:3%}.layer-scroller>ol:before,.layer-scroller>ol:after{content:"";padding-left:33%}.layer-scroller>ol li{position:sticky;left:0;scroll-snap-align:start}.layer-scroller>ol ol.toc:hover~li{position:relative;left:auto}summary{cursor:pointer}summary::marker{margin-right:calc(2 * var(--pad));content:"+";transition:90ms transform ease-out}details[open] summary::marker{transform:rotate(90deg)}details summary::-webkit-details-marker{display:none}.youtube svg{--scale:.86}.youtube svg path{--fill:#FF0000}.twitter svg path{--fill:#1da1f3}.github svg{--scale:.84;--shadow-color:255,255,255}.github:hover svg{--shadow-color:255,255,255}.github svg path{--fill:#1B1817}.pintrest svg path{--fill:#bd081b}.patreon svg :is(circle,path){--fill:#f96854}*{scrollbar-width:thin;scrollbar-color:var(--col-light)}*::-webkit-scrollbar{width:12px}*::-webkit-scrollbar-track{background-color:var(--col-dark)}*::-webkit-scrollbar-thumb{background-color:var(--col-dark);border-radius:99px;border:3px solid var(--col-light)}ul li,ol li,header *,footer *{text-shadow:0 -1px 1px var(--col-light-t),0 1px 1px var(--col-text-sheen),0 2px 2px var(--col-text-sheen),0 4px 4px var(--col-text-sheen),0 6px 8px var(--col-text-sheen),0 8px 16px var(--col-text-sheen)}a.project-link,a.project,#contact{filter:drop-shadow(0 4px 4px var(--col-text-sheen))}svg{filter:var(--shadow-filter)}.mc-field-group{display:flex;flex-direction:column;grid-area:input;gap:var(--pad)}.mc-field-group label{font-size:66%;text-transform:lowercase}.mc-field-group .helper_text{position:absolute;top:0;left:0;right:0;z-index:-1}#mc_embed_signup_scroll{display:grid;grid-template-columns:1fr auto;grid-template-areas:"label" "input" "button";padding:var(--pad);position:relative;row-gap:var(--pad);font-size:75%}#mc_embed_signup_scroll h6{grid-area:label}#mc_embed_signup_scroll input{padding:var(--pad);width:100%}#mc_embed_signup_scroll .optionalParent{grid-area:button;display:flex;width:100%}#mc_embed_signup_scroll .optionalParent .foot{margin-top:auto;width:100%}#mc_embed_signup_scroll .optionalParent .foot input{margin:0 auto;width:100%;border:var(--stroke) solid var(--col-light);text-transform:lowercase}#mc_embed_signup_scroll .optionalParent .brandingLogo{height:0;padding:0;margin:0;overflow:hidden}#mc_embed_signup_scroll .optionalParent .brandingLogo:after{--size:22px;content:"";background-image:url(/_astro/mailchimp.B48qXgO5.svg);background-repeat:no-repeat;background-position:center;position:absolute;bottom:calc(.4rem + var(--pad));right:var(--pad);display:block;width:var(--size);height:var(--size);grid-area:input;opacity:.6}@media screen and (min-width: 520px){#mc_embed_signup_scroll{grid-template-areas:"label label" "input button" ". .";column-gap:var(--pad);font-size:80%}}@media screen and (min-height: 780px){#mc_embed_signup_scroll{font-size:100%}}.hide:not(:focus):not(:active){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;display:block!important}ul.hide-text li>*,:is(span,a).hide-text{font-size:0;user-select:none}@media screen and (min-width: 520px){.associates{--min-size:44px;--max-size:160px}#projects a.project{padding:var(--pad) calc(2 * var(--popup-size))}}@media screen and (min-width: 620px) and (max-height: 920px){.associates{--min-size:44px;--max-size:180px;grid-template-columns:repeat(auto-fill,minmax(var(--size),1fr));contain:layout inline-size}}@media screen and (min-width: 333px){#projects ul.tech{flex-wrap:nowrap;flex-direction:row}}@media screen and (min-width: 820px){#projects a.project{--scale: 1;grid-template-rows:auto 1fr auto}#projects a.project>h3,#projects a.project>*:last-child{align-self:center}#projects footer{margin-top:auto;width:100%;display:flex;align-items:center;border-top:var(--border)}.associates{--min-size:55px;--max-size:140px;border-left:var(--border)}}@media screen and (min-width: 1080px){.associates{--min-size:60px;--max-size:180px}}@media screen and (min-height: 420px){#link-about{gap:0;flex-wrap:wrap;display:flex;flex-direction:row;align-items:center;text-align:center;white-space:nowrap}#logo-dz{--size:clamp(100px, 100% , 33vmin );margin:auto;margin:0 calc((100% - var(--size)) / 2);height:auto;width:var(--size)}}@media screen and (min-height: 1024px) and (min-width: 1024px){#projects footer{align-items:flex-end}#projects footer h6{writing-mode:vertical-lr;width:fit-content;max-height:14ch}.associates{--min-size:88px;--max-size:248px}}@keyframes RotateHue{to{--hue:360}}@keyframes Hide{to{opacity:0}}@keyframes Reveal{0%{--angle:20%;opacity:0;clip-path:polygon(calc(50% - var(--angle, 0%)) 0%,calc(50% + var(--angle, 0%)) 100%,calc(50% + var(--angle, 0%)) 100%,calc(50% - var(--angle, 0%)) 0%)}to{clip-path:polygon(0 0,0 100%,100% 100%,100% 0)}}@keyframes Fade{0%{opacity:0;transform:translate(var(--x-a, 0)) translateY(var(--y-a, 0))}to{opacity:1;transform:translate(var(--x-b, 0)) translateY(var(--y-b, 0))}}@keyframes OffsetDistance{0%{fill:red;offset-distance:0%;motion-offset:0%}to{fill:green;offset-distance:100%;motion-offset:100%}}@keyframes RevealViaCircle{0%{clip-path:circle(.1)}to{clip-path:circle(499)}}@keyframes RevealFromTop{0%{clip-path:polygon(0 0,100% 0,100% 0,0 0)}to{clip-path:polygon(0 0,100% 0,100% 100%,0% 100%)}}@keyframes TranslateYFrom{0%{transform:translateY(var(--y),0)}}@keyframes TranslateYTo{to{transform:translateY(var(--y),0)}}@keyframes ThrobMarker{0%{transform:scale(4) translateY(-2.8%)}33%,50%{transform:scale(4.4) translateY(-2.8%)}}@keyframes SpinMarker{0%{transform:scale(4) rotate(0) translateY(-2.8%)}33%,50%{transform:scale(3.7) rotate(90deg) translateY(-2.8%)}to{transform:scale(4) rotate(90deg) translateY(-2.8%)}}:root{--delay:0;--overlap:.85}details{--index:-1}[data-page]{opacity:0}[data-page-active]{opacity:1}details>*:nth-child(0),.stagger>*:nth-child(0){--i:-1}details>*:nth-child(1),.stagger>*:nth-child(1){--i:0}details>*:nth-child(2),.stagger>*:nth-child(2){--i:1}details>*:nth-child(3),.stagger>*:nth-child(3){--i:2}details>*:nth-child(4),.stagger>*:nth-child(4){--i:3}details>*:nth-child(5),.stagger>*:nth-child(5){--i:4}details>*:nth-child(6),.stagger>*:nth-child(6){--i:5}details>*:nth-child(7),.stagger>*:nth-child(7){--i:6}details>*:nth-child(8),.stagger>*:nth-child(8){--i:7}details>*:nth-child(9),.stagger>*:nth-child(9){--i:8}details>*:nth-child(10),.stagger>*:nth-child(10){--i:9}details>*:nth-child(11),.stagger>*:nth-child(11){--i:10}details>*:nth-child(12),.stagger>*:nth-child(12){--i:11}details>*:nth-child(13),.stagger>*:nth-child(13){--i:12}details>*:nth-child(14),.stagger>*:nth-child(14){--i:13}details>*:nth-child(15),.stagger>*:nth-child(15){--i:14}details>*:nth-child(16),.stagger>*:nth-child(16){--i:15}details>*:nth-child(17),.stagger>*:nth-child(17){--i:16}details>*:nth-child(18),.stagger>*:nth-child(18){--i:17}details>*:nth-child(19),.stagger>*:nth-child(19){--i:18}[data-page].stagger>*,[data-page] .stagger>*,details>*{animation-name:Hide;animation-direction:reverse}[data-page-active].stagger>*,[data-page-active] .stagger>*,details[open]>*,nav.stagger>*,:target .stagger>* :target.stagger>*{--x-a:0;--y-a:10px;--x-b:0;--y-b:0;--_offset: max(calc( var(--i,1) + var(--index,0)),0);--_delay: calc( var(--delay) * 1s + var(--ease-in-medium) * var(--_offset) * var(--overlap));animation-duration:var(--ease-in-medium);animation-delay:var(--_delay);animation-direction:normal;animation-name:var(--animation, Fade);animation-fill-mode:both;animation-iteration-count:1;animation-play-state:running}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
