@font-face{font-family:VT323;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/vt323-latin-400-normal.wDgJuOC9.woff2)format("woff2"),url(/_astro/vt323-latin-400-normal.Dqn9ZSPj.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-400-normal.CYLoc0-x.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-600-normal.Cu4Hd6ag.woff)format("woff")}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-latin-400-normal.BIGslYFI.woff2)format("woff2"),url(/_astro/ibm-plex-serif-latin-400-normal.BB-zNvJB.woff)format("woff")}@font-face{font-family:IBM Plex Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-latin-400-italic.BCf4TsCA.woff2)format("woff2"),url(/_astro/ibm-plex-serif-latin-400-italic.Dd68USph.woff)format("woff")}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-serif-latin-600-normal.DAxitmSu.woff2)format("woff2"),url(/_astro/ibm-plex-serif-latin-600-normal.D3rpGdkS.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff)format("woff")}:root{--desk:#18283a;--desk-top:#1e3347;--desk-low:#0f1a26;--win:#eceef1;--paper:#fbfbfc;--ink:#0b1016;--muted:#3e4955;--title-1:#1f3a5f;--title-2:#4a7391;--bevel:#d7dbe0;--bevel-light:#e9ecef;--bevel-shade:#8a929c;--card:#e3e6ea;--taskbar:#c3c8ce;--on-dark:#f4f6f8;--on-dark-muted:#c9d2dc;--amber:#f2b544;--amber-ink:#8a5300;--link:#1f4e8a;--code-bg:#0e1621;--code-fg:#d6e2ee;--code-hl:#22344a;--line-no:#8c99af;--line-no-hl:#a5b1c4;--bevel-out:inset -2px -2px 0 var(--bevel-shade), inset 2px 2px 0 #fff;--bevel-in:inset 2px 2px 0 var(--bevel-shade);--hard-shadow:6px 6px 0 var(--ink);--border:2px solid var(--ink);--font-pixel:"VT323", monospace;--font-sans:"IBM Plex Sans", system-ui, sans-serif;--font-serif:"IBM Plex Serif", Georgia, serif;--font-mono:"IBM Plex Mono", monospace}*,:before,:after{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}html{scroll-behavior:smooth}}body{background-color:var(--desk);background-image:radial-gradient(#ffffff12 1px, transparent 1.2px), linear-gradient(180deg, var(--desk-top) 0%, var(--desk) 55%, var(--desk-low) 100%);min-height:100vh;color:var(--ink);font-family:var(--font-sans);background-size:4px 4px,100% 100%;flex-direction:column;margin:0;font-size:16px;line-height:1.55;display:flex}a{color:inherit;text-underline-offset:3px}code{font-family:var(--font-mono)}[id]{scroll-margin-top:16px}:focus-visible{outline:2px dashed var(--amber);outline-offset:2px}.window :focus-visible,.taskbar :focus-visible{outline-color:var(--amber-ink)}.window .titlebar:focus-visible,.window pre:focus-visible,.window .titlebar :focus-visible{outline-color:var(--amber)}.desktop{flex:1;gap:24px;width:100%;max-width:1440px;margin:0 auto;padding:24px 24px 96px;display:flex}.desktop>main{flex-direction:column;flex:1;gap:28px;min-width:0;display:flex}.icons{flex-direction:column;flex:0 0 88px;align-items:center;gap:14px;display:flex}.icon{width:84px;min-height:64px;color:var(--on-dark);font-family:var(--font-pixel);flex-direction:column;flex:none;align-items:center;gap:4px;font-size:18px;line-height:1;text-decoration:none;display:flex}.icon-glyph{border:var(--border);width:40px;height:40px;box-shadow:2px 2px 0 var(--ink);color:var(--ink);justify-content:center;align-items:center;font-size:22px;display:flex}.icon-label{text-align:center;background:#0b1016bf;padding:1px 4px}.icon[aria-current=page] .icon-label{color:var(--amber)}.pr-chip{border:var(--border);background:var(--ink);color:var(--amber);font-family:var(--font-pixel);text-align:center;margin-top:8px;padding:6px 8px;font-size:18px;line-height:1}.pr-chip span{color:var(--on-dark-muted)}.prompt{font-family:var(--font-pixel);color:var(--on-dark);text-shadow:3px 3px 0 var(--ink);overflow-wrap:anywhere;margin:4px 0 0;font-size:clamp(30px,7vw,40px);font-weight:400;line-height:1}.prompt span{color:var(--amber)}.nowrap{white-space:nowrap}h1.prompt{font-size:clamp(36px,9.4vw,64px)}.window{background:var(--win);border:var(--border);box-shadow:var(--hard-shadow);min-width:0}.titlebar{background:linear-gradient(90deg, var(--title-1), var(--title-2));font-family:var(--font-pixel);color:#fff;justify-content:space-between;align-items:center;gap:8px;padding:4px 4px 4px 12px;font-size:24px;line-height:1.2;display:flex}.window[open]>.titlebar,div.titlebar{border-bottom:var(--border)}.titlebar h1,.titlebar h2{font:inherit;overflow-wrap:anywhere;min-width:0;margin:0}summary.titlebar{cursor:pointer;list-style:none}summary.titlebar::-webkit-details-marker{display:none}.title-btn{border:var(--border);background:var(--bevel);width:32px;height:28px;box-shadow:var(--bevel-out);font-family:var(--font-pixel);color:var(--ink);flex:none;justify-content:center;align-items:center;font-size:20px;line-height:1;text-decoration:none;display:flex}summary:active .title-btn,a.title-btn:active{box-shadow:var(--bevel-in)}.title-btn .restore,.window:not([open]) .title-btn .minimize{display:none}.window:not([open]) .title-btn .restore{display:inline}.pad{padding:18px 20px 20px}.muted{color:var(--muted)}.btn{background:var(--bevel);border:var(--border);min-height:40px;box-shadow:var(--bevel-out);font-family:var(--font-mono);color:var(--ink);cursor:pointer;align-items:center;padding:0 14px;font-size:14px;text-decoration:none;display:inline-flex}.btn:active{box-shadow:var(--bevel-in)}.btn-row{flex-wrap:wrap;gap:10px;display:flex}.taskbar{z-index:10;background:var(--taskbar);box-shadow:0 -2px 0 var(--ink);font-family:var(--font-mono);border-top:2px solid #fff;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;font-size:13px;display:flex;position:sticky;bottom:0}.task{background:var(--bevel);border:var(--border);min-height:36px;box-shadow:var(--bevel-out);color:var(--ink);align-items:center;gap:8px;padding:0 12px;text-decoration:none;display:inline-flex}.task.pressed{background:var(--bevel-light);box-shadow:var(--bevel-in)}.task-home{font-weight:600}.task-home span{background:var(--amber);border:1px solid var(--ink);width:10px;height:10px}.task-status{border:2px solid var(--bevel-shade);margin-left:auto;padding:6px 10px}.card-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.card{background:var(--card);border:var(--border);box-shadow:var(--bevel-out);color:var(--ink);padding:14px 16px;text-decoration:none;display:block}.card:active{box-shadow:var(--bevel-in)}.card>span{display:block}.card-date{font-family:var(--font-mono);color:var(--muted);font-size:12px}.card-title{font-size:20px;font-weight:600;line-height:1.3}.card-text{color:var(--muted);margin-top:4px;font-size:15px}.card-tags{font-family:var(--font-mono);color:var(--amber-ink);margin-top:6px;font-size:12px}.win-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr));align-items:start;gap:28px;display:grid}.win-col{flex-direction:column;gap:28px;min-width:0;display:flex}.about{flex-wrap:wrap;gap:20px;padding:20px 22px 22px;display:flex}.about-text{flex:260px;min-width:0}.about-text p{margin:0 0 12px;font-size:18px}.about-text p.muted{margin-bottom:16px;font-size:16px}.portrait{border:var(--border);width:120px;height:120px;image-rendering:pixelated;flex:0 0 120px}.portrait-art{background-color:var(--title-1);background-image:linear-gradient(45deg,#ffffff14 25%,#0000 25% 75%,#ffffff14 75%),linear-gradient(45deg,#ffffff14 25%,#0000 25% 75%,#ffffff14 75%);background-position:0 0,4px 4px;background-size:8px 8px}.portrait-art svg{display:block}.area-table{border:var(--border);border-collapse:collapse;background:#fff;width:100%}.area-table th{background:var(--bevel);border-bottom:var(--border);font-family:var(--font-mono);text-align:left;padding:6px 12px;font-size:13px;font-weight:600}.area-table td{border-bottom:1px solid var(--bevel);vertical-align:top;padding:10px 12px}.area-table th:last-child,.area-table td:last-child{text-align:right;width:52px}.area-table strong{font-weight:600;display:block}.area-table small{color:var(--muted);font-size:14px;display:block}.area-count{font-family:var(--font-pixel);color:var(--amber-ink);font-size:28px;line-height:1}.pad code{font-size:.9em}.oss-body{padding:24px 28px 28px}.oss-body h1{margin:0 0 8px;font-size:32px;font-weight:600;line-height:1.15}.oss-body .intro{max-width:70ch;color:var(--muted);margin:0 0 20px}.chips{flex-wrap:wrap;gap:12px;margin-bottom:24px;display:flex}.chip{background:var(--code-bg);border:var(--border);color:var(--amber);font-family:var(--font-pixel);padding:8px 16px;font-size:30px;line-height:1}.chip span{color:var(--on-dark-muted);font-size:18px}.filters{background:var(--bevel);border:var(--border);font-family:var(--font-mono);flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:20px;padding:8px;font-size:13px;display:flex}.filters[hidden]{display:none}.filters button{border:var(--border);background:var(--bevel-light);min-height:36px;box-shadow:var(--bevel-out);color:var(--ink);font:inherit;cursor:pointer;padding:0 12px}.filters button[aria-pressed=true]{background:var(--code-bg);box-shadow:none;color:var(--amber);font-weight:600}.filters label{cursor:pointer;align-items:center;gap:8px;min-height:36px;margin-left:auto;padding:0 6px;display:flex}.filters input{width:18px;height:18px;accent-color:var(--title-1)}.projects{flex-direction:column;gap:36px;display:flex}.project[hidden]{display:none}.project-head{margin-bottom:14px}.project-head h2{font-family:var(--font-mono);margin:0;font-size:22px;font-weight:600}.project-head h2 a{color:var(--link)}.project-head p{color:var(--muted);margin:4px 0 0}.areas{flex-direction:column;gap:24px;display:flex}.area{border:var(--border);background:#fff}.area[hidden]{display:none}.area-head{background:var(--card);border-bottom:var(--border);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;padding:12px 16px;display:flex}.area-head h3{margin:0;font-size:20px;font-weight:600}.area-head .shown{font-family:var(--font-mono);color:var(--muted);font-size:13px}.area-head p{color:var(--muted);flex:100%;margin:4px 0 0;font-size:15px}.pr-list{margin:0;padding:0;list-style:none}.pr-list li{border-bottom:1px solid var(--card);align-items:baseline;gap:16px;padding:8px 16px;display:flex}.pr-list li[hidden]{display:none}.pr-list a{font-family:var(--font-mono);color:var(--link);flex:0 0 72px;font-size:13px}.pr-title{overflow-wrap:anywhere;flex:auto;min-width:0}.nfc{border:1px solid var(--bevel-shade);font-family:var(--font-mono);color:var(--muted);flex:none;padding:0 6px;font-size:11px}.gh-link{font-family:var(--font-mono);margin:20px 0 0;font-size:14px}.gh-link a{color:var(--link);padding:8px 0;display:inline-block}.post-main{align-items:center}.post{width:100%;max-width:900px}.meta{background:var(--bevel);border-bottom:var(--border);font-family:var(--font-mono);flex-wrap:wrap;gap:6px 20px;padding:8px 16px;font-size:13px;display:flex}.meta .tags{color:var(--amber-ink)}.more{background:var(--bevel);border-top:var(--border);flex-wrap:wrap;justify-content:space-between;gap:10px;padding:12px 16px;display:flex}.more .btn{background:var(--bevel-light);min-height:36px;padding:6px 12px;font-size:13px}@media (width<=759.98px){.desktop{flex-direction:column;gap:16px;padding:12px 12px 40px}.icons{flex-direction:row;flex:none;align-items:flex-start;gap:4px;margin:0 -12px;padding:0 12px 6px;overflow-x:auto}.icon{width:72px}.pr-chip{display:none}.desktop>main{gap:20px}.window{box-shadow:4px 4px 0 var(--ink)}.win-grid{flex-direction:column;gap:20px;display:flex}.win-col{display:contents}#about{order:1}#posts{order:2}#oss{order:3}.pad,.about{padding:14px}.oss-body{padding:16px 14px 18px}.oss-body h1{font-size:28px}.filters label{margin-left:0}.pr-list li{flex-wrap:wrap;gap:10px;padding:8px 10px}.area-head{padding:10px}.more .btn{width:100%}.taskbar .task:not(.task-home){display:none}}.reading{background:var(--paper);padding:48px 32px 56px}.prose{font-family:var(--font-serif);overflow-wrap:break-word;font-size:19px;line-height:1.7}.prose>*{max-width:68ch;margin-inline:auto}.prose>figure.code{max-width:780px}.prose p{margin-block:0 20px}.prose h1,.prose h2,.prose h3,.prose h4{font-family:var(--font-sans);font-weight:600;line-height:1.2}.prose h1{margin-block:0 24px;font-size:clamp(30px,8vw,42px);line-height:1.1}.prose h2{margin-block:36px 12px;font-size:26px}.prose h3{margin-block:28px 10px;font-size:21px}.prose ul,.prose ol{margin-block:0 20px;padding-left:1.4em}.prose li{margin-bottom:8px}.prose a{color:var(--link)}.prose :not(pre)>code{background:var(--card);overflow-wrap:anywhere;padding:2px 5px;font-size:.82em}.prose table{border-collapse:collapse;font-family:var(--font-sans);margin-block:0 24px;font-size:15px;line-height:1.45;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--bevel-shade);text-align:left;padding:6px 10px}.prose th{background:var(--bevel);font-weight:600}.prose img{max-width:100%;height:auto}figure.code{border:var(--border);box-shadow:4px 4px 0 var(--ink);background:var(--code-bg);min-width:0;margin-block:0 28px}figure.code figcaption{background:var(--bevel);border-bottom:var(--border);font-family:var(--font-mono);color:var(--ink);justify-content:space-between;gap:16px;padding:6px 12px;font-size:12px;display:flex}figure.code figcaption span{overflow-wrap:anywhere;min-width:0}figure.code pre{font-family:var(--font-mono);color:var(--code-fg);counter-reset:line var(--line-start,0);margin:0;padding:14px 0;font-size:14px;line-height:1.7;overflow-x:auto}figure.code code{min-width:max-content;display:grid}figure.code .line{min-height:1.7em;padding:0 20px 0 16px;display:block}figure.code .line.hl{background:var(--code-hl);box-shadow:inset 3px 0 0 var(--amber)}figure.code .numbered .line{padding-left:0}figure.code .numbered .line:before{counter-increment:line;content:counter(line);text-align:right;width:52px;color:var(--line-no);user-select:none;margin-right:0;padding-right:16px;display:inline-block}figure.code .numbered .line.hl:before{color:var(--line-no-hl)}.yt{margin-block:12px 24px}.yt a{aspect-ratio:16/9;border:var(--border);box-shadow:4px 4px 0 var(--ink);background:#22303f;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.yt img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.yt .play{background:var(--amber);border:var(--border);width:72px;height:56px;box-shadow:3px 3px 0 var(--ink);justify-content:center;align-items:center;display:flex;position:relative}.yt iframe{aspect-ratio:16/9;border:var(--border);width:100%;box-shadow:4px 4px 0 var(--ink);display:block}@media (width<=759.98px){.reading{padding:24px 14px 32px}figure.code pre{font-size:13px}figure.code .numbered .line:before{width:44px;padding-right:10px}}
