*,*:before,*:after{box-sizing:border-box}:root{--cobalt: #003a8f;--cobalt-deep: #002d6b;--white: #ffffff;--white-soft: rgba(255, 255, 255, .72);--white-faint: rgba(255, 255, 255, .14);--max-width: 56rem;--nav-height: 3.75rem;--footer-height: 4.25rem}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;min-height:100dvh;padding-top:var(--nav-height);padding-bottom:var(--footer-height);font-family:IBM Plex Sans,system-ui,sans-serif;font-weight:300;font-size:1.0625rem;line-height:1.65;color:var(--white);background:var(--cobalt);text-transform:lowercase;-webkit-font-smoothing:antialiased;cursor:url(/cursor.svg) 10 10,auto}a,button{cursor:url(/cursor-hover.svg) 12 12,pointer}a{color:inherit;text-decoration:none}.skip-link{position:absolute;left:-9999px;top:0;z-index:100;padding:.75rem 1rem;background:var(--white);color:var(--cobalt)}.skip-link:focus{left:1rem;top:1rem}.site-header{position:fixed;top:0;left:0;right:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:clamp(2rem,6vw,4rem);height:var(--nav-height);padding:0 clamp(1.75rem,5vw,3rem);background:#003a8feb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--white-faint)}.logo{font-size:1.125rem;font-weight:500;letter-spacing:.02em}.site-nav{display:flex;align-items:center;gap:.5rem}.nav-link{display:flex;align-items:center;gap:.35rem;padding:.4rem .65rem;border-radius:999px;color:var(--white-soft);transition:color .15s ease,background .15s ease}.nav-link:hover,.nav-link.is-active{color:var(--white);background:var(--white-faint)}.nav-icon{display:flex;width:1.125rem;height:1.125rem}.nav-icon svg{width:100%;height:100%}main{width:min(100%,var(--max-width));margin:0 auto;padding:0 clamp(1.25rem,4vw,2.5rem) 2rem}.section{padding:2rem 0;scroll-margin-top:var(--nav-height)}.section+.section{border-top:1px solid var(--white-faint)}.hero{display:flex;flex-direction:column;justify-content:center}@media(min-width:768px){html,body{height:100%;overflow:hidden}body:not(.page-scroll){display:block;min-height:100dvh}main:not(.about-page):not(.projects-page):not(.blog-page):not(.post-page){display:grid;grid-template-columns:1.1fr .9fr;grid-template-rows:repeat(3,auto);gap:clamp(1rem,2.5vh,2rem) clamp(1.5rem,4vw,3rem);align-content:center;width:min(100%,52rem);height:calc(100dvh - var(--nav-height) - var(--footer-height));padding:clamp(1rem,3vh,2rem) clamp(1.5rem,4vw,2.5rem);overflow:hidden}.section{min-height:0;padding:0;border:none}.section+.section{border-top:none}.hero{grid-column:1;grid-row:1 / -1;justify-content:center;padding-right:.5rem}#about{grid-column:2;grid-row:1;display:flex;flex-direction:column;justify-content:flex-start}#work{grid-column:2;grid-row:2;display:flex;flex-direction:column;justify-content:flex-start;border-top:1px solid var(--white-faint);padding-top:clamp(.75rem,2vh,1.25rem)}#blog{grid-column:2;grid-row:3;display:flex;flex-direction:column;justify-content:flex-start;border-top:1px solid var(--white-faint);padding-top:clamp(.75rem,2vh,1.25rem)}main.about-page,main.projects-page,main.blog-page,main.post-page{display:block;width:min(100%,40rem);margin:0 auto;overflow:visible;padding:clamp(2rem,8vh,4rem) clamp(1.25rem,4vw,2.5rem) 3rem}main.about-page>h1,main.projects-page>h1,main.blog-page>h1,main.post-page .post-title{font-size:1.125rem;font-weight:500;letter-spacing:.04em;line-height:1.2;margin-bottom:1.5rem}h1{font-size:clamp(2.75rem,7vh,5rem);margin-bottom:.75rem}.lede{font-size:clamp(1rem,2vh,1.125rem)}p{font-size:clamp(.875rem,1.6vh,1rem);line-height:1.5}.eyebrow{margin-bottom:.5rem;font-size:.8125rem}}.eyebrow{margin:0 0 1rem;font-size:.875rem;letter-spacing:.08em;color:var(--white-soft)}h1{margin:0 0 1.25rem;font-size:clamp(3rem,12vw,5.5rem);font-weight:400;line-height:1.05;letter-spacing:-.03em}h2{margin:0 0 .75rem;font-size:1.125rem;font-weight:500;letter-spacing:.04em;color:var(--white)}.lede{margin:0;max-width:32ch;font-size:1.25rem;color:var(--white-soft)}.caps{text-transform:uppercase}p{margin:0;max-width:52ch;color:var(--white-soft)}.social-links{display:flex;align-items:center;gap:0;margin:1.5rem 0 0;padding:0;list-style:none}.social-links a{display:flex;padding:.45rem;border-radius:999px;color:var(--white-soft);transition:color .15s ease,background .15s ease}.social-links a:hover{color:var(--white);background:var(--white-faint)}.social-icon{display:flex;width:1.5rem;height:1.5rem}.social-icon svg{width:100%;height:100%}.project-featured{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;color:inherit}.project-featured:hover .project-name{text-decoration-color:var(--white)}.project-logo{flex-shrink:0;width:2.25rem;height:2.25rem;object-fit:contain;filter:invert(1) brightness(2)}.project-featured-text{display:flex;flex-direction:column;gap:.15rem}.project-name{color:var(--white);text-decoration:underline;text-decoration-color:var(--white-faint);text-underline-offset:.2em}.project-status{font-size:.8125rem;color:var(--white-soft)}.project-group-label{margin:0 0 .5rem;font-size:.875rem;color:var(--white-soft)}.project-list{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;margin:0;padding:0;list-style:none;color:var(--white-soft)}.project-list li{display:flex;flex-direction:column;gap:.1rem}.project-list a{color:var(--white);text-decoration:underline;text-decoration-color:var(--white-faint);text-underline-offset:.2em}.project-list a:hover{text-decoration-color:var(--white)}.pill-link{display:inline-flex;align-self:flex-start;width:fit-content;max-width:100%;align-items:center;gap:.4rem;margin-top:1rem;padding:.45rem .75rem;border:1px solid var(--white-faint);border-radius:999px;color:var(--white);font-size:.8125rem;text-decoration:none;transition:border-color .15s ease,background-color .15s ease}.pill-link:hover{border-color:#ffffff73;background:#ffffff14}.pill-link-arrow{width:.9rem;height:.9rem;flex-shrink:0;opacity:.85;transition:transform .15s ease}.pill-link:hover .pill-link-arrow{transform:translate(2px)}body.page-scroll{min-height:100dvh;height:auto;overflow:auto}main.about-page,main.projects-page,main.blog-page,main.post-page{display:block;width:min(100%,40rem)}.projects-page h1{margin:0 0 1.5rem;color:var(--white)}.projects-list{display:flex;flex-direction:column;gap:0}.projects-list>.project-group-label{margin-top:1.25rem}.projects-list>.project-group-label:first-child{margin-top:0}.project-card{border-top:1px solid var(--white-faint);padding-top:1.25rem;margin-top:.5rem}.project-card-featured{border-top:none;padding-top:0;margin-top:.5rem}.project-card-link{display:flex;align-items:flex-start;gap:.75rem;color:inherit;text-decoration:none}.project-card-logo-spacer{flex-shrink:0;width:2.25rem;height:2.25rem}.project-card-link:hover .project-card-name{text-decoration-color:var(--white)}.project-card-logo{flex-shrink:0;width:2.25rem;height:2.25rem;object-fit:contain;filter:invert(1) brightness(2)}.project-card-text{display:flex;flex-direction:column;gap:.35rem}.project-card-name{margin:0;font-size:1rem;font-weight:500;color:var(--white);text-decoration:underline;text-decoration-color:var(--white-faint);text-underline-offset:.2em;width:fit-content}.project-card-status{margin:0;font-size:.8125rem;color:var(--white-soft)}.project-card-description{margin:0;max-width:52ch;font-size:.9375rem;line-height:1.55;color:var(--white-soft)}.about-page h1{margin:0 0 1.5rem;color:var(--white)}.article-prose{text-transform:none;max-width:52ch;font-size:.9375rem;line-height:1.65;color:var(--white-soft)}.article-prose p{margin:0 0 1.15rem}.article-prose p:last-child{margin-bottom:0}.article-prose ul{margin:0 0 1.15rem;padding-left:1.25rem}.article-prose li{margin-bottom:.35rem}.article-prose a{color:var(--white);text-decoration:underline;text-decoration-color:var(--white-faint);text-underline-offset:.2em}.article-prose a:hover{text-decoration-color:var(--white)}.blog-group-label{margin:0 0 .5rem;font-size:.875rem;color:var(--white-soft)}.blog-featured{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:.15rem;color:inherit}.blog-featured:hover .blog-post-title{text-decoration-color:var(--white)}.blog-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;color:var(--white);opacity:.9}.blog-icon svg{width:1.5rem;height:1.5rem}.blog-featured-text{display:flex;flex-direction:column;gap:.15rem;min-width:0}.blog-post-title{color:var(--white);text-decoration:underline;text-decoration-color:var(--white-faint);text-underline-offset:.2em}.blog-post-date{font-size:.8125rem;color:var(--white-soft)}.blog-post-excerpt{margin-top:.2rem;font-size:.8125rem;line-height:1.45;color:var(--white-soft);text-transform:none;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.blog-page h1,.post-title{margin:0 0 1.5rem;color:var(--white)}.post-title{text-transform:none}.blog-list{display:flex;flex-direction:column;gap:1.5rem}.blog-card{border-top:1px solid var(--white-faint);padding-top:1.25rem}.blog-card:first-child{border-top:none;padding-top:0}.blog-card-link{display:block;color:inherit;text-decoration:none}.blog-card-link:hover .blog-card-title{text-decoration-color:var(--white)}.blog-card-title{margin:0 0 .35rem;font-size:1rem;font-weight:500;color:var(--white);text-decoration:underline;text-decoration-color:var(--white-faint);text-underline-offset:.2em}.blog-card-date{margin:0 0 .5rem;font-size:.8125rem;color:var(--white-soft)}.blog-card-excerpt{margin:0;max-width:52ch;font-size:.9375rem;line-height:1.55;color:var(--white-soft);text-transform:none}.post-back{display:inline-block;margin-bottom:1.25rem;font-size:.8125rem;color:var(--white-soft);text-decoration:underline;text-decoration-color:var(--white-faint);text-underline-offset:.2em}.post-back:hover{color:var(--white);text-decoration-color:var(--white)}.post-date{margin:-.75rem 0 1.25rem;font-size:.8125rem;color:var(--white-soft);text-transform:none}.click-explosion{position:fixed;pointer-events:none;z-index:9998;transform:translate(-50%,-50%)}.click-spark{position:absolute;left:0;top:0;border-radius:50%;transform:translate(-50%,-50%);animation:spark-burst ease-out forwards}.click-spark--fast{animation-name:spark-burst-fast}.click-spark--rapid{animation-name:spark-burst-rapid}.click-spark--frenzy{box-shadow:0 0 8px #fffc;animation-name:spark-burst-frenzy}.click-spark--charge-max{box-shadow:0 0 10px #fff5c8e6}.charge-ring{position:fixed;width:3.5rem;height:3.5rem;border-radius:50%;pointer-events:none;z-index:9997;border:2px solid rgba(255,255,255,.55);background:radial-gradient(circle,#ffffff2e,#fff0 70%);transform:translate(-50%,-50%) scale(.35);opacity:.25;transition:opacity .1s ease}.charge-burst{position:absolute;left:0;top:0;border-radius:50%;border:2px solid rgba(255,255,255,.7);transform:translate(-50%,-50%);animation:charge-shockwave ease-out forwards}.charge-burst--high{width:2.5rem;height:2.5rem;animation-duration:.52s}.charge-burst--max{width:3rem;height:3rem;border-width:3px;animation-duration:.68s}body.is-charging{cursor:url(/cursor-hover.svg) 12 12,pointer}body.is-charged{cursor:url(/cursor-hover.svg) 12 12,pointer}body.is-dragging,body.is-dragging *{user-select:none;-webkit-user-select:none;cursor:url(/cursor-hover.svg) 12 12,grabbing!important}.trail-layer{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:9996;overflow:visible;transition:opacity .7s ease}.trail-layer.is-fading{opacity:0}.trail-ember{position:fixed;width:.2rem;height:.2rem;border-radius:50%;pointer-events:none;background:#ffffffd9;box-shadow:0 0 6px #dcebffe6;transform:translate(-50%,-50%);animation:trail-ember .76s ease-out forwards}.trail-ember--head{width:.3rem;height:.3rem;animation:trail-ember-head .42s ease-out forwards}.trail-head{position:fixed;width:.45rem;height:.45rem;border-radius:50%;pointer-events:none;background:#fff;box-shadow:0 0 8px #fffffff2,0 0 16px #bedcffa6;transform:translate(-50%,-50%)}@keyframes trail-ember{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,calc(-50% - 10px)) scale(.2)}}@keyframes trail-ember-head{0%{opacity:1;transform:translate(-50%,-50%) scale(1.2)}to{opacity:0;transform:translate(-50%,calc(-50% - 6px)) scale(.4)}}@keyframes spark-burst{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.2)}}@keyframes spark-burst-fast{0%{opacity:1;transform:translate(-50%,-50%) scale(1.1)}to{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.15)}}@keyframes spark-burst-rapid{0%{opacity:1;transform:translate(-50%,-50%) scale(.9)}60%{opacity:.8}to{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.1)}}@keyframes spark-burst-frenzy{0%{opacity:1;transform:translate(-50%,-50%) scale(1.4)}to{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.35)}}@keyframes charge-shockwave{0%{opacity:.9;transform:translate(-50%,-50%) scale(.4)}to{opacity:0;transform:translate(-50%,-50%) scale(5)}}@media(prefers-reduced-motion:reduce){.click-explosion,.charge-ring{display:none}}.site-footer{position:fixed;bottom:0;left:0;right:0;z-index:10;display:flex;flex-shrink:0;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;min-height:var(--footer-height);padding:.75rem clamp(1.5rem,4vw,2.5rem) .85rem;background:#003a8feb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--white-faint)}.site-backlinks{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.facts{display:flex;align-items:center;justify-content:center;width:min(100%,var(--max-width));min-height:2.7rem;margin:0 auto;padding:0;border:none;background:none;font:inherit;color:inherit;text-align:center;text-transform:lowercase;cursor:url(/cursor-hover.svg) 12 12,pointer}.fact-text{margin:0 auto;min-height:2.7rem;max-height:2.7rem;max-width:36rem;font-size:.8125rem;line-height:1.4;color:var(--white-soft);text-align:center;transition:opacity .18s ease;pointer-events:none;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.fact-text.is-changing{opacity:0}.facts:hover .fact-text{color:var(--white)}@media(min-width:768px){html:has(body.page-scroll),body.page-scroll{height:auto;min-height:100dvh;overflow:auto}}@media(max-width:767px){.site-header{gap:1.25rem}.site-nav{gap:.25rem}.nav-link span:last-child{display:none}.nav-link{padding:.45rem}.section{padding:2.5rem 0}}
