@@ -78,11 +78,10 @@ const StepNode = memo(function StepNode({
7878 < div ref = { ref } className = "flex flex-col items-center gap-3 group flex-1 min-w-0" >
7979 { /* Icon node */ }
8080 < div
81- className = { `relative rounded-2xl flex items-center justify-center border transition-all duration-300 ${
82- step . active
83- ? 'w-16 h-16 sm:w-18 sm:h-18 border-primary/60 bg-primary/10'
84- : 'w-14 h-14 sm:w-16 sm:h-16 border-white/10 hover:border-white/25 bg-surface-panel'
85- } `}
81+ className = { `relative rounded-2xl flex items-center justify-center border transition-all duration-300 ${ step . active
82+ ? 'w-16 h-16 sm:w-18 sm:h-18 border-primary/60 bg-primary/10'
83+ : 'w-14 h-14 sm:w-16 sm:h-16 border-white/10 hover:border-white/25 bg-surface-panel'
84+ } `}
8685 style = {
8786 step . active
8887 ? { boxShadow : '0 0 28px rgba(254,115,58,0.2), 0 0 0 4px rgba(254,115,58,0.08)' }
@@ -94,9 +93,8 @@ const StepNode = memo(function StepNode({
9493 className = { step . active ? 'text-primary' : 'text-white/50' }
9594 />
9695 < div
97- className = { `absolute -top-2.5 -right-2.5 text-xs font-bold px-1.5 py-0.5 rounded-full leading-none ${
98- step . active ? 'bg-primary text-white' : 'bg-white/10 text-white/40'
99- } `}
96+ className = { `absolute -top-2.5 -right-2.5 text-xs font-bold px-1.5 py-0.5 rounded-full leading-none ${ step . active ? 'bg-primary text-white' : 'bg-white/10 text-white/40'
97+ } `}
10098 >
10199 { step . n }
102100 </ div >
@@ -107,11 +105,10 @@ const StepNode = memo(function StepNode({
107105
108106 { /* Info card */ }
109107 < div
110- className = { `rounded-xl text-center w-full px-3 py-3 border transition-all duration-300 ${
111- step . active
112- ? 'border-primary/25 bg-primary/5'
113- : 'border-white/5 bg-surface-panel/50 group-hover:border-white/15'
114- } `}
108+ className = { `rounded-xl text-center w-full px-3 py-3 border transition-all duration-300 ${ step . active
109+ ? 'border-primary/25 bg-primary/5'
110+ : 'border-white/5 bg-surface-panel/50 group-hover:border-white/15'
111+ } `}
115112 >
116113 { step . active && (
117114 < p className = "text-primary/80 font-bold uppercase text-[10px] tracking-widest mb-1" >
@@ -192,61 +189,63 @@ export function HowItWorksSection({ onGetStarted }: SectionProps) {
192189 } }
193190 />
194191
195- < div ref = { ref } className = "relative z-10 flex flex-col h-full px-4 sm:px-10 md:px-14 py-4 sm:py-6 md:py-8 overflow-y-auto" >
196- { /* Header */ }
197- < div ref = { headerRef } className = "text-center mb-4 sm:mb-6 md:mb-8 shrink-0" >
198- < p className = "text-white/30 text-xs font-bold tracking-[0.25em] uppercase mb-2" >
199- The Logic Engine
200- </ p >
201- < h2 className = "text-2xl sm:text-3xl md:text-4xl font-black text-white leading-tight tracking-tight uppercase" >
202- How It Works
203- </ h2 >
204- < p className = "text-slate-400 text-sm mt-2 sm:mt-3 max-w-sm mx-auto leading-relaxed" >
205- Visualize your creative process through our advanced node-based workflow.
206- </ p >
207- </ div >
208-
209- { /* Steps flow */ }
210- < div className = "flex-1 flex flex-col min-h-0 md:justify-center" >
211- < div className = "relative" >
212- { /* Connecting line – only visible on lg+ where all 5 fit in a row */ }
213- < div
214- className = "absolute left-0 right-0 h-px z-0 hidden lg:block"
215- style = { {
216- top : '32px' ,
217- background :
218- 'linear-gradient(to right, transparent, rgba(255,255,255,0.08) 20%, rgba(255,255,255,0.08) 80%, transparent)' ,
219- } }
220- />
221-
222- { /* Responsive grid: 2 cols on mobile, 3 on sm/md, 5 on lg+ */ }
223- < div className = "relative z-10 grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3 sm:gap-4" >
224- { steps . map ( ( s , i ) => (
225- < StepNode key = { s . n } step = { s } index = { i } inView = { inView } />
226- ) ) }
227- </ div >
192+ < div ref = { ref } className = "relative z-10 flex flex-col h-full px-4 sm:px-10 md:px-14 py-2 sm:py-4 overflow-y-auto" >
193+ < div className = "my-auto flex flex-col w-full max-w-7xl mx-auto shrink-0 py-4" >
194+ { /* Header */ }
195+ < div ref = { headerRef } className = "text-center mb-5 md:mb-6 lg:mb-8 shrink-0" >
196+ < p className = "text-white/30 text-[10px] sm:text-xs font-bold tracking-[0.25em] uppercase mb-1.5 sm:mb-2 text-balance" >
197+ The Logic Engine
198+ </ p >
199+ < h2 className = "text-2xl sm:text-3xl lg:text-4xl font-black text-white leading-tight tracking-tight uppercase" >
200+ How It Works
201+ </ h2 >
202+ < p className = "text-slate-400 text-xs sm:text-sm mt-1.5 sm:mt-2 max-w-sm mx-auto leading-relaxed text-balance" >
203+ Visualize your creative process through our advanced node-based workflow.
204+ </ p >
228205 </ div >
229206
230- { /* CTA card */ }
231- < div
232- ref = { ctaRef }
233- className = "mt-4 sm:mt-6 md:mt-8 rounded-xl border border-white/10 bg-surface-panel px-4 sm:px-5 py-3 sm:py-4 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 sm:gap-4"
234- >
235- < div >
236- < h4 className = "text-white font-bold text-sm sm:text-base" >
237- Ready to build your first pipeline?
238- </ h4 >
239- < p className = "text-slate-400 text-xs sm:text-sm mt-0.5" >
240- Start with a template or build from scratch.
241- </ p >
207+ { /* Steps flow */ }
208+ < div className = "w-full flex flex-col min-h-0 pt-2 md:pt-0" >
209+ < div className = "relative" >
210+ { /* Connecting line – only visible on lg+ where all 5 fit in a row */ }
211+ < div
212+ className = "absolute left-0 right-0 h-px z-0 hidden lg:block"
213+ style = { {
214+ top : '32px' ,
215+ background :
216+ 'linear-gradient(to right, transparent, rgba(255,255,255,0.08) 20%, rgba(255,255,255,0.08) 80%, transparent)' ,
217+ } }
218+ />
219+
220+ { /* Responsive grid: 2 cols on mobile, 3 on sm/md, 5 on lg+ */ }
221+ < div className = "relative z-10 grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3 sm:gap-4" >
222+ { steps . map ( ( s , i ) => (
223+ < StepNode key = { s . n } step = { s } index = { i } inView = { inView } />
224+ ) ) }
225+ </ div >
242226 </ div >
243- < button
244- onClick = { onGetStarted }
245- className = "cursor-pointer shrink-0 bg-primary text-white font-bold text-sm px-5 py-2.5 rounded-lg hover:opacity-90 transition-opacity flex items-center gap-2"
227+
228+ { /* CTA card */ }
229+ < div
230+ ref = { ctaRef }
231+ className = "mt-5 lg:mt-6 rounded-xl border border-white/10 bg-surface-panel px-4 sm:px-5 py-3 sm:py-4 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 sm:gap-4"
246232 >
247- Launch Editor
248- < ArrowRight size = { 14 } />
249- </ button >
233+ < div >
234+ < h4 className = "text-white font-bold text-sm sm:text-base" >
235+ Ready to build your first pipeline?
236+ </ h4 >
237+ < p className = "text-slate-400 text-[10px] sm:text-sm mt-0.5" >
238+ Start with a template or build from scratch.
239+ </ p >
240+ </ div >
241+ < button
242+ onClick = { onGetStarted }
243+ className = "cursor-pointer shrink-0 bg-primary text-white font-bold text-xs sm:text-sm px-4 sm:px-5 py-2 sm:py-2.5 rounded-lg hover:opacity-90 transition-opacity flex items-center gap-2"
244+ >
245+ Launch Editor
246+ < ArrowRight size = { 14 } />
247+ </ button >
248+ </ div >
250249 </ div >
251250 </ div >
252251 </ div >
0 commit comments