.blog{--cat-insights:#1f57d6;--cat-product:#0e7f86;--cat-engineering:#7b3fa0;--cat-company:#e8a100;--cat-manifesto:#111418}.blog .line-key{flex:none;width:24px;height:12px;display:inline-block}.blog .cv{aspect-ratio:var(--cv-ar-a);isolation:isolate;background:#dcdcd4;border-radius:10px;position:relative;overflow:hidden;container-type:inline-size}.blog .cv picture,.blog .cv img{width:100%;height:100%;display:block}.blog .cv img{object-fit:cover;object-position:var(--cv-pos-a);border-radius:0}.blog .cv .cv-svg{width:100%;height:100%;position:absolute;inset:0}.blog .cv .cv-b{display:none}.blog .cv-labels{pointer-events:none;position:absolute;inset:0}.blog .cv-label{color:var(--t-ink);font-family:var(--font-mono);white-space:nowrap;background:#fbfbf8f0;border-radius:4px;padding:2px 7px;font-size:13px;line-height:1.35;position:absolute;transform:translate(-50%,17px)}.blog .cv-label[data-side=above]{transform:translate(-50%,calc(-100% - 17px))}.blog .cv-label[data-side=right]{transform:translate(19px,-50%)}.blog .cv-label[data-side=left]{transform:translate(calc(-100% - 19px),-50%)}.blog .cv-label[data-side=above-left]{transform:translate(calc(-100% - 8px),calc(-100% - 10px))}.blog .cv-label[data-side=above-right]{transform:translate(8px,calc(-100% - 10px))}.blog .cv-label[data-side=below-left]{transform:translate(calc(-100% - 8px),10px)}.blog .cv-label[data-side=below-right]{transform:translate(8px,10px)}@container (width<=559px){.blog .cv-labels{display:none}}@media (width<=760px){.blog .cv.has-b{aspect-ratio:var(--cv-ar-b)}.blog .cv.has-b img{object-position:var(--cv-pos-b)}.blog .cv.has-b .cv-a,.blog .cv.has-b .cv-labels{display:none}.blog .cv.has-b .cv-b{display:block}}@media (prefers-reduced-motion:no-preference){html.js .blog .cv-draw .cv-a path[pathLength]{stroke-dasharray:1 1;stroke-dashoffset:1px;animation:cv-draw .9s cubic-bezier(.3, .7, .2, 1) calc(.25s + var(--i,0) * .22s) both}html.js .blog .cv-draw .cv-a .cv-marks>*,html.js .blog .cv-draw .cv-a .cv-casing>:not([pathLength]){animation:cv-fade .35s ease-out calc(.95s + var(--i,0) * .22s) both}html.js .blog .cv-draw .cv-label{animation:cv-fade .35s ease-out calc(1.5s + var(--i,0) * 70ms) both}}@keyframes cv-draw{to{stroke-dashoffset:0}}@keyframes cv-fade{0%{opacity:0}}.blog.bi-page{min-height:calc(100vh - 154px)}.blog .bi{padding-top:clamp(56px,6.6vw,96px);padding-bottom:calc(var(--v3-sec) + 72px)}.blog .bi-head{margin-bottom:var(--v3-head);grid-template-columns:minmax(0,1fr) auto;gap:20px 32px;display:grid}.blog .bi-title{grid-column:1/-1}.blog .bi-statement{max-width:544px}.blog .bi-statement.bi-line{max-width:720px}.blog .bi-empty{margin:0}.blog .bi-feed{font-family:var(--font-mono);font-size:var(--v3-fs-mono-label);align-self:end;margin:0;line-height:1.35}.blog .bi-feed a{color:var(--t-muted);text-underline-offset:4px;text-decoration:none;text-decoration-color:var(--t-green);align-items:center;gap:8px;display:inline-flex}.blog .bi-feed a:hover,.blog .bi-feed a:focus-visible{color:var(--t-ink);text-decoration-line:underline}@media (width<=760px){.blog.bi-page{min-height:calc(100vh - 214px)}.blog .bi-head{grid-template-columns:minmax(0,1fr);row-gap:16px}.blog .bi-feed{align-self:start}}.blog .pl{--ring-y:16px;--row-gap:48px;margin:0;padding:0;list-style:none;position:relative}.blog .pl-row{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:32px;display:grid;position:relative}.blog .pl-row+.pl-row{margin-top:var(--row-gap)}.blog .pl-meta{font-family:var(--font-mono);font-size:var(--v3-fs-mono-label);color:var(--t-muted);flex-direction:column;grid-area:1/1/auto/3;gap:2px;margin:0;padding-top:6px;line-height:1.35;display:flex}.blog .pl-year{color:var(--t-ink);margin-bottom:6px;font-weight:600}.blog .pl-draft{color:var(--t-orange-text)}.blog .pl-cat{align-items:center;gap:8px;display:inline-flex}.blog .pl-stop{grid-area:1/3/auto/4;justify-self:center;width:28px;position:relative}.blog .pl-stop:before{content:"";width:6px;left:11px;top:var(--ring-y);bottom:calc(-1 * (var(--row-gap) + var(--ring-y)));background:var(--t-green);position:absolute}.blog .pl-row.is-last .pl-stop:before{border-radius:0 0 3px 3px;height:40px;bottom:auto}.blog .pl-ring{top:calc(var(--ring-y) - 14px);transition:background-color .2s var(--e-state);position:absolute;left:0}.blog .pl-row:hover .pl-ring,.blog .pl-row:focus-within .pl-ring{background:var(--t-green)}.blog .pl-series .pl-row.is-last .pl-stop:before{display:none}.blog .pl-part{color:var(--t-ink);font-weight:600}.blog .pl-row.is-soon .pl-ring{border-color:var(--t-gray-line)}.blog .pl-row.is-soon:hover .pl-ring{background:var(--t-bg)}.blog .pl-soon{color:var(--t-muted);margin:0}.blog .pl-tail{left:11px;top:calc(var(--ring-y) + 48px);flex-direction:column;gap:8px;display:flex;position:absolute}.blog .pl-tail i{background:var(--t-green);border-radius:50%;width:6px;height:6px}.blog .pl-tail i:first-child{opacity:.62}.blog .pl-tail i:nth-child(2){opacity:.46}.blog .pl-tail i:nth-child(3){opacity:.32}.blog .pl-tail i:nth-child(4){opacity:.2}.blog .pl-tail i:nth-child(5){opacity:.1}.blog .pl-main{grid-area:1/4/auto/11;min-width:0}.blog .pl-row.has-cover .pl-main{grid-column:4/9}.blog .pl-cover{pointer-events:none;grid-area:1/9/auto/13;align-self:start;margin-top:4px}.blog .pl-cover .cv{border-radius:8px}.blog .pl-credit{color:var(--t-muted);text-wrap:pretty;margin:8px 0 0;font-size:12px;line-height:1.45}.blog .pl-credit cite{font-style:italic}.blog .pl-credit a{z-index:1;pointer-events:auto;color:inherit;text-underline-offset:3px;text-decoration:underline 1px;text-decoration-color:var(--t-rule-2);position:relative}.blog .pl-credit a:hover,.blog .pl-credit a:focus-visible{color:var(--t-ink);text-decoration-color:currentColor}.blog .pl-title{max-width:600px;font-size:var(--v3-fs-statement);letter-spacing:-.015em;color:var(--t-ink);text-wrap:pretty;margin:0;font-weight:600;line-height:1.3}.blog .pl-title a{color:inherit;text-underline-offset:5px;text-decoration:none;text-decoration-color:var(--t-green)}.blog .pl-title a:after{content:"";border-radius:10px;position:absolute;inset:-12px -16px}.blog .pl-title a:hover,.blog .pl-title a:focus-visible{text-decoration-line:underline}.blog .pl-title a:focus-visible{outline:none}.blog .pl-title a:focus-visible:after{outline:2px solid var(--t-ink);outline-offset:0}.blog .pl-dek{max-width:600px;font-size:var(--v3-fs-body);letter-spacing:-.005em;color:var(--t-muted);text-wrap:pretty;margin:8px 0 0;line-height:1.55}@media (width<=899px){.blog .pl{--row-gap:44px;--ring-y:10px}.blog .pl-row{grid-template-columns:28px minmax(0,1fr);column-gap:20px}.blog .pl-stop{grid-area:1/1/span 3;justify-self:stretch}.blog .pl-meta{flex-flow:wrap;grid-area:1/2;gap:0;padding-top:0}.blog .pl-meta>:not(:last-child):after{content:"·";color:var(--t-gray-line);margin:0 8px}.blog .pl-year{display:none}.blog .pl-main,.blog .pl-row.has-cover .pl-main{grid-area:3/2;margin-top:8px}.blog .pl-cover{grid-area:2/2;max-width:560px;margin-top:14px}.blog .pl-row.has-cover .pl-main{margin-top:16px}.blog .pl-title a:after{inset:-40px -8px -12px -56px}}.blog .post{padding-top:clamp(40px,5vw,72px)}.blog .post-grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:32px;display:grid}.blog .post-back{grid-area:1/1/auto/4;margin:0}.blog .post-back .v3-link{height:20px;color:var(--t-muted);gap:8px;font-weight:600}.blog .post-back .v3-link:hover,.blog .post-back .v3-link:focus-visible{color:var(--t-ink)}.blog .ph{grid-area:1/4/auto/13;margin-bottom:40px}.blog .post-aside{grid-area:2/1/auto/4}.blog .post-main{grid-area:2/4/auto/13;min-width:0}.blog .ph-meta{font-family:var(--font-mono);font-size:var(--v3-fs-mono-label);color:var(--t-muted);flex-wrap:wrap;column-gap:10px;margin:0;line-height:1.35;display:flex}.blog .ph-sep{color:var(--t-gray-line)}.blog .ph-cat{align-items:center;gap:8px;display:inline-flex}.blog .ph-draft{font-family:var(--font-mono);font-size:var(--v3-fs-mono-label);color:var(--t-orange-text);margin:0 0 8px;line-height:1.35}.blog .ph-title{max-width:832px;font-size:var(--v3-fs-h2);letter-spacing:-.04em;color:var(--t-ink);text-wrap:balance;margin-top:20px;font-weight:800;line-height:1.02}.blog .ph-by{font-size:var(--v3-fs-small);margin:20px 0 0;font-weight:600;line-height:1.3}.blog .ph-by a{color:var(--t-ink);text-underline-offset:4px;text-decoration:underline 2px;text-decoration-color:var(--t-green)}.blog .ph-cover{max-width:832px;margin:36px 0 0}.blog .ph-cap{flex-direction:column;gap:4px;margin-top:12px;display:flex}.blog .ph-cap-line{font-size:var(--v3-fs-small);color:var(--t-ink-2);text-wrap:pretty;align-items:baseline;gap:10px;line-height:1.45;display:flex}.blog .ph-cap .nobr{white-space:nowrap}.blog .ph-cap-line .line-key{position:relative;top:1px}.blog .ph-cap-credit{color:var(--t-muted);text-wrap:pretty;padding-left:34px;font-size:13px;line-height:1.45}.blog .ph-cap>.ph-cap-credit:first-child{padding-left:0}.blog .ph-cap-credit cite{font-style:italic}.blog .ph-cap-credit a{color:inherit;text-underline-offset:3px;text-decoration:underline 1px;text-decoration-color:var(--t-rule-2)}.blog .ph-cap-credit a:hover,.blog .ph-cap-credit a:focus-visible{color:var(--t-ink);text-decoration-color:currentColor}.blog .toc-aside{max-width:224px;position:sticky;top:96px}.blog .toc-label{font-family:var(--font-mono);font-size:var(--v3-fs-mono-label);color:var(--t-muted);margin:0 0 14px;line-height:1.3}.blog .toc-list{border-left:2px solid var(--t-rule);margin:0;padding:0;list-style:none}.blog .toc-list a{font-size:var(--v3-fs-small);color:var(--t-muted);text-wrap:pretty;transition:color .15s var(--e-state), border-color .15s var(--e-state);border-left:2px solid #0000;margin-left:-2px;padding:6px 0 6px 16px;line-height:1.4;text-decoration:none;display:block}.blog .toc-list a:hover{color:var(--t-ink)}.blog .toc-list a[aria-current]{color:var(--t-ink);border-left-color:var(--t-green)}.blog .toc-details{display:none}.blog .prose{letter-spacing:-.005em;color:var(--t-ink-2);font-size:21px;line-height:1.65}.blog .prose>*{max-width:832px;margin:0}.blog .prose>*+*{margin-top:1.1em}.blog .prose p,.blog .prose li{text-wrap:pretty}.blog .prose h2{letter-spacing:-.03em;color:var(--t-ink);text-wrap:balance;margin-top:1.9em;scroll-margin-top:16px;font-size:clamp(24px,1rem + 1.1vw,30px);font-weight:800;line-height:1.15}.blog .prose h3{letter-spacing:-.01em;color:var(--t-ink);text-wrap:balance;margin-top:1.9em;scroll-margin-top:16px;font-size:21px;font-weight:600;line-height:1.3}.blog .prose h2+*,.blog .prose h3+*{margin-top:12px}.blog .prose a{color:var(--t-green-ink);text-underline-offset:3px;text-decoration:underline 1px #007a4a73}.blog .prose a:hover{text-decoration-color:currentColor;text-decoration-thickness:2px}.blog .prose strong{color:var(--t-ink);font-weight:600}.blog .prose ul{padding-left:1.3em}.blog .prose ol{padding-left:1.75em}.blog .prose li+li{margin-top:.4em}.blog .prose ul:has(>li>strong:first-child)>li+li{margin-top:.8em}.blog .prose li::marker{color:var(--t-muted)}.blog .prose ol>li::marker{font-family:var(--font-mono);font-size:.86em}.blog .prose hr{background:var(--t-rule);border:0;height:1px;margin-block:2.4em}.blog .prose img{border-radius:10px;height:auto}.blog .prose blockquote{border-left:2px solid var(--t-green);margin-block:1.6em;padding-left:24px}.blog .prose blockquote p{font-size:var(--v3-fs-statement);letter-spacing:-.015em;color:var(--t-ink);text-wrap:pretty;margin:0;line-height:1.35}.blog .prose blockquote p+p{margin-top:.6em}.blog .prose blockquote cite{font-family:var(--font-mono);font-size:var(--v3-fs-mono-label);letter-spacing:0;color:var(--t-muted);margin-top:12px;font-style:normal;line-height:1.3;display:block}.blog .prose .pull{margin-block:2em;padding:2px 0 4px 48px;position:relative}.blog .prose .pull:before{content:"";background:var(--cat,var(--t-green));border-radius:0 0 3px 3px;width:6px;position:absolute;top:14px;bottom:0;left:11px}.blog .prose .pull:after{content:"";box-sizing:border-box;border:5px solid var(--cat,var(--t-green));background:var(--t-bg);border-radius:50%;width:28px;height:28px;position:absolute;top:0;left:0}.blog .prose .pull p{letter-spacing:-.02em;color:var(--t-ink);text-wrap:balance;margin:0;font-size:clamp(24px,.9rem + 1.1vw,29px);font-weight:600;line-height:1.25}.blog .prose .tldr{margin-bottom:2em;padding:5px 0 4px 48px;position:relative}.blog .prose .tldr:before{content:"";background:var(--t-green);border-radius:0 0 3px 3px;width:6px;position:absolute;top:14px;bottom:0;left:11px}.blog .prose .tldr:after{content:"";box-sizing:border-box;border:5px solid var(--t-green);background:var(--t-bg);border-radius:50%;width:28px;height:28px;position:absolute;top:0;left:0}.blog .prose .tldr-k{font-family:var(--font-mono);font-size:var(--v3-fs-mono-label);letter-spacing:0;color:var(--t-green-ink);margin-bottom:10px;line-height:18px;display:block}.blog .prose .tldr p{letter-spacing:-.02em;color:var(--t-ink);text-wrap:balance;margin:0;font-size:clamp(24px,.9rem + 1.1vw,29px);font-weight:600;line-height:1.25}.blog .prose :not(pre)>code{color:var(--t-ink);white-space:normal;overflow-wrap:anywhere;background:#efefe9;border:0;border-radius:5px;padding:.12em .34em;font-size:.86em}.blog .prose code.nw{white-space:nowrap;overflow-wrap:normal}.blog .prose pre.astro-code{font-family:var(--font-mono);font-size:var(--v3-fs-mono);letter-spacing:0;tab-size:2;scrollbar-width:thin;scrollbar-color:#3a3e48 transparent;border-radius:10px;margin-block:1.6em;padding:20px 24px;line-height:1.6;overflow-x:auto;box-shadow:0 0 0 1px #11141880}.blog .prose pre code{font:inherit}.blog .prose pre.wrap,.blog .prose pre.wrap code{white-space:normal}.blog .prose pre.wrap code{display:block}.blog .prose pre.wrap .line{text-indent:-2ch;white-space:pre-wrap;overflow-wrap:anywhere;min-height:1.6em;padding-left:2ch;display:block}.blog .prose pre:focus-visible{outline:2px solid var(--t-green);outline-offset:2px}.blog .prose .post-win{margin-block:1.6em}.blog .prose .post-policy{letter-spacing:0;margin:0;padding:20px 24px}.blog .prose .post-policy code{font:inherit}.blog .prose .nobr{white-space:nowrap}.blog .prose .fig.is-play [data-from],.blog .prose .fig.is-play [data-until]{transition:opacity .25s}.blog .prose .fig.is-play [data-from]:not(.on),.blog .prose .fig.is-play [data-until]:not(.on){opacity:0}.blog .prose .fig.is-play [data-from].on,.blog .prose .fig.is-play [data-until].on{opacity:1}@media (prefers-reduced-motion:reduce){.blog .prose .fig.is-play [data-from],.blog .prose .fig.is-play [data-until]{transition:none}}.blog .prose .fig-play{align-items:center;gap:16px;margin:18px 0 4px;display:flex}.blog .prose .fig-play-btn{min-width:68px;color:var(--t-ink);font:600 11.5px var(--font-mono);cursor:pointer;background:#fff;border:1px solid #cfcfc8;border-radius:6px;flex:none;padding:4px 11px}.blog .prose .fig-play-bar{cursor:pointer;touch-action:none;flex:1;min-width:0;height:26px;position:relative}.blog .prose .fig-play-line,.blog .prose .fig-play-fill{border-radius:1px;height:2px;position:absolute;top:12px;left:0}.blog .prose .fig-play-line{background:#dcdcd5;right:0}.blog .prose .fig-play-fill{background:#00955a;width:0}.blog .prose .fig-play-knob{background:#00955a;border-radius:50%;width:8px;height:8px;margin-left:-4px;position:absolute;top:9px;left:0}.blog .prose .fig-play-btn:focus-visible,.blog .prose .fig-play-bar:focus-visible{outline:2px solid var(--t-green);outline-offset:2px}.blog .prose pre.fb .fb-tag{color:#3fd18d;font-weight:600}.blog .prose pre.fb .fb-bad{color:#ff7b72;font-weight:600}.blog .prose pre.fb .fb-rule{color:#f2c46d}.blog .prose pre.fb .fb-label{color:#8b9099}.blog .prose pre.astro-code:not(.wrap){background-image:linear-gradient(90deg,#0c0d10 30%,#0c0d1000),linear-gradient(270deg,#0c0d10 30%,#0c0d1000),linear-gradient(90deg,#ffffff24,#fff0),linear-gradient(270deg,#ffffff24,#fff0);background-position:0,100%,0,100%;background-repeat:no-repeat;background-size:24px 100%,24px 100%,12px 100%,12px 100%;background-attachment:local,local,scroll,scroll}.blog .prose .fig{background:var(--v3-panel);border-radius:10px;margin-block:2em;padding:32px}.blog .prose .fig.wide{max-width:832px}.blog .prose .fig>*{margin:0}.blog .prose .fig-eyebrow{font-family:var(--font-mono);font-size:var(--v3-fs-mono-label);letter-spacing:0;color:var(--t-muted);line-height:1.3}.blog .prose .fig-title{font-size:var(--v3-fs-title);letter-spacing:-.01em;color:var(--t-ink);text-wrap:balance;margin-top:10px;font-weight:600;line-height:1.3}.blog .prose .fig-sub{font-size:var(--v3-fs-small);color:var(--t-muted);margin-top:4px;line-height:1.5}.blog .prose .fig>svg,.blog .prose .fig>img,.blog .prose .fig>picture{border-radius:0;width:100%;height:auto;margin-top:28px;display:block}.blog .prose .fig figcaption{border-top:1px solid var(--t-rule);font-size:var(--v3-fs-small);color:var(--t-muted);text-wrap:pretty;margin-top:28px;padding-top:16px;line-height:1.5}.blog .prose .fig>.fig-phone-art{display:none}@media (width<=760px){.blog .prose .fig>.fig-wide-art{display:none}.blog .prose .fig>.fig-phone-art{max-width:300px;display:block}}.blog .prose .art{margin-block:2em}.blog .prose .art img{border-radius:10px;width:100%;height:auto;display:block}.blog .prose .art figcaption{font-size:var(--v3-fs-small);color:var(--t-ink-2);text-wrap:pretty;flex-direction:column;gap:4px;margin-top:12px;line-height:1.45;display:flex}.blog .prose .art .credit{color:var(--t-muted);font-size:13px}.blog .prose .art cite{font-style:italic}.blog .prose .art figcaption a{color:inherit;text-decoration-color:var(--t-rule-2)}.blog .prose .note{background:var(--v3-panel);border-radius:10px;padding:20px 24px}.blog .prose .note>*{margin:0}.blog .prose .note>*+*{margin-top:.5em}.blog .prose .note p{font-size:var(--v3-fs-body);line-height:1.6}.blog .prose .note .note-label{font-family:var(--font-mono);font-size:var(--v3-fs-mono-label);color:var(--t-muted);line-height:1.3}.blog .prose .post-table{scrollbar-width:thin;background-image:linear-gradient(to right, var(--t-bg) 30%, #fbfbf800), linear-gradient(to left, var(--t-bg) 30%, #fbfbf800), linear-gradient(to right, #11141824, #11141800), linear-gradient(to left, #11141824, #11141800);background-position:0,100%,0,100%;background-repeat:no-repeat;background-size:24px 100%,24px 100%,12px 100%,12px 100%;background-attachment:local,local,scroll,scroll;max-width:832px;margin-block:1.6em;overflow-x:auto}.blog .prose table{border-collapse:collapse;width:100%;font-size:16px;line-height:1.45}.blog .prose th{border-bottom:1px solid var(--t-rule-2);font-size:var(--v3-fs-small);color:var(--t-muted);text-align:left;white-space:nowrap;padding:0 16px 10px 0;font-weight:600}.blog .prose td{border-bottom:1px solid var(--t-rule);vertical-align:top;padding:12px 16px 12px 0}.blog .prose td:last-child{min-width:12em}.blog .prose td:first-child{color:var(--t-ink);white-space:nowrap;font-weight:600}.blog .prose td code{white-space:nowrap;overflow-wrap:normal;background:0 0;border:0;padding:0;font-size:.9em}.blog .prose .cmp table{font-size:17px}.blog .prose .cmp th{color:var(--t-ink);text-align:center;white-space:normal;padding:0 12px 10px}.blog .prose .cmp th:first-child{padding-left:0}.blog .prose .cmp td{vertical-align:middle;padding:14px 12px}.blog .prose .cmp td:first-child{white-space:normal;padding-left:0}.blog .prose .cmp td:not(:first-child){text-align:center;width:17%;min-width:0;font-size:20px;line-height:1}.blog .prose .cmp .cmp-on{background:#00955a14}.blog .prose .cmp th.cmp-on{color:var(--t-green-ink);border-radius:8px 8px 0 0;padding-top:10px}.blog .prose .cmp-y{color:var(--t-green-ink);font-weight:700}.blog .prose .cmp-n{color:var(--t-red-ink);font-weight:700}.blog .post-end{padding-top:clamp(64px,6vw,88px);padding-bottom:calc(var(--v3-sec) * .9)}.blog .post-end-in{grid-column:4/13;min-width:0}.blog .pc{padding-block:0}.blog .pc-block{background:var(--t-green-ink);border-radius:10px;padding:48px 48px 52px;position:relative;overflow:hidden}.blog .pc-text,.blog .pc-cta{z-index:1;position:relative}.blog .pc-title{font-size:var(--v3-fs-name);letter-spacing:-.03em;color:var(--v3-on-dark);font-weight:800;line-height:1.15}.blog .pc-statement{max-width:480px;font-size:var(--v3-fs-statement);letter-spacing:-.015em;color:var(--v3-on-dark);opacity:.92;text-wrap:balance;margin:12px 0 0;line-height:1.35}.blog .pc-cta{margin-top:28px}.blog .pc .v3-btn{background:var(--t-bg);color:var(--t-ink)}.blog .pc .v3-btn:hover{background:#fff}.blog .pc .v3-btn:focus-visible{outline-color:var(--v3-on-dark)}.blog .pc-line{position:absolute;bottom:0;right:0}.blog .more{padding-top:clamp(72px,7vw,104px);padding-bottom:var(--v3-sec)}.blog .more-title{font-size:var(--v3-fs-name);letter-spacing:-.03em;color:var(--t-ink);margin:0 0 40px;font-weight:800;line-height:1.15}@media (width>=1024px){.blog .more-title{margin-left:calc(25% + 8px)}}.blog .series{margin:0 0 36px}.blog .series-k{font:400 12px/1.4 var(--font-mono);color:var(--t-muted);margin:0 0 12px}.blog .series-line{grid-template-columns:repeat(var(--parts,3), minmax(0, 1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.blog .series-stop{padding-top:26px;position:relative}.blog .series-label{flex-direction:column;gap:3px;display:flex}.blog .series-stop:not(:last-child):after{content:"";background:var(--t-green);width:100%;height:2px;position:absolute;top:7px;left:16px}.blog .series-stop.is-soon:after,.blog .series-stop:has(+.is-soon):after{background:repeating-linear-gradient(90deg, var(--t-green) 0 5px, transparent 5px 10px)}.blog .series-ring{box-sizing:border-box;border:3px solid var(--t-green);background:var(--t-bg);border-radius:50%;width:16px;height:16px;position:absolute;top:0;left:0}.blog .series-stop.is-here .series-ring{background:var(--t-green)}.blog .series-stop.is-soon .series-ring{border-color:var(--t-gray-line)}.blog .series-n{font:400 11.5px/1.4 var(--font-mono);color:var(--t-muted)}.blog .series-t{color:var(--t-ink-2);font-size:15px;font-weight:600;line-height:1.35}.blog a.series-label{color:var(--t-muted);text-decoration:none;transition:color .15s}.blog a.series-label .series-n,.blog a.series-label .series-t{color:inherit}.blog a.series-label:hover,.blog a.series-label:focus-visible{color:var(--t-ink)}.blog .series-stop.is-here .series-t,.blog .series-stop.is-here .series-n{color:var(--t-green-ink)}.blog .series-stop.is-soon .series-t{color:var(--t-muted);font-weight:400}@media (width<=559px){.blog .series-line{grid-template-columns:1fr;gap:14px}.blog .series-stop{padding:0 0 0 30px}.blog .series-stop:not(:last-child):after{width:2px;height:calc(100% - 2px);top:16px;left:7px}.blog .series-stop.is-soon:after,.blog .series-stop:has(+.is-soon):after{background:repeating-linear-gradient(180deg, var(--t-green) 0 5px, transparent 5px 10px)}}.blog.cs{padding-bottom:var(--v3-sec)}.blog .cs-head,.blog .cs-sec{padding-bottom:0}.blog .cs-head{padding-top:clamp(48px,5vw,80px)}.blog .cs-eyebrow{margin:0 0 24px}.blog .cs-eyebrow .v3-link{color:var(--t-muted);gap:8px;font-weight:600}.blog .cs-statement{max-width:640px;margin-top:20px}.blog .cs-sec{padding-top:clamp(56px,6vw,88px)}.blog .cs-h{font-size:var(--v3-fs-name);letter-spacing:-.03em;margin:0;font-weight:800;line-height:1.15}.blog .cs-p{max-width:640px;font-size:var(--v3-fs-body);color:var(--t-muted);text-wrap:pretty;margin:12px 0 0;line-height:1.55}.blog .cs-swatches{flex-wrap:wrap;gap:16px 40px;margin:28px 0 0;padding:0;list-style:none;display:flex}.blog .cs-swatches li{grid-template-columns:auto;gap:6px;display:grid}.blog .cs-reserved{border-top:1px solid var(--t-rule);margin-top:24px;padding-top:24px}.blog .cs-sw-name{font-size:var(--v3-fs-small);color:var(--t-ink);font-weight:600}.blog .cs-sw-hex{font-family:var(--font-mono);color:var(--t-muted);background:0 0;border:0;padding:0;font-size:13px}.blog .cs-post{border-top:1px solid var(--t-rule);margin-top:40px;padding-top:32px}.blog .cs-post-title{font-size:var(--v3-fs-title);align-items:center;gap:10px;margin:0 0 20px;font-weight:600;line-height:1.3;display:flex}.blog .cs-post-title a{color:var(--t-ink);text-decoration:none}.blog .cs-post-title a:hover{text-decoration:underline;text-decoration-color:var(--t-green);text-underline-offset:4px;text-decoration-thickness:2px}.blog .cs-frames{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;gap:28px 32px;display:grid}.blog .cs-frame{min-width:0;margin:0}.blog .cs-wide{grid-column:1/9}.blog .cs-card{grid-column:9/13}.blog .cs-og{grid-column:1/9}.blog .cs-og img{width:100%;height:auto;box-shadow:0 0 0 1px var(--t-rule);border-radius:8px;display:block}.blog .cs-frame figcaption,.blog .cs-cap{font-family:var(--font-mono);color:var(--t-muted);margin-top:10px;font-size:13px;line-height:1.45}.blog .cs-cap{font-family:inherit;font-size:var(--v3-fs-small);color:var(--t-ink-2)}.blog .cs-frame figcaption code{font-size:inherit;background:0 0;padding:0}.blog .cs-code{background:var(--t-term);color:#d7dae0;font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:10px;margin:24px 0 0;padding:18px 22px;font-size:13px;line-height:1.6}.blog .cs-samples{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 32px;margin-top:32px;display:grid}.blog .cs-sample .cv{margin-top:0}.blog .cs-lib{grid-template-columns:repeat(2,minmax(0,1fr));gap:48px 32px;margin-top:32px;display:grid}.blog .cs-pick{aspect-ratio:3/2;cursor:crosshair;border-radius:8px;position:relative;overflow:hidden}.blog .cs-pick img{object-fit:cover;width:100%;height:100%;display:block}.blog .cs-grid,.blog .cs-trace{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.blog .cs-grid path{stroke:#fbfbf873;stroke-width:1.5px}.blog .cs-grid path.g5{stroke:#fbfbf8d9;stroke-width:2.5px}.blog .cs-grid text{fill:#fbfbf8;font:30px var(--font-mono);paint-order:stroke;stroke:#1114188c;stroke-width:4px}.blog .cs-trace path{fill:none;stroke:var(--t-ink);stroke-width:6px;stroke-linecap:round;stroke-linejoin:round}.blog .cs-path{font-family:var(--font-mono);color:var(--t-ink-2);align-items:baseline;gap:12px;margin:10px 0 0;font-size:13px;line-height:1.45;display:flex}.blog .cs-path output{overflow-wrap:anywhere;flex:1;min-width:0}.blog .cs-clear{border:1px solid var(--t-rule-2);background:var(--t-bg);color:var(--t-ink);font:inherit;cursor:pointer;border-radius:6px;flex:none;padding:4px 10px}.blog .cs-clear:focus-visible{outline:2px solid var(--t-ink);outline-offset:2px}.blog .cs-meta{color:var(--t-ink-2);grid-template-columns:auto minmax(0,1fr);gap:4px 16px;margin:16px 0 0;font-size:14px;line-height:1.45;display:grid}.blog .cs-meta dt{font-family:var(--font-mono);color:var(--t-muted);font-size:13px}.blog .cs-meta dd{overflow-wrap:anywhere;min-width:0;margin:0}.blog .cs-meta a{color:var(--t-green-ink)}.blog .cs-meta code{font-size:.9em}.blog .cs-specimen{margin-top:32px}.blog .cs-specimen .prose>h3{font-family:var(--font-mono);letter-spacing:0;color:var(--t-muted);margin-top:2.2em;font-size:13px;font-weight:400}.blog .cs-specimen .prose>h3:first-child{margin-top:0}@media (width<=1023px){.blog .cs-wide,.blog .cs-og{grid-column:1/-1}.blog .cs-card{grid-column:1/7}.blog .cs-samples,.blog .cs-lib{grid-template-columns:minmax(0,1fr)}}@media (width<=760px){.blog .cs-frames{grid-template-columns:minmax(0,1fr);gap:24px}.blog .cs-wide,.blog .cs-card,.blog .cs-og{grid-column:1}.blog .cs-swatches{gap:16px 28px}}@media (width<=1023px){.blog .post-grid{grid-template-columns:minmax(0,1fr)}.blog .post-back,.blog .ph,.blog .post-main,.blog .post-end-in{grid-area:auto/1}.blog .post-back{margin-bottom:20px}.blog .post-back .v3-link{height:44px;margin-block:-12px}.blog .post-aside{display:none}.blog .post-end-in{max-width:832px}.blog .toc-details{background:var(--v3-panel);border-radius:10px;max-width:832px;margin-bottom:40px;display:block}.blog .toc-details summary{font-size:var(--v3-fs-small);color:var(--t-ink);cursor:pointer;align-items:center;gap:12px;padding:14px 20px;font-weight:600;line-height:1.3;list-style:none;display:flex}.blog .toc-details summary::-webkit-details-marker{display:none}.blog .toc-details summary:after{content:"";border-right:2px solid var(--t-muted);border-bottom:2px solid var(--t-muted);width:8px;height:8px;transition:transform .2s var(--e-state);margin:-4px 4px 0 auto;transform:rotate(45deg)}.blog .toc-details[open] summary:after{margin-top:4px;transform:rotate(225deg)}.blog .toc-details summary:focus-visible{outline:2px solid var(--t-ink);outline-offset:2px;border-radius:10px}.blog .toc-count{font-family:var(--font-mono);font-size:var(--v3-fs-mono-label);color:var(--t-muted);font-weight:400}.blog .toc-details nav{padding:0 20px 16px}}@media (width<=760px){.blog .prose{font-size:17px;line-height:1.6}.blog .prose blockquote{padding-left:18px}.blog .prose .pull,.blog .prose .tldr{padding-left:40px}.blog .ph-cover{margin-top:28px}.blog .prose pre.astro-code,.blog .prose .post-policy{padding:16px}.blog .prose .fig{padding:20px}.blog .prose .fig>svg,.blog .prose .fig>img,.blog .prose .fig figcaption{margin-top:20px}.blog .prose .note{padding:16px 18px}.blog .prose table{font-size:15px}.blog .ph-title,.blog .ph-by{margin-top:16px}.blog .pc{padding-block:0}.blog .pc-block{padding:36px 24px 88px}.blog .pc .v3-btn{width:100%}.blog .pc-line{width:220px;height:56px}}@media (width<=400px){.blog .ph-meta>span:first-child{flex-basis:100%}.blog .ph-meta>span:first-child+.ph-sep{display:none}}@media (width<=360px){.blog .prose .fig{padding:16px 14px}.blog .prose pre.astro-code,.blog .prose .post-policy{padding-inline:14px}}@media (prefers-reduced-motion:reduce){.blog .pl-ring,.blog .toc-list a,.blog .toc-details summary:after{transition:none}}
