:root{--bg:#fcfcfa;--fg:#1c1d1f;--muted:#5d6068;--accent:#2458c6;--border:#e3e3de;--code-bg:#f3f3ef;--surface:#fff;--tag-bg:#e8eefb;--tag-fg:#1f4aa8;--measure:42rem;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#131416;--fg:#e6e6e3;--muted:#9a9ca3;--accent:#7ea6ff;--border:#2a2c30;--code-bg:#1b1d20;--surface:#18191c;--tag-bg:#1d2740;--tag-fg:#a9c2ff;color-scheme:dark}.astro-code,.astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);margin:0;font:1.0625rem/1.7 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.wrap{max-width:var(--measure);margin:0 auto;padding:0 16px}a{color:var(--accent);text-underline-offset:.15em}a:hover{text-decoration-thickness:2px}header.site{border-top:3px solid var(--accent);border-bottom:1px solid var(--border);padding:1.25rem 0}header.site .wrap{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1.5rem;display:flex}header.site .brand{color:var(--fg);letter-spacing:-.01em;align-items:center;gap:.55rem;font-weight:650;text-decoration:none;display:inline-flex}header.site .mark{background:var(--accent);width:1.6rem;height:1.6rem;color:var(--bg);border-radius:6px;place-items:center;font:700 .75rem/1 ui-monospace,SF Mono,Menlo,Consolas,monospace;display:inline-grid}header.site nav{gap:1.25rem;font-size:.95rem;display:flex}header.site nav a{color:var(--muted);text-decoration:none}header.site nav a:hover{color:var(--fg)}main.wrap{padding-top:3rem;padding-bottom:4rem}footer.site a{color:inherit}footer.site{border-top:1px solid var(--border);color:var(--muted);padding:1.5rem 0 3rem;font-size:.9rem}h1,h2,h3{letter-spacing:-.015em;line-height:1.25}h1{margin:0 0 .5rem;font-size:2.1rem}h2{margin:2.75rem 0 .75rem;font-size:1.45rem}h3{margin:2rem 0 .5rem;font-size:1.15rem}.lede{color:var(--muted);margin:0 0 2.5rem;font-size:1.15rem}article :not(pre)>code{background:var(--code-bg);border:1px solid var(--border);border-radius:4px;padding:.1em .35em;font-size:.88em}pre{border:1px solid var(--border);border-radius:6px;padding:1rem 1.1rem;font-size:.875rem;line-height:1.55;overflow-x:auto}code,pre{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}blockquote{border-left:3px solid var(--accent);color:var(--muted);margin:1.5rem 0;padding:.25rem 0 .25rem 1.1rem}table{border-collapse:collapse;width:100%;font-size:.95rem;display:block;overflow-x:auto}td code{white-space:nowrap}th,td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:.5rem .75rem .5rem 0}.hero{margin-bottom:2.5rem}.hero h1{font-size:2.5rem}.hero .lede{margin-bottom:0}.article-list{gap:1rem;margin:0;padding:0;list-style:none;display:grid}.card{border:1px solid var(--border);background:var(--surface);border-radius:10px;padding:1.25rem 1.4rem 1.1rem;transition:border-color .15s,transform .15s;position:relative}.card:hover{border-color:var(--accent);transform:translateY(-1px)}.card:focus-within{outline:2px solid var(--accent);outline-offset:2px}.card h2,.card h3{margin:.35rem 0 .4rem;font-size:1.3rem}.card p{color:var(--muted);margin:0}.card a.title{color:var(--accent);text-decoration:none}.card a.title:focus{outline:none}.card a.title:after{content:"";border-radius:inherit;position:absolute;inset:0}.card .read-more{color:var(--accent);margin-top:.8rem;font-size:.925rem;font-weight:550;display:inline-block}.card-meta,.meta{color:var(--muted);flex-wrap:wrap;gap:0 .9rem;font-size:.875rem;display:flex}.card-meta>*+:before,.meta>*+:before{content:"·";margin-right:.9rem}.meta{margin:0 0 1rem;font-size:.95rem}.tags{flex-wrap:wrap;gap:.4rem;margin:.75rem 0 0;padding:0;list-style:none;display:flex}.tags li{background:var(--tag-bg);color:var(--tag-fg);border-radius:999px;padding:.3rem .5rem;font:.78rem/1 ui-monospace,SF Mono,Menlo,Consolas,monospace}article>.tags{margin:0 0 2.5rem}.back{margin-bottom:1.5rem;font-size:.925rem;text-decoration:none;display:inline-block}.back-bottom{margin:3rem 0 0}.home-section{margin-top:3.5rem}.home-section>h2{margin:0 0 .25rem}.section-lede{color:var(--muted);margin:0 0 1rem}
