.highlight table td{padding:5px}.highlight table pre{margin:0}.highlight,.highlight .w{color:#f8f8f2;background-color:#272822}.highlight .err{color:#272822;background-color:#f92672}o .highlight .c,.highlight .ch,.highlight .cd,.highlight .cm,.highlight .cpf,.highlight .c1,.highlight .cs{color:#ccc}.highlight .cp,.highlight .nt{color:#f4bf75}.highlight .o,.highlight .ow,.highlight .p,.highlight .pi{color:#f8f8f2}.highlight .gi{color:#a6e22e}.highlight .gd{color:#f92672}.highlight .gh{color:#66d9ef;background-color:#272822;font-weight:700}.highlight .k,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kv{color:#ae81ff}.highlight .kc,.highlight .kt,.highlight .kd{color:#fd971f}.highlight .s,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .dl,.highlight .sd,.highlight .s2,.highlight .sh,.highlight .sx,.highlight .s1{color:#a6e22e}.highlight .sr{color:#a1efe4}.highlight .si{color:#c63}.highlight .se{color:#ccc}.highlight .nn,.highlight .nc,.highlight .no{color:#f4bf75}.highlight .na{color:#66d9ef}.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .il,.highlight .mo,.highlight .mx,.highlight .ss{color:#a6e22e}:root{--purple:#950fa4;--transparent-purple:#950fa4a0;--transparent-light-purple:#e368f1a0;--dark-purple:#783780;--light-purple:#e368f1;--dark-gray:#1c142b;--gray:#47336c;--light-gray:#d9cdff;--white:#ece6ff;--quote-background-color:var(--light-gray);--background-color:var(--white);--heading-border-color:var(--gray);--hover-color:var(--light-purple);--video-color:var(--transparent-purple);--heading-color:var(--purple);--link-color:var(--purple);--border-color:var(--purple);--base-text-color:var(--dark-gray);--contrasted-text-color:var(--white);--display-font:"CherrySwash", serif;--display-font-bold:"CherrySwashBold", serif}@media (prefers-color-scheme:dark){:root{--background-color:var(--dark-gray);--heading-border-color:var(--light-gray);--hover-color:var(--dark-purple);--video-color:var(--transparent-light-purple);--heading-color:var(--light-purple);--link-color:var(--light-purple);--border-color:var(--light-purple);--base-text-color:var(--white);--contrasted-text-color:var(--dark-gray);--quote-background-color:var(--gray)}}section,.contained{margin-left:auto;margin-right:auto;padding-left:1em;padding-right:1em}section{padding-bottom:6em}section.heading{padding-bottom:0}@media (width>=576px){section,.contained{max-width:560px}}@media (width>=768px){section,.contained{max-width:750px}}@media (width>=992px){section,.contained{max-width:980px}}.post-content,.posts,.webmentions{max-width:750px}article{margin-left:auto;margin-right:auto}.grid-container{grid-column-gap:1em;margin-bottom:4em;display:grid}@media (width>=768px){.grid-container>:not(:last-child){margin-bottom:0}.grid-container{grid-column-gap:5em;grid-template-columns:1fr 1fr}.grid-container.single-column{grid-template-columns:1fr}}button,input[type=button],input[type=reset],input[type=submit]{appearance:none;color:#fff;cursor:pointer;-webkit-font-smoothing:antialiased;user-select:none;vertical-align:middle;white-space:nowrap;background-color:#477dca;border:0;border-radius:3px;padding:.75em 1.5em;font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-size:1em;font-weight:600;line-height:1;text-decoration:none;transition:background-color .15s;display:inline-block}button:hover,button:focus,input[type=button]:hover,input[type=button]:focus,input[type=reset]:hover,input[type=reset]:focus,input[type=submit]:hover,input[type=submit]:focus{color:#fff;background-color:#3964a2}button:disabled,input[type=button]:disabled,input[type=reset]:disabled,input[type=submit]:disabled{cursor:not-allowed;opacity:.5}button:disabled:hover,input[type=button]:disabled:hover,input[type=reset]:disabled:hover,input[type=submit]:disabled:hover{background-color:#477dca}fieldset{background-color:#f7f7f7;border:1px solid #ddd;margin:0 0 .75em;padding:1.5em}input,label,select{font-family:Helvetica Neue,Helvetica,Roboto,Arial,sans-serif;font-size:1em;display:block}label{margin-bottom:.375em;font-weight:600}label.required:after{content:"*"}label abbr{display:none}select{width:auto;max-width:100%;margin-bottom:1.5em}dl{margin-bottom:.75em}dl dt{margin-top:.75em;font-weight:700}dl dd{margin:0}table{border-collapse:collapse;font-feature-settings:"kern", "liga", "tnum";table-layout:fixed;width:100%;margin:.75em 0}th{text-align:left;border-bottom:1px solid #a6a6a6;padding:.75em 0;font-weight:600}td{border-bottom:1px solid #ddd;padding:.75em 0}tr,td,th{vertical-align:middle}hr{border-bottom:4px solid var(--heading-color);border-top:0;border-left:0;border-right:0;width:100%;margin:0 0 1.5em}hr#divider{margin:0}img,picture{max-width:100%;margin:0}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}.btn{font-family:inherit;font-size:inherit;color:#4c4c4c;cursor:pointer;text-transform:uppercase;letter-spacing:1px;background:#dedede;border:none;border-radius:0;outline:none;margin:15px 30px;padding:18px 60px;font-weight:400;transition:all .3s;display:inline-block;position:relative}.btn:focus{color:#4c4c4c;background:#dedede}.btn:hover{color:#4c4c4c;background:#ccc}.btn:active{top:2px}.btn.disabled{color:#9e9e9e;cursor:default;background:#eaeaea;top:0}body{-webkit-font-smoothing:antialiased;background:#fff;font-family:Roboto,sans-serif}.center-text{text-align:center}.container{margin-top:30px}@media print{.container{margin-top:20px}}.header-contianer{margin-top:50px}.header-right{text-align:right}.header-left{margin-top:10px}@media print{.header-left{margin-top:0}}.header-right p{text-align:right;font-size:1.6em}@media print{a[href]:after,img[src]:after{content:none!important}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.6667%}.col-sm-10{width:83.3333%}.col-sm-9{width:75%}.col-sm-8{width:66.6667%}.col-sm-7{width:58.3333%}.col-sm-6{width:50%}.col-sm-5{width:41.6667%}.col-sm-4{width:33.3333%}.col-sm-3{width:25%}.col-sm-2{width:16.6667%}.col-sm-1{width:8.33333%}.col-print-12{width:100%}.no-print,.no-print *{display:none!important}}.button--sacnite:before{content:"";border-radius:inherit;z-index:-1;width:100%;height:100%;box-shadow:inset 0 0 0 35px var(--link-color);-webkit-transition:box-shadow .3s, -webkit-transform .3;transition:box-shadow .3s,transform .3s;position:absolute;top:0;left:0;transform:scale(.8)}.button-lg{font-family:var(--display-font);color:var(--contrasted-text-color);background-color:var(--link-color);border-radius:.25em;margin-bottom:1em;padding:.25em 2em;font-size:3em;text-decoration:none;display:inline-block}.button-lg:hover{color:var(--contrasted-text-color);background-color:var(--hover-color)}.button svg{margin-right:2em}.button{font-family:var(--display-font);float:left;vertical-align:middle;z-index:1;-webkit-backface-visibility:hidden;-moz-osx-font-smoothing:grayscale;background:0 0;border:none;min-width:150px;max-width:250px;margin:1em;padding:1em 2em;display:block;position:relative}.button--round-l{border-radius:40px}.button{float:none;border-radius:0;max-width:400px;margin:0 auto;padding:5px 20px;font-weight:400;display:inline-block}.button.button--sacnite{width:50px;min-width:0;height:50px;color:var(--contrasted-text-color);-webkit-text-fill-color:var(--contrasted-text-color);padding:0;transition:color .3s}.button--sacnite:hover{color:var(--link-color);-webkit-text-fill-color:var(--link-color)}.button--sacnite:hover:before{box-shadow:inset 0 0 0 2px var(--link-color);transform:scale(1)}@font-face{font-family:CherrySwash;src:url(/assets/fonts/Cherry_Swash/CherrySwash-Regular.ttf);font-display:swap}@font-face{font-family:CherrySwashBold;src:url(/assets/fonts/Cherry_Swash/CherrySwash-Bold.ttf);font-display:swap}@font-face{font-family:OpenDyslexic;src:local(OpenDyslexic),local(OpenDyslexic Regular),local(OpenDyslexic-Regular);font-display:swap}@font-face{font-family:OpenDyslexicBold;src:local(OpenDyslexic Bold),local(OpenDyslexic-Bold),local(OpenDyslexic);font-display:swap}@media (prefers-contrast:more),(forced-colors:active){:root{--display-font:"OpenDyslexic", "CherrySwash", serif;--display-font-bold:"OpenDyslexicBold", "OpenDyslexic", "CherrySwashBold", serif}}html *{font-size:10px}@media print{html *{font-size:5px}}body{color:var(--base-text-color);font-feature-settings:"kern", "liga", "pnum";margin:0;font-family:Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,Ubuntu,Droid Sans,Helvetica Neue,sans-serif,Apple Color Emoji;font-size:1em;font-weight:500;line-height:2}.skip-link{z-index:1000;background:var(--dark-gray);color:var(--white);padding:.5em .75em;text-decoration:none;position:absolute;top:0;left:-9999px}.skip-link:focus{top:1rem;left:1rem}@media print{body{font-size:.9em}}h1,h2,h3,h4,h5,h6{font-family:var(--display-font);margin:0 0 .75em;font-size:1em;font-weight:400;line-height:1.2}h1{font-family:var(--display-font-bold)}pre,code{font-family:Fira Code,Menlo,Monaco,Consolas,Andale Mono,Courier New,monospace}:not(pre)>code{background-color:var(--quote-background-color);border-radius:.5em;padding:.25em}p{margin:0 0 1.5em}a{color:var(--link-color);transition:color .275s}a:active,a:focus,a:hover{color:var(--hover-color);background-position:0 100%}.no-underline,a.no-underline{text-decoration:none}h1{color:var(--heading-color);font-size:5em}h2{color:var(--heading-color);font-size:4em}h3{color:var(--heading-color);text-align:center;border-bottom:dashed .15em var(--heading-border-color);padding-bottom:10px;font-size:3em;font-weight:400}h4{font-size:2.5em}h5{margin-bottom:3px;font-size:1.5em;font-weight:400}a,li,a,s,strong,em,mark,b,pre,span,del{font-size:inherit}pre{white-space:pre-wrap;padding:1em}pre code,p code,ul code,ol code{font-size:inherit}pre i,p i,ul i,ol i{font-size:1.5em}pre,p,ul,ol{font-size:1.6em}a i{font-size:inherit}li{list-style-position:outside}li p{font-size:1em}mark{color:var(--contrasted-text-color);background-color:var(--heading-color);box-shadow:2px 2px 0px var(--heading-border-color);border-radius:3px;margin:0 2px;padding:2px 4px}strong{font-weight:600}nav ul{font-family:var(--display-font);justify-content:center;align-items:center;margin:0;list-style:none;display:flex}@media (width>=768px){nav ul{justify-content:flex-end}}nav ul li a{-webkit-text-fill-color:var(--base-text-color);color:var(--base-text-color);border-bottom:.3em solid #0000;font-size:1em;text-decoration:none;transition:border-color .2s,color .2s}nav ul li a:hover{border-bottom-color:var(--video-color);color:var(--base-text-color);background:0 0}nav ul li{border-radius:.5em;padding:0 .25em;position:relative}nav[aria-label=Primary] ul{align-items:baseline;gap:.7em}nav[aria-label=Primary] li{align-items:flex-end;padding:0;display:flex}nav[aria-label=Primary] a{line-height:1.1;display:inline-block}@media (width<=768px){.header-container .grid-container .header-right>.icons{gap:.35em;margin-bottom:.95em}.header-container .grid-container .header-right>.icons a{width:3em;height:3em}nav[aria-label=Primary] ul{gap:1em}nav[aria-label=Primary] a{justify-content:center;align-items:center;min-height:44px;padding:0 .2em;display:inline-flex}}body{background-color:var(--background-color);overflow-x:hidden}section h3{margin-bottom:1.5em}.role-title{margin-bottom:.3em}.role-meta{justify-content:space-between;align-items:baseline;gap:1em;margin-bottom:.55em;display:flex}.role-company{margin-bottom:0}.role-dates{text-align:right;color:var(--faded-text-color);white-space:nowrap;margin-bottom:0;font-style:italic}.role-summary{margin:0 0 .65em;padding:0;list-style:none}.role-summary li{margin:0 0 .35em}.role-summary li:last-child{margin-bottom:0}.role-summary mark{box-shadow:none;border:1px solid var(--heading-border-color);margin:0 1px 0 0;padding:1px 4px}@media (width<=768px){.role-meta{flex-direction:column;align-items:flex-start;gap:.2em}.role-dates{text-align:left;white-space:normal}}.employer h4,.education-container h4,.employer p,.education-container p{margin-bottom:0}article pre,.posts pre{word-wrap:normal;white-space:pre;overflow:auto}@media (prefers-color-scheme:light){pre.astro-code span[style*="color:#6A737D"],pre.astro-code span[style*="color:#6a737d"]{color:#8b949e!important;-webkit-text-fill-color:#8b949e!important}}article h2,.posts h2{color:var(--heading-color);border-bottom:dashed .15em var(--heading-border-color);padding-bottom:10px;font-size:3em}@media print{article h2,.posts h2{margin-bottom:20px}}article h3,.posts h3{text-align:left;border-bottom:0;margin-bottom:.75em;padding-bottom:0;font-size:2.5em}article h4,.posts h4{font-size:2em}.employer{margin-bottom:3em}.post-header .title{background-color:var(--heading-color);width:100%;margin-bottom:3em;padding-top:2em;padding-bottom:2em}.post-header .title h1{color:var(--contrasted-text-color);font-size:5em}.post-header .title h2{color:var(--contrasted-text-color);font-size:2em}@media (width<=768px){.post-header .title h1{font-size:3em}}.post-header{text-align:center}.post-header .post-meta{color:var(--contrasted-text-color);margin-bottom:0}.post-header{margin-bottom:1em}:root[data-active-nav=home] nav[aria-label=Primary] a[href=\/],:root[data-active-nav=cv] nav[aria-label=Primary] a[href="/cv/"],:root[data-active-nav=blog] nav[aria-label=Primary] a[href="/blog/"],:root[data-active-nav=projects] nav[aria-label=Primary] a[href="/projects/"],:root[data-active-nav=speaking] nav[aria-label=Primary] a[href="/speaking/"]{color:var(--base-text-color);border-bottom-color:var(--link-color)}.icons a:hover{background:#00000006}.icons li:first-child{margin-right:0}.icons li{margin-left:0;display:flex}.icons a{text-align:center;width:2.75em;height:2.75em;box-shadow:none;color:var(--base-text-color);border:0;border-radius:100%;justify-content:center;align-items:center;padding:0;line-height:0;text-decoration:none;transition:background-color .25s ease-in-out;display:inline-flex}.icons span{font-size:38px;line-height:1;text-decoration:none;display:inline-block}.icons .icon-svg:before{margin:0;line-height:1;text-decoration:none;display:block}.icons .icon-svg{justify-content:center;align-items:center;width:50%;height:50%;line-height:1;display:inline-flex}.icons .button svg{margin-right:0}.icon-svg svg{fill:currentColor;width:100%;height:100%;display:block;position:static;bottom:auto}.icon-svg{vertical-align:middle;justify-content:center;align-items:center;line-height:1;display:inline-flex}.icon-svg:before{content:none!important;display:none!important}.icons{text-align:center;justify-content:center;align-items:center;gap:.1em;padding:0;font-size:1em;display:flex}@media (width>=768px){.icons{text-align:right;justify-content:flex-end}}.icons.rss{text-align:center;justify-content:center;margin-bottom:1em}.icons.rss>.button,.icons.rss>a.button{margin:0}@media (width>=768px){.icons.rss{text-align:left;justify-content:flex-start}}.header-right p{margin-bottom:3px}.header-right a{font-weight:500}.card-img{border-radius:100px;width:100px;height:100px;margin:0 auto 20px;display:block}.card-img img{background-position:50%;background-repeat:repeat,no-repeat;background-size:cover}.profile-img-wrapper{width:200px;height:200px;margin:0 auto 20px;display:block}.profile-photo-link,.profile-photo-transition{line-height:0;text-decoration:none;display:inline-block}.profile-photo-transition{width:fit-content;margin:0 auto;display:block}@media (width<=768px){.profile-img-wrapper{width:100px;height:100px}}.profile-img{object-fit:cover;object-position:center;border-radius:50%;width:100%;height:100%;animation-iteration-count:infinite;display:block}.into-text-1{margin-top:30px}@media (width<=992px){.into-text-1{margin-top:20px}}.layout{margin-top:3em}.layout .details{text-align:left}.layout .details p{text-align:inherit;margin-bottom:3px;font-size:1.6em}.layout .details p b{font-weight:500}@media (width<=768px){.layout .details,.layout .details p{text-align:center}}.layout .details a{color:inherit;font-style:italic}.layout .details .icon-svg{font-size:2em}.layout .details .link{font-size:1.5em}.layout .details h4{margin-bottom:.1em;font-weight:500}@media print{.layout .details h4{margin-bottom:.2em}}.layout-right .details,.layout-top-right .details{text-align:right}.layout-top-middle .details{text-align:center}.footer-container{margin-top:100px}.footer-container p{text-align:center;font-style:italic}.footer-container a{color:inherit;font-style:italic;text-decoration:underline}.page-content{padding:0}.contact a{color:var(--base-text-color);margin-left:30px;line-height:50px;transition:color .4s}.contact a:hover{color:var(--link-color)}p.quote{text-align:center;padding:1em 2.5em;font-size:1.4em;font-style:italic}@media print{p.quote{text-align:left;margin-top:1em;padding:0 1em}}.side-projects-container,.upcoming-talks-container{padding-bottom:0}.side-projects-container .project,.side-projects-container .talk,.upcoming-talks-container .project,.upcoming-talks-container .talk{box-shadow:1em 1em 0px var(--heading-border-color);background-color:var(--quote-background-color);border-radius:2em;flex-direction:column;margin-bottom:5em;transition:box-shadow .3s ease-in-out;display:flex}.side-projects-container .project .link-container,.side-projects-container .talk .link-container,.upcoming-talks-container .project .link-container,.upcoming-talks-container .talk .link-container{flex-direction:column;align-items:center;display:flex}.side-projects-container .project .link-button,.side-projects-container .talk .link-button,.upcoming-talks-container .project .link-button,.upcoming-talks-container .talk .link-button{margin:1em 2em}.side-projects-container .project .link-button .icon-svg.icon-github-circled,.side-projects-container .talk .link-button .icon-svg.icon-github-circled,.upcoming-talks-container .project .link-button .icon-svg.icon-github-circled,.upcoming-talks-container .talk .link-button .icon-svg.icon-github-circled{font-size:1.5em}.side-projects-container .project .content,.side-projects-container .talk .content,.upcoming-talks-container .project .content,.upcoming-talks-container .talk .content{flex-grow:1}.side-projects-container .project p,.side-projects-container .talk p,.upcoming-talks-container .project p,.upcoming-talks-container .talk p{color:var(--base-text-color);margin:1em}.side-projects-container .project h4.title,.side-projects-container .talk h4.title,.upcoming-talks-container .project h4.title,.upcoming-talks-container .talk h4.title{color:var(--background-color);text-align:center;background-color:var(--heading-color);border-radius:.8em .8em 0 0;width:100%;padding-top:.25em;padding-bottom:.25em;transition:color .15s}.side-projects-container .project:hover,.side-projects-container .talk:hover,.upcoming-talks-container .project:hover,.upcoming-talks-container .talk:hover{box-shadow:.5em .5em 0px var(--heading-border-color)}.upcoming-talks-container picture.talk{width:50%;max-width:100%;margin:0 auto 2em;overflow:hidden}@media (width<=767px){.upcoming-talks-container picture.talk{width:100%}}.upcoming-talks-container .talk-image{object-fit:contain;aspect-ratio:2048/1365;width:100%;max-height:none;display:block;height:auto!important}.webmentions{margin-left:auto;margin-right:auto}.webmentions h2{font-size:3em}.webmentions img{margin-top:1em;margin-right:.25em}.webmentions p{margin-bottom:0}.webmentions mark,.webmentions time{font-size:1.6em}.webmentions ul{list-style-type:none}.webmentions ul li{display:inline}.webmentions ul img{border-radius:50%}.webmentions .webmentions__list{grid-column-gap:1em;margin-bottom:4em;display:grid}@media (width>=768px){.webmentions .webmentions__list{grid-column-gap:5em;grid-template-columns:1fr 1fr}}main#home{background-color:var(--white)}main#home .intro{gap:5em;padding:1em;display:flex}main#home .profile-img-wrapper{margin:0}main#home .profile-photo-link{box-shadow:0em 0em 0px var(--gray);border-radius:50%;transition:transform .275s,box-shadow .275s}main#home .profile-photo-link:hover{box-shadow:1em 1em 0px var(--gray);transform:scale(.95)}main#home h1,main#home h2{text-wrap:balance;margin-bottom:0}main#home{grid-template-columns:1fr 1fr 1fr}main#home h1{color:var(--purple);font-size:8em}@media (width<=1280px){main#home .intro{display:block}main#home .profile-img-wrapper{margin-bottom:2em;margin-left:auto;margin-right:auto}main#home h2{font-size:3em}}@media (width<=900px){main#home .profile-img-wrapper{width:100px;height:100px}main#home h1{font-size:2.75em}main#home h2{font-size:1.75em}}main#home{grid-template-areas:"a b c""d d d""e f g";min-height:100dvh;display:grid}main#home>*,main#home #name{text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}main#home .thing{background-color:var(--purple);margin-left:auto;margin-right:auto;padding:1em}main#home .thing h2{color:var(--white);line-height:1.5em}main#home .thing{width:100%;box-shadow:0em 0em 0px var(--gray);text-shadow:0em 0em 0em var(--gray);border-radius:0;transition:width .275s,box-shadow .275s}main#home .thing:hover{width:95%;box-shadow:1em 1em 0px var(--gray)}main#home .alt{background-color:var(--dark-gray);box-shadow:0em 0em 0px var(--light-purple)}main#home .alt:hover{box-shadow:1em 1em 0px var(--light-purple)}main#home #speaking{grid-area:a}main#home #blogging{grid-area:c}main#home #cv{grid-area:b}main#home #carmen{grid-area:d}main#home #teaching{grid-area:e}main#home #consulting{grid-area:f}main#home #tinkering{grid-area:g}.doprint #links a{-webkit-text-fill-color:var(--link-color);color:var(--link-color)}.link-button{background-color:var(--background-color);border:solid 2px var(--background-color);color:var(--base-text-color);box-shadow:.5em .5em 0px var(--heading-border-color);border-radius:.5em;padding:1em;font-size:1.5em;transition:all .1s ease-in-out}.link-button:hover{background-color:var(--heading-color);box-shadow:.25em .25em 0px var(--heading-border-color);color:var(--background-color)}@media (width<=900px){.header-left h1{font-size:3em}#top{padding-left:3em;padding-right:2em}#top h1{font-size:3em}}.center{text-align:center}.job-title a{text-decoration:underline}#top *{flex:1}#top{flex-direction:row;width:100%;height:100vh;display:flex}#top .blm{background-color:var(--dark-gray);justify-content:center;align-items:center;display:flex}#top .blm h1{margin-bottom:0}#top .blm h1,#top .blm a{text-align:center}#top .blm h2{color:var(--base-text-color);font-size:2em}.links{background-color:var(--background-color)!important}.links a:hover{color:var(--hover-color)!important}.links a{color:var(--heading-color)!important}body.card-page{min-height:100dvh;display:block}body.card-page #top.links{flex-direction:column;justify-content:center;align-items:center;width:100%;height:auto;min-height:100dvh;display:flex}body.card-page #top.links *{flex:unset}body.card-page #top .card{width:min(100%,50em)}body.card-page #top .card h2{font-size:2em}body.card-page #top .card h2 .icon-svg{vertical-align:middle;justify-content:center;align-items:center;width:1.2em;font-size:1em;display:inline-flex}body.card-page #top .card h2 a{align-items:center;gap:.5em;display:inline-flex}body.card-page #top .card h2 .icon-svg{width:1.2em;min-width:1.2em;font-size:1em}body.card-page #top .card h2.center{color:var(--base-text-color)}@media screen and (height<=700px){#top.links{padding-top:2em;display:block!important}body.card-page #top.links{padding-top:0}}.card{max-width:50em;margin-left:auto;margin-right:auto}#top>svg{fill:var(--light-purple);text-align:center;position:absolute;bottom:1em}#top a{color:var(--light-purple)}#top a:hover{color:var(--dark-purple)}@media (width<=576px){#top .card h2{font-size:1.7em}}.posts .post{margin-bottom:3em}.post-ctas{align-items:stretch;gap:1.5em;margin-bottom:1em;display:flex}.post-ctas>a{flex:50%}.follow-on-mastodon{border-color:var(--link-color);color:var(--link-color);font-size:2.5em;font-family:var(--display-font);text-align:center;border-style:solid;border-width:5px;border-radius:.5em;justify-content:center;align-items:center;gap:.18em;margin:0;padding:.05em .5em;transition:border-color .275s,color .275s;display:flex}@media (width<=576px){.post-ctas{flex-direction:column;align-items:stretch;gap:.75em}.post-ctas>a{flex:none}.coffee,.follow-on-mastodon{box-sizing:border-box;text-align:center;justify-content:center;width:100%}}.follow-on-mastodon .icon-svg{flex:none;justify-content:center;align-items:center;width:1em;height:1em;line-height:1;display:inline-flex}.follow-on-mastodon .icon-svg svg{width:90%;height:90%;display:block}.follow-on-mastodon:active,.follow-on-mastodon:focus,.follow-on-mastodon:hover{border-color:var(--hover-color);color:var(--hover-color)}.coffee{background-color:var(--link-color);border-color:var(--link-color);color:var(--background-color);font-size:2.5em;font-family:var(--display-font);text-align:center;border-style:solid;border-width:5px;border-radius:.5em;justify-content:center;align-items:center;gap:.18em;margin:0;padding:.05em .5em;transition:border-color .275s,background-color .275s;display:flex}.coffee-centered{margin-left:auto;margin-right:auto}@media (width<=576px){.coffee{margin-right:0}}@media (width>=980px){.coffee-centered{width:50%}}.coffee svg{vertical-align:sub;margin-right:4px}.coffee svg .outline{fill:var(--background-color)}.coffee:active,.coffee:focus,.coffee:hover{background-position:0 100%;background-color:var(--hover-color);border-color:var(--hover-color);color:var(--background-color)}.text-centered{text-align:center;margin-top:1rem}.title{text-decoration:none}.kudos-container .grid-container,.skills-container .grid-container,.intro-container .grid-container{margin-bottom:0}blockquote{background-color:var(--quote-background-color);box-shadow:1em 1em 0px var(--heading-border-color);quotes:"“" "”" "‘" "’";border-radius:2em;margin:0 0 4em;transition:box-shadow .3s ease-in-out}blockquote p{margin-left:3.5em;margin-right:3.5em}blockquote p:last-child{margin-bottom:0}blockquote:hover:before{animation:.7s ease-in-out .1s infinite ringing}blockquote:hover:after{animation:.7s ease-in-out .1s infinite ringing-backwards}blockquote:hover{box-shadow:.5em .5em 0px var(--heading-border-color)}@keyframes ringing{0%{transform:rotate(-10deg)}25%{transform:rotate(10deg)}50%{transform:rotate(-10deg)}75%{transform:rotate(10deg)}to{transform:rotate(-10deg)}}@keyframes ringing-backwards{0%{transform:rotate(10deg)}25%{transform:rotate(-10deg)}50%{transform:rotate(10deg)}75%{transform:rotate(-10deg)}to{transform:rotate(10deg)}}blockquote:before{font-family:var(--display-font-bold);content:open-quote;height:0;color:var(--heading-color);font-size:7em;line-height:0;display:inline-block;position:relative;top:52px;left:.2em}blockquote:after{font-family:var(--display-font-bold);content:close-quote;height:0;color:var(--heading-color);text-align:right;font-size:7em;line-height:0;display:inline-block;position:relative;top:22px;left:calc(100% - .65em)}.quotation{margin-bottom:1em}.name{text-align:right;font-style:italic}.link{font-size:1.5em}.blog img{max-width:100%;margin:0 auto;display:block}.blog h2{color:var(--heading-color)}.blog article h1,.blog article h2,.blog article h3,.blog article h4{margin-top:1.25em}@media (width<=576px){.blog .post-header .title h1,.blog article h1,.blog article h2,.blog article h3,.blog article h4{text-align:center}}.home{text-decoration:none}.talks-container h4{font-weight:100}.talks-container h4 a{font-size:inherit}.talks-container .talk{box-shadow:1em 1em 0px var(--heading-border-color);background-color:var(--quote-background-color);border-radius:2em;flex-direction:column;margin-bottom:6em;padding-bottom:3em;transition:box-shadow .3s ease-in-out;display:flex}.talks-container .talk h4{color:var(--background-color);text-align:center;background-color:var(--heading-color);border-radius:.8em .8em 0 0;width:100%;padding-top:.25em;padding-bottom:.25em}.talks-container .talk:hover{box-shadow:.5em .5em 0px var(--heading-border-color)}.talks-container .link-container{flex-direction:column;justify-content:center;align-items:center;padding:2em 0 3em;display:flex}.talks-container .talk .link-button{margin-bottom:0}.talks-container .talk{padding-bottom:0}.talks-container .talk h4{text-align:center;height:4em;margin-bottom:0;padding:.25em .5em}.talks-container .video picture,.talks-container .video .talk-image{width:100%;display:block}.talks-container .video .talk-image{height:auto}article blockquote{margin-left:2em;margin-right:2em}@media (width>=576px){article blockquote{margin-left:0;margin-right:0}}.has-cards{padding-left:2em;padding-right:2em}@media (width>=576px){.has-cards{padding-left:0;padding-right:0}}.skills-container .grid-container .skill{background-color:var(--quote-background-color);box-shadow:1em 1em 0px var(--heading-border-color);border-radius:2em;padding:1em;transition:box-shadow .3s ease-in-out}.skills-container .grid-container .skill:hover{box-shadow:.5em .5em 0px var(--heading-border-color)}.skills-container .grid-container .skill{flex-direction:column;margin-bottom:8em;display:flex}.skills-container .grid-container .skill h4{text-align:center}.skills-container .grid-container .skill p{text-align:center;flex-grow:1;margin-bottom:.5em}.skills-container .grid-container .skill p:not(.service){font-size:1.25em}.skills-container .grid-container .skill .stars{text-align:center}.skills-container .grid-container .skill .stars span{color:var(--heading-color);font-size:1.8em;font-style:normal}.skills-container .grid-container .skill span:before,.skills-container .grid-container .skill h4,.skills-container .grid-container .skill h5{transition:transform .25s,color .25s,font-size .25s}.skills-container .grid-container .skill .header-left{text-align:center}.skills-container .grid-container .skill{grid-template-columns:repeat(1,1fr)}@media (width>=576px){.skills-container .grid-container .skill{grid-template-columns:repeat(2,1fr)}}@media (width>=768px){.skills-container .grid-container .skill{grid-template-columns:repeat(3,1fr)}}@media (width>=992px){.skills-container .grid-container .skill{grid-template-columns:repeat(3,1fr)}}ol,ul{padding-left:1em}.lang{text-align:center;padding-left:0;line-height:1.2;list-style:none}.lang li{align-items:center;gap:.5em;margin-bottom:.35em;display:flex}.lang li:last-child{margin-bottom:0}.lang .flag{vertical-align:middle;flex:0 0 2em;justify-content:flex-start;font-size:1.33em;line-height:1;display:inline-flex}.lang .lang-text{text-align:right}@media (width>=768px){.lang{text-align:left}}.header-container{margin-left:auto;margin-right:auto;padding:1em 1em 2em}@media (width>=576px){.header-container{max-width:560px}}@media (width>=768px){.header-container{max-width:750px}}@media (width>=992px){.header-container{max-width:980px}}.header-container h2{color:var(--base-text-color);margin-top:.375em;font-size:1.6em;font-weight:100}.header-container .grid-container{margin-bottom:1em}.header-container .grid-container .header-left h1{margin-bottom:.1em}.header-container .grid-container .header-left{text-align:center;margin-bottom:0}.header-container .grid-container .header-right{flex-direction:column;align-items:center;margin-top:10px;display:flex}.header-container .grid-container .header-right>.icons{margin:4px 0 .75em}.header-container .grid-container .header-right nav ul{margin:0;padding-left:0}@media (width>=768px){.header-container .grid-container .header-right nav[aria-label=Primary]{margin-top:calc(1.75em - 1px)}.header-container .grid-container .header-left{text-align:left}.header-container .grid-container .header-right{align-items:flex-end}.header-container .grid-container{grid-template-columns:1fr 1fr}}section.heading{text-align:center}@media (width>=768px){.intro-container .grid-container{grid-template-columns:4fr 1fr;grid-auto-flow:dense}.intro-container .grid-container div:first-child{grid-column:2}.intro-container .grid-container div:last-child{grid-column:1}}.doprint{display:none!important}@media print{.doprint{display:block!important}.noprint,.noprint *{display:none!important}.grid-container{display:flex}.grid-container>*{flex:1}.pagebreak{page-break-after:always}.lang li{margin-right:2em;display:inline-block}.heading h2{margin-bottom:0;font-size:3em}mark{color:#000;box-shadow:none;padding:0;font-weight:900}.intro-container p{margin-bottom:.1em}section{padding-bottom:1em}}
