.article_detailTemplate__yD6gA{color:var(--ink)}.article_postHero__GPpio{position:relative;padding:120px 0 56px;overflow:hidden}header.article_postHero__GPpio .wrap{text-align:left}.article_subheroBg__D8VJ_{position:absolute;inset:0;background:linear-gradient(180deg,#f5f4ff,#eef0ff);-webkit-mask-image:linear-gradient(180deg,#000 0,#000 60%,transparent);mask-image:linear-gradient(180deg,#000 0,#000 60%,transparent);pointer-events:none}.article_rsPlume__Ne06y{position:absolute;inset:-15%;pointer-events:none;background:radial-gradient(32% 62% at 67% -8%,rgba(96,71,255,.4) 0,rgba(124,92,255,.24) 34%,transparent 66%),radial-gradient(46% 50% at 90% 26%,rgba(150,108,255,.26),transparent 66%),radial-gradient(40% 42% at 52% 4%,rgba(150,140,255,.18),transparent 72%);filter:blur(30px);animation:article_rsDrift__5ao75 17s ease-in-out infinite alternate}@keyframes article_rsDrift__5ao75{0%{transform:translate(-1.5%,-1%) scale(1)}to{transform:translate(2%,1%) scale(1.05)}}@media(prefers-reduced-motion:reduce){.article_rsPlume__Ne06y{animation:none}}.article_crumb__w91nX{position:relative;z-index:1;display:inline-flex;align-items:center;gap:8px;font-family:var(--font-m);font-size:13px;color:var(--muted);margin-bottom:30px}.article_crumb__w91nX a{color:var(--accent)}.article_crumb__w91nX svg{width:14px;height:14px}.article_postHrow___WEcJ{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:clamp(30px,5vw,64px);align-items:center;margin-top:clamp(22px,3vw,34px)}.article_postHrow___WEcJ h1{font-family:var(--font-d);font-weight:700;letter-spacing:-.04em;line-height:1.06;font-size:clamp(34px,4.4vw,58px);max-width:20ch;margin:0 0 22px}.article_postTags__gctW_{display:flex;flex-wrap:wrap;gap:9px;margin:18px 0 24px}.article_postTag__Y_vOM{font-family:var(--font-m);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);background:rgba(124,92,255,.1);padding:7px 13px;border-radius:999px}.article_lead__DDn98{max-width:62ch;font-size:clamp(17px,1.7vw,20px);line-height:1.6;color:var(--ink-soft);margin:0}.article_postHcover__lfM7e{border-radius:16px;overflow:hidden;border:1px solid var(--line);aspect-ratio:16/10;background:var(--paper-2)}.article_coverImage__7fWx7{width:100%;height:100%;object-fit:cover;display:block}.article_postByline__q2B10{position:relative;z-index:1;display:flex;flex-direction:column;gap:18px;padding-top:24px;border-top:1px solid var(--line);margin-top:20px}.article_postBylineTop__mDB79{display:flex;align-items:center;gap:16px}.article_postDate__14Dex{font-family:var(--font-m);font-size:13px;letter-spacing:.04em;color:var(--muted)}.article_postShare__eh78N{display:inline-flex;gap:8px;margin-left:auto}.article_postShare__eh78N a{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;color:var(--ink);transition:border-color .2s var(--ease),color .2s var(--ease),background .2s var(--ease)}.article_postShare__eh78N a:hover{border-color:var(--accent);color:var(--accent);background:rgba(124,92,255,.06)}.article_postShare__eh78N svg{width:16px;height:16px}.article_postAuthors__DDQY1{display:flex;align-items:center;gap:12px 22px;flex-wrap:wrap}.article_av__drw1d{color:var(--ink-soft);font-family:var(--font-m);font-size:14px;place-items:center;flex:none;margin-right:1.5rem}.article_av__drw1d:first-child{margin-left:0}.article_authorNames__9hk2F{font-size:14.5px;line-height:1.5;color:var(--ink-soft)}.article_authorNames__9hk2F strong{color:var(--ink);font-weight:500}.article_postLayout__AccHp{display:grid;grid-template-columns:248px minmax(0,760px);gap:clamp(40px,6vw,80px);align-items:start;justify-content:center}.article_toc__uScl2{position:sticky;top:100px;max-height:calc(100vh - 140px);overflow:auto}.article_tocTitle___jm2M{font-family:var(--font-m);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);padding-bottom:14px;border-bottom:1.5px solid var(--ink);margin-bottom:14px}.article_toc__uScl2 a{display:block;font-size:13.5px;line-height:1.4;color:var(--muted);padding:6px 0;text-decoration:none;transition:color .2s var(--ease)}.article_toc__uScl2 a:hover{color:var(--accent)}.article_tocSub__OMaPV{padding-left:16px!important;font-size:13px!important}.article_postBody__QzCNb{max-width:760px;min-width:0}.article_postBody__QzCNb h2{font-family:var(--font-d);font-weight:600;font-size:clamp(25px,3vw,36px);letter-spacing:-.03em;line-height:1.14;margin:52px 0 16px;text-wrap:pretty}.article_postBody__QzCNb h2:first-child{margin-top:0}.article_postBody__QzCNb h3{font-family:var(--font-d);font-weight:600;font-size:clamp(20px,2.1vw,26px);letter-spacing:-.02em;margin:36px 0 12px}.article_postBody__QzCNb h4,.article_postBody__QzCNb h5,.article_postBody__QzCNb h6{font-family:var(--font-d);font-weight:600;font-size:18px;letter-spacing:-.01em;margin:26px 0 10px}.article_postBody__QzCNb p{font-size:clamp(16px,1.3vw,17.5px);line-height:1.72;color:var(--ink-soft);margin:0 0 18px}.article_postBody__QzCNb strong{font-weight:600}.article_postBody__QzCNb a{color:var(--accent);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}.article_postBody__QzCNb ul{list-style:none;margin:0 0 20px;padding:0;display:flex;flex-direction:column;gap:11px}.article_postBody__QzCNb ul ul{margin:11px 0 0;padding-left:20px}.article_postBody__QzCNb li{position:relative;padding-left:22px;font-size:clamp(15.5px,1.2vw,17px);line-height:1.62;color:var(--ink-soft)}.article_postBody__QzCNb li:before{content:"";position:absolute;left:3px;top:.66em;width:5px;height:5px;border-radius:50%;background:var(--accent)}.article_postBody__QzCNb ol{margin:0 0 20px;padding-left:22px;display:flex;flex-direction:column;gap:11px}.article_postBody__QzCNb ol li{padding-left:6px}.article_postBody__QzCNb ol li:before{display:none}.article_postBody__QzCNb code{font-family:JetBrains Mono,monospace,Menlo,Monaco,Consolas;font-size:.88em;background:rgba(124,92,255,.1);color:var(--ink);padding:2px 6px;border-radius:5px}.article_postBody__QzCNb .code-block{position:relative;overflow:visible;margin-bottom:1.5rem}.article_postBody__QzCNb .code-block:after,.article_postBody__QzCNb .code-block:before{content:"";display:block;position:absolute;bottom:.75em;left:.18em;width:40%;height:20%;max-height:13em;box-shadow:0 13px 8px #979797;transform:rotate(-2deg)}.article_postBody__QzCNb .code-block:after{right:.75em;left:auto;transform:rotate(2deg)}.article_postBody__QzCNb code[class*=language-]{position:relative;z-index:1;display:block;padding:20px 22px;border-radius:.375rem;border-left:10px solid #358ccb;overflow:auto;box-shadow:-1px 0 0 0 #358ccb,0 0 0 1px #dfdfdf;background-color:#fdfdfd;background-image:linear-gradient(transparent 50%,rgba(69,142,209,.04) 0);background-size:3em 3em;background-origin:content-box;background-attachment:local}.article_postBody__QzCNb blockquote{display:block;margin:0 0 18px;padding:16px 20px;border-left:2px solid var(--accent);background:rgba(124,92,255,.05);border-radius:0 10px 10px 0;font-size:16px;line-height:1.6;color:var(--ink-soft)}.article_postBody__QzCNb img{max-width:100%;border-radius:12px}.article_postBody__QzCNb table{width:100%;border-collapse:collapse;font-size:14.5px;margin:0 0 22px}.article_postBody__QzCNb th{text-align:left;font-family:var(--font-m);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:12px 14px;border-bottom:1.5px solid var(--ink)}.article_postBody__QzCNb td{padding:13px 14px;border-bottom:1px solid var(--line);color:var(--ink-soft);line-height:1.5;vertical-align:top}.article_postBody__QzCNb .min-width-table{overflow:auto;margin:0 0 22px}.article_postBody__QzCNb .min-width-table table{min-width:656px;margin:0}.article_postBody__QzCNb .table-borderless,.article_postBody__QzCNb .table-borderless td,.article_postBody__QzCNb .table-borderless th,.article_postBody__QzCNb .table-borderless tr{border:0}.article_postBody__QzCNb .footnotes-list{padding-left:1.2em}.article_postBody__QzCNb .footnote-item{padding-left:.5em;counter-increment:count 1;font-size:90%;color:#666}.article_postBody__QzCNb .footnote-item::marker{content:"[" counter(count,decimal) "] "}.article_postBody__QzCNb .markdown-alert{margin:1em 0;padding:.25em 1em;border-inline-start-width:2px;border-inline-start-style:solid;color:inherit}.article_postBody__QzCNb .markdown-alert-warning{background:#fffae6;border-color:gold}.article_postBody__QzCNb .markdown-alert-note{background:#f0f9ff;border-color:#1890ff}.article_postBody__QzCNb .markdown-alert-tip{background:#f6ffed;border-color:#52c41a}.article_postBody__QzCNb .markdown-alert-important{background:#f1ecfd;border-color:#8250df}.article_postBody__QzCNb .markdown-alert-caution{background:#fff2f0;border-color:#ff4d4f}.article_postBody__QzCNb .markdown-alert-title{font-weight:600;margin:0;font-size:.9em}.article_postBody__QzCNb .markdown-alert p{margin:0;font-size:.9em}@media(max-width:1024px){.article_postLayout__AccHp{grid-template-columns:1fr;gap:32px}.article_toc__uScl2{position:static;max-height:none;border-bottom:1px solid var(--line);padding-bottom:18px}}@media(max-width:768px){.article_postHero__GPpio{padding-top:104px}.article_postHrow___WEcJ{grid-template-columns:1fr;gap:26px}.article_postBylineTop__mDB79{flex-wrap:wrap}.article_postShare__eh78N{margin-left:0}}.article_postBody__QzCNb .section-compare-technologies{margin:1rem 0}.article_postBody__QzCNb .section-compare-technologies .title{display:flex;align-items:center;margin:.25rem 0}.article_postBody__QzCNb .section-compare-technologies .title img{max-height:24px;max-width:24px;margin-right:.25rem}.article_postBody__QzCNb .section-compare-technologies .content{display:flex;border:1px solid #dee2e6;background:#fefefe;border-radius:.5rem;font-size:16px}@media(max-width:767.98px){.article_postBody__QzCNb .section-compare-technologies .content{flex-direction:column}.article_postBody__QzCNb .section-compare-technologies .content .pros{width:100%}}.article_postBody__QzCNb .section-compare-technologies .pros{border:1px solid #b4d7ff;background:#f5faff;width:50%;flex-shrink:0;border-radius:.5rem;padding:1rem}.article_postBody__QzCNb .section-compare-technologies .cons{padding:1rem}.article_postBody__QzCNb .section-compare-technologies .cons-title,.article_postBody__QzCNb .section-compare-technologies .pros-title{font-weight:600}.article_postBody__QzCNb .section-compare-technologies ul{padding-left:1rem;margin-bottom:0}.article_postBody__QzCNb .section-compare-technologies li p{margin-bottom:.125rem}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}
/*!
  Theme: GitHub
  Description: Light theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-light
  Current colors taken from GitHub's CSS
*/.hljs{color:#24292e;background:#ffffff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}