@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-latin-wght-normal.woff2)format("woff2");font-weight:100 800;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-latin-wght-italic.woff2)format("woff2");font-weight:100 800;font-style:italic;font-display:swap}@font-face{font-family:"Source Serif 4";src:url(/fonts/source-serif-4-latin-opsz-normal.woff2)format("woff2");font-weight:200 900;font-style:normal;font-display:swap}@font-face{font-family:"Source Serif 4";src:url(/fonts/source-serif-4-latin-opsz-italic.woff2)format("woff2");font-weight:200 900;font-style:italic;font-display:swap}:root{--bg:#1a1b26;--bg-dark:#16161e;--bg-hl:#292e42;--fg:#c0caf5;--fg-dim:#a9b1d6;--comment:#565f89;--gutter:#3b4261;--selection:#283457;--blue:#7aa2f7;--cyan:#7dcfff;--magenta:#bb9af7;--purple:#9d7cd8;--orange:#ff9e64;--yellow:#e0af68;--green:#9ece6a;--teal:#73daca;--red:#f7768e;color-scheme:dark;--font-mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--font-serif:"Source Serif 4", "Iowan Old Style", Georgia, serif;--measure:68ch;--astro-code-foreground:var(--fg);--astro-code-background:var(--bg-dark);--astro-code-color-text:var(--fg);--astro-code-color-background:var(--bg-dark);--astro-code-token-keyword:var(--magenta);--astro-code-token-function:var(--blue);--astro-code-token-string:var(--green);--astro-code-token-string-expression:var(--green);--astro-code-token-constant:var(--orange);--astro-code-token-parameter:var(--yellow);--astro-code-token-comment:var(--comment);--astro-code-token-punctuation:var(--cyan);--astro-code-token-link:var(--teal)}:root[data-theme=light]{--bg:#e1e2e7;--bg-dark:#d0d5e3;--bg-hl:#c4c8da;--fg:#3760bf;--fg-dim:#6172b0;--comment:#848cb5;--gutter:#a8aecb;--selection:#b7c1e3;--blue:#2e7de9;--cyan:#007197;--magenta:#9854f1;--purple:#7847bd;--orange:#b15c00;--yellow:#8c6c3e;--green:#587539;--teal:#118c74;--red:#f52a65;color-scheme:light}*,:before,:after{box-sizing:border-box}html{background:var(--bg);-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font-serif);font-optical-sizing:auto;margin:0;font-size:1.125rem;line-height:1.7}main,.site-header,.site-footer{width:min(100% - 2.5rem, var(--measure));margin-inline:auto}::selection{background:var(--selection);color:var(--fg)}:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:2px}img,svg,video{max-width:100%;height:auto}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}h1,h2,h3,h4{font-family:var(--font-mono);letter-spacing:-.01em;color:var(--fg);text-wrap:balance;margin:2.4em 0 .6em;font-weight:650;line-height:1.25}h1{margin-top:1.4em;font-size:clamp(1.75rem,1.4rem + 1.6vw,2.35rem);font-weight:700}h2{color:var(--blue);font-size:1.4rem}h3{color:var(--magenta);font-size:1.15rem}h4{color:var(--cyan);font-size:1rem}p,ul,ol,blockquote,pre,table,figure{margin:0 0 1.25em}a{color:var(--blue);text-decoration-line:underline;text-decoration-color:var(--gutter);text-underline-offset:.22em;text-decoration-thickness:1px}a:hover{text-decoration-color:currentColor}code,kbd,samp,pre{font-family:var(--font-mono);font-size:.88em}:not(pre)>code{background:var(--bg-hl);color:var(--cyan);border-radius:4px;padding:.12em .38em}kbd{background:var(--bg-hl);border:1px solid var(--gutter);border-bottom-width:2px;border-radius:4px;padding:.05em .4em}.site-header{border-bottom:1px solid var(--bg-hl);font-family:var(--font-mono);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem 1.5rem;padding:2rem 0 1rem;font-size:.95rem;display:flex}.site-title{color:var(--fg);overflow-wrap:anywhere;min-width:0;text-decoration:none}.p-host{color:var(--blue)}.p-sep{color:var(--comment)}.p-cwd{color:var(--magenta)}.p-sigil{color:var(--fg-dim);margin-left:.4ch}.cursor{vertical-align:-.2em;background:var(--fg);width:.6em;height:1.15em;margin-left:.5ch;animation:1.1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.cursor{animation:none}}.site-nav{flex-wrap:wrap;align-items:baseline;gap:1.25rem;display:flex}.site-nav a{color:var(--fg-dim);text-decoration:none}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--fg)}.site-nav a[aria-current=page]{text-decoration:underline;text-decoration-color:var(--blue);text-underline-offset:.35em}.theme-toggle{font:inherit;color:var(--yellow);border:1px solid var(--gutter);cursor:pointer;background:0 0;border-radius:999px;padding:.1rem .75rem}.theme-toggle:hover{border-color:var(--yellow)}.intro p{color:var(--fg-dim)}.cmd{font-family:var(--font-mono);color:var(--fg-dim);margin:2.5rem 0 .5rem;font-size:.9rem}.cmd .sigil{color:var(--comment);margin-right:.6ch}.post-list{margin:0 0 3rem;padding:0;list-style:none}.post-card{border-bottom:1px solid var(--bg-hl);grid-template-columns:11ch 1fr;align-items:baseline;column-gap:1.25rem;padding:1rem 0;display:grid}.post-card time{font-family:var(--font-mono);color:var(--fg-dim);font-variant-numeric:tabular-nums;font-size:.8rem}.post-title-link{color:var(--fg);font-size:1.2rem;line-height:1.4;text-decoration:none}.post-title-link:hover{color:var(--blue)}.post-desc{color:var(--fg-dim);margin:.25rem 0 0;font-size:1rem;line-height:1.55}.tag-list{font-family:var(--font-mono);color:var(--green);flex-wrap:wrap;gap:.25rem 1ch;margin:.4rem 0 0;padding:0;font-size:.78rem;list-style:none;display:flex}@media (width<=600px){.post-card{grid-template-columns:1fr;row-gap:.2rem}}.post-header{margin-bottom:2.5rem}.post-header h1{margin-bottom:.4rem}.post-meta{font-family:var(--font-mono);color:var(--fg-dim);margin:0;font-size:.8rem}.post-content h2:before{content:"## ";content:"## " / "";color:var(--comment)}.post-content h3:before{content:"### ";content:"### " / "";color:var(--comment)}.post-content a:visited{color:var(--magenta)}.post-content img{border:1px solid var(--bg-hl);border-radius:6px;margin:1.75rem auto;display:block}.post-content pre{color:var(--fg);border:1px solid var(--bg-hl);tab-size:2;border-radius:8px;padding:1rem 1.25rem;font-size:.85rem;line-height:1.6;overflow-x:auto;background:var(--bg-dark)!important}.post-content pre code{font-size:inherit;color:inherit;background:0 0;padding:0}.post-content blockquote{border-left:3px solid var(--purple);color:var(--fg-dim);margin-inline:0;padding-left:1.1rem;font-style:italic}.post-content hr{background:var(--bg-hl);border:0;height:1px;margin:3rem 0}.post-content table{border-collapse:collapse;width:100%;font-size:.95rem;display:block;overflow-x:auto}.post-content th,.post-content td{text-align:left;border-bottom:1px solid var(--bg-hl);padding:.5rem .75rem}.post-content th{font-family:var(--font-mono);color:var(--fg-dim);font-size:.85rem;font-weight:600}.post-content ul.contains-task-list{padding-left:.25rem;list-style:none}.post-content li.task-list-item input[type=checkbox]{accent-color:var(--green);margin-right:.5ch}.back-link{font-family:var(--font-mono);margin-top:2rem;font-size:.9rem;display:inline-block}.page-content{max-width:var(--measure)}.card{background:0 0}.contact-form{gap:1.25rem;margin-top:2rem;display:grid}.contact-form .field{gap:.35rem;display:grid}.contact-form label{font-family:var(--font-mono);color:var(--fg-dim);font-size:.85rem}.contact-form input,.contact-form textarea{font:inherit;width:100%;color:var(--fg);background:var(--bg-dark);border:1px solid var(--gutter);border-radius:6px;padding:.6rem .75rem;font-size:1rem}.contact-form textarea{resize:vertical;min-height:9rem;line-height:1.55}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 1px var(--cyan);outline:none}.contact-form button{font-family:var(--font-mono);color:var(--bg);background:var(--blue);cursor:pointer;border:0;border-radius:6px;justify-self:start;padding:.6rem 1.2rem;font-size:.95rem;font-weight:600}.contact-form button:hover{background:var(--cyan)}.contact-form button:disabled{background:var(--gutter);color:var(--fg-dim);cursor:not-allowed}.form-status{font-family:var(--font-mono);min-height:1.4em;margin:0;font-size:.85rem}.form-status[data-state=success]{color:var(--green)}.form-status[data-state=error]{color:var(--red)}.hp-field{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.site-footer{border-top:1px solid var(--bg-hl);font-family:var(--font-mono);color:var(--fg-dim);margin-top:5rem;padding:1.5rem 0 3rem;font-size:.8rem}.site-footer p{margin:0}
