@@ -89,16 +89,7 @@ const baseCss = `
8989 .proof { --bg1:#f7f6ff; --bg2:#eef4ff; --ink:#171a2b; --muted:#5a6274;
9090 --accent:#6e56cf; --accent2:#f0a52b; --border:rgba(30,34,64,0.13);
9191 --panel:rgba(255,255,255,0.9); --shadow:0 28px 70px rgba(38,34,78,0.18); }
92- .content { position: relative; z-index: 1; width: 100%; height: 100%; padding: 44px 56px; }
93- .eyebrow {
94- display: inline-flex; align-items: center; gap: 10px; padding: 10px 15px;
95- color: var(--accent); background: var(--panel); border: 1px solid var(--border);
96- border-radius: 999px; font-family: var(--mono); font-size: 13.5px; font-weight: 650;
97- text-transform: uppercase; letter-spacing: 0.07em; line-height: 1;
98- }
99- .head { display: flex; align-items: center; justify-content: flex-end; }
100- .eyebrow .dot { width: 9px; height: 9px; border-radius: 999px; background: var(--accent2);
101- box-shadow: 0 0 0 5px color-mix(in srgb, var(--accent2) 18%, transparent); }
92+ .content { position: relative; z-index: 1; padding: 38px 48px; }
10293 h1 {
10394 margin: 18px 0 0; font-family: var(--display); font-size: 62px; line-height: 1.05;
10495 font-weight: 800; letter-spacing: -0.02em; font-variation-settings: 'opsz' 72;
@@ -107,6 +98,7 @@ const baseCss = `
10798 .sub { margin-top: 16px; color: var(--muted); font-size: 24px; font-weight: 520; letter-spacing: -0.005em; }
10899 .num { font-family: var(--display); font-weight: 800; letter-spacing: -0.03em;
109100 font-variation-settings: 'opsz' 96; }
101+ .stack { height: 100%; display: flex; flex-direction: column; justify-content: center; }
110102 .crop-frame {
111103 overflow: hidden; border: 1px solid var(--border); border-radius: 24px;
112104 background: #ffffff; box-shadow: var(--shadow); position: relative;
@@ -117,6 +109,7 @@ const baseCss = `
117109/* ---------- 01 HERO (dark + light variant) ---------- */
118110function hero ( light = false ) {
119111 return {
112+ scale : 1.3 ,
120113 file : light ? '01-hero-light.png' : '01-hero.png' ,
121114 theme : light ? 'hero-light' : 'dark' ,
122115 body : `
@@ -148,13 +141,12 @@ function actScene() {
148141 [ 'live' , 'Clicking Search…' ] ,
149142 ] ;
150143 return {
144+ scale : 1.08 ,
151145 file : '02-tell-the-browser.png' ,
152146 theme : 'act' ,
153147 body : `
154- <div class="head">
155- <span class="eyebrow"><span class="dot"></span>Act mode</span>
156- </div>
157- <div style="text-align:center; margin-top:34px;">
148+ <div class="stack">
149+ <div style="text-align:center;">
158150 <h1 style="margin:0; font-size:58px;">Tell the browser what to do.</h1>
159151 </div>
160152
@@ -222,6 +214,7 @@ function actScene() {
222214 Pauses before anything irreversible
223215 </div>
224216 </div>
217+ </div>
225218 </div>` ,
226219 } ;
227220}
@@ -232,13 +225,11 @@ function askScene() {
232225 const s = 1.62 ;
233226 const x = 906 , y = 122 , w = 374 , h = 352 ;
234227 return {
228+ scale : 1.03 ,
235229 file : '03-ask-any-page.png' ,
236230 theme : 'read' ,
237231 body : `
238- <div class="head">
239- <span class="eyebrow"><span class="dot"></span>Ask mode</span>
240- </div>
241- <div style="display:grid; grid-template-columns: 480px 1fr; gap:48px; align-items:center; height:calc(100% - 60px);">
232+ <div style="display:grid; grid-template-columns: 480px 1fr; gap:48px; align-items:center; height:100%;">
242233 <div>
243234 <h1>Ask any page.<br>Get the useful part.</h1>
244235 <div class="sub">Clean answers from messy pages. Read-only by default.</div>
@@ -258,13 +249,11 @@ function modelsScene() {
258249 const s = 0.82 ;
259250 const x = 418 , y = 6 , w = 744 , h = 742 ;
260251 return {
252+ scale : 1.04 ,
261253 file : '04-any-llm.png' ,
262254 theme : 'provider' ,
263255 body : `
264- <div class="head">
265- <span class="eyebrow"><span class="dot"></span>Any LLM</span>
266- </div>
267- <div style="display:grid; grid-template-columns: 470px 1fr; gap:44px; align-items:center; height:calc(100% - 60px);">
256+ <div style="display:grid; grid-template-columns: 470px 1fr; gap:44px; align-items:center; height:100%;">
268257 <div>
269258 <h1>Use the model you trust.</h1>
270259 <div class="sub">Local, cloud, or your own keys — switch anytime.</div>
@@ -291,13 +280,11 @@ function planScene(light = false) {
291280 : { bg : '#151c2a' , border : 'rgba(255,255,255,0.16)' , shadow : '0 30px 80px rgba(0,0,0,0.42)' ,
292281 label : '#8d99ad' , step : '#d7e2ea' , onAccent : '#102319' } ;
293282 return {
283+ scale : 1.22 ,
294284 file : light ? '05-plan-before-act-light.png' : '05-plan-before-act.png' ,
295285 theme : light ? 'plan-light' : 'plan' ,
296286 body : `
297- <div class="head">
298- <span class="eyebrow"><span class="dot"></span>Plan before Act</span>
299- </div>
300- <div style="display:grid; grid-template-columns: 500px 1fr; gap:48px; align-items:center; height:calc(100% - 60px);">
287+ <div style="display:grid; grid-template-columns: 440px 1fr; gap:40px; align-items:center; height:100%;">
301288 <div>
302289 <h1>See the plan before it touches the page.</h1>
303290 <div class="sub">Approve first. You stay in the loop.</div>
@@ -332,13 +319,11 @@ function planScene(light = false) {
332319/* ---------- 06 LAUNCH OFFER ---------- */
333320function offerScene ( ) {
334321 return {
322+ scale : 1.3 ,
335323 file : '06-launch-offer.png' ,
336324 theme : 'dark' ,
337325 body : `
338- <div class="head">
339- <span class="eyebrow"><span class="dot"></span>Launch offer</span>
340- </div>
341- <div style="height:calc(100% - 60px); display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;">
326+ <div style="height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;">
342327 <h1 style="font-size:60px;">WebBrain Cloud launch pricing</h1>
343328 <div style="display:flex; align-items:baseline; gap:28px; margin-top:30px;">
344329 <!-- Bricolage sets line-through low on heavy figures, so the strike is drawn manually. -->
@@ -375,18 +360,17 @@ function proofScene() {
375360 [ 'BW' , '#8b5cf6' ] , [ 'RO' , '#d14f6d' ] ,
376361 ] ;
377362 return {
363+ scale : 1.12 ,
378364 file : '07-social-proof.png' ,
379365 theme : 'proof' ,
380366 body : `
381- <div class="head">
382- <span class="eyebrow"><span class="dot"></span>Open source</span>
383- </div>
384367
385- <div style="text-align:center; margin-top:44px;">
368+ <div class="stack">
369+ <div style="text-align:center;">
386370 <h1 style="margin:0; font-size:64px;">Built in the open.</h1>
387371 </div>
388372
389- <div style="display:grid; grid-template-columns:repeat(3, 1fr); gap:26px; width:1120px ; margin:52px auto 0;">
373+ <div style="display:grid; grid-template-columns:repeat(3, 1fr); gap:26px; width:1040px ; margin:52px auto 0;">
390374 ${ stats . map ( ( [ glyph , value , label ] ) => `
391375 <div style="background:var(--panel); border:1px solid var(--border); border-radius:26px;
392376 padding:40px 24px 36px; text-align:center; box-shadow:var(--shadow);">
@@ -396,7 +380,7 @@ function proofScene() {
396380 </div>` ) . join ( '' ) }
397381 </div>
398382
399- <div style="width:1120px ; margin:44px auto 0; display:flex; align-items:center; justify-content:space-between;
383+ <div style="width:1040px ; margin:44px auto 0; display:flex; align-items:center; justify-content:space-between;
400384 gap:24px; background:#171827; border:1px solid rgba(255,255,255,0.12); border-radius:22px;
401385 padding:22px 26px; color:#fff; box-shadow:0 24px 60px rgba(23,26,43,0.3);">
402386 <div style="display:flex; align-items:center; gap:14px; min-width:0;">
@@ -425,6 +409,7 @@ function proofScene() {
425409 <path d="M12 2.2l2.95 5.98 6.6.96-4.78 4.66 1.13 6.57L12 17.27l-5.9 3.1 1.13-6.57L2.45 9.14l6.6-.96z"/>
426410 </svg>Star</span>
427411 </div>
412+ </div>
428413 </div>` ,
429414 } ;
430415}
@@ -437,7 +422,8 @@ const scenes = [
437422function html ( scene ) {
438423 return `<!doctype html><html><head><meta charset="utf-8">
439424 <style>${ baseCss } </style></head>
440- <body><main class="canvas ${ scene . theme } "><div class="content">${ scene . body } </div></main></body></html>` ;
425+ <body><main class="canvas ${ scene . theme } "><div class="content" style="width:${ W / ( scene . scale ?? 1 ) } px;
426+ height:${ H / ( scene . scale ?? 1 ) } px; zoom:${ scene . scale ?? 1 } ;">${ scene . body } </div></main></body></html>` ;
441427}
442428
443429async function renderAll ( ) {
0 commit comments