@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/manrope-cyrillic-wght-normal.Dvxsihut.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/manrope-greek-wght-normal.DL7QRZyv.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/manrope-vietnamese-wght-normal.usUDDRr7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/manrope-latin-ext-wght-normal.Ch3YOpNY.woff2)format("woff2-variations");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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/manrope-latin-wght-normal.DHIcAJRg.woff2)format("woff2-variations");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:Libre Caslon Display;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/libre-caslon-display-latin-ext-400-normal.CUYASYSA.woff2)format("woff2"),url(/_astro/libre-caslon-display-latin-ext-400-normal.xXeWa_lF.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:Libre Caslon Display;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/libre-caslon-display-latin-400-normal.n_DgBRfq.woff2)format("woff2"),url(/_astro/libre-caslon-display-latin-400-normal.BbfEE5V2.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}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-ease:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--font-weight-semibold:600;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--ease-out:cubic-bezier(0, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base{img{height:auto}}@layer components{.note-meta{color:var(--metadata-color);font-size:12px;line-height:1.625}.note-title{letter-spacing:-.025em;overflow-wrap:break-word;margin:12px 0 0;font-family:inherit;font-size:22px;font-weight:650;line-height:1.35}.note-summary{color:var(--description-color);overflow-wrap:break-word;margin:8px 0 0;font-size:15px;line-height:1.75}@media (width<=600px){.note-title{font-size:20px}}}@layer utilities{.visible{visibility:visible}.static{position:static}.sticky{position:sticky}.top-8{top:calc(var(--spacing) * 8)}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:0}.mx-auto{margin-inline:auto}.mt-1{margin-top:var(--spacing)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mr-auto{margin-right:auto}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-auto{height:auto}.max-h-\[calc\(100dvh-4rem\)\]{max-height:calc(100dvh - 4rem)}.min-h-11{min-height:calc(var(--spacing) * 11)}.w-full{width:100%}.max-w-\[64ch\]{max-width:64ch}.max-w-\[760px\]{max-width:760px}.max-w-\[1240px\]{max-width:1240px}.min-w-0{min-width:0}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\[var\(--line\)\]>:not(:last-child)){border-color:var(--line)}.self-start{align-self:flex-start}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded-lg{border-radius:var(--radius-lg)}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-\[var\(--line\)\]{border-color:var(--line)}.object-contain{object-fit:contain}.p-0{padding:0}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-words{overflow-wrap:break-word}.text-\[var\(--muted\)\]{color:var(--muted)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.decoration-\[var\(--line\)\]{-webkit-text-decoration-color:var(--line);-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line)}.underline-offset-4{text-underline-offset:4px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media (hover:hover){.group-hover\:text-\[var\(--accent\)\]:is(:where(.group):hover *){color:var(--accent)}}.group-focus-visible\:text-\[var\(--accent\)\]:is(:where(.group):focus-visible *){color:var(--accent)}@media (hover:hover){.hover\:text-\[var\(--accent\)\]:hover{color:var(--accent)}}.focus-visible\:text-\[var\(--accent\)\]:focus-visible{color:var(--accent)}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-4:focus-visible{outline-offset:4px}.focus-visible\:outline-\[var\(--accent\)\]:focus-visible{outline-color:var(--accent)}@media not all and (width>=600px){.max-\[600px\]\:py-6{padding-block:calc(var(--spacing) * 6)}}@media not all and (width>=400px){.max-\[400px\]\:hidden{display:none}.max-\[400px\]\:w-full{width:100%}}@media not all and (width>=64rem){.max-lg\:py-3{padding-block:calc(var(--spacing) * 3)}}@media (width>=40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.lg\:block{display:block}.lg\:hidden{display:none}.lg\:grid-cols-\[minmax\(0\,1fr\)_200px\]{grid-template-columns:minmax(0,1fr) 200px}}.\[\&_h2\]\:scroll-mt-8 h2,.\[\&_h3\]\:scroll-mt-8 h3{scroll-margin-top:calc(var(--spacing) * 8)}}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}:root{--accent:#1555e8;--muted:#5a6c77;--line:#23425624;--description-color:#405564;--metadata-color:#596b78;--surface-project:#eff3f5;--surface-project-hover:#f6f9fc;--surface-raised:#f8fafb;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-pill:999px;--shadow-card-hover:0 6px 22px #25445e08;--duration-fast:.16s;--duration-standard:.18s;--duration-button:.2s;--duration-icon:.22s;--ease-standard:ease;--ease-out:ease-out}.fanqie-home{--accent:#3058ee;--muted:#566c85}:root[data-theme=dark]{--line:#b3c5dc30;--description-color:#c6d1dd;--metadata-color:#a1afbe;--surface-project:#263242;--surface-project-hover:#2c3b4e;--surface-raised:#263242}:root[data-theme=dark],:root[data-theme=dark] .fanqie-home{--accent:#a6bcff;--muted:#a7b6c9}:root{color:#172a37;font-synthesis:none;--gutter:4vw;background:#e0edf3;font-family:Manrope Variable,sans-serif}*{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;min-width:320px;margin:0}button,a,input{font:inherit;-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;text-align:left;background:0 0;border:0;padding:0}a{color:inherit;text-decoration:none}.home-header nav a,.content-header nav a{transition:color var(--duration-standard) var(--ease-standard);position:relative}.home-header nav a:after,.content-header nav a:after{content:"";transform-origin:0;height:1px;transition:transform var(--duration-standard) var(--ease-standard);background:currentColor;position:absolute;inset:auto 0 5px;transform:scaleX(0)}.home-header nav a:is(:hover,:focus-visible):after,.content-header nav a:is(:hover,:focus-visible,[aria-current]):after{transform:scaleX(1)}.quiet-link,.back-link,.note-link h2,.note-link h3{transition:color var(--duration-standard) var(--ease-standard)}.quiet-link:is(:hover,:focus-visible),.back-link:is(:hover,:focus-visible){color:var(--accent);text-underline-offset:5px;text-decoration:underline 1px}.note-link{border-radius:2px}.note-link :is(h2,h3,p){text-wrap:pretty}.note-link>:is(svg,.note-arrow),.quiet-link svg,.window-scroll svg{transition:color var(--duration-standard) var(--ease-standard), transform var(--duration-icon) var(--ease-standard)}.note-link:is(:hover,:focus-visible)>:is(svg,.note-arrow){color:var(--accent)}@media (prefers-reduced-motion:no-preference){:root:not([data-motion=off]) :is(.note-link,.quiet-link):is(:hover,:focus-visible)>:is(svg,.note-arrow){transform:translate(3px,-3px)}:root:not([data-motion=off]) .window-scroll:is(:hover,:focus-visible) svg{transform:translateY(4px)}:root:not([data-motion=off]) .primary-button:is(:hover,:focus-visible):not(:disabled){transform:translateY(-2px)}}button,a{touch-action:manipulation}button:disabled{opacity:.35;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:5px}svg{flex-shrink:0}::selection{background:#b4cef8}.eyebrow{letter-spacing:.14em;color:var(--muted);font-size:10px;font-weight:700;display:block}.wordmark{letter-spacing:-1px;align-items:center;gap:8px;font-size:23px;font-weight:780;display:flex}.primary-button{background:var(--accent);color:#fff;min-height:50px;transition:background var(--duration-button) var(--ease-standard), transform var(--duration-button) var(--ease-standard);border-radius:40px;justify-content:center;align-items:center;gap:18px;padding:16px 24px;font-size:14px;font-weight:650;display:inline-flex}.primary-button:is(:hover,:focus-visible):not(:disabled){background:#093fbd}.text-button{align-items:center;gap:8px;min-height:44px;font-size:12px;font-weight:650;display:inline-flex}.text-button:is(:hover,:focus-visible):not(:disabled){color:var(--accent)}:is(.primary-button,.text-button,.theme-trigger,.theme-options button,.language-switch a,.project-card,.note-link):active:not(:disabled){filter:brightness(.9)}.window-scroll{min-height:44px}.explore-section{padding:80px var(--gutter) 0;background:#f1f5f6}.section-heading h2{letter-spacing:-.055em;margin:0 0 13px;font-size:clamp(34px,4vw,62px);font-weight:650}.section-heading>p{color:var(--muted);font-size:15px}footer{color:var(--muted);justify-content:space-between;gap:15px;padding:50px 0 85px;font-size:10px;display:flex}footer a:hover{color:var(--accent)}.skip-link{z-index:20;background:#fff;padding:12px;position:fixed;top:-100px;left:20px}.skip-link:focus{top:12px}@media (width<=900px){:root{--gutter:6vw}.wordmark{font-size:20px}.primary-button{min-height:47px;padding:14px 22px;font-size:13px}.explore-section{padding-top:50px}.section-heading h2{max-width:300px;font-size:37px;line-height:1.15}footer{flex-wrap:wrap;padding-top:35px;font-size:9px}footer>span:nth-child(2){order:3;width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}:root[data-motion=off] *,:root[data-motion=off] :before,:root[data-motion=off] :after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.explore-section{z-index:6;border-radius:32px 32px 0 0;margin-top:-20svh;position:relative;box-shadow:0 -24px 70px #25445e12}@media (width<=900px){.explore-section{border-radius:24px 24px 0 0;margin-top:0}}@media (prefers-reduced-motion:reduce){.explore-section{margin-top:0}}.header-actions{align-items:center;gap:clamp(18px,3vw,42px);display:flex}.language-switch{border-radius:var(--radius-pill);background:#f7fbff80;border:1px solid #607d9633;flex-shrink:0;align-items:center;gap:0;padding:2px;display:inline-flex;position:relative}.language-switch:before{content:"";border-radius:var(--radius-pill);width:30px;transition:transform var(--duration-standard) var(--ease-out);pointer-events:none;background:#ffffffc9;position:absolute;inset:2px auto 2px 2px;transform:translate(0)}.language-switch[data-locale=zh]:before{transform:translate(30px)}.language-switch a{border-radius:var(--radius-pill);width:30px;height:22px;color:var(--muted);place-items:center;padding:0;font-size:11px;font-weight:650;display:grid;position:relative}.language-switch a:after{content:"";position:absolute;inset:-11px 0}.language-switch a[aria-current],.language-switch a:hover{color:var(--accent)}:lang(zh-CN) .window-copy h1,:lang(zh-CN) .content-heading h1{letter-spacing:-.035em;font-family:Georgia,Songti SC,Noto Serif CJK SC,SimSun,serif;line-height:1.2}:lang(zh-CN) .window-copy h1{font-size:clamp(50px,5.2vw,82px)}@media (width<=600px){.home-header,.content-header{flex-wrap:wrap;row-gap:5px}.header-actions{display:contents}.home-header .header-actions nav,.content-header .header-actions nav{order:3;justify-content:flex-end;gap:22px;width:100%}:lang(zh-CN) .window-copy h1{font-size:clamp(36px,9vw,54px)}}.fanqie-home .home-header{right:24px}@media (width<=900px){.window-copy h1{min-height:calc(1.82*clamp(48px,15vw,104px))}}@media (width<=600px){.fanqie-home .home-header{right:16px}}@media (width<=360px){.window-copy p{min-height:4.65em}}@media (prefers-reduced-motion:reduce){.language-switch:before{transition:none}}:root[data-language-changing] :is(.window-copy>*,.header-actions nav,.window-scroll span,.explore-section>*,.content-page,.site-footer){opacity:0}.header-brand{flex-shrink:0;align-items:center;gap:8px;display:flex}.header-github{width:44px;height:44px;color:var(--muted);transition:color var(--duration-fast) var(--ease-standard);border-radius:50%;place-items:center;display:grid}.header-github:hover{color:var(--accent)}@media (width<=360px){.header-brand{gap:2px}.header-brand .wordmark{font-size:18px}.home-header,.content-header{column-gap:4px}.content-header{padding-inline:18px}}:root[data-language-pending=en] .language-switch:before{transform:translate(0)}:root[data-language-pending=zh] .language-switch:before{transform:translate(30px)}:root[data-language-pending] .language-switch a{color:var(--muted)}:root[data-language-pending=en] .language-switch a[lang=en],:root[data-language-pending=zh] .language-switch a[lang=zh-CN]{color:var(--accent)}@media (width<=600px){:root[data-language-pending=zh] .language-switch:before{transform:translate(48px)}}.content-header{justify-content:space-between;align-items:center;gap:24px;max-width:1120px;margin:auto;padding:30px 32px;display:flex}.content-header nav{gap:28px;display:flex}.content-header nav a{align-items:center;min-height:44px;padding-block:14px;font-size:14px;display:inline-flex}.content-header nav a[aria-current]{color:var(--accent)}.content-page{max-width:960px;min-height:55vh;margin:45px auto 100px;padding:0 32px}.content-heading{max-width:760px;margin:48px 0 42px}.content-heading h1{letter-spacing:-.05em;text-wrap:balance;overflow-wrap:anywhere;margin:18px 0 25px;font:400 clamp(42px,6vw,76px)/1.03 Georgia,serif}.content-heading>p{color:var(--muted);text-wrap:pretty;max-width:650px;font-size:18px;line-height:1.8}.back-link{min-height:44px;color:var(--muted);align-items:center;font-size:13px;display:inline-flex}.content-card{background:var(--surface-raised);border:1px solid #0000;border-radius:16px;padding:32px;display:block}.content-card:hover{border-color:#a8c1d9}.content-card h2{letter-spacing:-.03em;font:400 30px/1.2 Georgia,serif}.content-card p{color:var(--muted);font-size:14px;line-height:1.8}.content-card .eyebrow{line-height:1.8}.prose{color:#435864;max-width:720px;font-size:17px;line-height:1.9}.prose p{text-wrap:pretty;margin:1.2em 0}.prose h2,.prose h3{color:#172a37;margin-top:1.5em;font-family:Georgia,serif;font-weight:400;line-height:1.25}.prose a:not(.primary-button){color:#1648b8;text-underline-offset:4px;text-decoration:underline}.prose blockquote{border-left:2px solid #7fa6c1;margin:28px 0;padding-left:22px;font-family:Georgia,serif;font-size:22px}.prose code{border-radius:var(--radius-sm);overflow-wrap:anywhere;background:#eff4f8;padding:3px 5px;font-size:.88em}.prose pre{border-radius:var(--radius-md);padding:20px;overflow-x:auto}.prose img{max-width:100%}.project-tags{flex-wrap:wrap;gap:8px;margin:20px 0 28px;padding:0;list-style:none;display:flex}.project-tags li{color:#405a6b;border:1px solid #c9d9e4;border-radius:20px;padding:6px 12px;font-size:11px}.project-play-link{margin-top:20px;display:flex}.note-date{color:var(--muted);font-size:12px}@media (width<=600px){.content-header{gap:12px;padding:22px}.content-header .wordmark{font-size:20px}.content-header nav{gap:18px}.content-header nav a{font-size:12px}.content-page{margin-top:26px;padding-inline:22px}.content-heading{margin:35px 0}.content-heading>p{font-size:16px}.content-card{padding:25px}.prose{font-size:16px}}.project-preview{margin:0 0 28px}.project-preview img,.project-card-image{aspect-ratio:1.6;object-fit:contain;background:#e7edf1;border:1px solid #d4dfe4;border-radius:10px;width:100%;height:auto;display:block}.project-preview figcaption{color:var(--muted);margin-top:9px;font-size:12px;line-height:1.6}.project-preview-page{max-width:720px}.project-preview-page img{aspect-ratio:auto}.project-card-image{margin-bottom:24px}:root{transition:color .24s ease-in-out,background-color .24s ease-in-out}.appearance-controls{flex-shrink:0;align-items:center;gap:12px;display:flex}.theme-switch{color:var(--muted);align-items:center;min-height:44px;display:inline-flex;position:relative}.theme-trigger{background:#f7fbff80;border:1px solid #607d9633;border-radius:50%;place-items:center;width:28px;height:28px;display:grid;position:relative}.theme-trigger:after{content:"";position:absolute;inset:-8px}.theme-trigger:hover,.theme-trigger:focus-visible,.theme-trigger[aria-expanded=true]{color:var(--accent);background:#fff}.theme-options{z-index:10;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-raised);transform-origin:calc(100% - 14px) -4px;opacity:1;width:164px;transition:opacity .16s ease-out, transform .16s cubic-bezier(.2, .8, .2, 1), display .16s allow-discrete;padding:6px;position:absolute;top:calc(100% + 4px);right:0;transform:translateY(0)scale(1);box-shadow:0 8px 28px #17314724}.theme-options button{border-radius:7px;align-items:center;gap:10px;width:100%;min-height:44px;padding:8px 10px;font-size:12px;display:flex}.theme-options button span{flex:1}.theme-options button:hover,.theme-options button:focus-visible,.theme-options button[aria-pressed=true]{color:var(--accent);background:#e6eef7}:root[data-theme=dark] :is(.theme-trigger,.theme-options){color:#c7d3e3;background:var(--surface-raised);border-color:#788fa754}:root[data-theme=dark] :is(.theme-trigger:hover,.theme-trigger:focus-visible,.theme-trigger[aria-expanded=true],.theme-options button:hover,.theme-options button:focus-visible,.theme-options button[aria-pressed=true]){color:var(--accent);background:#36485f}.content-header .appearance-controls{position:static}.fanqie-sleep{filter:drop-shadow(0 7px 5px #080d1670)}:root[data-theme=dark]{color-scheme:dark;color:#ece8e1;background:#1c2532}:root[data-theme=dark] ::selection{color:#fff;background:#4d6590}:root[data-theme=dark] .fanqie-home{color:#ece8e1;background:#1c2532}:root[data-theme=dark] .window-copy h1{color:#f6ecdd}:root[data-theme=dark] :is(.window-copy p,.window-copy .eyebrow,.window-scroll){color:#acbdd5}:root[data-theme=dark] .primary-button{color:#fffaf2;background:#526fc1}:root[data-theme=dark] .primary-button:is(:hover,:focus-visible):not(:disabled){background:#607ed0}:root[data-theme=dark] .language-switch{color:#c7d3e3;background:#202c3fdd;border-color:#788fa754}:root[data-theme=dark] .language-switch:before{background:#40536d}:root[data-theme=dark] .props-layer a>span{color:#f3e9dc;background:#293444}:root[data-theme=dark] .fanqie-home .explore-section{background:#1c2532;box-shadow:0 -24px 70px #080e1826}:root[data-theme=dark] .content-card{background:var(--surface-raised);border-color:#425367}:root[data-theme=dark] .content-card:hover{border-color:#91a7c0}:root[data-theme=dark] :is(.content-card p,.content-heading>p){color:#b4c1d1}:root[data-theme=dark] .prose a:not(.primary-button){color:#aec3ff}:root[data-theme=dark] :is(.prose h2,.prose h3){color:#f0e5d8}:root[data-theme=dark] .prose{color:#c6cbd1}:root[data-theme=dark] :is(.project-preview img,.project-card-image,.prose code){background:#273443;border-color:#425367}:root[data-theme=dark] .project-tags li{color:#c7d3e0;border-color:#53667c}:root[data-theme=dark] .skip-link{color:#f5eada;background:#29394e}@media (width<=900px){:root[data-theme=dark] .window-background img{opacity:1}}@media (width<=600px){.appearance-controls{gap:12px}}@media (width<=360px){.home-header .header-brand .wordmark,.content-header .header-brand .wordmark{font-size:17px}.content-header{column-gap:4px;padding-inline:16px}.appearance-controls{gap:4px}.theme-switch select{max-width:60px}}@media (width<=600px){.appearance-controls{gap:4px}:root .appearance-controls .theme-switch button.theme-trigger{background:0 0;border:0;width:44px;height:44px}.theme-trigger:after{pointer-events:none;background:#f7fbff80;border:1px solid #607d9633;border-radius:50%;inset:8px}.theme-trigger svg{z-index:1;position:relative}.theme-trigger:hover:after,.theme-trigger:focus-visible:after,.theme-trigger[aria-expanded=true]:after{background:#fff}:root .appearance-controls .language-switch{background:0 0;border:0;height:44px;padding:0}.language-switch:after{content:"";border-radius:var(--radius-pill);pointer-events:none;background:#f7fbff80;border:1px solid #607d9633;position:absolute;inset:8px -2px}.language-switch:before{z-index:1;width:48px;inset:10px auto 10px 0}.language-switch[data-locale=zh]:before{transform:translate(48px)}.language-switch a{z-index:2;width:48px;height:44px}.language-switch a:after{content:none}:root[data-theme=dark] .theme-trigger:after,:root[data-theme=dark] .language-switch:after{background:var(--surface-raised);border-color:#788fa754}:root[data-theme=dark] .theme-trigger:hover:after,:root[data-theme=dark] .theme-trigger:focus-visible:after,:root[data-theme=dark] .theme-trigger[aria-expanded=true]:after{background:#36485f}}.theme-options[hidden]{opacity:0;transform:translateY(-4px)scale(.96)}@starting-style{.theme-options:not([hidden]){opacity:0;transform:translateY(-4px)scale(.96)}}@media (width<=600px){.theme-options{transform-origin:calc(100% - 22px) -4px}}.site-footer{border-top:1px solid var(--line);max-width:1240px;margin:72px auto 0;padding:0 0 24px;scroll-margin-top:32px;font-size:13px;display:block}.site-footer--content{width:calc(100% - 64px);max-width:1056px;margin-inline:auto}.footer-contact{justify-content:flex-end;align-items:flex-start;gap:28px;padding:28px 0;display:flex}.footer-contact-column{min-width:160px}.footer-contact h2{font:inherit;color:var(--muted);margin:0 0 8px;font-size:12px;font-weight:600;line-height:1.5}.contact-links,.contact-links a,.footer-bottom,.footer-bottom nav{align-items:center;display:flex}.contact-links{flex-direction:column;align-items:flex-start;gap:0}.contact-links a{min-height:44px;color:var(--muted);gap:8px;font-size:13px}.contact-links a:hover span,.contact-links a:focus-visible span,.footer-bottom a:is(:hover,:focus-visible){text-underline-offset:5px;text-decoration:underline}.contact-arrow{opacity:.6}.footer-bottom{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:8px 24px;padding-top:16px;font-size:12px}.footer-bottom nav{flex-wrap:wrap;gap:24px}.footer-bottom a{align-items:center;min-height:44px;display:inline-flex}@media (width<=600px){.site-footer{margin-top:44px}.site-footer--content{width:calc(100% - 44px)}.footer-contact{gap:20px;padding:24px 0}.footer-contact-column{min-width:88px}.contact-links a{min-height:44px}.footer-bottom{display:block}.footer-bottom nav{margin-top:8px}}
