.site-footer[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--line);padding:40px var(--sp-24);margin-top:96px}.site-footer-inner[data-astro-cid-jo6i4kqk]{max-width:var(--max-content);justify-content:space-between;align-items:center;gap:var(--sp-32);flex-wrap:wrap;margin:0 auto;display:flex}.site-footer-brand[data-astro-cid-jo6i4kqk]{align-items:center;gap:var(--sp-16);display:flex}.site-footer-brand[data-astro-cid-jo6i4kqk] .site-brand-logo{opacity:.6;filter:grayscale()brightness(.9);height:15px;transition:opacity .15s,filter .15s}.site-footer-brand[data-astro-cid-jo6i4kqk] .site-brand:hover .site-brand-logo{opacity:1;filter:grayscale(.25)brightness()}.site-footer-tag[data-astro-cid-jo6i4kqk]{color:var(--muted);align-items:center;font-size:.8125rem;line-height:1;display:inline-flex}.site-footer-links[data-astro-cid-jo6i4kqk]{gap:var(--sp-32);display:flex}.site-footer-links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{color:var(--muted);font-size:.8125rem}.site-footer-links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--ink);text-decoration:none}.site-footer-bottom[data-astro-cid-jo6i4kqk]{max-width:var(--max-content);justify-content:space-between;align-items:center;gap:var(--sp-24);margin:20px auto 0;display:flex}.site-footer-meta[data-astro-cid-jo6i4kqk]{color:var(--muted);font-size:.75rem;font-family:var(--font-mono)}.site-footer-social[data-astro-cid-jo6i4kqk]{align-items:center;gap:var(--sp-16);display:inline-flex}.site-footer-social[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{width:20px;height:20px;color:var(--muted);justify-content:center;align-items:center;transition:color .15s;display:inline-flex}.site-footer-social[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--ink);text-decoration:none}.site-footer-social[data-astro-cid-jo6i4kqk] svg[data-astro-cid-jo6i4kqk]{fill:currentColor;width:14px;height:14px}@media (width<=640px){.site-footer-bottom[data-astro-cid-jo6i4kqk]{align-items:flex-start;gap:var(--sp-16);flex-direction:column}}.img-lightbox{z-index:1000;-webkit-backdrop-filter:blur(6px);cursor:zoom-out;touch-action:pinch-zoom;background:#000000e0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.img-lightbox[hidden]{display:none}.img-lightbox-stage{justify-content:center;align-items:center;width:100%;height:100%;display:flex;overflow:hidden}.img-lightbox-img{object-fit:contain;user-select:none;-webkit-user-drag:none;cursor:grab;transform-origin:50%;will-change:transform;max-width:95vw;max-height:92vh;transition:transform 80ms ease-out}.img-lightbox-img:active{transition:none}.img-lightbox-vector{cursor:grab;transform-origin:50%;will-change:transform;justify-content:center;align-items:center;width:min(95vw,1100px);height:min(92vh,720px);transition:transform 80ms ease-out;display:flex}.img-lightbox-vector[hidden]{display:none}.img-lightbox-vector svg{max-width:100%;max-height:100%;display:block}.img-lightbox-close{color:#fff;cursor:pointer;z-index:1;background:#0006;border:1px solid #ffffff2e;border-radius:999px;justify-content:center;align-items:center;width:36px;height:36px;transition:background .12s cubic-bezier(.2,0,0,1);display:inline-flex;position:absolute;top:16px;right:16px}.img-lightbox-controls{z-index:1;color:#fff;background:#0006;border:1px solid #ffffff2e;border-radius:999px;align-items:center;display:inline-flex;position:absolute;top:16px;left:16px;overflow:hidden}.img-lightbox-controls button{min-width:36px;height:36px;color:inherit;cursor:pointer;background:0 0;border:0;border-right:1px solid #ffffff24;justify-content:center;align-items:center;display:inline-flex}.img-lightbox-controls button:last-child{border-right:0}.img-lightbox-reset{font-family:var(--font-mono);padding:0 10px;font-size:11px;min-width:54px!important}.img-lightbox-controls button:hover{background:#ffffff1a}.img-lightbox-close:hover{background:#000000b3}.img-lightbox-hint{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:#ffffff8c;pointer-events:none;font-size:11px;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}@media (width<=640px){.img-lightbox-hint{display:none}}.prose img:not([data-no-zoom]),.prose .diagram svg{cursor:zoom-in}
