@import"https://fonts.googleapis.com/css2?family=Raleway&display=swap";@import"https://www.unpkg.com/animate.css@4.1.1/animate.min.css";body,html{padding:0;margin:0;font-family:Raleway,sans-serif;line-height:1.6;font-size:18px;overflow:hidden}hr{border:.5px solid #d3d3d3;width:100%;margin:0}.action-button{margin:1.5rem;border:none;padding:10px 15px;transition:all .2s ease;box-shadow:1px 5px 5px rgba(0,0,0,.2);background:#56b47e;color:#fff}.action-button:hover{box-shadow:1px 2px 9px rgba(0,0,0,.2);transform:translate(-1px,-1px)}.form{display:flex;justify-content:center;margin-top:20px;margin-bottom:20px}.form .text-input{display:flex;align-items:center;width:100%;max-width:600px}.form .text-input input{height:100%}.form .text-input>:not(:last-child){margin-right:10px}input{width:100%;border-radius:5px;font-size:16px;border:1px solid}button,input{padding:10px;background:#fff}button{cursor:pointer;border-radius:10px;display:flex;justify-content:center;align-items:center;font-size:20px}button>:not(:last-child){margin-right:5px}button.lg{border:none;font-size:1.3em;padding:15px;margin:20px}button.flat{border:none;background:none}a,nav.animate-in a{margin-bottom:4px;display:inline-flex;align-items:center;color:#4b96cc;font-weight:300;cursor:pointer;text-decoration:none;background:#fff}a>svg,nav.animate-in a>svg{margin-left:4px}a.lg,nav.animate-in a.lg{padding:5px 15px;font-size:1.2em}a.theme-dark,nav.animate-in a.theme-dark{color:#fff;background:inherit}a:hover,nav.animate-in a:hover{text-decoration:underline}.blog-container{max-width:50rem}.delaunay{top:0;left:0;position:fixed;height:100vh;width:100%;display:flex;justify-content:center;align-items:center;background:#254048;z-index:-1;transition:all 3s ease;animation:background-color 3s ease forwards}.delaunay svg{opacity:0;filter:blur(5px);width:100%;height:100%;pointer-events:none}.delaunay svg.animate-in{opacity:1;filter:blur(0);transition:filter 3s ease-out,opacity 3s ease-out;animation:spin 2s ease forwards}.delaunay svg.animate-in .path{transition:all 2s ease-out}.delaunay svg .path,.delaunay svg .point{stroke:#fff;opacity:.2}.scroll-anchor{position:absolute;left:0}.svg-stage{width:100%}.height-100,.svg-stage{height:100%}.width-100{width:100%}.flex{display:flex}.flex.row{flex-direction:row}.flex.column{flex-direction:column}.flex.wrap{flex-wrap:wrap}.flex.w-100{width:100%}.flex.h-100{height:100%}.flex.vh-100{height:100vh}.flex.jc-center{justify-content:center}.flex.ai-center{align-items:center}.front-page{justify-content:center;height:100vh;padding:20px}.front-page,.front-page .titles{display:flex;flex-direction:column;align-items:center}.front-page .titles{color:#5491a9;font-family:Courier New,Courier,monospace}.front-page .titles a{box-shadow:1px 2px 9px rgba(0,0,0,.2)}.front-page .titles .title h1{display:inline-block;background:#fff;padding:0 20px;font-size:2rem;margin-bottom:4px;margin-top:0}nav{display:flex;flex-wrap:wrap;justify-content:center;width:100%}nav .mobile-nav{display:none}nav.animate-in{transform-style:preserve-3d;perspective:300px}nav.animate-in a{opacity:0;animation:turn-in .8s ease forwards;animation-delay:1.3s}nav a:not(:last-child){margin-right:4px}nav .desktop-nav{display:flex;justify-content:center;align-items:center}nav .desktop-nav .nav-item{cursor:pointer}nav .desktop-nav>a{box-shadow:none}h1,h2,h3{text-align:center;font-weight:500}h1,h2,h3{margin-top:0}h3{margin-bottom:30px;font-weight:900;font-size:28px}@media only screen and (max-width:600px),screen and (max-height:500px){h3{padding:0 20px}}h4{font-size:22px;font-style:italic;margin-top:0;text-align:center}p{font-size:20px;margin:0}@media only screen and (max-width:600px),screen and (max-height:500px){p{padding:0}}iframe body{margin:0}.tech_tags{display:flex;flex-wrap:wrap;padding:10px;justify-content:center;gap:5px}.tech_tags .tech_tag{background-color:#fff;color:#1a3440;font-size:14px;font-family:monospace;padding:4px 10px;border-radius:10px;margin:2px;box-shadow:.5px 5px 5px rgba(0,0,0,.2)}.stack-h>:not(:last-child){margin-right:1rem}.stack-h.sm>:not(:last-child){margin-right:.5rem}.stack-h.lg>:not(:last-child){margin-right:2rem}.stack-h.xl>:not(:last-child){margin-right:3rem}.stack>:not(:last-child){margin-bottom:1rem}.stack.sm>:not(:last-child){margin-bottom:.5rem}.stack.lg>:not(:last-child){margin-bottom:2rem}.stack.xl>:not(:last-child){margin-bottom:3rem}*{box-sizing:border-box}img{max-width:100%;max-height:100%;display:block}.content-block{display:flex;flex-direction:column}.content-block>*{margin-bottom:20px}.content-block pre{background:#142229;border-radius:10px;color:#fff;font-size:12px;padding:2rem;overflow:auto}.content-block:not(.text-first)>.text{order:1}.portfolio.content{margin:auto;border-radius:15px;display:flex;flex-direction:column;align-items:center;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory}@media only screen and (max-width:600px),screen and (max-height:500px){.portfolio.content>:not(:last-child){margin-bottom:0}}.page-wrapper{width:100%;display:flex}@media only screen and (max-width:600px),screen and (max-height:500px){.page-wrapper{padding:0}}.hex-thumbnail{width:180px;x:-10px;y:-10px;position:absolute;height:180px}main{background:#fff;display:flex;width:100%;flex-direction:column;height:100%}main .sidenav{height:100%;width:25%;max-width:300px;min-width:220px}@media only screen and (max-width:700px){main .sidenav{width:0;min-width:50px}}main .content{flex:1 1;height:100%;margin:auto;position:relative}main .hole-overlay{position:fixed;top:0;left:0;height:100%;width:50%;pointer-events:none;overflow:hidden;display:flex;align-items:center;justify-content:center}main .hole-overlay .hole{background:transparent;border-radius:100%;height:300px;width:300px}.hero-text{padding:4em}@media only screen and (max-width:600px),screen and (max-height:500px){.hero-text{padding:2em}}.hero-text p{font-size:20px}.hero-text p:not(:last-child){margin-bottom:20px}.hero-wrap{position:relative;width:100%;padding:0}@media only screen and (max-width:600px),screen and (max-height:500px){.hero-wrap{padding-left:0;padding-right:0}}.hero-wrap .hero{height:100%}.hero-wrap .hero h2{margin:2em}.project-content{display:flex;position:sticky;top:50px;height:calc(100vh - 50px)}.project-nav{height:100%;width:300px;background:#1a3440;padding-top:10px;padding-left:10px;z-index:1;flex-shrink:0;padding-right:25px;transition:transform .2s ease-in-out;position:relative;top:0;left:0}.project-nav.open>.project-nav-toggle{transform:translate(50%) rotate(90deg)}.project-nav.closed{transform:translateX(-275px)}.project-nav.closed>.project-nav-toggle{transform:translate(50%) rotate(270deg)}.project-nav .project-nav-toggle{position:absolute;bottom:10px;margin:auto;color:#fff;height:auto;flex-shrink:1;display:flex;font-size:20px;cursor:pointer;border-radius:100%;background:#1a3440;right:0;top:0;height:40px;width:40px;z-index:1}@media only screen and (max-width:1000px){.project-nav{position:absolute;top:0;left:0}}.project-nav li.nav-group{margin-bottom:10px}.project-nav ul{list-style:none;padding:0}.project-nav li a{background:#56b47e;color:#fff;padding:5px 10px;box-shadow:none;background:none;display:block;cursor:pointer;border-left:3px solid transparent;opacity:.7;text-decoration:none;transition:opacity .16s ease,border-color .16s ease,background .16s ease}.project-nav li a:hover{opacity:1}.project-nav li a.active{opacity:1;border-left-color:#fff;background:rgba(140,216,252,.34)}.project-nav li.nav-group>a{font-weight:600}.project-nav li.sub-item{margin-left:10px;padding:unset;font-size:.8rem}.post-scroll-container{overflow:auto;height:100%;width:100%;margin-left:50px}.post{margin:auto;max-width:50rem;padding-left:20px;padding-right:20px;padding-bottom:60px;position:relative;width:100%}.post hr{margin-top:3rem;border:5px solid #ffcf00}.post h2{margin:1em 2em;font-size:2.5em;line-height:1.2em}@media only screen and (max-width:600px),screen and (max-height:500px){.post{padding-left:0}.post h2{margin:1.5em .5em;font-size:2em}}.show-box{position:relative;background:#f5f5f5;display:flex;justify-content:center;align-items:center;height:100%;margin:auto;overflow:auto}.show-box.bg-black{background:#000}.show-box.bg-white{background:#fff}.show-box.full{min-height:80vh}.show-box.outline{border:solid #e2e0e0}.show-box.sm img{max-height:300px}.show-box.md img{max-height:450px}.show-box.lg{height:600px}.show-box img{background:#fff;max-height:600px}.show-box.iframe-wrapper{padding:30%}@media only screen and (max-width:600px),screen and (max-height:500px){.show-box.iframe-wrapper{padding:40%}.show-box#angular_momentum:not(.fullscreen){padding:110% 10%}}.show-box iframe{position:absolute;top:0;left:0;width:100%;height:100%;min-width:100%;max-width:100%;transition:width .1s linear,height .1s linear;border:none}.show-box .fullscreen-toggle{z-index:1;cursor:pointer;height:30px;padding:5px;width:30px;display:flex;justify-content:center;align-items:center;border-radius:5px;position:absolute;color:#56b47e;right:5px;top:5px;border:none;box-shadow:2px 2px 5px rgba(0,0,0,.2)}.show-box .fullscreen-toggle:hover{height:35px;width:35px;font-size:20px}.fullscreen{position:fixed;top:0;left:0;display:flex;background:rgba(0,0,0,.8);width:100%;height:100vh;z-index:9999;overflow:hidden}.fullscreen .show-box{max-height:calc(100vh - 50px);height:auto;top:25px}.fullscreen .show-box.iframe-wrapper{padding:0;width:100%;height:100%}.fullscreen .show-box img{max-height:100%}.fullscreen iframe{border:none;position:relative}@media only screen and (max-width:600px),screen and (max-height:500px){.fullscreen,.fullscreen.show-box,.fullscreen.show-box.iframe-wrapper{padding:0}}@media(min-aspect-ratio:8/5){.fullscreen{justify-content:center;align-items:unset}.fullscreen iframe{height:100%;min-width:unset}.fullscreen iframe[data-widthratio]{width:calc(100vh*attr(data-widthratio))}}.post-text{padding:0 2rem}.footer-bar{padding:10px;width:100%;height:20vh;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#f5f5f5;flex-shrink:0}@media only screen and (max-width:600px){.footer-bar{height:80px;padding:0}.footer-bar .filter-bar{background:#fff;height:100%;border-top:solid #f5f5f5}.footer-bar .filter-bar .filter-icon{padding:0;border-radius:0;width:unset;height:unset}.footer-bar .filter-text{display:none}}@media only screen and (max-height:500px){.footer-bar{height:60px;padding:0}.footer-bar .filter-bar{background:#fff;height:100%;border-top:#f5f5f5}.footer-bar .filter-bar .filter-icon{padding:0;border-radius:0;width:unset;height:unset}.footer-bar .filter-text{display:none}}.filter-bar{border-radius:10px;overflow:hidden}.filter-bar,.filter-bar .filter-icon{display:flex;width:100%;justify-content:center}.filter-bar .filter-icon{background:#fff;align-items:center;border-radius:100%;flex-grow:0;width:100px;height:100px;padding:20px;flex-direction:column;cursor:pointer}.filter-bar .filter-icon:not(:last-child){margin-right:10px}.filter-bar svg{cursor:pointer;font-size:2rem;margin:5px}.post-banner{height:100vh}.hub-banner{height:calc(80vh - 50px)}@media only screen and (max-width:600px){.hub-banner{height:calc(100vh - 130px)}}@media only screen and (max-height:500px){.hub-banner{height:calc(100vh - 130px)}}.abs-center{transform:translate(-50%,-50%);position:absolute;top:50%;padding-top:100px;left:50%;padding-bottom:50px}.spot-image{width:350px;height:350px;pointer-events:none;border-radius:100%;background-size:cover;border:1em solid #f5f5f5;background-position:50%}.image-caption{border-radius:10px;margin-top:10px;font-style:italic;font-size:16px}.image-caption strong{font-weight:900;font-family:sans-serif}@media only screen and (max-width:600px),screen and (max-height:500px){.image-caption{padding:0 20px}}.link-btn{border-radius:10px}.link-btn.lg{font-size:1.4em;padding:14px;margin:10px;border:solid}.banner{opacity:0;animation:fade-in .8s ease-out forwards;z-index:0;width:100%;flex-shrink:0;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;background-position:50% 50%;background-size:cover;background-attachment:fixed}.banner .blurb{text-align:center;line-height:1.2em;font-size:1.2em;max-width:600px;padding:40px;position:relative;box-shadow:4px 4px 9px rgba(0,0,0,.2);background:#fff;color:#1a3440}.banner .blurb a{margin:0;color:inherit;text-decoration:underline;padding:0;background:none}.banner .attribution{transform:translateX(10px);font-size:16px;margin-top:10px;font-style:italic}.banner .back-button{bottom:55px;left:0;padding:5px 10px;display:flex;align-items:center;cursor:pointer}.banner .back-button>:first-child{margin-right:5px}.banner h1{bottom:0;left:0;padding:10px 20px}.section-links{display:flex;flex-wrap:wrap;margin-top:2rem;justify-content:center;gap:1rem;max-width:600px;padding:0 20px;z-index:1}.section-links .section-link{width:100px;height:100px;flex-shrink:0;margin:0;padding:0;display:flex;align-items:center;justify-content:center;overflow:hidden;border:solid #fff;border-radius:100%;background:#fff;color:#1a3440;font-size:1.2em;text-transform:uppercase;text-decoration:none;box-shadow:1px 5px 5px rgba(0,0,0,.4);transition:transform .2s ease,box-shadow .2s ease}.section-links .section-link img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.section-links .section-link:hover{text-decoration:none;transform:translateY(-5px) scale(1.15);box-shadow:1px 9px 14px rgba(0,0,0,.5)}.scroll-down-button{position:absolute;bottom:10px;margin:auto;color:#fff;background:rgba(0,0,0,.5);display:flex;padding:10px;border-radius:100%;font-size:20px;cursor:pointer}.banner-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,9,35,.46);pointer-events:none;z-index:-1}.image-column{display:flex;flex-wrap:wrap;flex-direction:column;justify-content:center;margin:auto}.image-column>.image-wrap{max-width:100%}.image-row{display:flex;flex-wrap:wrap;flex-direction:row;justify-content:center}.image-row>.image-wrap{max-width:50%}@media only screen and (max-width:600px){.image-row{flex-direction:column}.image-row>.image-wrap{max-height:50%;max-width:100%}}.image-wrap{background:rgba(0,0,0,.8);position:relative;display:flex;align-items:center;margin:auto}.LazyLoad{opacity:0;transition:all 1s ease-in-out}.is-visible{opacity:1}.fade-in{animation-timing-function:ease;animation-duration:.8s;animation-fill-mode:forwards;opacity:0;animation-name:fade-in}.slide-in{animation-timing-function:ease;animation-duration:.8s;animation-fill-mode:forwards;opacity:0}.slide-in.left{animation-name:slide-in-l;transform:translateX(-10%)}.slide-in.right{animation-name:slide-in-r;transform:translateX(10%)}.slide-in.top{animation-name:slide-in-t;transform:translateY(-10%)}.slide-in.bottom{animation-name:slide-in-b;transform:translateY(10%)}.annotations{position:absolute;top:0;left:0;width:100%;height:100%;font-family:sans-serif;font-weight:500}.annotations .preview{width:100%}.annotations .anchor{transform:translate(-5px,-5px);width:10px;height:10px;font-size:1.2em;background:#fff;pointer-events:none}.annotations .anchor,.annotations .label-mark,.annotations .mark{position:absolute;display:flex;align-items:center;justify-content:center;border-radius:100%;box-shadow:0 -1px 8px 1px rgba(0,0,0,.153)}.annotations .label-mark,.annotations .mark{opacity:0;font-size:1em;background:#56b47e;transition:width .1s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;animation:fade-in .5s ease forwards}.annotations .mark{width:12px;height:12px;transform:translate(-6px,-3px)}.annotations .label-mark{width:30px;height:30px;transform:translate(-15px,-15px)}.annotations .connector{height:4px;display:block;transform-origin:left;pointer-events:none;animation:fade-in .5s ease forwards}.annotations .connector,.annotations .label{opacity:0;position:absolute;background:#56b47e;box-shadow:0 -1px 8px 1px rgba(0,0,0,.153)}.annotations .label{text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transform:translate(-50%,-50%) scale(1);color:#fff;padding:4px 8px;animation:grow-in .5s ease-out forwards;font-size:.7em}.banner .back-button,.banner h1{position:absolute;font-family:Courier New,Courier,monospace;font-weight:200;text-align:center;font-weight:300;background:#fff;font-size:1em;margin:20px;color:#000;z-index:1;transform-style:preserve-3d;box-shadow:1px 2px 9px rgba(0,0,0,.2)}@keyframes lower-sm{0%{transform:translateZ(0)}to{transform:translate3d(-4px,2px,-1px)}}@keyframes lower{0%{transform:translateZ(0)}to{transform:translate3d(-8px,6px,-2px)}}@keyframes grow-in{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}80%{opacity:1;transform:translate(-50%,-50%) scale(1.2)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes shrink-in{0%{opacity:0;transform:scale(1.5)}to{opacity:1;transform:scale(1)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes background-color{0%{background:#124357}to{background:#5390a8}}@keyframes turn-in{0%{opacity:0;transform:rotateY(70deg)}to{opacity:1;transform:rotate(0deg)}}@keyframes spin{0%{transform:rotate(-15deg)}to{transform:rotate(0deg)}}@keyframes slide-in-b{0%{transform:translateY(10%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes slide-in-t{0%{transform:translateY(-10%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slide-in-r{0%{transform:translateX(10%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes slide-in-l{0%{transform:translateX(-10%);opacity:0}to{transform:translateX(0);opacity:1}}