@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/poppins-devanagari-400-normal.CJDn6rn8.woff2)format("woff2"),url(/_astro/poppins-devanagari-400-normal.CqVvlrh5.woff)format("woff");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/poppins-latin-ext-400-normal.by3JarPu.woff2)format("woff2"),url(/_astro/poppins-latin-ext-400-normal.DaBSavcJ.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/poppins-latin-400-normal.cpxAROuN.woff2)format("woff2"),url(/_astro/poppins-latin-400-normal.BOb3E3N0.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/poppins-devanagari-500-normal.BIdkeU1p.woff2)format("woff2"),url(/_astro/poppins-devanagari-500-normal.DMPDjHtT.woff)format("woff");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/poppins-latin-ext-500-normal.CK-6C4Hw.woff2)format("woff2"),url(/_astro/poppins-latin-ext-500-normal.CgAe2rWW.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/poppins-latin-500-normal.C8OXljZJ.woff2)format("woff2"),url(/_astro/poppins-latin-500-normal.DGXqpDMm.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--bg-normal:#fafafa;--bg-normal-overlay:color-mix(in srgb, var(--bg-normal) 40%, transparent);--bg-popover:#fff;--bg-qr-code:#fff;--bg-container:#f2f2f0;--bg-container-gradient:color-mix(in srgb, var(--bg-container) 0%, transparent);--bg-container-hover:var(--border);--bg-container-glow:color-mix(in srgb, var(--bg-normal) 88%, transparent);--glow-cyan:#2ad9ff;--glow-violet:#8b5cf6;--glow-pink:#ff4fbd;--resource-blog-color:#f4c542;--resource-harness-color:#1675e8;--resource-design-color:#31c48d;--hero-underline-glow-start:#9fbdb8;--hero-underline-glow-center:#d7c9b8;--hero-underline-glow-highlight:#f3eee7;--hero-underline-glow-end:#c2b3bd;--statistics-glow-primary:#31c48d;--statistics-glow-secondary:#f4c542;--statistics-glow-tertiary:#ff6b61;--statistics-glow-opacity:.52;--bg-main:#0a0a0a;--bg-main-hover:#1a1a1a;--bg-hover:#1a1a1a0a;--text:#0a0a0a;--text-subtle:#7d8187;--text-subtlest:#9d9d9d;--text-inverted:#fff;--icon:#2d3139;--icon-subtle:#9d9d9d;--icon-inverted:#fff;--border:#ebebea;--border-intense:#ddddda;--border-inverted:#fff;--shadow-floating-strong:#0000001a;--shadow-floating-soft:#0000000f;--shadow-input-soft:#0000000a;--scroll-indicator-ink:#fff;--switch-mode-context:light;--font-family:Poppins, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Roboto, "Helvetica Neue", Helvetica, Tahoma, Arial, SimSun, sans-serif;--font-weight-normal:400;--font-weight-bold:500;--font-size-3xl:48px;--font-size-2xl:40px;--font-size-xl:32px;--font-size-lg:24px;--font-size-md:20px;--font-size-sm:16px;--font-size-xs:14px;--line-height-3xl:64px;--line-height-2xl:52px;--line-height-xl:44px;--line-height-lg:32px;--line-height-md:28px;--line-height-sm:24px;--line-height-xs:22px;--line-height-sm-paragraph:28px;--line-height-xs-paragraph:24px;--border-weight-base:1px;--border-weight-intense:2px;--radius-none:0;--radius-sm:8px;--radius-md:10px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:24px;--radius-full:99999px}[data-theme=dark]{color-scheme:dark;--bg-normal:#0a0a0a;--bg-normal-overlay:#0a0a0a66;--bg-popover:#0f0f0f;--bg-qr-code:#fff;--bg-container:#191b1f;--bg-container-hover:#1f2228;--bg-container-glow:color-mix(in srgb, var(--text) 14%, transparent);--statistics-glow-primary:var(--glow-cyan);--statistics-glow-secondary:var(--glow-violet);--statistics-glow-tertiary:var(--glow-pink);--statistics-glow-opacity:.72;--bg-main:#fff;--bg-main-hover:#f8f8f7;--bg-hover:#f8f8f714;--text:#f7f8f8;--text-subtle:#7d8187;--text-subtlest:#858585;--text-inverted:#0a0a0a;--icon:#d5d9e2;--icon-subtle:#858585;--icon-inverted:#2d3139;--border:#2d3139;--border-intense:#3e4450;--border-inverted:#2d3139;--switch-mode-context:dark}::view-transition-old(root),::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2}*,:before,:after{box-sizing:border-box}html{background:var(--bg-normal);color:var(--text);font-family:var(--font-family);font-synthesis:none;scrollbar-width:none;text-rendering:optimizelegibility;min-height:100%}body{background:var(--bg-normal);color:var(--text);min-height:100dvh;margin:0}#root{min-height:100dvh}html::-webkit-scrollbar,body::-webkit-scrollbar{width:0;height:0;display:none}:where(:not(html):not(body)){scrollbar-color:color-mix(in srgb, var(--text-subtlest) 55%, transparent) transparent;scrollbar-width:thin}:where(:not(html):not(body))::-webkit-scrollbar{width:6px;height:6px}:where(:not(html):not(body))::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--text-subtlest) 55%, transparent);border-radius:var(--radius-full)}:where(:not(html):not(body))::-webkit-scrollbar-track{background:0 0}button,input,textarea,select{color:inherit;font:inherit}svg{display:block}:root{--bg-dialog-overlay:#0a0a0a99;--dialog-overlay-blur:8px;--bg-image-preview-control:#ffffff1f;--bg-image-preview-control-hover:#fff3;--text-article-body:var(--text);--border-image-preview-control:#ffffff0a;--image-preview-control-foreground:#fff;--font-size-heading-sm:18px;--font-size-article-body:17px;--line-height-article-body:1.8;--letter-spacing-article-body:normal;--space-article-paragraph:32px}[data-theme=dark]{--bg-dialog-overlay:#0a0a0ad6}.text-48-normal,.text-48-bold{font-family:var(--font-family);font-size:var(--font-size-3xl);line-height:var(--line-height-3xl);letter-spacing:0}.text-40-normal,.text-40-bold{font-family:var(--font-family);font-size:var(--font-size-2xl);line-height:var(--line-height-2xl);letter-spacing:0}.text-32-normal,.text-32-bold{font-family:var(--font-family);font-size:var(--font-size-xl);line-height:var(--line-height-xl);letter-spacing:0}.text-24-normal,.text-24-bold{font-family:var(--font-family);font-size:var(--font-size-lg);line-height:var(--line-height-lg);letter-spacing:0}.text-20-normal,.text-20-bold{font-family:var(--font-family);font-size:var(--font-size-md);line-height:var(--line-height-md);letter-spacing:0}.text-16-normal,.text-16-bold,.text-16-paragraph{font-family:var(--font-family);font-size:var(--font-size-sm);letter-spacing:0}.text-16-normal,.text-16-bold{line-height:var(--line-height-sm)}.text-16-paragraph{line-height:var(--line-height-sm-paragraph)}.text-14-normal,.text-14-bold,.text-14-paragraph{font-family:var(--font-family);font-size:var(--font-size-xs);letter-spacing:0}.text-14-normal,.text-14-bold{line-height:var(--line-height-xs)}.text-14-paragraph{line-height:var(--line-height-xs-paragraph)}.text-48-normal,.text-40-normal,.text-32-normal,.text-24-normal,.text-20-normal,.text-16-normal,.text-16-paragraph,.text-14-normal,.text-14-paragraph{font-weight:var(--font-weight-normal)}.text-48-bold,.text-40-bold,.text-32-bold,.text-24-bold,.text-20-bold,.text-16-bold,.text-14-bold{font-weight:var(--font-weight-bold)}.home-page__header{flex:0 0 200px;justify-content:center;align-items:center;height:200px;padding:0 20px;display:flex;position:relative;overflow:hidden}.home-page__grid{background-image:linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px);height:544px;mask-image:radial-gradient(ellipse at center, var(--text) 8%, transparent 72%);opacity:.72;background-position:50%;background-size:32px 32px;width:1523px;position:absolute;top:calc(50% + 40px);left:50%;transform:translate(-50%,-50%)}html[data-site-key=harness] .home-page__grid{background-image:radial-gradient(circle, transparent 6px, var(--border) 6.5px, var(--border) 7.5px, transparent 8px);background-size:32px 32px}html[data-site-key=codex] .home-page__grid{background-size:24px 24px}html[data-site-key=ai] .home-page__grid{background-color:var(--border-intense);mask-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 84 48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0 14-24 42-24 56 0 42 24 14 24ZM42 24 56 0 84 0 98 24 84 48 56 48ZM0 48 14 24 42 24 56 48 42 72 14 72Z' fill='none' stroke='white' stroke-width='1'/%3E%3C/svg%3E"), radial-gradient(ellipse at center, var(--text) 8%, transparent 72%);opacity:1;background-image:none;mask-position:50%,50%;mask-size:84px 48px,100% 100%;mask-repeat:repeat,no-repeat;mask-composite:intersect}.post-index{flex-direction:column;gap:16px;margin:0;padding:0;list-style:none;display:flex}.post-index li{min-width:0}.post-index a{font-size:var(--font-size-sm);line-height:var(--line-height-sm);align-items:baseline;gap:12px;text-decoration:none;display:flex}.post-index--home{gap:0}.post-index--home li{border-bottom:var(--border-weight-base) solid var(--border);transition:opacity .18s}.post-index--home a{align-items:center;gap:80px;padding:20px 0}.post-index--home .post-index__title{font-weight:var(--font-weight-normal);text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.post-index--home .post-index__leader{display:none}.post-index--home svg{color:var(--icon-subtle);flex:none}.post-index__title{min-width:0}.post-index__leader{border-bottom:var(--border-weight-base) dotted var(--border-intense);flex:20px;min-width:20px;transform:translateY(-4px)}.post-index time{color:var(--text-subtlest);font-size:var(--font-size-xs);flex:none}.post-index a:hover .post-index__title,.post-index a:focus-visible .post-index__title{color:var(--text-subtle)}.post-index--home a:hover .post-index__title,.post-index--home a:focus-visible .post-index__title{color:var(--text)}.post-index--home:has(a:focus-visible) li:not(:focus-within){opacity:.32}@media (hover:hover){.post-index--home:has(a:hover) li:not(:has(a:hover)){opacity:.32}.post-index--home:has(a:hover) li:has(a:hover){opacity:1}}.post-index a:focus-visible{border-radius:var(--radius-sm);outline:2px solid var(--text);outline-offset:4px}.empty-state{color:var(--text-subtlest);font-size:var(--font-size-sm);line-height:var(--line-height-sm-paragraph)}.article-header{position:relative}.article-hero{background:var(--bg-normal);border-top:var(--border-weight-base) solid var(--border);z-index:3;justify-content:center;align-items:center;padding:80px 24px 0;display:flex;position:relative}.article-hero__content{width:100%;max-width:560px}.article-hero h1{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-xl);overflow-wrap:anywhere;margin:0}.article-content{flex-direction:column;align-items:center;padding:80px 24px 160px;display:flex}.article-toc{z-index:10;width:64px;height:max-content;max-height:calc(100dvh - 48px);margin-block:auto;position:fixed;top:0;bottom:0;left:40px}.article-toc[hidden]{display:none}.article-toc__scroll{max-height:inherit;scrollbar-width:none;position:relative;overflow-y:auto}.article-toc__scroll::-webkit-scrollbar{display:none}.article-toc ol{margin:0;padding:0;list-style:none}.article-toc li{animation:.36s cubic-bezier(.22,1,.36,1) both article-toc-item-in;animation-delay:calc(80ms + var(--article-toc-index) * 30ms)}.article-toc a{width:100%;height:10px;color:var(--text);align-items:center;text-decoration:none;display:flex}.article-toc__line{width:40px;height:3px;opacity:calc(.18 + var(--article-toc-wave,0) * .82);transform:scaleX(calc(.3 + var(--article-toc-wave,0) * .7));transform-origin:0;background:currentColor;border-radius:999px;transition:transform .14s ease-out,opacity .14s ease-out}.article-toc a:hover .article-toc__line,.article-toc a:focus-visible .article-toc__line{opacity:1}.article-toc a:focus-visible{border-radius:var(--radius-sm);outline:var(--border-weight-intense) solid var(--text);outline-offset:-2px}.article-toc__tooltip{border:var(--border-weight-base) solid var(--border);border-radius:var(--radius-sm);background:var(--bg-popover);max-width:min(320px,100vw - 168px);box-shadow:var(--shadow-floating-soft);color:var(--text);font-size:var(--font-size-xs);line-height:var(--line-height-xs);overflow-wrap:anywhere;padding:8px 12px;position:fixed;left:104px;transform:translateY(-50%)}.article-body{color:var(--text-article-body);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;font-size:var(--font-size-article-body);letter-spacing:var(--letter-spacing-article-body);line-height:var(--line-height-article-body);overflow-wrap:anywhere;width:100%;max-width:560px}.article-series-navigation{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%;max-width:560px;margin-top:48px;display:grid}.article-series-navigation a{border:var(--border-weight-base) solid var(--border);border-radius:var(--radius-lg);background:var(--bg-normal);flex-direction:column;gap:8px;min-width:0;padding:20px;text-decoration:none;transition:background-color .16s,border-color .16s;display:flex}.article-series-navigation__next{text-align:right;align-items:flex-end}.article-series-navigation a>span{color:var(--text-subtle);font-size:var(--font-size-xs);line-height:var(--line-height-xs);align-items:center;gap:4px;display:flex}.article-series-navigation strong{color:var(--text);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);line-height:var(--line-height-sm);overflow-wrap:anywhere;width:100%}.article-series-navigation a:hover,.article-series-navigation a:focus-visible{background:var(--bg-container);border-color:var(--border-intense)}.article-series-navigation a:focus-visible{outline:var(--border-weight-intense) solid var(--text);outline-offset:3px}@media (prefers-reduced-motion:reduce){.article-series-navigation a{transition:none}}.article-body>:first-child{margin-top:0}.article-body p{margin:0 0 var(--space-article-paragraph)}.article-body h2,.article-body h3,.article-body h4,.article-body h5,.article-body h6{color:var(--text-subtlest);letter-spacing:normal;justify-content:space-between;align-items:baseline;gap:20px;scroll-margin-top:32px;font-weight:500;display:flex}.article-body h2{margin:96px 0 32px;font-size:28px;line-height:40px}.article-body h2:after,.article-body h3:after,.article-body h4:after,.article-body h5:after,.article-body h6:after{color:var(--text-subtlest);font-variant-numeric:tabular-nums;font-weight:var(--font-weight-normal);flex:none}.article-body h3{font-size:var(--font-size-lg);line-height:var(--line-height-lg);margin:72px 0 28px}.article-body h2:after,.article-body h3:after,.article-body h4:after,.article-body h5:after,.article-body h6:after{content:attr(data-section-number)}.article-body h4{font-size:var(--font-size-md);line-height:var(--line-height-md);margin:56px 0 24px}.article-body h5{font-size:var(--font-size-heading-sm);line-height:var(--line-height-md);margin:40px 0 20px}.article-body h6{font-size:var(--font-size-article-body);margin:32px 0 16px;line-height:26px}.article-body ul,.article-body ol{margin:var(--space-article-paragraph) 0;padding-left:1.5em}.article-body li>p{margin-bottom:8px}.article-body li>:is(ul,ol){margin:8px 0}.article-body blockquote>:last-child,.article-body li>:last-child{margin-bottom:0}.article-body li+li{margin-top:8px}.article-body blockquote{border-left:var(--border-weight-intense) solid var(--border-intense);color:var(--text-subtle);margin:32px 0;padding-left:20px}.article-body pre{background:var(--bg-container);border:var(--border-weight-base) solid var(--border);border-radius:var(--radius-lg);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:var(--font-size-xs);line-height:var(--line-height-xs-paragraph);margin:32px 0;padding:20px;overflow-x:auto}.article-body code{background:var(--bg-container);border-radius:var(--radius-sm);letter-spacing:normal;padding:2px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.9em}.article-body pre code{background:0 0;padding:0}.article-code-block{background:var(--bg-container);border:var(--border-weight-base) solid var(--border);border-radius:var(--radius-lg);margin:32px 0;overflow:hidden}.article-code-block__header{border-bottom:var(--border-weight-base) solid var(--border);justify-content:space-between;align-items:center;min-height:40px;padding:4px 8px 4px 12px;display:flex}.article-code-block__language{color:var(--text-subtle);font-size:var(--font-size-xs);line-height:var(--line-height-xs)}.article-code-block__copy{border-radius:var(--radius-sm);color:var(--icon-subtle);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:32px;height:32px;padding:0;display:grid}.article-code-block__copy:hover{background:var(--bg-hover);color:var(--icon)}.article-code-block__copy:focus-visible{outline:var(--border-weight-intense) solid var(--border-intense);outline-offset:2px}.article-code-block__copy-icon,.article-code-block__check-icon{grid-area:1/1;transition:opacity .16s,transform .16s}.article-code-block__copy-icon{background:currentColor;width:16px;height:16px;-webkit-mask:url("data:image/svg+xml,%3csvg%20preserveAspectRatio='none'%20overflow='visible'%20style='display:%20block;'%20width='10'%20height='10'%20viewBox='0%200%2010%2010'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20id='Outlined'%20d='M6.5%202.5C6.76522%202.5%207.01949%202.60543%207.20703%202.79297C7.39457%202.98051%207.5%203.23478%207.5%203.5V9C7.5%209.26522%207.39457%209.51949%207.20703%209.70703C7.01949%209.89457%206.76522%2010%206.5%2010H1C0.734784%2010%200.480505%209.89457%200.292969%209.70703C0.105432%209.51949%200%209.26522%200%209V3.5C0%203.23478%200.105432%202.98051%200.292969%202.79297C0.480505%202.60543%200.734784%202.5%201%202.5H6.5ZM1%209H6.5V3.5H1V9ZM9%200C9.26522%200%209.51949%200.105432%209.70703%200.292969C9.89457%200.480505%2010%200.734784%2010%201V6.5C10%206.76522%209.89457%207.01949%209.70703%207.20703C9.51949%207.39457%209.26522%207.5%209%207.5H8V6.5H9V1H3.5V2H2.5V1C2.5%200.734784%202.60543%200.480505%202.79297%200.292969C2.98051%200.105432%203.23478%200%203.5%200H9Z'%20fill='%239D9D9D'/%3e%3c/svg%3e") 50%/12px 12px no-repeat;mask:url("data:image/svg+xml,%3csvg%20preserveAspectRatio='none'%20overflow='visible'%20style='display:%20block;'%20width='10'%20height='10'%20viewBox='0%200%2010%2010'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20id='Outlined'%20d='M6.5%202.5C6.76522%202.5%207.01949%202.60543%207.20703%202.79297C7.39457%202.98051%207.5%203.23478%207.5%203.5V9C7.5%209.26522%207.39457%209.51949%207.20703%209.70703C7.01949%209.89457%206.76522%2010%206.5%2010H1C0.734784%2010%200.480505%209.89457%200.292969%209.70703C0.105432%209.51949%200%209.26522%200%209V3.5C0%203.23478%200.105432%202.98051%200.292969%202.79297C0.480505%202.60543%200.734784%202.5%201%202.5H6.5ZM1%209H6.5V3.5H1V9ZM9%200C9.26522%200%209.51949%200.105432%209.70703%200.292969C9.89457%200.480505%2010%200.734784%2010%201V6.5C10%206.76522%209.89457%207.01949%209.70703%207.20703C9.51949%207.39457%209.26522%207.5%209%207.5H8V6.5H9V1H3.5V2H2.5V1C2.5%200.734784%202.60543%200.480505%202.79297%200.292969C2.98051%200.105432%203.23478%200%203.5%200H9Z'%20fill='%239D9D9D'/%3e%3c/svg%3e") 50%/12px 12px no-repeat}.article-code-block__check-icon,.article-code-block__copy[data-copied=true] .article-code-block__copy-icon{opacity:0;transform:scale(.7)}.article-code-block__copy[data-copied=true] .article-code-block__check-icon{opacity:1;transform:scale(1)}.article-code-block__status{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.article-body .article-code-block pre{background:0 0;border:0;border-radius:0;margin:0}@media (prefers-reduced-motion:reduce){.article-code-block__copy-icon,.article-code-block__check-icon{transition:none}}.article-body img{width:800px;max-width:calc(100vw - 40px);height:auto;margin:24px 50% 48px;display:block;transform:translate(-50%)}.article-body .article-image{opacity:1;border-radius:0;flex-direction:column;justify-content:center;align-items:center;gap:20px;width:800px;max-width:calc(100vw - 40px);margin:24px 50% 48px;padding:0;display:flex;transform:translate(-50%)}.article-body .article-image img{width:100%;max-width:100%;margin:0;transform:none}.article-image__caption{color:var(--text-subtle);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);line-height:var(--line-height-xs);text-align:center;width:560px;max-width:100%;margin:0}.article-body>:is(img,.article-image):last-child{margin-bottom:0}.article-table-scroll{border:var(--border-weight-base) solid var(--border);border-radius:var(--radius-sm);overscroll-behavior-inline:contain;width:800px;max-width:calc(100vw - 40px);margin:32px 50%;overflow:auto hidden;transform:translate(-50%)}.article-table-scroll:focus-visible{outline:var(--border-weight-intense) solid var(--text);outline-offset:4px}.article-body table{border-collapse:separate;border-spacing:0;table-layout:auto;border:0;width:max-content;margin:0;min-width:100%!important}.article-body td,.article-body th{border-bottom:var(--border-weight-base) solid var(--border);border-right:var(--border-weight-base) solid var(--border);overflow-wrap:break-word;text-align:left;vertical-align:top;word-break:normal;min-width:120px;padding:10px 16px}.article-body th{background:var(--bg-container);font-weight:var(--font-weight-normal)}.article-body tr:last-child>:is(td,th){border-bottom:0}.article-body tr>:is(td,th):last-child{border-right:0}.article-body :is(td,th)>:last-child{margin-bottom:0}.article-callout{background:var(--bg-container);border:var(--border-weight-base) solid var(--border);border-radius:var(--radius-lg);margin:32px 0;padding:20px}.article-callout>:last-child{margin-bottom:0}.article-link-card{background:var(--bg-container);border:var(--border-weight-base) solid var(--border);border-radius:var(--radius-lg);flex-direction:column;gap:6px;margin:32px 0;padding:16px;text-decoration:none;display:flex}.article-link-card:hover{background:var(--bg-container-hover)}.article-link-card__description{color:var(--text-subtle);font-size:var(--font-size-xs)}@keyframes article-page-fade-out{to{opacity:0}}@keyframes article-page-fade-in{0%{opacity:0}}@media (width<=600px){.post-index:not(.post-index--home) a{flex-wrap:wrap;align-items:flex-start;gap:4px 12px}.post-index:not(.post-index--home) .post-index__title{flex:calc(100% - 52px)}.post-index:not(.post-index--home) .post-index__leader{display:none}.post-index--home a{gap:20px;padding:18px 0}.post-index--home .post-index__title{flex:auto}.article-hero{padding:48px 24px 0}.article-hero h1{font-size:28px;line-height:1.4}.article-content{padding:32px 24px 120px}.article-body{--font-size-article-body:15px;--space-article-paragraph:24px}.article-body h2{font-size:var(--font-size-lg);margin:72px 0 28px;line-height:34px}.article-body h3{font-size:22px;line-height:var(--line-height-lg);margin:56px 0 24px}.article-body h4{font-size:var(--font-size-md);line-height:var(--line-height-md);margin:40px 0 20px}.article-body h5{font-size:var(--font-size-heading-sm);margin:32px 0 16px;line-height:26px}.article-body h6{font-size:var(--font-size-sm);line-height:var(--line-height-sm);margin:28px 0 16px}.article-body>:first-child{margin-top:0}.article-body td,.article-body th{font-size:var(--font-size-xs);line-height:var(--line-height-xs-paragraph);padding:8px 12px}.article-series-navigation{grid-template-columns:1fr;margin-top:32px}.article-series-navigation>span[aria-hidden=true]{display:none}.article-series-navigation__next{text-align:left;align-items:flex-start}}@media (width<=1279px){.article-toc{display:none}}@media print{.article-toc{display:none}}@keyframes article-toc-item-in{0%{opacity:0;transform:translateY(-8px)scale(.96)}}@media (prefers-reduced-motion:reduce){.article-toc li{animation:none}.article-toc__line,.post-index--home li{transition:none}}.article-image-group{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:24px;display:grid}.article-image-group[data-columns="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}.article-body .article-image-group{width:800px;max-width:calc(100vw - 40px);margin:24px 50% 48px;transform:translate(-50%)}.article-body .article-image-group>:is(img,.article-image),.rich-editor .tiptap .article-image-group>:is(img,.article-image){width:100%;min-width:0;max-width:100%;margin:0;transform:none}.article-body>.article-image-group:last-child{margin-bottom:0}@media (width<=540px){.article-image-group,.article-image-group[data-columns="3"]{grid-template-columns:minmax(0,1fr)}}.article-body img[data-import-status=pending]{background:var(--bg-container);width:100%;min-height:160px}:root{--site-content-width:1200px;--site-page-gutter:clamp(20px, 7vw, 120px)}body{background:var(--bg-normal);color:var(--text);font-family:var(--font-family);margin:0}a{color:inherit}.unified-main{min-height:60vh}html[data-page-kind=article] .unified-main{padding-top:84px}.unified-main--personal{min-height:100vh}.unified-shell>astro-island>.navigation,.unified-shell>astro-island>.footer{padding-inline:var(--site-page-gutter)}html[data-page-kind=article] .article-header .home-page__header{display:none}html[data-page-kind=article] .article-hero{border-top:0}#page-loading[hidden]{display:none}#page-loading{z-index:10000;background:var(--bg-normal);color:var(--icon);place-items:center;display:grid;position:fixed;inset:0}.page-loading__brand{align-items:center;gap:7px;display:flex}.page-loading__wordmark{animation:1.5s linear infinite fantuan-loading;display:block}html[data-page-loading]{overflow:hidden}html[data-page-pending] #root{opacity:0;pointer-events:none}@keyframes fantuan-loading{0%{clip-path:inset(0 100% 0 0)}40%,50%{clip-path:inset(0)}90%,to{clip-path:inset(0 0 0 100%)}}@media (prefers-reduced-motion:reduce){.page-loading__wordmark{animation:none}}.navigation-popover{--popover-viewport-padding:20px;background:var(--bg-popover);border-radius:var(--radius-2xl);box-shadow:inset 0 0 0 var(--border-weight-base) var(--border), 0 12px 32px color-mix(in srgb, var(--shadow-floating-strong) 80%, transparent), 0 4px 6px color-mix(in srgb, var(--shadow-floating-soft) 66.667%, transparent);max-height:var(--popover-available-height,calc(100dvh - 100px));width:min(800px, calc(100vw - 2 * var(--popover-viewport-padding)));z-index:1;flex-direction:column;gap:20px;display:flex;position:fixed;top:0;left:0;overflow:hidden}.navigation-popover[data-positioned=false]{visibility:hidden}.navigation-popover-body{border-radius:inherit;max-height:inherit;flex-direction:column;gap:20px;width:100%;min-height:0;padding:24px;display:flex;overflow:hidden auto}.navigation-popover-body>*{flex-shrink:0}@media (width>=801px) and (width<=1024px){.navigation-popover{--popover-viewport-padding:72px}}@media (width<=800px){.navigation-popover[role=dialog]{z-index:3;border-radius:0;width:100vw;height:100dvh;max-height:none;animation:.18s ease-out mobile-drawer-page-in;bottom:0;top:0!important;left:0!important}.navigation-popover[data-positioned=false]{visibility:visible}.navigation-popover-body{height:100%;padding:0 20px 20px}}@media (prefers-reduced-motion:reduce){.navigation-popover[role=dialog]{animation:none}}.mobile-popover-header{display:none}@media (width<=800px){.mobile-popover-header{background:var(--bg-popover);border-bottom:var(--border-weight-base) solid var(--border);z-index:1;flex:none;justify-content:space-between;align-items:center;width:calc(100% + 40px);min-height:84px;margin:0 -20px 20px;padding:10px 20px;display:flex;position:sticky;top:0}.mobile-popover-header__logo{color:var(--icon);flex:0 0 127px;width:127px;height:32px;display:block;position:relative;overflow:hidden}.mobile-popover-header__logo-graphics,.mobile-popover-header__logo-mark,.mobile-popover-header__logo-wordmark{display:block;position:absolute;inset:0 auto auto 0}.mobile-popover-header__logo-graphics{width:127px;height:32px}.mobile-popover-header__logo-mark,.mobile-popover-header__logo-wordmark{background-color:currentColor;height:32px;mask-position:0;mask-size:contain;mask-repeat:no-repeat}.mobile-popover-header__logo-wordmark{width:127px;mask-image:url(/assets/brand/logo-wordmark.svg)}.mobile-popover-header__logo-mark{opacity:0;width:32px;mask-image:url(/assets/brand/logo-mark.svg)}.mobile-popover-header__button{appearance:none;border-radius:var(--radius-sm);color:var(--icon);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:32px;height:32px;padding:6px;display:inline-flex}.mobile-popover-header__button>svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;width:20px;height:20px}.mobile-popover-header__button:focus-visible,.mobile-popover-header__logo:focus-visible{outline:2px solid var(--text);outline-offset:2px}}@media (width<=360px){.mobile-popover-header__logo{flex-basis:32px;width:32px}.mobile-popover-header__logo-wordmark{opacity:0}.mobile-popover-header__logo-mark{opacity:1}}@keyframes mobile-drawer-page-in{0%{transform:translate(100%)}}.products-popover{animation:.16s ease-out products-popover-in}.products-popover-backdrop{display:none}.products-popover__section{flex-direction:column;gap:12px;width:100%;display:flex}.products-popover__section h2{color:var(--text-subtlest);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);line-height:var(--line-height-sm);margin:0}.products-popover__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.products-popover__item{background:var(--bg-container);border-radius:var(--radius-lg);color:inherit;flex-direction:column;gap:8px;min-width:0;min-height:106px;padding:20px;text-decoration:none;transition:background-color .14s;display:flex}.products-popover__item:hover,.products-popover__item:focus-visible{background:var(--bg-container-hover)}.products-popover__item:focus-visible{outline:2px solid var(--text);outline-offset:2px}.products-popover__item strong{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);line-height:var(--line-height-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.products-popover__item span{-webkit-line-clamp:2;color:var(--text-subtlest);font-size:var(--font-size-xs);line-height:var(--line-height-xs);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}@keyframes products-popover-in{0%{opacity:0;transform:translateY(-4px)}}@media (width>=801px){.navigation.navigation--products-open{background:var(--bg-normal);border-bottom:0}.products-popover[role=dialog]{background:var(--bg-normal);border-bottom:var(--border-weight-base) solid var(--border);box-shadow:none;clip-path:inset(0);opacity:1;border-radius:0;width:100%;transition:clip-path .22s cubic-bezier(.22,1,.36,1),opacity .18s ease-out;animation:none}.products-popover-backdrop{appearance:none;background:color-mix(in srgb, var(--bg-normal) 50%, transparent);cursor:default;opacity:1;z-index:0;border:0;padding:0;transition:opacity .18s ease-out;display:block;position:fixed;bottom:0;left:0;right:0}.products-popover[role=dialog][data-state=closed]{clip-path:inset(0 0 100%);opacity:0;transition-duration:.16s}.products-popover-backdrop[data-state=closed]{opacity:0;transition-duration:.16s}@starting-style{.products-popover[role=dialog]{clip-path:inset(0 0 100%);opacity:0}.products-popover-backdrop{opacity:0}}.products-popover[role=dialog] .navigation-popover-body{grid-template-columns:repeat(4,minmax(0,240px));gap:32px;padding:8px max(20px,50vw - 600px) 32px;display:grid}.products-popover[role=dialog] .products-popover__section{gap:8px}.products-popover[role=dialog] .products-popover__section h2{color:var(--text-subtle);font-size:var(--font-size-xs);line-height:var(--line-height-xs)}.products-popover[role=dialog] .products-popover__grid{grid-template-columns:1fr;gap:0}.products-popover[role=dialog] .products-popover__item{border-radius:var(--radius-none);color:var(--text);background:0 0;min-height:0;padding:8px 0;transition:none}.products-popover[role=dialog] .products-popover__item:hover{text-decoration:underline;text-decoration-color:var(--text-subtlest);text-underline-offset:4px;text-decoration-thickness:1px}.products-popover[role=dialog] .products-popover__item strong{white-space:normal}.products-popover[role=dialog] .products-popover__item span{display:none}}@media (width<=800px){.products-popover__grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.products-popover{animation:none}.products-popover__item,.products-popover[role=dialog],.products-popover[role=dialog] .products-popover__item,.products-popover-backdrop{transition:none}}.segmented{background:var(--bg-container);border-radius:var(--radius-md);align-items:center;gap:2px;padding:2px;display:inline-flex;position:relative}.segmented__indicator{background:var(--bg-normal);border-radius:var(--radius-sm);opacity:0;pointer-events:none;transition:opacity .1s,transform .18s cubic-bezier(.2,.8,.2,1),width .18s cubic-bezier(.2,.8,.2,1),height .18s cubic-bezier(.2,.8,.2,1);position:absolute;top:0;left:0;box-shadow:0 1px 2px #0000000a}.segmented[data-indicator-ready=true] .segmented__indicator{opacity:1}.segmented__item{appearance:none;border-radius:var(--radius-sm);color:var(--text-subtlest);cursor:pointer;font-family:var(--font-family);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);letter-spacing:0;line-height:var(--line-height-xs);white-space:nowrap;z-index:1;-webkit-tap-highlight-color:transparent;background:0 0;border:0;justify-content:center;align-items:center;margin:0;transition:background-color .14s,color .14s,box-shadow .14s;display:inline-flex;position:relative}.segmented__item[data-has-icon=true][data-has-label=false]{padding:6px}.segmented__item[data-has-icon=false][data-has-label=true]{padding:3px 10px}.segmented__item[data-has-icon=true][data-has-label=true]{gap:4px;padding:3px 10px 3px 6px}.segmented--md .segmented__item[data-has-icon=true][data-has-label=false]{padding:8px}.segmented--md .segmented__item[data-has-icon=false][data-has-label=true]{padding:5px 12px}.segmented--md .segmented__item[data-has-icon=true][data-has-label=true]{padding:5px 12px 5px 8px}.segmented--lg .segmented__item[data-has-icon=true][data-has-label=false]{padding:10px}.segmented--lg .segmented__item[data-has-icon=false][data-has-label=true]{padding:7px 16px}.segmented--lg .segmented__item[data-has-icon=true][data-has-label=true]{padding:7px 16px 7px 10px}.segmented__item[data-selected=true]{color:var(--text);background:0 0}.segmented__item[data-selected=false]:hover{background:var(--bg-hover);color:var(--text)}.segmented__item:focus-visible{outline:2px solid var(--text);outline-offset:1px;z-index:1}.segmented__item:disabled{cursor:not-allowed;opacity:.45}.segmented__icon,.segmented__icon>svg{flex:0 0 16px;width:16px;height:16px;display:block}@media (prefers-reduced-motion:reduce){.segmented__indicator,.segmented__item{transition:none}}:root{--navigation-height:calc(84px + var(--border-weight-base))}.navigation{border-bottom:var(--border-weight-base) solid transparent;box-sizing:border-box;min-height:var(--navigation-height);inset-inline:0;z-index:100;justify-content:center;align-items:center;width:100%;padding:10px 20px;display:flex;position:fixed;top:0}.navigation--background{background:var(--bg-normal)}.navigation--scrolled{border-bottom-color:var(--border)}.navigation__content{align-items:center;gap:40px;width:100%;max-width:1200px;padding:16px 0;display:flex}.navigation__logo{color:var(--icon);flex:0 0 127px;width:127px;height:32px;transition:flex-basis .18s,width .18s;display:block;position:relative;overflow:hidden}.navigation--scrolled .navigation__logo{flex-basis:32px;width:32px}.navigation__logo:focus-visible,.navigation__item:focus-visible,.navigation__mobile-toggle:focus-visible{border-radius:var(--radius-sm);outline:2px solid var(--text);outline-offset:2px}.navigation__logo-graphics,.navigation__logo-mark,.navigation__logo-wordmark{display:block;position:absolute;inset:0 auto auto 0}.navigation__logo-graphics{width:127px;height:32px}.navigation__logo-mark,.navigation__logo-wordmark{background-color:currentColor;height:32px;transition:opacity .14s;mask-position:0;mask-size:contain;mask-repeat:no-repeat}.navigation__logo-wordmark{opacity:1;width:127px;mask-image:url(/assets/brand/logo-wordmark.svg)}.navigation__logo-mark{opacity:0;width:32px;mask-image:url(/assets/brand/logo-mark.svg)}.navigation--scrolled .navigation__logo-wordmark{opacity:0}.navigation--scrolled .navigation__logo-mark{opacity:1}.navigation__menu{flex:1 1 0;align-items:center;gap:12px;min-width:0;display:flex}.navigation__controls{box-sizing:border-box;opacity:1;border-radius:0;flex:none;justify-content:flex-start;align-items:center;gap:12px;width:auto;min-height:32px;padding:0;display:flex}.navigation__mobile-toggle{appearance:none;border-radius:var(--radius-sm);color:var(--icon);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:32px;height:32px;padding:6px;display:none}.navigation__mobile-toggle>svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:1.5px;width:20px;height:20px}.navigation__backdrop,.navigation__drawer-header,.navigation__mobile-language{display:none}.navigation__item{appearance:none;border-radius:var(--radius-sm);color:var(--text-subtle);cursor:pointer;font-family:var(--font-family);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);letter-spacing:0;line-height:var(--line-height-xs);white-space:nowrap;background:0 0;border:0;flex:none;justify-content:center;align-items:center;gap:4px;padding:5px 12px;text-decoration:none;transition:color .14s;display:inline-flex}.navigation__menu-item{position:relative}.navigation__item:hover,.navigation__item:focus-visible,.navigation__item--current{color:var(--text)}.navigation__item-icon{color:var(--icon-subtle);flex:0 0 16px;justify-content:center;align-items:center;width:16px;height:16px;display:flex}.navigation__item-icon>svg{width:7.02773px;height:4.16439px;transition:transform .14s;display:block}.navigation__item-icon--open>svg{transform:rotate(180deg)}@media (width>=801px){:root{--navigation-height:calc(76px + var(--border-weight-base))}.navigation__content{padding-block:8px}}@media (width<=800px){.navigation__content{justify-content:space-between;gap:20px}.navigation__menu,.navigation__desktop-language{display:none}.navigation__controls{gap:0;width:32px}.navigation__menu--open{background:var(--bg-popover);border-left:var(--border-weight-base) solid var(--border);z-index:2;flex-direction:column;align-items:stretch;gap:8px;width:min(360px,100vw);height:100dvh;padding:0 20px 20px;animation:.18s ease-out navigation-drawer-in;display:flex;position:fixed;inset:0 0 0 auto;overflow-y:auto}.navigation__menu--closing{animation:.18s ease-in forwards navigation-drawer-out}.navigation__menu--open .navigation__menu-item,.navigation__menu--open .navigation__item{width:100%}.navigation__menu--open .navigation__item{text-align:start;justify-content:space-between;padding:12px}.navigation__menu--open .navigation__item-icon{display:none}.navigation__drawer-header{background:var(--bg-popover);border-bottom:var(--border-weight-base) solid var(--border);z-index:1;flex:none;justify-content:space-between;align-items:center;width:calc(100% + 40px);min-height:84px;margin:0 -20px 12px;padding:10px 20px;display:flex;position:sticky;top:0}.navigation__drawer-header>strong{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);line-height:var(--line-height-sm)}.navigation__drawer-close{appearance:none;border-radius:var(--radius-sm);color:var(--icon);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:32px;height:32px;padding:6px;display:inline-flex}.navigation__drawer-close>svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:1.5px;width:20px;height:20px}.navigation__drawer-close:focus-visible{outline:2px solid var(--text);outline-offset:2px}.navigation__mobile-language{align-self:flex-start;margin-top:auto;display:inline-flex}.navigation__mobile-toggle{display:inline-flex}.navigation--menu-open .navigation__mobile-toggle{visibility:hidden}.navigation__backdrop{appearance:none;backdrop-filter:blur(2px);background:color-mix(in srgb, var(--text) 18%, transparent);z-index:1;border:0;padding:0;display:block;position:fixed;inset:0}}@keyframes navigation-drawer-in{0%{transform:translate(100%)}}@keyframes navigation-drawer-out{to{transform:translate(100%)}}@media (width<=480px){.navigation__menu--open{border-left:0;width:100vw}}@media (width<=360px){.navigation__logo{flex-basis:32px;width:32px}.navigation__logo-wordmark{opacity:0}.navigation__logo-mark{opacity:1}}@media (prefers-reduced-motion:reduce){.navigation__logo,.navigation__logo-mark,.navigation__logo-wordmark,.navigation__item,.navigation__mobile-toggle,.navigation__item-icon>svg{transition:none}.navigation__menu--open{animation:none}}.progressive-image{isolation:isolate;display:block;position:relative;overflow:hidden}.progressive-image>.progressive-image__full,.progressive-image>.progressive-image__preview{border-radius:inherit;object-fit:inherit;object-position:inherit;width:100%;height:100%;display:block}.progressive-image>.progressive-image__preview{filter:blur(12px);transition:opacity .24s;position:absolute;inset:0;transform:scale(1.12)}.progressive-image>.progressive-image__full{opacity:0;transition:opacity .24s;position:relative}.progressive-image[data-image-state=ready]>.progressive-image__full{opacity:var(--image-opacity,1)}.progressive-image[data-image-state=ready]>.progressive-image__preview{opacity:0}@media (prefers-reduced-motion:reduce){.progressive-image>.progressive-image__full,.progressive-image>.progressive-image__preview{transition:none}}.link{color:var(--text-subtle);font-family:var(--font-family);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);letter-spacing:0;line-height:var(--line-height-xs);text-align:center;white-space:nowrap;align-items:center;gap:4px;width:fit-content;text-decoration:none;transition:color .14s;display:inline-flex}.link:hover,.link:focus-visible,.link[data-demo-hover=true]{color:var(--text)}.link:focus-visible{outline:2px solid var(--text);outline-offset:2px;border-radius:2px}.link__icon,.link__icon>svg{color:var(--icon-subtle);flex:0 0 16px;width:16px;height:16px;display:block}@media (prefers-reduced-motion:reduce){.link{transition:none}}.footer{background:0 0;width:100%;padding:0 20px}.footer__content{flex-direction:column;gap:80px;max-width:1200px;margin:0 auto;padding:80px 0 120px;display:flex;position:relative}.footer__content:before{background:linear-gradient(90deg, var(--border-inverted) 0%, var(--border-intense) 50%, var(--border-inverted) 100%);content:"";height:var(--border-weight-base);position:absolute;top:0;left:0;right:0}.footer__main{grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;display:grid}.footer__brand{flex-direction:column;justify-content:space-between;min-height:228px;display:flex}.footer__brand-copy{flex-direction:column;gap:16px;display:flex}.footer__logo{color:var(--icon);width:fit-content;display:inline-flex}.footer__logo:focus-visible,.footer__social-link:focus-visible,.footer__legal a:focus-visible{border-radius:var(--radius-sm);outline:2px solid var(--text);outline-offset:2px}.footer__wordmark{height:32px;mask:var(--footer-logo-source) center / contain no-repeat;width:127px;-webkit-mask:var(--footer-logo-source) center / contain no-repeat;background:currentColor;display:block}.footer__brand-copy p{color:var(--text-subtlest);font-size:var(--font-size-xs);line-height:var(--line-height-xs);margin:0}.footer__theme{width:fit-content}.footer__navigation{grid-column:2/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;display:grid}.footer__link-group h2{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);line-height:var(--line-height-sm);margin:0 0 12px}.footer__link-group ul{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.footer__link{text-align:left;white-space:normal}.footer__bottom{justify-content:space-between;align-items:center;display:flex}.footer__socials{opacity:1;border-radius:0;flex-direction:row;justify-content:flex-start;align-items:flex-start;gap:12px;width:148px;height:28px;padding:0;display:flex}.footer__social-link{background:var(--bg-container);border-radius:var(--radius-sm);color:var(--icon-subtle);justify-content:center;align-items:center;width:28px;height:28px;transition:background-color .14s,color .14s;display:flex}.footer__social-link:hover{background:var(--bg-container-hover);color:var(--icon)}.footer__social-icon{height:20px;mask:var(--footer-icon-source) center / contain no-repeat;width:20px;-webkit-mask:var(--footer-icon-source) center / contain no-repeat;background:currentColor;display:block}.footer__legal,.footer__legal a,.footer__record{align-items:center;display:flex}.footer__legal{color:var(--text-subtlest);font-size:var(--font-size-xs);line-height:var(--line-height-xs);gap:12px}.footer__legal a{color:inherit;text-decoration:none}.footer__legal a:hover{color:var(--text)}.footer__record{gap:4px}.footer__record .progressive-image{width:16px;height:17px}.footer__legal-divider{background:var(--border);width:1px;height:16px}@media (width<=900px){.footer__main{grid-template-columns:minmax(180px,1fr) minmax(0,2fr)}.footer__navigation{grid-column:2;grid-template-columns:repeat(2,minmax(0,1fr));row-gap:32px}.footer__bottom{align-items:flex-start;gap:24px}.footer__legal{flex-wrap:wrap;justify-content:flex-end;align-items:flex-start}}@media (width<=800px){.footer__content{padding-bottom:168px}}@media (width<=600px){.footer{padding:0 16px}.footer__content{gap:48px;padding:32px 0 168px}.footer__main{grid-template-columns:1fr;gap:48px}.footer__brand{gap:32px;min-height:0}.footer__navigation{grid-column:1;grid-template-columns:repeat(2,minmax(0,1fr))}.footer__bottom{flex-direction:column;align-items:flex-start;gap:28px}.footer__legal{flex-direction:column;align-items:flex-start;gap:8px}.footer__legal-divider{display:none}}@media (prefers-reduced-motion:reduce){.footer__social-link{transition:none}}
