@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:local('IBM Plex Mono'),url('/fonts/ibm-plex-mono-400.08949f72.woff2') format('woff2');unicode-range:U+0020-007E,U+00A0-00FF,U+2013,U+2014}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:700;font-display:swap;src:local('IBM Plex Mono Bold'),url('/fonts/ibm-plex-mono-700.4f84d86c.woff2') format('woff2');unicode-range:U+0020-007E,U+00A0-00FF,U+2013,U+2014}@font-face{font-family:'Lexend Zetta';font-style:normal;font-weight:400;font-display:swap;src:local('Lexend Zetta'),url('/fonts/lexend-zetta-400.75b72202.woff2') format('woff2');unicode-range:U+0020,U+0021,U+0022,U+0023,U+0026,U+0027,U+002B,U+002C,U+002D,U+002E,U+002F,U+0030-U+0039,U+003A,U+003B,U+003C,U+003D,U+003E,U+0040,U+0041-U+0058,U+005F,U+0061-U+007A,U+2013,U+2014}:root{--font-display:'Lexend Zetta',sans-serif;--font-body:'IBM Plex Mono',monospace;--color-background:oklch(0.985 0.002 80);--color-foreground:oklch(0.15 0.01 70);--color-muted-fg:oklch(0.45 0.01 70);--color-border:oklch(0.88 0.005 70)}*,*::before,*::after{box-sizing:border-box}html{font-size:100%}body{margin:0;font-family:var(--font-body);font-size:1rem;line-height:1.5;background-color:var(--color-background);color:var(--color-foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{margin:0;font-weight:inherit}p{margin:0}a{color:inherit;text-decoration:none}ul{margin:0;padding:0;list-style:none}img{display:block;max-width:100%}.site{display:flex;flex-direction:column;min-height:100vh}.container{display:flex;flex-direction:column;flex:1;width:100%;max-width:72rem;margin-inline:auto;padding-inline:1rem}@media (min-width:40rem){.container{padding-inline:1.5rem}}@media (min-width:64rem){.container{padding-inline:2rem}}main{flex:1}.skip-link{position:absolute;left:-9999px;top:1rem}.skip-link:focus{left:1rem;z-index:50;background-color:var(--color-foreground);color:var(--color-background);padding:0.5rem 1rem}.site-header{padding-block:1.5rem}.nav-desktop{display:none;align-items:center;justify-content:space-between}@media (min-width:48rem){.nav-desktop{display:flex}}.nav-logo{font-size:1.5rem;font-weight:700;letter-spacing:0.05em}.nav-links{display:flex;gap:1.5rem}.nav-link{letter-spacing:0.1em;transition:color 150ms}.nav-link:hover{color:var(--color-muted-fg)}.nav-link:focus-visible{outline:2px solid var(--color-foreground);outline-offset:4px}.nav-link.active{text-decoration:underline;text-decoration-color:var(--color-foreground);text-underline-offset:4px}.nav-mobile{display:flex;align-items:center;justify-content:space-between}@media (min-width:48rem){.nav-mobile{display:none}}.nav-disclosure{position:relative}.nav-disclosure>summary{list-style:none;cursor:pointer;display:flex;align-items:center}.nav-disclosure>summary::-webkit-details-marker{display:none}.icon-close{display:none}.nav-disclosure[open] .icon-open{display:none}.nav-disclosure[open] .icon-close{display:block}.nav-mobile-menu{display:flex;flex-direction:column;border-top:1px solid var(--color-border);padding-top:1rem;margin-top:0.25rem}.nav-mobile-link{padding-block:0.75rem;font-size:1rem;text-transform:uppercase;letter-spacing:0.1em;transition:color 150ms}.nav-mobile-link:hover{color:var(--color-muted-fg)}.nav-mobile-link:focus-visible{outline:2px solid var(--color-foreground);outline-offset:4px}.nav-mobile-link.active{font-weight:700}hr{border:none;border-top:1px solid var(--color-border);margin:0}.hero{padding-top:2.5rem;padding-bottom:2.5rem}@media (min-width:40rem){.hero{padding-top:4rem;padding-bottom:3.5rem}}.hero h1{font-family:var(--font-display);font-size:clamp(2.5rem,5vw+1rem,5rem);font-weight:300;line-height:1.25;text-transform:uppercase;letter-spacing:0.1em}.hero p{margin-top:1rem;font-size:clamp(1rem,2vw+0.25rem,1.5rem);text-transform:uppercase;letter-spacing:0.3em;color:var(--color-muted-fg)}.page-title{padding-top:2.5rem;padding-bottom:1.5rem}@media (min-width:40rem){.page-title{padding-top:3.5rem;padding-bottom:2rem}}.page-title h1{font-family:var(--font-display);font-size:clamp(1.5rem,3vw+0.5rem,2.5rem);font-weight:300;text-transform:uppercase;letter-spacing:0.1em}.two-col-grid{display:grid;grid-template-columns:1fr;gap:3rem}@media (min-width:48rem){.two-col-grid{grid-template-columns:1.2fr 0.8fr}}.home-content{padding-top:3rem;padding-bottom:4rem}@media (min-width:40rem){.home-content{padding-top:4rem;padding-bottom:6rem}}.section-heading{font-size:1.25rem;font-weight:700;letter-spacing:0.1em;margin-bottom:1rem}.headshot{height:9rem;width:9rem;max-width:10rem;border-radius:0.25rem;object-fit:cover;margin-bottom:1.25rem}.about-bio{font-family:system-ui,sans-serif;font-size:1rem;line-height:1.625;color:var(--color-muted-fg)}.about-avail{margin-top:1rem;font-size:0.875rem;letter-spacing:0.05em;color:var(--color-muted-fg)}.skills-heading{margin-bottom:1.5rem}.skill-groups{display:flex;flex-direction:column;gap:1.25rem}.skill-category{font-size:0.75rem;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:var(--color-muted-fg);margin-bottom:0.5rem}.skill-chips{display:flex;flex-wrap:wrap;gap:0.5rem}.pill{display:inline-block;border:1.5px solid var(--color-foreground);padding:0.4rem 0.9rem;font-size:0.875rem;letter-spacing:0.05em;transition:background-color 150ms,color 150ms}.pill:hover{background-color:var(--color-foreground);color:var(--color-background)}.pill:focus-visible{background-color:var(--color-foreground);color:var(--color-background);outline:2px solid var(--color-foreground);outline-offset:2px}.cv-button{display:inline-flex;align-items:center;gap:0.5rem;border:1px solid var(--color-foreground);padding:0.5rem 1.25rem;font-family:var(--font-body);font-size:0.875rem;text-transform:uppercase;letter-spacing:0.1em;margin-bottom:2.5rem;transition:background-color 150ms,color 150ms}.cv-button:hover{background-color:var(--color-foreground);color:var(--color-background)}.cv-button:focus-visible{background-color:var(--color-foreground);color:var(--color-background);outline:2px solid var(--color-foreground);outline-offset:2px}.experience-section{padding-bottom:3.5rem}@media (min-width:40rem){.experience-section{padding-bottom:5rem}}.exp-heading{font-size:1.25rem;font-weight:700;letter-spacing:0.1em;margin-bottom:2.5rem}.experience-entry+.experience-entry{border-top:1px solid var(--color-border);margin-top:2rem;padding-top:2rem}.role{display:grid;grid-template-columns:1fr;gap:0.25rem}@media (min-width:40rem){.role{grid-template-columns:10rem 1fr;gap:1.5rem}}.role+.role{margin-top:2rem}.role-date{font-size:0.875rem;letter-spacing:0.025em;color:var(--color-muted-fg);padding-top:0.125rem}.company-link{font-size:1.125rem;font-weight:700;letter-spacing:0.05em;text-decoration:underline;text-decoration-color:var(--color-border);text-underline-offset:4px;transition:text-decoration-color 150ms}.company-link:hover{text-decoration-color:var(--color-foreground)}.role-title{font-weight:700}.role-title.first{margin-top:0.25rem}.role-location{margin-top:0.125rem;font-size:0.875rem;letter-spacing:0.025em;color:var(--color-muted-fg)}.role-description{margin-top:0.75rem;max-width:36rem;font-size:1rem;line-height:1.625;color:var(--color-muted-fg)}.resume-bottom{padding-top:2.5rem;padding-bottom:3.5rem}@media (min-width:40rem){.resume-bottom{padding-top:3.5rem;padding-bottom:5rem}}.edu-school{font-weight:700}.edu-field{margin-top:0.25rem;font-size:1rem;color:var(--color-muted-fg)}.edu-dates{margin-top:0.25rem;font-size:0.875rem;letter-spacing:0.025em;color:var(--color-muted-fg)}.cert-list{display:flex;flex-direction:column;gap:0.5rem}.cert-list li{font-size:1rem;color:var(--color-muted-fg)}.not-found{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;padding-block:6rem;text-align:center}.not-found h1{font-family:var(--font-display);font-size:3.75rem;font-weight:300;text-transform:uppercase;letter-spacing:0.05em}.not-found p{margin-top:1rem;font-size:1.125rem}.btn-outline{display:inline-block;margin-top:2rem;border:1px solid var(--color-foreground);padding:0.5rem 1.5rem;font-size:0.875rem;text-transform:uppercase;letter-spacing:0.05em;transition:background-color 150ms,color 150ms}.btn-outline:hover{background-color:var(--color-foreground);color:var(--color-background)}.btn-outline:focus-visible{background-color:var(--color-foreground);color:var(--color-background);outline:2px solid var(--color-foreground);outline-offset:2px}.site-footer{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--color-border);padding-block:1.5rem}.footer-name{font-size:0.875rem;letter-spacing:0.2em;color:var(--color-muted-fg)}.footer-links{display:flex;gap:0}.footer-link{padding:0.75rem;color:var(--color-muted-fg);transition:color 150ms}.footer-link:hover{color:var(--color-foreground)}.footer-link:focus-visible{color:var(--color-foreground);outline:2px solid var(--color-foreground);outline-offset:2px}.hero-subtitle{margin-top:1rem;font-size:clamp(1rem,2vw+0.25rem,1.5rem);text-transform:uppercase;letter-spacing:0.3em;color:var(--color-muted-fg)}.hero-tagline{margin-top:1rem;font-size:0.8125rem;letter-spacing:0.2em;color:var(--color-muted-fg);text-transform:uppercase}.hero-cta{display:inline-flex;align-items:center;gap:0.5rem;border:1px solid var(--color-foreground);padding:0.5rem 1.25rem;font-family:var(--font-body);font-size:0.875rem;text-transform:uppercase;letter-spacing:0.1em;margin-top:1.5rem;color:inherit;text-decoration:none;transition:background-color 150ms,color 150ms}.hero-cta:hover{background-color:var(--color-foreground);color:var(--color-background)}.hero-cta:focus-visible{background-color:var(--color-foreground);color:var(--color-background);outline:2px solid var(--color-foreground);outline-offset:2px}.expertise-section{padding-bottom:3.5rem}@media (min-width:40rem){.expertise-section{padding-bottom:5rem}}.expertise-section h2{font-size:1.25rem;font-weight:700;letter-spacing:0.1em;margin-bottom:1.5rem}.expertise-section p{font-size:1rem;line-height:1.625;color:var(--color-muted-fg);max-width:42rem}.expertise-section p+p{margin-top:0.75rem}.contact-section{padding-bottom:3.5rem}@media (min-width:40rem){.contact-section{padding-bottom:5rem}}.contact-section h2{font-size:1.25rem;font-weight:700;letter-spacing:0.1em;margin-bottom:1rem}.contact-section p{font-size:1rem;line-height:1.625;color:var(--color-muted-fg);max-width:36rem}.contact-section a{color:var(--color-foreground);text-decoration:underline;text-decoration-color:var(--color-border);text-underline-offset:4px}.contact-section a:hover{text-decoration-color:var(--color-foreground)}.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}.hero-content-grid{display:flex;flex-direction:column;gap:3rem}@media (min-width:64rem){.hero-content-grid{flex-direction:row;align-items:flex-start;gap:4rem}}.hero-left{flex:1}.hero-right{flex:0 0 auto;width:18rem;min-width:0;display:none}@media (min-width:64rem){.hero-right{display:block}}.avail-badge{display:inline-block;margin-top:0.75rem;font-size:0.75rem;letter-spacing:0.1em;text-transform:uppercase;color:oklch(0.55 0.12 145)}.hero-stats{font-size:0.75rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--color-muted-fg);margin-top:0.5rem}.hero-actions{display:flex;flex-wrap:wrap;gap:0.75rem;margin-top:1.5rem;align-items:center}.hero-actions .hero-cta{margin-top:0}.hero-cta--secondary{display:inline-flex;align-items:center;gap:0.5rem;border:1px solid var(--color-foreground);padding:0.5rem 1.25rem;font-family:var(--font-body);font-size:0.875rem;text-transform:uppercase;letter-spacing:0.1em;color:var(--color-background);background-color:var(--color-foreground);text-decoration:none;transition:background-color 150ms,color 150ms}.hero-cta--secondary:hover{background-color:var(--color-background);color:var(--color-foreground)}.hero-cta--secondary:focus-visible{background-color:var(--color-background);color:var(--color-foreground);outline:2px solid var(--color-foreground);outline-offset:2px}.hero-cta--ghost{display:inline-flex;align-items:center;gap:0.5rem;border:1px solid var(--color-border);padding:0.5rem 1.25rem;font-family:var(--font-body);font-size:0.875rem;text-transform:uppercase;letter-spacing:0.1em;color:inherit;text-decoration:none;transition:background-color 150ms,color 150ms}.hero-cta--ghost:hover{border-color:var(--color-foreground);color:var(--color-background)}.hero-cta--ghost:focus-visible{border-color:var(--color-foreground);color:var(--color-background);outline:2px solid var(--color-foreground);outline-offset:2px}.hero-stack-panel{border:1px solid var(--color-border);padding:1.5rem}.hero-stack-label{font-size:0.75rem;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--color-muted-fg);margin-bottom:0.75rem}.hero-stack-chips{display:flex;flex-wrap:wrap;gap:0.5rem}.project-entry{padding-top:2rem;padding-bottom:2rem;border-top:1px solid var(--color-border)}.project-entry:first-child{border-top:none;padding-top:0}.project-title{font-size:1.125rem;font-weight:700;letter-spacing:0.05em;margin-bottom:1rem}.project-title a{color:inherit;text-decoration:underline;text-decoration-color:var(--color-border);text-underline-offset:4px;transition:text-decoration-color 150ms}.project-title a:hover{text-decoration-color:var(--color-foreground)}.project-meta{margin-bottom:0.75rem}.project-stack-label{font-size:0.75rem;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--color-muted-fg);margin-bottom:0.5rem}.project-chips{display:flex;flex-wrap:wrap;gap:0.5rem;margin-bottom:1rem}.project-body{display:flex;flex-direction:column;gap:0.75rem;max-width:42rem}.project-label{font-size:0.75rem;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:var(--color-muted-fg);margin-bottom:0.25rem}.project-text{font-size:1rem;line-height:1.625;color:var(--color-muted-fg)}.project-link{margin-top:1rem;font-size:0.875rem;letter-spacing:0.025em;color:var(--color-muted-fg)}.projects-teaser-section{padding-top:3rem;padding-bottom:4rem}@media (min-width:40rem){.projects-teaser-section{padding-top:4rem;padding-bottom:6rem}}.projects-teaser-list{list-style:none;display:flex;flex-direction:column;gap:0;margin:0;padding:0;margin-bottom:1.5rem}.projects-teaser-item{padding-top:1.5rem;padding-bottom:1.5rem;border-top:1px solid var(--color-border)}.projects-teaser-item:last-child{border-bottom:1px solid var(--color-border)}.projects-teaser-title{font-size:1.125rem;font-weight:700;letter-spacing:0.05em;text-decoration:underline;text-decoration-color:var(--color-border);text-underline-offset:4px;transition:text-decoration-color 150ms;display:block;margin-bottom:0.5rem}.projects-teaser-title:hover{text-decoration-color:var(--color-foreground)}.projects-teaser-desc{font-size:0.9375rem;line-height:1.5;color:var(--color-muted-fg);margin-bottom:0.75rem}.projects-teaser-chips{display:flex;flex-wrap:wrap;gap:0.375rem}.projects-teaser-chips .pill{font-size:0.75rem;padding:0.25rem 0.6rem}.projects-view-all{font-size:0.875rem;letter-spacing:0.05em;text-decoration:underline;text-decoration-color:var(--color-border);text-underline-offset:4px;transition:text-decoration-color 150ms;display:inline-block;margin-top:1rem}.projects-view-all:hover{text-decoration-color:var(--color-foreground)}.writing-teaser-section{padding-top:3rem;padding-bottom:4rem}@media (min-width:40rem){.writing-teaser-section{padding-top:4rem;padding-bottom:6rem}}.writing-teaser-list{list-style:none;margin:0;padding:0;margin-bottom:1.5rem}.writing-teaser-item{padding-top:1.25rem;padding-bottom:1.25rem;border-top:1px solid var(--color-border)}.writing-teaser-item:last-child{border-bottom:1px solid var(--color-border)}.writing-teaser-title{font-size:1rem;font-weight:700;letter-spacing:0.025em;text-decoration:underline;text-decoration-color:var(--color-border);text-underline-offset:4px;transition:text-decoration-color 150ms;display:block}.writing-teaser-title:hover{text-decoration-color:var(--color-foreground)}.writing-teaser-meta{font-size:0.875rem;letter-spacing:0.025em;color:var(--color-muted-fg);margin-top:0.25rem}.writing-view-all{font-size:0.875rem;letter-spacing:0.05em;text-decoration:underline;text-decoration-color:var(--color-border);text-underline-offset:4px;transition:text-decoration-color 150ms;display:inline-block;margin-top:1rem}.writing-view-all:hover{text-decoration-color:var(--color-foreground)}.post-list{list-style:none;margin:0;padding:0}.post-item{padding-top:1.5rem;padding-bottom:1.5rem;border-top:1px solid var(--color-border)}.post-item:last-child{border-bottom:1px solid var(--color-border)}.post-title{font-size:1.125rem;font-weight:700;letter-spacing:0.025em;text-decoration:underline;text-decoration-color:var(--color-border);text-underline-offset:4px;transition:text-decoration-color 150ms;display:block;margin-bottom:0.375rem}.post-title:hover{text-decoration-color:var(--color-foreground)}.post-date{font-size:0.875rem;letter-spacing:0.025em;color:var(--color-muted-fg);margin-bottom:0.375rem}.post-excerpt{font-size:0.9375rem;line-height:1.5;color:var(--color-muted-fg)}.post-meta{font-size:0.875rem;letter-spacing:0.025em;color:var(--color-muted-fg);margin-top:0.5rem;margin-bottom:2rem}.post-body{max-width:42rem}.post-body p{font-size:1rem;line-height:1.75;color:var(--color-muted-fg);margin-bottom:1.25rem}.post-body h2{font-size:1.125rem;font-weight:700;letter-spacing:0.05em;margin-top:2rem;margin-bottom:0.75rem}.cert-item{display:flex;flex-direction:column;gap:0.25rem;padding-top:0.75rem;padding-bottom:0.75rem;border-top:1px solid var(--color-border)}.cert-item:first-child{border-top:none;padding-top:0}.cert-name{font-size:1rem;color:var(--color-foreground)}.cert-meta{font-size:0.875rem;letter-spacing:0.025em;color:var(--color-muted-fg)}.cert-link{color:var(--color-foreground);text-decoration:underline;text-decoration-color:var(--color-border);text-underline-offset:4px;transition:text-decoration-color 150ms}.cert-link:hover{text-decoration-color:var(--color-foreground)}.contact-location{font-size:0.875rem;letter-spacing:0.025em;color:var(--color-muted-fg);margin-top:0.75rem}
.hero-content-grid{gap:2rem}.hero-headshot{display:flex;justify-content:flex-start;margin:0}.hero-image{margin-bottom:0}.hero-left{min-width:0}@media (min-width:64rem){.hero-content-grid{align-items:center;gap:3rem}.hero-headshot{flex:0 0 auto}}
@media (max-width:47.999rem){.hero h1{font-size:1.75rem;line-height:1.35}.hero-subtitle{letter-spacing:0.22em}.hero-tagline{letter-spacing:0.14em}}
@media (max-width:47.999rem){.hero h1{font-size:1.6rem;letter-spacing:0.08em}.hero-actions{flex-direction:column;align-items:flex-start}.hero-actions .hero-cta{max-width:100%}.hero-tagline,.hero-stats{letter-spacing:0.12em}}
.two-col-grid>*{min-width:0}
