@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.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}:root{--brand:#00aeec;--brand-deep:#0092c8;--fg:#16232d;--fg-2:#3d4a55;--muted:#6e7681;--muted-2:#9aa3ad;--line:#eef0f2;--line-2:#e4e7ea;--panel:#f4f5f7;--panel-2:#eceef1;--note-bg:#fff7eb;--note-line:#f7d9a6;--note-ink:#e07a12;--bg:#fff;--r:4px;--r-panel:6px;--gap:16px;--wrap:1040px;--wrap-read:720px;--font:"Inter Variable","Inter",-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--ease:cubic-bezier(.4,0,.2,1)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:78px}body{background:var(--bg);color:var(--fg);font:400 15px/1.65 var(--font);font-feature-settings:"cv02","cv03","cv04","cv11";-webkit-font-smoothing:antialiased;letter-spacing:-.011em;margin:0}h1,h2,h3,h4,p,figure{margin:0}ul,ol{margin:0;padding:0;list-style:none}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto;display:block}svg{display:block}code{font-family:var(--mono)}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:var(--r)}.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 24px}.wrap-read{width:100%;max-width:var(--wrap-read);margin:0 auto;padding:0 24px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.btn{border-radius:var(--r);background:var(--brand);color:#fff;white-space:nowrap;height:42px;transition:background .2s var(--ease);justify-content:center;align-items:center;gap:8px;padding:0 22px;font-size:14.5px;font-weight:600;display:inline-flex}.btn:hover{background:var(--brand-deep)}.btn.ghost{background:var(--panel);color:var(--fg)}.btn.ghost:hover{background:var(--panel-2)}.panel .btn.ghost{background:#fff}.panel .btn.ghost:hover{background:var(--panel-2)}.btn.sm{height:34px;padding:0 15px;font-size:13.5px}.site-head{z-index:40;background:var(--bg);padding:16px 0;position:sticky;top:0}.site-head .in{align-items:center;gap:18px;min-height:38px;display:flex}.site-head .brand{flex:none;align-items:center;gap:11px;display:flex}.site-head .brand img{border-radius:var(--r);flex:none;width:36px;height:36px}.site-head .mark{flex-direction:column;justify-content:space-between;align-self:stretch;align-items:flex-start;padding:1px 0;display:flex}.site-head .mark svg{fill:currentColor;stroke:#fff;stroke-width:.7px;stroke-linejoin:round;width:auto;height:16px}.site-head .mark i{color:var(--muted-2);font-size:11.5px;font-style:normal;line-height:1}.site-nav{gap:22px;margin-left:auto;display:flex}.site-nav a{color:#7b8d9a;transition:color .2s var(--ease);font-size:14px}.site-nav a:hover{color:var(--fg)}.site-nav a[aria-current=page]{color:var(--fg);font-weight:600}.panel{margin-top:var(--gap);border-radius:var(--r-panel);background:var(--panel);padding:24px}.hero+.panel{margin-top:0}.panel-head{justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:16px;display:flex}.panel-head h2{letter-spacing:-.01em;font-size:19px;font-weight:600}.panel-head span{color:var(--muted-2);font-size:12.5px}.hero{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:36px;padding:56px 8px 60px;display:grid}.hero h1{letter-spacing:-.03em;font-size:clamp(28px,3.6vw,40px);font-weight:600;line-height:1.3}.hero-txt>p{max-width:30em;color:var(--muted);margin-top:16px;font-size:15px}.acts{flex-wrap:wrap;gap:10px;margin-top:24px;display:flex}.hero-shots{flex:none;gap:12px;display:flex}.hero-shots figure{border-radius:var(--r);border:1px solid var(--line);background:#fff;width:176px;overflow:hidden}@media (width<=880px){.hero{text-align:center;grid-template-columns:minmax(0,1fr);gap:0;padding:44px 0 46px}.hero-shots{display:none}.hero-txt>p{margin-inline:auto}.acts{justify-content:center}.devices .lab{text-align:center}.dev-track{justify-content:center}}.devices{border-top:1px solid var(--line-2);margin-top:30px;padding-top:22px}.devices .lab{letter-spacing:.05em;color:var(--muted-2);margin-bottom:15px;font-size:12px;font-weight:500;display:block}.devices .strip{overflow:hidden}.dev-track{align-items:center;gap:38px;width:max-content;display:flex}.dev-track .dup{display:none}.dev-track li{white-space:nowrap;color:var(--muted);opacity:.66;transition:opacity .2s var(--ease),color .2s var(--ease);flex:none;align-items:center;gap:10px;font-size:15px;font-weight:500;display:flex}.dev-track li:hover{opacity:1;color:var(--fg)}.dev-track svg{width:19px;height:19px}@media (width<=880px){.devices .strip{-webkit-mask-image:linear-gradient(90deg,#0000,#000 3% 93%,#0000);mask-image:linear-gradient(90deg,#0000,#000 3% 93%,#0000)}.dev-track{animation:dev-run var(--dev-dur,26s) linear infinite;will-change:transform;gap:30px}.dev-track .dup{display:flex}.devices .strip:hover .dev-track,.devices .strip:focus-within .dev-track{animation-play-state:paused}.dev-track li{font-size:14.5px}}@keyframes dev-run{0%{transform:translate(0,0)}to{transform:translate(calc(-50% - 15px))}}@media (prefers-reduced-motion:reduce){.dev-track{animation:none}.devices .strip{scrollbar-width:none;overflow-x:auto;-webkit-mask-image:none;mask-image:none}.devices .strip::-webkit-scrollbar{display:none}}.feats{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.feats article{border-radius:var(--r);background:#fff;padding:18px}.feats b{font-size:15px;font-weight:600}.feats p{color:var(--muted);margin-top:8px;font-size:13.5px;line-height:1.7}@media (width<=860px){.feats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=520px){.feats{grid-template-columns:minmax(0,1fr)}}.shots{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 3% 97%,#0000);mask-image:linear-gradient(90deg,#0000,#000 3% 97%,#0000)}.shots-track{width:max-content;animation:shots-run var(--dur,52s) linear infinite;will-change:transform;gap:8px;display:flex}.shots:hover .shots-track,.shots:focus-within .shots-track{animation-play-state:paused}@keyframes shots-run{0%{transform:translate(0,0)}to{transform:translate(calc(-50% - 4px))}}.shots figure{border-radius:var(--r);background:#fff;flex:none;width:212px;padding:12px 12px 14px}.shots img{border-radius:3px;width:100%}.shots figcaption{color:var(--muted-2);text-overflow:ellipsis;white-space:nowrap;margin-top:11px;font-size:12.5px;overflow:hidden}@media (width<=560px){.shots figure{width:176px}}@media (prefers-reduced-motion:reduce){.shots-track{animation:none}.shots{overflow-x:auto;-webkit-mask-image:none;mask-image:none}}.cta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;padding:28px 32px;display:flex}.cta h2{letter-spacing:-.01em;font-size:19px;font-weight:600}.cta p{color:var(--muted);margin-top:7px;font-size:13.5px}.post-list{flex-direction:column;gap:2px;display:flex}.post-item{transition:opacity .2s var(--ease);grid-template-columns:132px minmax(0,1fr);align-items:start;gap:16px;padding:14px 0;display:grid}.post-item:hover .post-body h2 a,.post-item:hover .post-body h3 a{color:var(--brand)}.post-cover{border-radius:var(--r);background:var(--panel-2);aspect-ratio:8/5;margin:0;overflow:hidden}.post-cover img{object-fit:cover;object-position:center;width:100%;height:100%;display:block}.post-body{flex-direction:column;min-width:0;height:82.5px;display:flex;overflow:hidden}.post-item h2,.post-item h3{letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;font-size:16.5px;font-weight:600;line-height:1.45;overflow:hidden}.post-item h2 a,.post-item h3 a{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.post-item h2 a:hover,.post-item h3 a:hover{color:var(--brand)}.post-item .excerpt{min-height:0;color:var(--muted);-webkit-line-clamp:1;-webkit-box-orient:vertical;flex:1;margin-top:7px;font-size:13.5px;line-height:1.7;display:-webkit-box;overflow:hidden}.post-meta{color:var(--muted-2);flex-wrap:wrap;align-items:center;gap:10px;font-size:12.5px;display:flex}.post-item .post-meta{white-space:nowrap;flex-wrap:nowrap;margin-top:4px;overflow:hidden}.post-meta time{font-variant-numeric:tabular-nums}.tag:before{content:"·";margin-right:10px}.post-meta .tag:first-of-type:before{content:none}@media (width<=560px){.post-item{grid-template-columns:124px minmax(0,1fr);gap:14px;padding:12px 0}.post-body{height:77.5px}}.panel .post-item .excerpt{-webkit-line-clamp:1}@media (width<=680px){.panel .post-item h2,.panel .post-item h3{font-size:13px;line-height:1}.panel .post-item .excerpt{-webkit-line-clamp:2;margin-top:6px;font-size:12px;line-height:1.5}.panel .post-item .post-meta .tag{display:none}}.page-head{padding:56px 0 20px}.page-head h1{letter-spacing:-.025em;font-size:28px;font-weight:600;line-height:1.25}.page-head p{color:var(--muted);margin-top:10px;font-size:15px}.post-head{padding:56px 0 20px}.post-head h1{letter-spacing:-.027em;font-size:clamp(24px,3.2vw,32px);font-weight:600;line-height:1.3}.post-head .desc{color:var(--muted);margin-top:12px;font-size:15.5px;line-height:1.7}.post-head .post-meta{margin-bottom:12px}.article{margin-top:var(--gap)}.prose{color:var(--fg-2);font-size:15.5px;line-height:1.82}.prose>*+*{margin-top:1.05em}.prose h2{letter-spacing:-.02em;color:var(--fg);margin-top:2em;scroll-margin-top:86px;font-size:19px;font-weight:600}.prose h3{color:var(--fg);margin-top:1.6em;scroll-margin-top:86px;font-size:16.5px;font-weight:600}.prose ul,.prose ol{padding-left:1.3em}.prose ul{list-style:outside}.prose ol{list-style:decimal}.prose li{margin-top:.4em}.prose li::marker{color:var(--muted-2)}.prose a{color:var(--brand);text-underline-offset:3px;text-decoration:underline}.prose strong{color:var(--fg);font-weight:600}.prose blockquote{border-radius:var(--r-panel);background:var(--note-bg);border:1px solid var(--note-line);color:var(--fg-2);margin-inline:0;padding:15px 18px;font-size:14.5px;line-height:1.75}.prose blockquote>*+*{margin-top:.6em}.prose blockquote strong{color:var(--note-ink)}.prose code{background:var(--panel);color:var(--fg);border-radius:3px;padding:2px 6px;font-size:.88em}.prose pre{border-radius:var(--r);padding:16px 18px;font-size:13.5px;line-height:1.65;overflow-x:auto;background:var(--panel)!important}.prose pre code{font-size:inherit;background:0 0;padding:0}.prose img{border-radius:var(--r);margin-inline:auto}.prose details{border-radius:var(--r);background:var(--panel);padding:0 16px}.prose details+details{margin-top:8px}.prose summary{cursor:pointer;color:var(--fg);align-items:center;gap:12px;padding:14px 0;font-size:15px;font-weight:600;list-style:none;display:flex}.prose summary::-webkit-details-marker{display:none}.prose summary:after{content:"";border-right:1.6px solid var(--muted-2);border-bottom:1.6px solid var(--muted-2);width:7px;height:7px;transition:transform .2s var(--ease);flex:none;margin-left:auto;transform:translateY(-2px)rotate(45deg)}.prose details[open] summary:after{transform:translateY(2px)rotate(-135deg)}.prose details>:not(summary){color:var(--fg-2);margin-top:0;padding-bottom:15px;font-size:14.5px;line-height:1.75}.prose hr{border:0;border-top:1px solid var(--line-2);margin:2em 0}.prose table{border-collapse:separate;border-spacing:0;border:1px solid var(--line-2);border-radius:var(--r);width:100%;font-size:14.5px;overflow:hidden}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--line);padding:10px 13px}.prose td+td,.prose th+th{border-left:1px solid var(--line)}.prose tr:last-child td{border-bottom:0}.prose thead th{background:var(--panel);color:var(--fg);font-weight:600}.post-nav{margin-top:var(--gap);flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:14px;display:flex}.post-nav a{color:var(--muted)}.post-nav a:hover{color:var(--brand)}.site-foot{background:var(--panel);color:var(--muted);margin-top:56px;padding:44px 0 40px;font-size:13.5px}.foot-cols{border-bottom:1px solid var(--line-2);grid-template-columns:2fr 1fr 1fr 1fr;gap:32px;padding-bottom:28px;display:grid}.foot-brand img{border-radius:var(--r);width:32px;height:32px}.foot-brand b{color:var(--fg);letter-spacing:-.01em;margin-top:10px;font-size:15px;font-weight:600;display:block}.foot-brand p{max-width:22em;color:var(--muted-2);margin-top:6px;font-size:13px;line-height:1.7}.foot-col h2{color:var(--fg);margin-bottom:12px;font-size:13px;font-weight:600}.foot-col ul{flex-direction:column;gap:8px;display:flex}.foot-col a{color:var(--muted);transition:color .2s var(--ease)}.foot-col a:hover{color:var(--brand)}.foot-bottom{color:var(--muted-2);flex-wrap:wrap;justify-content:space-between;gap:16px;padding-top:20px;font-size:12.5px;display:flex}.foot-bottom p{max-width:44em}@media (width<=820px){.foot-cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.foot-brand{grid-column:1/-1}}@media (width<=480px){.foot-bottom{flex-direction:column;gap:6px}}.nf{text-align:center;padding:90px 0}.nf h1{letter-spacing:-.04em;color:var(--muted-2);font-size:60px;font-weight:600}.nf p{color:var(--muted);margin-top:10px}.nf .acts{justify-content:center;margin-top:22px}.menu-btn{border-radius:var(--r);width:38px;height:38px;color:var(--fg);transition:background .2s var(--ease);flex:none;place-items:center;display:none}.menu-btn:hover{background:var(--panel)}.menu-btn svg{width:20px;height:20px}.scrim{z-index:50;opacity:0;visibility:hidden;transition:opacity .25s var(--ease),visibility .25s;background:#16232d4d;position:fixed;inset:0}.drawer{z-index:60;border-left:1px solid var(--line);visibility:hidden;width:min(80vw,290px);transition:transform .28s var(--ease),visibility .28s;background:#fff;flex-direction:column;padding:14px 20px 24px;display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%)}.nav-open .scrim{opacity:1;visibility:visible}.nav-open .drawer{visibility:visible;transform:none}.nav-open{overflow:hidden}.drawer-top{color:var(--muted-2);justify-content:space-between;align-items:center;font-size:12.5px;display:flex}.drawer-nav{flex-direction:column;margin-top:14px;display:flex}.drawer-nav a{border-bottom:1px solid var(--line);transition:color .2s var(--ease);padding:13px 2px;font-size:16px;font-weight:500}.drawer-nav a:hover{color:var(--brand)}.drawer-dl{width:100%;margin-top:auto}@media (width<=680px){.wrap,.wrap-read{padding:0 16px}.site-head .mark i{font-size:11px}.site-nav,.head-dl{display:none}.menu-btn{margin-left:auto;display:grid}.panel{padding:20px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition-duration:.01ms!important}}
