Max Potential First Input Delay
170 ms
The maximum potential First Input Delay that your users could experience is the duration of the longest task. Learn more about the Maximum Potential First Input Delay metric.
正文
481
操作候选
4
图片
2
HTML
9 KB
主要入口
中文听写
移动端模拟 · 性能评分
2026-09-09 · 实验室数据,非真实用户体验数据。
移动端模拟 · 实验室数据,非真实用户体验数据
2026-09-09T14:50:36.527Z · Lighthouse 13.4.1
分数会受服务器、网络和测试环境影响,独立于品味/转化评分。诊断保留 Lighthouse 原文。
170 ms
The maximum potential First Input Delay that your users could experience is the duration of the longest task. Learn more about the Maximum Potential First Input Delay metric.
6.3 s
Time to Interactive is the amount of time it takes for the page to become fully interactive. Learn more about the Time to Interactive metric.
12.8 s
Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. Learn how to minimize main-thread work
{
"type": "table",
"items": [
{
"group": "other",
"duration": 10848.015999999967,
"groupLabel": "Other"
},
{
"group": "scriptEvaluation",
"duration": 943.8639999999988,
"groupLabel": "Script Evaluation"
},
{
"group": "styleLayout",
"duration": 630.256,
"groupLabel": "Style & Layout"
},
{
"group": "paintCompositeRender",
"duration": 355.8759999999998,
"groupLabel": "Rendering"
},
{
"group": "parseHTML",
"duration": 13.127999999999997,
"groupLabel": "Parse HTML & CSS"
},
{
"group": "garbageCollection",
"duration": 12.583999999999971,
"groupLabel": "Garbage Collection"
},
{
"group": "scriptParseCompile",
"duration": 5.099999999999999,
"groupLabel": "Script Parsing & Compilation"
}
],
"headings": [
{
"key": "groupLabel",
"label": "Category",
"valueType": "text"
},
{
"key": "duration",
"label": "Time Spent",
"valueType": "ms",
"granularity": 1
}
],
"sortedBy": [
"duration"
]
}Low-contrast text is difficult or impossible for many users to read. Learn how to provide sufficient color contrast.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-0-DIV",
"path": "1,HTML,1,BODY,1,MAIN,0,SECTION,1,DIV,1,DIV,1,DIV,2,DIV",
"type": "node",
"snippet": "<div class=\"chat-message outgoing\">",
"selector": "div.app-window > div.chat-main > div#chat-history > div.chat-message",
"nodeLabel": "Really good! Been exploring something new.",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 4.19 (foreground color: #ffffff, background color: #1479ef, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 340,
"left": 139,
"right": 378,
"width": 239,
"bottom": 371,
"height": 31
}
}
},
{
"node": {
"lhId": "1-1-SPAN",
"path": "1,HTML,1,BODY,1,MAIN,0,SECTION,1,DIV,1,DIV,2,DIV,1,DIV,0,SPAN",
"type": "node",
"snippet": "<span class=\"local-only\">",
"selector": "div.chat-main > div.chat-composer-area > div.chat-input-status > span.local-only",
"nodeLabel": "仅本页演示",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 3.87 (foreground color: #737b76, background color: #1c1d1f, font size: 4.5pt (6px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 501,
"left": 341,
"right": 379,
"width": 38,
"bottom": 510,
"height": 9
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-2-DIV",
"path": "1,HTML,1,BODY,1,MAIN,0,SECTION,1,DIV,1,DIV,2,DIV",
"type": "node",
"snippet": "<div class=\"chat-composer-area\">",
"selector": "section.experience > div.app-window > div.chat-main > div.chat-composer-area",
"nodeLabel": "+\nI have an idea. Let's make it happen.\n仅本页演示",
"boundingRect": {
"top": 436,
"left": 17,
"right": 395,
"width": 378,
"bottom": 520,
"height": 84
}
}
}
]
}
},
{
"node": {
"lhId": "1-3-SPAN",
"path": "1,HTML,1,BODY,1,MAIN,1,SECTION,1,DIV,0,ARTICLE,0,SPAN",
"type": "node",
"snippet": "<span>",
"selector": "section.underneath > div.steps > article > span",
"nodeLabel": "01",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 4.2 (foreground color: #63796a, background color: #090b0c, font size: 6.8pt (9px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 1078,
"left": 25,
"right": 34,
"width": 9,
"bottom": 1090,
"height": 12
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-4-BODY",
"path": "1,HTML,1,BODY",
"type": "node",
"snippet": "<body>",
"selector": "body",
"nodeLabel": "body",
"boundingRect": {
"top": 0,
"left": 0,
"right": 412,
"width": 412,
"bottom": 2876,
"height": 2876
}
}
}
]
}
},
{
"node": {
"lhId": "1-5-SPAN",
"path": "1,HTML,1,BODY,1,MAIN,1,SECTION,1,DIV,1,ARTICLE,0,SPAN",
"type": "node",
"snippet": "<span>",
"selector": "section.underneath > div.steps > article > span",
"nodeLabel": "02",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 4.2 (foreground color: #63796a, background color: #090b0c, font size: 6.8pt (9px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 1166,
"left": 25,
"right": 36,
"width": 11,
"bottom": 1178,
"height": 12
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-4-BODY",
"path": "1,HTML,1,BODY",
"type": "node",
"snippet": "<body>",
"selector": "body",
"nodeLabel": "body",
"boundingRect": {
"top": 0,
"left": 0,
"right": 412,
"width": 412,
"bottom": 2876,
"height": 2876
}
}
}
]
}
},
{
"node": {
"lhId": "1-6-SPAN",
"path": "1,HTML,1,BODY,1,MAIN,1,SECTION,1,DIV,2,ARTICLE,0,SPAN",
"type": "node",
"snippet": "<span>",
"selector": "section.underneath > div.steps > article > span",
"nodeLabel": "03",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 4.2 (foreground color: #63796a, background color: #090b0c, font size: 6.8pt (9px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 1254,
"left": 25,
"right": 36,
"width": 11,
"bottom": 1266,
"height": 12
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-4-BODY",
"path": "1,HTML,1,BODY",
"type": "node",
"snippet": "<body>",
"selector": "body",
"nodeLabel": "body",
"boundingRect": {
"top": 0,
"left": 0,
"right": 412,
"width": 412,
"bottom": 2876,
"height": 2876
}
}
}
]
}
},
{
"node": {
"lhId": "1-7-SPAN",
"path": "1,HTML,1,BODY,2,FOOTER,1,SPAN",
"type": "node",
"snippet": "<span>",
"selector": "body > footer > span",
"nodeLabel": "macOS 26+ · Apple Silicon · 默认 Apple 端侧识别与翻译",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 4 (foreground color: #65746b, background color: #090b0c, font size: 6.0pt (8px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 2840,
"left": 21,
"right": 391,
"width": 371,
"bottom": 2851,
"height": 11
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-4-BODY",
"path": "1,HTML,1,BODY",
"type": "node",
"snippet": "<body>",
"selector": "body",
"nodeLabel": "body",
"boundingRect": {
"top": 0,
"left": 0,
"right": 412,
"width": 412,
"bottom": 2876,
"height": 2876
}
}
}
]
}
},
{
"node": {
"lhId": "1-8-A",
"path": "1,HTML,1,BODY,2,FOOTER,2,A",
"type": "node",
"snippet": "<a href=\"https://github.com/LiuTianjie/Saylane\">",
"selector": "body > footer > a",
"nodeLabel": "在 GitHub 上探索 ↗",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 4 (foreground color: #65746b, background color: #090b0c, font size: 6.8pt (9px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 2800,
"left": 310,
"right": 391,
"width": 82,
"bottom": 2813,
"height": 13
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-4-BODY",
"path": "1,HTML,1,BODY",
"type": "node",
"snippet": "<body>",
"selector": "body",
"nodeLabel": "body",
"boundingRect": {
"top": 0,
"left": 0,
"right": 412,
"width": 412,
"bottom": 2876,
"height": 2876
}
}
}
]
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT",
"RGAAv4",
"RGAA-3.2.1"
],
"type": "debugdata",
"impact": "serious"
}
}Visible text labels that do not match the accessible name can result in a confusing experience for screen reader users. Learn more about accessible names.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-9-BUTTON",
"path": "1,HTML,1,BODY,1,MAIN,2,SECTION,1,DIV,0,DIV,3,DIV,0,BUTTON",
"type": "node",
"snippet": "<button id=\"practice-key\" class=\"practice-key\" aria-label=\"双击切换模式;键盘 Enter 或空格可直接切换\">",
"selector": "div.practice-content > div.practice-workbench > div.practice-switch-row > button#practice-key",
"nodeLabel": "⌘\n右 Command",
"explanation": "Fix any of the following:\n Text inside the element is not included in the accessible name",
"boundingRect": {
"top": 2047,
"left": 141,
"right": 207,
"width": 66,
"bottom": 2114,
"height": 67
}
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.semantics",
"wcag21a",
"wcag253",
"EN-301-549",
"EN-9.2.5.3",
"RGAAv4",
"RGAA-6.1.5",
"experimental"
],
"type": "debugdata",
"impact": "serious"
}
}Est savings of 76 KiB
A long cache lifetime can speed up repeat visits to your page. Learn more about caching.
{
"type": "table",
"items": [
{
"url": "https://liutianjie.github.io/Saylane/assets/brand-icon.png",
"totalBytes": 72309,
"wastedBytes": 66283.25,
"cacheLifetimeMs": 600000
},
{
"url": "https://liutianjie.github.io/Saylane/style.css?v=brand-alignment-2",
"totalBytes": 7289,
"wastedBytes": 6681.583333333333,
"cacheLifetimeMs": 600000
},
{
"url": "https://liutianjie.github.io/Saylane/app.js",
"totalBytes": 4418,
"wastedBytes": 4049.833333333333,
"cacheLifetimeMs": 600000
},
{
"url": "https://liutianjie.github.io/Saylane/practice.js",
"totalBytes": 1108,
"wastedBytes": 1015.6666666666666,
"cacheLifetimeMs": 600000
}
],
"headings": [
{
"key": "url",
"label": "Request",
"valueType": "url"
},
{
"key": "cacheLifetimeMs",
"label": "Cache TTL",
"valueType": "ms",
"displayUnit": "duration"
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes",
"displayUnit": "kb",
"granularity": 1
}
],
"sortedBy": [
"wastedBytes"
],
"debugData": {
"type": "debugdata",
"wastedBytes": 78030.33333333333
},
"skipSumming": [
"cacheLifetimeMs"
]
}Est savings of 70 KiB
Reducing the download time of images can improve the perceived load time of the page and LCP. Learn more about optimizing image size
{
"type": "table",
"items": [
{
"url": "https://liutianjie.github.io/Saylane/assets/brand-icon.png",
"node": {
"lhId": "page-5-IMG",
"path": "1,HTML,1,BODY,2,FOOTER,0,A,0,IMG",
"type": "node",
"snippet": "<img class=\"brand-icon\" src=\"./assets/brand-icon.png\" width=\"32\" height=\"32\" alt=\"\">",
"selector": "body > footer > a.brand > img.brand-icon",
"nodeLabel": "body > footer > a.brand > img.brand-icon",
"boundingRect": {
"top": 2791,
"left": 21,
"right": 53,
"width": 32,
"bottom": 2823,
"height": 32
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size.",
"wastedBytes": 61076
},
{
"reason": "This image file is larger than it needs to be (256x256) for its displayed dimensions (32x32). Use responsive images to reduce the image download size.",
"wastedBytes": 70874
}
]
},
"totalBytes": 71999,
"wastedBytes": 71828
}
],
"headings": [
{
"key": "node",
"label": "",
"valueType": "node"
},
{
"key": "url",
"label": "URL",
"valueType": "url",
"subItemsHeading": {
"key": "reason",
"valueType": "text"
}
},
{
"key": "totalBytes",
"label": "Resource Size",
"valueType": "bytes"
},
{
"key": "wastedBytes",
"label": "Est Savings",
"valueType": "bytes",
"subItemsHeading": {
"key": "wastedBytes",
"valueType": "bytes"
}
}
],
"debugData": {
"type": "debugdata",
"wastedBytes": 71828
}
}Each subpart has specific improvement strategies. Ideally, most of the LCP time should be spent on loading the resources, not within delays.
{
"type": "list",
"items": [
{
"type": "table",
"items": [
{
"label": "Time to first byte",
"subpart": "timeToFirstByte",
"duration": 1406.747
},
{
"label": "Element render delay",
"subpart": "elementRenderDelay",
"duration": 1898.548
}
],
"headings": [
{
"key": "label",
"label": "Subpart",
"valueType": "text"
},
{
"key": "duration",
"label": "Duration",
"valueType": "ms"
}
]
},
{
"lhId": "page-0-H1",
"path": "1,HTML,1,BODY,1,MAIN,0,SECTION,0,DIV,0,H1",
"type": "node",
"snippet": "<h1>",
"selector": "main > section.experience > div.headline > h1",
"nodeLabel": "Saylane",
"boundingRect": {
"top": 100,
"left": 0,
"right": 412,
"width": 412,
"bottom": 150,
"height": 50
}
}
]
}Avoid chaining critical requests by reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load.
{
"type": "list",
"items": [
{
"type": "list-section",
"value": {
"type": "network-tree",
"chains": {
"E5657F7A220F7A45C529C1A5870D9068": {
"url": "https://liutianjie.github.io/Saylane/",
"children": {
"322938.2": {
"url": "https://liutianjie.github.io/Saylane/style.css?v=brand-alignment-2",
"children": {
"322938.13": {
"url": "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap",
"children": {
"322938.15": {
"url": "https://fonts.gstatic.com/s/dmsans/v17/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K6z9mXg.woff2",
"children": {},
"isLongest": true,
"transferSize": 37531,
"navStartToEndTime": 3551
},
"322938.27": {
"url": "https://fonts.gstatic.com/s/manrope/v20/xn7gYHE41ni1AdIRggexSvfedN4.woff2",
"children": {},
"transferSize": 24703,
"navStartToEndTime": 3550
}
},
"isLongest": true,
"transferSize": 1347,
"navStartToEndTime": 3164
}
},
"isLongest": true,
"transferSize": 7289,
"navStartToEndTime": 2214
},
"322938.9": {
"url": "https://liutianjie.github.io/Saylane/app.js",
"children": {},
"transferSize": 4418,
"navStartToEndTime": 2629
},
"322938.12": {
"url": "https://liutianjie.github.io/Saylane/practice.js",
"children": {},
"transferSize": 1108,
"navStartToEndTime": 2630
}
},
"isLongest": true,
"transferSize": 3916,
"navStartToEndTime": 1962
}
},
"longestChain": {
"duration": 3551
}
}
},
{
"type": "list-section",
"title": "Preconnected origins",
"value": {
"type": "text",
"value": "no origins were preconnected"
},
"description": "[preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) hints help the browser establish a connection earlier in the page load, saving time when the first request for that origin is made. The following are the origins that the page preconnected to."
},
{
"type": "list-section",
"title": "Preconnect candidates",
"value": {
"type": "table",
"items": [
{
"origin": "https://fonts.googleapis.com",
"wastedMs": 301.25
}
],
"headings": [
{
"key": "origin",
"label": "Origin",
"valueType": "text"
},
{
"key": "wastedMs",
"label": "Est LCP savings",
"valueType": "ms"
}
]
},
"description": "Add [preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) hints to your most important origins, but try to use no more than 4."
}
]
}Est savings of 810 ms
Requests are blocking the page's initial render, which may delay LCP. Deferring or inlining can move these network requests out of the critical path.
{
"type": "table",
"items": [
{
"url": "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap",
"wastedMs": 814,
"totalBytes": 1347
},
{
"url": "https://liutianjie.github.io/Saylane/style.css?v=brand-alignment-2",
"totalBytes": 7289
},
{
"url": "https://liutianjie.github.io/Saylane/app.js",
"wastedMs": 393,
"totalBytes": 4418
}
],
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url"
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes"
},
{
"key": "wastedMs",
"label": "Duration",
"valueType": "timespanMs"
}
]
}{
"finalUrl": "https://liutianjie.github.io/Saylane/",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/151.0.0.0 Safari/537.36",
"formFactor": "mobile",
"throttlingMethod": "simulate",
"throttling": {
"rttMs": 150,
"throughputKbps": 1638.4,
"requestLatencyMs": 562.5,
"uploadThroughputKbps": 675,
"cpuSlowdownMultiplier": 4,
"downloadThroughputKbps": 1474.5600000000002
},
"metrics": [
{
"id": "largest-contentful-paint",
"unit": "millisecond",
"value": 2569.2695000000003
},
{
"id": "cumulative-layout-shift",
"unit": "unitless",
"value": 0.006588013250849241
},
{
"id": "total-blocking-time",
"unit": "millisecond",
"value": 157.5
},
{
"id": "first-contentful-paint",
"unit": "millisecond",
"value": 2569.2695000000003
},
{
"id": "speed-index",
"unit": "millisecond",
"value": 7727.449604874679
}
]
}01 / 值得借鉴
直接在 Apple 原生短信界面模型中展示语音到文本的转译胶囊,无需视频即可秒级传递产品在原生输入框中的无缝工作流。
采用深色背景 #090b0c、薄荷绿点缀色(#b9f4d4)以及清晰的 Manrope 和 DM Sans 字体组合,营造出专注且符合 macOS 原生工具品味的高级质感。
02 / 下一步
主视觉正下方的标语 'Speak like native speaker in native way' 缺少必要冠词。对于一款主打地道英语表达的生产力工具,这一语法硬伤会严重削弱访客对翻译质量的信任。
将标语替换为 'Speak like a native speaker, naturally.' 或 'Speak like a native speaker in a natural way.',并在 1440px 桌面端与 390px 移动端校验文本换行。
页面明确标注 PKG 安装器未完成 Apple 公证可能被拦截,但仅给出了版本说明和安装指南文本链,用户下载后遇到拦截极易放弃安装。
在下载按钮旁增加简明提示条:'右键安装包 -> 打开 -> 仍要打开',将公证风险前置化解为简单的确定操作,减少下载后的安装流失。
移动端视图中仍展示带有 Mac 按键符号的 '⌥ 按住这里,看中文变成英文',手机用户无法对应键盘物理按键,交互暗示产生割裂。
在 768px 以下或触控设备上将文案调整为 '长按演示胶囊查看效果',仅在桌面端保留 ⌥ 符号与物理按键提示。
03 / 设计语言
背景
#090b0c文字
#f3f4ee表达也可以更准确
Speak like native speaker in native way.
Speak like a native speaker, naturally.
原句缺少冠词且搭配生硬,与其宣传的原汁原味、地道出圈承诺相悖。04 / 检查依据
逐项查看观察、建议与采集记录。
手机端访客看到 '⌥ 按住这里',物理键盘符号在触摸屏上缺乏交互直觉。
在触屏模式下使用手势轻触或长按图标替换 ⌥ 符号,文案适配为触屏手势说明。
⌥ 按住这里,看中文变成英文
在 X、Slack 或微信里展开成空白或套话,等于浪费已经拿到的点击。这是分发,不是装饰。
补上 og:title、og:description,以及一张和线上标题一致的 1200x630 图。
og:title=no og:image=no
陌生人落到一个看起来像 AI、没有作者、没有客户、没有联系方式的站点上,不会把邮箱给你。
加上真名、真脸、真实联系方式,或一句真实客户的话。
no about, no first-person, no quote
看不到谁跳出,就不知道下一次修改有没有用。没有计数就等于盲飞。
在公开页放上 Plausible、PostHog 或 GA4。一段脚本就够。
no gtag / plausible / posthog / umami
没有 alt,读屏到这里就断了,搜索也会减分。装饰图可以 alt="",内容图不行。
产品和照片写短 alt。纯装饰才用空 alt。
2 images without alt
告知用户 macOS 会阻止打开却未直接展示两步绕过方法,会导致大量下载用户在双击遇阻后直接流失。
在下载按钮下方增加常驻简注:'遇 macOS 拦截?右键点击安装包选择“打开”即可继续安装'。
签名说明:包内应用已做 Developer ID 签名;PKG 安装器本身未签名、未完成 Apple 公证,macOS 可能阻止直接打开。
CSP 是限制脚本源的标准做法。vibe 页面常常什么都加载,包括被注入的脚本。
先开 report-only CSP,再收成 default-src 'self' 和明确的 script-src。
content-security-policy missing
没有 nosniff,浏览器可能按错误类型解释文件。这是一行响应头。
设置 X-Content-Type-Options: nosniff。
x-content-type-options missing
默认 referrer 可能把站内路径和查询串漏给第三方。
设置 Referrer-Policy: strict-origin-when-cross-origin。
referrer-policy missing
05 / 开始动手
优化指令用于调整这个页面;设计指令用于借鉴它的视觉语言。「做同款」会附带截图与实施步骤。复制后粘贴到你的代码助手中。
修复网站文案及移动端交互提示: 1. 将 Hero 区域的副标题从 'Speak like native speaker in native way.' 修改为 'Speak like a native speaker, naturally.'。 2. 在下载模块的说明文字旁增加明显的辅助说明:'遇系统拦截:右键安装包并选择“打开”即可正常安装',降低 Gatekeeper 拦截流失率。 3. 在演示胶囊 '⌥ 按住这里,看中文变成英文' 中,针对移动端触屏环境(max-width 768px 或 pointer: coarse)隐藏 ⌥ 物理键符号,文案调整为 '长按这里,看中文变成英文'。 4. 严格保留现有深色背景 #090b0c、文本颜色 #f3f4ee、薄荷绿点缀变量 --mint (#b9f4d4)、按钮圆角 6px 以及 Manrope 与 DM Sans 字体设定。