@font-face{font-family:IBM Plex Sans;src:url(/fonts/ibm-plex-sans-latin-400-normal.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(/fonts/ibm-plex-sans-latin-500-normal.woff2)format("woff2");font-weight:500;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(/fonts/ibm-plex-sans-latin-600-normal.woff2)format("woff2");font-weight:600;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/ibm-plex-mono-latin-500-normal.woff2)format("woff2");font-weight:500;font-display:swap}:root{--bg:#141614;--text:#c9cdc6;--text-strong:#dfe3dc;--heading:#eef1ea;--muted:#a8ada4;--muted-2:#7e847c;--muted-quiet:#868c83;--muted-footer:#868c83;--accent:#8fbf9f;--accent-hover:#b3d9bf;--tag-between:#b9ae7d;--tag-shower:#b98d7d;--hairline:#ffffff14;--hairline-soft:#ffffff12;--pqm-track:#2a2e2b;--sep:#3a403a;--mono:"IBM Plex Mono", ui-monospace, monospace;--sans:"IBM Plex Sans", system-ui, sans-serif}*{box-sizing:border-box}html{background:var(--bg)}body{max-width:660px;font-family:var(--sans);color:var(--text);-webkit-font-smoothing:antialiased;margin:0 auto;padding:34px 28px 0;font-size:15px;line-height:1.75}::selection{background:#8fbf9f40}a{color:var(--accent)}a:hover{color:var(--accent-hover)}:focus-visible{outline:2px solid var(--accent-hover);outline-offset:2px;border-radius:2px}h1,h2,h3{color:var(--heading);line-height:1.3}.cursor{color:var(--accent)}@media (prefers-reduced-motion:no-preference){.cursor{animation:1.1s step-end infinite blink}@keyframes blink{50%{opacity:0}}}.skip-link{font-family:var(--mono);background:var(--bg);padding:6px 10px;font-size:13px;position:absolute;left:-9999px}.skip-link:focus-visible{z-index:1;top:8px;left:28px}header nav{font-family:var(--mono);justify-content:space-between;align-items:center;margin-bottom:72px;font-size:13px;display:flex}.brand{color:var(--accent);align-items:center;gap:10px;text-decoration:none;display:inline-flex}.brand:hover span{color:var(--accent-hover)}.brand img{filter:saturate(.85);border:1px solid #8fbf9f59;border-radius:50%;width:28px;height:28px}header nav ul{gap:24px;margin:0;padding:0;list-style:none;display:flex}header nav ul a{color:var(--muted-2);text-decoration:none}header nav ul a:hover,header nav ul a[aria-current=page]{color:var(--heading)}footer{font-family:var(--mono);color:var(--muted-footer);flex-wrap:wrap;justify-content:space-between;gap:4px 16px;margin-top:64px;padding:40px 0 28px;font-size:11px;display:flex}main>h1{font-family:var(--mono);margin:0 0 18px;font-size:22px;font-weight:500}.intro{color:var(--muted);margin:0 0 6px}.note{font-family:var(--mono);color:var(--muted-2);margin:0 0 44px;font-size:12px}.home h1{font-family:var(--mono);margin:0 0 22px;font-size:27px;font-weight:500}.home .lead{color:var(--text-strong);max-width:54ch;margin:0 0 14px;font-size:15.5px}.home .body,.home .close{color:var(--muted);max-width:54ch;margin:0 0 14px}.contact{font-family:var(--mono);flex-wrap:wrap;gap:22px;margin:26px 0 56px;padding:0;font-size:13px;list-style:none;display:flex}.contact a{border-bottom:1px solid #8fbf9f59;padding-bottom:1px;text-decoration:none}.contact a:hover{border-bottom-color:var(--accent-hover)}.home-section{margin:0 0 44px}.section-head{justify-content:space-between;align-items:baseline;margin-bottom:14px;display:flex}.section-head h2{font-family:var(--mono);letter-spacing:.1em;color:var(--muted-2);text-transform:lowercase;margin:0;font-size:11.5px;font-weight:500}.section-head .all{font-family:var(--mono);font-size:12px;text-decoration:none}.home-section ul{margin:0;padding:0;list-style:none}.home-section li{margin-bottom:14px}.home-section li a{color:var(--heading);font-weight:500;text-decoration:none}.home-section li a:hover{color:var(--accent)}.home-section .item-desc{color:var(--muted);font-size:14px;display:block}.dayjob{border-top:1px solid var(--hairline);margin-top:12px;padding-top:28px}.dayjob h2{font-family:var(--mono);letter-spacing:.1em;color:var(--muted-2);margin:0 0 10px;font-size:11.5px;font-weight:500}.dayjob p{color:var(--muted);max-width:58ch;margin:0;font-size:14px}.projects{flex-direction:column;gap:56px;margin-top:44px;display:flex}.project h2{margin:0 0 10px;font-size:16.5px;font-weight:600}.sublabel{font-family:var(--mono);color:var(--accent);margin-left:8px;font-size:11.5px;font-weight:400}.blurb{color:var(--muted);max-width:56ch;font-size:14.5px;line-height:1.7}.blurb p,.project figure{margin:0 0 16px}.project figure img{border-radius:8px;width:100%;max-width:520px;height:auto;display:block}.pqm{max-width:360px}.pqm-track{background:var(--pqm-track);border-radius:2px;height:2px;position:relative}.pqm-dot{background:var(--accent);border-radius:50%;width:8px;height:8px;position:absolute;top:-3px;transform:translate(-50%)}.pqm-ends{font-family:var(--mono);color:var(--muted-quiet);justify-content:space-between;margin-top:7px;font-size:10.5px;display:flex}.post-list{margin:44px 0 0;padding:0;list-style:none}.post-list li{border-top:1px solid var(--hairline-soft)}.post-list li:last-child{border-bottom:1px solid var(--hairline-soft)}.post-list a{justify-content:space-between;align-items:baseline;gap:24px;padding:17px 4px;text-decoration:none;display:flex}.post-list a:hover{background:#ffffff05}.row-main{flex-direction:column;display:flex}.row-title{color:var(--heading);font-size:14.5px;font-weight:500}.row-desc{color:var(--muted-2);font-size:13px}.row-meta{flex-direction:column;flex-shrink:0;align-items:flex-end;display:flex}.tag{font-family:var(--mono);font-size:11px}.tag--proper{color:var(--accent)}.tag--between{color:var(--tag-between)}.tag--shower{color:var(--tag-shower)}.brain{font-family:var(--mono);color:var(--muted-quiet);font-size:10.5px}.back{font-family:var(--mono);font-size:12.5px;text-decoration:none}.post-meta{font-family:var(--mono);color:var(--muted-2);flex-wrap:wrap;gap:10px;margin:26px 0 10px;font-size:11.5px;display:flex}.post-meta .sep{color:var(--sep)}.post h1{font-family:var(--sans);text-wrap:pretty;max-width:24ch;margin:0 0 26px;font-size:29px;font-weight:600;line-height:1.3}.post article{color:#c2c7bf;max-width:58ch;font-size:15.5px;line-height:1.85}.post article p{margin:0 0 22px}.post article h2{margin:40px 0 14px;font-size:19px;font-weight:600}.post article h3{margin:32px 0 12px;font-size:16px;font-weight:600}.post article blockquote{border-left:1px solid var(--hairline);color:var(--muted);margin:0 0 22px;padding-left:18px}.post article code{font-family:var(--mono);background:#ffffff08;border-radius:4px;padding:1px 5px;font-size:.92em}.post article pre{background:#ffffff08;border-radius:6px;margin:0 0 22px;padding:14px 16px;overflow-x:auto}.post article pre code{background:0 0;padding:0}.post article ul,.post article ol{margin:0 0 22px;padding-left:26px}.post article img{border-radius:8px;width:100%;max-width:520px;height:auto;margin:26px 0;display:block}.post-nav{border-top:1px solid var(--hairline);font-family:var(--mono);margin-top:48px;padding-top:18px;font-size:12px}.prev-next{justify-content:space-between;gap:24px;margin-bottom:12px;display:flex}.prev-next a,.post-nav .back-all{text-decoration:none}.prev-next .next{text-align:right;margin-left:auto}.notfound h1{font-family:var(--mono);font-size:27px;font-weight:500}.notfound p{color:var(--muted);max-width:54ch}@media (width<=600px){header nav{flex-direction:column;align-items:flex-start;gap:14px}.home h1{font-size:25px}.post-list a{flex-direction:column;align-items:flex-start;gap:4px}.row-meta{flex-direction:row;align-items:baseline;gap:12px}.post h1{font-size:24px}.prev-next{flex-direction:column;gap:8px}.prev-next .next{text-align:left;margin-left:0}.pqm{max-width:none}}@media (width<=400px){body{padding-left:20px;padding-right:20px}}
