日常的另一种可能 / 创意探索本机草稿
01 / THE IDEA把日常,
拍成一场电影。
自然光、细腻颗粒,
让每一帧都有呼吸感。
02 / VISUAL STUDY光的形状
LIGHT / SPACE / EMOTION03 / PROMPT留住清晨的光。
窗边的植物,安静的房间。
35mm 胶片,缓慢推进。
一个创作场景示意。你的想法、素材与工具,在这里相遇。
+
啡跃 Endoleap · 让灵感,有形。
+
+
A SPACE FOR HUMAN IDEAS & AGENTS
想法不该停在对话里。
让灵感,有形。
从一闪而过的念头,到值得分享的作品。
连接你的 coding agent,在一张画布上,把创作继续下去。
每一种好奇,都有自己的起点。{([
+ ['collect','收藏生活的切片'],['read','遇见新的工作方法'],['idea','记下突然出现的灵感'],['dream','给想法一点自由'],['make','做一件属于你的作品']
+] as const).map(([pose,label])=>{label})}✳
+
MAKE ROOM FOR WHAT COMES NEXT
给好奇心一点空间,
让下一步自然发生。
{([
+ ['collect','留住一闪而过','一句念头、一张参考图、一个还没想好的方向。先留下,再慢慢展开。'],
+ ['connect','让线索相遇','把笔记、图片和提示词放上画布,用连接看见它们之间的新可能。'],
+ ['read','找到有用的方法','阅读可独立使用的知识文档,需要更多背景时,沿链接继续探索。'],
+ ['make','把创作继续下去','用熟悉的 coding agent 探索,再亲手调整细节,让想法成为自己的作品。']
+] as const).map(([kind,title,copy])=>
{title}
{copy}
)}
+
GOOD IDEAS DESERVE GOOD COMPANY
不必每一次,
都从空白开始。
把有用的工作方法,留给下一次的自己。
一篇文档讲清一件事,需要时再沿着链接走远一点。
去知识空间逛逛 读到这里,
想到了什么?READ. CONNECT. MAKE.
YOUR AGENT. YOUR WORKFLOW.
用熟悉的 Agent,
继续你的创作。
通过项目已有的 API 与文档,让 coding agent 理解模板和创作内容。画布负责呈现,你来决定下一步。
查看 Agent 接入文档 - 01
- 02
连接工作方式
将接入文档交给你的 coding agent。
- 03
亲手打磨,保存作品
在编辑器中调整细节,导出并保留备份。
-
}
+
{(['collect','read','connect','make'] as const).map(kind=>
)}
}
diff --git a/apps/waterfall-wiki/src/styles/landing.module.css b/apps/waterfall-wiki/src/styles/landing.module.css
index 7f30a68..ce9a23e 100644
--- a/apps/waterfall-wiki/src/styles/landing.module.css
+++ b/apps/waterfall-wiki/src/styles/landing.module.css
@@ -1,7 +1,15 @@
-.page{background:var(--selection);color:var(--foreground-strong);font-family:Arial,'PingFang SC',sans-serif}.page *{box-sizing:border-box}.page a{text-decoration:none;color:inherit}.nav{max-width:1320px;margin:auto;height:92px;display:flex;align-items:center;gap:28px;padding:0 38px;border-bottom:1px solid var(--border)}.logo{display:flex;align-items:center;gap:10px;font-size:24px}.logo span{font-size:11px;letter-spacing:2px;color:var(--muted-foreground)}.nav>div{display:flex;gap:30px;flex:1;margin-left:60px;font-size:13px}.nav>a:not(.logo){font-size:13px}.dark{display:inline-flex;align-items:center;justify-content:center;gap:16px;background:var(--primary);color:var(--primary-foreground)!important;border-radius:7px;padding:14px 20px;font-size:14px}.dark:hover{background:var(--primary-hover)}.hero{text-align:center;padding:78px 32px 40px;max-width:1320px;margin:auto}.eyebrow{font-size:10px;letter-spacing:2.5px;color:var(--muted-foreground);font-weight:600}.hero h1{font-size:clamp(36px,4.6vw,68px);line-height:1.24;letter-spacing:-3px;font-weight:600;margin:28px 0}.hero h1>span{color:var(--muted-foreground)}.intro{font-size:16px;line-height:1.95;color:var(--muted-foreground)}.actions{display:flex;align-items:center;justify-content:center;gap:28px;margin:28px 0 55px;font-size:13px}.product{text-align:left;border:1px solid var(--border);border-radius:13px;overflow:hidden;box-shadow:0 20px 65px var(--shadow);background:var(--surface)}.productBar{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 23px;border-bottom:1px solid var(--border);font-size:10px;color:var(--muted-foreground)}.productBar b{letter-spacing:2px;color:var(--foreground-strong)}.demo{display:flex;min-height:385px}.demo>aside{width:175px;flex-shrink:0;padding:26px 20px;border-right:1px solid var(--border);font-size:11px;color:var(--muted-foreground)}.demo hr{border:0;border-top:1px solid var(--border);margin:20px 0}.demo aside p{padding:8px 0}.demo aside small{display:block;margin-top:90px;font-size:9px}.demoWorld{position:relative;flex:1;min-width:0;background:radial-gradient(var(--grid) .7px,transparent .7px) 0 0/18px 18px,var(--background)}.demoWorld>svg{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:var(--connector);stroke-width:1.5}.demoWorld>article{position:absolute;border:1px solid var(--selection-border);box-shadow:0 8px 20px var(--shadow);border-radius:7px;padding:23px;width:23%;background:var(--background)}.demoWorld small{font-size:8px;letter-spacing:1px;color:var(--muted-foreground)}.demoWorld h3{font-size:22px;font-weight:500;line-height:1.5;margin:18px 0 12px}.demoWorld p{font-size:10px;line-height:1.9;color:var(--muted-foreground)}.note{left:5%;top:55px;transform:rotate(-3deg)}.demoWorld>.art{left:36%;top:35px;width:25%;height:260px;overflow:hidden;background:var(--background);color:var(--primary)}.art h3{position:absolute;bottom:24px;z-index:1}.art>span{position:absolute;bottom:23px;font-size:6px;letter-spacing:2px}.orbit{width:165px;height:165px;border-radius:50%;background:linear-gradient(135deg,#f7f2d8,#7f9469);box-shadow:20px 10px 30px #52613e44;position:absolute;right:-28px;top:25px}.prompt{left:69%;top:100px;transform:rotate(3deg)}.prompt>svg{display:block;margin-bottom:16px;color:var(--muted-foreground)}.dock{position:absolute;bottom:15px;left:50%;transform:translateX(-50%);display:flex;gap:23px;padding:12px 18px;border:1px solid var(--border);background:var(--surface);border-radius:10px}.dock svg{width:17px;color:var(--foreground)}.caption{font-size:10px;color:var(--muted-foreground);margin-top:23px}.tools{max-width:1160px;padding:75px 32px;margin:auto}.page h2{font-size:clamp(30px,3.5vw,47px);line-height:1.3;letter-spacing:-1.8px;font-weight:500;margin:20px 0 35px}.toolGrid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.toolGrid>a{border:1px solid var(--border);padding:30px;border-radius:12px;background:var(--surface);transition:transform .2s}.toolGrid>a:hover{transform:translateY(-4px)}.toolGrid>a>svg{width:21px;vertical-align:middle;color:var(--muted-foreground)}.toolGrid>a>span{font-size:9px;letter-spacing:2px;margin-left:13px;color:var(--muted-foreground)}.toolGrid h3{font-size:27px;letter-spacing:-1px;margin:25px 0 14px;font-weight:500}.toolGrid p{font-size:13px;line-height:1.9;color:var(--muted-foreground);max-width:370px}.toolGrid strong{display:flex;justify-content:space-between;font-weight:400;font-size:12px;margin-top:24px}.poster,.miniCanvas{height:225px;margin-top:30px;overflow:hidden;background:#ebeedf;position:relative;border-radius:6px}.poster>span{display:block;font-size:48px;letter-spacing:-3px;font-weight:700;line-height:1;padding:28px;color:#434e32}.poster i{font-family:Georgia,serif;font-weight:400}.poster>b{position:absolute;right:20px;top:20px;font-size:175px;line-height:1;color:#9cae79;transform:rotate(15deg)}.miniCanvas{display:flex;align-items:center;justify-content:center;gap:10px;background:radial-gradient(var(--grid) .7px,transparent .7px) 0 0/15px 15px,var(--background)}.miniCanvas b{font-size:11px;font-weight:400;padding:20px 13px;border:1px solid var(--selection-border);background:var(--background);border-radius:6px}.miniCanvas i{color:var(--muted-foreground)}.workflow{max-width:1160px;margin:20px auto;padding:65px 32px 90px;display:grid;grid-template-columns:1fr 1fr;gap:100px;border-top:1px solid var(--border)}.workflow p{font-size:13px;line-height:1.9;color:var(--muted-foreground)}.workflow a{display:inline-flex;gap:10px;font-size:12px;margin-top:20px}.workflow ol{list-style:none;padding:0}.workflow li{display:flex;gap:25px;border-bottom:1px solid var(--border);padding:22px 0}.workflow li>b{font-size:12px;color:var(--muted-foreground);padding-top:6px}.workflow h3{font-size:18px;font-weight:500;margin:0}.end{text-align:center;padding:75px 25px 95px;background:var(--selection);border-top:1px solid var(--border)}.end>span{font-size:55px;color:var(--muted-foreground)}.footer{max-width:1240px;display:flex;justify-content:space-between;gap:25px;align-items:center;margin:auto;padding:35px;font-size:11px;color:var(--muted-foreground)}.footer .logo{font-size:16px}.page a:focus-visible{outline:2px solid var(--ring);outline-offset:5px}@media(max-width:760px){.nav{padding:0 20px;height:72px;gap:14px}.nav>div{display:none}.nav .logo{flex:1}.nav .dark{padding:10px}.hero{padding:50px 18px 20px}.hero h1{letter-spacing:-1.5px}.intro{font-size:13px}.actions{gap:15px}.demo>aside{display:none}.demo{min-height:340px}.demoWorld>article{padding:12px}.demoWorld h3{font-size:16px}.demoWorld p{font-size:8px}.demoWorld small{font-size:6px}.demoWorld>.art{height:220px}.prompt{left:68%}.orbit{width:110px;height:110px}.productBar span:last-child{display:none}.toolGrid{grid-template-columns:1fr}.tools{padding:50px 20px}.workflow{grid-template-columns:1fr;gap:20px;padding:45px 20px}.footer{flex-wrap:wrap;padding:25px 20px}.footer>span{display:none}}
-
-.nav .logo{flex-shrink:0}.nav>div{margin-left:24px}.nav .dark,.actions .dark,.end .dark{background:var(--primary);color:var(--primary-foreground)!important}
-.dark:hover{background:var(--primary-hover)}
-.hero h1>span{color:var(--primary)}
-.end>span{display:inline-flex}.end>span :global(.endoleap-mark){width:64px;height:64px}.end>span :global(.endoleap-wordmark){display:none!important}
-.demoWorld,.miniCanvas{background-color:var(--el-canvas-white);background-image:radial-gradient(var(--grid) .7px,transparent .7px);color:var(--el-espresso)}
+.page{background:var(--background);color:var(--foreground-strong);font-family:Arial,'PingFang SC',sans-serif;overflow:clip}.page *{box-sizing:border-box}.page a{text-decoration:none;color:inherit}.page a:focus-visible{outline:2px solid var(--ring);outline-offset:5px}.page em{font-family:Georgia,'STSong','Songti SC',serif;font-weight:400}
+.nav{max-width:1320px;margin:auto;min-height:92px;display:flex;align-items:center;gap:28px;padding:20px 38px;border-bottom:1px solid var(--border)}.logo{display:inline-flex;flex-shrink:0}.nav>div{display:flex;gap:30px;flex:1;margin-left:24px;font-size:13px}.nav>a:not(.logo){font-size:13px}.dark{display:inline-flex;align-items:center;justify-content:center;gap:16px;background:var(--primary);color:var(--primary-foreground)!important;border-radius:7px;padding:15px 22px;font-size:14px;transition:background 160ms ease}.dark:hover{background:var(--primary-hover)}
+.hero{text-align:center;padding:82px 32px 0;max-width:1320px;margin:auto}.eyebrow{font-size:10px;letter-spacing:2.2px;line-height:1.7;color:var(--muted-foreground);font-weight:500}.hero h1{font-size:clamp(36px,4.6vw,64px);line-height:1.3;letter-spacing:-.055em;font-weight:500;margin:28px 0}.hero h1>span{color:var(--primary)}.intro{font-size:16px;line-height:1.95;color:var(--muted-foreground)}.actions{display:flex;align-items:center;justify-content:center;gap:28px;margin:30px 0 48px;font-size:13px}
+.peopleStrip{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:22px;min-height:370px;padding:26px 12px 25px;text-align:left}.peopleStrip figure{margin:0;min-width:0}.peopleStrip figure:nth-of-type(1){transform:rotate(-3deg);padding-top:5px}.peopleStrip figure:nth-of-type(2){transform:rotate(2deg);padding-top:72px}.peopleStrip figure:nth-of-type(3){transform:rotate(-2deg);padding-top:20px}.peopleStrip figure:nth-of-type(4){transform:rotate(3deg);padding-top:60px}.peopleStrip figure:nth-of-type(5){transform:rotate(-1deg);padding-top:1px}.peopleStrip svg{width:100%;height:auto;display:block}.peopleStrip figcaption{font-size:10px;line-height:1.6;color:var(--muted-foreground);padding:12px 10px}.stripNote{position:absolute;right:30px;top:-12px;transform:rotate(4deg);font-size:11px;color:var(--muted-foreground)}.stripSpark{position:absolute;left:37%;top:8px;font-size:32px;font-weight:400;color:var(--primary);transform:rotate(15deg)}
+.page h2{font-size:clamp(30px,3.5vw,46px);line-height:1.35;letter-spacing:-.045em;font-weight:500;margin:20px 0 30px}.possibilities{max-width:1160px;padding:100px 32px 50px;margin:auto;text-align:center;scroll-margin-top:30px}.featureGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:48px;margin-top:65px;text-align:left}.featureGrid svg{width:125px;height:100px;margin:0 0 20px -10px}.featureGrid h3{font-size:18px;font-weight:500;margin:0 0 13px;letter-spacing:-.025em}.featureGrid p{margin:0;font-size:13px;line-height:1.9;color:var(--muted-foreground)}
+.tools{max-width:1160px;padding:65px 32px 85px;margin:auto;scroll-margin-top:30px}.toolGrid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.toolGrid>a{min-width:0;border-top:1px solid var(--border);padding-top:25px}.toolGrid>a>svg{width:20px;vertical-align:middle;color:var(--muted-foreground)}.toolGrid>a>span{font-size:9px;letter-spacing:2px;margin-left:12px;color:var(--muted-foreground)}.toolGrid h3{font-size:28px;letter-spacing:-.04em;margin:25px 0 14px;font-weight:500}.toolGrid p{font-size:13px;line-height:1.9;color:var(--muted-foreground);max-width:370px}.toolGrid strong{display:flex;justify-content:space-between;font-weight:400;font-size:12px;margin-top:22px;padding-bottom:10px}.toolGrid>a:hover strong{text-decoration:underline;text-underline-offset:5px}
+.poster,.miniCanvas{height:250px;margin-top:28px;overflow:hidden;position:relative;border-radius:3px}.poster{background:var(--selection);color:var(--foreground-strong)}.poster>span{display:block;font-size:56px;letter-spacing:-3px;font-weight:700;line-height:1;padding:28px;position:relative;z-index:1}.poster i{font-family:Georgia,serif;font-weight:400}.poster>b{position:absolute;right:8px;top:25px;font-size:210px;line-height:1;font-weight:400;color:var(--primary);opacity:.4;transform:rotate(15deg)}.miniCanvas{display:flex;align-items:center;justify-content:center;gap:10px;background:radial-gradient(var(--grid) .7px,transparent .7px) 0 0/15px 15px,var(--surface)}.miniCanvas b{font-size:12px;font-weight:400;padding:25px 14px;border:1px solid var(--selection-border);background:var(--background);border-radius:4px;box-shadow:3px 4px 0 var(--selection)}.miniCanvas b:first-child{transform:translateY(-25px) rotate(-4deg)}.miniCanvas b:last-child{transform:translateY(25px) rotate(4deg)}.miniCanvas i{color:var(--muted-foreground)}
+.reading{max-width:1096px;margin:35px auto 80px;background:var(--selection);display:grid;grid-template-columns:1fr 1fr;gap:40px;padding:54px 65px;align-items:center}.reading p:not(.eyebrow){font-size:13px;line-height:1.9;color:var(--muted-foreground)}.reading a{display:inline-flex;align-items:center;gap:10px;font-size:12px;margin-top:18px}.readingArt{position:relative;min-width:0;height:320px}.readingArt>svg:first-of-type{position:absolute;height:330px;width:300px;bottom:-78px;right:-15px;transform:rotate(5deg)}.readingArt>svg:last-child{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:var(--foreground);stroke-width:2;pointer-events:none}.readingArt>span{display:block;position:absolute;top:-26px;left:30px;border:1px solid var(--foreground);background:var(--background);padding:20px 28px;font-size:16px;line-height:1.7;transform:rotate(-7deg);z-index:1}.readingArt>small{position:absolute;right:-12px;bottom:-57px;background:var(--background);border:1px solid var(--foreground);padding:12px 15px;font-size:8px;letter-spacing:1.5px;transform:rotate(6deg)}
+.workflow{max-width:1160px;margin:20px auto;padding:75px 32px 95px;display:grid;grid-template-columns:1fr 1fr;gap:100px;scroll-margin-top:30px}.workflow p{font-size:13px;line-height:1.9;color:var(--muted-foreground)}.workflow a{display:inline-flex;gap:10px;font-size:12px;margin-top:20px}.workflow ol{list-style:none;padding:0}.workflow li{display:flex;gap:25px;border-bottom:1px solid var(--border);padding:25px 0}.workflow li>b{font-family:Georgia,serif;font-size:22px;font-style:italic;font-weight:400;color:var(--muted-foreground);padding-top:2px}.workflow h3{font-size:18px;font-weight:500;margin:0}
+.end{position:relative;isolation:isolate;max-width:1240px;margin:0 auto 40px;text-align:center;min-height:480px;padding:100px 25px 95px}.endContent{position:relative;z-index:1}.endContent>p:not(.eyebrow){font-size:13px;color:var(--muted-foreground);line-height:1.8;margin-bottom:26px}.endSecondary{display:block;width:fit-content;margin:20px auto 0;font-size:11px;color:var(--muted-foreground)!important}.endWall{position:absolute;inset:20px 32px;display:grid;grid-template-columns:160px 160px;grid-template-rows:1fr 1fr;justify-content:space-between;gap:20px;opacity:.17;pointer-events:none;mask-image:linear-gradient(90deg,#000,transparent 40%,transparent 60%,#000)}.endWall>div{padding:10px;transform:rotate(-5deg)}.endWall>div:nth-child(even){transform:rotate(5deg)}.endWall svg{width:100%;height:110px}.endWall i{display:block;border-bottom:1px solid var(--foreground);margin:8px 0;width:90%}.endWall i:last-child{width:60%}
+.footer{max-width:1240px;display:flex;justify-content:space-between;gap:25px;align-items:center;margin:auto;padding:35px 32px;border-top:1px solid var(--border);font-size:11px;color:var(--muted-foreground)}
+@media(max-width:1000px){.nav{gap:20px;padding-left:24px;padding-right:24px}.nav>div{margin-left:8px;gap:20px}.peopleStrip{gap:12px;min-height:310px}.featureGrid{gap:28px}.reading{margin-left:32px;margin-right:32px;padding:40px}.workflow{gap:60px}}
+@media(max-width:760px){.nav{padding:16px 20px;min-height:72px;gap:14px}.nav>div{display:none}.nav .logo{flex:1}.nav .dark{padding:10px 12px}.hero{padding:48px 20px 0}.hero h1{font-size:clamp(29px,6vw,44px);letter-spacing:-.055em}.intro{font-size:13px}.actions{gap:18px;flex-wrap:wrap;margin-bottom:36px}.actions>a:not(.dark){font-size:11px}.peopleStrip{grid-template-columns:repeat(3,minmax(0,1fr));min-height:250px;gap:9px;padding:20px 0 10px}.peopleStrip figure:nth-of-type(2){padding-top:42px}.peopleStrip figure:nth-of-type(3){padding-top:8px}.peopleStrip figure:nth-of-type(4),.peopleStrip figure:nth-of-type(5){display:none}.peopleStrip figcaption{font-size:9px;padding:8px 3px}.stripNote{top:-7px;right:5px;font-size:9px}.stripSpark{left:44%;top:5px;font-size:22px}.possibilities{padding:50px 24px 25px}.page h2{font-size:30px}.featureGrid{grid-template-columns:1fr 1fr;gap:32px 25px;margin-top:38px}.featureGrid svg{width:105px;height:82px;margin-bottom:12px}.featureGrid h3{font-size:16px}.featureGrid p{font-size:12px}.tools{padding:45px 24px 50px}.toolGrid{grid-template-columns:1fr;gap:34px}.poster,.miniCanvas{height:260px}.reading{grid-template-columns:1fr;gap:20px;padding:32px 26px 44px;margin:30px 24px 55px}.readingArt{height:250px;margin-top:35px}.readingArt>svg:first-of-type{width:230px;height:260px;bottom:-50px;right:-5px}.readingArt>span{font-size:13px;padding:15px 20px;left:0}.readingArt>small{bottom:-45px;right:-7px;font-size:7px}.workflow{grid-template-columns:1fr;gap:15px;padding:40px 24px 50px}.workflow ol{margin-top:0}.end{min-height:410px;padding:70px 24px;margin-bottom:15px}.endWall{inset:20px 8px;grid-template-columns:100px 100px}.footer{padding:26px 24px;flex-wrap:wrap;gap:24px}.footer>span{display:none}}
+@media(max-width:380px){.nav{gap:10px;padding-left:16px;padding-right:16px}.nav .dark{gap:6px;font-size:11px}.hero{padding-left:16px;padding-right:16px}.hero h1{font-size:27px}.featureGrid{gap:26px 20px}.miniCanvas{gap:5px}.miniCanvas b{padding:20px 9px;font-size:10px}}
+@media(prefers-reduced-motion:reduce){.dark{transition:none}}
diff --git a/apps/waterfall-wiki/tests/brand-ui-integration.ts b/apps/waterfall-wiki/tests/brand-ui-integration.ts
index 17fe415..0a1ec12 100644
--- a/apps/waterfall-wiki/tests/brand-ui-integration.ts
+++ b/apps/waterfall-wiki/tests/brand-ui-integration.ts
@@ -62,6 +62,14 @@ export async function verifyBrandUI(base: string) {
await page.setViewportSize({ width: 390, height: 844 });
assert.equal(await page.locator('.endoleap-mark-light').first().isVisible(), true);
assert.ok(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth + 1), 'mobile home has no horizontal overflow');
+ for (const width of [390, 320]) {
+ await page.setViewportSize({ width, height: 844 });
+ assert.ok(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth + 1), 'Editorial home fits narrow screens');
+ const entry = await page.getByRole('navigation', {name: '主导航'}).getByRole('link', {name: /进入工作台/}).boundingBox();
+ assert.ok(entry && entry.x >= 0 && entry.x + entry.width <= width, 'Workspace entry is visible, not clipped');
+ assert.equal(await page.getByRole('link', {name: /去知识空间逛逛/}).getAttribute('href'), '/documents');
+ assert.equal(await page.getByRole('link', {name: '开始创作', exact: true}).getAttribute('href'), '/account?next=/workspace');
+ }
console.log('Endoleap logos, both favicon paths, persisted home/canvas themes and artwork color isolation passed.');
} finally { await browser.close(); }
}
diff --git a/scripts/verify-studio-visual.cjs b/scripts/verify-studio-visual.cjs
index 99d5a7d..4a8c3d6 100644
--- a/scripts/verify-studio-visual.cjs
+++ b/scripts/verify-studio-visual.cjs
@@ -27,6 +27,15 @@ const assert=require('node:assert/strict');
}
if(checkLegacy&&!process.argv.includes('--diagnose'))assert.deepEqual(metrics.filter(m=>m.overflow.length),[],'Default copy must fit every native slot');
await page.goto(base+'/',{waitUntil:'networkidle'});await page.getByRole('heading',{name:/想法不该停在对话里/}).waitFor();await page.screenshot({path:dir+'/landing-desktop.png',fullPage:true});
+ // Capture the complete editorial home at both narrow breakpoints on the deployed server.
+ await page.getByRole('heading',{name:/给好奇心一点空间/}).waitFor();
+ for(const [width,name] of [[390,'landing-mobile'],[320,'landing-mobile-compact']]){
+ await page.setViewportSize({width,height:844});
+ assert.ok(await page.evaluate(()=>document.documentElement.scrollWidth<=innerWidth+1),'Landing fits narrow screens');
+ const entry=await page.getByRole('navigation',{name:'主导航'}).getByRole('link',{name:/进入工作台/}).boundingBox();
+ assert.ok(entry&&entry.x>=0&&entry.x+entry.width<=width,'Landing workspace entry remains inside the viewport');
+ await page.screenshot({path:dir+'/'+name+'.png',fullPage:true});
+ }
// Verify the public account flow in this fresh context, without submitting credentials.
await page.setViewportSize({width:1128,height:959});
await page.goto(base+'/account?next=/workspace',{waitUntil:'domcontentloaded'});