.project-page.svelte-6ls02y{max-width:var(--site-width);margin:0 auto;position:relative;isolation:isolate}.project-page.svelte-6ls02y:before{content:"";position:absolute;inset:0 -1.5rem -3rem;background:var(--bg);filter:blur(24px);opacity:.85;z-index:-1;pointer-events:none}header.svelte-6ls02y{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--element)}.title-row.svelte-6ls02y{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}header.svelte-6ls02y h1:where(.svelte-6ls02y){font-size:2.5rem;font-weight:600;margin-bottom:0}.github-link.svelte-6ls02y{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--element);border-radius:4px;color:var(--element);transition:color .15s,border-color .15s}.github-link.svelte-6ls02y:hover{color:var(--text);border-color:var(--text)}.meta.svelte-6ls02y{display:flex;align-items:center;gap:.75rem;font-size:.875rem;color:var(--element);margin-bottom:1rem}.tag.svelte-6ls02y{font-size:.75rem;background:var(--bg-alt);padding:.2rem .5rem;border-radius:4px;text-transform:capitalize}.description.svelte-6ls02y{color:var(--element);line-height:1.6;margin-bottom:.5rem}.lw-link.svelte-6ls02y{font-size:.8125rem;color:var(--element)}.lw-link.svelte-6ls02y a:where(.svelte-6ls02y){color:var(--text);text-decoration:underline;text-underline-offset:2px}.lw-link.svelte-6ls02y a:where(.svelte-6ls02y):hover{color:var(--element-alt)}.prose.svelte-6ls02y{line-height:1.75}.prose.svelte-6ls02y h1:where(.svelte-6ls02y){font-size:2rem;font-weight:600;margin-top:3rem;margin-bottom:1rem}.prose.svelte-6ls02y h2:where(.svelte-6ls02y){font-size:1.5rem;font-weight:600;margin-top:2.5rem;margin-bottom:1rem}.prose.svelte-6ls02y h3:where(.svelte-6ls02y){font-size:1.25rem;font-weight:600;margin-top:2rem;margin-bottom:.75rem}.prose.svelte-6ls02y p:where(.svelte-6ls02y){margin-bottom:1.25rem}.prose.svelte-6ls02y ul:where(.svelte-6ls02y){margin-bottom:1.25rem;padding-left:1.5rem}.prose.svelte-6ls02y li:where(.svelte-6ls02y){margin-bottom:.5rem}.prose.svelte-6ls02y code:where(.svelte-6ls02y){background:var(--bg-alt);padding:.2rem .4rem;border-radius:4px;font-size:.875em}.prose.svelte-6ls02y pre:where(.svelte-6ls02y){background:var(--bg-alt);padding:1rem;border-radius:8px;overflow-x:auto;margin-bottom:1.25rem}.prose.svelte-6ls02y pre:where(.svelte-6ls02y) code:where(.svelte-6ls02y){background:none;padding:0}.prose.svelte-6ls02y a:where(.svelte-6ls02y){color:var(--text);text-decoration:underline;text-underline-offset:2px}.prose.svelte-6ls02y a:where(.svelte-6ls02y):hover{color:var(--element-alt)}.prose.svelte-6ls02y figure:where(.svelte-6ls02y){margin:1.5rem 0}.prose.svelte-6ls02y figure:where(.svelte-6ls02y) img:where(.svelte-6ls02y){width:100%;border-radius:4px;cursor:pointer}.prose.svelte-6ls02y figcaption:where(.svelte-6ls02y){font-size:.8125rem;color:var(--element);margin-top:.5rem;line-height:1.5}.prose.svelte-6ls02y .table-wrapper:where(.svelte-6ls02y){overflow-x:auto;margin-bottom:1.25rem}.prose.svelte-6ls02y table:where(.svelte-6ls02y){width:100%;border-collapse:collapse;font-size:.875rem}.prose.svelte-6ls02y th:where(.svelte-6ls02y),.prose.svelte-6ls02y td:where(.svelte-6ls02y){padding:.5rem .75rem;text-align:left;border-bottom:1px solid var(--element)}.prose.svelte-6ls02y th:where(.svelte-6ls02y){font-weight:600;background:var(--bg-alt)}.prose.svelte-6ls02y td:where(.svelte-6ls02y){color:var(--element)}.zoom-overlay.svelte-6ls02y{position:fixed;inset:0;z-index:1000;background:#000000d9;display:flex;align-items:center;justify-content:center;cursor:zoom-out;padding:2rem}.zoom-overlay.svelte-6ls02y img:where(.svelte-6ls02y){max-width:100%;max-height:100%;object-fit:contain;border-radius:4px}
