@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;450;500;600&display=swap";:root{color-scheme:dark;--bg:#0b0b0e;--panel:#101015;--text:#e6e6ef;--muted:#a5a6b5;--line:#33333f;--cyan:#00c8ff;--green:#72f600;--yellow:#ffe600;--purple:#c46bff;--pink:#ff42bd;--orange:#ff9d39;--mint:var(--green);--rainbow:linear-gradient(90deg, #00b8ff, #00efad 17%, #ffe600 35%, #ff863d 50%, #aa43ff 72%, #ff168f);--mono:"IBM Plex Mono", "Cascadia Code", Consolas, monospace;font-family:var(--mono);background:var(--bg);color:var(--text);font-synthesis:none;scroll-behavior:smooth;scroll-padding-top:32px}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}::selection{background:var(--purple);color:var(--bg)}:focus-visible{outline:2px solid var(--mint);outline-offset:5px}[hidden]{display:none!important}h1,h2,h3,p{margin-top:0}.site-shell{width:min(1120px,100% - 96px);margin:0 auto}.mint,.prompt-mark{color:var(--mint)}.term-cyan{color:var(--cyan)}.term-purple{color:var(--purple)}.term-pink{color:var(--pink)}.term-yellow{color:var(--yellow)}.term-green{color:var(--green)}.muted{color:var(--muted)}.sr-only,.skip-link:not(:focus){clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link:focus{z-index:10;background:var(--mint);color:var(--bg);padding:12px;position:fixed;top:10px;left:10px}.site-header{border-bottom:1px dashed var(--line);justify-content:space-between;align-items:center;gap:30px;min-height:94px;display:flex}.wordmark{font:500 15px var(--mono);letter-spacing:-.6px;white-space:nowrap}.prompt-mark{margin-right:9px}.site-header nav{font:12px var(--mono);color:#b8bac0;align-items:center;gap:30px;display:flex}.site-header nav a{transition:color .2s}.site-header nav a:hover,.site-header nav a.selected{text-underline-offset:6px;text-decoration:underline}.site-header nav a>span{color:var(--cyan)}.site-header .nav-contact{border:1px solid var(--line);color:var(--text);border-radius:0;padding:10px 14px}.nav-contact span{color:var(--mint);margin-left:13px}.hero{padding-top:55px}.pixel-art{max-width:880px;margin:0 auto;container-type:inline-size}.pixel-name{width:100%;aspect-ratio:calc(var(--columns) * .6 / var(--rows));font:400 calc(100cqw / var(--columns) / .6)/1 var(--mono);white-space:pre;user-select:none;margin:0;position:relative}.pixel-letter{display:contents}.pixel-cell,.pixel-echo,.pixel-noise{position:absolute}.pixel-cell{animation:decode-pixel var(--decode-duration) steps(1, end) both;animation-delay:var(--delay)}.pixel-echo{opacity:var(--shadow-opacity);animation:reveal-echo var(--shadow-duration) steps(3, end) both;animation-delay:calc(var(--delay) + var(--shadow-offset))}.pixel-noise{opacity:0;animation:decode-noise var(--decode-duration) steps(1, end) both;animation-delay:var(--delay);font-size:.7em}.pixel-scan{top:calc(100% / var(--rows));width:1px;height:calc((var(--rows) - 2) / var(--rows) * 100%);background:var(--cyan);opacity:0;animation:scan-name var(--render-duration) linear both;position:absolute}.pixel-caret{top:calc(100% / var(--rows));left:calc((var(--columns) - 3) / var(--columns) * 100%);height:calc(var(--glyph-height) / var(--rows) * 100%);border-left:.22cqw solid var(--pink);opacity:0;animation:1.1s step-end infinite caret-blink;animation-delay:var(--render-duration);font-size:0;position:absolute}@keyframes decode-pixel{0%,35%{opacity:0}55%{opacity:.3}75%{opacity:.65}85%{opacity:.4}to{opacity:1}}@keyframes reveal-echo{0%{opacity:0}to{opacity:var(--shadow-opacity)}}@keyframes decode-noise{0%{opacity:0}15%{opacity:.65}55%{opacity:.3}75%,to{opacity:0}}@keyframes scan-name{0%{opacity:0;left:0}5%,85%{opacity:.35}to{opacity:0;left:97%}}@keyframes caret-blink{0%,49%{opacity:1}50%,to{opacity:0}}.pixel-caption{font:10px var(--mono);color:var(--muted);justify-content:space-between;gap:16px;margin-top:8px;margin-bottom:32px;display:flex}.rainbow-rule{background:var(--rainbow);height:2px}.hero-bottom{grid-template-columns:1.1fr 1fr;align-items:center;gap:90px;padding-top:47px;display:grid}.hero-heading{letter-spacing:-1px;margin-bottom:20px;font-size:clamp(24px,2.5vw,34px);font-weight:500;line-height:1.5}.hero-description{max-width:430px;color:var(--muted);margin-bottom:26px;font-size:14px;line-height:1.8}.hero-actions{align-items:center;gap:26px;display:flex}.button{border:1px solid var(--line);min-height:42px;font:500 11px var(--mono);border-radius:0;justify-content:center;align-items:center;gap:25px;padding:13px 17px;transition:background .2s,transform .2s;display:inline-flex}.button:hover{transform:translateY(-2px)}.button-light{color:var(--pink);border-color:var(--pink);background:#ff42bd08}.button-light:hover{background:#ff42bd18}.text-link{font:11px var(--mono);align-items:center;gap:13px;transition:color .2s;display:inline-flex}.text-link span{color:var(--cyan)}.text-link:hover{color:var(--mint)}.profile-card{border:1px solid var(--line);border-top-color:var(--purple);background:var(--panel);border-radius:0;padding:24px}.profile-card dl{margin:0}.profile-card dl>div+div{margin-top:20px}.profile-card dt{color:var(--yellow);font:11px var(--mono);margin-bottom:7px}.profile-card dt:before{content:"--";color:var(--purple)}.profile-card dd{margin:0;font-size:13px;line-height:1.8}.profile-card dd .muted{font-size:12px}.hero-footnote{color:#8e9198;font:8px var(--mono);letter-spacing:1px;justify-content:flex-end;margin-top:47px;padding-bottom:27px;display:flex}.hero-footnote a span{color:var(--mint);margin-left:16px}.section{border-top:1px dashed var(--line);padding:64px 0 72px}.section-label{color:var(--muted);font:10px var(--mono);letter-spacing:1px;gap:12px;margin-bottom:30px;display:flex}h2{color:var(--heading-color,var(--cyan));letter-spacing:-1px;margin-bottom:0;font-size:clamp(25px,2.6vw,32px);font-weight:500;line-height:1.3}.work-section{--heading-color:var(--yellow)}.journal-section{--heading-color:var(--purple)}.about-grid{grid-template-columns:1fr 1.1fr;gap:90px;display:grid}.about-copy{color:var(--muted);font-size:13px;line-height:1.95}.about-copy p:first-child{color:#dddeda}.section-heading{justify-content:space-between;align-items:center;gap:24px;margin-bottom:31px;display:flex}.work-list{border-top:1px solid var(--line)}.work-row{--work-accent:var(--cyan);border-bottom:1px dashed var(--line);grid-template-columns:1fr 1.55fr 30px;gap:28px;padding:29px 0;display:grid}.work-meta{--work-accent:var(--purple)}.work-homelab{--work-accent:var(--green)}.work-company{align-items:center;gap:18px;display:flex}.work-company h3{color:var(--work-accent);margin-bottom:7px;font-size:15px;font-weight:500}.work-company>div>span{color:var(--muted);font:9px var(--mono)}.work-detail h3{color:var(--work-accent);margin-bottom:9px;font-size:13px;font-weight:500}.work-detail p{color:var(--muted);max-width:530px;margin-bottom:14px;font-size:12px;line-height:1.85}.work-highlights{color:var(--muted);max-width:530px;margin:0 0 16px;padding-left:17px;font-size:12px;line-height:1.85}.work-highlights li+li{margin-top:7px}.work-highlights li::marker{color:var(--work-accent)}.work-highlights strong{color:var(--text);font-weight:500}.work-tags{color:var(--muted);font:10px var(--mono);flex-wrap:wrap;gap:7px 16px;display:flex}.work-tags span:before{content:"#";color:inherit;opacity:.7;margin-right:3px}.work-number{color:#656a73;font:10px var(--mono);text-align:right}.posts-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:25px;display:grid}.post-card{min-width:0;display:block}.post-art{border:1px solid var(--line);background:var(--panel);border-radius:0;place-items:center;height:200px;margin-bottom:21px;transition:border-color .25s;display:grid;position:relative;overflow:hidden;container-type:inline-size}.post-card:hover .post-art{border-color:var(--cyan)}.art-file,.art-arrow{font:9px var(--mono);color:#aaa5b9;position:absolute;bottom:15px}.art-file{left:16px}.art-arrow{color:var(--muted);font-size:10px;right:17px}.ascii-art{font:400 min(10px, calc((100cqw - 32px) / var(--art-columns) / .6))/1.1 var(--mono);white-space:pre;color:#bfc1cc;margin:0}.ascii-compact{width:86px;font-size:calc(86px / var(--art-columns) / .6);flex-shrink:0;line-height:1}.ascii-raster-line{grid-template-columns:repeat(var(--art-columns), .6em);height:1em;display:grid}.ascii-raster-line>span{min-width:0}.art-red{color:#f76140}.art-green{color:#82d03a}.art-blue{color:#409cff}.art-gold{color:#f4c838}.art-led{color:#81cfa3}.art-accent{color:#70cbe6}.art-shade{color:#626577}.post-meta{font:9px var(--mono);color:var(--muted);justify-content:space-between;align-items:center;gap:15px;margin-bottom:12px;display:flex}.post-card h3{color:var(--purple);letter-spacing:-.3px;margin-bottom:9px;font-size:16px;font-weight:500;line-height:1.5}.post-card h3 span{color:var(--muted);font-size:13px}.post-card>p{color:var(--muted);margin:0;font-size:12px;line-height:1.8}.posts-grid.single-post{grid-template-columns:1fr}.single-post .post-card{grid-template-columns:1fr 1.3fr;align-content:center;gap:0 35px;display:grid}.single-post .post-art{grid-row:1/5;height:210px;margin-bottom:0}.single-post .post-meta{align-self:end;margin-top:28px}.single-post .post-card h3{max-width:400px;font-size:22px}.single-post .post-card>p{max-width:420px;font-size:14px}.empty-state{color:var(--muted);font-family:var(--mono);padding:40px 0}.contact-section{--heading-color:var(--pink);border-top:1px dashed var(--line);padding:62px 0 70px}.contact-section .section-label{margin-bottom:26px}.contact-section h2{margin-bottom:24px}.contact-email{font:13px var(--mono);border-bottom:1px dashed var(--line);padding-bottom:9px}.contact-email span{color:var(--mint);margin-left:30px}.site-footer{border-top:1px dashed var(--line);flex-wrap:wrap;align-items:center;gap:16px 24px;padding:28px 0 30px;display:flex}.site-footer>div{font:9px var(--mono);color:#b3b5bb;gap:22px;margin-left:auto;display:flex}.site-footer a:hover{color:var(--mint)}.copyright{font:8px var(--mono);color:#7e828a;flex-basis:100%;margin-left:71px}.cursor{color:var(--mint)}.page-intro{padding:69px 0 59px}.page-intro h1{color:var(--purple);letter-spacing:-2px;margin-bottom:25px;font-size:clamp(34px,4.5vw,54px);font-weight:500;line-height:1.2}.page-intro p{color:var(--muted);max-width:640px;margin-bottom:0;font-size:14px;line-height:1.9}.blog-list{min-height:430px;padding-bottom:90px}.blog-toolbar{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;padding:23px 0 32px;display:flex}.filter-list{flex-wrap:wrap;gap:9px;display:flex}.filter-button{border:1px solid var(--line);color:var(--muted);font:11px var(--mono);background:0 0;border-radius:0;padding:8px 12px}.filter-button.selected{color:var(--text);border-color:var(--cyan);background:#00c8ff08}.filter-button span{opacity:.8;margin-left:5px;font-size:8px}.article-page{max-width:740px;margin:0 auto;padding:55px 0 70px}.back-link{color:var(--muted);margin-bottom:51px}.article-header{margin-bottom:30px}.article-header .post-meta{justify-content:flex-start}.article-header h1{color:var(--purple);letter-spacing:-1.5px;margin:22px 0;font-size:clamp(28px,3.6vw,42px);font-weight:500;line-height:1.3}.article-header>p{color:var(--muted);font-size:16px;line-height:1.8}.article-header .post-topics{color:var(--muted);font:10px/1.8 var(--mono);margin-top:20px}.prose{color:#bcc0c3;overflow-wrap:anywhere;font-size:16px;line-height:1.9}.article-page>.prose{padding-top:34px}.prose h1,.prose h2,.prose h3,.prose h4{color:var(--cyan);letter-spacing:-.6px;margin:1.6em 0 .6em;font-weight:500;line-height:1.35}.prose h1{font-size:32px}.prose h2{font-size:25px}.prose h3{font-size:21px}.prose p{margin-bottom:1.2em}.prose a{color:var(--cyan);text-underline-offset:4px;text-decoration:underline}.prose blockquote{border-left:2px solid var(--mint);color:var(--muted);margin:25px 0;padding:2px 22px}.prose blockquote p:last-child{margin:0}.prose code{color:var(--pink);font:.82em var(--mono);background:#202225;border-radius:0;padding:3px 6px}.prose pre{border:1px solid var(--line);background:#14161a;border-radius:5px;padding:20px;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose img{border-radius:4px;max-width:100%;height:auto}.prose table{border-collapse:collapse;font-size:13px;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--line);text-align:left;padding:9px 14px}.prose hr{border:0;border-top:1px solid var(--line);margin:32px 0}.article-end{border-top:1px solid var(--line);margin-top:50px;padding-top:29px}.not-found{min-height:70vh}.not-found .button{margin-top:30px}@media (width>=1500px){.site-shell{width:min(1200px,100% - 160px)}.hero-bottom{gap:140px}}@media (width<=1000px){.site-shell{width:calc(100% - 64px)}.hero-bottom{gap:36px}.about-grid{gap:40px}.hero-actions{gap:18px}.work-row{grid-template-columns:.85fr 1.5fr 20px;gap:20px}}@media (width<=700px){.site-shell{width:calc(100% - 40px)}.site-header{flex-wrap:wrap;gap:15px;min-height:85px;padding:20px 0}.wordmark{font-size:13px}.site-header nav{gap:18px;font-size:10px}.site-header .nav-contact{display:none}.hero{padding-top:35px}.pixel-caption{margin-top:2px;margin-bottom:23px;font-size:8px}.hero-bottom{grid-template-columns:1fr;gap:35px;padding-top:31px}.hero-heading{font-size:27px}.hero-description{font-size:13px}.hero-footnote{letter-spacing:.5px;gap:12px;margin-top:35px;font-size:7px}.hero-footnote a span{margin-left:4px}.section{padding:44px 0 49px}.section-label{letter-spacing:.8px;margin-bottom:27px;font-size:8px}.about-grid{grid-template-columns:1fr;gap:27px}.about-copy{font-size:13px}.section-heading{gap:16px}.section-heading>.text-link{white-space:nowrap;gap:7px;font-size:9px}.work-row{grid-template-columns:1fr 25px;gap:19px 10px;padding:25px 0}.work-company{grid-column:1}.work-detail{grid-area:2/1/auto/-1}.work-number{grid-area:1/2}.posts-grid,.posts-grid.single-post{grid-template-columns:1fr;gap:32px}.single-post .post-card{display:block}.single-post .post-art{height:200px;margin-bottom:20px}.single-post .post-meta{margin-top:0}.single-post .post-card h3{font-size:20px}.single-post .post-card>p{font-size:13px}.contact-section{padding:45px 0 50px}.contact-email{font-size:11px}.site-footer{gap:18px;padding-top:24px}.site-footer>div{flex-basis:100%;gap:25px;margin-left:0}.copyright{margin-left:0}.page-intro{padding:47px 0 39px}.page-intro h1{letter-spacing:-1.8px;font-size:42px}.page-intro p{font-size:13px}.article-page{padding-top:36px}.back-link{margin-bottom:35px}.article-header h1{font-size:36px}.prose{font-size:15px}}@media (prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.pixel-caret{opacity:1}}
