@font-face{font-family:Atkinson Hyperlegible Next Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/atkinson-hyperlegible-next-latin-ext-wght-normal.C6vrW8VD.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible Next Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/atkinson-hyperlegible-next-latin-wght-normal.BcXVPD7q.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible Mono Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/atkinson-hyperlegible-mono-latin-ext-wght-normal.CXgNM06D.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible Mono Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/atkinson-hyperlegible-mono-latin-wght-normal.CoA7y8X5.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#0f1113;--panel:#16191c;--line:#2a2e33;--ink:#e6e3da;--ink-soft:#c9c6bd;--muted:#9c9a92;--faint:#5e5c56;--accent:#ffb547;--ok:#7fd48a;--font-sans:"Atkinson Hyperlegible Next Variable", "Atkinson Hyperlegible", system-ui, sans-serif;--font-mono:"Atkinson Hyperlegible Mono Variable", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--shell:1080px;--gutter:clamp(1rem, 4vw, 3rem);--section-gap:clamp(4rem, 8vw, 7rem);--header-h:3.5rem;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 1rem);-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);margin:0;font-size:1.0625rem;line-height:1.6}h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}ul,ol{padding:0;list-style:none}img{max-width:100%;height:auto;display:block}a{color:inherit}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.mono,.cmd,.mono-small{font-family:var(--font-mono)}.mono-small{font-size:.8125rem}.muted{color:var(--muted)}.soft{color:var(--ink-soft)}.accent{color:var(--accent)}.ok,.prompt{color:var(--ok)}.strong{font-weight:700}.cmd{color:var(--muted);font-size:.875rem;font-weight:400}.link-row{flex-wrap:wrap;gap:0 1.25rem;display:flex}.text-link{border-bottom:1px solid;padding:.5rem 0 .0625rem;text-decoration:none;display:inline-block}.text-link:hover{border-bottom-width:2px}.skip-link{z-index:20;background:var(--accent);color:var(--bg);padding:.75rem 1rem;font-weight:700;text-decoration:none;position:absolute;top:-5rem;left:1rem}.skip-link:focus{top:.75rem}.site-header{z-index:10;background:var(--bg);border-bottom:1px solid var(--line);position:sticky;top:0}.site-nav{max-width:var(--shell);min-height:var(--header-h);padding:0 var(--gutter);font-family:var(--font-mono);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:0 1.5rem;margin:0 auto;font-size:.875rem;display:flex}.brand-link{color:var(--ink);padding:.875rem 0;text-decoration:none}.brand-path{color:var(--muted)}.nav-links{flex-wrap:wrap;gap:0 1.375rem;display:flex}.nav-links a{color:var(--muted);padding:.875rem 0;text-decoration:none}.nav-links a:hover,.nav-links a[aria-current=page]{color:var(--ink)}.nav-prefix{color:var(--faint)}.nav-links a:hover .nav-prefix,.nav-links a[aria-current=page] .nav-prefix{color:var(--accent)}.page-shell{max-width:var(--shell);padding:0 var(--gutter);margin:0 auto}.hero{flex-wrap:wrap;align-items:flex-start;gap:2.5rem 3.5rem;padding:clamp(3rem,7vw,6.5rem) 0 clamp(3.5rem,7vw,6rem);display:flex}.hero-main{flex-direction:column;flex:3 30rem;gap:1.5rem;min-width:0;display:flex}.hero .cmd{font-size:.9375rem}.hero-title{letter-spacing:-.035em;font-size:clamp(2.875rem,7.4vw,6.5rem);font-weight:800;line-height:.95}.caret{background:var(--accent);vertical-align:-.04em;width:.42em;height:.82em;margin-left:.12em;animation:1.1s step-end 4 caret-blink;display:inline-block}@keyframes caret-blink{50%{opacity:0}}.hero-copy{text-wrap:pretty;max-width:38ch;font-size:clamp(1.25rem,2vw,1.625rem);line-height:1.4}.hl{color:var(--accent)}.status-block{background:var(--panel);border:1px solid var(--line);font-family:var(--font-mono);flex-direction:column;gap:.25rem;padding:1rem 1.25rem;font-size:.875rem;line-height:1.7;display:flex}.hero-actions{font-family:var(--font-mono);flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;font-size:.9375rem;display:flex}.button-primary{background:var(--accent);min-height:3rem;color:var(--bg);align-items:center;gap:.625rem;padding:0 1.25rem;font-weight:600;text-decoration:none;display:inline-flex}.button-primary:hover{background:#ffc670}.hero-portrait{flex-direction:column;flex:13.75rem;gap:.625rem;max-width:17.5rem;display:flex}.hero-portrait img{aspect-ratio:1;object-fit:cover;border:1px solid var(--line);width:100%}.hero-portrait figcaption{color:var(--muted);font-family:var(--font-mono);font-size:.75rem}.section{padding-bottom:var(--section-gap);flex-direction:column;gap:1.75rem;display:flex}.section-head{border-top:1px dashed var(--line);flex-direction:column;gap:.75rem;padding-top:1.5rem;display:flex}.section-title{font-family:var(--font-mono);letter-spacing:-.01em;font-size:clamp(1.5rem,2.4vw,2rem);font-weight:600}.hash{color:var(--accent)}.section-lede{max-width:60ch;color:var(--muted);text-wrap:pretty}.skill-grid{background:var(--line);border:1px solid var(--line);font-family:var(--font-mono);grid-template-columns:repeat(auto-fit,minmax(min(17.5rem,100%),1fr));gap:1px;font-size:.875rem;line-height:1.85;display:grid}.skill-block{background:var(--panel);padding:1.25rem 1.375rem}.yaml-key{color:var(--accent);font-size:inherit;font-weight:400}.yaml-comment{color:var(--muted)}.yaml-list li{padding-left:1rem}.yaml-list li:before{content:"- "}.table-wrap{overflow-x:auto}.cert-table{border-collapse:collapse;text-align:left;width:100%;min-width:35rem;font-size:1rem;line-height:1.45}.cert-table caption{text-align:left;padding-bottom:.75rem}.cert-table th{border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--muted);font-family:var(--font-mono);padding:.625rem 1rem .625rem 0;font-size:.75rem;font-weight:400}.cert-table td{border-bottom:1px solid var(--line);padding:.6875rem 1rem .6875rem 0}.cert-table .align-end{text-align:right;padding-right:0}.cert-table td.mono{font-size:.8125rem}.check{color:var(--ok);font-family:var(--font-mono)}.project-list{flex-direction:column;gap:1.75rem;display:flex}.project-card{background:var(--panel);border:1px solid var(--line)}.project-bar{border-bottom:1px solid var(--line);font-family:var(--font-mono);flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;padding:.75rem 1.25rem;font-size:.8125rem;display:flex}.project-body{flex-direction:column;gap:.75rem;padding:1.375rem 1.25rem 1.25rem;display:flex}.project-title{letter-spacing:-.015em;font-size:clamp(1.375rem,2vw,1.75rem);font-weight:700;line-height:1.2}.project-copy{text-wrap:pretty;max-width:68ch}.stack{color:var(--muted);font-family:var(--font-mono);font-size:.8125rem;line-height:1.7}.stack-label{color:var(--ink)}.project-body .link-row{font-family:var(--font-mono);font-size:.875rem}.client-list{margin-top:1rem}.client-list>.cmd{margin-bottom:.75rem}.row{border-top:1px solid var(--line);flex-wrap:wrap;gap:.25rem 2rem;padding:1rem 0;display:flex}.row:last-child{border-bottom:1px solid var(--line)}.row-period{color:var(--muted);font-family:var(--font-mono);flex-direction:column;flex:0 0 11.875rem;gap:.25rem;padding-top:.1875rem;font-size:.8125rem;display:flex}.row-body{flex:26rem;min-width:0}.log-entry{padding:1.625rem 0}.log-entry .row-period{font-size:.875rem}.log-ref{font-size:.75rem}.log-body{flex-direction:column;gap:.5rem;display:flex}.log-title{font-size:1.5rem;font-weight:700;line-height:1.2}.log-company{color:var(--muted);font-weight:400}.log-body>.soft{max-width:64ch}.diff-list{font-family:var(--font-mono);font-size:.875rem;line-height:1.9}.about-lead{letter-spacing:-.015em;text-wrap:pretty;max-width:34ch;font-size:clamp(1.375rem,2.3vw,2rem);font-weight:700;line-height:1.25}.two-col{grid-template-columns:repeat(auto-fit,minmax(min(18.75rem,100%),1fr));gap:1.25rem 2.5rem;display:grid}.two-col p{text-wrap:pretty}.site-footer{background:var(--panel);border-top:1px solid var(--line)}.footer-inner{max-width:var(--shell);padding:clamp(3rem, 6vw, 5.5rem) var(--gutter) 2.5rem;flex-direction:column;gap:2rem;margin:0 auto;display:flex}.footer-email{color:var(--accent);letter-spacing:-.035em;overflow-wrap:anywhere;align-self:flex-start;padding:.375rem 0;font-size:clamp(1.625rem,5.4vw,4.5rem);font-weight:800;line-height:1;text-decoration:none}.footer-email:hover{text-underline-offset:.12em;text-decoration:underline .06em}.contact-grid{font-family:var(--font-mono);grid-template-columns:repeat(auto-fit,minmax(min(12.5rem,100%),1fr));gap:0 1.5rem;font-size:.875rem;display:grid}.contact-grid>div{border-top:1px solid var(--line);padding:.875rem 0}.contact-grid dt{color:var(--muted)}.contact-grid dd:not(.link-row){padding-top:.375rem}.contact-grid dd:has(.text-link){padding-top:0}.footer-bottom{border-top:1px dashed var(--line);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem 3rem;padding-top:1.5rem;display:flex}.privacy-note{max-width:72ch;color:var(--muted);font-family:var(--font-mono);font-size:.75rem;line-height:1.7}.to-top{font-family:var(--font-mono);white-space:nowrap;font-size:.8125rem}.blog-index{padding-top:clamp(3rem,7vw,6rem)}.section-header{flex-direction:column;gap:.75rem;display:flex}.section-header h1{letter-spacing:-.03em;font-size:clamp(2rem,4.5vw,3.5rem);font-weight:800;line-height:1.05}.section-header p:not(.eyebrow){max-width:60ch;color:var(--muted)}.eyebrow{color:var(--muted);font-family:var(--font-mono);font-size:.875rem}.eyebrow:before{content:"$ cd ~/";color:var(--ok)}.card-grid{border-top:1px solid var(--line);flex-direction:column;display:flex}.card{border-bottom:1px solid var(--line);flex-direction:column;gap:.5rem;padding:1.5rem 0;display:flex}.card-title{font-size:clamp(1.25rem,2vw,1.625rem);font-weight:700;line-height:1.25}.meta{color:var(--muted);font-family:var(--font-mono);font-size:.8125rem}.copy{max-width:68ch;color:var(--ink-soft)}.inline-link{color:var(--accent);text-underline-offset:.2em;text-decoration:underline}.article{max-width:46rem;padding:clamp(3rem, 7vw, 6rem) 0 var(--section-gap)}.article-header{border-bottom:1px dashed var(--line);flex-direction:column;gap:.75rem;padding-bottom:1.5rem;display:flex}.article-header .inline-link{font-family:var(--font-mono);align-self:flex-start;font-size:.875rem}.article-header h1{letter-spacing:-.03em;font-size:clamp(2rem,4.5vw,3.25rem);font-weight:800;line-height:1.08}.article-header p:last-child{color:var(--muted);font-size:1.125rem}.article-body{color:var(--ink-soft);margin-top:2rem;font-size:1.0625rem;line-height:1.8}.article-body>*+*{margin-top:1rem}.article-body h2,.article-body h3{color:var(--ink);font-family:var(--font-mono);margin-top:2.25rem;font-weight:600;line-height:1.25}.article-body h2{font-size:1.5rem}.article-body h2:before{content:"## ";color:var(--accent)}.article-body h3{font-size:1.1875rem}.article-body a{color:var(--accent);text-underline-offset:.2em}.article-body ul,.article-body ol{padding-left:1.25rem}.article-body ul{list-style:square}.article-body ol{list-style:decimal}.article-body code{background:var(--panel);border:1px solid var(--line);font-family:var(--font-mono);padding:.1em .35em;font-size:.9em}.article-body pre{background:var(--panel);border:1px solid var(--line);padding:1rem 1.25rem;font-size:.875rem;line-height:1.6;overflow-x:auto}.article-body pre code{background:0 0;border:0;padding:0}.article-body blockquote{border-left:2px solid var(--line);color:var(--muted);margin-left:0;padding-left:1rem}@media (width<=48rem){html{scroll-padding-top:1rem}.site-header{position:static}}@media (width<=560px){.nav-links{gap:0 .875rem}.brand-path{display:none}.cert-table{min-width:0;font-size:.9375rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.caret{animation:none}}
