.blog-root{--blog-measure:720px;--blog-red:#f0524f;--blog-blue:#0078ff;width:min(100% - 40px, var(--blog-measure));font-family:var(--pt-text);color:var(--pt-ink);margin:0 auto;padding:72px 0 96px}.blog-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--pt-titanium);margin:0 0 14px;font-size:12px}.blog-eyebrow a{color:inherit;text-decoration:none}.blog-eyebrow a:hover{color:var(--pt-ink)}.blog-root h1{letter-spacing:-.03em;text-wrap:balance;margin:0;font-size:34px;font-weight:600;line-height:1.12}.blog-lead{color:var(--pt-ink-2);margin:16px 0 0;font-size:17px;line-height:1.5}.blog-lead a,.blog-body a,.blog-article-foot a{color:var(--pt-ink);text-decoration:underline;-webkit-text-decoration-color:var(--pt-hair);text-decoration-color:var(--pt-hair);text-underline-offset:3px}.blog-lead a:hover,.blog-body a:hover,.blog-article-foot a:hover{-webkit-text-decoration-color:var(--pt-ink);text-decoration-color:var(--pt-ink)}.blog-byline{color:var(--pt-ink-2);align-items:center;gap:10px;margin:18px 0 0;font-size:14px;display:flex}.blog-byline-avatars{flex-shrink:0;display:flex}.blog-byline-avatars img{object-fit:cover;width:22px;height:22px;box-shadow:0 0 0 2px var(--pt-paper);border-radius:50%;position:relative}.blog-byline-avatars img+img{margin-left:-6px}.blog-byline-dot{color:var(--pt-titanium)}.blog-index-head{margin-bottom:48px}.blog-index{gap:40px;margin:0;padding:0;list-style:none;display:grid}.blog-card-cover{border-radius:var(--pt-radius);background:var(--pt-plate);aspect-ratio:16/9;display:block;overflow:hidden}.blog-card-copy{margin-top:18px}.blog-card-copy h2{letter-spacing:-.02em;margin:0;font-size:24px;font-weight:600;line-height:1.2}.blog-card-copy h2 a{color:inherit;text-decoration:none}.blog-card-copy h2 a:hover{text-decoration:underline;-webkit-text-decoration-color:var(--pt-hair);text-decoration-color:var(--pt-hair);text-underline-offset:3px}.blog-card-copy>p{color:var(--pt-ink-2);margin:8px 0 0;font-size:15px;line-height:1.5}.blog-cover{border-radius:var(--pt-radius);width:100%;height:auto;display:block}.blog-article-head .blog-cover{margin-top:32px}.blog-card-cover .blog-cover{object-fit:cover;border-radius:0;height:100%}.blog-cover-dark{display:none}:root[data-theme=dark] .blog-cover-dark{display:block}:root[data-theme=dark] .blog-cover-light{display:none}.blog-body{margin-top:40px;font-size:16.5px;line-height:1.65}.blog-body>*+*{margin-top:1.1em}.blog-body h2{letter-spacing:-.02em;margin-top:2.2em;font-size:24px;font-weight:600;line-height:1.25}.blog-body h3{letter-spacing:-.01em;margin-top:1.8em;font-size:18px;font-weight:600}.blog-body ul,.blog-body ol{padding-left:1.3em}.blog-body li+li{margin-top:.45em}.blog-body code{background:var(--pt-plate);font-family:var(--pt-mono);border-radius:4px;padding:.1em .35em;font-size:.88em}.blog-body strong{font-weight:600}.blog-body em{font-style:italic}.blog-image,.blog-video{border-radius:var(--pt-radius);width:100%;height:auto;margin:2em 0;display:block}.blog-body p:has(>.blog-image:only-child){margin:0}.blog-body .lucide{vertical-align:-3px;display:inline-block}.blog-article-foot{border-top:1px solid var(--pt-hair-soft);margin-top:64px;padding-top:24px;font-size:15px}.blog-callout{border-radius:var(--pt-radius);background:var(--pt-plate);margin:2em 0;padding:20px 22px;font-size:15.5px}.blog-callout>*+*{margin-top:.8em}.blog-callout-title{font-weight:600}.blog-github{margin:2em 0}.blog-github a{border:1px solid var(--pt-hair);border-radius:var(--pt-radius);align-items:center;gap:10px;padding:9px 14px;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex}.blog-github a:hover{border-color:var(--pt-edge)}.blog-github-meta{color:var(--pt-titanium);font-weight:400}.blog-spotlight{border:1px solid var(--pt-hair);border-radius:var(--pt-radius);grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);min-height:280px;margin:2em 0;display:grid;overflow:hidden}.blog-spotlight-portrait{background:var(--pt-plate);display:block}.blog-spotlight-portrait img{object-fit:cover;filter:saturate(.9)contrast(1.04);width:100%;height:100%;display:block}.blog-spotlight-copy{flex-direction:column;justify-content:center;gap:10px;padding:24px;display:flex}.blog-spotlight-copy h3{letter-spacing:-.015em;margin:0;font-size:18px;font-weight:500}.blog-spotlight-copy p{color:var(--pt-ink-2);margin:0;font-size:15px;line-height:1.55}.blog-spotlight-links{flex-wrap:wrap;gap:8px;margin-top:6px;display:flex}.blog-spotlight-links a{border:1px solid var(--pt-hair);border-radius:var(--pt-radius);color:var(--pt-ink);align-items:center;gap:8px;padding:6px 10px;font-size:13px;text-decoration:none;display:inline-flex}.blog-spotlight-links a:hover{border-color:var(--pt-edge)}.blog-spotlight-links img{border-radius:4px}@media (max-width:640px){.blog-spotlight{grid-template-columns:1fr}.blog-spotlight-portrait{aspect-ratio:16/10}}.blog-hit-list{gap:14px 40px;margin:1.6em 0;padding:0;list-style:none;display:grid}@media (min-width:640px){.blog-hit-list{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:column;grid-template-rows:repeat(var(--rows), auto)}}.blog-hit-list li{align-items:flex-start;gap:12px;font-size:15px;line-height:1.5;display:flex}.blog-hit-mark{background:color-mix(in srgb, var(--blog-red) 16%, transparent);width:18px;height:18px;color:var(--blog-red);border-radius:50%;flex-shrink:0;place-items:center;margin-top:2px;display:grid}.blog-carousel{margin:2em 0}.blog-carousel-frame{border-radius:var(--pt-radius);position:relative;overflow:hidden}.blog-carousel-frame.is-multiple{cursor:pointer}.blog-carousel-track{scroll-snap-type:x mandatory;scrollbar-width:none;display:flex;overflow-x:auto}.blog-carousel-track::-webkit-scrollbar{display:none}.blog-carousel-track:focus-visible{outline:2px solid var(--pt-ink);outline-offset:2px}.blog-carousel-slide{scroll-snap-align:start;flex:0 0 100%}.blog-carousel-slide img{width:100%;height:auto;display:block}.blog-carousel-edge{opacity:0;pointer-events:none;width:16%;transition:opacity .3s ease-out;position:absolute;top:0;bottom:0}.blog-carousel-edge.is-left{background:linear-gradient(90deg,#00000080,#00000024 60%,#0000);left:0}.blog-carousel-edge.is-right{background:linear-gradient(270deg,#00000080,#00000024 60%,#0000);right:0}.blog-carousel-edge.is-shown{opacity:1}.blog-carousel-arrow{color:#ffffffeb;filter:drop-shadow(0 2px 10px #000000b3);opacity:0;pointer-events:none;cursor:pointer;background:0 0;border:0;padding:12px;transition:translate .3s ease-out,opacity .3s ease-out;position:absolute;top:50%;transform:translateY(-50%)}.blog-carousel-edge.is-left .blog-carousel-arrow{left:12px;translate:-8px}.blog-carousel-edge.is-right .blog-carousel-arrow{right:12px;translate:8px}.blog-carousel-edge.is-shown .blog-carousel-arrow{opacity:1;pointer-events:auto;translate:0}.blog-carousel-arrow:focus-visible{outline-offset:2px;outline:2px solid #ffffffe6}.blog-carousel-dots{justify-content:center;gap:8px;margin-top:12px;display:flex}.blog-carousel-dot{background:var(--pt-cross);cursor:pointer;border:0;border-radius:50%;width:6px;height:6px;padding:0;transition:background-color .2s ease-out,transform .2s ease-out}.blog-carousel-dot:hover{background:var(--pt-edge)}.blog-carousel-dot.is-current{background:var(--pt-ink);transform:scale(1.25)}.blog-sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.blog-carousel-edge,.blog-carousel-arrow,.blog-carousel-dot{transition:none}}.blog-fumadocs-architecture{--fda-fg:var(--pt-ink);--fda-muted-fg:var(--pt-ink-2);--fda-card:var(--pt-plate);--fda-popover:var(--pt-paper);--fda-secondary:var(--pt-plate);--fda-border:var(--pt-hair);--fda-accent:var(--pt-hair-soft);--fda-dash:var(--pt-cross);margin:2em 0}.blog-fumadocs-architecture svg{width:100%;height:auto;display:block}.blog-fumadocs-architecture .ft{font:600 13px var(--pt-text);fill:var(--fda-fg)}.blog-fumadocs-architecture .fl{font:600 13.5px var(--pt-text);fill:var(--fda-fg)}.blog-fumadocs-architecture .fs{font:400 11.5px var(--pt-text);fill:var(--fda-muted-fg)}.blog-fumadocs-architecture .fm{font:500 12px var(--pt-mono);fill:var(--fda-fg)}.blog-fumadocs-architecture .cardbox,.blog-fumadocs-architecture .cardband{fill:var(--fda-card);stroke:var(--fda-border);stroke-width:1px}.blog-fumadocs-architecture .popbox{fill:var(--fda-popover);stroke:var(--fda-border);stroke-width:1px}.blog-fumadocs-architecture .secband{fill:var(--fda-secondary);stroke:var(--fda-border);stroke-width:1px}.blog-fumadocs-architecture .secband.core{fill:color-mix(in oklab, var(--blog-blue) 7%, var(--fda-secondary));stroke:color-mix(in oklab, var(--blog-blue) 55%, transparent);stroke-width:1.25px}.blog-fumadocs-architecture .core-label{fill:var(--blog-blue)}.blog-fumadocs-architecture .chip.core-chip{fill:color-mix(in oklab, var(--blog-blue) 16%, transparent)}.blog-fumadocs-architecture .dashband{fill:none;stroke:var(--fda-dash);stroke-width:1px;stroke-dasharray:4 4}.blog-fumadocs-architecture .chip{fill:var(--fda-accent)}.blog-fumadocs-architecture .logo{fill:var(--fda-fg)}.blog-fumadocs-architecture .lst{stroke:var(--fda-fg);stroke-width:1.5px;fill:none}.blog-fumadocs-architecture .arr{stroke:var(--fda-muted-fg);stroke-width:1.5px}.blog-fumadocs-architecture .alg,.blog-fumadocs-architecture .tan,.blog-fumadocs-architecture .wak{fill:var(--fda-fg)}.blog-fumadocs-architecture .stopP{stop-color:var(--fda-fg)}.blog-fumadocs-architecture .stopPT{stop-color:var(--fda-fg);stop-opacity:0}.blog-fumadocs-architecture .brand-flexsearch-b{fill:#30a4dc}.blog-fumadocs-architecture .brand-vite{fill:#7c3aed}.blog-fumadocs-architecture .brand-react-router{fill:#ca4245}.blog-fumadocs-architecture .brand-graphql{fill:#e10098}.blog-fumadocs-architecture .brand-flexsearch-a{fill:#f4641d}
