:root{--paper: #FAFAF7;--ink: #16130F;--ink-soft: #4B4640;--accent: #FF4D00;--rule: #16130F;--panel: #FFFFFF;--font-display: "Space Grotesk", "Helvetica Neue", Arial, sans-serif;--font-mono: "IBM Plex Mono", "SF Mono", Menlo, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: clamp(1.5rem, 3vw, 2rem);--text-3xl: clamp(2rem, 4.5vw, 2.75rem);--text-hero: clamp(2.25rem, 6vw, 3.5rem);--wrap: 68rem;--pad: 1.25rem;--border: 2px solid var(--rule)}[data-theme=dark]{--paper: #141414;--ink: #EDEAE2;--ink-soft: #9C978E;--accent: #FF4D00;--rule: #EDEAE2;--panel: #1B1B1B}*,*:before,*:after{box-sizing:border-box;margin:0}html{background:var(--paper);color:var(--ink);font-family:var(--font-mono);font-size:100%;line-height:1.6;-webkit-font-smoothing:antialiased}img,svg{display:block;max-width:100%}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.2em}a:hover{color:var(--accent)}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}::selection{background:var(--accent);color:#fff}.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--pad)}.skip-link{position:absolute;left:var(--pad);top:-100%;z-index:10;background:var(--ink);color:var(--paper);padding:.5rem 1rem;font-size:var(--text-sm);text-decoration:none;border:var(--border)}.skip-link:focus{top:.5rem}.label{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.label--accent{color:var(--accent)}h1,h2,h3{font-family:var(--font-display);font-weight:700;line-height:1.1;letter-spacing:-.01em;text-wrap:balance}.site-header{border-bottom:var(--border)}.site-header__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;padding-block:.875rem}.site-logo{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);text-decoration:none;letter-spacing:-.02em}.site-logo:before{content:"";display:inline-block;width:.6em;height:.6em;margin-right:.5em;background:var(--accent)}.site-nav{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem 1.25rem}.site-nav a{font-size:var(--text-sm);font-weight:500;letter-spacing:.08em;text-transform:uppercase;text-decoration:none}.site-nav a[aria-current=page]{color:var(--accent)}.theme-toggle{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500;letter-spacing:.08em;text-transform:uppercase;background:transparent;color:var(--ink);border:var(--border);padding:.25rem .75rem;cursor:pointer}.theme-toggle:hover{background:var(--ink);color:var(--paper)}main{min-height:70vh}.page-head{border-bottom:var(--border);padding-block:2.5rem 2rem}.page-head h1{font-size:var(--text-3xl);margin-top:.5rem}.page-head p{max-width:42rem;margin-top:.75rem;color:var(--ink-soft);font-size:var(--text-sm)}.section{padding-block:2.5rem}.section+.section{border-top:var(--border)}.hero{padding-block:3rem}.hero__grid{display:grid;gap:2.5rem;align-items:start}@media(min-width:56rem){.hero__grid{grid-template-columns:1.1fr 1fr}}.hero h1{font-size:var(--text-hero);margin-block:.75rem 1rem}.hero__lede{font-size:var(--text-sm);color:var(--ink-soft);max-width:36rem}.hero__cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.75rem}.btn{display:inline-block;font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;border:var(--border);padding:.625rem 1.25rem}.btn:hover{background:var(--ink);color:var(--paper)}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn--primary:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}.terminal{border:3px solid var(--rule);background:var(--panel);box-shadow:8px 8px 0 var(--accent)}.terminal__bar{display:flex;align-items:center;justify-content:space-between;border-bottom:var(--border);padding:.5rem 1rem}.terminal__dots{display:flex;gap:.375rem}.terminal__dots span{width:.625rem;height:.625rem;border:1.5px solid var(--rule)}.terminal__dots span:first-child{background:var(--accent);border-color:var(--accent)}.terminal__title{font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.terminal__body{padding:1.25rem 1.25rem 1.5rem;font-size:var(--text-sm);line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:40rem){.terminal__body{padding:1rem 1rem 1.25rem;font-size:var(--text-xs)}}.terminal__body .ok{color:var(--accent);font-weight:700}.tline{display:block;min-height:1.7em}.tline.cmd:before{content:"$ ";color:var(--accent);font-weight:700}.tline.kv:before{content:attr(data-key) "  ";color:var(--ink-soft)}.caret{display:inline-block;width:.6em;height:1em;vertical-align:-.15em;background:var(--accent)}.caret[hidden]{display:none}@media(prefers-reduced-motion:reduce){.caret{animation:none}}.timeline{display:grid;gap:0}.job{border:var(--border);border-top:none;padding:1.5rem var(--pad)}.job:first-child{border-top:var(--border)}.job__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.25rem 1rem}.job__company{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700}.job__period{font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);font-weight:700}.job__title{font-size:var(--text-sm);font-weight:700;margin-top:.375rem}.job__skills{font-size:var(--text-xs);color:var(--ink-soft);margin-top:.375rem;overflow-wrap:anywhere}.job ul{margin-top:.875rem;padding-left:1.25rem;font-size:var(--text-sm)}.job li+li{margin-top:.375rem}.job li::marker{color:var(--accent)}.project{border:var(--border);border-top:none;padding:1.25rem var(--pad)}.project:first-child{border-top:var(--border)}.project__name{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700}.project__name a{text-decoration:none}.project__name a:hover{color:var(--accent)}.project__desc{font-size:var(--text-sm);margin-top:.375rem;max-width:46rem}.tags{display:flex;flex-wrap:wrap;gap:.375rem;margin-top:.75rem;list-style:none;padding:0}.tag{font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;border:1.5px solid var(--rule);padding:.125rem .5rem;color:var(--ink-soft)}.internal-note{font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);font-weight:700}.filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem;margin-bottom:1.5rem}.tag-filter{font-family:var(--font-mono);background:transparent;cursor:pointer}.tag-filter:hover{border-color:var(--accent);color:var(--accent)}.tag-filter.is-active{background:var(--accent);border-color:var(--accent);color:#fff}a.tag{display:inline-block;text-decoration:none}a.tag:hover{border-color:var(--accent);color:var(--accent)}.post-list{list-style:none;padding:0}.post-item{border:var(--border);padding:1.25rem var(--pad)}.post-item+.post-item{margin-top:-2px}.post-item__title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700}.post-item__title a{text-decoration:none}.post-item__title a:hover{color:var(--accent)}.post-item__meta{font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-top:.25rem}.post-item__desc{font-size:var(--text-sm);margin-top:.5rem;max-width:46rem}.prose{max-width:42rem;font-size:var(--text-base)}.prose h2{font-size:var(--text-xl);margin-top:2rem;padding-top:1rem;border-top:var(--border)}.prose p{margin-top:1rem}.prose ul{margin-top:1rem;padding-left:1.25rem}.prose li+li{margin-top:.25rem}.prose code{font-size:.875em;background:var(--panel);border:1px solid var(--rule);padding:.1em .35em}.prose pre{border:var(--border);background:var(--panel);padding:1rem;margin-top:1rem;overflow-x:auto;font-size:var(--text-sm);line-height:1.6}.prose pre code{background:none;border:none;padding:0}.prose strong{font-weight:700}.site-footer{border-top:var(--border);margin-top:2rem}.site-footer__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1.5rem;padding-block:1.5rem}.site-footer nav{display:flex;flex-wrap:wrap;gap:.25rem 1.25rem}.site-footer a{font-size:var(--text-sm);text-decoration:none;letter-spacing:.06em;text-transform:uppercase}.site-footer a:hover{color:var(--accent)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
