*{box-sizing:border-box}body{margin:0;color:var(--ink);line-height:1.65}a{color:inherit;text-decoration:none}a:focus-visible,summary:focus-visible,select:focus-visible{outline:3px solid var(--blue);outline-offset:5px}img{display:block;max-width:100%}.wrap{max-width:1080px;margin:auto}.skip{position:absolute;left:20px;top:-100px;padding:10px;background:#fff;z-index:20}.skip:focus{top:10px}.nav{display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:9px;letter-spacing:-.6px}.brand-name span{color:var(--blue)}.nav-right{display:flex;align-items:center}.languages{display:flex;align-items:center;font-size:12px}.languages select{font:inherit;font-size:13px;color:var(--ink);border:1px solid var(--line);cursor:pointer}.languages noscript{display:flex;gap:8px}.hero{display:grid;align-items:center}.hero p{max-width:520px}.actions{display:flex;gap:12px;flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line)}.platforms{display:flex;align-items:center;color:var(--muted);flex-wrap:wrap}.platforms>span{width:3px;height:3px;border-radius:50%}.icon{width:21px;height:21px;flex-shrink:0;stroke:currentColor;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round}.section-head h2,.section-head h1{margin:0}.section-head p{color:var(--muted)}.features{display:grid}.feature p{color:var(--muted);margin:0}.page-privacy .feature{padding:22px 0;border-top:1px solid var(--line)}.step p{color:var(--muted);margin:0}.text-link{display:inline-block;text-decoration:underline}.setup .text-link{margin-top:26px}.release-brand{display:flex;gap:13px;align-items:center}.release-brand span{display:block;color:var(--muted)}.release-panel ul{padding:0;list-style:none}.release-panel li::before{content:"✓"}.faq-list summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:20px}.faq-list summary::-webkit-details-marker{display:none}.faq-list summary::after{content:"+";font-weight:400;color:var(--muted)}.faq-list details[open] summary::after{content:"−"}.faq-list p{color:var(--muted)}.guide-callout p{margin:0;color:var(--muted)}footer{border-top:1px solid var(--line)}.footer-inner{display:flex;justify-content:space-between;gap:24px;font-size:12px;color:var(--muted)}.footer-links{display:flex;gap:20px}.footer-links a:hover{text-decoration:underline}.download-page{max-width:850px}.download-page h1{letter-spacing:-1.2px;line-height:1.3;margin:20px 0 18px}.download-page .lead{font-size:17px}.download-page p{font-size:14px;color:var(--muted)}.release-info{display:flex;gap:45px;padding:20px 0;margin:24px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.release-info dt{font-size:12px;color:var(--muted)}.release-info dd{margin:4px 0 0;font-size:15px;font-variant-numeric:tabular-nums}.download-page .companion{font-size:12px;margin-top:16px}.download-page h2{font-size:22px;font-weight:600;margin:38px 0 13px}.install-steps{padding-left:22px;font-size:14px}.install-steps li{padding:7px 0 7px 3px}.checksum{display:block;font-size:12px;overflow-wrap:anywhere;word-break:break-all;padding:15px;border:1px solid var(--line)}
/* Reference layout: quiet monochrome surfaces, split hero, numbered content. */
:root{--ink:#171717;--muted:#666;--pale:#f3f3f3;--line:#e5e5e5;--blue:#2563eb;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Segoe UI",sans-serif}
body{background:#fafafa;-webkit-font-smoothing:antialiased}.wrap{padding-left:24px;padding-right:24px}header{position:sticky;top:0;z-index:10;background:rgba(250,250,250,.88);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid rgba(0,0,0,.06)}.nav{min-height:66px}.brand{font-size:18px;font-weight:650;flex-shrink:0}.brand img{width:30px;height:30px}.nav-right{gap:22px}.nav-guide,.nav-download{font-size:14px;font-weight:500}.nav-guide{color:var(--muted)}.nav-download{border-radius:999px;padding:8px 18px;background:var(--ink);color:#fff;white-space:nowrap}.languages select{background:transparent;border-radius:999px;min-width:106px;padding:7px 11px}.nav-download:hover{background:#333}
.hero{grid-template-columns:1fr 1fr;gap:56px;padding-top:88px;padding-bottom:72px}.hero-copy{display:flex;flex-direction:column;align-items:flex-start;gap:26px;min-width:0}.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:400;color:var(--muted);padding:5px 12px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.75)}.eyebrow::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ink);flex-shrink:0}.hero h1,html[lang="zh-CN"] .hero h1{font-size:clamp(40px,5.4vw,60px);line-height:1.14;letter-spacing:-.045em;font-weight:650;margin:0;text-wrap:balance}html[lang="zh-CN"] .hero h1{letter-spacing:-.025em;text-wrap:wrap}.hero p{font-size:17px;color:#4d4d4d;margin:0;line-height:1.8;text-wrap:pretty}.hero p.billing-note{font-size:13px;line-height:1.6;color:#818181;max-width:480px;margin:0}.button{padding:12px 22px;border-radius:999px;font-size:15px;font-weight:500;transition:background .16s ease,transform .16s ease;background:rgba(255,255,255,.8);border-color:#dedede;line-height:1.6}.button.primary{background:var(--ink);color:#fff;border-color:var(--ink);box-shadow:0 8px 24px rgba(0,0,0,.14)}.button:hover{background:#f0f0f0}.button.primary:hover{background:#333}.button:active,.nav-download:active{transform:scale(.98)}.platforms{gap:14px;font-size:13px;line-height:1.5;margin:0}.platforms>span{background:#bbb;flex-shrink:0}
.phone-preview{position:relative;display:flex;flex-direction:column;align-items:center;margin:0;padding:20px 0 0;min-width:0}.phone-frame{width:290px;height:600px;border-radius:52px;background:var(--ink);padding:11px;box-shadow:0 30px 80px rgba(0,0,0,.2),0 8px 24px rgba(0,0,0,.1)}.phone-screen{width:100%;height:100%;border-radius:42px;background:#f2f2f7;overflow:hidden;padding:12px 11px;color:#171717;line-height:1.4}.phone-status{height:31px;display:flex;justify-content:space-between;align-items:center;font-size:11px;font-weight:600;padding:0 12px;position:relative}.island{position:absolute;left:50%;top:2px;transform:translateX(-50%);width:84px;height:24px;border-radius:14px;background:#101010}.battery{font-size:9px;background:#67bd79;color:#fff;border-radius:4px;padding:1px 3px;margin-left:2px}.phone-toolbar{height:30px;display:flex;align-items:center;justify-content:flex-end;padding-right:4px}.phone-toolbar .icon{width:20px;height:20px;background:#fff;border-radius:50%;padding:3px;box-sizing:content-box}.phone-title{font-size:23px;font-weight:750;letter-spacing:-.8px;margin:3px 0 7px}.preview-card{border-radius:21px;background:#fff;padding:14px 12px}.preview-running{font-size:11px;display:flex;align-items:center;gap:7px;color:#58a96c}.signal-dot{width:6px;height:6px;border-radius:50%;background:#58a96c;box-shadow:0 0 0 3px #ecf6ef}.hero .preview-card p{font-size:11px;line-height:1.4;color:#777;margin:18px 0 9px}.preview-cellular{border-top:1px solid #eee;border-bottom:1px solid #eee;padding:11px 0;display:flex;align-items:center;gap:6px;justify-content:space-between;font-size:9px;color:#777}.preview-check{padding:3px 7px;border-radius:20px;background:#f0f0f2;color:#1686ed;white-space:nowrap}.preview-stop{display:inline-flex;background:#f36166;color:#fff;padding:5px 10px;border-radius:999px;font-size:11px;margin-top:10px}.preview-links{display:flex;justify-content:space-between;gap:5px;color:#1686ed;font-size:10px;padding:19px 1px 15px;white-space:nowrap}.preview-stats{padding:0 12px 12px}.preview-row{display:flex;justify-content:space-between;gap:5px;align-items:center;padding:13px 0;border-bottom:1px solid #eee;font-size:11px}.preview-row>span:last-child{font-size:10px;color:#888;white-space:nowrap;font-variant-numeric:tabular-nums}.hero .preview-stats p{margin:12px 0 0;font-size:9px}.connection-badge{position:absolute;bottom:62px;left:8px;display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:14px;background:rgba(255,255,255,.93);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(0,0,0,.08);box-shadow:0 8px 32px rgba(0,0,0,.12)}.connection-badge>.icon{width:30px;height:30px;padding:5px;background:#f2f2f2;border-radius:8px}.connection-badge strong{display:block;font-size:13px;font-weight:500}.connection-badge span{display:block;font-size:12px;color:var(--muted)}.phone-preview figcaption{font-size:11px;color:#999;text-align:center;margin-top:18px}
.section{padding-top:64px;padding-bottom:64px;border-top:0}.section-head{display:block;max-width:620px;margin-bottom:40px}.section-head h2,.section-head h1{font-size:clamp(30px,4vw,40px);letter-spacing:-.025em;line-height:1.25;font-weight:600}.section-head p{font-size:17px;line-height:1.7;margin:14px 0 0;max-width:520px}.features{grid-template-columns:1fr 1fr;gap:16px}.page-home .feature{display:flex;flex-direction:column;gap:12px;padding:26px 24px 28px;border-radius:14px;background:rgba(255,255,255,.85);border:1px solid rgba(0,0,0,.08);box-shadow:0 8px 32px rgba(0,0,0,.04)}.feature-number{font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:13px}.feature h3{margin:0;font-size:18px;font-weight:550;letter-spacing:-.015em}.feature p{font-size:15px;line-height:1.7;text-wrap:pretty}.page-privacy .feature{display:block;max-width:760px}.page-privacy .feature p{margin-top:10px}.setup{background:transparent;display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start}.setup .section-head{margin:0}.steps{display:flex;flex-direction:column;gap:28px}.step{display:grid;grid-template-columns:40px 1fr;gap:14px;align-items:start}.step-number{font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:13px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:#fff;border:1px solid var(--line);color:var(--ink);padding:0}.step h3{font-size:17px;margin:3px 0 7px;font-weight:550}.step p{font-size:15px;line-height:1.7}.text-link{font-size:15px;color:var(--ink);text-underline-offset:5px}
.release-panel{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;padding:48px;border-radius:24px;background:rgba(255,255,255,.9);border:1px solid rgba(0,0,0,.08);box-shadow:0 16px 48px rgba(0,0,0,.07)}.release-brand strong{font-size:26px;font-weight:600;letter-spacing:-.6px}.release-brand span{font-size:14px}.release-panel ul{margin:26px 0 0}.release-panel li{font-size:15px;padding:5px 0}.release-panel li::before{color:var(--ink);margin-right:12px}.release-panel p{font-size:13px;line-height:1.7;color:var(--muted);margin:6px 0}.release-panel .release-version{margin-top:22px;font-variant-numeric:tabular-nums}.release-panel .companion{font-size:12px;margin-top:16px}.signature{color:var(--muted)}.faq-section{max-width:760px}.faq-section .section-head{margin-bottom:28px}.faq-list{border-bottom:1px solid #dedede}.faq-list details{border-top:1px solid #dedede;padding:20px 0}.faq-list summary{font-weight:500;font-size:16px;line-height:1.5}.faq-list summary::after{font-size:21px;line-height:1}.faq-list p{font-size:15px;line-height:1.8;margin:15px 30px 0 0;text-wrap:pretty}.guide-callout{max-width:760px;padding-top:48px;padding-bottom:96px;display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center}.guide-callout h2{font-size:36px;letter-spacing:-.025em;font-weight:600;margin:0;line-height:1.3}.guide-callout p{font-size:17px}.guide-callout .button{margin-top:10px}.footer-inner{padding-top:24px;padding-bottom:24px}.download-page{padding-top:64px;padding-bottom:80px}.download-page h1{font-size:40px;font-weight:600}.download-page p.signature{color:var(--muted)}.checksum{background:#f0f0f0}
@media(max-width:900px){.hero{gap:28px;padding-top:64px}.hero h1,html[lang="zh-CN"] .hero h1{font-size:48px}.connection-badge{left:0;padding:10px 12px}.setup{gap:32px}.release-panel{padding:32px;gap:32px}.nav-right{gap:16px}}
@media(max-width:700px){.wrap{padding-left:22px;padding-right:22px}.nav{min-height:68px;gap:12px}.brand{font-size:19px;gap:7px}.brand img{width:28px;height:28px}.nav-guide,.nav-download{display:none}.nav-right{gap:0}.languages select{min-width:100px}.hero{grid-template-columns:1fr;gap:30px;padding-top:44px;padding-bottom:36px}.hero-copy{gap:22px}.hero h1,html[lang="zh-CN"] .hero h1{font-size:clamp(36px,9.5vw,48px);letter-spacing:-.04em}.hero p{font-size:16px}.platforms{font-size:12px;gap:9px}.hero p.billing-note{font-size:12px}.phone-preview{padding-top:12px}.phone-frame{width:278px;height:577px}.connection-badge{left:max(0px,calc(50% - 170px));bottom:58px;max-width:100%}.connection-badge span{font-size:11px}.section{padding-top:40px;padding-bottom:40px}.section-head{margin-bottom:28px}.section-head h2,.section-head h1{font-size:30px}.section-head p{font-size:16px}.features{grid-template-columns:1fr}.page-home .feature{padding:24px 22px}.setup{grid-template-columns:1fr;gap:32px}.steps{gap:24px}.release-panel{grid-template-columns:1fr;padding:28px 24px;gap:30px}.release-panel ul{margin-top:20px}.release-download .button{width:100%}.faq-list summary{font-size:15px}.faq-list p{font-size:14px;margin-right:12px}.guide-callout{padding-top:32px;padding-bottom:64px;gap:14px}.guide-callout h2{font-size:28px}.guide-callout p{font-size:16px}.footer-inner{flex-direction:column;gap:9px}.download-page{padding-top:40px}.download-page h1{font-size:32px}}
@media(prefers-reduced-motion:reduce){.button{transition:none}}

@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}}
section[id],.v3-platform[id],.changelog h2[id],.changelog-entry[id]{scroll-margin-top:86px}
/* v2 refinements: soft page glow, glass surfaces, ruled steps and a quieter FAQ. */
.page-glow{position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(at 30% 0%,#f4f4f4 0%,transparent 50%),radial-gradient(at 80% 20%,#f2f2f2 0%,transparent 60%),radial-gradient(at 10% 90%,#f7f7f7 0%,transparent 45%)}
header{background:rgba(250,250,250,.72);backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%)}.nav-download:hover,.nav-download:focus-visible{color:#fff}
.hero{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr))}.hero-copy{gap:28px}.hero h1,html[lang="zh-CN"] .hero h1{font-size:clamp(40px,6vw,64px);line-height:1.12;letter-spacing:-.02em;font-weight:600}html[lang="zh-CN"] .hero h1{font-size:clamp(38px,5.4vw,58px);word-break:keep-all}.eyebrow{border-color:rgba(0,0,0,.08);background:rgba(255,255,255,.7);box-shadow:inset 0 1px 0 rgba(255,255,255,.6)}.hero p.billing-note{color:#8f8f8f}.platforms{gap:18px;color:var(--muted)}.platforms>span{width:auto;height:auto;border-radius:0;background:none;opacity:.4}.platforms>span::before{content:"·"}
.button{background:rgba(255,255,255,.7);border-color:rgba(0,0,0,.1);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.button:hover{background:#fff}.button.primary{box-shadow:0 8px 24px rgba(0,0,0,.22)}.button.primary:hover{background:#383838}
.phone-preview{padding:20px 0 48px}.phone-glow{position:absolute;top:50%;left:50%;width:380px;height:380px;max-width:100%;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,#ececec 0%,rgba(236,236,236,0) 70%)}.phone-frame{position:relative;box-shadow:0 30px 80px rgba(0,0,0,.22),0 8px 24px rgba(0,0,0,.12)}.connection-badge{left:max(0px,calc(50% - 250px));bottom:14px;background:rgba(255,255,255,.78);backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 8px 32px rgba(0,0,0,.12)}
.page-home .feature{background:rgba(255,255,255,.7);backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 8px 32px rgba(0,0,0,.06)}.feature h3{font-weight:500;letter-spacing:-.01em}
.setup .section-head p{margin-top:14px}.setup .text-link{margin-top:22px;font-weight:500;text-decoration:none}.setup .text-link:hover{text-decoration:underline}.steps{gap:0}.step{grid-template-columns:48px 1fr;gap:16px;padding:24px 0;border-top:1px solid rgba(0,0,0,.1)}.step-number{display:block;width:auto;height:auto;border:0;border-radius:0;background:none;font-size:14px;line-height:1.9;color:#8f8f8f}.step h3{font-size:18px;font-weight:500;margin:0 0 8px}
.release-panel{padding:clamp(28px,5vw,56px);background:rgba(255,255,255,.72);backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 16px 48px rgba(0,0,0,.1)}.release-brand{gap:14px}.release-brand img{width:56px;height:56px;border-radius:13px;box-shadow:0 4px 14px rgba(0,0,0,.12)}.release-brand strong{font-size:24px;letter-spacing:-.03em;line-height:1.1}.release-panel ul{display:grid;grid-template-columns:1fr 1fr;gap:10px 20px;margin:20px 0 0}.release-panel li{padding:0;display:flex;gap:8px;align-items:baseline}.release-panel li::before{margin-right:0}.release-download{display:flex;flex-direction:column;gap:6px}.release-download .button{width:100%;padding:15px 22px;font-size:16px;margin-bottom:8px}.release-panel p{margin:0;line-height:1.55}.release-download .release-version{margin:0;color:var(--ink)}.release-panel .companion{margin-top:0;font-size:13px;color:#8f8f8f}
.faq-list{border-bottom-color:rgba(0,0,0,.1)}.faq-list details{padding:0;border-top-color:rgba(0,0,0,.1)}.faq-list summary{padding:20px 0;font-size:17px;align-items:center;gap:16px}.faq-list summary::after{font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:18px;color:#8f8f8f;width:20px;text-align:center;flex-shrink:0}.faq-list p{margin:0;padding:0 36px 22px 0;color:var(--muted)}
.guide-callout h2{font-size:clamp(28px,3.6vw,36px);letter-spacing:-.015em}.footer-inner{padding-top:28px;padding-bottom:28px;font-size:13px}
.languages select{-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:10px 6px;padding:7px 36px 7px 14px;min-width:0}.languages select:hover{border-color:#cfcfcf}
@media(max-width:700px){.hero h1,html[lang="zh-CN"] .hero h1{font-size:clamp(34px,10vw,48px)}.platforms{flex-direction:column;align-items:flex-start;gap:4px}.platforms>span{display:none}.phone-glow{width:320px;height:320px}.connection-badge{left:max(0px,calc(50% - 170px));bottom:16px}.step{grid-template-columns:36px 1fr;gap:12px;padding:20px 0}.faq-list summary{font-size:16px}.faq-list p{padding-right:12px}.guide-callout h2{font-size:28px}}
@media(max-width:420px){.release-panel ul{grid-template-columns:1fr}}
/* Privacy policy and support pages share one readable document layout. */
.policy{max-width:840px}.policy .section-head{max-width:none}.policy .section-head p{max-width:680px}.policy .feature{display:block;max-width:760px;padding:22px 0;border-top:1px solid var(--line)}.policy .feature h3{margin:0}.policy .feature p{margin-top:10px}.policy .text-link{font-size:inherit;text-underline-offset:3px}
.policy-providers{max-width:760px;padding:22px 0 30px;border-top:1px solid var(--line)}.policy-providers h2{font-size:15px;font-weight:600;margin:0 0 8px}.policy-providers p{margin:0;font-size:14px;line-height:1.9;color:var(--muted)}.policy-actions{padding-top:26px;border-top:1px solid var(--line);max-width:760px}
/* Official App Store badge: kept unmodified and given clear space around it. */
.store-badge{display:inline-flex;align-items:center;border-radius:9px;transition:opacity .16s ease}.store-badge img{display:block;max-width:none}.store-badge:hover{opacity:.85}.store-badge:focus-visible{outline:3px solid var(--blue);outline-offset:4px}.release-download .store-badge{align-self:flex-start;margin-top:10px}.download-page .store-badge{margin:6px 0 4px}
@media(prefers-reduced-motion:reduce){.store-badge{transition:none}}

/* Actual iPhone screenshot; preserve the existing phone frame. */
.phone-screen.phone-screenshot{padding:0}.phone-screenshot img{display:block;width:100%;height:100%;object-fit:cover;object-position:top}

/* Keep the mobile hero copy at the full available width, including Safari. */
@media(max-width:700px){
.hero{grid-template-columns:minmax(0,1fr)}
.hero-copy{width:100%}
.hero-copy>h1,.hero-copy>p,.hero-copy>.actions,.hero-copy>.platforms{width:100%;max-width:none}
}

/* Release notes */
.changelog{max-width:760px}.changelog h2{font-size:22px;font-weight:600;margin:40px 0 4px}.changelog-entry{padding:18px 0;border-top:1px solid var(--line)}.changelog-entry h3{margin:0;font-size:17px;font-weight:600;font-variant-numeric:tabular-nums}.changelog-entry h3 span{font-weight:400;font-size:13px;color:var(--muted)}.changelog-entry ul{margin:10px 0 0;padding-left:20px;color:var(--muted);font-size:15px;line-height:1.75}.changelog .button{margin-top:36px}.download-page .release-info+.text-link{margin:-8px 0 18px;font-size:14px}

/* Safari's text-wrap:pretty evens out every line of a paragraph, which left the mobile
   hero copy (and Chinese paragraphs anywhere) well short of the right edge. */
html[lang="zh-CN"] .hero p,html[lang="zh-CN"] .feature p,html[lang="zh-CN"] .faq-list p{text-wrap:wrap}
@media(max-width:700px){.hero p,.feature p,.faq-list p{text-wrap:wrap}}

/* 2026-10 network-tool layout: route map in the hero, route cards, icon toolkit, companion section. */
.route-map{position:relative;margin:0;display:flex;flex-direction:column;align-items:center;padding:24px 0;min-width:0}
.route-glow{position:absolute;top:50%;left:50%;width:420px;height:420px;max-width:100%;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,#ececec 0%,rgba(236,236,236,0) 70%);z-index:-1}
.route-node{display:flex;align-items:center;gap:10px;padding:12px 20px;border-radius:14px;background:rgba(255,255,255,.85);border:1px solid rgba(0,0,0,.08);box-shadow:0 8px 28px rgba(0,0,0,.07)}
.route-node strong{font-size:15px;font-weight:550}.route-node .icon{width:24px;height:24px}
.route-hub{background:var(--ink);color:#fff;border-color:var(--ink);box-shadow:0 14px 36px rgba(0,0,0,.2)}.route-hub img{border-radius:8px}
.route-line{width:1px;height:30px;background:linear-gradient(#bbb,#ddd)}
.route-list{list-style:none;margin:0;padding:8px;width:min(100%,360px);border-radius:18px;background:rgba(255,255,255,.75);backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);border:1px solid rgba(0,0,0,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 12px 40px rgba(0,0,0,.08)}
.route{display:flex;align-items:center;gap:12px;padding:12px 12px;border-radius:12px;font-size:15px}.route+.route{border-top:1px solid rgba(0,0,0,.06)}
.route span{flex:1;min-width:0}.route em,.route-card em{font-style:normal;font-size:12px;padding:2px 9px;border-radius:999px;background:#e9f6ee;color:#2f7d4a;white-space:nowrap}
.route.soon{color:#8f8f8f}.route.soon em,.route-card.soon em{background:#f0f0f0;color:#8f8f8f}
.route-cards{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.route-card{display:flex;gap:16px;align-items:flex-start;padding:24px;border-radius:14px;background:rgba(255,255,255,.7);border:1px solid rgba(0,0,0,.08)}
.route-card>.icon{width:26px;height:26px;margin-top:2px}.route-card h3{margin:0 0 8px;font-size:18px;font-weight:500;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.route-card p{margin:0;color:var(--muted);font-size:15px;line-height:1.7}.route-card.soon{background:transparent;border-style:dashed}.route-card.soon>.icon{color:#9a9a9a}
.plan-note{margin:20px 0 0;font-size:13px;color:#8f8f8f}
.toolkit{grid-template-columns:repeat(3,1fr)}.toolkit .feature>.icon{width:26px;height:26px}
.companion-section{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}.companion-section .section-head{margin:0}
.companion-points{list-style:none;padding:0;margin:24px 0 26px;display:grid;grid-template-columns:1fr 1fr;gap:10px 20px;font-size:15px}.companion-points li::before{content:"✓";margin-right:8px}
.companion-section .connection-badge{left:max(0px,calc(50% - 230px))}
@media(max-width:900px){.toolkit{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.route-cards,.toolkit,.companion-section{grid-template-columns:1fr}.companion-section{gap:28px}.route-card{padding:20px}.companion-points{grid-template-columns:1fr}.route-map{padding:8px 0}}
/* 2026-10-08 repositioning: story-line hero, scene cards and "what's next". */
.hero-media{margin:0;min-width:0;position:relative}
.hero-media video,.hero-media img{display:block;width:100%;height:auto;border-radius:20px;border:1px solid rgba(0,0,0,.08);box-shadow:0 24px 64px rgba(0,0,0,.08);background:#fff}
.story-line{list-style:none;margin:0;padding:28px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-radius:20px;background:rgba(255,255,255,.85);border:1px solid rgba(0,0,0,.08);box-shadow:0 24px 64px rgba(0,0,0,.06)}
.story-step{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;font-size:14px;font-weight:550;flex:1;min-width:0}
.story-step .icon{width:44px;height:44px;padding:14px;box-sizing:content-box;border-radius:50%;background:#f3f3f3}
.story-step:first-child .icon{color:#b0443a;background:#fbeceb}
.story-step:last-child .icon{color:#2f7d4f;background:#e8f4ec}
.story-step{position:relative}
.story-step+.story-step::before{content:"";position:absolute;left:-14%;top:36px;width:22%;height:2px;margin-left:-6px;background:linear-gradient(90deg,#d6d6d6,#bdbdbd)}
.scenes{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}
.next-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:16px}
.next-card{display:flex;gap:14px;padding:22px 24px;border-radius:14px;border:1px dashed rgba(0,0,0,.16);background:rgba(255,255,255,.6)}
.next-card h3{margin:0 0 6px;font-size:17px;font-weight:550}
.next-card em{font-style:normal;font-size:12px;color:var(--muted);margin-left:6px;font-weight:450}
.next-card p{margin:0;color:var(--muted);font-size:15px;line-height:1.7}
.companion-section .plan-note{font-size:12px;color:#8a8a8a;line-height:1.7;margin:28px 0 0;padding-top:16px;border-top:1px solid var(--line);max-width:480px}
@media(max-width:600px){.story-line{flex-direction:column;align-items:stretch;padding:22px;gap:18px}.story-step{flex-direction:row;width:100%;text-align:left}.story-step+.story-step::before{left:35px;top:-16px;width:2px;height:14px;margin:0}}
.device-shot img{position:relative;display:block;width:min(340px,100%);height:auto;filter:drop-shadow(0 24px 48px rgba(0,0,0,.16))}
/* The screenshots carry their own window shadow. */.mac-shots{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:0 auto 44px;max-width:1080px}.mac-shots figure{margin:0}.mac-shots img{width:100%;height:auto;display:block}@media(max-width:700px){.mac-shots{grid-template-columns:1fr;gap:8px;margin-bottom:28px}}
.promo-section{padding-top:24px}.promo-section .section-head{max-width:none;text-align:center;margin:0 auto 28px}.promo-media{margin:0;border-radius:20px;overflow:hidden;background:#fff;border:1px solid rgba(0,0,0,.06);box-shadow:0 24px 64px rgba(0,0,0,.1)}.promo-media video{display:block;width:100%;height:auto}.promo-link{font-size:14px;margin-top:-4px}@media(max-width:700px){.promo-section{padding-top:8px}.promo-media{border-radius:14px}}
.leak-page #leak-test{max-width:760px;padding-bottom:30px}.leak-status{min-height:1.5em;margin:14px 0 0;color:var(--muted);font-size:15px}
.leak-verdict{margin-top:18px;padding:18px 20px;border-radius:16px;border:1px solid var(--line);background:var(--pale)}.leak-verdict h2{margin:0;font-size:20px}.leak-verdict p{margin:8px 0 0;line-height:1.7}
.leak-verdict.ok{border-color:rgba(22,163,74,.35);background:rgba(22,163,74,.07)}.leak-verdict.warn{border-color:rgba(234,88,12,.4);background:rgba(234,88,12,.08)}
.leak-result h3{margin:26px 0 8px;font-size:15px}.leak-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.leak-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:12px 0;border-bottom:1px solid var(--line)}.leak-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 220px}.leak-main strong{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;overflow-wrap:anywhere}.leak-main span{color:var(--muted);font-size:14px}
.leak-tag{font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 8px}
.leak-faq-title{margin:34px 0 4px;font-size:22px}
.router-section{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}.router-section .section-head{margin:0}.router-section .actions{margin-top:0}
.router-section .plan-note{font-size:12px;color:#8a8a8a;line-height:1.7;margin:28px 0 0;padding-top:16px;border-top:1px solid var(--line);max-width:480px}
.router-flow{list-style:none;margin:0;padding:0;display:grid;gap:28px;position:relative}.router-flow::before{content:"";position:absolute;left:43px;top:40px;bottom:40px;border-left:2px dashed rgba(0,0,0,.14)}
.router-flow li{position:relative;display:flex;align-items:center;gap:18px;padding:20px 24px;border-radius:16px;background:rgba(255,255,255,.7);box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 8px 32px rgba(0,0,0,.06)}
.router-flow .icon{flex:none;width:24px;height:24px;padding:10px;box-sizing:content-box;border-radius:50%;background:#f3f3f3}.router-flow li:nth-child(2) .icon{color:var(--blue);background:#e8efff}
.router-flow strong{display:block;font-size:16px;font-weight:550}.router-flow span{display:block;color:var(--muted);font-size:14px;line-height:1.6}
@media(max-width:700px){.router-section{grid-template-columns:1fr;gap:28px}.router-flow{gap:16px}.router-flow li{padding:16px 18px}.router-flow::before{left:37px}}
.router-button{gap:8px}.router-button .icon{width:20px;height:20px;flex:none}

/* 2026-10-17 v3 (CellGlide Website design): cool ink palette, blueprint grid, mono kickers, ruled sections. */
:root{--ink:#0d1117;--muted:#5b6270;--faint:#8a909c;--line:rgba(13,17,23,.08);--blue:#2f80ed;--pale:#f2f3f5;--mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,monospace}
body{background:#fbfbfc;color:var(--ink)}
.wrap{max-width:1160px}
a:hover{color:var(--blue)}
header{background:rgba(251,251,252,.78);backdrop-filter:blur(16px) saturate(160%);-webkit-backdrop-filter:blur(16px) saturate(160%);border-bottom:1px solid rgba(13,17,23,.06)}
.nav{min-height:58px;justify-content:flex-start;gap:32px}.brand{font-size:16px;font-weight:600;letter-spacing:-.02em}.brand img{width:26px;height:26px;border-radius:7px}
.v3-menu{display:flex;gap:24px;font-size:14px;color:var(--muted)}.v3-menu a:hover{color:var(--ink)}
.nav-right{margin-left:auto;gap:18px}
.nav-download{border-radius:8px;padding:8px 16px;font-size:13px;background:var(--ink)}.nav-download:hover,.nav-download:focus-visible{background:var(--blue);color:#fff}
.languages select{font-family:var(--mono);font-size:12px;color:var(--muted);border-color:rgba(13,17,23,.1);border-radius:8px;min-width:0;padding:6px 30px 6px 10px;background-position:right 10px center}
.button{border-radius:10px;padding:13px 22px;font-size:15px;font-weight:500;line-height:1.4;background:#fff;border:1px solid rgba(13,17,23,.12);box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;transition:background .16s ease,border-color .16s ease,color .16s ease}
.button:hover{background:#fff;border-color:var(--ink);color:var(--ink)}
.button.primary{background:var(--ink);border-color:var(--ink);color:#fff;box-shadow:none}.button.primary:hover{background:var(--blue);border-color:var(--blue);color:#fff}
.v3-mono{font-family:var(--mono);font-size:12px;color:var(--faint);letter-spacing:.02em}
.v3-grid{position:absolute;top:0;left:0;right:0;height:900px;z-index:-1;pointer-events:none;background-image:linear-gradient(rgba(13,17,23,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(13,17,23,.05) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 0%,#000 30%,transparent 100%);mask-image:radial-gradient(ellipse 70% 60% at 50% 0%,#000 30%,transparent 100%)}

.v3-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:26px;padding-top:96px;padding-bottom:40px}
.v3-badge{display:inline-flex;align-items:center;gap:10px;padding:5px 12px 5px 6px;border-radius:999px;background:#fff;border:1px solid rgba(13,17,23,.1);font-size:13px;color:#3a404b}.v3-badge:hover{border-color:var(--blue);color:var(--ink)}
.v3-badge span{font-family:var(--mono);font-size:11px;padding:2px 7px;border-radius:999px;background:#e8f1fd;color:#1f6fd6}
.v3-hero h1{margin:0;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","PingFang SC","Microsoft YaHei",sans-serif;font-weight:600;font-size:clamp(40px,6.4vw,76px);line-height:1.08;letter-spacing:-.035em;text-wrap:balance}
html[lang="zh-CN"] .v3-hero h1{word-break:keep-all}
.v3-intro{margin:0;font-size:18px;line-height:1.75;color:var(--muted);max-width:600px;text-wrap:pretty}
.v3-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.v3-actions .button{margin:0}
.v3-os{display:flex;gap:8px 20px;flex-wrap:wrap;justify-content:center}

.v3-card-section{padding-top:24px;padding-bottom:88px}
.v3-topology{border-radius:18px;background:#fff;border:1px solid var(--line);box-shadow:0 1px 0 rgba(13,17,23,.03),0 24px 60px rgba(13,17,23,.07);overflow:hidden}
.v3-bar{display:flex;align-items:center;gap:12px;padding:12px 18px;border-bottom:1px solid rgba(13,17,23,.06);font-family:var(--mono);font-size:12px;color:var(--faint)}.v3-bar .ink{color:var(--ink)}.v3-bar .end{margin-left:auto}
.pulse{width:7px;height:7px;border-radius:50%;background:#22b07d;animation:v3pulse 2s ease-in-out infinite}
.v3-flow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) minmax(0,1fr);align-items:center;padding:clamp(24px,4vw,48px)}
.v3-source{display:flex;flex-direction:column;gap:10px;padding:20px;border-radius:12px;border:1px solid var(--line);background:#fbfbfc;font-size:13px;color:var(--muted)}.v3-source .v3-mono{font-size:11px;letter-spacing:.06em}.v3-source strong{font-size:18px;font-weight:600;letter-spacing:-.01em;color:var(--ink)}
.v3-link{display:flex;flex-direction:column;align-items:center;gap:14px;padding:0 12px;text-align:center}.v3-link .v3-mono{font-size:11px;letter-spacing:.06em}
.v3-wire{position:relative;width:100%;height:2px;background:linear-gradient(90deg,rgba(47,128,237,.15),rgba(47,128,237,.5),rgba(47,128,237,.15))}
.v3-wire i{position:absolute;top:-2px;left:0;width:6px;height:6px;border-radius:3px;background:var(--blue);box-shadow:0 0 10px rgba(47,128,237,.7);animation:v3flow 1.8s linear infinite}.v3-wire i:nth-child(2){animation-delay:.6s}.v3-wire i:nth-child(3){animation-delay:1.2s}
.v3-rates{display:flex;gap:28px;font-family:var(--mono);font-variant-numeric:tabular-nums}.v3-rates span{display:flex;flex-direction:column;align-items:center;gap:2px}.v3-rates b{font-size:clamp(20px,2.4vw,28px);font-weight:500}.v3-rates .up b{color:var(--muted)}.v3-rates small{font-size:11px;color:var(--faint)}
.v3-clients{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.v3-client{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;font-size:14px;background:#f3f8fe;border:1px solid rgba(47,128,237,.35)}.v3-client strong{font-weight:500}.v3-client em{margin-left:auto;font-style:normal;font-family:var(--mono);font-size:11px;color:var(--faint)}
.v3-client .dot{width:6px;height:6px;border-radius:50%;background:#22b07d;flex:none}
.v3-client.soon{background:#fff;border-color:var(--line)}.v3-client.soon .dot{background:var(--blue)}.v3-client.soon strong{color:#3a404b}
.v3-client.dev{background:transparent;border:1px dashed rgba(13,17,23,.18)}.v3-client.dev .dot{background:#c3c7cf}.v3-client.dev strong{color:var(--faint)}
.v3-note{margin:18px 0 0;text-align:center;font-size:12px;line-height:1.7;color:var(--faint)}.v3-note.left{text-align:left}
@keyframes v3flow{from{left:0}to{left:calc(100% - 6px)}}@keyframes v3pulse{0%,100%{opacity:1}50%{opacity:.35}}

.v3-section{padding-top:88px;padding-bottom:88px;border-top:1px solid rgba(13,17,23,.06)}
.v3-head{display:flex;flex-direction:column;gap:14px;margin-bottom:48px;max-width:760px}
.v3-kicker{font-family:var(--mono);font-size:12px;color:var(--blue);letter-spacing:.08em}
.v3-head h2{margin:0;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","PingFang SC",sans-serif;font-weight:600;letter-spacing:-.025em;font-size:clamp(30px,4vw,44px);line-height:1.2;text-wrap:balance}
.v3-head p{margin:0;font-size:17px;line-height:1.7;color:var(--muted)}
#video .v3-head{margin-bottom:40px}
.v3-video{margin:0;border-radius:18px;overflow:hidden;background:var(--ink);border:1px solid var(--line);box-shadow:0 24px 60px rgba(13,17,23,.1)}.v3-video video{display:block;width:100%;height:auto;aspect-ratio:16/9;background:var(--ink)}

.v3-features{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.v3-feature{display:flex;flex-direction:column;gap:12px;padding:28px 26px 32px;background:#fff;min-height:200px}
.v3-feature-top{display:flex;align-items:center;gap:10px}.v3-feature-top em{font-style:normal;font-family:var(--mono);font-size:11px;padding:2px 8px;border-radius:999px;border:1px dashed var(--faint);color:var(--muted)}
.v3-feature h3{margin:0;font-size:18px;font-weight:600;letter-spacing:-.01em}.v3-feature p{margin:0;font-size:15px;line-height:1.7;color:var(--muted);text-wrap:pretty}


.v3-shots{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:20px;margin-bottom:20px}.v3-shots figure{margin:0}.v3-shots img{width:100%;height:auto}
.v3-platforms{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:14px}
.v3-platform{display:flex;flex-direction:column;gap:18px;padding:24px;border-radius:14px;background:#fff;border:1px solid rgba(13,17,23,.1)}
.v3-platform-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.v3-platform h3{margin:0;font-size:20px;font-weight:600;letter-spacing:-.02em}
.v3-pill{font-family:var(--mono);font-size:11px;padding:3px 9px;border-radius:999px;background:#e6f6ef;color:#137a55;white-space:nowrap}
.v3-platform>p{margin:0;font-size:15px;line-height:1.65;color:#3a404b;text-wrap:pretty}
.v3-platform ul{list-style:none;margin:0;padding:16px 0 0;border-top:1px solid rgba(13,17,23,.07);display:flex;flex-direction:column;gap:8px;font-size:13px;color:var(--muted)}
.v3-platform li{display:flex;gap:10px}.v3-platform li span{font-family:var(--mono);color:var(--faint);width:56px;flex-shrink:0}
.v3-cta{margin-top:auto;display:flex;justify-content:center;padding:11px 16px;border-radius:9px;font-size:14px;font-weight:500;background:var(--ink);color:#fff;border:1px solid var(--ink)}.v3-cta:hover{background:var(--blue);border-color:var(--blue);color:#fff}
.v3-platform.soon .v3-pill{background:#e8f1fd;color:#1f6fd6}.v3-platform.soon .v3-cta{background:#fff;color:var(--ink);border-color:rgba(13,17,23,.14)}.v3-platform.soon .v3-cta:hover{border-color:var(--ink);color:var(--ink)}
.v3-platform.dev{background:#fbfbfc;border:1px dashed rgba(13,17,23,.18)}.v3-platform.dev .v3-pill{background:transparent;color:var(--muted);border:1px dashed var(--faint)}.v3-platform.dev .v3-cta{background:transparent;color:var(--muted);border:1px dashed rgba(13,17,23,.18)}.v3-platform.dev .v3-cta:hover{color:var(--ink);border-color:var(--ink)}

.v3-split{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:48px;align-items:start}.v3-split .v3-head{margin-bottom:0}
.v3-link-more{display:inline-block;margin-top:20px;font-size:15px;font-weight:500;color:var(--blue)}.v3-link-more:hover{text-decoration:underline}
.v3-step{display:grid;grid-template-columns:56px minmax(0,1fr);gap:16px;padding:26px 0;border-top:1px solid var(--line)}.v3-step .v3-mono{font-size:13px;line-height:2;color:var(--blue)}
.v3-step div{display:flex;flex-direction:column;gap:8px}.v3-step h3{margin:0;font-size:18px;font-weight:600}.v3-step p{margin:0;font-size:15px;line-height:1.7;color:var(--muted);text-wrap:pretty}
#faq .faq-list{border-bottom:1px solid var(--line)}#faq .faq-list details{border-top:1px solid var(--line)}#faq .faq-list summary{font-size:16px;font-weight:500}#faq .faq-list summary::after{color:var(--faint);font-size:16px}#faq .faq-list p{font-size:15px;line-height:1.8}

.v3-final{padding-top:24px;padding-bottom:96px}
.v3-final-card{position:relative;overflow:hidden;border-radius:20px;background:var(--ink);color:#fff;padding:clamp(36px,6vw,72px);display:flex;flex-direction:column;align-items:center;text-align:center;gap:20px}
.v3-final-card::before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:40px 40px;-webkit-mask-image:radial-gradient(ellipse 60% 80% at 50% 100%,#000,transparent);mask-image:radial-gradient(ellipse 60% 80% at 50% 100%,#000,transparent)}
.v3-final-card>*{position:relative}.v3-final-card img{border-radius:15px}
.v3-final-card h2{margin:0;font-weight:600;letter-spacing:-.025em;font-size:clamp(28px,4vw,44px);line-height:1.2;text-wrap:balance}
.button.light{background:#fff;color:var(--ink);border-color:#fff}.button.light:hover{background:#e8f1fd;color:var(--ink)}
.button.ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.22)}.button.ghost:hover{background:transparent;color:#fff;border-color:#fff}

footer{border-top:1px solid rgba(13,17,23,.06)}
.v3-footer{padding-top:40px;padding-bottom:40px;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:32px;font-size:13px;color:var(--muted)}
.v3-footer>div{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.v3-footer .v3-mono{font-size:11px;letter-spacing:.08em}.v3-footer a:hover{color:var(--ink)}.v3-footer a[aria-current]{color:var(--ink)}
.v3-footer-brand{display:flex;align-items:center;gap:8px;color:var(--ink);font-weight:600;font-size:14px}.v3-footer-brand img{border-radius:5px}.v3-faint{color:var(--faint)}

@media(max-width:900px){.v3-menu{display:none}}
@media(max-width:760px){.v3-flow{grid-template-columns:minmax(0,1fr);gap:22px}.v3-link{padding:0}.v3-hero{padding-top:64px}.v3-section{padding-top:64px;padding-bottom:64px}.v3-head{margin-bottom:32px}.v3-bar span:nth-child(3),.v3-bar span:nth-child(4){display:none}}
@media(max-width:700px){.nav{gap:12px}.nav-download{display:inline-flex}.v3-intro{font-size:16px}.v3-step{grid-template-columns:40px minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){.pulse,.v3-wire i{animation:none}.v3-wire i:nth-child(n+2){display:none}.v3-wire i{left:50%}}
/* Example speeds in the connection card: registered integers animate in CSS and print through counters
   (whole part drifts, tenths tick). Reduced motion keeps the static 86.4 / 12.1. */
@property --v3i{syntax:"<integer>";inherits:false;initial-value:0}
@property --v3d{syntax:"<integer>";inherits:false;initial-value:0}
.v3-count{font-style:normal;display:inline-block;min-width:5ch;text-align:left;counter-reset:v3i var(--v3i) v3d var(--v3d)}
.v3-count::before{content:counter(v3i) "." counter(v3d)}
.v3-count.down{--v3i:86;--v3d:4;animation:v3down 14s ease-in-out infinite,v3tenth .9s linear infinite}
.v3-count.up{--v3i:12;--v3d:1;min-width:4ch;animation:v3up 11s ease-in-out infinite,v3tenth 1.3s linear infinite reverse}
@keyframes v3down{0%,100%{--v3i:86}14%{--v3i:94}28%{--v3i:79}42%{--v3i:103}57%{--v3i:91}71%{--v3i:118}85%{--v3i:97}}
@keyframes v3up{0%,100%{--v3i:12}20%{--v3i:15}40%{--v3i:10}60%{--v3i:18}80%{--v3i:13}}
@keyframes v3tenth{from{--v3d:0}to{--v3d:9}}
@media(prefers-reduced-motion:reduce){.v3-count.down,.v3-count.up{animation:none}}

/* Social links: their own footer column and the support page buttons, each with its brand mark. */
.v3-social a{display:inline-flex;align-items:center;gap:8px}.social-icon{width:15px;height:15px;flex:none;display:block}
.social-button{gap:9px}.social-button .social-icon{width:16px;height:16px}

/* Linux download section: install commands scroll sideways instead of wrapping; one row per package. */
.download-page h3{font-size:16px;font-weight:600;margin:26px 0 8px}.download-page pre.command{white-space:pre;overflow-x:auto;word-break:normal;overflow-wrap:normal;margin:0;line-height:1.6}.linux-files{list-style:none;padding:0;margin:0 0 18px}.linux-files li{padding:12px 0;border-top:1px solid var(--line);font-size:14px}.linux-files li span{font-size:13px;color:var(--muted);margin-left:6px}.linux-files .checksum{margin-top:8px}
/* The iPhone app as a platform: a wide card above the four clients, App Store badge inside, and the
   top of the app's home screen peeking up from the card's bottom edge. */
.v3-iphone{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:24px;padding:0;margin:0 0 14px;overflow:hidden}
.v3-iphone-copy{display:flex;flex-direction:column;gap:18px;padding:28px 0 28px 28px}.v3-iphone .v3-platform-top{justify-content:flex-start;gap:12px}
.v3-iphone-copy>p{margin:0;font-size:15px;line-height:1.65;color:#3a404b;max-width:460px;text-wrap:pretty}
.v3-iphone-copy .store-badge{align-self:flex-start;margin-top:auto}
.v3-iphone-shot{margin:0;position:relative;height:300px;align-self:end;display:flex;justify-content:center;background:radial-gradient(ellipse 60% 70% at 50% 100%,#eef4fd,transparent 70%)}
.v3-iphone-shot img{position:absolute;top:28px;width:min(280px,82%);height:auto;filter:drop-shadow(0 18px 36px rgba(13,17,23,.14))}
@media(max-width:760px){.v3-iphone{grid-template-columns:minmax(0,1fr);gap:0}.v3-iphone-copy{padding:24px 24px 8px}.v3-iphone-shot{height:220px}.v3-iphone-shot img{top:20px;width:min(240px,72%)}}

/* Wireless sharing section (2026-10-28 design export): the demo's keyframes, all on one 14.4 s loop. */
@property --wsn{syntax:"<integer>";inherits:false;initial-value:37}
@keyframes wsCam{0%{transform:translate(-222.3px,-142.0px) scale(0.78)}2.778%{transform:translate(-222.3px,-142.0px) scale(0.78);animation-timing-function:cubic-bezier(.65,0,.35,1)}8.333%{transform:translate(-143.0px,-234.0px) scale(1.3)}17.361%{transform:translate(-143.0px,-234.0px) scale(1.3);animation-timing-function:cubic-bezier(.65,0,.35,1)}23.611%{transform:translate(-877.8px,-315.0px) scale(2.1)}40.278%{transform:translate(-877.8px,-315.0px) scale(2.1);animation-timing-function:cubic-bezier(.65,0,.35,1)}45.833%{transform:translate(-222.3px,-142.0px) scale(0.78)}100%{transform:translate(-222.3px,-142.0px) scale(0.78)}}
@keyframes wsG{0%{opacity:0}0%{opacity:0;animation-timing-function:cubic-bezier(.65,0,.35,1)}2.778%{opacity:1}95.139%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}98.611%{opacity:0}100%{opacity:0}}
@keyframes wsDot{0%{background:#aeaeb2}11.25%{background:#aeaeb2;animation-timing-function:cubic-bezier(.65,0,.35,1)}12.639%{background:#30d158}100%{background:#30d158}}
@keyframes wsRing{0%{opacity:0;transform:scale(1)}11.806%{opacity:.55;transform:scale(1);animation-timing-function:cubic-bezier(.33,1,.68,1)}18.75%{opacity:0;transform:scale(3.4)}100%{opacity:0;transform:scale(3.4)}}
@keyframes wsSt1{0%{opacity:1}11.458%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}11.528%{opacity:0}100%{opacity:0}}
@keyframes wsSt2{0%{opacity:0}11.458%{opacity:0;animation-timing-function:cubic-bezier(.65,0,.35,1)}11.528%{opacity:1}72.917%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}72.986%{opacity:0}100%{opacity:0}}
@keyframes wsSt3{0%{opacity:0}72.917%{opacity:0;animation-timing-function:cubic-bezier(.65,0,.35,1)}72.986%{opacity:1}100%{opacity:1}}
@keyframes wsBtnBg{0%{background:#0a84ff}11.25%{background:#0a84ff;animation-timing-function:cubic-bezier(.65,0,.35,1)}12.639%{background:#d23b38}100%{background:#d23b38}}
@keyframes wsBtnP{0%{transform:scale(1)}10.069%{transform:scale(1);animation-timing-function:cubic-bezier(.33,1,.68,1)}10.764%{transform:scale(.93)}11.042%{transform:scale(.93);animation-timing-function:cubic-bezier(.33,1,.68,1)}12.292%{transform:scale(1)}100%{transform:scale(1)}}
@keyframes wsDim{0%{opacity:0}46.181%{opacity:0;animation-timing-function:cubic-bezier(.33,1,.68,1)}49.653%{opacity:.22}71.181%{opacity:.22;animation-timing-function:cubic-bezier(.65,0,.35,1)}74.306%{opacity:0}100%{opacity:0}}
@keyframes wsSheet{0%{transform:translateY(108%)}46.181%{transform:translateY(108%);animation-timing-function:cubic-bezier(.33,1,.68,1)}49.653%{transform:translateY(0)}71.181%{transform:translateY(0);animation-timing-function:cubic-bezier(.65,0,.35,1)}74.306%{transform:translateY(108%)}100%{transform:translateY(108%)}}
@keyframes wsPda0{0%{opacity:0;transform:translateY(4px)}48.264%{opacity:0;transform:translateY(4px);animation-timing-function:cubic-bezier(.33,1,.68,1)}50.347%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}
@keyframes wsPda1{0%{opacity:0;transform:translateY(4px)}48.681%{opacity:0;transform:translateY(4px);animation-timing-function:cubic-bezier(.33,1,.68,1)}50.764%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}
@keyframes wsPda2{0%{opacity:0;transform:translateY(4px)}49.097%{opacity:0;transform:translateY(4px);animation-timing-function:cubic-bezier(.33,1,.68,1)}51.181%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}
@keyframes wsPdb0{0%{opacity:0;transform:translateY(4px)}49.514%{opacity:0;transform:translateY(4px);animation-timing-function:cubic-bezier(.33,1,.68,1)}51.597%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}
@keyframes wsPdb1{0%{opacity:0;transform:translateY(4px)}49.931%{opacity:0;transform:translateY(4px);animation-timing-function:cubic-bezier(.33,1,.68,1)}52.014%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}
@keyframes wsPdb2{0%{opacity:0;transform:translateY(4px)}50.347%{opacity:0;transform:translateY(4px);animation-timing-function:cubic-bezier(.33,1,.68,1)}52.431%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}
@keyframes wsMda0{0%{opacity:0;transform:translateY(4px)}46.875%{opacity:0;transform:translateY(4px);animation-timing-function:cubic-bezier(.33,1,.68,1)}48.958%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}
@keyframes wsMda1{0%{opacity:0;transform:translateY(4px)}47.292%{opacity:0;transform:translateY(4px);animation-timing-function:cubic-bezier(.33,1,.68,1)}49.375%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}
@keyframes wsMda2{0%{opacity:0;transform:translateY(4px)}47.708%{opacity:0;transform:translateY(4px);animation-timing-function:cubic-bezier(.33,1,.68,1)}49.792%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}
@keyframes wsMdb0{0%{opacity:0;transform:translateY(4px)}48.125%{opacity:0;transform:translateY(4px);animation-timing-function:cubic-bezier(.33,1,.68,1)}50.208%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}
@keyframes wsMdb1{0%{opacity:0;transform:translateY(4px)}48.542%{opacity:0;transform:translateY(4px);animation-timing-function:cubic-bezier(.33,1,.68,1)}50.625%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}
@keyframes wsMdb2{0%{opacity:0;transform:translateY(4px)}48.958%{opacity:0;transform:translateY(4px);animation-timing-function:cubic-bezier(.33,1,.68,1)}51.042%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(0)}}
@keyframes wsCount{0%{--wsn:37}46.181%{--wsn:37;animation-timing-function:steps(4,end)}73.958%{--wsn:33}100%{--wsn:33}}
@keyframes wsAllowP{0%{background:#0a84ff;transform:scale(1)}62.153%{background:#0a84ff;transform:scale(1);animation-timing-function:cubic-bezier(.33,1,.68,1)}62.847%{background:#0060df;transform:scale(.93)}63.194%{background:#0060df;transform:scale(.93);animation-timing-function:cubic-bezier(.33,1,.68,1)}64.583%{background:#0a84ff;transform:scale(1)}100%{background:#0a84ff;transform:scale(1)}}
@keyframes wsBtns{0%{opacity:1}64.236%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}65.625%{opacity:0}100%{opacity:0}}
@keyframes wsWait{0%{opacity:0}64.931%{opacity:0;animation-timing-function:cubic-bezier(.65,0,.35,1)}66.319%{opacity:1}100%{opacity:1}}
@keyframes wsFingerT{0%{transform:translate(50px,124px) scale(0.9)}7.292%{transform:translate(50px,124px) scale(0.9);animation-timing-function:cubic-bezier(.65,0,.35,1)}9.028%{transform:translate(50px,124px) scale(1)}10.069%{transform:translate(50px,124px) scale(1);animation-timing-function:cubic-bezier(.33,1,.68,1)}10.764%{transform:translate(50px,124px) scale(0.86)}11.25%{transform:translate(50px,124px) scale(0.86);animation-timing-function:cubic-bezier(.33,1,.68,1)}12.5%{transform:translate(50px,124px) scale(1)}12.847%{transform:translate(50px,124px) scale(1);animation-timing-function:cubic-bezier(.65,0,.35,1)}14.583%{transform:translate(50px,124px) scale(0.9)}57.639%{transform:translate(50px,124px) scale(0.9);animation-timing-function:cubic-bezier(.65,0,.35,1)}59.722%{transform:translate(86px,221px) scale(0.9);animation-timing-function:cubic-bezier(.65,0,.35,1)}61.458%{transform:translate(99px,255px) scale(1)}62.153%{transform:translate(99px,255px) scale(1);animation-timing-function:cubic-bezier(.33,1,.68,1)}62.847%{transform:translate(99px,255px) scale(0.86)}63.333%{transform:translate(99px,255px) scale(0.86);animation-timing-function:cubic-bezier(.33,1,.68,1)}64.583%{transform:translate(99px,255px) scale(1)}64.931%{transform:translate(99px,255px) scale(1);animation-timing-function:cubic-bezier(.65,0,.35,1)}66.667%{transform:translate(99px,255px) scale(0.9)}100%{transform:translate(99px,255px) scale(0.9)}}
@keyframes wsFingerO{0%{opacity:0}7.292%{opacity:0;animation-timing-function:cubic-bezier(.65,0,.35,1)}9.028%{opacity:1}12.847%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}14.583%{opacity:0}59.722%{opacity:0;animation-timing-function:cubic-bezier(.65,0,.35,1)}61.458%{opacity:1}64.931%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}66.667%{opacity:0}100%{opacity:0}}
@keyframes wsIcon{0%{background:rgba(255,255,255,0)}27.639%{background:rgba(255,255,255,0);animation-timing-function:cubic-bezier(.65,0,.35,1)}28.125%{background:rgba(255,255,255,.3)}38.889%{background:rgba(255,255,255,.3);animation-timing-function:cubic-bezier(.65,0,.35,1)}40.278%{background:rgba(255,255,255,0)}100%{background:rgba(255,255,255,0)}}
@keyframes wsBadge{0%{opacity:0}72.917%{opacity:0;animation-timing-function:cubic-bezier(.65,0,.35,1)}75%{opacity:1}100%{opacity:1}}
@keyframes wsMenu{0%{opacity:0;transform:translateY(-5px) scale(.97)}28.125%{opacity:0;transform:translateY(-5px) scale(.97);animation-timing-function:cubic-bezier(.33,1,.68,1)}29.861%{opacity:1;transform:translateY(0) scale(1)}38.542%{opacity:1;transform:translateY(0) scale(1);animation-timing-function:cubic-bezier(.65,0,.35,1)}40.278%{opacity:0;transform:translateY(-5px) scale(.97)}100%{opacity:0;transform:translateY(-5px) scale(.97)}}
@keyframes wsWl{0%{background:rgba(255,255,255,.12);transform:scale(1)}34.375%{background:rgba(255,255,255,.12);transform:scale(1);animation-timing-function:cubic-bezier(.65,0,.35,1)}35.069%{background:rgba(255,255,255,.28);transform:scale(1)}36.806%{background:rgba(255,255,255,.28);transform:scale(1);animation-timing-function:cubic-bezier(.33,1,.68,1)}37.5%{background:rgba(255,255,255,.28);transform:scale(.93)}37.778%{background:rgba(255,255,255,.28);transform:scale(.93);animation-timing-function:cubic-bezier(.33,1,.68,1)}39.028%{background:rgba(255,255,255,.28);transform:scale(1)}100%{background:rgba(255,255,255,.28);transform:scale(1)}}
@keyframes wsDlg{0%{opacity:0;transform:scale(.93)}44.444%{opacity:0;transform:scale(.93);animation-timing-function:cubic-bezier(.33,1,.68,1)}47.222%{opacity:1;transform:scale(1)}70.139%{opacity:1;transform:scale(1);animation-timing-function:cubic-bezier(.65,0,.35,1)}72.222%{opacity:0;transform:scale(.93)}100%{opacity:0;transform:scale(.93)}}
@keyframes wsMAllow{0%{background:#0a84ff;transform:scale(1)}69.444%{background:#0a84ff;transform:scale(1);animation-timing-function:cubic-bezier(.33,1,.68,1)}70%{background:#0060df;transform:scale(.93)}70.417%{background:#0060df;transform:scale(.93);animation-timing-function:cubic-bezier(.33,1,.68,1)}71.528%{background:#0a84ff;transform:scale(1)}100%{background:#0a84ff;transform:scale(1)}}
@keyframes wsToast{0%{opacity:0;transform:translateY(-4px)}73.611%{opacity:0;transform:translateY(-4px);animation-timing-function:cubic-bezier(.33,1,.68,1)}76.389%{opacity:1;transform:translateY(0)}90.278%{opacity:1;transform:translateY(0);animation-timing-function:cubic-bezier(.65,0,.35,1)}93.056%{opacity:0;transform:translateY(-4px)}100%{opacity:0;transform:translateY(-4px)}}
@keyframes wsCurT{0%{transform:translate(150px,120px) scale(1)}24.306%{transform:translate(150px,120px) scale(1);animation-timing-function:cubic-bezier(.65,0,.35,1)}27.778%{transform:translate(204px,7px) scale(1);animation-timing-function:cubic-bezier(.65,0,.35,1)}28.333%{transform:translate(204px,7px) scale(0.88)}28.472%{transform:translate(204px,7px) scale(0.88);animation-timing-function:cubic-bezier(.65,0,.35,1)}29.306%{transform:translate(204px,7px) scale(1)}31.25%{transform:translate(204px,7px) scale(1);animation-timing-function:cubic-bezier(.65,0,.35,1)}34.722%{transform:translate(225px,86px) scale(1)}36.806%{transform:translate(225px,86px) scale(1);animation-timing-function:cubic-bezier(.65,0,.35,1)}37.361%{transform:translate(225px,86px) scale(0.88)}37.5%{transform:translate(225px,86px) scale(0.88);animation-timing-function:cubic-bezier(.65,0,.35,1)}38.333%{transform:translate(225px,86px) scale(1)}40.278%{transform:translate(225px,86px) scale(1);animation-timing-function:cubic-bezier(.65,0,.35,1)}45.833%{transform:translate(168px,172px) scale(1)}65.278%{transform:translate(168px,172px) scale(1);animation-timing-function:cubic-bezier(.65,0,.35,1)}69.097%{transform:translate(190px,146px) scale(1)}69.444%{transform:translate(190px,146px) scale(1);animation-timing-function:cubic-bezier(.65,0,.35,1)}70%{transform:translate(190px,146px) scale(0.88)}70.139%{transform:translate(190px,146px) scale(0.88);animation-timing-function:cubic-bezier(.65,0,.35,1)}70.972%{transform:translate(190px,146px) scale(1)}100%{transform:translate(190px,146px) scale(1)}}
@keyframes wsCurO{0%{opacity:0}22.222%{opacity:0;animation-timing-function:cubic-bezier(.65,0,.35,1)}23.958%{opacity:1}72.222%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}74.306%{opacity:0}100%{opacity:0}}
@keyframes wsLinkO{0%{opacity:0}52.083%{opacity:0;animation-timing-function:cubic-bezier(.65,0,.35,1)}53.472%{opacity:1}60.417%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}63.194%{opacity:0}100%{opacity:0}}
@keyframes wsLinkC{0%{clip-path:inset(0 100% 0 0)}52.083%{clip-path:inset(0 100% 0 0);animation-timing-function:cubic-bezier(.65,0,.35,1)}57.639%{clip-path:inset(0 0 0 0)}100%{clip-path:inset(0 0 0 0)}}
@keyframes wsConn{0%{opacity:0}73.611%{opacity:0;animation-timing-function:cubic-bezier(.65,0,.35,1)}75.694%{opacity:1}91.667%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}94.444%{opacity:0}100%{opacity:0}}
@keyframes wsFlow{0%{offset-distance:0%;opacity:0}50%{opacity:1}100%{offset-distance:100%;opacity:0}}
@keyframes wsS0{0%{opacity:1}15.625%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}17.708%{opacity:.38}97.917%{opacity:.38;animation-timing-function:cubic-bezier(.65,0,.35,1)}100%{opacity:1}}
@keyframes wsS1{0%{opacity:.38}15.625%{opacity:.38;animation-timing-function:cubic-bezier(.65,0,.35,1)}17.708%{opacity:1}39.931%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}42.014%{opacity:.38}100%{opacity:.38}}
@keyframes wsS2{0%{opacity:.38}39.931%{opacity:.38;animation-timing-function:cubic-bezier(.65,0,.35,1)}42.014%{opacity:1}58.681%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}60.764%{opacity:.38}100%{opacity:.38}}
@keyframes wsS3{0%{opacity:.38}58.681%{opacity:.38;animation-timing-function:cubic-bezier(.65,0,.35,1)}60.764%{opacity:1}71.181%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}73.264%{opacity:.38}100%{opacity:.38}}
@keyframes wsS4{0%{opacity:.38}71.181%{opacity:.38;animation-timing-function:cubic-bezier(.65,0,.35,1)}73.264%{opacity:1}97.917%{opacity:1;animation-timing-function:cubic-bezier(.65,0,.35,1)}100%{opacity:.38}}
@keyframes wsStOn{0%{opacity:0}11.458%{opacity:0;animation-timing-function:cubic-bezier(.65,0,.35,1)}11.528%{opacity:1}100%{opacity:1}}
.ws-count::after{content:counter(wsn)}
@media (prefers-reduced-motion:reduce){#wireless *{animation-play-state:paused!important}}
/* Wireless section layout: copy and steps on the left (the active step follows the demo), demo stage on the right. */
.v3-wireless{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr));gap:48px;align-items:center}
.ws-copy{display:flex;flex-direction:column;gap:14px;min-width:0}
.ws-kicker{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap}
.ws-pending{background:#e8f1fd;color:#1f6fd6}
.ws-copy h2{margin:0;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","PingFang SC",sans-serif;font-weight:600;letter-spacing:-.025em;font-size:clamp(30px,4vw,44px);line-height:1.2;text-wrap:balance}
.ws-copy>p{margin:0;font-size:17px;line-height:1.7;color:var(--muted);text-wrap:pretty}
.ws-copy>.v3-note{margin:0;font-size:13px}
.ws-steps{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column}
.ws-step{display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;padding:14px 0;border-top:1px solid var(--line)}
.ws-step .v3-mono{font-size:13px;line-height:1.7;color:var(--blue)}
.ws-step div{display:flex;flex-direction:column;gap:4px}.ws-step strong{font-size:16px;font-weight:600;color:var(--ink)}.ws-step div span{font-size:14px;line-height:1.65;color:var(--muted);text-wrap:pretty}
.ws-step-0{animation:wsS0 14.4s linear -.6s infinite}.ws-step-1{animation:wsS1 14.4s linear -.6s infinite}.ws-step-2{animation:wsS2 14.4s linear -.6s infinite}.ws-step-3{animation:wsS3 14.4s linear -.6s infinite}.ws-step-4{animation:wsS4 14.4s linear -.6s infinite}
html[lang="zh-CN"] .ws-copy h2{word-break:keep-all}
/* Narrow screens: the demo scene is 520 px wide, so scale the whole stage down instead of cropping the phone. */
@media(max-width:700px){#wireless [role="img"]{height:370px!important}#wireless [role="img"]>div{transform:scale(.84)}}
@media(max-width:520px){#wireless [role="img"]{height:300px!important}#wireless [role="img"]>div{transform:scale(.62)}}
/* Open-source links: the GitHub link in platform card specs and the Linux source link on the download page. */
.v3-spec-link{color:var(--ink);text-decoration:underline;text-decoration-color:rgba(13,17,23,.25);text-underline-offset:3px}.v3-spec-link:hover{color:var(--blue);text-decoration-color:currentColor}
.linux-links{display:flex;flex-wrap:wrap;gap:4px 24px}.linux-links .text-link{margin-top:0}
/* Get started and the questions share one section (2026-11-04): steps on the left, questions on the right. */
.v3-start .v3-steps .v3-step:first-child{padding-top:0;border-top:0}
.v3-subhead{margin:0 0 6px;font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:12px;font-weight:400;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
#faq{scroll-margin-top:86px}#faq .faq-list details:first-child{border-top:0}#faq .faq-list summary{padding-top:16px}
