@@ -212,10 +212,10 @@ import AjAnimatedMascot from "@/components/AjAnimatedMascot.astro";
212212 </div >
213213 </div >
214214
215- { /* Lower Connector & Yellow Sticky Note + WebSockets Row */ }
216- <div class =" flex w-full flex-col items-center justify-between gap-4 pt-2 sm:flex-row sm:px-2" >
215+ { /* Lower Connector & Yellow Sticky Note + Glowing Purple Yarn Swirl + AJ Mascot Row */ }
216+ <div class =" relative flex w-full flex-col items-center justify-between gap-4 pt-2 sm:flex-row sm:px-2" >
217217 { /* Hand-drawn Yellow Sticky Note */ }
218- <div class =" max-w-[235px ] -rotate-2 rounded-xl border-2 border-[#2A1155] bg-[#FEF08A] p-3.5 text-[#2A1155] shadow-sketch-sm dark:border-yellow-600" >
218+ <div class =" relative z-10 max-w-[220px ] -rotate-2 rounded-xl border-2 border-[#2A1155] bg-[#FEF08A] p-3.5 text-[#2A1155] shadow-sketch-sm dark:border-yellow-600" >
219219 <div class =" font-hand text-lg font-bold leading-tight text-[#713F12]" >
220220 ✏️ AJ' s Tip:
221221 </div >
@@ -224,20 +224,44 @@ import AjAnimatedMascot from "@/components/AjAnimatedMascot.astro";
224224 </p >
225225 </div >
226226
227+ { /* Glowing Purple Yarn Curve connecting Sticky Note to Yarn Ball */ }
228+ <svg
229+ class =" pointer-events-none hidden h-20 w-40 shrink-0 sm:block"
230+ viewBox =" 0 0 180 80"
231+ fill =" none"
232+ xmlns =" http://www.w3.org/2000/svg"
233+ aria-hidden =" true"
234+ >
235+ <path
236+ d =" M 4 28 C 42 10, 62 72, 108 56 C 138 44, 152 24, 174 44"
237+ stroke =" #A855F7"
238+ stroke-width =" 7"
239+ stroke-linecap =" round"
240+ class =" opacity-45 blur-[3px]"
241+ />
242+ <path
243+ d =" M 4 28 C 42 10, 62 72, 108 56 C 138 44, 152 24, 174 44"
244+ stroke =" #7C3AED"
245+ stroke-width =" 3.5"
246+ stroke-linecap =" round"
247+ stroke-dasharray =" 8 4"
248+ />
249+ </svg >
250+
227251 { /* Center Converging Node */ }
228- <div class =" rotate-1 rounded-xl border-2 border-[#2A1155] bg-white px-5 py-2.5 shadow-sketch-sm dark:border-[#A855F7] chalk-hatch" >
252+ <div class =" relative z-10 rotate-1 rounded-xl border-2 border-[#2A1155] bg-white px-4 py-2 shadow-sketch-sm dark:border-[#A855F7] dark:bg-[#171F33 ] chalk-hatch" >
229253 <span class =" font-mono text-xs font-extrabold text-[#2A1155] dark:text-purple-100" >
230254 ⚡ WebSockets & AI Stream
231255 </span >
232256 </div >
233257
234258 { /* Spacer for AJ Mascot on desktop */ }
235- <div class =" hidden w-24 sm:block" ></div >
259+ <div class =" hidden w-28 sm:block" ></div >
236260 </div >
237261 </div >
238262
239- { /* Interactive Purple Yarn Swirl & Ball */ }
240- <div class =" mt-3 flex items-center justify-between border-t-2 border-dashed border-[#2A1155]/15 pt-3 dark:border-white/15" >
263+ { /* Interactive Purple Yarn Swirl & Ball Footer */ }
264+ <div class =" mt-3 flex flex-wrap items-center justify-between gap-2 border-t-2 border-dashed border-[#2A1155]/15 pt-3 pr-0 sm:pr-32 dark:border-white/15" >
241265 <div class =" flex items-center gap-3" >
242266 <div class =" flex size-9 items-center justify-center rounded-full border-2 border-[#2A1155] bg-[#7C3AED] shadow-sketch-sm dark:border-white/80 dark:bg-gradient-to-tr dark:from-[#7C3AED] dark:to-[#D946EF]" >
243267 <svg class =" size-5 text-white" fill =" none" stroke =" currentColor" stroke-width =" 2" viewBox =" 0 0 24 24" aria-hidden =" true" >
@@ -249,13 +273,25 @@ import AjAnimatedMascot from "@/components/AjAnimatedMascot.astro";
249273 Follow the purple yarn trail down the page ↓
250274 </span >
251275 </div >
252- <span class =" hidden font-mono text-[11px] font-bold text-[#2A1155]/60 dark:text-slate-400 sm:inline" >
253- AAA Contrast · Screen-Reader Ready
254- </span >
276+ <a
277+ href =" /mascot-lab"
278+ class =" font-mono text-[11px] font-extrabold text-[#7C3AED] hover:underline dark:text-[#C084FC]"
279+ >
280+ Open AJ Mascot Lab →
281+ </a >
255282 </div >
256283
257- { /* Articulated Interactive 2D Vector AJ Mascot in Bottom-Right Corner */ }
258- <div class =" mt-4 flex flex-col items-center sm:absolute sm:-bottom-6 sm:-right-4 sm:mt-0" >
284+ { /* Articulated Interactive 2D Vector AJ Mascot + Glowing Yarn Ball in Bottom-Right Corner */ }
285+ <div class =" mt-4 flex items-end justify-center gap-1 sm:absolute sm:-bottom-5 sm:-right-3 sm:mt-0" >
286+ <div class =" relative -mr-3 mb-3 size-12 shrink-0" >
287+ <div class =" absolute inset-0 animate-pulse rounded-full bg-[#A855F7] opacity-60 blur-md" ></div >
288+ <svg class =" relative size-full" viewBox =" 0 0 100 100" fill =" none" aria-hidden =" true" >
289+ <circle cx =" 50" cy =" 50" r =" 42" fill =" #7C3AED" stroke =" #2A1155" stroke-width =" 5" ></circle >
290+ <path d =" M 20 40 Q 50 10 80 40" stroke =" #DDD6FE" stroke-width =" 4" stroke-linecap =" round" ></path >
291+ <path d =" M 20 60 Q 50 90 80 60" stroke =" #C4B5FD" stroke-width =" 4" stroke-linecap =" round" ></path >
292+ <path d =" M 30 25 Q 70 50 40 85" stroke =" #EDE9FE" stroke-width =" 3.5" stroke-linecap =" round" ></path >
293+ </svg >
294+ </div >
259295 <AjAnimatedMascot
260296 id =" hero-aj"
261297 variant =" full-body"
0 commit comments