.gr-headline .core{background:linear-gradient(#13120f,#0c0b0a);padding:32px 34px 30px}.gr-headline-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:18px 32px;display:flex}.gr-headline-h{letter-spacing:-.035em;margin-top:2px;font-size:30px;font-weight:600;line-height:1.12}.gr-headline-save{align-items:baseline;gap:14px;display:flex}.gr-headline-save b{font:500 56px/1 var(--mono);letter-spacing:-.05em;color:var(--bone)}.gr-headline-save span{max-width:200px;font:500 11px/1.5 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--bone-2)}.gr-bars{gap:12px;margin-top:30px;list-style:none;display:grid}.gr-bars li{grid-template-columns:150px minmax(0,1fr) 170px;align-items:center;gap:18px;display:grid}.gr-bar-name{color:var(--bone-2);font-size:15px}.gr-bar-track{background:#ffffff0a;border-radius:999px;height:12px;position:relative;overflow:hidden}.gr-bar-track i{background:#eeebe542;border-radius:999px;position:absolute;top:0;bottom:0;left:0}.gr-bar-val{font:500 15px/1.2 var(--mono);font-variant-numeric:tabular-nums;text-align:right;color:var(--bone-2)}.gr-bars li.is-ours .gr-bar-name,.gr-bars li.is-ours .gr-bar-val{color:var(--bone);font-weight:600}.gr-bars li.is-ours .gr-bar-track i{background:var(--bone)}.gr-headline-note{font:400 12px/1.7 var(--mono);color:var(--bone-3);margin-top:24px}.gr-includes{margin-top:32px}.gr-includes .pg-h3{margin-bottom:12px}.gr-cmp th,.gr-cmp td{padding:18px 16px}.gr-cmp th:first-child{padding-left:26px}.gr-cmp td:last-child{padding-right:26px}.gr-cmp .pg-num b{font-size:17px}.gr-cmp td.gr-ours{background:#eeebe509}.gr-cmp thead th:nth-child(2){color:var(--bone)}.gr-cmp small.gr-save{color:var(--bone);letter-spacing:.06em}.gr-stale{color:var(--bone-3)!important}.gr-tag{white-space:nowrap;border:1px solid var(--line-2);text-transform:uppercase;border-radius:999px;align-items:center;width:max-content;height:20px;margin-left:auto;padding:0 8px;font:500 9.5px/1 var(--mono)!important;letter-spacing:.1em!important;color:var(--bone-2)!important;margin-top:8px!important;display:flex!important}.gr-tag-alert{border-color:var(--bone);color:var(--bone)!important}.gr-src{flex-wrap:wrap;justify-content:flex-end;gap:4px 10px;font-size:13px;line-height:1.5;display:flex}.gr-src a{color:var(--bone-2);border-bottom:1px dotted var(--bone-3)}.gr-src a:hover{color:var(--bone)}.gr-src-cell small{font:500 10.5px/1.4 var(--mono);letter-spacing:.04em;color:var(--bone-3);margin-top:6px;display:block}.gr-rules td{color:var(--bone-2);font-size:14px;line-height:1.55}.gr-rules td.gr-src-cell{white-space:nowrap}.gr-method{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:56px;display:grid}.gr-method-item{border:1px solid var(--line);background:#ffffff04;border-radius:22px;min-width:0;padding:26px 26px 24px}.gr-method-item h3{letter-spacing:-.025em;font-size:19px;font-weight:600}.gr-method-item .pg-formula{margin-top:14px}.gr-method-item .pg-formula code{padding:16px 18px;font-size:13.5px}.gr-method-item p{color:var(--bone-2);margin-top:12px;font-size:14.5px;line-height:1.6}html:is([lang=zh-CN],[lang=ja],[lang=ko]) .gr-headline-save span{letter-spacing:.04em;max-width:260px}@media (max-width:1100px){.gr-bars li{grid-template-columns:120px minmax(0,1fr) 150px;gap:12px}}@media (max-width:760px){.gr-headline .core{padding:22px 18px 20px}.gr-headline-h{font-size:23px}.gr-headline-save b{font-size:42px}.gr-bars{gap:14px}.gr-bars li{grid-template-columns:minmax(0,1fr) auto;gap:6px 12px}.gr-bar-track{grid-area:2/1/auto/-1;height:10px}.gr-bar-val{font-size:14px}.gr-cmp th:first-child,.gr-cmp td:last-child{padding-left:0;padding-right:0}.gr-cmp td.gr-ours{background:0 0}.gr-cmp td.gr-src-cell{grid-column:1/-1}.gr-src{justify-content:flex-start;gap:0 14px}.gr-tag{margin-left:0}.gr-src a{text-underline-offset:4px;border-bottom:0;align-items:center;min-height:44px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;display:inline-flex}.gr-rules td.gr-src-cell{white-space:normal}.gr-rules td.gr-src-cell .pg-inline{align-items:center;min-height:44px;display:inline-flex}.gr-method{grid-template-columns:1fr;margin-top:36px}.gr-method-item{padding:20px 16px}}.gr-steps{margin-top:56px}.gr-params td{color:var(--bone-2);font-size:14px;line-height:1.55}.gr-params tbody th .pg-code-inline{font-size:13.5px}.gr-params tbody th .pg-spec-sub{margin-top:8px}.gr-params td.pg-mono{color:var(--bone);font-size:13px}.gr-kv-tight{margin-top:0}.gr-kv-tight div{grid-template-columns:1fr;gap:6px}.gr-kv-tight dd{color:var(--bone-2);font-size:15px;line-height:1.6}.gr-events{flex-wrap:wrap;gap:6px;display:flex}@media (max-width:760px){.gr-params tr{grid-template-columns:1fr}.gr-steps{margin-top:36px}}.gr-toc{margin-top:30px}.gr-toc ol{flex-wrap:wrap;gap:8px;list-style:none;display:flex}.gr-toc a{border:1px solid var(--line);min-height:44px;color:var(--bone-2);transition:border-color .3s var(--ease), color .3s var(--ease);border-radius:999px;align-items:center;gap:10px;padding:0 16px;font-size:14px;display:inline-flex}.gr-toc a:hover{color:var(--bone);border-color:var(--line-2)}.gr-toc a span{font:500 10.5px/1 var(--mono);letter-spacing:.12em;color:var(--bone-3)}.gr-guide section.pg-sec{scroll-margin-top:90px}.gr-copy-row{justify-content:flex-end;margin-top:14px;display:flex}.gr-copy-row .pg-copy{height:32px}.pg-guide-layers .gr-copy-row{justify-content:flex-start;margin-top:20px}.gr-layer-mark{vertical-align:middle;border-top:1.5px solid #eeebe5bf;width:26px;height:0;margin-right:12px;display:inline-block}.gr-layer-mark.l2{border-top-style:dashed}.gr-layer-mark.l3{border-top:2px dotted #eeebe5bf}.gr-timelines{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:56px;display:grid}.gr-tl{border:1px solid var(--line);background:linear-gradient(#ffffff0a,#ffffff03);border-radius:24px;min-width:0;padding:26px 26px 22px}.gr-tl-bar{gap:4px;margin-top:4px;list-style:none;display:grid}.gr-tl-bar li{border:1px solid var(--line-2);height:34px;font:500 11px/1 var(--mono);letter-spacing:.06em;color:var(--bone);white-space:nowrap;background:#eeebe514;border-radius:8px;align-items:center;padding:0 10px;display:flex;overflow:hidden}.gr-tl-bar li:nth-child(2){background:#eeebe524}.gr-tl-bar li:nth-child(3){background:#eeebe533}.gr-tl-beats{border-top:1px solid var(--line);margin-top:18px;list-style:none}.gr-tl-beats li{border-bottom:1px solid var(--line);color:var(--bone-2);grid-template-columns:76px minmax(0,1fr);gap:12px;padding:12px 0;font-size:15px;line-height:1.55;display:grid}.gr-tl-beats b{font:500 12px/1.7 var(--mono);color:var(--bone)}.gr-roles{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:56px;display:grid}.gr-role{border:1px solid var(--line);background:#ffffff04;border-radius:22px;flex-direction:column;min-width:0;padding:24px 22px;display:flex}.gr-role-n{font:500 12px/1 var(--mono);color:var(--bone-2)}.gr-role h3{letter-spacing:-.02em;margin-top:26px;font-size:18px;font-weight:600}.gr-role code{font:500 12.5px/1.6 var(--mono);color:#d8d4cd;background:#00000057;border-radius:12px;margin-top:12px;padding:12px 14px;display:block}.gr-avoid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:56px;display:grid}.gr-avoid .pg-label{margin-bottom:4px}.gr-avoid-bad code{color:var(--bone-3)}.gr-pairs{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:56px;display:grid}.gr-pair{border:1px solid var(--line);background:linear-gradient(#ffffff0a,#ffffff03);border-radius:24px;flex-direction:column;min-width:0;padding:26px 26px 20px;display:flex}.gr-pair h3{letter-spacing:-.025em;font-size:20px;font-weight:600}.gr-pair p{margin-top:16px;font-size:15px;line-height:1.6}.gr-pair .pg-label{margin-bottom:6px}.gr-pair-weak{color:var(--bone-3)}.gr-pair-strong{color:var(--bone);border:1px solid var(--line);background:#0000004d;border-radius:14px;padding:14px 16px}.gr-pair-why{color:var(--bone-2);font-size:14px!important}.gr-pair .gr-copy-row{margin-top:auto;padding-top:14px}.gr-legend{flex-wrap:wrap;align-items:baseline;gap:10px 18px;margin-top:48px;display:flex}.gr-legend .pg-label{margin:0}.gr-legend ul{flex-wrap:wrap;gap:6px 8px;list-style:none;display:flex}.gr-legend li{border:1px solid var(--line);font:500 11.5px/1.3 var(--mono);color:var(--bone-2);border-radius:999px;padding:6px 12px}.gr-moves{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:28px;list-style:none;display:grid}.gr-move{border:1px solid var(--line);background:#ffffff04;border-radius:22px;flex-direction:column;min-width:0;padding:22px 22px 16px;display:flex}.gr-move-top{align-items:baseline;gap:12px;display:flex}.gr-move-n{font:500 11px/1 var(--mono);letter-spacing:.14em;color:var(--bone-3)}.gr-move h3{letter-spacing:-.02em;font-size:18px;font-weight:600}.gr-move-when{color:var(--bone-3);margin-top:8px;font-size:13.5px;line-height:1.5}.gr-move-t{font:500 13px/1.65 var(--mono);color:#d8d4cd;background:#00000057;border-radius:14px;margin-top:14px;padding:14px 16px}.gr-move .gr-copy-row{margin-top:auto;padding-top:12px}mark.gr-ph{color:var(--bone);background:#eeebe51f;border-radius:4px;padding:0 3px}html:is([lang=zh-CN],[lang=ja],[lang=ko]) .gr-move-t,html:is([lang=zh-CN],[lang=ja],[lang=ko]) .gr-role code{font-family:var(--sans);font-size:14px}@media (max-width:1100px){.gr-roles,.gr-moves{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.gr-timelines,.gr-avoid,.gr-pairs,.gr-roles,.gr-moves{grid-template-columns:1fr;margin-top:36px}.gr-tl,.gr-pair{padding:20px 16px 16px}.gr-tl-bar li{padding:0 6px;font-size:10px}.gr-tl-beats li{grid-template-columns:64px minmax(0,1fr)}.gr-copy-row .pg-copy{height:44px}}.gr-skills .btn .cost{font:600 12px/1 var(--mono);letter-spacing:.04em;background:#09090a17;border-radius:999px;align-items:center;height:26px;padding:0 10px;display:inline-flex}.gr-flows{grid-template-columns:repeat(3,minmax(0,1fr))}.gr-flows .pg-feat{flex-direction:column;display:flex}.gr-ask{padding-top:18px;line-height:1.55;color:var(--bone)!important;margin-top:auto!important;font-size:14px!important}.gr-ask .pg-label{margin-bottom:6px}.gr-install{gap:14px;margin-top:32px;list-style:none;display:grid}.gr-step{border:1px solid var(--line);background:#ffffff04;border-radius:20px;grid-template-columns:44px minmax(0,1fr);align-items:start;gap:6px 14px;padding:20px 22px;display:grid}.gr-step .pg-flow-n{padding-top:4px}.gr-step p{color:var(--bone-2);font-size:15.5px;line-height:1.6}.gr-step .pg-code{grid-column:2;margin-top:8px}.gr-inside{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}.gr-tree div{padding:12px 0}.gr-tree dt{text-transform:none;letter-spacing:0}.gr-tree dt .pg-code-inline{font-size:12.5px}.gr-preview pre{max-height:520px;overflow-y:auto}@media (max-width:1100px){.gr-flows{grid-template-columns:1fr}}@media (max-width:760px){.gr-step{grid-template-columns:1fr;padding:16px}.gr-step .pg-code{grid-column:1}.gr-inside{grid-template-columns:1fr}.gr-preview pre{max-height:420px}}.gr-map td{color:var(--bone-2);font-size:14px;line-height:1.55}.gr-mfaq dt{text-transform:none;letter-spacing:-.01em;font:600 15.5px/1.4 var(--sans);color:var(--bone)}.gr-migrate .pg-note a{overflow-wrap:anywhere}.gr-map .pg-code-inline,.gr-codes .pg-code-inline{overflow-wrap:anywhere;word-break:break-word}.gr-codes{flex-wrap:wrap;gap:6px;display:flex}.gr-map th .pg-spec-sub,.gr-map td .pg-spec-sub{margin-top:4px;display:block}.gr-map3 th,.gr-map3 td,.gr-map4 th,.gr-map4 td,.gr-map-ids th,.gr-map-ids td{vertical-align:top;padding:16px 18px}@media (max-width:760px){.gr-map tr{grid-template-columns:1fr 1fr}.gr-map td:last-child{grid-column:1/-1}.gr-map3 tr{grid-template-columns:repeat(3,minmax(0,1fr))}.gr-map4 tr{grid-template-columns:repeat(2,minmax(0,1fr))}.gr-map4 td:last-child{grid-column:auto}.gr-map-ids tr{grid-template-columns:minmax(0,1fr)}.gr-map3 th,.gr-map3 td,.gr-map4 th,.gr-map4 td,.gr-map-ids th,.gr-map-ids td{padding:0}}.pg-kv dd{overflow-wrap:anywhere;min-width:0}.gr-letters{margin-top:30px}.gr-letters ol{flex-wrap:wrap;gap:6px;list-style:none;display:flex}.gr-letters a{border:1px solid var(--line);min-width:44px;height:44px;font:500 13px/1 var(--mono);color:var(--bone-2);border-radius:12px;place-items:center;padding:0 10px;display:inline-grid}.gr-letters a:hover{color:var(--bone);border-color:var(--line-2)}.gr-dir-groups{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:12px 48px;margin-top:72px;display:grid}.gr-dir-group{border-top:1px solid var(--line);grid-template-columns:56px minmax(0,1fr);gap:16px;padding:20px 0;scroll-margin-top:90px;display:grid}.gr-dir-letter{font:300 28px/1 var(--sans);color:var(--bone-warm)}.gr-dir-group ul{gap:2px;list-style:none;display:grid}.gr-dir-group li{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.gr-dir-link{flex-wrap:wrap;align-content:center;align-items:baseline;gap:2px 12px;min-height:44px;padding:6px 0;display:flex}.gr-dir-name{color:var(--bone);font-size:16px}.gr-dir-link:hover .gr-dir-name{text-underline-offset:4px;text-decoration:underline;-webkit-text-decoration-color:var(--bone-3);text-decoration-color:var(--bone-3)}.gr-dir-path{font:500 11.5px/1.4 var(--mono);color:var(--bone-3);overflow-wrap:anywhere}.gr-dir-type{font:500 9.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--bone-3);flex:none}@media (max-width:760px){.gr-dir-groups{grid-template-columns:1fr;margin-top:40px}.gr-dir-group{grid-template-columns:40px minmax(0,1fr);gap:10px}}.gr-facts td{color:var(--bone-2);font-size:14.5px;line-height:1.55}.gr-facts td:nth-child(3){color:var(--bone)}.gr-facts td.gr-src-cell{white-space:nowrap}@media (max-width:760px){.gr-facts tr{grid-template-columns:1fr 1fr}.gr-facts td.gr-src-cell{white-space:normal;grid-column:1/-1}.gr-facts td.gr-src-cell .pg-inline{align-items:center;min-height:44px;display:inline-flex}}.gr-index.pg-toolgrid{grid-template-columns:repeat(3,minmax(0,1fr))}.gr-index .pg-toolcard{gap:0;min-height:0}.gr-index-b{color:var(--bone-2);margin-top:12px;font-size:14px;line-height:1.55}.gr-index .pg-toolcard-n{margin-top:auto;padding-top:18px}@media (max-width:1100px){.gr-index.pg-toolgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.gr-index.pg-toolgrid{grid-template-columns:1fr}}@media (min-width:1101px){.foot .cols:has(>.gr-foot-res){grid-template-columns:1.3fr repeat(5,minmax(0,1fr))}}@media (min-width:761px) and (max-width:1100px){.foot .cols:has(>.gr-foot-res){grid-template-columns:repeat(3,minmax(0,1fr))}.foot .cols:has(>.gr-foot-res)>:first-child{grid-column:1/-1}}.gr-compare-link{margin-top:10px}.fine+.gr-compare-link{margin-top:12px}@media (max-width:760px){.gr-compare-link a{align-items:center;min-height:44px;display:inline-flex}}
