sk-if{display:contents}
sk-if[hidden]{display:none}
.sk-cols>*:nth-child(4n){padding-right:0}.sk-cols.c3>*:nth-child(4n){padding-right:48px}.sk-cols.c3>*:nth-child(3n){padding-right:0}@media (max-width: 980px){.sk-cols>*:nth-child(n),.sk-cols.c3>*:nth-child(n){padding-right:28px}.sk-cols>*:nth-child(2n),.sk-cols.c3>*:nth-child(2n){padding-right:0}}
.sk-doc{display:grid;grid-template-columns:248px minmax(0,1fr) 220px;gap:80px;max-width:1440px;margin:0 auto;padding:56px 24px 120px}.sk-doc-side{position:sticky;top:80px;align-self:start;max-height:calc(100vh - 100px);overflow:auto;padding-bottom:24px}.sk-doc-search{display:flex;align-items:center;gap:8px;height:38px;padding:0 12px;border:1px solid var(--sk-line,#E1E5EC);border-radius:10px;color:var(--sk-faint,#7A8291);background:var(--sk-surface,#FFFFFF)}.sk-doc-search input{flex:1;min-width:0;border:0;outline:0;background:none;font:inherit;font-size:14px;color:var(--sk-ink,#0E1422)}.sk-doc-g{margin-top:26px}.sk-doc-gl{font-family: 'Plus Jakarta Sans', system-ui, sans-serif;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--sk-faint,#7A8291);font-weight:700;margin:0 0 8px 10px}.sk-doc-nav a{display:block;padding:7px 10px;border-radius:8px;font-size:14.5px;color:var(--sk-muted,#3D4655);text-decoration:none}.sk-doc-nav a:hover{color:var(--sk-ink,#0E1422)}.sk-doc-nav a.is-on{background:var(--sk-bg-soft,#F2F4F8);color:var(--sk-ink,#0E1422);font-weight:600}.sk-doc-empty{display:none;margin:20px 10px;font-size:14px;color:var(--sk-faint,#7A8291)}.sk-doc-main{min-width:0;max-width:760px}.sk-doc-art+.sk-doc-art{margin-top:96px;padding-top:56px;border-top:1px solid var(--sk-line,#E6E9EF)}.sk-docs-js .sk-doc-art{display:none}.sk-docs-js .sk-doc-art.is-on{display:block;animation:skDocIn .35s ease}.sk-docs-js .sk-doc-art+.sk-doc-art{margin-top:0;padding-top:0;border-top:0}@keyframes skDocIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.sk-doc-crumb{font-size:14px;color:var(--sk-faint,#7A8291)}.sk-doc-art h1{margin:10px 0 0;font-size:clamp(32px,3.4vw,42px);line-height:1.12;font-weight:700;letter-spacing:-0.035em}.sk-doc-lead{margin:16px 0 0;font-size:18px;line-height:1.65;color:var(--sk-muted,#3D4655)}.sk-doc-art h2{margin:52px 0 0;font-size:22px;line-height:1.3;font-weight:700;letter-spacing:-0.02em;scroll-margin-top:96px}.sk-doc-art p{margin:14px 0 0;font-size:16.5px;line-height:1.75;color:var(--sk-ink-2,#2A3342)}.sk-doc-art ul.sk-doc-l{list-style:none;margin:14px 0 0;padding:0}.sk-doc-art ul.sk-doc-l li{padding:11px 0;border-bottom:1px solid var(--sk-line,#E6E9EF);font-size:16px;line-height:1.6;color:var(--sk-ink-2,#2A3342)}.sk-doc-art ul.sk-doc-l li:first-child{border-top:1px solid var(--sk-line,#E6E9EF)}.sk-doc-art ol{list-style:none;counter-reset:s;margin:16px 0 0;padding:0}.sk-doc-art ol li{counter-increment:s;position:relative;padding:0 0 18px 40px;font-size:16px;line-height:1.65;color:var(--sk-ink-2,#2A3342)}.sk-doc-art ol li::before{content:counter(s);position:absolute;left:0;top:0;width:26px;height:26px;border-radius:50%;border:1px solid var(--sk-line,#D9DDE4);font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center;color:var(--sk-ink,#0E1422)}.sk-doc-note{margin:18px 0 0;padding:14px 18px;border-radius:12px;background:var(--sk-bg-soft,#F4F6F9);font-size:15px;line-height:1.65;color:var(--sk-muted,#3D4655)}.sk-doc-note b{color:var(--sk-ink,#0E1422);margin-right:8px}.sk-doc-link{display:inline-flex;align-items:center;gap:6px;margin-top:14px;font-size:16px;font-weight:600;color:var(--sk-link,#265EE6);text-decoration:none}.sk-doc-link svg{transition:transform .25s}.sk-doc-link:hover svg{transform:translateX(3px)}.sk-doc-pn{display:flex;gap:16px;margin-top:72px}.sk-doc-pn a{flex:1;display:block;padding:16px 18px;border:1px solid var(--sk-line,#E6E9EF);border-radius:12px;text-decoration:none;color:var(--sk-ink,#0E1422)}.sk-doc-pn a:hover{border-color:var(--sk-faint,#AEB6C4)}.sk-doc-pn span{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--sk-faint,#7A8291)}.sk-doc-pn b{display:block;margin-top:4px;font-size:15.5px;font-weight:600}.sk-doc-pn .nx{text-align:right}.sk-doc-pn .nx span{justify-content:flex-end}.sk-doc-toc{position:sticky;top:80px;align-self:start}.sk-doc-toc .lbl{font-size:13px;font-weight:600;color:var(--sk-ink,#0E1422)}.sk-doc-toc a{display:block;margin-top:10px;font-size:13.5px;line-height:1.45;color:var(--sk-faint,#7A8291);text-decoration:none}.sk-doc-toc a.is-on{color:var(--sk-ink,#0E1422);font-weight:600}.sk-doc-menu>summary{display:none}@media (max-width: 1100px){.sk-doc{grid-template-columns:220px minmax(0,1fr);gap:48px}.sk-doc-toc{display:none}}@media (max-width: 760px){.sk-doc{grid-template-columns:1fr;gap:24px;padding-top:24px}.sk-doc-side{position:static;max-height:none;padding-bottom:0}.sk-doc-g{margin-top:16px}.sk-doc-menu{margin-top:12px;border:1px solid var(--sk-line,#E1E5EC);border-radius:10px;padding:0 12px}.sk-doc-menu>summary{display:flex;align-items:center;justify-content:space-between;height:44px;font-size:14.5px;font-weight:600;cursor:pointer;list-style:none}.sk-doc-menu>summary::-webkit-details-marker{display:none}.sk-doc-menu>summary::after{content:"";width:8px;height:8px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .2s}.sk-doc-menu[open]>summary::after{transform:rotate(-135deg)}.sk-doc-menu[open]{padding-bottom:12px}}.sk-cl{max-width:1120px;margin:0 auto;padding:80px 24px 120px}.sk-cl-hd h1{margin:14px 0 0;font-size:clamp(36px,4.6vw,56px);line-height:1.05;font-weight:700;letter-spacing:-0.04em}.sk-cl-hd p{margin:16px 0 0;font-size:18px;line-height:1.6;color:var(--sk-muted,#3D4655)}.sk-cl-e{display:grid;grid-template-columns:200px minmax(0,1fr);gap:56px;padding:72px 0;border-top:1px solid var(--sk-line,#E6E9EF)}.sk-cl-hd+.sk-cl-e{margin-top:64px}.sk-cl-meta{position:sticky;top:88px;align-self:start}.sk-cl-date{font-size:15px;color:var(--sk-muted,#3D4655)}.sk-cl-ver{display:inline-block;margin-top:10px;padding:3px 10px;border-radius:999px;background:var(--sk-bg-soft,#F2F4F8);font-size:13px;font-weight:600;color:var(--sk-ink,#0E1422)}.sk-cl-e h2{margin:0;font-size:clamp(26px,2.6vw,32px);line-height:1.2;font-weight:700;letter-spacing:-0.03em}.sk-cl-fig{position:relative;margin-top:28px;aspect-ratio:16/9;border-radius:20px;background-color:var(--sk-bg-soft,#F4F6F9);background-image:radial-gradient(var(--sk-dot,#D5DAE3) 1px,transparent 1.2px);background-size:18px 18px;display:flex;align-items:center;justify-content:center;color:var(--sk-faint,#9AA3B2);font-size:14px}.sk-cl-e p{margin:14px 0 0;font-size:17px;line-height:1.75;color:var(--sk-ink-2,#2A3342)}.sk-cl-e h3{margin:32px 0 0;font-size:15px;font-weight:700;color:var(--sk-ink,#0E1422)}.sk-cl-e ul{list-style:none;margin:10px 0 0;padding:0}.sk-cl-e li{padding:10px 0;border-bottom:1px solid var(--sk-line,#E6E9EF);font-size:15.5px;line-height:1.6;color:var(--sk-ink-2,#2A3342)}.sk-cl-e li:first-child{border-top:1px solid var(--sk-line,#E6E9EF)}.sk-cl-ver{display:inline-flex !important;align-items:center;gap:6px}.sk-cl-ver svg{flex:none}.sk-cl-flt button{display:inline-flex;align-items:center;gap:7px}.sk-cl-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.sk-cl-tag{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:999px;border:1px solid var(--sk-line,#E1E5EC);font-size:13.5px;font-weight:600;color:var(--sk-ink,#0E1422)}.sk-cl-tag svg{color:var(--sk-muted,#4A5466)}.sk-cl-e h3{display:flex !important;align-items:center;gap:8px}.sk-cl-k{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 11px;border-radius:999px;font-size:13.5px;font-weight:700}.sk-cl-k.k-new{background:rgba(38,94,230,.10);color:#1F55D6}.sk-cl-k.k-improved{background:rgba(16,150,100,.11);color:#0E7A52}.sk-cl-k.k-fixed{background:rgba(214,120,20,.12);color:#A85A06}.sk-dark .sk-cl-k.k-new{background:rgba(110,150,255,.16);color:#9DB8FF}.sk-dark .sk-cl-k.k-improved{background:rgba(60,200,140,.15);color:#7FDCB2}.sk-dark .sk-cl-k.k-fixed{background:rgba(240,160,70,.16);color:#F3BE7E}.sk-cl-n{font-size:13px;font-weight:600;color:var(--sk-faint,#7A8291)}.sk-cl-flt{display:flex;gap:6px;margin-top:28px}.sk-cl-flt button{height:34px;padding:0 14px;border-radius:999px;border:1px solid var(--sk-line,#E1E5EC);background:none;font:inherit;font-size:14px;font-weight:600;color:var(--sk-muted,#3D4655);cursor:pointer}.sk-cl-flt button.is-on{background:var(--sk-ink,#0E1422);border-color:var(--sk-ink,#0E1422);color:var(--sk-bg,#FFFFFF)}.sk-cl-e.is-hid{display:none}.sk-cl-hd+.sk-cl-e,.sk-cl-hd~.sk-cl-e.is-first{margin-top:56px}@media (max-width: 760px){.sk-cl-e{grid-template-columns:1fr;gap:16px;padding:48px 0}.sk-cl-meta{position:static;display:flex;align-items:center;gap:12px}.sk-cl-ver{margin-top:0}}
.sk-cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.sk-cols>*{padding:6px 48px;border-left:1px solid var(--sk-line,#E6E9EF)}.sk-cols>*:first-child{padding-left:0;border-left:0}.sk-cols.c3{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:80px}.sk-cols.c3>*:nth-child(3n+1){padding-left:0;border-left:0}@media (max-width: 980px){.sk-cols,.sk-cols.c3{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:44px}.sk-cols>*,.sk-cols.c3>*{padding-left:28px;border-left:1px solid var(--sk-line,#E6E9EF)}.sk-cols>*:nth-child(2n+1),.sk-cols.c3>*:nth-child(2n+1){padding-left:0;border-left:0}}@media (max-width: 600px){.sk-cols,.sk-cols.c3{grid-template-columns:1fr;row-gap:32px}.sk-cols>*,.sk-cols.c3>*{padding:0 !important;border-left:0 !important}}@media (max-width: 900px){.sk-vs{padding:0 !important;border-right:0 !important}.sk-vs+.sk-vs{margin-top:44px}}
.sk-vgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:72px 64px}.sk-vgrid.c4{grid-template-columns:repeat(4,1fr);gap:56px 48px}.sk-ft{display:block;color:var(--sk-ink,#0E1422);text-decoration:none}.sk-ft-ic{display:block;width:52px;height:52px;color:var(--sk-ink,#0E1422)}.sk-ft-ic .ac{color:var(--sk-link,#265EE6)}.sk-ft-rule{display:block;width:28px;height:1px;margin:28px 0 22px;background:var(--sk-line,#D9DDE4)}.sk-ft p{margin:0;font-size:17px;line-height:1.6;color:var(--sk-muted,#4A5466)}.sk-ft p b{font-weight:700;color:var(--sk-ink,#0E1422)}.sk-ft p b::after{content:". "}:lang(zh) .sk-ft p b::after{content:"。"}.sk-ft-more{display:inline-flex;align-items:center;gap:6px;margin-top:16px;font-size:15px;font-weight:600;color:var(--sk-link,#265EE6)}.sk-ft-more svg{transition:transform .25s ease}a.sk-ft:hover .sk-ft-more svg{transform:translateX(4px)}a.sk-ft:hover .sk-ft-ic{transform:translateY(-2px)}.sk-ft-ic{transition:transform .3s ease}.sk-anim .sk-ft{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}.sk-anim .sk-ft.is-in{opacity:1;transform:none}.sk-anim .sk-ft-ic *{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.2s cubic-bezier(.6,.1,.2,1)}.sk-anim .sk-ft.is-in .sk-ft-ic *{stroke-dashoffset:0}.sk-anim .sk-ft-ic .ac{transition-delay:.35s}.sk-anim .sk-ft-rule{transform:scaleX(0);transform-origin:0 50%;transition:transform .8s ease .25s}.sk-anim .sk-ft.is-in .sk-ft-rule{transform:none}@media (prefers-reduced-motion: reduce){.sk-anim .sk-ft,.sk-anim .sk-ft-ic *,.sk-anim .sk-ft-rule{opacity:1 !important;transform:none !important;stroke-dashoffset:0 !important;transition:none !important}}.sk-stackp{position:relative;height:560px;border-radius:28px;overflow:hidden;background:var(--sk-bg-soft,#F4F6F9)}.sk-dark .sk-stackp{background:#12161F}.sk-stk{position:absolute;transition:transform .5s ease}.sk-stk.s0::after,.sk-stk.s1::after{content:"";position:absolute;inset:0;border-radius:16px;pointer-events:none;background:rgba(244,246,249,.62)}.sk-stk.s1::after{background:rgba(244,246,249,.36)}.sk-dark .sk-stk.s0::after{background:rgba(18,22,31,.62)}.sk-dark .sk-stk.s1::after{background:rgba(18,22,31,.36)}.sk-stk.s0,.sk-stk.s1{box-shadow:none}.sk-stackp:hover .sk-stk.s0{transform:translateX(-14px)}.sk-stackp:hover .sk-stk.s1{transform:translateX(-7px)}@media (max-width: 1000px){.sk-vgrid,.sk-vgrid.c4{grid-template-columns:repeat(2,1fr);gap:56px 40px}.sk-stackp{height:auto !important;padding-bottom:24px}.sk-stackp>[role=img]{position:relative !important;inset:auto !important}.sk-stk-cap{position:static !important;padding:0 24px}.sk-stk.s0,.sk-stk.s1{display:none}.sk-stk.s2{position:relative !important;left:auto !important;top:auto !important;width:auto !important;margin:24px}}@media (max-width: 620px){.sk-vgrid,.sk-vgrid.c4{grid-template-columns:1fr}}
.sk-pi{border-top:1px solid var(--sk-line,#E6E9EF)}.sk-pi:last-child{border-bottom:1px solid var(--sk-line,#E6E9EF)}.sk-pi-t{display:block;width:100%;padding:20px 0;border:0;background:none;text-align:left;font:inherit;font-size:21px;font-weight:700;letter-spacing:-0.02em;color:var(--sk-faint,#9AA3B2);cursor:pointer;transition:color .3s}.sk-pi.is-on .sk-pi-t{color:var(--sk-ink,#0E1422);padding-bottom:14px}.sk-pi-bar{display:none;height:2px;background:var(--sk-line,#E6E9EF);margin:0 0 16px}.sk-pi-bar span{display:block;height:100%;width:0;background:var(--sk-ink,#0E1422)}.sk-pi.is-on .sk-pi-bar{display:block}.sk-pi-b{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s ease}.sk-pi-b>p{overflow:hidden}.sk-pi.is-on .sk-pi-b{grid-template-rows:1fr;padding-bottom:22px}.sk-stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:40px;opacity:0;transform:translateY(12px);transition:opacity .4s ease,transform .4s ease;pointer-events:none}.sk-stage.is-on{opacity:1;transform:none}.sk-cur{position:absolute;left:0;top:0;z-index:5;pointer-events:none;opacity:0;filter:drop-shadow(0 4px 10px rgba(14,20,34,.28))}.sk-cur svg{display:block;position:relative;transition:transform .12s ease}.sk-cur.is-down svg{transform:scale(.84)}.sk-cur-rip{position:absolute;left:5px;top:3px;width:46px;height:46px;border-radius:50%;background:radial-gradient(circle,rgba(58,117,255,.30),rgba(58,117,255,0) 70%);border:1.5px solid rgba(58,117,255,.6);opacity:0}.sk-pl-bar{transform-origin:50% 100%}.sk-pl-hov{transform:translateY(-3px) !important;box-shadow:0 0 0 2px rgba(58,117,255,.55),0 16px 36px rgba(14,20,34,.16) !important;position:relative;z-index:2;transition:transform .25s ease,box-shadow .25s ease}.sk-stage.is-top{align-items:flex-start;justify-content:flex-start;padding:48px 0 0 48px}.sk-stage-crop{height:100%;width:100%;overflow:hidden;-webkit-mask-image:linear-gradient(180deg,#000 82%,transparent),linear-gradient(90deg,#000 88%,transparent);-webkit-mask-composite:source-in;mask-image:linear-gradient(180deg,#000 82%,transparent),linear-gradient(90deg,#000 88%,transparent);mask-composite:intersect}.sk-pin-mobile{display:none}@media (max-width: 900px){.sk-pin{display:none}.sk-pin-mobile{display:block}.sk-pin-mobile .sk-stage{padding:20px}.sk-pin-mobile .sk-stage.is-top{padding:20px 0 0 20px}.sk-pin-mobile .sk-stage.is-top .sk-stage-crop>div{zoom:.32 !important}}
.sk-dark{--mk-bg-ffffff:#121B2D;--mk-bg-f1f2f4:#0B0C0F;--mk-bg-f4f5f7:#172134;--mk-bg-f6f7f9:#151517;--mk-bg-f7f8fa:#172134;--mk-bg-f3f4f7:#172134;--mk-bg-ecedf0:#1B2539;--mk-bg-eef0f3:#1B2539;--mk-bg-eef1f6:#172134;--mk-bg-f8f8f9:#141C2E;--mk-bg-eef2fb:#1A2336;--mk-bg-e3e6ec:#2A3447;--mk-bg-d5d9e1:#2E3A50;--mk-bg-c9ced8:#34405A;--mk-bg-e7eaf0:#243047;--mk-bg-e3e8f1:#243047;--mk-bg-d5dbe6:#2E3A50;--mk-bg-dce2ec:#2E3A50;--mk-bg-e6e8ec:#2A3447;--mk-bg-e7e9ed:#293244;--mk-bg-9aa3b2:#5F6B80;--mk-bg-b8c0cc:#4A566C;--mk-bg-eaf1ff:#16274A;--mk-bg-cfe0fd:#1E3566;--mk-bg-9ec1fb:#2B4F9E;--mk-bg-1d3fd0:#8FB3FF;--mk-bg-bcd3ff:#24407A;--mk-bg-cfe0ff:#1E3566;--mk-bg-e8f7ef:#13301F;--mk-bg-fff4e0:#33270F;--mk-bg-fff1de:#33270F;--mk-bg-ddf0ff:#12304A;--mk-bg-f8e6ff:#2E1838;--mk-bg-efebff:#241D45;--mk-bg-fff4c2:#332E0F;--mk-bg-fdecec:#3A1717;--mk-bg-ffd9a8:#4A3A22;--mk-bg-bdebd2:#1E4A36;--mk-bg-d9f2e4:#1E4A36;--mk-bg-ffe7c7:#4A3A22;--mk-bg-f2fafd:#141C2E;--mk-bg-f5f8ff:#141C2E;--mk-bg-f2fbf6:#141C2E;--mk-bg-f8faff:#141C2E;--mk-bg-eef3ff:#16274A;--mk-bg-141a26:#33415A;--mk-bg-0e1422:#33415A;--mk-fg-141a26:#EEF3FF;--mk-fg-1f2735:#EEF3FF;--mk-fg-2a3342:#DBE4F3;--mk-fg-3a4252:#C9D3E4;--mk-fg-4a5466:#AAB6C9;--mk-fg-5f6878:#9AA8BD;--mk-fg-6b7484:#8A97AB;--mk-fg-7a8291:#7D8AA0;--mk-fg-8a919e:#718097;--mk-fg-6f7a8d:#8A97AB;--mk-fg-a1a8b5:#5F6B80;--mk-fg-8f9aad:#8A97AB;--mk-fg-2c62e8:#33A1FF;--mk-fg-12804f:#5BD69B;--mk-fg-a0620a:#F5BC62;--mk-fg-b4610b:#F5BC62;--mk-fg-1f3a5c:#9CC7FF;--mk-fg-8a3fc9:#D49BFF;--mk-fg-4a2266:#E3C2FF;--mk-fg-6246d9:#A996FF;--mk-fg-5c4600:#F2D16B;--mk-fg-b42318:#F08D78;--mk-fg-0a6f8f:#6FD3F2;--mk-fg-e3a72f:#F2C75C;--mk-bd-e6e8ec:rgba(157,174,207,.2);--mk-bd-e1e4ea:rgba(157,174,207,.2);--mk-bd-e6e9ef:rgba(157,174,207,.2);--mk-bd-eef0f3:rgba(157,174,207,.2);--mk-bd-eceef2:rgba(157,174,207,.2);--mk-bd-e3e5e9:rgba(157,174,207,.2);--mk-bd-e1e5ec:rgba(157,174,207,.2);--mk-bd-c5cad3:rgba(157,174,207,.36);--mk-bd-b9c0cb:rgba(157,174,207,.36);--mk-bd-b8c0cc:rgba(157,174,207,.36);--mk-bd-cdeff9:rgba(111,211,242,.3);--mk-st-4a5466:#AAB6C9;--mk-st-3a4252:#C9D3E4;--mk-st-8a919e:#718097;--mk-st-6b7484:#8A97AB;--mk-st-5f6878:#9AA8BD;--mk-st-141a26:#EEF3FF;--mk-st-e1e6f0:#2A3447;--mk-st-2c62e8:#33A1FF}
.sk-dark .sk-menu-item.is-soon,.sk-dark .sk-menu-item.is-soon *{color:#6F7A8F !important}
.sk-menu-item.is-soon,.sk-menu-item.is-soon *{color:#8A93A3 !important}
.sk-menu-item.is-soon{white-space:nowrap}
.sk-menu-item.is-soon:hover,.sk-dark .sk-menu-item.is-soon:hover{background:transparent !important}
html{scroll-behavior:smooth}
.sk-totop{position:fixed;right:24px;bottom:24px;z-index:60;display:flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:999px;border:1px solid var(--sk-line,#E1E5EC);background:rgba(255,255,255,.86);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:var(--sk-ink,#0E1422);opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .2s ease,transform .2s ease,background-color .15s ease}
.sk-totop.is-on{opacity:1;transform:none;pointer-events:auto}
.sk-totop:hover{background:var(--sk-surface,#FFFFFF);color:var(--sk-ink,#0E1422);transform:translateY(-1px)}
.sk-dark .sk-totop{background:rgba(18,24,38,.86);border-color:rgba(255,255,255,.12)}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}
section[id]{scroll-margin-top:60px}
.sk-sub{background:rgba(255,255,255,.9);-webkit-backdrop-filter:blur(18px) saturate(180%);backdrop-filter:blur(18px) saturate(180%);border-bottom:1px solid rgba(14,20,34,.08)}
.sk-dark .sk-sub{background:rgba(10,13,20,.8);border-bottom-color:rgba(255,255,255,.08)}
.sk-sub-link{color:var(--sk-muted,#4E5868);transition:color .15s ease}
.sk-sub-link:hover,.sk-sub-link.is-active{color:var(--sk-ink,#0E1422)}
.sk-sub-link.is-active{box-shadow:inset 0 -2px 0 var(--sk-ink,#0E1422)}
[lang="zh-Hans"] h1,[lang="zh-Hans"] h2,[lang="zh-Hans"] h3{text-wrap:balance}
[lang="zh-Hans"] p,[lang="zh-Hans"] li{text-wrap:pretty}
body{margin:0;background:#FFFFFF}
*{box-sizing:border-box}
a{color:#265EE6;text-decoration:none}a:hover{color:#1F50C9}
.sk-nav-link{transition:background-color .15s ease,color .15s ease}
.sk-nav-link:hover{background:rgba(14,20,34,.06);color:#0E1422}
.sk-btn{transition:background-color .15s ease,transform .15s ease}
.sk-btn:hover{transform:translateY(1px)}
.sk-btn-blue:hover{background:#1F50C9 !important;color:#FFFFFF}
.sk-btn-white:hover{background:#EEF3FF !important;color:#0E1422}
.sk-btn-light:hover{background:#E9EDF5 !important;color:#0E1422}
.sk-btn-ghost-dark:hover{background:rgba(255,255,255,.12) !important;color:#FFFFFF}
.sk-menu-item{transition:background-color .15s ease}
.sk-menu-item:hover{background:#F3F5F9}
.sk-card{transition:transform .2s ease,border-color .2s ease}
.sk-card:hover{transform:translateY(-2px);border-color:#D3DAE6}
.sk-xlink{transition:background-color .15s ease}
.sk-xlink:hover{background:#F4F6FA}
.sk-faq{transition:background-color .15s ease}
.sk-faq:hover{background:#F7F8FB}
.sk-flink{transition:color .15s ease}
.sk-flink:hover{color:#0E1422}
@keyframes skPulse{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes skRise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.sk-pulse{animation:skPulse 1.6s ease-in-out infinite}
.sk-rise{animation:skRise .8s .4s cubic-bezier(.2,.7,.2,1) both}
@media (prefers-reduced-motion: reduce){.sk-pulse,.sk-rise{animation:none}}
@media (max-width: 980px){.sk-hide-md{display:none !important}.sk-show-md{display:flex !important}.sk-app-zoom{zoom:.64}}
@media (max-width: 620px){.sk-app-zoom{zoom:.34}}
/* ---------- Theme tokens (dark values; light values are the inline fallbacks) ---------- */
.sk-dark{--sk-bg:#0A0D14;--sk-surface:#121826;--sk-bg-soft:#0F141E;--sk-fill:#1A2130;--sk-ink:#F2F5FA;--sk-ink-2:#D5DCE7;--sk-muted:#AFB9C9;--sk-link:#86A9FF;--sk-green-t:#5BD69B;--sk-violet-t:#A996FF;--sk-teal-t:#6FD3F2;--sk-line:rgba(255,255,255,.09);--sk-dot:#2A3344;--sk-invert-bg:#F2F5FA;--sk-invert-fg:#0E1422;--sk-grad-end:#8F9BB0;--sk-pro-end:#0F1626;--sk-pro-line:rgba(134,169,255,.35);--sk-hero-a:#0A0D14;--sk-hero-b:#0E1730;--sk-hero-c:#16306B;--sk-gridline:rgba(255,255,255,.04);--sk-dots:rgba(255,255,255,.07);color-scheme:dark}
.sk-dark a{color:#86A9FF}
.sk-dark .sk-menu-item:hover,.sk-dark .sk-xlink:hover,.sk-dark .sk-faq:hover{background:rgba(255,255,255,.06)}
.sk-dark .sk-tab:hover{background:rgba(134,169,255,.12);border-color:rgba(134,169,255,.35);color:#DCE6FF}
.sk-dark .sk-step:hover{background:#1A2130}
.sk-dark .sk-btn-light:hover{background:#252E40 !important;color:#F2F5FA}
.sk-dark .sk-card:hover{border-color:rgba(255,255,255,.22)}
.sk-dark .sk-flink:hover{color:#FFFFFF}
.sk-dark .sk-btn-white:hover{background:#E6EDFF !important}
/* ---------- Header states ---------- */
.sk-hdr{transition:background-color .25s ease,border-color .25s ease;border-bottom:1px solid transparent}
.sk-h-top{background:transparent;--sk-nav:#F2F6FF;--sk-nav-strong:#FFFFFF;--sk-nav-border:rgba(255,255,255,.3)}
.sk-h-hero{background:rgba(20,52,160,.55);-webkit-backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(18px) saturate(160%);border-bottom-color:rgba(255,255,255,.14);--sk-nav:#F2F6FF;--sk-nav-strong:#FFFFFF;--sk-nav-border:rgba(255,255,255,.3)}
.sk-h-page{background:rgba(255,255,255,.8);-webkit-backdrop-filter:blur(18px) saturate(180%);backdrop-filter:blur(18px) saturate(180%);border-bottom-color:rgba(14,20,34,.08);--sk-nav:#2A3342;--sk-nav-strong:#0E1422;--sk-nav-border:#DDE2EA}
.sk-h-top .sk-nav-link:hover,.sk-h-hero .sk-nav-link:hover{background:rgba(255,255,255,.14);color:#FFFFFF}
.sk-dark .sk-h-hero{background:rgba(10,13,20,.6);border-bottom-color:rgba(255,255,255,.08)}
.sk-dark .sk-h-page{background:rgba(10,13,20,.78);border-bottom-color:rgba(255,255,255,.08);--sk-nav:#D5DCE7;--sk-nav-strong:#F2F5FA;--sk-nav-border:rgba(255,255,255,.16)}
.sk-dark .sk-h-page .sk-nav-link:hover{background:rgba(255,255,255,.08);color:#FFFFFF}

.sk-pe{margin-right:-.5em}
/*sk-hero-shot*/.sk-hero-stage{position:relative;padding:clamp(16px,5.4vw,80px);border-radius:16px;border:1px solid var(--sk-line,#E3E7EE);background:#F3F5F9;overflow:hidden}.sk-hero-grid{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(15,23,42,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(15,23,42,.055) 1px,transparent 1px);background-size:56px 56px;background-position:center center}.sk-hero-shot{position:relative;z-index:1;max-width:1240px;margin:0 auto;animation:skHeroIn 1s cubic-bezier(.2,.7,.2,1) .1s both}.sk-hero-shot .sk-shot img{filter:drop-shadow(0 1px 2px rgba(15,23,42,.06)) drop-shadow(0 14px 36px rgba(15,23,42,.10))}.sk-dark .sk-hero-stage{background:#101318;border-color:rgba(255,255,255,.08)}.sk-dark .sk-hero-grid{background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px)}.sk-dark .sk-hero-shot .sk-shot img{filter:drop-shadow(0 16px 40px rgba(0,0,0,.5))}@keyframes skHeroIn{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.sk-hero-shot{animation:none}}
/*sk-shot*/.sk-shot{position:relative}.sk-shot img{display:block;width:100%;height:auto;filter:drop-shadow(0 1px 2px rgba(15,23,42,.08)) drop-shadow(0 12px 32px rgba(15,23,42,.10))}.sk-shot .sk-shot-d{display:none}.sk-dark .sk-shot .sk-shot-l{display:none}.sk-dark .sk-shot .sk-shot-d{display:block}.sk-dark .sk-shot img{filter:drop-shadow(0 12px 32px rgba(0,0,0,.45))}
@media (max-width: 1180px){.sk-nav-xl{display:none}}
.sk-ptline{max-width:1241px}@media (max-width: 1240px){.sk-ptline{max-width:1056px}}@media (max-width: 620px){.sk-ptline{max-width:none}}#projects [role=tabpanel]{animation:skUcIn .55s cubic-bezier(.2,.7,.2,1)}@media (prefers-reduced-motion: reduce){#projects [role=tabpanel]{animation:none}}
/*sk-pricing*/.sk-plans{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:48px;border:1px solid var(--sk-line,#E1E5EC);border-radius:20px;background:var(--sk-surface,#FFFFFF);overflow:hidden}.sk-plan{display:flex;flex-direction:column;min-width:0;padding:36px 36px 40px;border-left:1px solid var(--sk-line,#E6E9EF)}.sk-plan:first-child{border-left:0}.sk-plan.pro{background:var(--sk-pro-end,#F5F8FF)}.sk-plan.soon .sk-plan-list{color:var(--sk-muted,#4E5868)}.sk-plan-list{list-style:none;margin:0;padding:0;font-size:14.5px;line-height:1.5;color:var(--sk-ink-2,#2A3342)}.sk-plan-list li{display:flex;gap:10px;padding:11px 0;border-top:1px solid var(--sk-line,#E6E9EF)}.sk-plan-list li:first-child{border-top:0;padding-top:0}.sk-cmp-wrap{overflow-x:auto;margin-top:32px}.sk-cmp{width:100%;min-width:680px;border-collapse:collapse;font-size:14.5px;line-height:1.45}.sk-cmp th,.sk-cmp td{padding:14px 16px;text-align:left;border-bottom:1px solid var(--sk-line,#E6E9EF);vertical-align:top}.sk-cmp th:first-child,.sk-cmp td:first-child{padding-left:0;width:34%}.sk-cmp thead th{font-size:15px;font-weight:700;color:var(--sk-ink,#0E1422);border-bottom:1px solid var(--sk-ink,#0E1422)}.sk-cmp td{color:var(--sk-ink-2,#2A3342)}.sk-cmp td:first-child{color:var(--sk-ink,#0E1422);font-weight:600}.sk-cmp td.no{color:var(--sk-muted,#8A93A3)}.sk-cmp tr.grp td{padding-top:36px;font-size:13px;letter-spacing:.06em;font-weight:700;color:var(--sk-link,#265EE6);border-bottom:1px solid var(--sk-line,#E6E9EF)}@media (max-width: 980px){.sk-plans{grid-template-columns:1fr}.sk-plan{border-left:0;border-top:1px solid var(--sk-line,#E6E9EF)}.sk-plan:first-child{border-top:0}}@media (max-width: 600px){.sk-plan{padding:28px 24px 32px}}.sk-plan-list li::before{content:'';flex:none;width:16px;height:16px;margin-top:3px;background:var(--sk-ink-2,#2A3342);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cmask id='m'%3E%3Crect width='16' height='16' fill='white'/%3E%3Cpath d='M4.7 8.3l2.2 2.2 4.5-4.7' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/mask%3E%3Ccircle cx='8' cy='8' r='8' fill='black' mask='url(%23m)'/%3E%3C/svg%3E") center/16px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cmask id='m'%3E%3Crect width='16' height='16' fill='white'/%3E%3Cpath d='M4.7 8.3l2.2 2.2 4.5-4.7' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/mask%3E%3Ccircle cx='8' cy='8' r='8' fill='black' mask='url(%23m)'/%3E%3C/svg%3E") center/16px no-repeat}.sk-plan.pro .sk-plan-list li::before{background:var(--sk-link,#265EE6)}.sk-plan.soon .sk-plan-list li::before{background:var(--sk-muted,#8A93A3);opacity:.7}
#projects .sk-ph{max-width:1240px;margin-left:auto;margin-right:auto}
.sk-wsmore svg{transition:transform .25s ease}.sk-wsmore:hover svg{transform:translateX(4px)}
.sk-ucbar{position:absolute;left:0;right:0;bottom:0;height:2px;background:transparent;pointer-events:none}.sk-ucbar span{display:block;height:100%;width:0;background:var(--sk-ink,#0E1422);opacity:.85}.sk-ucdots{display:flex;justify-content:center;gap:4px;margin-top:22px}.sk-ucdots button{width:28px;height:28px;padding:0;border:0;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center}.sk-ucdots button span{display:block;width:8px;height:8px;border-radius:999px;background:var(--sk-line,#CDD3DD);transition:width .3s ease,background .3s ease}.sk-ucdots button.is-on span{width:22px;background:var(--sk-ink,#0E1422)}#use-cases [role=tabpanel]{animation:skUcIn .55s cubic-bezier(.2,.7,.2,1)}@keyframes skUcIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.sk-ucbar{display:none}#use-cases [role=tabpanel]{animation:none}}
.sk-ph{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:28px 80px;align-items:start;min-height:180px}
.sk-pl li{padding:11px 0}
.sk-pl li+li{border-top:1px solid var(--sk-line,#E6E9EF)}
.sk-pl li:first-child{padding-top:4px}
@media (max-width: 900px){.sk-ph{grid-template-columns:1fr;min-height:0}}
.sk-cx{--cx-bg:#FFFFFF;--cx-side:#F7F7F8;--cx-line:#E7E7EA;--cx-ink:#1F1F22;--cx-mute:#6E6E74;--cx-faint:#A1A1A7;--cx-sel:#EBEBED;--cx-bubble:#F1F1F3;--cx-chip:#E2E2E6;--cx-amb-bg:rgba(245,158,11,.14);--cx-amb:#B45309;--cx-dot:#F07B3F;--cx-tag-bg:#0E1422;--cx-tag:#FFFFFF}
.sk-dark .sk-cx{--cx-bg:#1C1C1F;--cx-side:#161618;--cx-line:#2C2C30;--cx-ink:#ECECEF;--cx-mute:#A2A2A8;--cx-faint:#6F6F76;--cx-sel:#2A2A2E;--cx-bubble:#2A2A2E;--cx-chip:#3A3A3F;--cx-amb-bg:rgba(255,184,77,.16);--cx-amb:#FFC56B;--cx-tag-bg:#FFFFFF;--cx-tag:#0E1422}
section[id]{scroll-margin-top:64px}
.sk-nav-link{white-space:nowrap;transition:background-color .15s ease,color .15s ease}
.sk-btn{transition:background-color .15s ease,transform .15s ease,border-color .15s ease}
.sk-reveal .sk-pill{opacity:0;transform:translateY(4px);transition:opacity .2s ease,transform .2s ease}
.sk-reveal:hover .sk-pill{opacity:1;transform:none}
.sk-step{transition:background-color .15s ease,border-color .15s ease}
.sk-step:hover{background:#FFFFFF;border-color:#C9D7FB}
.sk-tab{transition:background-color .15s ease,border-color .15s ease,color .15s ease}
.sk-tab:hover{background:#EEF3FF;border-color:#C9D7FB;color:#1F3F99}
.sk-arrow{transition:transform .2s ease}
.sk-more:hover .sk-arrow{transform:translateX(3px)}
@keyframes skFill{from{width:6%}to{width:62%}}
@keyframes skScan{0%{transform:translateX(-120%)}100%{transform:translateX(320%)}}
.sk-fill{animation:skFill 2.4s cubic-bezier(.2,.7,.2,1) both}
.sk-rise{animation:skRise .8s .3s cubic-bezier(.2,.7,.2,1) both}
.sk-rise-2{animation:skRise .8s 1.1s cubic-bezier(.2,.7,.2,1) both}
.sk-scan{animation:skScan 2.8s ease-in-out infinite}
.sk-pz{zoom:.94}
.sk-pz2{zoom:.94}
@media (max-width: 1240px){.sk-pz{zoom:.8}}
@media (max-width: 620px){.sk-pz{zoom:.6}.sk-pz2{zoom:.7}}
@keyframes skFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.sk-float{animation:skFloat 6s ease-in-out infinite}
@media (prefers-reduced-motion: reduce){.sk-pulse,.sk-fill,.sk-rise,.sk-rise-2,.sk-scan,.sk-float{animation:none}}
.sk-h-band,.sk-dark .sk-h-band{background:rgba(7,10,18,.72);-webkit-backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(18px) saturate(160%);border-bottom-color:rgba(255,255,255,.08);--sk-nav:#D5DCE7;--sk-nav-strong:#FFFFFF;--sk-nav-border:rgba(255,255,255,.18)}
.sk-h-band .sk-nav-link:hover{background:rgba(255,255,255,.1);color:#FFFFFF}
@media (max-width: 620px){.sk-pz{zoom:.6}}
.sk-fgrid{display:grid;grid-template-columns:repeat(3,1fr);row-gap:64px}.sk-fcell{padding:0 40px;border-left:1px solid var(--sk-line,#E6E9EF)}.sk-fcell:nth-child(3n+1){padding-left:0;border-left:0}@media (max-width: 900px){.sk-fgrid{grid-template-columns:1fr;row-gap:40px}.sk-fcell{padding:0;border-left:0}}@media (max-width: 760px){#how,#features{padding-left:16px !important;padding-right:16px !important}}
.sk-pi{border-top:1px solid var(--sk-line,#E6E9EF)}.sk-pi:last-child{border-bottom:1px solid var(--sk-line,#E6E9EF)}.sk-pi-t{display:block;width:100%;padding:20px 0;border:0;background:none;text-align:left;font:inherit;font-size:21px;font-weight:700;letter-spacing:-0.02em;color:var(--sk-faint,#9AA3B2);cursor:pointer;transition:color .3s}.sk-pi.is-on .sk-pi-t{color:var(--sk-ink,#0E1422);padding-bottom:14px}.sk-pi-bar{display:none;height:2px;background:var(--sk-line,#E6E9EF);margin:0 0 16px}.sk-pi-bar span{display:block;height:100%;width:0;background:var(--sk-ink,#0E1422)}.sk-pi.is-on .sk-pi-bar{display:block}.sk-pi-b{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s ease}.sk-pi-b>p{overflow:hidden}.sk-pi.is-on .sk-pi-b{grid-template-rows:1fr;padding-bottom:22px}.sk-stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:40px;opacity:0;transform:translateY(12px);transition:opacity .4s ease,transform .4s ease;pointer-events:none}.sk-stage.is-on{opacity:1;transform:none}.sk-pin-mobile{display:none}.sk-hs{scrollbar-width:none;margin-right:calc((100% - 100vw) / 2);padding-right:calc((100vw - 100%) / 2)}.sk-hs::-webkit-scrollbar{display:none}.sk-hs-card{scroll-snap-align:start}.sk-hs-btn:hover{background:var(--sk-bg-soft,#F4F6FA) !important}@media (max-width: 900px){.sk-pin{display:none}.sk-pin-mobile{display:block}.sk-ws-wide{padding:24px !important}.sk-ws-wide-in{zoom:.5}}

/* =====================================================================
   Stakoa visual system — 2026.11 (rev. 2)
   Toolbox palette (cobalt + note yellow) and a pegboard texture, set in
   the site's original typefaces (Plus Jakarta Sans / Inter, with the
   PingFang SC → Noto Sans SC → Microsoft YaHei fallbacks on -zh pages).
   Shapes: no pills — controls use 8px corners, chips 6px, badges 4px.
   Light values live on :root; dark values on .sk-dark. Everything below
   overrides the earlier rules.
   ===================================================================== */
:root{
  --sk-bg:#FAFBFC;--sk-surface:#FFFFFF;--sk-bg-soft:#F1F3F8;--sk-fill:#EBEEF5;
  --sk-ink:#111627;--sk-ink-2:#2B3245;--sk-muted:#525B6F;--sk-faint:#7F889C;
  --sk-line:#E2E5EC;--sk-link:#2350F0;--sk-link-h:#1A40D0;--sk-cobalt:#2350F0;--sk-cobalt-h:#1B44DE;
  --sk-note:#FFC83D;--sk-teal-t:#0B7393;--sk-violet-t:#5B3FD9;--sk-green-t:#12804F;
  --sk-peg:rgba(17,22,39,.12);--sk-dot:#D3D8E2;--sk-dots:rgba(17,22,39,.07);--sk-gridline:#EDF0F5;
  --sk-invert-bg:#111627;--sk-invert-fg:#FFFFFF;--sk-pro-end:#F3F6FF;
  --sk-r-lg:24px;--sk-r-ctl:8px;--sk-r-chip:6px;--sk-r-badge:4px;
}
.sk-dark{
  --sk-bg:#080C17;--sk-surface:#0F1527;--sk-bg-soft:#0C1221;--sk-fill:#182036;
  --sk-ink:#F1F4FA;--sk-ink-2:#CDD5E4;--sk-muted:#9CA7BC;--sk-faint:#6F7A91;
  --sk-line:rgba(190,205,235,.11);--sk-link:#7EA1FF;--sk-link-h:#A6BFFF;--sk-cobalt:#2F5BFF;--sk-cobalt-h:#456CFF;
  --sk-teal-t:#6FD3F2;--sk-violet-t:#A996FF;--sk-green-t:#5BD69B;
  --sk-peg:rgba(190,205,235,.11);--sk-dot:#263049;--sk-dots:rgba(255,255,255,.06);--sk-gridline:rgba(255,255,255,.035);
  --sk-invert-bg:#F1F4FA;--sk-invert-fg:#0B1020;--sk-pro-end:#0E1730;
}
body{background:var(--sk-bg)}
a{color:var(--sk-link)}a:hover{color:var(--sk-link-h)}
.sk-dark a{color:var(--sk-link)}
::selection{background:rgba(35,80,240,.18)}
:focus-visible{outline:2px solid var(--sk-link);outline-offset:3px;border-radius:4px}

/* ---------- Pegboard texture (the one recurring motif) ---------- */
.sk-hero,.sk-phero{position:relative;isolation:isolate}
.sk-hero::before,.sk-phero::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background-image:radial-gradient(circle,var(--sk-peg) 1.25px,transparent 1.75px);background-size:22px 22px;background-position:center 11px;
  -webkit-mask-image:linear-gradient(180deg,#000 0%,rgba(0,0,0,.85) 40%,transparent 92%);mask-image:linear-gradient(180deg,#000 0%,rgba(0,0,0,.85) 40%,transparent 92%)}
.sk-phero{background-image:none!important;padding-top:96px!important}
.sk-hero-stage{background:var(--sk-bg-soft)!important;border-color:var(--sk-line)!important;border-radius:var(--sk-r-lg)!important}
.sk-hero-grid,.sk-dark .sk-hero-grid{background-image:radial-gradient(circle,var(--sk-peg) 1.25px,transparent 1.75px)!important;background-size:22px 22px!important}
.sk-dark .sk-hero-stage{background:#0B1120!important}
.sk-cl{position:relative;isolation:isolate}
.sk-cl::before{content:"";position:absolute;left:50%;top:0;width:100vw;height:460px;transform:translateX(-50%);z-index:-1;pointer-events:none;
  background-image:radial-gradient(circle,var(--sk-peg) 1.25px,transparent 1.75px);background-size:22px 22px;background-position:center 11px;
  -webkit-mask-image:linear-gradient(180deg,#000,transparent);mask-image:linear-gradient(180deg,#000,transparent)}

/* Footer and menu column heads (labels above link lists, not headings) */
.sk-colh{font-size:13px;line-height:1.3;font-weight:700;letter-spacing:0;color:var(--sk-ink)}
.sk-colh[style*="margin: 0 0 10px"]{font-size:12.5px;font-weight:600;color:var(--sk-faint)}
html:lang(zh-Hans) .sk-colh{letter-spacing:.04em}

/* ---------- Buttons: tactile, like the toolbox's moulded plastic ---------- */
.sk-btn{border-radius:var(--sk-r-ctl)!important;transition:background-color .15s ease,transform .12s ease,box-shadow .15s ease,color .15s ease!important}
.sk-btn:hover{transform:translateY(-1px)}
.sk-btn:active{transform:translateY(1px)}
.sk-btn-blue{background:var(--sk-cobalt)!important;color:#FFFFFF!important;border-color:transparent!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -2px 0 rgba(6,18,84,.30),0 1px 2px rgba(17,22,39,.14),0 8px 18px -8px rgba(35,80,240,.65)}
.sk-btn-blue:hover{background:var(--sk-cobalt-h)!important;color:#FFFFFF!important}
.sk-btn-light,.sk-btn-line{background:var(--sk-surface)!important;color:var(--sk-ink)!important;border:0!important;
  box-shadow:inset 0 0 0 1px var(--sk-line),inset 0 -2px 0 var(--sk-line),0 1px 2px rgba(17,22,39,.05)}
.sk-btn-light:hover,.sk-btn-line:hover{background:var(--sk-bg-soft)!important;color:var(--sk-ink)!important}
.sk-dark .sk-btn-light,.sk-dark .sk-btn-line{background:var(--sk-fill)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08),inset 0 -2px 0 rgba(0,0,0,.35)}
.sk-dark .sk-btn-light:hover,.sk-dark .sk-btn-line:hover{background:#212A44!important;color:var(--sk-ink)!important}
.sk-btn-white{background:#FFFFFF!important;color:#111627!important;box-shadow:inset 0 -2px 0 rgba(17,22,39,.16),0 10px 24px -10px rgba(0,0,0,.6)}
.sk-btn-white:hover{background:#EEF2FF!important;color:#111627!important}
.sk-btn-ghost-dark{background:rgba(255,255,255,.05)!important;border-color:rgba(255,255,255,.26)!important;color:#FFFFFF!important}
.sk-btn-ghost-dark:hover{background:rgba(255,255,255,.12)!important}
.sk-btn-lg{padding:15px 24px!important;font-size:16px!important;font-weight:700!important}
.sk-wsmore{border-radius:var(--sk-r-ctl)!important}

/* ---------- Header ---------- */
.sk-h-top,.sk-h-hero,.sk-h-page{--sk-nav:var(--sk-ink-2);--sk-nav-strong:var(--sk-ink);--sk-nav-border:var(--sk-line)}
.sk-h-top{background:transparent;border-bottom-color:transparent}
.sk-h-hero,.sk-h-page{background:color-mix(in srgb,var(--sk-bg) 82%,transparent)!important;-webkit-backdrop-filter:blur(18px) saturate(170%);backdrop-filter:blur(18px) saturate(170%);border-bottom-color:var(--sk-line)!important}
.sk-h-top .sk-nav-link:hover,.sk-h-hero .sk-nav-link:hover,.sk-h-page .sk-nav-link:hover{background:color-mix(in srgb,var(--sk-ink) 6%,transparent);color:var(--sk-ink)}
.sk-bar{display:flex;justify-content:center;align-items:center;gap:10px;padding:9px 16px;background:var(--sk-invert-bg);font-size:13px;font-weight:600;text-align:center}
.sk-bar,.sk-bar:hover{color:var(--sk-invert-fg)}
.sk-dark .sk-bar,.sk-dark .sk-bar:hover{background:#141B30;color:#DCE4F7;border-bottom:1px solid rgba(255,255,255,.06)}
.sk-bar-tag{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:var(--sk-r-badge);background:var(--sk-note);color:#2A1E00;font-size:11px;font-weight:700;letter-spacing:.06em}
.sk-sub{background:color-mix(in srgb,var(--sk-bg) 86%,transparent)!important;border-bottom-color:var(--sk-line)!important}
.sk-sub-link.is-active{color:var(--sk-ink);box-shadow:inset 0 -2px 0 var(--sk-link)}
[role=menu]{box-shadow:0 1px 2px rgba(17,22,39,.06),0 18px 40px -12px rgba(17,22,39,.22)!important;border-radius:12px!important}
.sk-dark [role=menu]{box-shadow:0 18px 40px -12px rgba(0,0,0,.7)!important}

/* ---------- Home hero ---------- */
.sk-hero{margin-top:-69px;padding-top:69px;background:var(--sk-bg)}
.sk-hero-in{position:relative;padding:88px 24px 56px;color:var(--sk-ink)}
.sk-hero-h{margin:0;font-size:clamp(32px,4.6vw,68px);line-height:1.04;font-weight:700;letter-spacing:-0.035em}
.sk-hero-h span{display:block}
.sk-hero-p{margin:28px 0 0;max-width:600px;font-size:18px;line-height:1.62;color:var(--sk-muted)}
.sk-hero-box{filter:drop-shadow(0 28px 36px rgba(35,80,240,.22))}
.sk-dark .sk-hero-box{filter:drop-shadow(0 24px 40px rgba(47,91,255,.28))}
@media (max-width: 760px){.sk-hero-in{padding:48px 20px 24px}.sk-hero-p{font-size:16.5px}}

/* ---------- Closing CTA band ---------- */
.sk-cta{background-color:#0A1230!important;background-image:radial-gradient(50% 70% at 0% 100%,rgba(47,91,255,.28),rgba(10,18,48,0) 70%)!important;border-radius:var(--sk-r-lg)!important}
.sk-dark .sk-cta{box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.sk-cta-peg{position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(circle,rgba(255,255,255,.11) 1.25px,transparent 1.75px);background-size:22px 22px;
  -webkit-mask-image:linear-gradient(100deg,#000 10%,transparent 70%);mask-image:linear-gradient(100deg,#000 10%,transparent 70%)}
.sk-cta p{color:#C9D4F5!important}
@media (max-width: 760px){.sk-cta{padding:56px 24px!important;border-radius:18px!important}}

/* ---------- Surfaces & controls ---------- */
.sk-card:hover{border-color:color-mix(in srgb,var(--sk-link) 35%,var(--sk-line))}
.sk-tab:hover{background:color-mix(in srgb,var(--sk-link) 8%,var(--sk-surface));border-color:color-mix(in srgb,var(--sk-link) 30%,var(--sk-line));color:var(--sk-ink)}
.sk-step:hover{background:var(--sk-surface);border-color:color-mix(in srgb,var(--sk-link) 30%,var(--sk-line))}
.sk-menu-item:hover,.sk-xlink:hover{background:var(--sk-bg-soft)}
.sk-faq:hover{background:transparent}
.sk-faq:hover button,.sk-faq:hover summary{color:var(--sk-link)}
.sk-totop{background:color-mix(in srgb,var(--sk-surface) 88%,transparent)}
.sk-flink:hover{color:var(--sk-ink)}
.sk-ucdots button span{border-radius:2px}
.sk-ucdots button.is-on span,.sk-pi-bar span,.sk-ucbar span{background:var(--sk-link)}
/* Cookie banner (styles injected by script.js): squared buttons and switch */
html .sk-ck-btn{border-radius:var(--sk-r-ctl)}
html .sk-ck-sw{border-radius:6px}
html .sk-ck-sw::after,html .sk-ck-sw::before,html .sk-ck-sw>*{border-radius:4px}

/* Pricing */
.sk-plans{border-radius:var(--sk-r-lg);border-color:var(--sk-line);box-shadow:0 1px 2px rgba(17,22,39,.04)}
.sk-plan.pro{background:var(--sk-pro-end);box-shadow:inset 0 3px 0 var(--sk-cobalt)}
.sk-cmp thead th{border-bottom-color:var(--sk-ink)}
.sk-cmp tr.grp td{letter-spacing:0;font-size:14px;color:var(--sk-link)}
.sk-badge{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--sk-r-badge);background:var(--sk-note);color:#2A1E00;font-size:12px;font-weight:700;letter-spacing:.02em}
html:lang(zh-Hans) .sk-badge{letter-spacing:.06em}

/* Docs & changelog */
.sk-doc-nav a.is-on{background:color-mix(in srgb,var(--sk-link) 9%,transparent);color:var(--sk-ink);box-shadow:inset 2px 0 0 var(--sk-link);border-radius:0 6px 6px 0}
.sk-doc-toc a.is-on{color:var(--sk-link)}
.sk-doc-note{border-left:3px solid var(--sk-note);border-radius:2px 10px 10px 2px}
.sk-doc-pn a:hover{border-color:color-mix(in srgb,var(--sk-link) 40%,var(--sk-line))}
.sk-cl-flt button{border-radius:var(--sk-r-ctl)}
.sk-cl-flt button.is-on{background:var(--sk-ink);border-color:var(--sk-ink);color:var(--sk-bg)}
.sk-cl-ver{border-radius:var(--sk-r-badge);background:var(--sk-surface);box-shadow:inset 0 0 0 1px var(--sk-line)}
.sk-cl-tag{border-radius:var(--sk-r-chip)}
.sk-cl-k{border-radius:var(--sk-r-badge)}

/* ---------- Simplified Chinese ----------
   The -zh pages keep their own CJK-tuned inline type settings; only the
   classes introduced by the redesign need sizing here. */
html:lang(zh-Hans) .sk-hero-h{font-size:clamp(30px,4.2vw,60px);line-height:1.2;letter-spacing:-0.015em}
html:lang(zh-Hans) .sk-hero-p{font-size:17px;line-height:1.85;max-width:560px;letter-spacing:.01em}
html:lang(zh-Hans) .sk-btn-lg{letter-spacing:.02em}
html:lang(zh-Hans) .sk-bar{letter-spacing:.02em}
@media (max-width: 760px){html:lang(zh-Hans) .sk-hero-h{font-size:clamp(24px,6.6vw,40px)}html:lang(zh-Hans) .sk-hero-p{font-size:16px}}
html:lang(zh-Hans) .sk-cl-e p,html:lang(zh-Hans) .sk-doc-art p{line-height:1.85}
html:lang(zh-Hans) .sk-cl-e li,html:lang(zh-Hans) .sk-doc-art li{line-height:1.75}

/* ---------- Key features image panels (home): Outcomes, Repositories, Memory ----------
   Each screenshot keeps its 920px width. When the square panel is tall
   enough to hold all of it, centre it vertically with equal space above
   and below and drop the bottom fade; on narrower panels it keeps the
   original top-aligned crop. */
.sk-fp-panel{container-type:size}
@container (min-height: 660px){
  .sk-fp-frame{top:0!important;bottom:0!important;display:flex;align-items:center}
  .sk-fp-fade{height:auto!important;-webkit-mask-image:none!important;mask-image:none!important}
}

/* ---------- Rev 5c proposal: light UI on a light page (home hero screenshot only) ----------
   No frame, mat or outline: the window sits directly on the stage.
   1. Neutral stage: a cool-grey vertical gradient, light at the top
      (#EEF0F3) and settling a clear step below the app's sidebar (#EAEAEC)
      and main area (#F6F5F8 / white cards) further down. No hue.
   2. Dot grid: white pinholes, faded out behind the screenshot.
   3. Shadows: light, short and below the window only (contact + near + soft
      fall-off), on the window's own rounded corners. */
.sk-present{
  background-color:#DCDFE4!important;
  background-image:linear-gradient(180deg,#EEF0F3 0%,#E2E5E9 28%,#D9DCE1 65%,#D5D8DE 100%)!important;
  border-color:transparent!important}
.sk-present .sk-hero-grid{background-image:radial-gradient(circle,rgba(255,255,255,.75) 1.25px,transparent 1.75px)!important;
  -webkit-mask-image:radial-gradient(75% 70% at 50% 50%,transparent 40%,#000 100%);mask-image:radial-gradient(75% 70% at 50% 50%,transparent 40%,#000 100%)}
.sk-present .sk-hero-shot{container-type:inline-size}
/* Shadow sits below the window only: for every layer, blur + spread - y-offset <= 0,
   so nothing reaches above the top edge. Separate box-shadow layers (not chained
   drop-shadow filters) so they don't compound; the radius matches the window's
   transparent rounded corners (24px on the 2560px source). */
.sk-present .sk-hero-shot .sk-shot img{filter:none!important;
  box-shadow:0 1px 2px -1px rgba(17,22,39,.10),
             0 6px 10px -4px rgba(17,22,39,.06),
             0 16px 22px -8px rgba(17,22,39,.07)}
.sk-dark .sk-present{background-color:#0E1117!important;
  background-image:radial-gradient(70% 55% at 50% 0%,rgba(255,255,255,.05),rgba(255,255,255,0) 70%),
                   linear-gradient(180deg,#151820 0%,#0F1218 60%,#0C0E13 100%)!important}
.sk-dark .sk-present .sk-hero-grid{background-image:radial-gradient(circle,rgba(255,255,255,.10) 1.25px,transparent 1.75px)!important}
.sk-dark .sk-present .sk-hero-shot .sk-shot img{filter:none!important;
  box-shadow:0 1px 2px -1px rgba(0,0,0,.45),
             0 6px 10px -4px rgba(0,0,0,.28),
             0 16px 22px -8px rgba(0,0,0,.32)}

/* ---------- Rev 6: grey screenshot stages across the site ----------
   Same treatment as the approved homepage hero (rev 5d), without the dot
   pattern: every --sk-bg-soft panel that frames an app screenshot
   (.sk-gstage, tagged in the HTML) gets the neutral grey gradient, and its
   screenshot gets the light, below-only shadow. The dot pattern stays only
   on the homepage hero stage (.sk-present). */
.sk-gstage{
  background-color:#DCDFE4!important;
  background-image:linear-gradient(180deg,#EEF0F3 0%,#E2E5E9 28%,#D9DCE1 65%,#D5D8DE 100%)!important;
  background-size:auto!important;background-position:0 0!important}
.sk-dark .sk-gstage{background-color:#0E1117!important;
  background-image:radial-gradient(70% 55% at 50% 0%,rgba(255,255,255,.05),rgba(255,255,255,0) 70%),
                   linear-gradient(180deg,#151820 0%,#0F1218 60%,#0C0E13 100%)!important}
.sk-gstage .sk-shot img{filter:none!important;
  box-shadow:0 1px 2px -1px rgba(17,22,39,.10),
             0 6px 10px -4px rgba(17,22,39,.06),
             0 16px 22px -8px rgba(17,22,39,.07)}
.sk-dark .sk-gstage .sk-shot img{filter:none!important;
  box-shadow:0 1px 2px -1px rgba(0,0,0,.45),
             0 6px 10px -4px rgba(0,0,0,.28),
             0 16px 22px -8px rgba(0,0,0,.32)}
/* The shadow follows each window's own transparent rounded corners: about
   24px on the source image, expressed as a share of its width / height so
   it scales with the screenshot. */
.sk-present .sk-shot img,.sk-gstage .sk-shot img{border-radius:1.163% / 1.412%}            /* 2064x1700 */
.sk-present .sk-shot:is([data-shot=home],[data-shot=memory],[data-shot=outcomes],[data-shot=repos],[data-shot^=p-]) img,
.sk-gstage .sk-shot:is([data-shot=home],[data-shot=memory],[data-shot=outcomes],[data-shot=repos],[data-shot^=p-]) img{border-radius:.9375% / 1.412%}  /* 2560x1700 */
.sk-gstage .sk-shot[data-shot=memory-detail] img{border-radius:1.646% / 1.888%}            /* 1640x1430 */
.sk-gstage .sk-shot[data-shot=repo-upload] img{border-radius:1.985% / 2.199%}              /* 1360x1228 */
/* Rev 6.1: no outline along the top of the grey stages. Paint the gradient
   from the border edge without tiling (a repeated tile showed its dark end
   inside the 1px border), and make the panels' full 1px outline transparent;
   the Key features grid separators (border-left/right) stay. */
.sk-present,.sk-gstage{background-origin:border-box!important;background-repeat:no-repeat!important}
.sk-present,.sk-gstage[style*="border: 1px"]{border-color:transparent!important}
/* Rev 6.2: home Key features panels (Outcomes, Repositories, Memory).
   The site-wide gradient is lightest at the top (#EEF0F3), almost the same as
   the app's content area (#F6F5F8), so with the right-edge fade the windows'
   top edge disappeared. These panels use their own near-flat, slightly deeper
   grey (contrast vs. content 1.27-1.30, vs. sidebar 1.14-1.18), and the
   right-edge fade starts later (82% instead of 70%). */
.sk-fp-panel.sk-gstage{background-color:#D8DBE0!important;
  background-image:linear-gradient(180deg,#D9DCE1 0%,#D6D9DF 100%)!important}
.sk-dark .sk-fp-panel.sk-gstage{background-color:#10131A!important;
  background-image:linear-gradient(180deg,#11141B 0%,#0E1117 100%)!important}
.sk-fp-frame{-webkit-mask-image:linear-gradient(90deg,#000 82%,transparent 100%)!important;mask-image:linear-gradient(90deg,#000 82%,transparent 100%)!important}

/* ---------- Rev 8: screenshot scale and edge treatment in grey panels ----------
   Scale: the home Workspace cards showed the app at 1100px (larger than its
   native 1032px), so they read as a close-up. They now show it at 800px
   (about 78% of native), between the close-up and Linear's small fragments.
   Edges: by default no fade - screenshots run cleanly off the panel's own
   rounded edge (crop boxes are extended to the panel edge so the cut lands
   there, not mid-panel). For comparison, html.sk-edge-fade restores a single,
   subtle fade on the bottom edge only. Subpage heroes on the white page keep
   their bottom fade into white. */
.sk-wc-crop{height:358px!important;margin-bottom:-28px}
.sk-wc-crop .sk-shot{width:800px!important}
.sk-wc-crop,.sk-fp-frame,.sk-fp-fade,.sk-gstage .sk-stage-crop,.sk-gstage [style*="mask-image"]{
  -webkit-mask-image:none!important;mask-image:none!important}
html.sk-edge-fade .sk-wc-crop,html.sk-edge-fade .sk-fp-fade,html.sk-edge-fade .sk-gstage .sk-stage-crop,
html.sk-edge-fade .sk-gstage [style*="mask-image"]:not(.sk-fp-frame){
  -webkit-mask-image:linear-gradient(180deg,#000 78%,transparent 100%)!important;mask-image:linear-gradient(180deg,#000 78%,transparent 100%)!important}
@container (min-height: 660px){html.sk-edge-fade .sk-fp-fade{-webkit-mask-image:none!important;mask-image:none!important}}

/* ---------- Rev 9: home Workspace cards, rebalanced ----------
   Four equal cards (2 x 2). Each screenshot is a focused close-up at one
   shared scale (880px, ~85% of native), anchored by the window's top-left
   corner inset from the card (72px left, generous space under the copy),
   and running off the card's right and bottom edges. */
.sk-wcard{flex:1 1 420px!important}
.sk-wc-crop{height:392px!important;flex:none;margin:auto -28px -28px 0!important;padding:28px 0 0 44px;overflow:hidden}
.sk-wc-crop .sk-shot{width:880px!important}
@media (max-width: 600px){
  .sk-wc-crop{height:300px!important;padding:20px 0 0 24px}
  .sk-wc-crop .sk-shot{width:720px!important}
}

/* ---------- Rev 10 proposal: home Workspace cards only ----------
   Transparent card with only a thin outline (no fill or gradient), screenshots enlarged by
   the same factor (880 -> 1000px, crop kept proportional), and a single
   bottom-edge fade into the card. Other grey stages are unchanged. */
.sk-wcard.sk-gstage{background:transparent!important;background-image:none!important;
  border:1px solid var(--sk-line)!important;box-shadow:none!important}
.sk-dark .sk-wcard.sk-gstage{background:transparent!important}
.sk-wcard .sk-wc-crop{height:446px!important;padding:28px 0 0 44px}
.sk-wcard .sk-wc-crop .sk-shot{width:1000px!important}
.sk-wcard .sk-wc-crop,html.sk-edge-fade .sk-wcard .sk-wc-crop{
  -webkit-mask-image:linear-gradient(180deg,#000 62%,transparent 100%)!important;mask-image:linear-gradient(180deg,#000 62%,transparent 100%)!important}
@media (max-width: 600px){.sk-wcard .sk-wc-crop{height:340px!important;padding:20px 0 0 24px}.sk-wcard .sk-wc-crop .sk-shot{width:820px!important}}
/* Rev 10c: screenshot hairline + subtle shadow inside the Workspace cards;
   the four small cards below are outline-only too. */
.sk-wcard .sk-shot img{box-shadow:0 0 0 1px rgba(17,22,39,.055),0 1px 2px rgba(17,22,39,.05),0 8px 24px -6px rgba(17,22,39,.10)!important}
.sk-dark .sk-wcard .sk-shot img{box-shadow:0 0 0 1px rgba(255,255,255,.06),0 1px 2px rgba(0,0,0,.4),0 8px 24px -6px rgba(0,0,0,.5)!important}
.sk-wmini{background:transparent!important;border-color:var(--sk-line)!important}

/* ---------- Rev 11: Workspace card treatment, site-wide ----------
   Every grey screenshot panel (.sk-gstage) except the homepage hero stage
   (.sk-present, which keeps its approved gradient + dots) becomes an
   outline-only card: transparent fill, 1px line. Screenshots get the faint
   hairline + subtle shadow. Where a panel crops its screenshot, the crop
   fades on the bottom edge only. The home Key features panels show the
   whole window centred, so they get no fade. */
.sk-gstage:not(.sk-present){background:transparent!important;background-image:none!important;box-shadow:none!important}
.sk-gstage[style*="border: 1px"]:not(.sk-present){border-color:var(--sk-line)!important}
.sk-gstage:not(.sk-present) .sk-shot img{filter:none!important;
  box-shadow:0 0 0 1px rgba(17,22,39,.055),0 1px 2px rgba(17,22,39,.05),0 8px 24px -6px rgba(17,22,39,.10)!important}
.sk-dark .sk-gstage:not(.sk-present) .sk-shot img{
  box-shadow:0 0 0 1px rgba(255,255,255,.06),0 1px 2px rgba(0,0,0,.4),0 8px 24px -6px rgba(0,0,0,.5)!important}
.sk-gstage:not(.sk-present):not(.sk-fp-panel) .sk-stage-crop,
.sk-gstage:not(.sk-present):not(.sk-fp-panel) [style*="mask-image"]{
  -webkit-mask-image:linear-gradient(180deg,#000 62%,transparent 100%)!important;mask-image:linear-gradient(180deg,#000 62%,transparent 100%)!important}
/* Workspace page: the Knowledge panel zoomed its screenshot to 109% and
   overflowed the panel; scale it to fit like Subscriptions and Storage. */
.sk-gstage div[style*="zoom: 1.09"]:has([data-shot=knowledge]){zoom:.69!important}
/* Mobile "How it works" stages crop their screenshot: same bottom fade. */
.sk-pin-mobile .sk-gstage > .sk-stage{-webkit-mask-image:linear-gradient(180deg,#000 62%,transparent 100%);mask-image:linear-gradient(180deg,#000 62%,transparent 100%)}

/* ---------- Rev 12: home Key features panels (Outcomes, Repositories, Memory) ----------
   Transparent in both themes (overrides rev 6.2's flat grey, which out-ranked
   the rev 11 rule). Screenshot enlarged ~15% (920 -> ~1060px at a 671px
   panel), sized in container units so it scales with the panel, anchored
   top-left with an even inset, and faded on the right edge only. */
.sk-fp-panel.sk-gstage,.sk-dark .sk-fp-panel.sk-gstage{background:transparent!important;background-image:none!important}
.sk-gstage .sk-fp-frame.sk-fp-frame{top:8.4cqw!important;left:8.4cqw!important;right:0!important;bottom:0!important;display:block!important;
  -webkit-mask-image:linear-gradient(90deg,#000 64%,transparent 100%)!important;mask-image:linear-gradient(90deg,#000 64%,transparent 100%)!important}
.sk-fp-fade{height:100%!important;-webkit-mask-image:none!important;mask-image:none!important}
.sk-fp-frame .sk-shot{width:158cqw!important}
/* Rev 12b: Key features screenshots fade on the bottom edge as well as the right. */
.sk-gstage .sk-fp-frame.sk-fp-frame{
  -webkit-mask-image:linear-gradient(90deg,#000 64%,transparent 100%),linear-gradient(180deg,#000 72%,transparent 100%)!important;-webkit-mask-composite:source-in!important;
  mask-image:linear-gradient(90deg,#000 64%,transparent 100%),linear-gradient(180deg,#000 72%,transparent 100%)!important;mask-composite:intersect!important}

/* Rev 13: home Project Overview tabs - bottom-edge fade on each screenshot.
   Fully transparent by 90% of the image height, so the sidebar user row
   (avatar + name start at ~93%) and the window's bottom edge never show.
   The tab progress line is pulled up to sit just under the visible part. */
#projects [role=tabpanel] .sk-shot{-webkit-mask-image:linear-gradient(180deg,#000 62%,transparent 90%);mask-image:linear-gradient(180deg,#000 62%,transparent 90%)}
#projects [role=tabpanel] .sk-ptline{margin-top:-4.5%!important}
/* Rev 14: home Workspace cards - right-edge fade alongside the bottom fade. */
.sk-wcard .sk-wc-crop,html.sk-edge-fade .sk-wcard .sk-wc-crop{
  -webkit-mask-image:linear-gradient(90deg,#000 70%,transparent 100%),linear-gradient(180deg,#000 62%,transparent 100%)!important;-webkit-mask-composite:source-in!important;
  mask-image:linear-gradient(90deg,#000 70%,transparent 100%),linear-gradient(180deg,#000 62%,transparent 100%)!important;mask-composite:intersect!important}
/* Rev 14b: the rev 11 rule (.sk-gstage:not(.sk-present):not(.sk-fp-panel) [style*="mask-image"])
   out-ranked rev 14 and dropped the right fade; restate with higher specificity. */
.sk-gstage.sk-wcard:not(.sk-present):not(.sk-fp-panel) .sk-wc-crop[style*="mask-image"]{
  -webkit-mask-image:linear-gradient(90deg,#000 70%,transparent 100%),linear-gradient(180deg,#000 62%,transparent 100%)!important;-webkit-mask-composite:source-in!important;
  mask-image:linear-gradient(90deg,#000 70%,transparent 100%),linear-gradient(180deg,#000 62%,transparent 100%)!important;mask-composite:intersect!important}

/* ---------- Rev 15: Built for (home use cases) ----------
   The "Today's updates" card is opened up into the page: no fill, border or
   shadow. It reads as a live activity timeline - a thin rail with icon nodes,
   the newest entry in the accent colour - set beside the copy, with a
   hairline divider between the two columns. */
#use-cases [role=tabpanel]{gap:40px 72px!important;align-items:stretch}
#use-cases [role=tabpanel] > div:first-child{flex:1 1 460px!important}
#use-cases [role=tabpanel] > div:nth-child(2){flex:1 1 380px!important;align-items:flex-start!important;padding-left:72px;border-left:1px solid var(--sk-line)}
.sk-ucfeed{background:none!important;border:0!important;border-radius:0!important;box-shadow:none!important;overflow:visible!important}
.sk-ucfeed > div:first-child{padding:6px 0 18px!important;border:0!important;justify-content:flex-start!important;gap:10px;align-items:baseline!important}
.sk-ucfeed > div:first-child > span:first-child{font-size:13px!important;font-weight:650!important;color:var(--sk-muted)!important;letter-spacing:.01em}
.sk-ucfeed > div:first-child > span:last-child{font-size:13px!important;color:var(--sk-faint)!important}
.sk-ucfeed > div:first-child > span:last-child::before{content:"·";margin-right:10px}
.sk-ucfeed > div:not(:first-child){position:relative;align-items:flex-start!important;gap:16px!important;padding:0 0 26px 48px!important;border:0!important}
.sk-ucfeed > div:not(:first-child)::before{content:"";position:absolute;left:15.5px;top:30px;bottom:-2px;width:1px;background:var(--sk-line)}
.sk-ucfeed > div:last-child{padding-bottom:0!important}
.sk-ucfeed > div:last-child::before{display:none}
.sk-ucfeed > div:not(:first-child) > svg{position:absolute;left:0;top:-4px;width:32px!important;height:32px!important;padding:8px;box-sizing:border-box;border-radius:50%;
  background:var(--sk-bg);box-shadow:inset 0 0 0 1px var(--sk-line);color:var(--sk-muted)}
.sk-ucfeed > div:nth-child(2) > svg{color:#fff;background:var(--sk-cobalt);box-shadow:0 0 0 4px color-mix(in srgb,var(--sk-cobalt) 14%,transparent)}
.sk-ucfeed > div:not(:first-child) > span:first-of-type{font-size:16px!important;line-height:1.5!important;padding-top:1px}
.sk-ucfeed > div:not(:first-child) > span:last-of-type{font-size:13px!important;color:var(--sk-faint)!important;padding-top:3px;white-space:nowrap}
@media (max-width: 900px){
  #use-cases [role=tabpanel] > div:nth-child(2){padding-left:0;border-left:0;padding-top:32px;border-top:1px solid var(--sk-line)}
}
.sk-ucfeed > div:first-child{padding-bottom:26px!important}
.sk-ucfeed > div:not(:first-child){padding-bottom:40px!important}
.sk-ucfeed > div:not(:first-child)::before{top:34px;bottom:2px}
.sk-ucfeed > div:last-child{padding-bottom:0!important}
.sk-ucfeed > div:not(:first-child) > span:first-of-type{font-size:17px!important}
@media (max-width: 900px){.sk-ucfeed > div:not(:first-child){padding-bottom:26px!important}.sk-ucfeed > div:not(:first-child) > span:first-of-type{font-size:15.5px!important}}
/* Rev 15b: narrower right-edge fade on the Workspace screenshots (last 12% only). */
.sk-gstage.sk-wcard:not(.sk-present):not(.sk-fp-panel) .sk-wc-crop[style*="mask-image"]{
  -webkit-mask-image:linear-gradient(90deg,#000 88%,transparent 100%),linear-gradient(180deg,#000 62%,transparent 100%)!important;
  mask-image:linear-gradient(90deg,#000 88%,transparent 100%),linear-gradient(180deg,#000 62%,transparent 100%)!important}
/* Rev 15c: Built for timeline - one outline style for every node (no blue fill on the first). */
.sk-ucfeed > div:not(:first-child) > svg,.sk-ucfeed > div:nth-child(2) > svg{
  color:var(--sk-ink-2)!important;background:var(--sk-bg)!important;box-shadow:inset 0 0 0 1px var(--sk-line)!important}

/* ---------- Rev 17: "Why ..." comparison on product pages ----------
   The two lists spanned the full page width with a lone divider, so the
   composition leaned left. Now: a centred, contained comparison of two equal
   outline panels (matching the Workspace cards) with paired rows. The
   "before" side is muted with x markers; the Stakoa side carries the ink
   colour and accent check markers. */
#why div:has(> .sk-vs){display:grid!important;grid-template-columns:1fr 1fr;gap:16px;max-width:1120px;margin:56px auto 0!important}
#why .sk-vs{padding:36px 40px 28px!important;border:1px solid var(--sk-line)!important;border-radius:20px;background:transparent}
#why .sk-vs > div:first-child{font-size:20px!important}
#why .sk-vs + .sk-vs{border-color:color-mix(in srgb,var(--sk-link) 35%,var(--sk-line))!important;
  box-shadow:0 1px 2px rgba(17,22,39,.04),0 12px 32px -16px color-mix(in srgb,var(--sk-link) 40%,transparent)}
#why .sk-vs .sk-pl{margin-top:18px!important}
#why .sk-vs .sk-pl li{display:flex;align-items:flex-start;gap:12px;padding:14px 0!important;min-height:54px}
#why .sk-vs .sk-pl li:first-child{padding-top:14px!important}
#why .sk-vs .sk-pl li::before{content:"";flex:none;width:18px;height:18px;margin-top:2px;border-radius:50%}
#why .sk-vs:first-child .sk-pl li::before{background:var(--sk-faint);opacity:.55;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M6 6l6 6M12 6l-6 6' stroke='black' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E") center/18px no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M6 6l6 6M12 6l-6 6' stroke='black' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E") center/18px no-repeat}
#why .sk-vs + .sk-vs .sk-pl li::before{background:var(--sk-link);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M5 9.3l2.6 2.6L13 6.3' fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/18px no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M5 9.3l2.6 2.6L13 6.3' fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/18px no-repeat}
@media (max-width: 900px){#why div:has(> .sk-vs){grid-template-columns:1fr}#why .sk-vs{padding:28px 24px 20px!important}#why .sk-vs+.sk-vs{margin-top:0!important}}

/* ---------- Rev 18: "How it works" stages (Outcomes, Memory, Repositories, Workspace) ----------
   script.js zooms each .sk-fit screenshot to fit 84% of the stage, which made
   it small. Override: the screenshot fills ~92% of the stage width, sits 48px
   from the top, and the overflow fades out on the bottom edge. */
.sk-story-stage{container-type:size}
.sk-story-stage .sk-stage:not(.is-top){align-items:flex-start!important;padding:48px 0 0!important;
  -webkit-mask-image:linear-gradient(180deg,#000 66%,transparent 100%);mask-image:linear-gradient(180deg,#000 66%,transparent 100%)}
.sk-story-stage .sk-stage:not(.is-top) > .sk-fit{zoom:1!important;width:92cqw!important}

/* ---------- Rev 19: subpage hero screenshots, one size ----------
   Hero screenshots ranged from 540px (Workspace) to 1600px (Project
   Overview). All five now render at the same width - 1040px max, scaling
   down with the page - at their native aspect ratio, inside a crop of one
   shared height that keeps the existing bottom fade into the page. */
.sk-phero .sk-shot{width:min(1040px,100%)!important;max-width:none!important;margin:0 auto!important}
.sk-phero div:has(> .sk-shot),.sk-phero div:has(> div > .sk-shot){width:100%!important;zoom:1!important;max-width:none!important}
.sk-phero > div:has(.sk-shot){height:min(620px,60vw)!important;max-width:min(1040px,calc(100vw - 48px))!important;margin-left:auto!important;margin-right:auto!important}

/* ---------- Rev 20: Project Outcomes "Day by day" ----------
   One representative daily overview instead of three stacked days; copy
   moves out of the bottom-left corner into its own column, vertically
   centred beside the card. Outline-only panel to match the other cards. */
.sk-stackp.sk-stack1{height:auto!important;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:56px;
  padding:72px 64px;background:transparent!important;border:1px solid var(--sk-line);overflow:visible}
.sk-dark .sk-stackp.sk-stack1{background:transparent!important}
.sk-stack1 > [role=img]{position:relative!important;inset:auto!important;order:2}
.sk-stack1 .sk-stk.s0,.sk-stack1 .sk-stk.s1{display:none!important}
.sk-stack1 .sk-stk.s2{position:relative!important;left:auto!important;top:auto!important;width:100%!important;margin:0!important;transform:none!important}
.sk-stack1 .sk-stk.s2 > div{box-shadow:0 1px 2px rgba(17,22,39,.05),0 16px 40px -12px rgba(17,22,39,.16)!important}
.sk-dark .sk-stack1 .sk-stk.s2 > div{box-shadow:0 0 0 1px rgba(255,255,255,.06),0 16px 40px -12px rgba(0,0,0,.6)!important}
.sk-stack1 .sk-stk-cap{position:static!important;order:1;max-width:440px!important;padding:0!important;pointer-events:auto}
.sk-stack1 .sk-stk-cap > div:nth-child(2){margin-top:14px!important;font-size:clamp(26px,2.6vw,34px)!important;line-height:1.15}
.sk-stack1 .sk-stk-cap > div:nth-child(3){margin-top:16px!important;font-size:17px!important;line-height:1.65!important}
@media (max-width: 900px){
  .sk-stackp.sk-stack1{grid-template-columns:1fr;gap:36px;padding:40px 24px!important}
  .sk-stack1 .sk-stk.s2{margin:0!important}
}
@media (max-width: 900px){
  .sk-stackp.sk-stack1{grid-template-columns:minmax(0,1fr)!important}
  .sk-stack1 > [role=img],.sk-stack1 .sk-stk-cap{min-width:0}
  .sk-stack1 .sk-stk.s2 > div > div:nth-child(2){flex-wrap:wrap}
  .sk-stack1 .sk-stk.s2 > div > div:nth-child(2) > div{flex:1 1 calc(50% - 4px)!important}
}

/* ---- Rev 21: Project Memory "Memory states" — copy left, three cards layered right ---- */
.sk-stackp.sk-stack3{height:auto!important;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:center;gap:56px;padding:72px 64px;background:transparent!important;border:1px solid var(--sk-line);overflow:visible}
.sk-dark .sk-stackp.sk-stack3{background:transparent!important}
.sk-stack3 > [role=img]{position:relative!important;inset:auto!important;order:2;display:flex;flex-direction:column;padding-bottom:8px}
.sk-stack3 .sk-stk{position:relative!important;left:auto!important;top:auto!important;width:84%!important;margin:0!important}
.sk-stack3 .sk-stk.s0{z-index:1}
.sk-stack3 .sk-stk.s1{z-index:2;margin:-18px 0 0 8%!important}
.sk-stack3 .sk-stk.s2{z-index:3;margin:-18px 0 0 16%!important}
.sk-stack3 .sk-stk > div{box-shadow:0 1px 2px rgba(17,22,39,.04),0 10px 28px -14px rgba(17,22,39,.14)!important}
.sk-stack3 .sk-stk.s2 > div{box-shadow:0 1px 2px rgba(17,22,39,.05),0 16px 40px -12px rgba(17,22,39,.18)!important}
.sk-dark .sk-stack3 .sk-stk > div{box-shadow:0 0 0 1px rgba(255,255,255,.05),0 12px 32px -12px rgba(0,0,0,.55)!important}
.sk-dark .sk-stack3 .sk-stk.s2 > div{box-shadow:0 0 0 1px rgba(255,255,255,.07),0 16px 40px -12px rgba(0,0,0,.65)!important}
.sk-stack3 .sk-stk-cap{position:static!important;order:1;max-width:440px!important;padding:0!important;pointer-events:auto}
.sk-stack3 .sk-stk-cap > div:nth-child(2){margin-top:14px!important;font-size:clamp(26px,2.6vw,34px)!important;line-height:1.15}
.sk-stack3 .sk-stk-cap > div:nth-child(3){margin-top:16px!important;font-size:17px!important;line-height:1.65!important}
@media (max-width:1000px){.sk-stack3 .sk-stk.s0,.sk-stack3 .sk-stk.s1{display:block!important}}
@media (max-width:900px){
  .sk-stackp.sk-stack3{grid-template-columns:minmax(0,1fr)!important;gap:36px;padding:40px 24px!important}
  .sk-stack3 > [role=img],.sk-stack3 .sk-stk-cap{min-width:0}
  .sk-stack3 .sk-stk{width:90%!important}
  .sk-stack3 .sk-stk.s1{margin-left:5%!important}
  .sk-stack3 .sk-stk.s2{margin-left:10%!important}
  .sk-stack3 .sk-stk > div > div{flex-wrap:wrap}
  .sk-stackp.sk-stack3:hover .sk-stk{transform:none}
}

/* ---- Rev 22: Project Memory "How it works" — detail crops of the Memory screens ----
   Stage 1: the record body (conclusions, scope, reasoning, source link).
   Stage 3: the list toolbar ("Active memories are read in later conversations")
   with the active decision and rule. Both crops share one scale. */
.sk-gstage .sk-shot[data-shot=memory-src] img{border-radius:1.463% / 2.118%}
.sk-gstage .sk-shot[data-shot=memory-src] img[src*="-zh-"]{border-radius:1.463% / 2.487%}
.sk-gstage .sk-shot[data-shot=memory-read] img{border-radius:1.760% / 2.667%}
.sk-story-stage .sk-stage:not(.is-top) > .sk-fit:has([data-shot=memory-read]){width:76.5cqw!important}

/* ---- Rev 23: Repositories "How it works" — the four Upload to GitHub steps ----
   Anonymised captures, cropped to the essential part of each step and centred
   in the stage with no fade. All four are 1358px wide at source, so one width
   gives one scale; the tallest (step 3) fills ~94% of the stage height. */
.sk-story-stage .sk-stage:not(.is-top):has([data-shot^=repo-flow]){align-items:center!important;justify-content:center!important;padding:0!important;-webkit-mask-image:none!important;mask-image:none!important}
.sk-story-stage .sk-stage:not(.is-top) > .sk-fit:has([data-shot^=repo-flow]){width:min(132cqh,90cqw)!important}
.sk-gstage .sk-shot[data-shot=repo-flow-1] img{border-radius:2.504% / 3.656%}
.sk-gstage .sk-shot[data-shot=repo-flow-2] img{border-radius:2.504% / 3.872%}
.sk-gstage .sk-shot[data-shot=repo-flow-3] img{border-radius:2.504% / 3.516%}
.sk-gstage .sk-shot[data-shot=repo-flow-4] img{border-radius:2.504% / 4.709%}

/* ---- Rev 24: Workspace "Day-to-day work" — Notes at the same size as Tasks, Calendar and Plans ----
   The Notes shot carried an inline fixed width (600px) inside a max-content
   wrapper, so it stayed small and off-centre. All four sources are 2064x1700;
   it now fills the same 92% stage width at the same aspect ratio. */
.sk-story-stage .sk-stage:not(.is-top) .sk-shot[data-shot=notes]{width:100%!important;max-width:none!important}

/* ---- Rev 25: Workspace — Usage joins "Day-to-day work" as its first step ----
   The standalone Usage block (a small window between wide margins) is gone; it
   is now step 1 of the pinned story, at the same size as Notes, Tasks, Calendar
   and Plans. Five steps need a little less vertical rhythm to fit the 620px
   sticky panel, so lists with five items are tightened slightly. */
.sk-pi-list:has(> .sk-pi:nth-child(5)){margin-top:28px!important}
.sk-pi-list:has(> .sk-pi:nth-child(5)) .sk-pi-t{padding:16px 0}
.sk-pi-list:has(> .sk-pi:nth-child(5)) .sk-pi.is-on .sk-pi-t{padding-bottom:12px}
.sk-pi-list:has(> .sk-pi:nth-child(5)) .sk-pi.is-on .sk-pi-b{padding-bottom:18px}

/* ---- Rev 26: Workspace "Keep the essentials in order" — cards match the homepage Workspace cards ----
   Narrower, outline-only cards; the screenshot is a top-left detail crop at
   the homepage card scale (1000px for the 2064px captures), inset from the
   left and running off the right and bottom edges with the approved fades. */
.sk-hs-card{width:min(680px,84vw)!important;height:auto!important;border-radius:18px!important;background:transparent!important}
.sk-hs-card > div:first-child{padding:32px 32px 0!important}
.sk-hs-card > div:first-child > h3{font-size:24px!important}
.sk-hs-card > div:first-child > p{font-size:15.5px!important;line-height:1.55!important;max-width:560px}
.sk-hs-card > .sk-gstage{flex:none!important;display:block!important;height:420px;margin:24px 0 0!important;padding:28px 0 0 76px!important;
  border:0!important;border-radius:0!important;background:transparent!important;background-image:none!important;box-shadow:none!important;overflow:hidden!important;
  -webkit-mask-image:linear-gradient(90deg,#000 88%,transparent 100%),linear-gradient(180deg,#000 62%,transparent 100%);-webkit-mask-composite:source-in;
  mask-image:linear-gradient(90deg,#000 88%,transparent 100%),linear-gradient(180deg,#000 62%,transparent 100%);mask-composite:intersect}
.sk-hs-card > .sk-gstage > div{zoom:1!important}
.sk-hs-card > .sk-gstage > div > div:not(.sk-shot){width:auto!important}
.sk-hs-card > .sk-gstage .sk-shot{width:1000px!important;max-width:none!important}
.sk-hs-card > .sk-gstage .sk-shot img{border-radius:1.55% / 1.88%;box-shadow:0 0 0 1px rgba(17,22,39,.055),0 1px 2px rgba(17,22,39,.05),0 8px 24px -6px rgba(17,22,39,.10)!important}
.sk-dark .sk-hs-card > .sk-gstage .sk-shot img{box-shadow:0 0 0 1px rgba(255,255,255,.06),0 1px 2px rgba(0,0,0,.4),0 8px 24px -6px rgba(0,0,0,.5)!important}
@media (max-width:600px){
  .sk-hs-card > div:first-child{padding:24px 24px 0!important}
  .sk-hs-card > .sk-gstage{height:320px;padding:20px 0 0 40px!important}
  .sk-hs-card > .sk-gstage .sk-shot{width:780px!important}
}

/* ---- Rev 27: "Why" comparison — highlighted panel keeps its blue outline, no shadow ---- */
#why .sk-vs + .sk-vs{box-shadow:none!important}

/* ---- Rev 28/29/30: screenshot corners ----
   Rev 30: all screenshot files are opaque rectangles (tools/solidify.py), so the
   CSS radius alone shapes the corners - no dark anti-aliased fringe from baked
   corners. The radius is one proportion of each screenshot's DISPLAYED width
   (1.15%: ~12px at 1040px, ~11.5px at 1000px, ~8px at 720px), so heroes,
   cards, stages and dialogs all read the same. Rev 28/29 notes below kept for history.
   Rev 29: 12pt window corners (24px in the @2x captures), below the 16pt
   reference measured on built-in Mac apps, as requested. 24px is also the
   corner baked into the captures, so the clip, outline and shadow line up
   exactly with the image. Each image gets the corner in its own pixels,
   expressed as % of that image's width / height: the corner scales in
   proportion to the size the screenshot is displayed at, everywhere.
   Generated by tools/radii.py from the image dimensions. */
html .sk-shot.sk-shot.sk-shot img[src*="/calendar-en-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/calendar-zh-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/home-en-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/home-zh-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/knowledge-en-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/knowledge-zh-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/memory-c-en-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/memory-c-zh-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/memory-en-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/memory-read-en-"]{border-radius:1.150% / 1.743%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/memory-read-zh-"]{border-radius:1.150% / 1.743%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/memory-src-en-"]{border-radius:1.150% / 1.665%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/memory-src-zh-"]{border-radius:1.150% / 1.954%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/memory-zh-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/notes-en-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/notes-zh-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/outcomes-c-en-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/outcomes-c-zh-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/outcomes-carry-en-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/outcomes-carry-zh-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/outcomes-en-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/outcomes-history-en-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/outcomes-history-zh-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/outcomes-zh-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/p-goals-en-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/p-goals-zh-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/p-overview-en-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/p-overview-zh-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/p-progress-en-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/p-progress-zh-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/p-res-en-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/p-res-zh-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/p-scan-en-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/p-scan-zh-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/plans-en-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/plans-zh-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/repo-flow-1-en-"]{border-radius:1.150% / 1.679%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/repo-flow-1-zh-"]{border-radius:1.150% / 1.679%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/repo-flow-2-en-"]{border-radius:1.150% / 1.779%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/repo-flow-2-zh-"]{border-radius:1.150% / 1.779%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/repo-flow-3-en-"]{border-radius:1.150% / 1.615%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/repo-flow-3-zh-"]{border-radius:1.150% / 1.615%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/repo-flow-4-en-"]{border-radius:1.150% / 2.163%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/repo-flow-4-zh-"]{border-radius:1.150% / 2.163%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/repos-en-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/repos-zh-"]{border-radius:1.150% / 1.732%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/storage-en-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/storage-zh-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/subs-en-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/subs-zh-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/tasks-en-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/tasks-zh-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/usage-en-"]{border-radius:1.150% / 1.396%!important}
html .sk-shot.sk-shot.sk-shot img[src*="/usage-zh-"]{border-radius:1.150% / 1.396%!important}
/* Rev 29: no drop-shadow filters on screenshots. A filter shadow follows the
   image's own pixels rather than the CSS corner, which left a lighter
   square-ish rim beyond the rounded corner. Screenshots that had only the
   filter now get the approved hairline + soft shadow as a box-shadow, which
   follows the corner; screenshots with their own box-shadow keep it. */
.sk-shot img,.sk-hero-shot .sk-shot img,.sk-dark .sk-shot img,.sk-dark .sk-hero-shot .sk-shot img{filter:none!important}
.sk-shot img{box-shadow:0 0 0 1px rgba(17,22,39,.055),0 1px 2px rgba(17,22,39,.05),0 8px 24px -6px rgba(17,22,39,.10)}
.sk-dark .sk-shot img{box-shadow:0 0 0 1px rgba(255,255,255,.06),0 1px 2px rgba(0,0,0,.4),0 8px 24px -6px rgba(0,0,0,.5)}
