:root{--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-bg: #fbfaf8;--color-surface: #ffffff;--color-text: #18181b;--color-muted: #6b7280;--color-border: #e5e7eb;--color-soft: #f4f4f5;--color-accent: #3f3f46;--color-accent-soft: #f4f4f5;--shadow-soft: 0 18px 60px rgb(24 24 27 / .08)}html.dark{--color-bg: #111113;--color-surface: #18181b;--color-text: #f5f5f4;--color-muted: #a8a29e;--color-border: #2f2f33;--color-soft: #222225;--color-accent: #e7e5e4;--color-accent-soft: #242427;--shadow-soft: 0 18px 60px rgb(0 0 0 / .26)}html{scroll-behavior:smooth}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-wrap:break-word}body.site-body{min-height:100vh;background:linear-gradient(180deg,color-mix(in srgb,var(--color-soft) 44%,transparent),transparent 420px),var(--color-bg);color:var(--color-text)}::selection{background:var(--color-accent-soft);color:var(--color-text)}img{max-width:100%}a{color:inherit;text-underline-offset:3px}:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.content-shell{width:100%;max-width:72rem;padding-left:2rem;padding-right:2rem}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.home-content{padding-top:2rem;padding-bottom:0}.blog-hero{display:grid;grid-template-columns:minmax(320px,.78fr) minmax(0,1fr);gap:2.25rem;align-items:center;padding:4.75rem 0 2.75rem;border-bottom:1px solid var(--color-border)}.hero-copy{display:flex;flex-direction:column;justify-content:center;min-height:600px}.hero-label,.section-heading p,.listing-hero p,.github-repo p{margin:0 0 .75rem;color:var(--color-accent);font-family:var(--font-mono);font-size:.76rem;font-weight:600;letter-spacing:0;text-transform:uppercase}.blog-hero h1{max-width:780px;margin:0;font-size:5.7rem;line-height:.94;letter-spacing:0}.hero-description{max-width:640px;margin:1.35rem 0 0;color:var(--color-muted);font-size:1.08rem;line-height:1.85}.hero-actions{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:1.75rem}.hero-actions a,.section-heading--row>a,.post-back,.github-repo__state a{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:.58rem .85rem;border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px;color:var(--color-text);font-weight:600;text-decoration:none;transition:border-color .16s ease,color .16s ease,background-color .16s ease}.hero-actions a:first-child{background:var(--color-text);border-color:var(--color-text);color:var(--color-bg)}.hero-actions a:hover,.hero-actions a:focus-visible,.section-heading--row>a:hover,.section-heading--row>a:focus-visible,.post-back:hover,.post-back:focus-visible,.github-repo__state a:hover,.github-repo__state a:focus-visible{border-color:var(--color-accent);background:var(--color-soft);color:var(--color-text)}.hero-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;max-width:660px;margin:2rem 0 0}.hero-metrics div,.hero-visual__note,.focus-grid article,.stack-panel,.github-repo__link{border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px}.hero-metrics div{padding:1rem}.hero-metrics dt{font-size:1.12rem;font-weight:750;line-height:1.2}.hero-metrics dd{margin:.25rem 0 0;color:var(--color-muted);font-size:.84rem}.hero-visual{position:relative;isolation:isolate;display:grid;min-height:600px;overflow:hidden;border:1px solid var(--color-border);border-radius:8px;background:#f7f4ec;box-shadow:var(--shadow-soft)}.hero-visual:after{position:absolute;inset:0;z-index:1;pointer-events:none;content:"";background:linear-gradient(180deg,transparent 38%,rgb(0 0 0 / .3))}.hero-visual__note{position:absolute;right:1rem;bottom:1rem;left:1rem;z-index:2;display:grid;gap:.55rem;padding:1rem}.hero-visual__note span{color:var(--color-muted);font-family:var(--font-mono);font-size:.72rem;font-weight:700;text-transform:uppercase}.hero-visual__note strong{max-width:24rem;font-size:1.05rem;line-height:1.45}.home-section{padding:3rem 0;border-bottom:1px solid var(--color-border)}.section-heading{margin-bottom:1.6rem}.section-heading h2,.listing-hero h1,.github-repo h2{max-width:720px;margin:0;font-size:2.15rem;line-height:1.18;letter-spacing:0}.section-heading--row{display:flex;align-items:end;justify-content:space-between;gap:1rem}.focus-grid,.post-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.2rem;padding:0;margin:0}.post-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.post-grid--masonry{display:block;columns:2 20rem;column-gap:1.2rem}.focus-grid article{padding:1rem;transition:border-color .16s ease,transform .16s ease,box-shadow .16s ease}.focus-grid article:hover{border-color:var(--color-accent);box-shadow:var(--shadow-soft);transform:translateY(-2px)}.focus-grid article span{display:block;width:2rem;height:2px;margin-bottom:1rem;background:var(--color-accent)}.focus-grid h3{margin:0 0 .65rem;font-size:1.08rem}.focus-grid p{margin:0;color:var(--color-muted);line-height:1.75}.featured-layout{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(320px,.72fr);gap:1.25rem;align-items:stretch}.featured-card{display:grid;grid-template-rows:minmax(260px,1fr) auto;overflow:hidden;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:inherit;text-decoration:none;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.featured-card:hover,.featured-card:focus-visible{border-color:var(--color-accent);box-shadow:var(--shadow-soft);transform:translateY(-2px)}.featured-card img{width:100%;height:100%;min-height:260px;object-fit:cover;filter:grayscale(.18) contrast(1.03)}.featured-card__body{display:grid;gap:.8rem;padding:1.25rem}.featured-card p{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin:0;color:var(--color-muted);font-family:var(--font-mono);font-size:.76rem;font-weight:650;text-transform:uppercase}.featured-card p span{color:var(--color-accent)}.featured-card h3{margin:0;color:var(--color-text);font-size:2.15rem;line-height:1.12;letter-spacing:0}.featured-card__body>span{color:var(--color-muted);line-height:1.75}.featured-card__fallback{position:relative;display:grid;min-height:260px;place-items:center;overflow:hidden;background:linear-gradient(90deg,transparent 0 48%,rgb(20 20 20 / .09) 48% 52%,transparent 52%),linear-gradient(180deg,#72b8df 0 44%,#f0d26a 44% 56%,#f7f4ec 56% 100%);border-bottom:1px solid var(--color-border)}.featured-card__fallback:before{position:absolute;inset:0;content:"";background:radial-gradient(circle at 80% 24%,rgb(20 20 20 / .18) 0 4px,transparent 5px),repeating-linear-gradient(0deg,rgb(20 20 20 / .08) 0 1px,transparent 1px 8px)}.featured-card__fallback span,.featured-card__fallback strong{position:relative;z-index:1;display:block;border:5px solid var(--color-text);background:var(--color-surface);color:var(--color-text);box-shadow:10px 10px #14141424}.featured-card__fallback span{padding:.45rem .65rem;font-family:var(--font-mono);font-size:.78rem;font-weight:750;transform:rotate(-8deg) translate(4rem,-1.8rem)}.featured-card__fallback strong{padding:.3rem .8rem .45rem;font-size:3rem;line-height:1;transform:rotate(2deg) translate(-1rem,-.4rem)}.post-grid--stack{grid-template-columns:1fr;gap:1rem}.split-section{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr);gap:2rem;align-items:start}.project-list{display:grid;gap:0;padding:0;margin:0;border-top:1px solid var(--color-border)}.project-list li{list-style:none}.project-list a{display:grid;gap:.4rem;padding:1rem 0;border-bottom:1px solid var(--color-border);color:inherit;text-decoration:none}.project-list a:hover,.project-list a:focus-visible{color:var(--color-text);background:var(--color-soft)}.project-list span{color:var(--color-muted)}.stack-panel{padding:1.2rem;border:1px solid var(--color-border);background:var(--color-surface)}.stack-panel>div:last-child{display:flex;flex-wrap:wrap;gap:.5rem}.stack-panel span{padding:.38rem .55rem;background:var(--color-soft);color:var(--color-muted);border:1px solid var(--color-border);font-size:.85rem}.github-repo{display:grid;grid-template-columns:minmax(0,240px) 1fr;gap:2rem;align-items:start;padding:3rem 0;border-bottom:1px solid var(--color-border)}.github-repo__state{color:var(--color-muted)}.github-repo__link{display:grid;grid-template-columns:1.4fr repeat(4,minmax(0,1fr));border:1px solid var(--color-border);background:var(--color-surface);text-decoration:none}.github-repo__link span{display:grid;gap:.25rem;padding:1rem;border-right:1px solid var(--color-border);color:var(--color-muted);font-size:.86rem}.github-repo__link span:last-child{border-right:0}.github-repo__link strong{color:var(--color-text);font-size:1.05rem}.listing-page{padding-top:3rem;padding-bottom:4rem}.listing-hero{margin:1.5rem 0 2.5rem;padding-bottom:2rem;border-bottom:1px solid var(--color-border)}.post-page{padding-bottom:4rem}.post-article{margin-bottom:2.5rem}.post-article__hero{width:100%;aspect-ratio:16 / 9;object-fit:cover;border:1px solid var(--color-border)}.post-article__header{margin:1.6rem 0;padding-bottom:1.4rem;border-bottom:1px solid var(--color-border)}.post-article__header h1{margin:0;font-size:3rem;line-height:1.12;letter-spacing:0}.post-article__header p{max-width:680px;margin:.8rem 0 0;color:var(--color-muted);font-size:1.08rem;line-height:1.8}.post-article__meta{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1rem;color:var(--color-muted);font-family:var(--font-mono);font-size:.78rem}.post-article__content{line-height:1.9}.post-article__content pre{overflow-x:auto;border:1px solid var(--color-border)!important;background:var(--color-soft)!important}.post-article__content img{border:1px solid var(--color-border)!important}.post-back{margin-top:1.5rem;gap:.4rem}.project-readme-page{padding-top:2.25rem;padding-bottom:4rem}.project-readme-hero{display:grid;gap:.9rem;margin:1rem 0 2rem;padding-bottom:1.8rem;border-bottom:1px solid var(--color-border)}.project-readme-hero>p{margin:0;color:var(--color-accent);font-family:var(--font-mono);font-size:.76rem;font-weight:600;text-transform:uppercase}.project-readme-hero h1{margin:0;font-size:3rem;line-height:1.08;letter-spacing:0}.project-readme-hero>span{max-width:780px;color:var(--color-muted);font-size:1.08rem;line-height:1.8}.project-readme-hero dl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin:.5rem 0 0}.project-readme-hero dl div{display:grid;gap:.18rem;padding:.75rem .85rem;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface)}.project-readme-hero dt{color:var(--color-muted);font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase}.project-readme-hero dd{margin:.25rem 0 0;font-weight:700}.project-readme-back,.project-readme-actions a,.project-readme-state a{width:fit-content;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:38px;padding:.52rem .78rem;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:var(--color-text);font-weight:600;text-decoration:none}.project-readme-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.35rem}.project-readme-actions a:first-child{background:var(--color-surface);border-color:var(--color-text);color:var(--color-text)}.project-readme-actions a:first-child span{font-size:1.1rem}.project-readme-back:hover,.project-readme-back:focus-visible,.project-readme-actions a:hover,.project-readme-actions a:focus-visible,.project-readme-state a:hover,.project-readme-state a:focus-visible{border-color:var(--color-accent);background:var(--color-soft);color:var(--color-text)}.project-readme-content,.project-readme-state{width:100%;max-width:880px;line-height:1.85;overflow-wrap:anywhere}.project-readme-content h1,.project-readme-content h2,.project-readme-content h3{margin-top:1.6rem;line-height:1.2;letter-spacing:0}.project-readme-content p,.project-readme-content li{color:var(--color-muted)}.project-readme-content a{color:var(--color-text);font-weight:650}.project-readme-content img{max-width:100%;border:1px solid var(--color-border);border-radius:8px}.project-readme-content pre{max-width:100%;overflow-x:auto;padding:1rem;border:1px solid var(--color-border);border-radius:8px;background:var(--color-soft)}.project-readme-content code{font-family:var(--font-mono)}.project-readme-content table{display:block;width:100%;max-width:100%;border-collapse:collapse;overflow-x:auto}.project-readme-content th,.project-readme-content td{padding:.65rem;border:1px solid var(--color-border);text-align:left;overflow-wrap:anywhere}.project-readme-state{padding:1.2rem;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface)}@media (max-width: 820px){.blog-hero,.github-repo,.split-section,.featured-layout{grid-template-columns:1fr}.blog-hero{padding:2.5rem 0 2.25rem;gap:2rem}.hero-copy{min-height:auto}.blog-hero h1{font-size:4rem;line-height:.98}.hero-visual{min-height:520px}.focus-grid,.github-repo__link{grid-template-columns:1fr}.post-grid:not(.post-grid--masonry){grid-template-columns:1fr}.post-grid--masonry{columns:1}.github-repo__link span{border-right:0;border-bottom:1px solid var(--color-border)}.github-repo__link span:last-child{border-bottom:0}.section-heading--row{align-items:start;flex-direction:column}.section-heading h2,.listing-hero h1,.github-repo h2{font-size:1.8rem}.post-article__header h1{font-size:2.15rem}.project-readme-hero h1{font-size:2.35rem}.project-readme-hero dl{grid-template-columns:repeat(2,minmax(0,1fr))}.featured-card{grid-template-rows:auto auto}.featured-card h3{font-size:1.8rem}}@media (max-width: 520px){.content-shell{padding-left:1rem;padding-right:1rem}.home-content{padding-top:1.5rem}.blog-hero{padding-top:1.75rem}.blog-hero h1{font-size:2.35rem;line-height:1.04}.hero-description{font-size:1rem;line-height:1.75}.hero-metrics{grid-template-columns:1fr}.hero-actions a{width:100%}.hero-visual{min-height:390px}.hero-visual__note{right:.75rem;bottom:.75rem;left:.75rem;padding:.85rem}.featured-card img{min-height:210px}.featured-card__body{padding:1rem}.featured-card h3{font-size:1.45rem;line-height:1.2}.home-section,.github-repo{padding:2.25rem 0}.hero-metrics div,.github-repo__link span,.stack-panel{padding:.85rem}.project-readme-hero dl{grid-template-columns:1fr}}.site-footer[data-astro-cid-lejjx2fa]{display:flex;flex-wrap:wrap;justify-content:center;gap:.45rem;margin-top:3rem;padding:1.25rem;border-top:1px solid var(--color-border);background:var(--color-bg);color:var(--color-muted);font-family:var(--font-mono);font-size:.72rem}.site-footer[data-astro-cid-lejjx2fa] a[data-astro-cid-lejjx2fa]{color:inherit}
