.medium-toc-wrapper[data-astro-cid-p33bl5ka]{z-index:90;display:none;position:fixed;top:50%;right:1.5rem;transform:translateY(-50%)}@media (width>=1024px){.medium-toc-wrapper[data-astro-cid-p33bl5ka]{justify-content:flex-end;align-items:center;display:flex}}.toc-bars[data-astro-cid-p33bl5ka]{cursor:pointer;flex-direction:column;align-items:flex-end;gap:7px;padding:10px 4px;display:flex}.toc-bar[data-astro-cid-p33bl5ka]{background-color:#d1d5db;border-radius:2px;height:2px;transition:all .2s cubic-bezier(.4,0,.2,1)}.toc-bar[data-astro-cid-p33bl5ka].depth-2{width:22px}.toc-bar[data-astro-cid-p33bl5ka].depth-3{width:13px}.toc-bar[data-astro-cid-p33bl5ka].is-active{background-color:#1a1a1a;transform:scaleX(1.1)}.toc-popover[data-astro-cid-p33bl5ka]{opacity:0;visibility:hidden;pointer-events:none;background:#fff;border:1px solid #00000014;border-radius:12px;width:260px;padding:1rem .85rem;transition:opacity .2s cubic-bezier(.16,1,.3,1),transform .2s cubic-bezier(.16,1,.3,1),visibility .2s;position:absolute;right:calc(100% + 12px);transform:translate(10px)scale(.97);box-shadow:0 10px 30px -5px #0000001f,0 4px 6px -2px #0000000a}.toc-popover[data-astro-cid-p33bl5ka]:after{content:"";width:20px;position:absolute;top:0;bottom:0;right:-16px}.medium-toc-wrapper[data-astro-cid-p33bl5ka]:hover .toc-popover[data-astro-cid-p33bl5ka]{opacity:1;visibility:visible;pointer-events:auto;transform:translate(0)scale(1)}.medium-toc-wrapper[data-astro-cid-p33bl5ka]:hover .toc-bar[data-astro-cid-p33bl5ka]:not(.is-active){background-color:#e5e7eb}.toc-list[data-astro-cid-p33bl5ka]{flex-direction:column;gap:.25rem;max-height:60vh;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.toc-item[data-astro-cid-p33bl5ka].depth-3{padding-left:1.1rem}.toc-link[data-astro-cid-p33bl5ka]{color:#6b6b6b;white-space:nowrap;border-radius:6px;align-items:center;gap:.5rem;padding:.3rem .4rem;font-size:.84rem;text-decoration:none;transition:color .15s,background .15s;display:flex;overflow:hidden}.toc-text[data-astro-cid-p33bl5ka]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.toc-dot[data-astro-cid-p33bl5ka]{opacity:0;background-color:#1a8917;border-radius:50%;flex-shrink:0;width:5px;height:5px;transition:opacity .2s,transform .2s;transform:scale(.5)}.toc-link[data-astro-cid-p33bl5ka]:hover{color:#111827;background-color:#f9fafb}.toc-link[data-astro-cid-p33bl5ka].is-active{color:#1a8917;font-weight:500}.toc-link[data-astro-cid-p33bl5ka].is-active .toc-dot[data-astro-cid-p33bl5ka]{opacity:1;transform:scale(1)}.dark .toc-popover[data-astro-cid-p33bl5ka]{background:#18181b;border-color:#ffffff1f;box-shadow:0 10px 30px -5px #00000080}.dark .toc-bar[data-astro-cid-p33bl5ka]{background-color:#3f3f46}.dark .toc-bar[data-astro-cid-p33bl5ka].is-active{background-color:#f4f4f5}.dark .toc-link[data-astro-cid-p33bl5ka]{color:#a1a1aa}.dark .toc-link[data-astro-cid-p33bl5ka]:hover{color:#fff;background-color:#27272a}.dark .toc-link[data-astro-cid-p33bl5ka].is-active{color:#22c55e}.dark .toc-dot[data-astro-cid-p33bl5ka]{background-color:#22c55e}.project-container[data-astro-cid-uovcksa3]{max-width:900px;margin:0 auto;padding:4rem 1.5rem 8rem}.back-nav[data-astro-cid-uovcksa3]{margin-bottom:3rem}.back-link[data-astro-cid-uovcksa3]{color:var(--color-secondary);font-size:.85rem;text-decoration:none;transition:color .15s}.back-link[data-astro-cid-uovcksa3]:hover{color:var(--color-primary)}.project-header[data-astro-cid-uovcksa3]{text-align:center;border-bottom:1px solid var(--color-border);max-width:80ch;margin:0 auto 2rem;padding-bottom:2.5rem}.project-title[data-astro-cid-uovcksa3]{letter-spacing:-.02em;text-wrap:balance;overflow-wrap:anywhere;color:var(--color-primary);margin-bottom:.75rem;font-size:clamp(2rem,1.25rem + 3.5vw,3rem);font-weight:400;line-height:1.15}.description[data-astro-cid-uovcksa3]{color:var(--color-secondary);max-width:500px;margin:0 auto 1.5rem;font-size:1.05rem;line-height:1.5}.links[data-astro-cid-uovcksa3]{flex-flow:wrap;justify-content:center;align-items:center;gap:1rem;margin-top:3rem;display:flex}.project-badge[data-astro-cid-uovcksa3]{align-items:center;height:32px;transition:transform .15s;display:inline-flex}.project-badge[data-astro-cid-uovcksa3]:hover{transform:translateY(-1px)}.project-badge[data-astro-cid-uovcksa3] img[data-astro-cid-uovcksa3]{width:auto;max-height:28px;display:block}.project-link[data-astro-cid-uovcksa3]{color:var(--color-primary);border:1px solid var(--color-border);background-color:var(--color-surface);box-sizing:border-box;cursor:pointer;border-radius:4px;justify-content:center;align-items:center;height:32px;padding:0 .75rem;font-family:inherit;font-size:.85rem;font-weight:500;text-decoration:none;transition:all .15s;display:inline-flex}button[data-astro-cid-uovcksa3].project-link{appearance:none;background:var(--color-surface);margin:0;line-height:1}.project-link[data-astro-cid-uovcksa3]:hover{border-color:#52525b;transform:translateY(-1px)}.arrow[data-astro-cid-uovcksa3]{color:#a1a1aa;margin-left:.25rem;font-size:.75rem;line-height:1}.layout-grid[data-astro-cid-uovcksa3]{grid-template-columns:1fr;gap:3.5rem;display:grid}@media (width>=1024px){.layout-grid[data-astro-cid-uovcksa3]{grid-template-columns:minmax(0,3fr) 220px}}.prose[data-astro-cid-uovcksa3]{max-width:80ch;color:var(--color-secondary);word-break:break-word;margin:0 auto;font-size:.95rem;line-height:1.7}.prose[data-astro-cid-uovcksa3] p{margin-bottom:1.5rem}.prose[data-astro-cid-uovcksa3] h1,.prose[data-astro-cid-uovcksa3] h2,.prose[data-astro-cid-uovcksa3] h3,.prose[data-astro-cid-uovcksa3] h4{color:var(--color-primary,#111827);scroll-margin-top:5rem;font-weight:600;line-height:1.3}.prose[data-astro-cid-uovcksa3] h2{border-bottom:1px solid var(--color-border,#e5e7eb);margin-top:3.5rem;margin-bottom:1rem;padding-bottom:.5rem;font-size:1.5rem}.prose[data-astro-cid-uovcksa3] h3{margin-top:2.25rem;margin-bottom:.75rem;font-size:1.25rem}.prose[data-astro-cid-uovcksa3] h4{color:var(--color-primary,#111827);letter-spacing:-.01em;margin-top:1.5rem;margin-bottom:.5rem;font-size:1rem;font-weight:600;line-height:1.4}.prose[data-astro-cid-uovcksa3] p{margin-top:0;margin-bottom:1.5rem}.prose[data-astro-cid-uovcksa3] a{color:#1a8917;text-underline-offset:3px;text-decoration:underline;transition:opacity .15s}.prose[data-astro-cid-uovcksa3] a:hover{opacity:.8}.prose[data-astro-cid-uovcksa3] ul,.prose[data-astro-cid-uovcksa3] ol{margin-bottom:1.5rem;padding-left:1.5rem}.prose[data-astro-cid-uovcksa3] li{margin-bottom:.5rem}.prose[data-astro-cid-uovcksa3] li::marker{color:#9ca3af}.prose[data-astro-cid-uovcksa3] .table-wrapper{border:1px solid var(--color-border,#e5e7eb);border-radius:8px;width:100%;margin:2rem 0;overflow-x:auto;box-shadow:0 1px 3px #00000005}.prose[data-astro-cid-uovcksa3] table{border-collapse:collapse;text-align:left;width:100%;font-size:.9rem;line-height:1.5}.prose[data-astro-cid-uovcksa3] thead{background-color:var(--color-surface,#f9fafb);border-bottom:1px solid var(--color-border,#e5e7eb)}.prose[data-astro-cid-uovcksa3] th{color:var(--color-primary,#111827);text-transform:uppercase;letter-spacing:.05em;padding:.75rem 1rem;font-size:.75rem;font-weight:600}.prose[data-astro-cid-uovcksa3] td{border-bottom:1px solid var(--color-border,#f3f4f6);color:var(--color-secondary,#4b5563);padding:.75rem 1rem}.prose[data-astro-cid-uovcksa3] tbody tr:nth-child(2n){background-color:#00000004}.prose[data-astro-cid-uovcksa3] tbody tr:hover{background-color:#00000008}.prose[data-astro-cid-uovcksa3] blockquote{color:#4b5563;background:#f9fafb;border-left:3px solid #1a8917;border-radius:0 8px 8px 0;margin:2rem 0;padding:.75rem 1.25rem;font-style:italic}.prose[data-astro-cid-uovcksa3] blockquote p:last-child{margin-bottom:0}.prose[data-astro-cid-uovcksa3] code:not(pre code){color:#ef4444;background-color:#f3f4f6;border:1px solid #e5e7eb;border-radius:4px;padding:.15rem .35rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85em}.prose[data-astro-cid-uovcksa3] pre{border:1px solid var(--color-border,#e5e7eb);border-radius:8px;margin:1.75rem 0;padding:1.25rem;font-size:.875rem;line-height:1.6;overflow-x:auto}.prose[data-astro-cid-uovcksa3] img{border-radius:8px;max-width:100%;height:auto;margin:2.5rem auto;display:block}.prose[data-astro-cid-uovcksa3] blockquote{border-left:3px solid var(--color-border);color:var(--color-secondary);margin:1.75rem 0;padding-left:1.25rem;font-style:italic}.prose[data-astro-cid-uovcksa3] img{border:1px solid var(--color-border);border-radius:6px;max-width:100%;height:auto;margin:2rem 0}.dark .prose[data-astro-cid-uovcksa3]{color:#d1d5db}.dark .prose[data-astro-cid-uovcksa3] h1,.dark .prose[data-astro-cid-uovcksa3] h2,.dark .prose[data-astro-cid-uovcksa3] h3{color:#f9fafb;border-bottom-color:#27272a}.dark .prose[data-astro-cid-uovcksa3] thead{background-color:#1f2937;border-bottom-color:#374151}.dark .prose[data-astro-cid-uovcksa3] .table-wrapper{border-color:#374151}.dark .prose[data-astro-cid-uovcksa3] th{color:#f3f4f6}.dark .prose[data-astro-cid-uovcksa3] td{color:#9ca3af;border-bottom-color:#27272a}.dark .prose[data-astro-cid-uovcksa3] tbody tr:nth-child(2n){background-color:#ffffff05}.dark .prose[data-astro-cid-uovcksa3] tbody tr:hover{background-color:#ffffff0a}.dark .prose[data-astro-cid-uovcksa3] blockquote{color:#9ca3af;background:#18181b}.dark .prose[data-astro-cid-uovcksa3] code:not(pre code){color:#f87171;background-color:#27272a;border-color:#3f3f46}.sidebar[data-astro-cid-uovcksa3]{display:none}@media (width>=1024px){.sidebar[data-astro-cid-uovcksa3]{display:block}.sticky-container[data-astro-cid-uovcksa3]{max-height:calc(100vh - 6rem);position:sticky;top:5rem}}
