footer[data-astro-cid-sz7xmlte]{margin-top:auto;padding:2.5rem 2rem;text-align:center;color:var(--gray-400);font-size:var(--text-sm);border-top:1px solid var(--gray-800);display:flex;flex-direction:column;gap:.5rem}footer[data-astro-cid-sz7xmlte] p[data-astro-cid-sz7xmlte]{margin:0}.footer-contact[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{color:var(--accent-regular);text-decoration:none;font-weight:500;transition:color var(--theme-transition)}.footer-contact[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]:hover{color:var(--accent-dark)}.claude-credit[data-astro-cid-sz7xmlte]{font-size:var(--text-xs);color:var(--gray-500);opacity:.6}@media(min-width:50em){footer[data-astro-cid-sz7xmlte]{padding:2.5rem 5rem;flex-direction:row;justify-content:space-between;align-items:center;gap:3rem}.footer-contact[data-astro-cid-sz7xmlte]{position:relative;right:auto;margin-right:6rem}.claude-credit[data-astro-cid-sz7xmlte]{margin-left:auto}}:root{--gray-0: #2a2a2a;--gray-50: #3a3a3a;--gray-100: #4a4a4a;--gray-200: #5a5a5a;--gray-300: #707070;--gray-400: #909090;--gray-500: #a0a0a0;--gray-600: #b8b8b8;--gray-700: #d0d0d0;--gray-800: #e5e5e0;--gray-900: #f0f0e8;--gray-999-basis: 48, 20%, 97%;--gray-999_40: hsla(var(--gray-999-basis), .4);--gray-999: #f8f8f0;--accent-light: #6a6a6a;--accent-regular: #4a4a4a;--accent-dark: #2a2a2a;--accent-overlay: hsla(0, 0%, 29%, .1);--accent-subtle-overlay: hsla(0, 0%, 29%, .05);--accent-text-over: var(--gray-999);--link-color: var(--accent-regular);--gradient-stop-1: var(--gray-800);--gradient-stop-2: var(--gray-800);--gradient-stop-3: var(--gray-800);--gradient-subtle: var(--gray-900);--gradient-accent: var(--accent-regular);--gradient-accent-orange: var(--accent-regular);--gradient-stroke: var(--gray-800);--shadow-sm: 0px 6px 3px rgba(9, 11, 17, .01), 0px 4px 2px rgba(9, 11, 17, .01), 0px 2px 2px rgba(9, 11, 17, .02), 0px 0px 1px rgba(9, 11, 17, .03);--shadow-md: 0px 28px 11px rgba(9, 11, 17, .01), 0px 16px 10px rgba(9, 11, 17, .03), 0px 7px 7px rgba(9, 11, 17, .05), 0px 2px 4px rgba(9, 11, 17, .06);--shadow-lg: 0px 62px 25px rgba(9, 11, 17, .01), 0px 35px 21px rgba(9, 11, 17, .05), 0px 16px 16px rgba(9, 11, 17, .1), 0px 4px 9px rgba(9, 11, 17, .12);--text-sm: .875rem;--text-base: 1rem;--text-md: 1.125rem;--text-lg: 1.25rem;--text-xl: 1.625rem;--text-2xl: 2.125rem;--text-3xl: 2.625rem;--text-4xl: 3.5rem;--text-5xl: 4.5rem;--font-system: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-body: "Public Sans", var(--font-system);--font-brand: "Fira Code", monospace;--theme-transition: .2s ease-in-out}:root.theme-dark{--gray-0: #e8e8e8;--gray-50: #d0d0d0;--gray-100: #b8b8b8;--gray-200: #a0a0a0;--gray-300: #909090;--gray-400: #707070;--gray-500: #5a5a5a;--gray-600: #4a4a4a;--gray-700: #3a3a3a;--gray-800: #2a2a2a;--gray-900: #1e1e1e;--gray-999-basis: 0, 0%, 10%;--gray-999: #181818;--accent-light: #b8b8b8;--accent-regular: #a0a0a0;--accent-dark: #707070;--accent-overlay: hsla(0, 0%, 63%, .15);--accent-subtle-overlay: hsla(0, 0%, 63%, .08);--accent-text-over: var(--gray-999);--link-color: var(--accent-light);--gradient-stop-1: var(--gray-800);--gradient-subtle: var(--gray-900);--gradient-accent-orange: var(--accent-regular);--gradient-stroke: var(--gray-800);--shadow-sm: 0px 6px 3px rgba(255, 255, 255, .01), 0px 4px 2px rgba(255, 255, 255, .01), 0px 2px 2px rgba(255, 255, 255, .02), 0px 0px 1px rgba(255, 255, 255, .03);--shadow-md: 0px 28px 11px rgba(255, 255, 255, .01), 0px 16px 10px rgba(255, 255, 255, .03), 0px 7px 7px rgba(255, 255, 255, .05), 0px 2px 4px rgba(255, 255, 255, .06);--shadow-lg: 0px 62px 25px rgba(255, 255, 255, .01), 0px 35px 21px rgba(255, 255, 255, .05), 0px 16px 16px rgba(255, 255, 255, .1), 0px 4px 9px rgba(255, 255, 255, .12)}html,body{min-height:100%;overflow-x:clip;width:100%}html{scroll-behavior:smooth}body{background-color:var(--gray-999);color:var(--gray-200);font-family:var(--font-body);-webkit-font-smoothing:antialiased;line-height:1.5}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}body{animation:fadeIn .3s ease-out}*,*:after,*:before{box-sizing:border-box;margin:0}img{max-width:100%;height:auto}a{color:var(--link-color);text-decoration:none;position:relative}a:after{content:"";position:absolute;left:0;bottom:0;width:0;height:2px;background-color:var(--link-color);transition:width .3s ease}a:hover:after{width:100%}h1,h2,h3,h4,h5{line-height:1.1;font-family:var(--font-brand);font-weight:600;color:var(--gray-100)}h1{font-size:var(--text-5xl)}h2{font-size:var(--text-4xl)}h3{font-size:var(--text-3xl)}h4{font-size:var(--text-2xl)}h5{font-size:var(--text-xl)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.wrapper{width:100%;max-width:83rem;margin-inline:auto;padding-inline:1.5rem}.stack{display:flex;flex-direction:column}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.gap-10{gap:2.5rem}.gap-15{gap:3.75rem}.gap-20{gap:5rem}.gap-30{gap:7.5rem}.gap-48{gap:12rem}@media(max-width:50em){.gap-8{gap:1.25rem}.gap-20{gap:2.5rem}}@media(min-width:50em){.lg\:gap-2{gap:.5rem}.lg\:gap-4{gap:1rem}.lg\:gap-8{gap:2rem}.lg\:gap-10{gap:2.5rem}.lg\:gap-15{gap:3.75rem}.lg\:gap-20{gap:5rem}.lg\:gap-30{gap:7.5rem}.lg\:gap-48{gap:12rem}}.scroll-reveal{opacity:0;transform:translateY(10px);transition:opacity .3s ease,transform .3s ease}.scroll-reveal.revealed{opacity:1;transform:translateY(0)}.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}svg[data-astro-cid-patnjmll]{vertical-align:middle;width:var(--size, 1em);height:var(--size, 1em)}button[data-astro-cid-x3pjskd3]{display:flex;border:0;border-radius:999rem;padding:0;background-color:var(--gray-999);box-shadow:inset 0 0 0 1px var(--accent-overlay);cursor:pointer}.icon[data-astro-cid-x3pjskd3]{z-index:1;position:relative;display:flex;padding:.5rem;width:2rem;height:2rem;font-size:1rem;color:var(--accent-overlay)}.icon[data-astro-cid-x3pjskd3].light:before{content:"";z-index:-1;position:absolute;inset:0;background-color:var(--accent-regular);border-radius:999rem}.theme-dark .icon[data-astro-cid-x3pjskd3].light:before{transform:translate(100%)}.theme-dark .icon[data-astro-cid-x3pjskd3].dark,html:not(.theme-dark) .icon[data-astro-cid-x3pjskd3].light,button[data-astro-cid-x3pjskd3][aria-pressed=false] .icon[data-astro-cid-x3pjskd3].light{color:var(--accent-text-over)}@media(prefers-reduced-motion:no-preference){.icon[data-astro-cid-x3pjskd3],.icon[data-astro-cid-x3pjskd3].light:before{transition:transform var(--theme-transition),color var(--theme-transition)}}@media(forced-colors:active){.icon[data-astro-cid-x3pjskd3].light:before{background-color:SelectedItem}}nav[data-astro-cid-dmqpwcec]{z-index:9999;position:relative;font-family:var(--font-brand);font-weight:500;margin-bottom:3.5rem}.menu-header[data-astro-cid-dmqpwcec]{display:flex;justify-content:space-between;gap:.5rem;padding:1.5rem}.site-title[data-astro-cid-dmqpwcec]{display:flex;gap:.5rem;align-items:center;line-height:1.1;color:var(--gray-0);text-decoration:none}.menu-button[data-astro-cid-dmqpwcec]{position:relative;display:flex;border:0;border-radius:999rem;padding:.5rem;font-size:1.5rem;color:var(--gray-300);background:radial-gradient(var(--gray-900),var(--gray-800) 150%);box-shadow:var(--shadow-md)}.menu-button[data-astro-cid-dmqpwcec][aria-expanded=true]{color:var(--gray-0);background:linear-gradient(180deg,var(--gray-600),transparent),radial-gradient(var(--gray-900),var(--gray-800) 150%)}.menu-button[data-astro-cid-dmqpwcec][hidden]{display:none}.menu-button[data-astro-cid-dmqpwcec]:before{position:absolute;inset:-1px;content:"";background:var(--gradient-stroke);border-radius:999rem;z-index:-1}.menu-content[data-astro-cid-dmqpwcec]{position:absolute;left:0;right:0}.nav-items[data-astro-cid-dmqpwcec]{margin:0;display:flex;flex-direction:column;gap:1rem;font-size:var(--text-md);line-height:1.2;list-style:none;padding:2rem;background-color:var(--gray-999);border-bottom:1px solid var(--gray-800)}.link[data-astro-cid-dmqpwcec]{display:inline-block;color:var(--gray-300);text-decoration:none}.link[data-astro-cid-dmqpwcec][aria-current]{color:var(--gray-0)}.menu-footer[data-astro-cid-dmqpwcec]{--icon-size: var(--text-xl);--icon-padding: .5rem;display:flex;justify-content:space-between;gap:.75rem;padding:1.5rem 2rem 1.5rem 1.5rem;background-color:var(--gray-999);border-radius:0 0 .75rem .75rem;box-shadow:var(--shadow-lg)}.socials[data-astro-cid-dmqpwcec]{display:flex;flex-wrap:wrap;gap:.625rem;font-size:var(--icon-size)}.social[data-astro-cid-dmqpwcec]{display:flex;padding:var(--icon-padding);text-decoration:none;color:var(--accent-dark);transition:color var(--theme-transition)}.social[data-astro-cid-dmqpwcec]:hover,.social[data-astro-cid-dmqpwcec]:focus{color:var(--accent-text-over)}.theme-toggle[data-astro-cid-dmqpwcec]{display:flex;align-items:center;height:calc(var(--icon-size) + 2 * var(--icon-padding))}@media(min-width:50em){nav[data-astro-cid-dmqpwcec]{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:2.5rem 5rem;gap:1rem}.menu-header[data-astro-cid-dmqpwcec]{padding:0}.site-title[data-astro-cid-dmqpwcec]{font-size:var(--text-lg)}.menu-content[data-astro-cid-dmqpwcec]{display:contents}.nav-items[data-astro-cid-dmqpwcec]{position:relative;flex-direction:row;font-size:var(--text-sm);border-radius:999rem;border:0;padding:.5rem .5625rem;background:radial-gradient(var(--gray-900),var(--gray-800) 150%);box-shadow:var(--shadow-md)}.nav-items[data-astro-cid-dmqpwcec]:before{position:absolute;inset:-1px;content:"";background:var(--gradient-stroke);border-radius:999rem;z-index:-1}.link[data-astro-cid-dmqpwcec]{padding:.5rem 1rem;border-radius:999rem;transition:color var(--theme-transition),background-color var(--theme-transition)}.link[data-astro-cid-dmqpwcec]:hover,.link[data-astro-cid-dmqpwcec]:focus{color:var(--gray-100);background-color:var(--accent-subtle-overlay)}.link[data-astro-cid-dmqpwcec][aria-current=page]{color:var(--accent-text-over);background-color:var(--accent-regular)}.menu-footer[data-astro-cid-dmqpwcec]{--icon-padding: .375rem;justify-self:flex-end;align-items:center;padding:0;background-color:transparent;box-shadow:none}.socials[data-astro-cid-dmqpwcec]{display:none}}@media(min-width:60em){.socials[data-astro-cid-dmqpwcec]{display:flex;justify-content:flex-end;gap:0}}@media(forced-colors:active){.link[data-astro-cid-dmqpwcec][aria-current=page]{color:SelectedItem}}#phylo-canvas{position:fixed!important;top:0!important;left:0!important;z-index:-1!important;pointer-events:none!important;opacity:.55!important;background:transparent!important;display:block!important;transform:translateZ(0)!important;will-change:transform!important;-webkit-transform:translateZ(0)!important;backface-visibility:hidden!important;-webkit-backface-visibility:hidden!important}.theme-dark #phylo-canvas{opacity:.5!important}.back-to-top[data-astro-cid-wlspcwf4]{position:fixed;bottom:2rem;right:2rem;width:3rem;height:3rem;background:var(--accent-regular);color:var(--gray-999);border:none;border-radius:0;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:all var(--theme-transition);z-index:1000;box-shadow:var(--shadow-md)}.back-to-top[data-astro-cid-wlspcwf4].visible{opacity:1;visibility:visible}.back-to-top[data-astro-cid-wlspcwf4]:hover{background:var(--accent-dark);transform:translateY(-4px);box-shadow:var(--shadow-lg)}.back-to-top[data-astro-cid-wlspcwf4]:active{transform:translateY(-2px)}@media(max-width:50em){.back-to-top[data-astro-cid-wlspcwf4]{bottom:1.5rem;right:1.5rem;width:2.75rem;height:2.75rem}}.page-header{padding-block:2.5rem;text-align:center;max-width:50rem;margin-inline:auto}.page-title{font-size:var(--text-4xl);color:var(--gray-0);margin:0 0 .5rem}.page-subtitle{font-size:var(--text-lg);color:var(--gray-300);margin:0}.back-link{display:inline-block;color:var(--accent-regular);text-decoration:none;font-size:var(--text-sm);font-weight:500;margin-bottom:1.5rem;transition:color var(--theme-transition)}.back-link:hover{color:var(--accent-dark)}.section-title{font-size:var(--text-2xl);color:var(--gray-0);margin:0 0 2rem;padding-bottom:.5rem;border-bottom:2px solid var(--accent-regular)}.section-header-with-link{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.section-header-with-link .section-title{margin-bottom:0;flex-grow:1}.view-all-link{font-size:var(--text-base);color:var(--accent-regular);text-decoration:none;font-weight:600;transition:color var(--theme-transition);white-space:nowrap;margin-left:1rem}.view-all-link:hover{color:var(--accent-dark)}.projects-content{max-width:70rem;margin-inline:auto}.projects-section{padding-block:1rem}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:2rem}.projects-grid.compact{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem}.project-card-link{text-decoration:none;display:block}.project-card{display:flex;flex-direction:column;padding:2rem;background:var(--gray-999);border-radius:.75rem;border-top:4px solid var(--accent-regular);box-shadow:var(--shadow-sm);transition:all var(--theme-transition)}.project-card.featured{grid-column:span 1;border-top-width:6px}.project-card.compact{padding:1.5rem}.project-card:hover,.project-card-link:hover .project-card{transform:translateY(-8px);box-shadow:var(--shadow-lg)}.project-card .project-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.5rem}.project-card h3.project-title{font-size:var(--text-lg)!important;color:var(--gray-0);margin:0;flex:1;line-height:1.3}.project-status{display:inline-block;padding:.25rem .75rem;border-radius:.375rem;font-size:var(--text-sm);font-weight:600;white-space:nowrap;flex-shrink:0}.project-status.ongoing{background:var(--accent-regular);color:var(--accent-text-over)}.project-status.complete{background:var(--gray-600);color:var(--gray-999)}.project-status.released{background:var(--accent-dark);color:var(--gray-999)}.project-meta{font-size:var(--text-sm);color:var(--gray-400);margin:0 0 1rem}.project-description{font-size:var(--text-base);color:var(--gray-300);line-height:1.6;margin:0 0 1.25rem;flex-grow:1}.project-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem;justify-content:flex-start}.tag{display:inline-block;padding:.25rem .75rem;background:var(--gray-800);color:var(--gray-200);border-radius:.25rem;font-size:var(--text-sm);font-weight:500}.project-links{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:auto}.project-link{display:inline-block;padding:.5rem 1rem;background:transparent;color:var(--accent-regular);text-decoration:none;border:1px solid var(--accent-regular);border-radius:0;font-size:var(--text-sm);font-weight:500;transition:all var(--theme-transition)}.project-link:hover{background:var(--accent-regular);color:var(--gray-999)}.read-more{display:inline-block;font-size:var(--text-sm);color:var(--accent-regular);font-weight:600;margin-top:.75rem;transition:color var(--theme-transition)}.project-card-link:hover .read-more{color:var(--accent-dark)}.blog-list{max-width:60rem;margin-inline:auto}.blog-card-link{text-decoration:none;display:block}.blog-card{padding:1.5rem;background:var(--gray-999);border-radius:.5rem;border-left:3px solid var(--accent-regular);box-shadow:var(--shadow-sm);transition:all var(--theme-transition)}.blog-card-link .blog-card:hover{transform:translate(4px);box-shadow:var(--shadow-md);cursor:pointer}.blog-card-placeholder{opacity:.7}.blog-date{font-size:var(--text-sm);color:var(--accent-regular);font-weight:600;font-family:var(--font-brand);display:block;margin-bottom:.5rem}.blog-card h3.blog-title{font-size:var(--text-lg)!important;color:var(--gray-0);margin:0 0 .5rem;line-height:1.3}.blog-excerpt{font-size:var(--text-base);color:var(--gray-300);line-height:1.6;margin:0 0 .75rem}.blog-card-link .blog-card:hover .read-more{color:var(--accent-dark)}.coming-soon{display:inline-block;font-size:var(--text-sm);color:var(--gray-400);font-style:italic;margin-top:.5rem}.travel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem}.travel-card-link{text-decoration:none;display:block}.travel-card{padding:1.5rem;background:var(--gray-999);border-radius:.5rem;border-top:3px solid var(--accent-light);box-shadow:var(--shadow-sm);transition:all var(--theme-transition)}.travel-card-link:hover .travel-card{transform:scale(1.02);box-shadow:var(--shadow-md);cursor:pointer}.travel-card .read-more{display:inline-block;font-size:var(--text-sm);color:var(--accent-regular);font-weight:600;margin-top:.5rem;transition:color var(--theme-transition)}.travel-card-link:hover .read-more{color:var(--accent-dark)}.travel-card h4{font-size:var(--text-lg);color:var(--gray-0);margin:0 0 .25rem}.location{font-size:var(--text-sm);color:var(--accent-regular);font-style:italic;margin:0 0 .75rem}.travel-card p:last-of-type{font-size:var(--text-base);color:var(--gray-300);line-height:1.6;margin:0 0 .5rem}.project-header,.post-header{padding-block:2rem;max-width:50rem;margin-inline:auto}.breadcrumb{margin-bottom:1.5rem}.breadcrumb a{color:var(--accent-regular);text-decoration:none;font-size:var(--text-sm);transition:color var(--theme-transition)}.breadcrumb a:hover{color:var(--accent-dark)}.project-date,.post-date{display:block;font-size:var(--text-sm);color:var(--accent-regular);font-weight:600;font-family:var(--font-brand);margin-bottom:1rem}.project-header .project-title,.post-header .post-title{font-size:var(--text-4xl);color:var(--gray-0);margin:0 0 1rem;line-height:1.2}.project-header .project-subtitle,.post-header .post-subtitle{font-size:var(--text-lg);color:var(--gray-300);line-height:1.6;margin:0}.project-content,.post-content{max-width:50rem;margin-inline:auto}.content-section{margin-bottom:3rem}.content-section p{font-size:var(--text-base);color:var(--gray-300);line-height:1.8;margin-bottom:1.5rem}.content-section h2{font-size:var(--text-2xl);color:var(--gray-0);margin:2.5rem 0 1rem;border-bottom:2px solid var(--accent-regular);padding-bottom:.5rem}.content-section ul{margin:1.5rem 0 1.5rem 2rem;color:var(--gray-300);line-height:1.8}.content-section li{margin-bottom:.75rem}.content-section strong{color:var(--gray-0);font-weight:600}.meta-section{padding-top:2rem;border-top:1px solid var(--gray-800)}.project-info{margin-bottom:2rem;padding:1.5rem;background:var(--gray-999);border-left:3px solid var(--accent-regular);border-radius:.25rem}.info-item{font-size:var(--text-base);color:var(--gray-300);margin-bottom:.75rem}.info-item:last-child{margin-bottom:0}.info-item strong{color:var(--gray-0)}.meta-section .tags{display:flex;gap:.75rem;flex-wrap:wrap;margin-bottom:2rem}.meta-section .tag{padding:.5rem 1rem;background:var(--accent-regular);color:var(--gray-999);font-size:var(--text-sm);border-radius:0;font-weight:500}.project-links{display:flex;gap:1rem;flex-wrap:wrap}.project-link-btn{display:inline-block;padding:.75rem 1.5rem;background:transparent;color:var(--accent-regular);text-decoration:none;border:2px solid var(--accent-regular);border-radius:0;font-size:var(--text-base);font-weight:600;transition:all var(--theme-transition);text-align:center;flex:1;min-width:200px}.project-link-btn:hover{background:var(--accent-regular);color:var(--gray-999);transform:translateY(-2px);box-shadow:var(--shadow-md)}@media(max-width:50em){.page-title{font-size:var(--text-3xl)}.page-subtitle{font-size:var(--text-base)}.section-title{font-size:var(--text-xl)}.projects-grid,.travel-grid{grid-template-columns:1fr}.project-card{padding:1.5rem}.project-card .project-header{flex-direction:column;align-items:flex-start;gap:.5rem}.project-header .project-title,.post-header .post-title{font-size:var(--text-3xl)}.project-header .project-subtitle,.post-header .post-subtitle{font-size:var(--text-base)}.content-section h2{font-size:var(--text-xl)}.project-links{flex-direction:column}.project-link-btn{min-width:100%}}@media(min-width:50em)and (max-width:75em){.projects-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}}.backgrounds[data-astro-cid-37fxchfa]{min-height:100%;isolation:isolate;background:var(--gray-999);position:relative}
