@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/montserrat-latin-700-normal.BdjcYUrC.woff2)format("woff2"),url(/_astro/montserrat-latin-700-normal.BWkrl476.woff)format("woff")}@font-face{font-family:Montserrat;font-style:normal;font-display:swap;font-weight:800;src:url(/_astro/montserrat-latin-800-normal.axpkC1rd.woff2)format("woff2"),url(/_astro/montserrat-latin-800-normal.C3dfDxXV.woff)format("woff")}:root,[data-theme=light]{--bg:#fafafa;--fg:#111;--muted:#666;--border:#e5e5e5;--link:#0b57d0;--code-bg:#f0f0f0;--measure:42rem;--measure-wide:48rem;--font-sans:system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;--font-display:"Montserrat", var(--font-sans);--font-serif:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;color-scheme:light}[data-theme=dark]{--bg:#111;--fg:#f2f2f2;--muted:#a0a0a0;--border:#2a2a2a;--link:#8ab4f8;--code-bg:#1c1c1c;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme]){--bg:#111;--fg:#f2f2f2;--muted:#a0a0a0;--border:#2a2a2a;--link:#8ab4f8;--code-bg:#1c1c1c;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html{color-scheme:light dark}body{min-height:100vh;font-family:var(--font-sans);background:var(--bg);color:var(--fg);margin:0;font-size:1rem;line-height:1.6}a{color:var(--link);text-underline-offset:.15em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:where(a,button):focus-visible{outline:2px solid var(--link);outline-offset:3px}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:20;background:var(--fg);color:var(--bg);padding:.65rem .9rem;font-weight:700;transition:transform .12s ease-out;position:fixed;inset:0 auto auto 1rem;transform:translateY(-140%)}.skip-link:focus{transform:translateY(0)}.site-header,.site-footer,.site-main{width:min(100% - 2rem, var(--measure-wide));margin-inline:auto}.site-header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem 0;display:flex}.site-logo{color:var(--fg);align-items:center;line-height:1;text-decoration:none;display:inline-flex}.site-logo:hover{color:var(--link)}.site-logo-mark{font-family:var(--font-display);letter-spacing:-.04em;font-size:clamp(1.85rem,3.5vw,2.35rem);font-weight:800;line-height:1}.site-nav{flex-wrap:wrap;align-items:center;gap:.85rem 1rem;font-size:.95rem;display:flex}.site-nav a{color:var(--fg);text-decoration:none}.site-nav a:hover{color:var(--link);text-decoration:underline}.site-nav a[aria-current=page]{color:var(--link);text-decoration:underline 2px}.site-main{padding:1.75rem 0 3rem}.site-footer{border-top:1px solid var(--border);color:var(--muted);flex-direction:column;gap:.5rem;padding:1.5rem 0 2.5rem;font-size:.9rem;display:flex}.site-footer p{margin:0}.site-footer a{color:var(--muted)}.site-footer a:hover{color:var(--link)}.site-footer-lead{max-width:var(--measure);line-height:1.5}.site-footer-meta{flex-wrap:wrap;align-items:center;gap:.4rem .5rem;display:flex}.prose{max-width:var(--measure);font-family:var(--font-serif);font-size:1.125rem;line-height:1.75}.prose :first-child{margin-top:0}.prose :last-child{margin-bottom:0}.prose h1,.prose h2,.prose h3{font-family:var(--font-display);letter-spacing:-.02em;font-weight:700;line-height:1.25}.prose h2,.prose h3{scroll-margin-top:1.5rem}.heading-anchor{color:var(--muted);font-family:var(--font-mono);margin-left:.45em;font-size:.72em;font-weight:400;text-decoration:none}.heading-anchor:hover,.heading-anchor:focus-visible{color:var(--link)}.prose code{font-family:var(--font-mono);background:var(--code-bg);border-radius:.25rem;padding:.1em .35em;font-size:.9em}.prose pre{font-family:var(--font-mono);background:var(--code-bg);border-radius:.35rem;padding:1rem;font-size:.9rem;line-height:1.5;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose table{border-collapse:collapse;max-width:100%;font-family:var(--font-sans);font-size:.9rem;line-height:1.5;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--border);text-align:left;vertical-align:top;min-width:8rem;padding:.55rem .7rem}.meta{color:var(--muted);font-family:var(--font-sans);font-size:.95rem}.stack{flex-direction:column;gap:1.25rem;display:flex}.stack-lg{flex-direction:column;gap:2rem;display:flex}.section-title{font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 .4rem;font-size:.85rem;font-weight:700}.section-intro{color:var(--muted);max-width:var(--measure);margin:0 0 1.1rem;font-size:.98rem}.subsection-title{font-family:var(--font-display);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:1.5rem 0 .25rem;font-size:.8rem;font-weight:700}.section-footer-link{margin:1rem 0 0;font-size:.95rem}.hero{border-bottom:1px solid var(--border);max-width:var(--measure);padding-bottom:1.75rem}.hero-title{font-family:var(--font-display);letter-spacing:-.045em;max-width:12ch;margin:0 0 .65rem;font-size:clamp(2rem,7vw,3.25rem);font-weight:800;line-height:1.02}.hero-tagline{font-family:var(--font-serif);color:var(--fg);margin:0 0 1rem;font-size:1.2rem;line-height:1.55}.lede{font-family:var(--font-serif);color:var(--muted);font-size:1.05rem;line-height:1.7}.lede p{margin:0 0 .75rem}.lede p:last-child{margin-bottom:0}.hero-ctas{font-family:var(--font-sans);flex-wrap:wrap;align-items:center;gap:.45rem .6rem;margin:1.25rem 0 0;font-size:.95rem;display:flex}.hero-ctas a{font-weight:500;text-decoration:none}.hero-ctas a:hover{text-decoration:underline}.hero-ctas-sep{color:var(--muted)}.current-work{border-top:1px solid var(--border);grid-template-columns:minmax(7rem,.4fr) 1fr;gap:1rem;margin-top:1.75rem;padding-top:1.25rem;display:grid}.current-work h2{color:var(--muted);font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:.78rem}.current-work ul{gap:.85rem;margin:0;padding:0;list-style:none;display:grid}.current-work li{grid-template-columns:minmax(9rem,.8fr) 1.4fr;gap:.75rem;line-height:1.45;display:grid}.current-work strong{font-family:var(--font-display);font-size:.88rem}.current-work span{color:var(--muted);font-size:.9rem}.featured-post{border-bottom:1px solid var(--border);max-width:var(--measure);padding:1.15rem 0 1.25rem}.featured-label{font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;color:var(--link);margin:0 0 .5rem;font-size:.75rem;font-weight:700}.featured-title{font-family:var(--font-display);letter-spacing:-.025em;margin:0 0 .4rem;font-size:clamp(1.4rem,2.6vw,1.8rem);font-weight:700;line-height:1.2}.featured-title a{color:var(--fg);text-decoration:none}.featured-title a:hover{color:var(--link);text-decoration:underline}.featured-description{font-family:var(--font-serif);color:var(--fg);max-width:38rem;margin:.65rem 0 0;font-size:1.1rem;line-height:1.6}.featured-cta{font-family:var(--font-sans);margin:.9rem 0 0;font-size:.95rem;font-weight:500}.featured-cta a{text-decoration:none}.featured-cta a:hover{text-decoration:underline}.post-list{margin:0;padding:0;list-style:none}.post-list li{border-bottom:1px solid var(--border);margin:0;padding:.85rem 0}.post-list a{font-family:var(--font-display);color:var(--fg);letter-spacing:-.015em;font-weight:700;text-decoration:none}.post-list a:hover{color:var(--link);text-decoration:underline}.project-list{flex-direction:column;display:flex}.project-card{border-bottom:1px solid var(--border);color:inherit;padding:1.1rem 0 1.2rem;display:block}.project-card-eyebrow{font-family:var(--font-display);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:0 0 .4rem;font-size:.75rem;font-weight:700}.project-card-title{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 .35rem;font-size:1.2rem;font-weight:700}.project-card-title a{color:var(--fg);text-decoration:none}.project-card-title a:hover{color:var(--link);text-decoration:underline}.project-card-tagline{color:var(--muted);max-width:var(--measure);margin:0;line-height:1.5}.project-card-actions{font-family:var(--font-sans);flex-wrap:wrap;gap:.75rem 1.1rem;margin:.75rem 0 0;font-size:.92rem;font-weight:500;display:flex}.project-card-actions a{text-decoration:none}.project-card-actions a:hover{text-decoration:underline}.page-title{font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 .5rem;font-size:clamp(1.85rem,3.2vw,2.4rem);font-weight:800;line-height:1.15}.cta-row{font-family:var(--font-sans);flex-wrap:wrap;align-items:center;gap:1rem;margin:1.5rem 0;display:flex}.button-link{border:1px solid var(--border);color:var(--fg);font-family:var(--font-sans);border-radius:.35rem;padding:.5rem .9rem;font-size:.95rem;text-decoration:none;display:inline-block}.button-link:hover{border-color:var(--link);color:var(--link)}.table-of-contents{max-width:var(--measure);border-block:1px solid var(--border);padding:1rem 1.15rem;font-size:.9rem}.table-of-contents-title{color:var(--muted);font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;margin:0 0 .6rem;font-size:.75rem;font-weight:700}.table-of-contents ol{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.table-of-contents a{color:var(--fg);text-decoration:none}.table-of-contents a:hover{color:var(--link);text-decoration:underline}.table-of-contents-nested{padding-left:1.1rem;font-size:.86rem}.project-overview{max-width:var(--measure-wide);border-block:1px solid var(--border);border-left:3px solid var(--link);grid-template-columns:minmax(0,1fr);gap:1.35rem;padding:1.5rem 0 1.75rem 1.25rem;display:grid}.project-overview>*{min-width:0}.project-overview-heading h2,.project-overview-capabilities h3{font-family:var(--font-display);letter-spacing:-.025em;margin:0;line-height:1.2}.project-overview-heading h2{max-width:23ch;font-size:clamp(1.4rem,4vw,2rem)}.project-overview-kicker,.project-overview-action-label{color:var(--link);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;margin:0 0 .35rem;font-size:.75rem;font-weight:700}.project-overview-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:0;display:grid}.project-overview-facts div{border-top:1px solid var(--border);padding-top:.7rem}.project-overview-facts dt{color:var(--muted);font-family:var(--font-display);letter-spacing:.05em;text-transform:uppercase;font-size:.75rem;font-weight:700}.project-overview-facts dd{margin:.3rem 0 0;line-height:1.5}.project-overview-capabilities h3{font-size:1rem}.project-overview-capabilities ul{grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem;margin:.7rem 0 0;padding:0;list-style:none;display:grid}.project-overview-capabilities li{color:var(--muted);padding-left:1rem;font-size:.9rem;line-height:1.45;position:relative}.project-overview-capabilities li:before{color:var(--link);content:"—";font-family:var(--font-mono);position:absolute;left:0}.feature-bundle{color:#f2f2f2;font-family:var(--font-mono);background:#111;border:1px solid #2a2a2a;border-radius:.35rem;font-size:.82rem;overflow:hidden}.feature-bundle-bar{border-bottom:1px solid #2a2a2a;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1rem;padding:.75rem .9rem;display:flex}.feature-bundle-path{color:#8ab4f8;font-weight:700}.feature-bundle-tools{color:#a0a0a0}.feature-bundle ul{gap:.3rem;margin:0;padding:.85rem 1rem;list-style:none;display:grid}.feature-bundle li span{color:#666}.feature-bundle-result{color:#b8d7ff;border-top:1px solid #2a2a2a;margin:0;padding:.65rem .9rem}.project-install{background:#111;border:1px solid #2a2a2a;border-radius:.35rem;flex-direction:column;width:100%;min-width:0;display:flex}.project-install-header{border-bottom:1px solid #2a2a2a;justify-content:space-between;align-items:center;min-height:2.75rem;padding:.2rem .35rem .2rem .9rem;display:flex}.project-install-header .project-overview-action-label{color:#8ab4f8;margin:0}.project-install-copy{color:#a0a0a0;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.3rem;flex:0 0 2.5rem;justify-content:center;align-items:center;width:2.5rem;height:2.5rem;padding:0;display:inline-flex}.project-install-copy:hover{color:#8ab4f8;border-color:#8ab4f8}.project-install-copy:focus-visible{outline-offset:0;outline-color:#8ab4f8}.project-install-check-icon{display:none}.project-install-copy[data-copy-state=copied]{color:#b8d7ff}.project-install-copy[data-copy-state=copied] .project-install-copy-icon{display:none}.project-install-copy[data-copy-state=copied] .project-install-check-icon{display:block}.project-install-command{color:#f2f2f2;width:100%;min-width:0;max-width:100%;font-family:var(--font-mono);white-space:pre;margin:0;padding:.85rem .9rem 1rem;font-size:.78rem;line-height:1.5;display:block;overflow-x:auto}.project-install-command:focus-visible{outline-offset:-2px;outline:2px solid #8ab4f8}.project-install-command code{color:inherit;font:inherit;white-space:inherit}.related-content{max-width:var(--measure);border-block:1px solid var(--border);border-left:3px solid var(--link);padding:1.2rem 1.25rem}.related-content-eyebrow{color:var(--muted);font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;margin:0 0 .35rem;font-size:.75rem;font-weight:700}.related-content h2{font-family:var(--font-display);margin:0;font-size:1.2rem;line-height:1.3}.related-content h2 a{color:var(--fg);text-decoration:none}.related-content h2 a:hover{color:var(--link);text-decoration:underline}.related-content p:not(.related-content-eyebrow){color:var(--muted);font-family:var(--font-serif);margin:.45rem 0 .65rem}.related-content-action{font-size:.9rem;font-weight:600;text-decoration:none}@media (width<=42rem){.current-work,.current-work li{grid-template-columns:1fr}.current-work li{gap:.15rem}.project-overview-facts,.project-overview-capabilities ul{grid-template-columns:1fr}}@media (width<=360px){.site-header,.site-footer,.site-main{width:min(100% - 1.25rem, var(--measure-wide))}.site-header{flex-wrap:nowrap;gap:.6rem}.site-nav{flex-wrap:nowrap;gap:.55rem;font-size:.88rem}.nav-home{display:none}.current-work ul{gap:.45rem}.current-work span{display:none}.project-overview{padding-left:.85rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.theme-toggle[data-astro-cid-l6lhmie6]{border:1px solid var(--border);width:2.5rem;height:2.5rem;color:var(--fg);cursor:pointer;vertical-align:middle;background:0 0;border-radius:.35rem;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;font-size:.95rem;line-height:1;display:inline-flex}.theme-toggle[data-astro-cid-l6lhmie6]:hover{border-color:var(--link);color:var(--link)}.theme-toggle[data-astro-cid-l6lhmie6]:focus-visible{outline:2px solid var(--link);outline-offset:2px}.theme-toggle-icon[data-astro-cid-l6lhmie6]{display:none}[data-theme=light] .theme-toggle-icon--to-dark[data-astro-cid-l6lhmie6],:root:not([data-theme]) .theme-toggle-icon--to-dark[data-astro-cid-l6lhmie6],[data-theme=dark] .theme-toggle-icon--to-light[data-astro-cid-l6lhmie6]{display:inline}@media (prefers-color-scheme:dark){:root:not([data-theme]) .theme-toggle-icon--to-dark[data-astro-cid-l6lhmie6]{display:none}:root:not([data-theme]) .theme-toggle-icon--to-light[data-astro-cid-l6lhmie6]{display:inline}}
