.site-header[data-astro-cid-3ef6ksr2]{border-bottom:1px solid var(--hairline)}.inner[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;padding-top:22px;padding-bottom:22px}.brand[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;gap:12px}.brand-mark[data-astro-cid-3ef6ksr2]{display:inline-flex;line-height:0}.brand-mark[data-astro-cid-3ef6ksr2] img[data-astro-cid-3ef6ksr2]{display:block;width:32px;height:32px}.brand-name[data-astro-cid-3ef6ksr2]{font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:600;letter-spacing:.04em;color:var(--ink);text-decoration:none}.brand-domain[data-astro-cid-3ef6ksr2]{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--faint)}.site-nav[data-astro-cid-3ef6ksr2]{display:flex;gap:26px;align-items:center;font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:.08em}.nav-link[data-astro-cid-3ef6ksr2]{color:var(--ink);text-decoration:none}.nav-link[data-astro-cid-3ef6ksr2]:hover,.nav-link[data-astro-cid-3ef6ksr2].active{color:var(--accent)}.theme-toggle[data-astro-cid-3ef6ksr2]{font-family:IBM Plex Mono,monospace;font-size:12px;line-height:1;border:1px solid var(--sep);background:transparent;color:var(--muted);padding:4px 9px;cursor:pointer}.theme-toggle[data-astro-cid-3ef6ksr2]:hover{border-color:var(--accent);color:var(--accent)}@media(max-width:760px){.site-nav[data-astro-cid-3ef6ksr2]{gap:14px 18px}}.site-footer[data-astro-cid-sz7xmlte]{margin-top:auto;border-top:1px solid var(--ink);background:var(--panel-dark);color:#e8ebe8}.inner[data-astro-cid-sz7xmlte]{padding-top:18px;padding-bottom:18px;display:flex;flex-wrap:wrap;gap:6px 16px;justify-content:space-between;font-family:IBM Plex Mono,monospace;font-size:11.5px;color:#6b7370}.foot-links[data-astro-cid-sz7xmlte]{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:baseline}.foot-links[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{color:#9ba59e;text-decoration:none;border-bottom:1px solid transparent}.foot-links[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]:hover{color:#e8ebe8;border-bottom-color:#9ba59e}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-opsz-normal.BjhtXyW2.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-opsz-normal.BQn1nviT.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-opsz-normal.s-izfB6B.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-opsz-italic.DTr-ymY4.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-opsz-italic.CSPGnFdO.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-opsz-italic.kJKFiXvB.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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: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");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-cyrillic-ext-600-normal.V-xxqcpd.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-600-normal.iLQfcSjf.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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: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");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html,body{margin:0;padding:0;background:var(--bg)}::selection{background:var(--shadow)}:root{color-scheme:light;--bg: #FBFBF9;--ink: #161B18;--body: #2B322E;--dim: #454C48;--muted: #6B7370;--faint: #8A928D;--hairline: #E4E6E2;--hairline2: #ECEEE9;--soft: #F5F6F2;--hover: #F4F6F2;--card: #FFFFFF;--shadow: #DCEEE2;--accent: #0E7A4A;--accent-bd: #C4DFCE;--sep: #D3D8D2;--offcell: #C5CBC5;--panel-dark: #161B18;--hard: #0E7A4A;--med: #6B7370;--easy: #A6ADA7}html[data-theme=dark]{color-scheme:dark;--bg: #101413;--ink: #E4E9E5;--body: #C6CEC8;--dim: #A9B3AC;--muted: #8D978F;--faint: #707A73;--hairline: #262D29;--hairline2: #212724;--soft: #161B18;--hover: #1A201C;--card: #141917;--shadow: #14291E;--accent: #45A97A;--accent-bd: #2C4A3A;--sep: #343C37;--offcell: #3B443E;--panel-dark: #0B0F0D;--hard: #45A97A;--med: #8D978F;--easy: #5C665F}body{color:var(--ink);font-family:Newsreader Variable,Newsreader,Georgia,serif;-webkit-font-smoothing:antialiased;min-height:100dvh;display:flex;flex-direction:column}a{color:inherit}main{flex:1 0 auto;width:100%}.mono{font-family:IBM Plex Mono,monospace}.container{max-width:1060px;margin:0 auto;padding:0 32px}.kicker{font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:.08em;color:var(--accent);margin:0 0 20px}.section-head{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--ink);padding-bottom:12px;gap:16px}.section-head h2{margin:0;font-size:15px;font-weight:600;font-family:IBM Plex Mono,monospace;letter-spacing:.1em}.section-head .meta{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--faint)}.section-head a.meta:hover{color:var(--ink)}.section-head a[href]{color:var(--accent);text-decoration:none}.section-head a[href]:hover{color:var(--ink)}.list-row{display:grid;grid-template-columns:150px 1fr auto;gap:28px;align-items:baseline;padding:26px 0;border-bottom:1px solid var(--hairline);text-decoration:none;color:inherit}.list-row:hover{background:var(--hover)}.list-row .date{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--muted)}.list-row .title{display:block;font-size:25px;font-weight:500;line-height:1.25;color:var(--ink)}.list-row .dek{display:block;margin-top:6px;font-size:16.5px;line-height:1.5;color:var(--muted);font-style:italic}.chip{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.06em;color:var(--accent);border:1px solid var(--accent-bd);padding:4px 9px;white-space:nowrap}.chip.draft{color:var(--faint);border-color:var(--sep)}.note-text pre{margin:6px 0 0;background:var(--panel-dark)!important;border:1px solid var(--sep);padding:14px 18px;overflow-x:auto;font-family:IBM Plex Mono,monospace;font-size:13px;line-height:1.7;max-width:68ch}.note-text pre:before{content:"● ● ●  bash";display:block;margin:-14px -18px 12px;padding:8px 14px;border-bottom:1px solid #262D29;font-size:10.5px;letter-spacing:.08em;color:#6b7370}.note-text pre code{font-family:inherit;font-size:inherit}.filter-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px solid var(--ink);padding-top:20px}.filter-bar .label{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.1em;color:var(--faint);margin-right:6px}.filter-bar .count{font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--faint);margin-left:auto}.filter-chip{font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:.05em;padding:6px 12px;border:1px solid var(--sep);background:transparent;color:var(--dim);cursor:pointer}.filter-chip:hover{border-color:var(--accent)}.filter-chip[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:#f2f8f4}.btn-solid{font-family:IBM Plex Mono,monospace;font-size:13px;letter-spacing:.05em;background:var(--accent);color:#f2f8f4;padding:13px 22px;text-decoration:none;border:1px solid var(--accent);display:inline-block}.btn-solid:hover{background:var(--panel-dark);border-color:var(--panel-dark)}.btn-outline{font-family:IBM Plex Mono,monospace;font-size:13px;letter-spacing:.05em;border:1px solid var(--ink);color:var(--ink);padding:12px 22px;text-decoration:none;display:inline-block;background:transparent}.btn-outline:hover{background:var(--panel-dark);color:#f2f8f4;border-color:var(--panel-dark)}@media(max-width:760px){.container{padding-left:20px;padding-right:20px}.list-row{grid-template-columns:1fr;gap:10px}.stack-mobile{grid-template-columns:1fr!important;gap:24px!important}}
