*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;min-height:100vh;font-family:"Geist Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;font-size:1rem;line-height:1.75;color:#d0d0d0;background-color:#2a2a2a}@font-face{font-family:"Geist Sans";font-style:normal;font-weight:100 900;font-display:swap;src:url("/fonts/GeistVF.woff2") format("woff2")}@font-face{font-family:"Geist Mono";font-style:normal;font-weight:100 900;font-display:swap;src:url("/fonts/GeistMonoVF.woff2") format("woff2")}img,svg{max-width:100%;height:auto}a{color:#e07848;text-decoration-thickness:1px;text-underline-offset:.15em}a:hover{color:#ea9060}:focus-visible{outline:2px solid #e07848;outline-offset:2px}h1,h2,h3,h4{line-height:1.25;font-weight:600;color:#d0d0d0}h1{font-size:clamp(2rem,5vw,3rem)}h2{font-size:clamp(1.5rem,3vw,2rem)}h3{font-size:1.25rem}code,pre{font-family:"Geist Mono",ui-monospace,"Cascadia Code","Source Code Pro",monospace}pre{font-size:.875em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.container{width:min(100% - 3rem,72rem);margin-inline:auto}.site-header{border-bottom:1px solid #4a4a4a;padding-block:1rem}.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.site-logo{font-weight:600;font-size:1.125rem;color:#d0d0d0;text-decoration:none}.site-logo:hover{color:#e07848}.site-nav{display:flex;align-items:center;gap:1.5rem;list-style:none;margin:0;padding:0}.site-nav a{color:#a0a0a0;text-decoration:none}.site-nav a:hover,.site-nav a[aria-current=page]{color:#d0d0d0}.site-main{padding-block:3rem}.site-footer{border-top:1px solid #4a4a4a;padding-block:2rem;margin-top:4rem;color:#a0a0a0;font-size:.875rem}.site-footer__inner{display:flex;flex-direction:column;gap:1rem}@media (min-width: 40rem){.site-footer__inner{flex-direction:row;justify-content:space-between;align-items:center}}.social-links{display:flex;flex-wrap:wrap;gap:1rem;list-style:none;margin:0;padding:0}.social-links__link{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;color:#a0a0a0;text-decoration:none;border-radius:4px;transition:color .15s,background-color .15s}.social-links__link:hover{color:#e07848;background-color:#383838}.social-links__icon{display:block;flex-shrink:0}.intro{display:grid;gap:3rem;padding-block:4rem;align-items:start}@media (min-width: 48rem){.intro{grid-template-columns:1fr 1fr;gap:4rem}}@media (min-width: 48rem){.intro__about{padding-top:calc(clamp(2rem, 5vw, 3rem) * 1.25 + .5rem)}}.intro__hero h1{margin-top:0;margin-bottom:.5rem}.hero__byline{font-size:1.125rem;color:#a0a0a0;margin:0 0 1rem}.hero__tagline{font-size:1.25rem;color:#a0a0a0;margin:0 0 2rem}.hero__actions{display:flex;flex-wrap:wrap;gap:1rem}.projects,.recent-posts{padding-block:4rem;border-top:1px solid #4a4a4a}.projects h2{margin-top:0;margin-bottom:2rem}.section-header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:2rem}.section-header h2{margin:0}.section-header__link{font-size:.9375rem;color:#a0a0a0;text-decoration:none}.section-header__link:hover{color:#e07848}.about__inner{display:flex;align-items:flex-start;gap:2rem}.about__avatar{width:5rem;height:5rem;border-radius:50%;object-fit:cover;border:2px solid #4a4a4a;flex-shrink:0}.blog-layout{display:grid;gap:3rem}@media (min-width: 56rem){.blog-layout{grid-template-columns:1fr 14rem;align-items:start}}.post-layout__toc{display:none}@media (min-width: 56rem){.post-layout__toc{display:block;position:sticky;top:2rem;font-size:.875rem;color:#a0a0a0}.post-layout__toc ul{list-style:none;margin:0;padding:0}.post-layout__toc a{color:#a0a0a0;text-decoration:none}.post-layout__toc a:hover{color:#e07848}.post-layout__toc li{margin-block:.25rem}}.post-nav{display:grid;gap:1rem;margin-top:3rem;padding-top:2rem;border-top:1px solid #4a4a4a}@media (min-width: 40rem){.post-nav{grid-template-columns:1fr 1fr}}.post-nav__link{display:block;padding:1rem;background:#383838;border:1px solid #4a4a4a;border-radius:8px;text-decoration:none;color:#d0d0d0}.post-nav__link:hover{border-color:#e07848}.post-nav__link span{display:block;font-size:.75rem;color:#606060;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}.post-nav__link--next{text-align:right}.page-header{margin-bottom:3rem}.page-header h1{margin-bottom:.5rem}.page-header__meta{color:#a0a0a0;font-size:.875rem}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1.5rem;font-size:.9375rem;font-weight:500;border-radius:8px;text-decoration:none;border:1px solid rgba(0,0,0,0);cursor:pointer;transition:background .15s,border-color .15s,color .15s}.btn--primary{background:#e07848;color:#2a2a2a}.btn--primary:hover{background:#ea9060;color:#2a2a2a}.btn--ghost{background:rgba(0,0,0,0);color:#d0d0d0;border-color:#4a4a4a}.btn--ghost:hover{border-color:#e07848;color:#e07848}.post-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1.5rem}.post-card{padding:1.5rem;background:#383838;border:1px solid #4a4a4a;border-radius:8px}.post-card:hover{border-color:#e07848}.post-card__title{margin:0 0 .5rem;font-size:1.25rem}.post-card__title a{color:#d0d0d0;text-decoration:none}.post-card__title a:hover{color:#e07848}.post-card__meta{font-size:.875rem;color:#a0a0a0;margin-bottom:.5rem}.post-card__desc{color:#a0a0a0;margin:0 0 1rem}.tag-list{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}.tag{display:inline-block;padding:.25rem .5rem;font-size:.75rem;background:#2a1e14;color:#d4906a;border-radius:4px;text-decoration:none}.tag:hover{color:#ea9060}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:3rem;padding-top:2rem;border-top:1px solid #4a4a4a;font-size:.875rem}.pagination a{text-decoration:none;color:#a0a0a0}.pagination a:hover{color:#e07848}.project-grid{display:grid;gap:1.5rem}@media (min-width: 40rem){.project-grid{grid-template-columns:1fr 1fr}}.project-card{padding:1.5rem;background:#383838;border:1px solid #4a4a4a;border-radius:8px;transition:border-color .15s}.project-card:hover{border-color:#e07848}.project-card__title{margin:0 0 .5rem;font-size:1.125rem}.project-card__title a{color:#d0d0d0;text-decoration:none}.project-card__title a:hover{color:#e07848}.project-card__desc{color:#a0a0a0;font-size:.9375rem;margin:0 0 1rem}.empty-state{color:#a0a0a0;padding:2rem;background:#383838;border:1px dashed #4a4a4a;border-radius:8px;text-align:center}.prose{max-width:68ch}.prose p{margin-block:1rem}.prose h2,.prose h3,.prose h4{margin-top:2rem;margin-bottom:1rem}.prose ul,.prose ol{padding-left:1.5rem;margin-block:1rem}.prose li{margin-block:.25rem}.prose blockquote{margin:1.5rem 0;padding-left:1.5rem;border-left:3px solid #e07848;color:#a0a0a0}.prose hr{border:none;border-top:1px solid #4a4a4a;margin:3rem 0}.prose table{width:100%;border-collapse:collapse;font-size:.875rem;margin-block:1.5rem}.prose th,.prose td{border:1px solid #4a4a4a;padding:.5rem 1rem;text-align:left}.prose th{background:#383838}.prose :not(pre)>code{font-size:.875em;padding:.1em .35em;background:#383838;border:1px solid #4a4a4a;border-radius:4px}.prose pre{padding:1.5rem;background:#383838;border:1px solid #4a4a4a;border-radius:8px;overflow-x:auto;margin-block:1.5rem}.prose img{max-width:100%;height:auto;border:1px solid #4a4a4a;border-radius:8px}.prose .figure{margin:2rem auto;text-align:center}.prose .figure p{margin:0}.prose .figure img{display:block;margin-inline:auto;width:100%}.prose .figure--map img{image-rendering:pixelated}.highlight{margin-block:1.5rem;border-radius:8px;overflow-x:auto}.highlight pre{margin:0;padding:1.5rem;background:#383838;border:1px solid #4a4a4a}