.blog-measure{--measure:68ch}.native-site:has(.blog-shell){overflow-x:clip}.blog-progress{background:var(--cp-green);z-index:60;width:0;height:2px;transition:width 80ms linear;position:fixed;top:0;left:0}.blog-hero{max-width:var(--cp-max);margin:0 auto;padding:56px 24px 0}.blog-hero-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:center;gap:52px;margin-bottom:6px;display:grid}.blog-cover{aspect-ratio:16/9;object-fit:cover;border:1px solid var(--cp-line);border-radius:12px;width:100%;height:auto;display:block}.blog-crumb{color:var(--cp-dim);margin-bottom:22px;font-size:12.5px}.blog-crumb a{color:var(--cp-dim);text-decoration:none}.blog-crumb a:hover{color:var(--cp-muted)}.blog-eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--cp-green);background:var(--cp-green-soft);border-radius:5px;margin-bottom:20px;padding:5px 11px;font-size:11.5px;display:inline-block}.blog-title{letter-spacing:-.025em;margin:0 0 18px;font-size:clamp(30px,3.6vw,44px);font-weight:600;line-height:1.13}.blog-lead{color:var(--cp-muted);margin:0;font-family:Georgia,Times New Roman,serif;font-size:19px;line-height:1.6}.blog-meta{border-top:1px solid var(--cp-line);border-bottom:1px solid var(--cp-line);color:var(--cp-muted);flex-wrap:wrap;align-items:center;gap:14px;margin-top:34px;padding:16px 0;font-size:13.5px;display:flex}.blog-avatar{border:1px solid var(--cp-line-strong);background:#0f0f0f url(/coderpush-mark.svg) 50%/58% no-repeat;border-radius:50%;flex:none;width:34px;height:34px}.blog-meta .who{color:var(--cp-text);font-weight:500}.blog-meta .dot{color:var(--cp-line-strong)}.blog-shell{max-width:var(--cp-max);grid-template-columns:190px minmax(0,1fr) 230px;align-items:start;gap:56px;margin:0 auto;padding:44px 24px 100px;display:grid}.blog-toc{position:sticky;top:96px}.blog-toc-h{letter-spacing:.1em;text-transform:uppercase;color:var(--cp-dim);margin-bottom:12px;font-size:10.5px}.blog-toc-list{border-left:1px solid var(--cp-line)}.blog-toc a{color:var(--cp-dim);white-space:nowrap;text-overflow:ellipsis;border-left:2px solid #0000;margin-left:-1px;padding:6px 0 6px 12px;font-size:12.5px;line-height:1.35;text-decoration:none;transition:color .15s,border-color .15s;display:block;overflow:hidden}.blog-toc a:hover{color:var(--cp-muted)}.blog-toc a.is-active{color:var(--cp-green);border-left-color:var(--cp-green)}.blog-toc a.is-sub{color:#5f6659;opacity:0;pointer-events:none;max-height:0;padding-top:0;padding-bottom:0;padding-left:22px;font-size:12px;transition:max-height .22s,opacity .18s,padding .22s,color .15s}.blog-toc a.is-sub.is-shown{opacity:1;pointer-events:auto;max-height:30px;padding-top:5px;padding-bottom:5px}.blog-toc a.is-sub:hover{color:var(--cp-muted)}.blog-toc-count{color:var(--cp-dim);margin-top:12px;padding-left:12px;font-size:11px}.blog-prose{max-width:var(--measure,68ch);color:#e4e8dd;font-size:18.5px;line-height:1.75}.blog-prose>p{margin:0 0 1.5rem}.blog-prose h2{letter-spacing:-.015em;margin:3.4rem 0 1.1rem;scroll-margin-top:100px;font-size:29px;font-weight:600;line-height:1.25}.blog-prose h3{color:var(--cp-text);margin:2.4rem 0 .8rem;scroll-margin-top:100px;font-size:21px;font-weight:600;line-height:1.35}.blog-prose h2:first-child,.blog-prose h3:first-child{margin-top:0}.blog-prose a{color:var(--cp-green);border-bottom:1px solid #81c82854;padding-bottom:1px;text-decoration:none}.blog-prose a:hover{border-bottom-color:var(--cp-green)}.blog-prose strong{color:#fff;font-weight:600}.blog-prose ul,.blog-prose ol{margin:0 0 1.5rem;padding-left:1.35em}.blog-prose li{margin-bottom:.6rem;padding-left:.2em}.blog-prose li::marker{color:var(--cp-green-dark)}.blog-prose img{border:1px solid var(--cp-line);border-radius:10px;max-width:100%;height:auto;margin:2rem 0}.blog-prose blockquote{border-left:3px solid var(--cp-green-dark);color:var(--cp-muted);margin:2rem 0;padding:0 0 0 22px;font-family:Georgia,Times New Roman,serif;font-size:20px;font-style:italic}.blog-prose hr{border:0;border-top:1px solid var(--cp-line);margin:3rem 0}.blog-prose table{border-collapse:collapse;width:100%;margin:2rem 0;font-size:15.5px}.blog-prose th,.blog-prose td{border:1px solid var(--cp-line);text-align:left;padding:11px 14px}.blog-prose th{background:var(--cp-surface);font-weight:500}.blog-prose code{background:var(--cp-surface-2);border-radius:4px;padding:2px 6px;font-size:.88em}.blog-inline-cta{background:var(--cp-surface);border:1px solid var(--cp-line);border-left:3px solid var(--cp-green);border-radius:0 10px 10px 0;margin:2.75rem 0;padding:22px 24px}.blog-inline-cta p{color:var(--cp-muted);margin:0 0 14px;font-size:16px;line-height:1.6}.blog-inline-cta a{background:var(--cp-green);color:#0b1405;border-radius:6px;padding:9px 17px;font-size:14px;font-weight:500;text-decoration:none;display:inline-block}.blog-rail{flex-direction:column;gap:18px;display:flex;position:sticky;top:96px}.blog-card{background:var(--cp-surface);border:1px solid var(--cp-line);border-radius:10px;padding:18px}.blog-card h4{margin:0 0 8px;font-size:14.5px;font-weight:600}.blog-card p{color:var(--cp-muted);margin:0 0 14px;font-size:13px;line-height:1.6}.blog-card .btn{text-align:center;background:var(--cp-green);color:#0b1405;border-radius:6px;padding:9px;font-size:13px;font-weight:500;text-decoration:none;display:block}.blog-card .ghost{text-align:center;border:1px solid var(--cp-line-strong);color:var(--cp-muted);border-radius:6px;margin-top:8px;padding:9px;font-size:13px;text-decoration:none;display:block}.blog-card .ghost:hover{color:var(--cp-text);border-color:var(--cp-muted)}.blog-after{max-width:var(--cp-max);margin:0 auto;padding:0 24px 90px}.blog-after-in{max-width:var(--measure,68ch);margin-left:246px}.blog-author{background:var(--cp-surface);border:1px solid var(--cp-line);border-radius:10px;gap:16px;margin-bottom:52px;padding:22px;display:flex}.blog-author .blog-avatar{width:48px;height:48px}.blog-author h4{margin:0 0 5px;font-size:15px;font-weight:600}.blog-author p{color:var(--cp-muted);margin:0;font-size:13.5px;line-height:1.6}.blog-rel-h{letter-spacing:.07em;text-transform:uppercase;color:var(--cp-dim);margin-bottom:20px;font-size:13px}.blog-rel{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.blog-rel a{background:var(--cp-surface);border:1px solid var(--cp-line);border-radius:10px;padding:18px;text-decoration:none;transition:border-color .15s;display:block}.blog-rel a:hover{border-color:var(--cp-line-strong)}.blog-rel .k{letter-spacing:.05em;text-transform:uppercase;color:var(--cp-green);margin-bottom:9px;font-size:11px;display:block}.blog-rel .t{color:var(--cp-text);margin-bottom:9px;font-size:14.5px;font-weight:500;line-height:1.4;display:block}.blog-rel .m{color:var(--cp-dim);font-size:12px}@media (max-width:1180px){.blog-hero-grid{grid-template-columns:1fr;gap:28px}.blog-shell{grid-template-columns:minmax(0,1fr);gap:0}.blog-toc{border-bottom:1px solid var(--cp-line);margin-bottom:36px;padding-bottom:26px;position:static}.blog-rail{margin-top:48px;position:static}.blog-after-in{margin-left:0}.blog-rel{grid-template-columns:1fr}}@media (max-width:640px){.blog-prose{font-size:17px}.blog-title{font-size:28px}}@media (prefers-reduced-motion:reduce){.blog-progress,.blog-toc a,.blog-toc a.is-sub{transition:none}}
