@@ -12,7 +12,9 @@ import {
1212 animatedMotionStyle ,
1313 compactPreviewCards ,
1414 entranceEase ,
15- measurementAxes ,
15+ measurementAbsoluteItems ,
16+ measurementFinalFit ,
17+ measurementNeedinessItems ,
1618 paintedMotionStyle ,
1719 previewRows ,
1820 renderOrbitalBullet ,
@@ -92,18 +94,16 @@ export const MarketingLandingTerminalPreview = memo(function MarketingLandingTer
9294
9395 < div className = "rounded-none border border-white/8 bg-white/5 p-4" >
9496 < div className = "flex items-start justify-between gap-3" >
95- < div className = "min-w-0 flex-1" >
96- < p className = "bg-gradient-to-r from-purple-400 via-pink-500 to-red-400 bg-clip-text text-sm font-semibold text-transparent" >
97- { BITCODE_PUBLIC_COPY . operatorFrame . title }
98- </ p >
99- < p className = "mt-1 text-[10px] uppercase tracking-[0.16em] text-emerald-100/52" >
100- { BITCODE_PUBLIC_COPY . operatorFrame . subtitle }
101- </ p >
102- </ div >
103- < span className = "inline-flex min-w-[104px] shrink-0 items-center justify-center rounded-none border border-white/10 bg-white/5 px-2.5 py-1.5 text-center text-[10px] uppercase leading-4 tracking-[0.18em] text-white/60" >
97+ < p className = "min-w-0 bg-gradient-to-r from-purple-400 via-pink-500 to-red-400 bg-clip-text text-sm font-semibold text-transparent" >
98+ { BITCODE_PUBLIC_COPY . operatorFrame . title }
99+ </ p >
100+ < span className = "inline-flex min-w-[92px] shrink-0 items-center justify-center rounded-none border border-white/10 bg-white/5 px-2.5 py-1.5 text-center text-[10px] uppercase leading-4 tracking-[0.16em] text-white/60" >
104101 { BITCODE_PUBLIC_COPY . operatorFrame . badge }
105102 </ span >
106103 </ div >
104+ < p className = "mt-1 text-[10px] uppercase leading-4 tracking-[0.12em] text-emerald-100/52" >
105+ { BITCODE_PUBLIC_COPY . operatorFrame . subtitle }
106+ </ p >
107107 < div className = "mt-4 flex flex-wrap gap-2" >
108108 { BITCODE_PUBLIC_COPY . operatorFrame . modes . map ( ( surface ) => (
109109 < span
@@ -121,51 +121,124 @@ export const MarketingLandingTerminalPreview = memo(function MarketingLandingTer
121121 < div className = "hidden gap-4 p-4 laptop:grid desktop:grid-cols-[0.9fr_1.1fr]" >
122122 < div className = "space-y-3" >
123123 < div className = "rounded-none border border-white/8 bg-white/5 p-4" >
124- < p className = "text-[12px ] font-semibold uppercase tracking-[0.22em ] text-emerald-200/74" >
125- Measurement vector
124+ < p className = "whitespace-nowrap text-[10px ] font-semibold uppercase tracking-[0.14em ] text-emerald-200/74" >
125+ AssetPacks Measurements
126126 </ p >
127+
127128 < div className = "mt-4 space-y-4" >
128- { measurementAxes . map ( ( axis ) => (
129- < div key = { axis . label } >
130- < div className = "flex items-end justify-between gap-3" >
131- < div >
132- < p className = "text-[15px] font-medium text-white" > { axis . label } </ p >
133- < p className = "text-[12px] leading-5 text-emerald-100/62" > { axis . detail } </ p >
134- </ div >
135- < span className = "text-[12px] font-semibold uppercase tracking-[0.24em] text-emerald-200/78" >
136- { axis . value }
137- </ span >
129+ < div >
130+ < p className = "text-[13px] font-medium text-white" > Absolutes</ p >
131+ < ul className = "mt-2 space-y-1.5" >
132+ { measurementAbsoluteItems . map ( ( item , index ) => (
133+ < li key = { item . label } >
134+ < div className = "flex items-center justify-between gap-2" >
135+ < p className = "min-w-0 truncate text-[11px] leading-4 text-emerald-100/70" >
136+ { item . label }
137+ </ p >
138+ < span className = "shrink-0 font-mono text-[10px] tabular-nums text-emerald-200/68" >
139+ { item . value }
140+ </ span >
141+ </ div >
142+ < div className = "mt-1 h-1 overflow-hidden rounded-none bg-white/6" >
143+ < div className = "h-full origin-left" style = { { width : `${ item . value } %` } } >
144+ < motion . div
145+ initial = { { scaleX : 0 } }
146+ animate = { { scaleX : 1 } }
147+ transition = { {
148+ duration : 0.7 ,
149+ delay : 0.28 + index * 0.03 ,
150+ ease : entranceEase ,
151+ } }
152+ className = "h-full rounded-none bg-gradient-to-r from-emerald-500/55 via-emerald-300/70 to-emerald-100/80"
153+ style = { { ...animatedMotionStyle , transformOrigin : 'left center' } }
154+ />
155+ </ div >
156+ </ div >
157+ </ li >
158+ ) ) }
159+ </ ul >
160+ </ div >
161+
162+ < div >
163+ < p className = "text-[13px] font-medium text-white" > Needinesses</ p >
164+ < ul className = "mt-2 space-y-1.5" >
165+ { measurementNeedinessItems . map ( ( item , index ) => (
166+ < li key = { item . label } >
167+ < div className = "flex items-center justify-between gap-2" >
168+ < p className = "min-w-0 truncate text-[11px] leading-4 text-emerald-100/70" >
169+ < span className = "text-emerald-100/48" > { item . detail } </ span >
170+ < span className = "mx-1 text-emerald-100/28" > ·</ span >
171+ { item . label }
172+ </ p >
173+ < span className = "shrink-0 font-mono text-[10px] tabular-nums text-emerald-200/68" >
174+ { item . value }
175+ </ span >
176+ </ div >
177+ < div className = "mt-1 h-1 overflow-hidden rounded-none bg-white/6" >
178+ < div className = "h-full origin-left" style = { { width : `${ item . value } %` } } >
179+ < motion . div
180+ initial = { { scaleX : 0 } }
181+ animate = { { scaleX : 1 } }
182+ transition = { {
183+ duration : 0.7 ,
184+ delay : 0.48 + index * 0.04 ,
185+ ease : entranceEase ,
186+ } }
187+ className = "h-full rounded-none bg-gradient-to-r from-emerald-500/55 via-emerald-300/70 to-emerald-100/80"
188+ style = { { ...animatedMotionStyle , transformOrigin : 'left center' } }
189+ />
190+ </ div >
191+ </ div >
192+ </ li >
193+ ) ) }
194+ </ ul >
195+ </ div >
196+
197+ < div className = "rounded-none border border-emerald-300/18 bg-emerald-400/[0.07] p-3 shadow-[inset_0_1px_0_rgba(103,254,183,0.08)]" >
198+ < div className = "flex items-end justify-between gap-3" >
199+ < div className = "min-w-0 flex-1" >
200+ < p className = "bg-gradient-to-r from-emerald-200 via-white to-emerald-100 bg-clip-text text-[15px] font-semibold text-transparent" >
201+ { measurementFinalFit . label }
202+ </ p >
203+ < p className = "mt-1 text-[11px] leading-4 text-emerald-100/72" >
204+ { measurementFinalFit . detail }
205+ </ p >
138206 </ div >
139- < div className = "mt-2 h-2 overflow-hidden rounded-none bg-white/6" >
140- < div className = "h-full origin-left" style = { { width : `${ axis . value } %` } } >
141- < motion . div
142- initial = { { scaleX : 0 } }
143- animate = { { scaleX : 1 } }
144- transition = { { duration : 0.9 , delay : 0.35 , ease : entranceEase } }
145- className = "h-full rounded-none bg-gradient-to-r from-emerald-500/70 via-emerald-300/90 to-emerald-100"
146- style = { { ...animatedMotionStyle , transformOrigin : 'left center' } }
147- />
148- </ div >
207+ < span className = "shrink-0 text-[14px] font-semibold uppercase tracking-[0.2em] text-emerald-100" >
208+ { measurementFinalFit . value }
209+ </ span >
210+ </ div >
211+ < div className = "mt-2.5 h-2.5 overflow-hidden rounded-none bg-black/30" >
212+ < div
213+ className = "h-full origin-left"
214+ style = { { width : `${ measurementFinalFit . value } %` } }
215+ >
216+ < motion . div
217+ initial = { { scaleX : 0 } }
218+ animate = { { scaleX : 1 } }
219+ transition = { { duration : 1 , delay : 0.55 , ease : entranceEase } }
220+ className = "h-full rounded-none bg-gradient-to-r from-emerald-500/80 via-emerald-300 to-white shadow-[0_0_14px_rgba(103,254,183,0.35)]"
221+ style = { { ...animatedMotionStyle , transformOrigin : 'left center' } }
222+ />
149223 </ div >
150224 </ div >
151- ) ) }
225+ </ div >
152226 </ div >
153227 </ div >
154228
155229 < div className = "rounded-none border border-white/8 bg-white/5 p-4" >
156230 < div className = "flex items-start justify-between gap-3" >
157- < div className = "min-w-0 flex-1" >
158- < p className = "bg-gradient-to-r from-purple-400 via-pink-500 to-red-400 bg-clip-text text-sm font-semibold text-transparent" >
159- { BITCODE_PUBLIC_COPY . operatorFrame . title }
160- </ p >
161- < p className = "mt-1 text-[10px] uppercase tracking-[0.14em] text-emerald-100/58" >
162- { BITCODE_PUBLIC_COPY . operatorFrame . subtitle }
163- </ p >
164- </ div >
165- < span className = "inline-flex min-w-[128px] shrink-0 items-center justify-center rounded-none border border-white/10 bg-white/5 px-2.5 py-2 text-center text-[10px] uppercase leading-4 tracking-[0.18em] text-white/60" >
231+ < p className = "min-w-0 bg-gradient-to-r from-purple-400 via-pink-500 to-red-400 bg-clip-text text-sm font-semibold text-transparent" >
232+ { BITCODE_PUBLIC_COPY . operatorFrame . title }
233+ </ p >
234+ < span className = "inline-flex min-w-[92px] shrink-0 items-center justify-center rounded-none border border-white/10 bg-white/5 px-2.5 py-1.5 text-center text-[10px] uppercase leading-4 tracking-[0.16em] text-white/60" >
166235 { BITCODE_PUBLIC_COPY . operatorFrame . badge }
167236 </ span >
168237 </ div >
238+ { /* Full-width subtitle — avoids one-word-per-line squeeze beside the badge. */ }
239+ < p className = "mt-1 text-[10px] uppercase leading-4 tracking-[0.12em] text-emerald-100/58" >
240+ { BITCODE_PUBLIC_COPY . operatorFrame . subtitle }
241+ </ p >
169242 < ul className = "mt-4 grid grid-cols-2 gap-x-6 gap-y-4 laptop:gap-x-4 laptop:gap-y-3" >
170243 { BITCODE_PUBLIC_COPY . operatorFrame . modes . map ( ( surface ) => (
171244 < li
@@ -277,7 +350,7 @@ export const MarketingLandingTerminalPreview = memo(function MarketingLandingTer
277350 return (
278351 < span
279352 key = { `${ key } -${ valuePart } ` }
280- className = "inline-flex min-w-0 max-w-full items-start gap-2 overflow-hidden tablet:gap-2.5"
353+ className = "inline-flex min-w-0 max-w-full items-start gap-2 tablet:gap-2.5"
281354 >
282355 < span className = "shrink-0" >
283356 { renderOrbitalBullet (
@@ -307,18 +380,17 @@ export const MarketingLandingTerminalPreview = memo(function MarketingLandingTer
307380
308381 < div className = "rounded-none border border-white/8 bg-white/5 p-4" >
309382 < div className = "flex items-start justify-between gap-3" >
310- < div >
311- < p className = "bg-gradient-to-r from-emerald-200 via-white to-orange-200 bg-clip-text text-sm font-semibold text-transparent" >
312- { BITCODE_PUBLIC_COPY . sourceToSettlement . title }
313- </ p >
314- < p className = "mt-1 text-[12px] uppercase tracking-[0.16em] text-emerald-100/58" >
315- { BITCODE_PUBLIC_COPY . sourceToSettlement . subtitle }
316- </ p >
317- </ div >
318- < span className = "inline-flex min-w-[92px] items-center justify-center rounded-none border border-emerald-300/12 bg-emerald-400/6 px-2.5 py-1 font-mono text-center text-[10px] uppercase tracking-[0.18em] text-emerald-50/72" >
383+ < p className = "min-w-0 bg-gradient-to-r from-emerald-200 via-white to-orange-200 bg-clip-text text-sm font-semibold text-transparent" >
384+ { BITCODE_PUBLIC_COPY . sourceToSettlement . title }
385+ </ p >
386+ < span className = "inline-flex min-w-[92px] shrink-0 items-center justify-center rounded-none border border-emerald-300/12 bg-emerald-400/6 px-2.5 py-1 font-mono text-center text-[10px] uppercase tracking-[0.18em] text-emerald-50/72" >
319387 { BITCODE_PUBLIC_COPY . sourceToSettlement . badge }
320388 </ span >
321389 </ div >
390+ { /* Full-width subtitle — avoids one-word-per-line squeeze beside the badge. */ }
391+ < p className = "mt-1 text-[12px] uppercase leading-4 tracking-[0.12em] text-emerald-100/58" >
392+ { BITCODE_PUBLIC_COPY . sourceToSettlement . subtitle }
393+ </ p >
322394 < p className = "mt-3 text-[14px] leading-6 text-emerald-100/72" >
323395 Commits, citations, authorship, and metadata stay attached as deposit-side context for later proof and settlement.
324396 </ p >
0 commit comments