@@ -297,34 +297,46 @@ export const ProductionGradeSection = () => {
297297 { /* Three Feature Cards */ }
298298 < motion . div
299299 className = "grid grid-cols-1 md:grid-cols-3 gap-6 md:gap-8 mb-20"
300- variants = { itemVariants }
300+ variants = { containerVariants }
301+ initial = "hidden"
302+ whileInView = "visible"
303+ viewport = { { once : true } }
301304 >
302305 { /* Card 1 */ }
303- < div className = "bg-[#08080a] border border-white/[0.06] rounded-2xl p-10 md:p-14 text-left" >
306+ < motion . div
307+ className = "bg-[#08080a] border border-white/[0.06] rounded-2xl p-10 md:p-14 text-left"
308+ variants = { itemVariants }
309+ >
304310 < div className = "text-emerald-400 font-semibold text-lg mb-4" > 01</ div >
305311 < h4 className = "text-white font-bold text-2xl mb-4" > Generates valid configs</ h4 >
306312 < p className = "text-gray-400 text-base leading-relaxed" >
307313 Your agent knows the Nexlayer schema. It creates deployment configs that actually work—no guessing, no copy-pasting from docs.
308314 </ p >
309- </ div >
315+ </ motion . div >
310316
311317 { /* Card 2 */ }
312- < div className = "bg-[#08080a] border border-white/[0.06] rounded-2xl p-10 md:p-14 text-left" >
318+ < motion . div
319+ className = "bg-[#08080a] border border-white/[0.06] rounded-2xl p-10 md:p-14 text-left"
320+ variants = { itemVariants }
321+ >
313322 < div className = "text-emerald-400 font-semibold text-lg mb-4" > 02</ div >
314323 < h4 className = "text-white font-bold text-2xl mb-4" > Validates before deploy</ h4 >
315324 < p className = "text-gray-400 text-base leading-relaxed" >
316325 Before anything goes live, your agent checks the config against Nexlayer's validation. Catches errors before they cost you time.
317326 </ p >
318- </ div >
327+ </ motion . div >
319328
320329 { /* Card 3 */ }
321- < div className = "bg-[#08080a] border border-white/[0.06] rounded-2xl p-10 md:p-14 text-left" >
330+ < motion . div
331+ className = "bg-[#08080a] border border-white/[0.06] rounded-2xl p-10 md:p-14 text-left"
332+ variants = { itemVariants }
333+ >
322334 < div className = "text-emerald-400 font-semibold text-lg mb-4" > 03</ div >
323335 < h4 className = "text-white font-bold text-2xl mb-4" > Self-corrects with context</ h4 >
324336 < p className = "text-gray-400 text-base leading-relaxed" >
325337 When something fails, Nexlayer sends back detailed context. Your agent reads it, understands it, and fixes it—automatically.
326338 </ p >
327- </ div >
339+ </ motion . div >
328340 </ motion . div >
329341
330342 { /* Three Pillars */ }
0 commit comments