.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}html{font-size:18px;--c-text: #1a1a1a;--c-bg: #fafafa;--c-muted: #999;--c-border: #e5e5e5;--c-line: #ccc;--c-text-dim: rgba(26, 26, 26, .4);--c-card-bg: rgba(255, 255, 255, .92);--c-card-shadow: rgba(0, 0, 0, .1);--c-card-shadow-sm: rgba(0, 0, 0, .05)}@media(prefers-color-scheme:dark){html{--c-text: #e5e5e5;--c-bg: #111;--c-muted: #777;--c-border: #222;--c-line: #555;--c-text-dim: rgba(229, 229, 229, .4);--c-card-bg: rgba(30, 30, 30, .92);--c-card-shadow: rgba(0, 0, 0, .3);--c-card-shadow-sm: rgba(0, 0, 0, .15)}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,-apple-system,sans-serif;line-height:1.6;color:var(--c-text);background:var(--c-bg);height:100dvh;overflow:hidden;display:grid;grid-template-columns:1fr min(26rem,100% - 3rem) 1fr}body>*{grid-column:2}.col-center:before,.col-center:after{content:"";position:fixed;left:0;right:0;height:5rem;z-index:10;pointer-events:none}.col-center:before{top:0;background:linear-gradient(to bottom,var(--c-bg) 0%,var(--c-bg) 10%,color-mix(in srgb,var(--c-bg) 95%,transparent) 25%,color-mix(in srgb,var(--c-bg) 80%,transparent) 45%,color-mix(in srgb,var(--c-bg) 50%,transparent) 65%,color-mix(in srgb,var(--c-bg) 20%,transparent) 80%,transparent 100%)}.col-center:after{bottom:0;background:linear-gradient(to top,var(--c-bg) 0%,var(--c-bg) 10%,color-mix(in srgb,var(--c-bg) 95%,transparent) 25%,color-mix(in srgb,var(--c-bg) 80%,transparent) 45%,color-mix(in srgb,var(--c-bg) 50%,transparent) 65%,color-mix(in srgb,var(--c-bg) 20%,transparent) 80%,transparent 100%)}.col-center{grid-column:1 / -1;grid-row:1;overflow-y:auto;scroll-behavior:smooth;scrollbar-width:none;scroll-padding-top:2rem;view-transition-name:col-center;display:grid;grid-template-columns:1fr min(26rem,100% - 3rem) 1fr}.col-center::-webkit-scrollbar{display:none}.col-center>*{grid-column:2}.col-center>main{padding-top:20svh;padding-bottom:1.5rem;position:relative}header p{opacity:.4}main{flex:1}main>*{margin-bottom:2em}main>*:last-child{margin-bottom:4em}main>p{transition:color .3s var(--t-ease)}main>p:has(a:hover){color:var(--c-text-dim)}main>p:has(a:hover) a:hover{color:var(--c-text)}.connect-link{color:var(--c-muted)}.signature{display:block;max-width:100%;height:auto;margin-bottom:.5em}.signature path{fill:none;stroke:var(--c-text);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}@media(prefers-reduced-motion:no-preference){.entrance .signature path{stroke-dasharray:1;stroke-dashoffset:1;animation:draw-sig 1.4s var(--t-ease) calc(var(--t-entrance-stagger) * 2.3 + var(--t-entrance-duration) * .5) both}@keyframes draw-sig{to{stroke-dashoffset:0}}.entrance>main>.signature~p{animation-delay:calc(var(--t-entrance-stagger) * 2.3 + var(--t-entrance-duration) * .5 + 1.4s)}.entrance>main>.signature~footer{animation-delay:calc(var(--t-entrance-stagger) * 2.3 + var(--t-entrance-duration) * .5 + 1.4s + var(--t-entrance-stagger) * 3)}}h1,h2,h3,p{font-size:1rem;font-weight:400}h2{margin-bottom:0;opacity:.4}#recent{margin-top:8em}a{color:inherit;display:inline;text-decoration:none}.project-back-top{position:absolute;top:6rem;left:0;z-index:5;font-size:.8125rem;color:var(--c-muted);text-decoration:none;margin:0}.project-back-top:hover{color:var(--c-text)}@media(min-width:1024px){.project-back-top{display:none}}.project-list{display:flex;flex-direction:column}.project-row{display:flex;align-items:center;height:48px;gap:1em;text-decoration:none;color:inherit;border-top:.1em solid var(--c-border)}.project-row:first-child{border-top:none}.project-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-date{flex-shrink:0;color:var(--c-muted)}@media(hover:hover){.project-list:hover .project-row>*{opacity:.25}.project-list:hover .project-row:hover>*{opacity:1}}.project-list:active .project-row>*{opacity:.25}.project-list:active .project-row:active>*{opacity:1}@media(prefers-reduced-motion:no-preference){@keyframes entrance-drop{0%{opacity:0;transform:translateY(calc(var(--t-slide-y) * -1))}}.entrance>main>*{animation:entrance-drop var(--t-entrance-duration) var(--t-ease) both}.entrance>main>*:nth-child(1){animation-delay:0s}.entrance>main>*:nth-child(2){animation-delay:calc(var(--t-entrance-stagger) * 1)}.entrance>main>*:nth-child(3){animation-delay:calc(var(--t-entrance-stagger) * 1.6)}.entrance>main>*:nth-child(4){animation-delay:calc(var(--t-entrance-stagger) * 2)}.entrance>main>*:nth-child(5){animation-delay:calc(var(--t-entrance-stagger) * 2.3)}.entrance>main>*:nth-child(6){animation-delay:calc(var(--t-entrance-stagger) * 2.52)}.entrance>main>*:nth-child(7){animation-delay:calc(var(--t-entrance-stagger) * 2.7)}.entrance>main>*:nth-child(8){animation-delay:calc(var(--t-entrance-stagger) * 2.85)}.entrance>main>*:nth-child(9){animation-delay:calc(var(--t-entrance-stagger) * 2.97)}.entrance>main>*:nth-child(10){animation-delay:calc(var(--t-entrance-stagger) * 3.07)}.entrance>main>*:nth-child(11){animation-delay:calc(var(--t-entrance-stagger) * 3.15)}.entrance>main>*:nth-child(12){animation-delay:calc(var(--t-entrance-stagger) * 3.22)}.entrance>main>*:nth-child(13){animation-delay:calc(var(--t-entrance-stagger) * 3.28)}.entrance>main>*:nth-child(14){animation-delay:calc(var(--t-entrance-stagger) * 3.33)}.entrance>main>*:nth-child(15){animation-delay:calc(var(--t-entrance-stagger) * 3.37)}.entrance>main>*:nth-child(16){animation-delay:calc(var(--t-entrance-stagger) * 3.4)}.entrance>main>*:nth-child(17){animation-delay:calc(var(--t-entrance-stagger) * 3.43)}.entrance>main>*:nth-child(18){animation-delay:calc(var(--t-entrance-stagger) * 3.45)}.entrance>main>*:nth-child(19){animation-delay:calc(var(--t-entrance-stagger) * 3.47)}.entrance>main>*:nth-child(20){animation-delay:calc(var(--t-entrance-stagger) * 3.49)}.entrance>main>.project-list{animation:none}.entrance .project-row{animation:entrance-drop var(--t-entrance-duration) var(--t-ease) both}.entrance .project-row:nth-child(1){animation-delay:calc(var(--t-entrance-stagger) * 2.3)}.entrance .project-row:nth-child(2){animation-delay:calc(var(--t-entrance-stagger) * 2.52)}.entrance .project-row:nth-child(3){animation-delay:calc(var(--t-entrance-stagger) * 2.7)}.entrance .project-row:nth-child(4){animation-delay:calc(var(--t-entrance-stagger) * 2.85)}.entrance .project-row:nth-child(5){animation-delay:calc(var(--t-entrance-stagger) * 2.97)}.entrance .project-row:nth-child(6){animation-delay:calc(var(--t-entrance-stagger) * 3.07)}.entrance .project-row:nth-child(7){animation-delay:calc(var(--t-entrance-stagger) * 3.15)}.entrance .project-row:nth-child(8){animation-delay:calc(var(--t-entrance-stagger) * 3.22)}}.project-sidebar{grid-column:1;grid-row:1;align-self:start;z-index:1;pointer-events:none;width:100%;padding-left:1.5rem;padding-right:3rem;padding-top:20svh;font-size:.8125rem;text-align:right;display:none}.project-sidebar a{pointer-events:auto}@media(min-width:1024px){.project-sidebar{display:block}}.project-sidebar a{background-image:none;color:var(--c-muted);padding-bottom:0}.project-sidebar a:hover{background-image:none;color:var(--c-text)}.sidebar-back{display:block;margin-bottom:1.5rem;view-transition-name:sidebar-index}.sidebar-sections{view-transition-name:sidebar-sections;display:flex;flex-direction:column;gap:.25rem}.section-slot:empty{display:none}.section-slot:nth-child(1){view-transition-name:section-0}.section-slot:nth-child(2){view-transition-name:section-1}.section-slot:nth-child(3){view-transition-name:section-2}.section-slot:nth-child(4){view-transition-name:section-3}.section-slot:nth-child(5){view-transition-name:section-4}.section-slot:nth-child(6){view-transition-name:section-5}.section-slot:nth-child(7){view-transition-name:section-6}.section-slot:nth-child(8){view-transition-name:section-7}.section-slot:nth-child(9){view-transition-name:section-8}.section-slot:nth-child(10){view-transition-name:section-9}.section-slot:nth-child(11){view-transition-name:section-10}.section-slot:nth-child(12){view-transition-name:section-11}.section-slot:nth-child(13){view-transition-name:section-12}.section-slot:nth-child(14){view-transition-name:section-13}.section-slot:nth-child(15){view-transition-name:section-14}.section-slot:nth-child(16){view-transition-name:section-15}.section-slot:nth-child(17){view-transition-name:section-16}.section-slot:nth-child(18){view-transition-name:section-17}.section-slot:nth-child(19){view-transition-name:section-18}.section-slot:nth-child(20){view-transition-name:section-19}@media(prefers-reduced-motion:no-preference){.sidebar-entrance{animation:sidebar-entrance var(--t-duration) var(--t-ease) var(--t-sidebar-delay) both}@keyframes sidebar-entrance{0%{opacity:0;transform:translate(calc(var(--t-sidebar-x) * -1))}}}.mobile-nav{display:none;position:fixed;top:50%;right:0;transition:right .1s ease-out,opacity .3s var(--t-ease);transform:translateY(-50%);z-index:100;opacity:0}.mobile-nav.is-visible{opacity:1}.mobile-nav.is-open{right:.5rem}@media(max-width:1023px){.mobile-nav{display:block}}.mobile-nav-body{display:flex;flex-direction:column;align-items:flex-end;gap:5px;width:calc(12px + 1rem);padding:.5rem;cursor:pointer;border-radius:12px;transition:background .1s var(--t-ease),box-shadow .1s var(--t-ease),width .3s var(--t-ease),padding .3s var(--t-ease),gap .3s var(--t-ease)}.is-open .mobile-nav-body{background:var(--c-card-bg);backdrop-filter:blur(50px);-webkit-backdrop-filter:blur(50px);box-shadow:0 4px 30px var(--c-card-shadow),0 1px 4px var(--c-card-shadow-sm);width:calc(var(--mn-width-px, 120px) + 2rem);padding:.75rem 1rem;gap:0px;cursor:default}.mn-item{position:relative;height:2px;width:12px;pointer-events:none;text-decoration:none;color:var(--c-muted);font-size:.8125rem;text-align:right;transition:height .3s var(--t-ease),width .3s var(--t-ease),margin .3s var(--t-ease)}.mn-empty{display:none}.mn-item:nth-child(n+5):not(.mn-empty){height:0}.mn-line,.mn-label{position:absolute;top:50%;right:0;transform:translateY(-50%)}.mn-line{width:12px;height:2px;background:var(--c-line);border-radius:1px;transition:width .3s var(--t-ease),opacity .3s var(--t-ease) .08s;pointer-events:none}.is-open .mn-line{transition:width .3s var(--t-ease),opacity .3s var(--t-ease)}.is-open .mn-line{width:var(--mn-width-px, 120px);opacity:0}.mn-label{opacity:0;white-space:nowrap;overflow:hidden;max-width:100%;transform:translateY(-50%) scale(.7);transform-origin:right center;transition:opacity .3s var(--t-ease),transform .3s var(--t-ease)}.is-open .mn-item{height:2.2rem;width:var(--mn-width-px, 120px);min-width:7ch;pointer-events:auto}.is-open .mn-item:nth-child(n+5):not(.mn-empty){height:2.2rem}.is-open .mn-label{opacity:1;transform:translateY(-50%) scale(1)}.is-ready .mn-item:hover{color:var(--c-text)}.is-open .mn-index{margin-bottom:.25rem}@media(prefers-reduced-motion:no-preference){.is-open .mn-item:nth-child(1) .mn-label{transition-delay:.04s}.is-open .mn-item:nth-child(2) .mn-label{transition-delay:.08s}.is-open .mn-item:nth-child(3) .mn-label{transition-delay:.11s}.is-open .mn-item:nth-child(4) .mn-label{transition-delay:.13s}.is-open .mn-item:nth-child(5) .mn-label{transition-delay:.15s}.is-open .mn-item:nth-child(6) .mn-label{transition-delay:.16s}.is-open .mn-item:nth-child(7) .mn-label{transition-delay:.17s}.is-open .mn-item:nth-child(8) .mn-label{transition-delay:.175s}.is-open .mn-item:nth-child(9) .mn-label{transition-delay:.18s}.is-open .mn-item:nth-child(10) .mn-label{transition-delay:.185s}}.footer-index{display:none;margin-top:1rem}@media(max-width:1023px){.footer-index{display:block}}footer{margin-top:4rem;color:var(--c-muted);font-size:.875rem}:root{--t-duration: .3s;--t-entrance-duration: .8s;--t-stagger: .2s;--t-sidebar-delay: .3s;--t-entrance-stagger: .12s;--t-section-stagger: .06s;--t-slide-x: 4em;--t-slide-y: -2em;--t-sidebar-x: 2em;--t-ease: cubic-bezier(.32, .72, 0, 1);--t-ease-in-out: cubic-bezier(.65, 0, .35, 1)}@media(prefers-reduced-motion:no-preference){@keyframes slide-out-left{to{opacity:0;transform:translate(calc(var(--t-slide-x) * -1))}}@keyframes slide-in-from-right{0%{opacity:0;transform:translate(var(--t-slide-x))}}@keyframes slide-out-right{to{opacity:0;transform:translate(var(--t-slide-x))}}@keyframes slide-in-from-left{0%{opacity:0;transform:translate(calc(var(--t-slide-x) * -1))}}@keyframes slide-out-down{to{opacity:0;transform:translateY(var(--t-slide-y))}}@keyframes slide-in-from-top{0%{opacity:0;transform:translateY(calc(var(--t-slide-y) * -1))}}@keyframes slide-out-up{to{opacity:0;transform:translateY(calc(var(--t-slide-y) * -1))}}@keyframes slide-in-from-bottom{0%{opacity:0;transform:translateY(var(--t-slide-y))}}@keyframes sidebar-out-left{to{opacity:0;transform:translate(calc(var(--t-sidebar-x) * -1))}}@keyframes sidebar-in-from-left{0%{opacity:0;transform:translate(calc(var(--t-sidebar-x) * -1))}}@keyframes sidebar-out-right{to{opacity:0;transform:translate(var(--t-sidebar-x))}}@keyframes sidebar-in-from-right{0%{opacity:0;transform:translate(var(--t-sidebar-x))}}}
