body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--maxw:1200px;--fg:#1f2328;--muted:#6b7280;--link:#2563eb;--bg:linear-gradient(180deg,#f8fafc,#f1f5f9);--card:#fff;--border:#e5e7eb}*{box-sizing:border-box}#root,body,html{height:100%}body{background:linear-gradient(180deg,#f8fafc,#f1f5f9);background:var(--bg);color:#1f2328;color:var(--fg);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;line-height:1.65;margin:0;padding-top:70px}.main-nav{background:#fff;border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border);left:0;position:fixed;right:0;top:0;transition:box-shadow .3s ease;z-index:1000}.main-nav.scrolled{box-shadow:0 2px 8px #00000014}.nav-container{height:70px;justify-content:space-between;margin:0 auto;max-width:1200px;max-width:var(--maxw);padding:0 2rem}.nav-brand,.nav-container{align-items:center;display:flex}.nav-brand{color:#1f2328;color:var(--fg);font-size:1.1rem;font-weight:700;gap:.75rem;text-decoration:none;transition:opacity .2s}.nav-brand:hover{opacity:.8}.nav-logo{height:45px;width:auto}.nav-brand-text{letter-spacing:-.01em}.nav-toggle{background:none;border:none;cursor:pointer;display:none;flex-direction:column;gap:5px;padding:8px}.nav-toggle span{background:#1f2328;background:var(--fg);border-radius:2px;height:3px;transition:all .3s;width:25px}.nav-links{align-items:center;display:flex;gap:2rem}.nav-links a{color:#6b7280;color:var(--muted);font-size:.95rem;font-weight:500;position:relative;text-decoration:none;transition:color .2s}.nav-links a:hover{color:#2563eb;color:var(--link)}.nav-links a.active{color:#1f2328;color:var(--fg)}.nav-links a.active:after{bottom:-8px;content:"";height:2px;left:0;position:absolute;right:0}.nav-cta,.nav-links a.active:after{background:#2563eb;background:var(--link)}.nav-cta{border-radius:.375rem;color:#fff!important;font-weight:600;padding:.5rem 1.25rem;transition:all .2s}.nav-cta:hover{background:#1d4ed8;transform:translateY(-1px)}body:before{background:radial-gradient(1200px 600px at 50% -10%,#0000000f,#0000 60%),radial-gradient(1200px 600px at 50% 110%,#0000000f,#0000 60%);content:"";inset:0;pointer-events:none;position:fixed}.container{background:#fff;background:var(--card);border:1px solid #00000008;border-radius:1rem;box-shadow:0 8px 32px #0000000f;margin:2rem auto;max-width:1200px;max-width:var(--maxw);padding:2rem 2.5rem}.back-link-wrapper{margin-bottom:1rem}.back-link{color:#2563eb;color:var(--link);font-size:.95rem;text-decoration:none;transition:color .2s}.back-link:hover{color:#1d4ed8;text-decoration:underline}.post-list{grid-gap:1.5rem;display:grid;gap:1.5rem;list-style:none;margin:2rem 0;padding:0}.post-item h2{font-size:1.3rem;letter-spacing:-.01em;margin:0}.post-item a{color:#2563eb;color:var(--link);text-decoration:none}.post-item a:hover{text-decoration:underline}.post-item time{color:#6b7280;color:var(--muted);display:block;font-size:.95rem;margin-top:.25rem}.excerpt{color:#374151;margin:.5rem 0 0}.post{margin-top:1.5rem}.post h1{letter-spacing:-.02em;margin-bottom:.25rem}.post time{color:#6b7280;color:var(--muted);display:block;margin-bottom:1rem}.post-body code{background-color:#f3f4f6;border-radius:3px;color:#1f2328;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.9em;padding:.2em .4em}.post-body pre{background-color:#f6f8fa;border:1px solid #d0d7de;border-radius:6px;margin:1em 0;overflow-x:auto;padding:16px}.post-body pre code{background:none;border:none;color:inherit;font-size:.9em;line-height:1.5;padding:0}.post-body a{color:#2563eb;color:var(--link)}.post-body h2,.post-body h3,.post-body h4,.post-body h5,.post-body h6{font-weight:600;letter-spacing:-.01em;line-height:1.3;margin-bottom:1rem;margin-top:2rem}.post-body h2{border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border);font-size:1.8rem;padding-bottom:.5rem}.post-body h3{font-size:1.4rem}.post-body h4{font-size:1.2rem}.post-body h5{font-size:1.1rem}.post-body h6{font-size:1rem}.post-body p{margin:1rem 0}.site-footer{border-top:1px solid #e5e7eb;border-top:1px solid var(--border);color:#6b7280;color:var(--muted);font-size:.95rem;margin-top:3rem;padding-top:2rem;text-align:center}.footer-links{margin-bottom:2rem}.footer-link{color:#2563eb;color:var(--link);font-size:1rem;font-weight:500;text-decoration:none}.footer-link:hover{text-decoration:underline}.footer-brand{margin-bottom:1rem}.footer-logo{height:200px;margin:0 auto .75rem;width:auto}.footer-tagline{color:#6b7280;color:var(--muted);font-size:.9rem;font-style:italic;margin:.5rem 0}.footer-copyright{font-size:.875rem;margin:0}.services-intro{margin:2rem 0 3rem;text-align:center}.services-intro h2{font-size:2rem;letter-spacing:-.02em;margin-bottom:.5rem}.services-intro p{color:#6b7280;color:var(--muted);font-size:1.1rem;margin:0 auto;max-width:600px}.services-grid{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(2,minmax(280px,1fr));margin:2rem 0 3rem}.service-card{background:#fff;background:var(--card);border:1px solid #e5e7eb;border:1px solid var(--border);border-radius:.75rem;box-shadow:0 2px 8px #0000000a;padding:2rem;transition:all .3s ease}.service-card:hover{border-color:#2563eb;border-color:var(--link);box-shadow:0 8px 24px #0000001f;transform:translateY(-4px)}.service-icon{font-size:3rem;line-height:1}.service-icon,.service-icon-img{display:block;margin-bottom:1rem}.service-icon-img{height:100px;object-fit:contain;width:100px}.service-card h3{color:#1f2328;color:var(--fg);font-size:1.3rem;letter-spacing:-.01em;margin:0 0 1rem}.service-description{color:#374151;line-height:1.6;margin-bottom:1.25rem}.service-features{display:flex;flex-direction:column;gap:.5rem;list-style:none;margin:0;padding:0}.service-features li{color:#6b7280;color:var(--muted);font-size:.9rem;padding-left:1.25rem;position:relative}.service-features li:before{color:#2563eb;color:var(--link);content:"✓";font-weight:700;left:0;position:absolute}.cta-section{background:linear-gradient(135deg,#2563eb0d,#22d3ee0d);border:1px solid #2563eb1a;border-radius:1rem;margin:4rem 0 3rem;padding:3rem 2rem;text-align:center}.cta-section h3{font-size:1.8rem;letter-spacing:-.02em;margin:0 0 .5rem}.cta-section p{color:#6b7280;color:var(--muted);font-size:1.1rem;margin:0 0 1.5rem}.cta-button{background:#2563eb;background:var(--link);border-radius:.5rem;box-shadow:0 4px 12px #2563eb33;color:#fff;display:inline-block;font-size:1rem;font-weight:600;padding:.875rem 2rem;text-decoration:none;transition:all .2s ease}.cta-button:hover{background:#1d4ed8;box-shadow:0 6px 20px #2563eb4d;transform:translateY(-2px)}.case-studies-header{margin:2rem 0 3rem;text-align:center}.case-studies-header h1{font-size:2.2rem;letter-spacing:-.02em;margin-bottom:.5rem}.case-studies-header p{color:#6b7280;color:var(--muted);font-size:1.1rem;margin:0 auto;max-width:600px}.hero-bleed{background:radial-gradient(1200px 600px at 20% -10%,#2563eb2e,#0000 50%),radial-gradient(1200px 600px at 80% 110%,#22d3ee2e,#0000 55%),linear-gradient(180deg,#f1f5f9,#e2e8f0);border-bottom:1px solid #0000000f;padding:4.5rem 2rem 3.25rem;width:100%}.hero-inner{align-items:center;display:flex;gap:3rem;justify-content:space-between;margin:0 auto;max-width:1200px}.hero-content{flex:1 1;text-align:left}.hero-logo{flex-shrink:0}.hero-logo img{height:200px;opacity:.9;width:auto}.hero-kicker{background:#2563eb1a;border:1px solid #2563eb26;border-radius:999px;color:#2563eb;display:inline-block;font-size:.85rem;letter-spacing:.12em;margin-bottom:.75rem;padding:.25rem .6rem;text-transform:uppercase}.hero-bleed h1{background:linear-gradient(90deg,#111827,#1f2937 40%,#2563eb 90%);-webkit-background-clip:text;background-clip:text;color:#0000;font-size:clamp(1.8rem,4vw,2.6rem);font-weight:800;letter-spacing:-.02em;margin:0 0 .5rem}.hero-bleed p{color:#475569;font-size:1.05rem;margin:0}.post-layout{grid-gap:3rem;align-items:start;display:grid;gap:3rem;grid-template-columns:240px 1fr}.toc{max-height:calc(100vh - 4rem);overflow-y:auto;position:-webkit-sticky;position:sticky;top:2rem}.toc-title{color:#6b7280;color:var(--muted);font-size:.875rem;font-weight:600;letter-spacing:.05em;margin:0 0 1rem;text-transform:uppercase}.toc ul{list-style:none;padding:0}.toc ul,.toc-item{margin:0}.toc-item a{border-left:2px solid #0000;color:#6b7280;color:var(--muted);display:block;font-size:.875rem;padding:.4rem 0 .4rem .75rem;text-decoration:none;transition:all .2s}.toc-item a.active,.toc-item a:hover{border-left-color:#2563eb;border-left-color:var(--link);color:#2563eb;color:var(--link)}.toc-item a.active{font-weight:500}.toc-level-3 a{padding-left:1.5rem}.toc-level-4 a{font-size:.8125rem;padding-left:2.25rem}.post-body img{border-radius:.5rem;box-shadow:0 2px 8px #0000001a;display:block;height:auto;margin:1.5rem 0;max-width:100%}.post,.post-body{min-width:0;overflow-x:hidden}.lightbox-overlay{animation:fadeIn .2s ease-in-out;background:#000000e6;bottom:0;cursor:zoom-out;left:0;position:fixed;right:0;top:0;z-index:9999}.lightbox-content,.lightbox-overlay{align-items:center;display:flex;justify-content:center}.lightbox-content{max-height:95vh;max-width:95vw;position:relative}.lightbox-content img{border-radius:0;box-shadow:0 10px 50px #00000080;height:auto;margin:0;max-height:95vh;max-width:100%;object-fit:contain;width:auto}.lightbox-close{align-items:center;background:none;border:none;color:#fff;cursor:pointer;display:flex;font-size:3rem;height:40px;justify-content:center;line-height:1;padding:0;position:absolute;right:0;top:-40px;transition:opacity .2s;width:40px}.lightbox-close:hover{opacity:.7}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.category-filter{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center;margin:2rem 0}.filter-btn{background:#fff;background:var(--card);border:2px solid #e5e7eb;border:2px solid var(--border);border-radius:.5rem;color:#6b7280;color:var(--muted);cursor:pointer;font-size:.95rem;font-weight:500;padding:.625rem 1.5rem;transition:all .2s ease}.filter-btn:hover{color:#2563eb;color:var(--link);transform:translateY(-1px)}.filter-btn.active,.filter-btn:hover{border-color:#2563eb;border-color:var(--link)}.filter-btn.active{background:#2563eb;background:var(--link);box-shadow:0 4px 12px #2563eb33;color:#fff}.post-category-badge{background:#2563eb1a;border:1px solid #2563eb26;border-radius:.25rem;color:#2563eb;color:var(--link);display:inline-block;font-size:.75rem;font-weight:600;letter-spacing:.05em;margin-top:.5rem;padding:.25rem .625rem;text-transform:uppercase}.empty-state{color:#6b7280;color:var(--muted);padding:3rem 2rem;text-align:center}.empty-state p{font-size:1.1rem;margin-bottom:1.5rem}.empty-state ul{list-style:none;margin:1rem 0;padding:0}.empty-state li{background:#2563eb0d;border-left:3px solid #2563eb;border-left:3px solid var(--link);border-radius:.25rem;margin:.5rem auto;max-width:500px;padding:.75rem;text-align:left}@media (prefers-color-scheme:dark){:root{--fg:#f1f5f9;--muted:#94a3b8;--link:#60a5fa;--bg:linear-gradient(180deg,#0f172a,#1e293b);--card:#1f2937;--border:#334155}body{background:linear-gradient(180deg,#f8fafc,#f1f5f9);background:var(--bg)}.main-nav{background:#1f2937;border-bottom-color:#334155}.main-nav.scrolled{box-shadow:0 2px 8px #0006}.nav-toggle span{background:#1f2328;background:var(--fg)}@media (max-width:768px){.nav-links{background:#1f2937}}.excerpt{color:#cbd5e1}.container{box-shadow:0 8px 32px #0006}body:before{background:radial-gradient(1200px 600px at 50% -10%,#ffffff0f,#0000 60%),radial-gradient(1200px 600px at 50% 110%,#ffffff0f,#0000 60%)}.post-body code{background-color:#1e293b;color:#e2e8f0}.post-body pre{background-color:#0f172a;border-color:#334155}.post-body pre code{background:none;color:#e2e8f0}.post-body img{border:1px solid #334155;box-shadow:0 2px 8px #0000004d}.hero-bleed{background:radial-gradient(1200px 600px at 20% -10%,#93c5fd2e,#0000 50%),radial-gradient(1200px 600px at 80% 110%,#22d3ee2e,#0000 55%),linear-gradient(180deg,#0f172a,#0b1220);border-bottom-color:#ffffff0f}.hero-bleed p{color:#94a3b8}.hero-bleed h1{background:linear-gradient(90deg,#f1f5f9,#cbd5e1 40%,#60a5fa 90%);-webkit-background-clip:text;background-clip:text}.hero-kicker{background:#60a5fa26;border-color:#60a5fa40;color:#93c5fd}.service-card{background:#1e293b;border-color:#334155;box-shadow:0 2px 8px #0003}.service-card:hover{box-shadow:0 8px 24px #0006}.service-description{color:#cbd5e1}.cta-section{background:linear-gradient(135deg,#60a5fa1a,#22d3ee1a);border-color:#60a5fa33}.cta-button{background:#60a5fa;box-shadow:0 4px 12px #60a5fa4d}.cta-button:hover{background:#3b82f6;box-shadow:0 6px 20px #60a5fa66}.filter-btn{background:#1e293b;border-color:#334155}.filter-btn.active{background:#60a5fa;border-color:#60a5fa}.post-category-badge{background:#60a5fa26;border-color:#60a5fa40;color:#93c5fd}.empty-state li{background:#60a5fa1a;border-left-color:#60a5fa}}@media (max-width:1100px){.post-layout{grid-template-columns:1fr}.toc{display:none}}@media (max-width:768px){body{padding-top:60px}.nav-container{height:60px;padding:0 1rem}.nav-logo{height:35px}.nav-brand-text{font-size:1rem}.nav-toggle{display:flex}.nav-links{background:#fff;border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border);box-shadow:0 4px 12px #0000001a;flex-direction:column;gap:1rem;left:0;opacity:0;padding:1.5rem;pointer-events:none;position:fixed;right:0;top:60px;transform:translateY(-100%);transition:all .3s ease}.nav-links.open{opacity:1;pointer-events:all;transform:translateY(0)}.nav-links a{font-size:1.1rem;padding:.5rem 0}.nav-links a.active:after{display:none}.nav-cta{padding:.75rem 1.25rem;text-align:center;width:100%}.footer-logo{height:80px}.container{border-radius:.5rem;margin:1rem;padding:1.5rem 1rem}.hero-bleed{padding:3rem 1rem 2rem}.hero-inner{flex-direction:column;gap:2rem}.hero-content,.hero-inner{text-align:center}.hero-logo img{height:120px}.services-grid{gap:1.5rem;grid-template-columns:1fr}.services-intro h2{font-size:1.6rem}.services-intro p{font-size:1rem}.service-card{padding:1.5rem}.service-icon{font-size:2.5rem}.cta-section{padding:2rem 1.5rem}.cta-section h3{font-size:1.5rem}.cta-section p{font-size:1rem}.case-studies-header h1{font-size:1.8rem}.case-studies-header p{font-size:1rem}.post-body{overflow-x:hidden}.post-body pre{border-radius:0;margin-left:-1rem;margin-right:-1rem;max-width:calc(100vw - 2rem);padding:1rem}.post h1{word-wrap:break-word;font-size:1.75rem;line-height:1.2}.post-item h2{font-size:1.1rem}.post-body li,.post-body p{word-wrap:break-word;overflow-wrap:break-word}.post-body code{word-break:break-word}.post-body img{border-radius:0;margin-left:-1rem;margin-right:-1rem;max-width:calc(100% + 2rem);width:calc(100% + 2rem)}.lightbox-close{background:#00000080;border-radius:50%;font-size:2rem;right:10px;top:10px}.category-filter{align-items:stretch;flex-direction:column;gap:.75rem}.filter-btn{font-size:1rem;padding:.875rem 1.5rem;width:100%}}@media (max-width:480px){.container{margin:.5rem;padding:1rem .75rem}.site-header .brand{flex-direction:column;gap:.25rem}.post h1{font-size:1.5rem}.service-icon{font-size:2rem}.hero-logo img{height:100px}}.series-card-link{color:inherit;display:block;text-decoration:none}.series-card{cursor:pointer;transition:all .3s ease}.series-icon-large{font-size:4rem;line-height:1;margin-bottom:1rem;text-align:center}.series-meta{border-top:1px solid #e5e7eb;border-top:1px solid var(--border);margin-top:1rem;padding-top:1rem}.series-navigation{background:linear-gradient(135deg,#2563eb0d,#22d3ee0d);border:1px solid #2563eb1a;border-radius:.75rem;margin:2rem 0;padding:1.5rem}.series-nav-header{color:#6b7280;color:var(--muted);font-size:.875rem;letter-spacing:.05em;margin-bottom:1rem;text-align:center;text-transform:uppercase}.series-nav-links{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:1fr 1fr}.series-nav-link{background:#fff;background:var(--card);border:2px solid #e5e7eb;border:2px solid var(--border);border-radius:.5rem;color:#2563eb;color:var(--link);display:block;font-weight:500;padding:1rem;text-decoration:none;transition:all .2s ease}.series-nav-link:hover{border-color:#2563eb;border-color:var(--link);box-shadow:0 4px 12px #2563eb26;transform:translateY(-2px)}.series-nav-link.prev{text-align:left}.series-nav-link.next{text-align:right}@media (prefers-color-scheme:dark){.series-navigation{background:linear-gradient(135deg,#60a5fa1a,#22d3ee1a);border-color:#60a5fa33}.series-nav-link{background:#1e293b;border-color:#334155}.series-nav-link:hover{border-color:#60a5fa;box-shadow:0 4px 12px #60a5fa40}}@media (max-width:768px){.series-nav-links{grid-template-columns:1fr}.series-nav-link.next,.series-nav-link.prev{text-align:center}.series-icon-large{font-size:3rem}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}
/*!
  Theme: StackOverflow Light
  Description: Light theme as used on stackoverflow.com
  Author: stackoverflow.com
  Maintainer: @Hirse
  Website: https://github.com/StackExchange/Stacks
  License: MIT
  Updated: 2021-05-15

  Updated for @stackoverflow/stacks v0.64.0
  Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less
  Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less
*/.hljs{background:#f6f6f6}.hljs,.hljs-subst{color:#2f3337}.hljs-comment{color:#656e77}.hljs-attr,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-section,.hljs-selector-tag{color:#015692}.hljs-attribute{color:#803378}.hljs-name,.hljs-number,.hljs-quote,.hljs-selector-id,.hljs-template-tag,.hljs-type{color:#b75501}.hljs-selector-class{color:#015692}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-string,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#54790d}.hljs-meta,.hljs-selector-pseudo{color:#015692}.hljs-built_in,.hljs-literal,.hljs-title{color:#b75501}.hljs-bullet,.hljs-code{color:#535a60}.hljs-meta .hljs-string{color:#54790d}.hljs-deletion{color:#c02d2e}.hljs-addition{color:#2f6f44}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
/*# sourceMappingURL=main.d96baf25.css.map*/